rs-fMRI预处理全流程

rs-fMRI预处理全流程

前提:

输入数据须整理为BIDS格式 示例:BIDS根目录为/bids_root

1. freesurfer批处理

# 镜像路径:https://github.com/chenfei-ye/BIDS-freesurfer
docker run -it --rm -v /bids_root:/bids_dataset \
-v /bids_root/derivatives/freesurfer:/outputs \
-v /freesurfer_license.txt:/license.txt bids-freesurfer:latest \
/bids_dataset /outputs participant \
--license_file "/license.txt" --skip_bids_validator
  • freesurfer_license.txt可以点此下载
  • 若运行后提示pybids报错,则需要手动指定被试--participant_label [str]

检查输出结果是否完整:

docker run -it --rm --entrypoint python -v /bids_root:/bids_dataset bids-freesurfer:latest /output_qc.py /bids_dataset -mode freesurfer

2. fmriprep批处理

docker run -it --rm -v /bids_root:/bids_dataset \
-v /freesurfer_license.txt:/opt/freesurfer/license.txt \
-v /bids_root:/working_dir nipreps/fmriprep:latest \
/bids_dataset /bids_dataset/derivatives/fmriprep participant \ 
--skip-bids-validation --ignore fieldmaps \
--md-only-boilerplate --output-spaces MNI152NLin2009cAsym:res-2 T1w \
--nthreads 20 --stop-on-first-crash --mem_mb 5000 \
--use-syn-sdc --fd-spike-threshold 0.5 -v -w /working_dir --cifti-output 
  • 指定/working_dir是为了将中间文件缓存到硬盘,否则内存容易爆掉;运行完毕后建议删除以节省空间;
  • --cifti-output 是为了输出cifti结果,便于xcp-d处理;
  • --nthreads--mem_mb根据实际服务器资源来确定计算的线程及内存;
  • --fs-subjects-dir指定已经处理完毕的freesurfer分割输出结果;
  • 特殊情况:若bids目录包含session层级,由于bids-freesurfer容器默认会把freesurfer的output处理成类似sub_01_ses_01的文件名,无法被nipreps/fmriprep容器正确识别,因此不建议预先进行freesurfer处理。即不激活--fs-subjects-dir时,nipreps/fmriprep容器将默认融合所有session层级的T1w影像为一个T1w影像,保存在/derivatives/fmriprep/sourcedata/freesurfer路径。
  • --output-spaces输出空间增加T1w是为了后续可能用到的皮层ciftify分析;
  • 如果提示metadata找不到TotalReadoutTime,则需要在json文件中手动补充该字段;
  • 如果提示metadata找不到PhaseEncodingDirection,则需要在json文件中手动补充该字段;如果已存在该字段仍报错,则有可能BIDS根目录中存在被试缺少必要的T1wBOLD数据,要仔细检查;
  • --use-syn-sdc表示使用fieldmap-less susceptibility distortion correction(SDC)来处理EPI序列的磁敏感伪影;如果数据自带fmap,建议想尝试不激活SDC。

检查输出结果是否完整:

docker run -it --rm --entrypoint python -v /bids_root:/bids_dataset bids-freesurfer:latest /output_qc.py /bids_dataset -mode fmriprep

3. xcp-d批处理

docker run --rm -it -v /bids_root/derivatives/fmriprep:/fmriprep:ro \
-v /bids_root/derivatives/wkdir:/work:rw \
-v /bids_root/derivatives/xcp_d:/out:rw \
-v /atlases/TEMPLATEFLOW_HOME:/home/xcp_d/.cache/templateflow \
-v /atlases:/fs_license pennlinc/xcp_d:latest \
/fmriprep /out participant --cifti --despike --head_radius auto \
-w /work --nthreads 10 --mem_gb 10 --fd-thresh 0 \
--nuisance-regressors 36P --fs-license-file /fs_license/freesurfer_license.txt \
--min-coverage 0.2 --stop-on-first-crash \
--atlases 4S156Parcels 4S256Parcels 4S456Parcels 4S1056Parcels HCP
  • xcp-d pipeline优势:数据可以自动预处理并使用NiPrep风格的容器化代码,在BIDS格式下从原始数据一直分析到功能连接矩阵(也包括BOLD信号、ALFF、REHO等)。XCP-D 正好在 fMRIPrep 结束的地方接手,直接使用 fMRIPrep 的输出。XCP-D 利用 BIDS 和 NiPreps 框架自动生成去噪的 BOLD 图像、分割的时间序列、功能连接矩阵和质量评估报告。XCP-D 还可以处理来自以下来源的输出:NiBabies、ABCD-BIDS、最小预处理的 HCP 数据以及英国生物银行数据。
  • 目前组里的服务器装的是pennlinc/xcp_d:7.3.0版本,可以用这一版跑。
  • 4S图谱:The 4S atlas combines the Schaefer 2018 cortical atlas at 10 different resolutions (100, 200, 300, 400, 500, 600, 700, 800, 900, and 1000 parcels) with the CIT168 subcortical atlas, the Diedrichson cerebellar atlas, the HCP thalamic atlas, and the amygdala and hippocampus parcels from the HCP CIFTI subcortical parcellation.
  • 4S图谱里的非皮层结构过于复杂,可以无视;如果需要皮层下结构,直接用HCP CIFTI subcortical parcellation就可以,和FreeSurfer定义的皮层下图谱的结构是一致的。适用于Enigma-toolbox的可视化。Enigma-toolbox的皮层下可视化结构:Subcortical input values are ordered as follows: left-accumbens, left-amygdala, left-caudate, left-hippocampus, left-pallidum, left-putamen, left-thalamus, left-ventricles, right-accumbens, right-amygdala, right-caudate, right-hippocampus, right-pallidum, right-putamen, right-thalamus, right-ventricles! You can re-order your subcortical dataset using our reorder_sctx() function. *Ventricles are optional.
  • --fd-thresh 0:不执行censoring,否则会丢失帧;
  • 对于--cifti,需要fmriprep里预存fsLR的图谱才可以跑。fmriprep参数加--cifti-output,默认是91k皮层。对于nifti输出结果,很可能有脑区的值是NaN,可以保留NaN进行后续的计算。讨论参考
  • /TEMPLATEFLOW_HOMEtemplateflow的本地路径,是为了预加载已下载的templateflow图谱,否则每次容器运行时会从s3.amazon新下载templateflow图谱,速度很慢。templateflow图谱也可在网盘下载:链接:https://pan.baidu.com/s/13bPkN3Vzcyy6LoSwB7UQKg?pwd=9h4i ;提取码:9h4i
  • 对于脑区水平的BOLD信号和FC计算,xcp-d不推荐做平滑,原因是:Smoothing improves SNR in a given voxel by blurring the signal across voxels, but when you are averaging the signal in an ROI, there’s no reason to do that, since you’re not interested in individual voxels. Smoothing before parcellating could, at worst, blur signals from voxels outside the region into the region.
  • yeo-7和yeo-17的脑区空间定义是一样的,只是同一个脑区不一定对应到一个子网络上。具体对应关系见此
  • 对于Minimally preprocessed HCP数据的预处理(输入数据需要同时用到subid_3T_rfMRI_REST1_preproc.zip 和subid_3T_Structural_preproc.zip):

检查输出结果是否完整:

docker run -it --rm --entrypoint python -v /bids_root:/bids_dataset bids-freesurfer:latest /output_qc.py /bids_dataset -mode xcp-d
叶辰飞
叶辰飞
脑网络编织者

用影像解析人脑的秘密