SPGL1¶
SPGL1 is a solver for large-scale one-norm regularized least squares.
It is designed to solve any of the following three problems:
- Basis pursuit denoise (BPDN):
- Basis pursuit (BP):
- Lasso:
The matrix \(\mathbf{A}\) can be defined explicitly, or as a
scipy.sparse.linalg.LinearOperator
that returns both both \(\mathbf{Ax}\) and
\(\mathbf{A}^H\mathbf{b}\).
SPGL1 can solve these three problems in both the real and complex domains.
References¶
The algorithm implemented by SPGL1 is described in these two papers:
- E. van den Berg and M. P. Friedlander, Probing the Pareto frontier for basis pursuit solutions, SIAM J. on Scientific Computing, 31(2):890-912, November 2008
- E. van den Berg and M. P. Friedlander, Sparse optimization with least-squares constraints, Tech. Rep. TR-2010-02, Dept of Computer Science, Univ of British Columbia, January 2010
History¶
SPGL1 has been initially implemented in MATLAB by E. van den Berg and M. P. Friedlander. This project is aimed at porting of their algorithm in Python. Small modifications are implemented in some areas of the code where more appropriate implementation choices were identified for the Python programming language.
Installation¶
Python 3.5 or greater is required. This package may also work for Python 2.7 or greater, however we do not provide any guarantee neither we will make any effort to maintain back compatibility with Python 2.
From source¶
First of all clone the repository. To install spgl1
within your current
environment, simply type:
>> make install
or as a developer:
>> make dev-install
To install spgl1
in a new conda environment, type:
>> make install_conda
or as a developer:
>> make dev-install_conda
SPGL1 API¶
Contributors¶
- Andreas Doll, andreasdoll
- Matteo Ravasi, mrava87
- David Relyea, drrelyea