广义自动校准部分并行采集。
pygrappa的Python项目详细描述
关于
grappa是一种流行的并行成像重建算法。 不幸的是,没有很多易于使用的python实现 有,所以我决定发布这个简单的。
pygrappa模块中包含以下内容:
- grappa()
- tgrappa()
- slicegrappa()
- splitslicegrappa()
安装
这个包是在ubuntu 18.04中使用python 3.6.8开发的。那是 更不用说它在其他事情上是行不通的。你应该提交一个问题 当它不能像它说的那样工作时。整个想法是 有一个易于使用、pip可安装的grappa模块,所以让我们尝试 做那件事。
一般来说,在虚拟环境中工作是个好主意。我 像这样创建和激活我的:
python3 -m venv ~/Documents/venvs/pygrappa
source ~/Documents/venvs/pygrappa/bin/activate
更多信息可在VENV文档中找到: https://docs.python.org/3/library/venv.html
在基于unix的平台下安装应该很容易:
pip install pygrappa
有关在Windows下安装的详细信息,请参见installation.rst。
用法
pygrappa.grappa()使用欠采样的k空间数据调用,并且 校准数据(通常是 K空间)。k-空间中的未采样点应正好为0:
frompygrappaimportgrappasx,sy,ncoils=kspace.shape[:]cx,cy,ncoils=calib.shape[:]res=grappa(kspace,calib,kernel_size=(5,5),coil_axis=-1)sx,sy,ncoils=res.shape[:]
如果校准数据在K空间数据中,只需提取它(使 一定要调用ndarray.copy()方法,如果使用引用可能会中断 原始K空间数据):
frompygrappaimportgrappasx,sy,ncoils=kspace.shape[:]# center 20 lines are ACSctr,pd=int(sy/2),10calib=kspace[:,ctr-pd:ctr+pad,:].copy()res=grappa(kspace,calib,kernel_size=(5,5),coil_axis=-1)sx,sy,ncoils=res.shape[:]
具有相同接口的非常相似的grappa实现可以是 这样叫:
frompygrappaimportcgrappares=cgrappa(kspace,calib,kernel_size=(5,5),coil_axis=-1)
此函数使用的代码与python grappa()的代码大部分相同 实现,但有某些部分用C++编写,并全部编译 使用cython。它的速度大约是原来的两倍,但被认为是 实验性的。它可能会成为默认的图形 在将来的版本中实现。
TGRAppa不需要校准数据,可以称为:
frompygrappaimporttgrappasx,sy,ncoils,nt=kspace.shape[:]res=tgrappa(kspace,calib_size=(20,20),kernel_size=(5,5),coil_axis=-2,time_axis=-1)
必须提供校准区域大小和内核大小。这个 将以贪婪的方式构建校准区域:一次 花费了足够的时间来创建整个acs,grappa 将运行。tgrappa使用cgrappa实现 速度。
slice grappa()是一个切片grappa实现,可以调用 例如:
frompygrappaimportslicegrappasx,sy,ncoils,nt=kspace.shape[:]sx,sy,ncoils,sl=calib.shape[:]res=slicegrappa(kspace,calib,kernel_size=(5,5),prior='sim')
kspace假定为类似于sms的多个折叠切片和 需要分开的多个时间帧。校准 相同大小/分辨率的单个切片的kspace数据。之前的 告诉slice grappa算法如何构造源 即,如何求解t=s w,其中t是目标(校准数据), s是源,w是grappa权重。prior='sim'创建 S通过模拟SMS获取,即S=和(Calb,Seligyx轴)。 previor=“kspace”使用来自kspace数据的第一个时间帧, 即,S=K空间[第一时间帧]。结果是一个包含 kspace中所有时间帧的所有目标切片。
类似地,split slice grappa可以这样调用:
frompygrappaimportsplitslicegrappaasssgrappasx,sy,ncoils,nt=kspace.shape[:]sx,sy,ncoils,sl=calib.shape[:]res=ssgrappa(kspace,calib,kernel_size=(5,5))# Note that pygrappa.splitslicegrappa is an alias for# pygrappa.slicegrappa(split=True), so it can also be called# like this:frompygrappaimportslicegrappares=slicegrappa(kspace,calib,kernel_size=(5,5),split=True)
另请参见示例模块。它有几个脚本显示 用法。DocStrings也是一个很好的资源-请查看它们 可能的参数和用法信息。