【初心者向け】基礎&実践プログラミング

初心者がつまづきやすいところ、最短で実力が身につく方法をお伝えします。

【FreeSurfer】FreeSurferの3D-T1WI前処理を使ってSkull Strip

f:id:AIProgrammer:20201130123603p:plain

動かしながら学ぶ PyTorchプログラミング入門

動かしながら学ぶ PyTorchプログラミング入門

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

目的

  • FreeSurferの3D-T1WI前処理を使ってSkull Strip

必要なデータ

  • T1.nii.gz: 3D-T1WI
$ ls
T1.nii.gz

実行

  • fslreorient2stdでMNI152のOrientationに合わせる
  • recon-allのオプション-autorecon1で3D-T1WIのSkull Stripまで実行
  • FreeSurferのSkull Stripでは、Skull Strip後のマスク(mri/brainmask.mgz)が出力されるので、それを前処理済みの3D-T1WI(mri/T1.mgz)に適応
  • rT1_brain.nii.gzがSkull Stripされた画像(OrientationはMNI152)
SUBJECTS_ID=Subj001
SUBJECTS_DIR=.

fslreorient2std T1 rT1
recon-all -i rT1.nii.gz -subjid $SUBJECTS_ID -autorecon1
mri_mask ${SUBJECTS_DIR}/${SUBJECTS_ID}/mri/T1.mgz ${SUBJECTS_DIR}/${SUBJECTS_ID}/mri/brainmask.mgz temp1_T1_brain.nii.gz
mrtransform temp1_T1_brain.nii.gz temp2_T1_brain.nii.gz -template rT1.nii.gz
fslreorient2std temp2_T1_brain rT1_brain
rm temp[12]_T1_brain.nii.gz

複数人に対する処理

フォルダ内は100人分のデータがある。

$ls
Subj001.nii.gz
Subj002.nii.gz
Subj003.nii.gz
...
Subj100.nii.gz

以下のコマンドで並列処理。

SUBJECTS_DIR=.

# Pre processing
\ls | grep nii.gz | sed "s|.nii.gz||g" | xargs -P 40 -i \
    fslreorient2std {} r{}

# Main processing
\ls | grep nii.gz | grep ^r | sed "s|.nii.gz||g" | xargs -P 40 -i \
    recon-all -i r{}.nii.gz -subjid {} -autorecon1

# Post processing
\ls | grep nii.gz | grep ^r | sed "s|.nii.gz||g" | xargs -P 40 -i \
    mri_mask ${SUBJECTS_DIR}/{}/mri/T1.mgz \
    ${SUBJECTS_DIR}/{}/mri/brainmask.mgz \
    ${SUBJECTS_DIR}/{}/mri/temp1_T1_brain.nii.gz
\ls | grep nii.gz | grep ^r | sed "s|.nii.gz||g" | xargs -P 40 -i \
    mrtransform ${SUBJECTS_DIR}/{}/mri/temp1_T1_brain.nii.gz \
    ${SUBJECTS_DIR}/{}/mri/temp2_T1_brain.nii.gz \
    -template ${SUBJECTS_DIR}/{}.nii.gz
\ls | grep nii.gz | grep ^r | sed "s|.nii.gz||g" | xargs -P 40 -i \
    fslreorient2std ${SUBJECTS_DIR}/{}/mri/temp2_T1_brain.nii.gz \
    ${SUBJECTS_DIR}/{}/mri/rT1_brain
\ls | grep nii.gz | grep ^r | sed "s|.nii.gz||g" | xargs -P 40 -i \
    rm ${SUBJECTS_DIR}/{}/mri/temp[12]_T1_brain.nii.gz
\ls | grep nii.gz | grep ^r | sed "s|.nii.gz||g" | xargs -P 40 -i \
    cp ${SUBJECTS_DIR}/{}/mri/rT1_brain.nii.gz ${SUBJECTS_DIR}/{}_brain.nii.gz

前処理していないオリジナルのT1WIにマスク処理してSkull Stripする場合

前処理していないオリジナルのT1WIにマスク処理してSkull Stripする場合、次のコマンドを実行。

epi_regがうまくいかない場合は、こちらの手法を利用。

SUBJECTS_ID=Subj001
SUBJECTS_DIR=.

# 前処理していないオリジナルのT1WIにマスク処理してSkull Strip
mri_label2vol --seg ${SUBJECTS_DIR}/${SUBJECTS_ID}/mri/brainmask.mgz --temp T1.nii.gz --o T1_brain_mask.nii.gz --regheader ${SUBJECTS_DIR}/${SUBJECTS_ID}/mri/brainmask.mgz
fslmaths T1_brain_mask -bin T1_brain_mask
fslmaths T1 -mul T1_brain_mask T1_brain


頑張れ!!喝!!の代わりにB!ブックマークを押していただけるとただただうれしいです(^^)! ↓

動かしながら学ぶ PyTorchプログラミング入門

動かしながら学ぶ PyTorchプログラミング入門

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