ICA-AROMA是什么
ICA-AROMA是一种用来去除静息态功能磁共振(rfMRI)和任务态功能磁共振(fMRI)中的头动噪声的工具。它是基于ICA(独立成分分析)的一种方法,但是不需要重新训练数据集。因此适合在大数据时代应用于不同的机器扫出来的不同批的核磁数据。
- ICA-AROMA发布的原文献是:ICA-AROMA: A robust ICA-based strategy for removing motion artifacts from fMRI data
- ICA-AROMA的官方github网站
使用ICA-AROMA的先决条件
- 进行ICA-AROMA之前需要对数据先做预处理(包括slice
timing,realign,Normalise以及smooth,但是先不做high-pass filtering以及further
nuisance regression,也就是不做detrend和filter这两步)。 - 使用ICA-AROMA需要在电脑上装有:FSL和Python 2.7 (modules: os, argparse, commands, numpy, random)
在特定版本的Python上安装某个模块的语句如下:
python2.7 -m pip install argparse
而安装ICA-AROMA的所有依赖的模块可以在下载了GitHub上的压缩包后解压,然后运行:
python2.7 -m pip install -r requirements.txt
分析步骤
下面是ICA-AROMA的原文献给出的三个步骤:
中文大意是:
步骤1:基于概率的ICA分析。
使用FSL中的MELODIC获得基于概率的ICA。使用MELODIC这一工具自动地预测独立成分的数量。对每一个被试,会获得一系列的ICs(独立成分,Z分数地图)以及相应的时间序列。为了区分成分,我们接着获得每个时间序列的功率图。
步骤2:成分区分
ICA-AROMA使用一个预先决定的算子区分出与运动伪迹相关的成分。这其中的分类指标运用了realignment参数(头动参数),edge fraction以及CSF fraction。重要的是,当在一个新的数据集中使用ICA-AROMA的方法时不需要重新训练。
步骤3:数据降噪
将被识别为运动伪迹的ICs(独立成分)从fMRI数据中移除。具体的方法是使用普通的最小二乘回归,将被识别为运动伪迹的ICs回归掉。这一方法需要使用FSL的fsl_regfilt函数。
具体实现
最靠谱的方法就要看GitHub官网上的压缩包中自带的manual了。
步骤1:用FSL或者其它的工具进行数据的预处理,包括slice timing(这个有的时候不用),realign(头动校正,这一步会获得Realignment parameter (RP) time-series文件,可以经由FSL的mcflirt, AFNI的3dvolreg或SPM的realignment得到),Normalise以及Smooth(ICA-AROMA是默认要做Smooth的)。
注意:FSL生成的文件是.nii.gz的4D(3D+time)文件格式。所以如果预处理使用的是SPM或者其它的工具,需要把3D的数据转成4D,也就是变成一个nii或者nii.gz文件。比如通过SPM预处理在Smooth阶段后,将生成的sw开头的所有功能像文件转成一个nii.gz文件。
步骤2:直接参考ICA-AROMA的官方Manual中的方法写一行代码就可以了。
由于我看了一下ICA-AROMA官网中关于SPM12的问题后发现直接使用SPM12的结果进行ICA-AROMA可能会有一些问题,所以以下的参考可能时错误的,请慎重!!虽然这样的流程并不会报错。只是会有一个问题,我不知道是为什么:那就是我放入ICA-AROMA的数据是去脑壳(使用bet)的功能像数据,但是最后生成的文件又加入了脑壳的信号。十分不理解为什么这个方法加入了新的成分,而不是,按照一般的想法,去除信号。
因为我用的spm12做预处理,smooth结束后的s开头文件我用fslmerge这个FSL的函数转换成一个.nii.gz的4D格式文件,然后因为ICA-AROMA建议或者放入去了脑壳的图像,或者给一个mask,我觉得去脑壳也挺方便的,按照Manual中给的建议的参数使用FSL的bet函数去脑壳,接着使用rp开头的头动参数文件(spm生成的参数文件是.txt,直接用rename修改后缀名成.par就可以了),在标准空间(也就是SPM默认使用的MNI152空间)中做ICA-AROMA(关于这一点,是因为这样可以不用提供.mat和warp的文件,这两个文件时FSL的预处理过程会产生的,SPM12生成的seg8.mat文件中包含FSL的那个func2T1w.mat文件中的Affine的部分,但是要重新把这一部分保存出来成一个.mat文件有点麻烦,而且我觉得有可能会出错)。而FSL生成的使用非线性registration的warp文件我不确定是否与SPM12中的y_开头的deformation field文件时对应的,为了避免画蛇添足,我直接不给出这两种文件,直接让ICA-AROMA在标准空间中运行。
具体如下:
其中的<path>
指的是具体的文件夹位置。
这些命令都是在Ubuntu(Linux)的shell中运行的,也可以通过MATLAB写一个脚本,通过system()
来调用,实现批量操作。
#修改rp文件的后缀为par
rename 's/\.txt/\.par/' <path>/rp*
#将smoooth完的功能像文件fslmerge成一个文件,tr=3
fslmerge -tr <path>/func_smoothed.nii.gz <path>/s* 3
#然后bet去脑壳
bet <path>/func_smoothed.nii.gz <path>/func_smoothed_b.nii.gz -f 0.3 -n -m -R
#用ICA-AROMA
/usr/bin/python <path>/ICA_AROMA.py -in <path>/func_smoothed_b.nii.gz -out <path>/ICA_AROMA -mc <path>/*.par -tr 3