pylops.optimization.sparsity.spgl1(Op, y, x0=None, SOp=None, tau=0.0, sigma=0.0, show=False, **kwargs_spgl1)[source]#

Spectral Projected-Gradient for L1 norm.

Solve a constrained system of equations given the operator Op and a sparsyfing transform SOp aiming to retrive a model that is sparse in the sparsyfing domain.

This is a simple wrapper to spgl1.spgl1 which is a porting of the well-known SPGL1 MATLAB solver into Python. In order to be able to use this solver you need to have installed the spgl1 library.


Operator to invert



x0numpy.ndarray, optional

Initial guess

SOppylops.LinearOperator, optional

Sparsifying transform

taufloat, optional

Non-negative LASSO scalar. If different from 0, SPGL1 will solve LASSO problem

sigmalist, optional

BPDN scalar. If different from 0, SPGL1 will solve BPDN problem

showbool, optional

Display iterations log


Arbitrary keyword arguments for spgl1.spgl1 solver


Inverted model in original domain.


Inverted model in sparse domain.


Dictionary with the following information:

  • tau, final value of tau (see sigma above)

  • rnorm, two-norm of the optimal residual

  • rgap, relative duality gap (an optimality measure)

  • gnorm, Lagrange multiplier of (LASSO)

  • stat, final status of solver
    • 1: found a BPDN solution,

    • 2: found a BP solution; exit based on small gradient,

    • 3: found a BP solution; exit based on small residual,

    • 4: found a LASSO solution,

    • 5: error, too many iterations,

    • 6: error, linesearch failed,

    • 7: error, found suboptimal BP solution,

    • 8: error, too many matrix-vector products.

  • niters, number of iterations

  • nProdA, number of multiplications with A

  • nProdAt, number of multiplications with A’

  • n_newton, number of Newton steps

  • time_project, projection time (seconds)

  • time_matprod, matrix-vector multiplications time (seconds)

  • time_total, total solution time (seconds)

  • niters_lsqr, number of lsqr iterations (if subspace_min=True)

  • xnorm1, L1-norm model solution history through iterations

  • rnorm2, L2-norm residual history through iterations

  • lambdaa, Lagrange multiplier history through iterations


If the spgl1 library is not installed


See pylops.optimization.cls_sparsity.SPGL1

Examples using pylops.optimization.sparsity.spgl1#

03. Solvers

03. Solvers