SigPy is a package for signal processing, with emphasis on iterative methods. It is built to operate directly on numpy arrays on CPU and cupy arrays on GPU. Its main features include:
- A unified CPU/GPU interface to signal processing functions, including convolution, FFT, NUFFT, wavelet transform, and thresholding functions.
- Linear operator classes (
Linop
) that can do adjoint, addition, composing, and stacking. - Proximal operator classes (
Prox
) that can do stacking, and conjugation. - Iterative algorithm classes (
Alg
), including conjugate gradient, (accelerated/proximal) gradient method, and primal dual hybrid gradient. - Application classes (
App
) that wrapAlg
,Linop
, andProx
to form a final deliverable for each application.
SigPy also provides a submodule sigpy.mri for MRI iterative reconstruction methods. Its main features include:
- Commonly used MRI reconstruction methods as an
App
: SENSE reconstruction, l1-wavelet reconstruction, total-variation reconstruction, and JSENSE reconstruction - Convenient simulation and sampling functions, including poisson-disc sampling function, and shepp-logan phantom generation function.
Finally, SigPy provides a preliminary submodule sigpy.learn that implements convolutional sparse coding, and linear regression, using the core module.
The package can be installed via pip:
# (optional for CUDA support) pip install cupy
# (optional for MPI support) pip install mpi4py
pip install sigpy
Or via conda:
# (optional for CUDA support) conda install cupy
# (optional for MPI support) conda install mpi4py
conda install -c frankong sigpy
Alternatively, the package can be installed from source with the following requirements:
- python3
- numpy
- pywavelets
- numba
Our documentation is hosted on Read the Docs: https://sigpy.readthedocs.io