pylops.optimization.sparsity.spgl1#

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.

Parameters
Oppylops.LinearOperator

Operator to invert

ynumpy.ndarray

Data

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

**kwargs_spgl1

Arbitrary keyword arguments for spgl1.spgl1 solver

Returns
xinvnumpy.ndarray

Inverted model in original domain.

pinvnumpy.ndarray

Inverted model in sparse domain.

infodict

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

Raises
ModuleNotFoundError

If the spgl1 library is not installed

Notes

See pylops.optimization.cls_sparsity.SPGL1

Examples using pylops.optimization.sparsity.spgl1#

03. Solvers

03. Solvers