Compatible Libraries#
A list of Python libraries, beyond just numpy and pandas, providing
mathematical algorithms that are compatible with grapp’s LinearOperator interface.
scipy#
Many of the functions in the scipy.sparse.linalg module
are compatible with LinearOperator. Of particular note are:
The conjugate gradient method scipy.sparse.linalg.cg
Least squares solver scipy.sparse.linalg.lsqr
Eigenvalue decomposition via scipy.sparse.linalg.eigs
The preconditioned eigensolver scipy.sparse.linalg.lobpcg
PyLops#
PyLops is a library focused on matrix-free methods, primarily focused on signal processing, but with some general purpose methods as well.
The grapp LinearOperator classes are compatible with PyLops. Of particular note are:
The HutchPP estimator for the trace of a matrix, pylops.utils.estimators.trace_hutchpp
Combining multiple
LinearOperatorvia pylops.HStack, pylops.VStack, and pylops.BlockDiagKronecker product of
LinearOperatorvia pylops.KroneckerVarious optimization solvers with forced sparsity, such as pylops.optimization.cls_sparsity.FISTA
spgl1#
spgl1 is a regularized least-squares solver (e.g., LASSO) that is compatible with LinearOperator.