
- 作者:斎藤勇哉
- 発売日: 2020/11/30
- メディア: Kindle版
目次
目的
- LinuxのターミナルからSPMを操作
リポジトリ
例は、GitHubのリポジトリに保存してある。
1_Applywarp_MNI2Subj
目的
- 被験者のDWI空間からMNI空間への変換行列を用いて、MNI空間上にあるROIをDWI空間へ移動させる
必要なファイル
必要なファイルは次の通り。
- b0.nii.gz: DWIのb=0画像
- 1mm_ROI[L, R]3_MNI_relabel_group.nii.gz: MNI空間上の黒質ROI
- diff2MNI_sn.mat: 被験者のDWI空間からMNI空間への変換行列
- NIfTI_20130306: NIFTIをMATLABで扱うための関数
- spm8: SPM8
1_Applywarp_MNI2Subj/ ├── Data │ ├── Sub001 │ │ ├── 1mm_ROI_L_3_MNI_relabel_group.nii.gz │ │ ├── 1mm_ROI_R_3_MNI_relabel_group.nii.gz │ │ ├── b0.nii.gz │ │ └── diff2MNI_sn.mat │ ├── Sub002 │ │ ├── 1mm_ROI_L_3_MNI_relabel_group.nii.gz │ │ ├── 1mm_ROI_R_3_MNI_relabel_group.nii.gz │ │ ├── b0.nii.gz │ │ └── diff2MNI_sn.mat │ └── Sub003 │ ├── 1mm_ROI_L_3_MNI_relabel_group.nii.gz │ ├── 1mm_ROI_R_3_MNI_relabel_group.nii.gz │ ├── b0.nii.gz │ └── diff2MNI_sn.mat ├── run.sh └── spm_util_deform_inv.m
ソースコード
MATLABを使ったSPMの処理内容は次の通り。
DWI空間からMNI空間への変換行列の逆変換行列を使って、MNI空間上にあるROIをDWI空間へ移動させる。
spm_util_deform_inv.m
function spm_util_deform_inv(input,output,refimg,mat) %----------------------------------------------------------------------- % transform ROIs from MNI space to DTI(b0) space %----------------------------------------------------------------------- % sourcepath = strcat(WD,'/',SUB{i}); % sourcepath = '.'; % disp(sourcepath); % mat = strcat(sourcepath,'/rT1_',SUB{i},'_sn.mat'); % refimg = strcat(sourcepath,'/rT1_',SUB{i},'.nii'); spm('defaults','fmri'); spm_jobman('initcfg'); matlabbatch{1}.spm.util.defs.comp{1}.inv.comp{1}.sn2def.matname = {mat}; matlabbatch{1}.spm.util.defs.comp{1}.inv.space = {refimg}; matlabbatch{1}.spm.util.defs.comp{1}.inv.comp{1}.sn2def.vox = [NaN NaN NaN]; matlabbatch{1}.spm.util.defs.comp{1}.inv.comp{1}.sn2def.bb = [NaN NaN NaN NaN NaN NaN]; matlabbatch{1}.spm.util.defs.ofname = ''; matlabbatch{1}.spm.util.defs.fnames = {input}; matlabbatch{1}.spm.util.defs.savedir.saveusr = {output}; matlabbatch{1}.spm.util.defs.interp = 0; spm_jobman('run',matlabbatch)
以上のMATLABスクリプトを、Linuxのコマンドで実行する。
run.sh
# Ungzip find . -name "*.nii.gz" | xargs -i gunzip {} # Define COMMAND_MATLAB=$(command -v matlab) SPM=.'/spm8' NIFTI='./NIfTI_20130306' for SUB in $(ls -F Data | grep / | cut -d / -f1); do # Define INPUT_L="./Data/${SUB}/1mm_ROI_L_3_MNI_relabel_group.nii" INPUT_R="./Data/${SUB}/1mm_ROI_R_3_MNI_relabel_group.nii" OUTPUT=""./Data/${SUB}"" REFIMG="./Data/${SUB}/b0.nii" MAT="./Data/${SUB}/diff2MNI_sn.mat" # Apply Deformation for left ROI echo "SUBDIR: ${SUB}" echo "INPUT_L: ${INPUT_L}" echo "INPUT_R: ${INPUT_R}" echo "OUTPUT: ${OUTPUT}" echo "REFIMG: ${REFIMG}" echo "MAT: ${MAT}" ${COMMAND_MATLAB} -nodisplay -nosplash -r \ "addpath('${PIPELINE}');addpath('${SPM}');addpath('${NIFTI}');\ spm_util_deform_inv('${INPUT_L}','${OUTPUT}','${REFIMG}','${MAT}');\ exit" # Apply Deformation for Right ROI ${COMMAND_MATLAB} -nodisplay -nosplash -r \ "addpath('${PIPELINE}');addpath('${SPM}');addpath('${NIFTI}');\ spm_util_deform_inv('${INPUT_R}','${OUTPUT}','${REFIMG}','${MAT}');\ exit" done
頑張れ!、喝!!の代わりにB!ブックマークを押していただけるとただただうれしいです(^^)! ↓

- 作者:斎藤勇哉
- 発売日: 2020/11/30
- メディア: Kindle版