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