用于信号重建的python包。
sigp的Python项目详细描述
SigPy是一个信号处理软件包,重点是迭代方法它可以直接在CPU上的NumPy阵列和GPU上的CuPy阵列上运行SigPy还提供了几个特定于域的子模块:用于多维数组绘制的sigpy.plot,用于MRI迭代重建的sigpy.mri,以及用于字典学习的sigpy.learn
安装
sigpy要求python版本>;=3.5。核心模块依赖于numba、numpy、PyWavelets、scipy和tqdm。
通过安装适当的软件包可以解锁其他功能。要启用绘图功能,需要安装matplotlib要启用CUDA支持,您需要安装cupy要启用mpi支持,您需要安装mpi4py。
通过conda
我们建议通过conda:
安装sigpyconda install -c frankong sigpy # (optional for plot support) conda install matplotlib # (optional for CUDA support) conda install cupy # (optional for MPI support) conda install mpi4py
通过pip
sigpy也可以通过pip:
安装pip install sigpy # (optional for plot support) pip install matplotlib # (optional for CUDA support) pip install cupy # (optional for MPI support) pip install mpi4py
开发者安装
如果您想贡献SigPy源代码,我们建议您在可编辑模式下使用pip安装它:
cd /path/to/sigpy pip install -e .
要运行测试并提供帮助,我们建议安装以下软件包:
pip install coverage flake8 sphinx
运行脚本run_tests.sh。
功能
CPU/GPU信号处理功能
sigpy提供具有统一cpu/gpu接口的信号处理功能。例如,相同的代码可以在输入阵列设备上执行cpu或gpu卷积:
# CPU convolvex=numpy.array([1,2,3,4,5])y=numpy.array([1,1,1])z=sigpy.convolve(x,y)# GPU convolvex=cupy.array([1,2,3,4,5])y=cupy.array([1,1,1])z=sigpy.convolve(x,y)
迭代算法
sigpy还为迭代算法提供了方便的抽象和类。压缩传感实验可以用sigpy在四行中实现:
# Given some observation vector y, and measurement matrix matA=sigpy.linop.MatMul([n,1],mat)# define forward linear operatorproxg=sigpy.prox.L1Reg([n,1],lamda=0.001)# define proximal operatorx_hat=sigpy.app.LinearLeastSquares(A,y,proxg=proxg).run()# run iterative algorithm
pytorch互操作性
想在不放弃信号处理的情况下进行机器学习吗?sigpy具有将数组和线性算子转换为pytorch张量和函数的方便功能。例如,给定一个cupy数组x和一个LinopA,我们可以将它们转换为Pytorch:
x_torch=sigpy.to_pytorch(x)A_torch=sigpy.to_pytorch_function(A)