as_scipy_operator

odl.as_scipy_operator(op)

Wrap op as a scipy.sparse.linalg.LinearOperator.

This is intended to be used with the scipy sparse linear solvers.

Parameters

opOperator

A linear operator that should be wrapped

Returns

scipy.sparse.linalg.LinearOperatorlinear_op

The wrapped operator, has attributes matvec which calls op, and rmatvec which calls op.adjoint.

Examples

Wrap operator and solve simple problem (here toy problem Ix = b)

>>> op = odl.IdentityOperator(odl.rn(3))
>>> scipy_op = as_scipy_operator(op)
>>> import scipy.sparse.linalg as scipy_solvers
>>> result, status = scipy_solvers.cg(scipy_op, [0, 1, 0])
>>> result
array([ 0.,  1.,  0.])

Notes

If the data representation of op’s domain and range is of type NumpyTensorSpace this incurs no significant overhead. If the space type is CudaFn or some other nonlocal type, the overhead is significant.