【AMICO】AMICOを用いた神経突起イメージング: NODDI



1. 目的
2. 準備
2.1. インストール
2.2. 使用データ
2.3. 前処理
3. 神経突起イメージング(NODDI)
3.1. AMICOのセットアップ
3.2. データの読み込み
3.3. 応答関数(response function)の計算
3.4. モデルフィッティング
3.5. 結果


1. 目的

  • AMICOを用いた神経突起イメージング: NODDI

2. 準備

2.1. インストール

Pythonを使って、AMICOを用いた神経突起イメージング(NODDI)をするために、以下のPythonパッケージをインストールする。

pip3 install dmri-amico

2.2. 使用データ

データを次のフォルダ構造で用意する。

Study/
└── Subject
    ├── DWI.nii.gz  # 拡散MRI
    ├── DWI_mask.nii.gz  # 拡散MRIマスク画像
    ├── bvals  # b-values
    └── bvecs  # b-vectors

2.3. 前処理

NODDI前に、拡散MRIの前処理をする。

  • 拡散MRIのノイズ除去(Software: MRtrix, DIPY)
  • ギブズのリンギングアーチファクト(Gibbs ringing)の除去(Software: MRtrix, DIPY)
  • 拡散MRIのバイアス(信号ムラ)補正(Software: MRtrix)
  • 拡散MRIの前処理 ~歪み・頭の動き・渦電流の補正(Software: FSL, MRtrix)

3. 神経突起イメージング(NODDI)

Pythonで以下のコマンドを実行。

3.1. AMICOのセットアップ

今回使用するファイル等の変数設定をする。

STUDY_DIR='Study'
SUBJECT_DIR='Subject'
DWI_FILE = 'DWI.nii.gz'
DWIMASK_FILE = 'DWI_mask.nii.gz'
BVALS_FILE = 'bvals'
BVECS_FILE = 'bvecs'

次に、使用するamicoパッケージのをインポートし、セットアップと初期化をする。

import amico
amico.core.setup()

3.2. データの読み込み

AMICOを実行するために、Study/Subjectフォルダ(PATH)を指定する。

ae = amico.Evaluation(STUDY_DIR, SUBJECT_DIR)

MPG軸情報(bvals/bvecs)の情報が入ったschemeファイルを生成する。

amico.util.fsl2scheme("{}/{}/{}".format(STUDY_DIR,SUBJECT_DIR,BVALS_FILE), "{}/{}/{}".format(STUDY_DIR,SUBJECT_DIR,BVECS_FILE),schemeFilename = "{}/{}/NODDI_protocol.scheme".format(STUDY_DIR,SUBJECT_DIR))
-> Writing scheme file to [ Study/Subject/NODDI_protocol.scheme ]
'Study/Subject/NODDI_protocol.scheme'

画像を読み込む。

ae.load_data(dwi_filename = DWI_FILE, scheme_filename = 'NODDI_protocol.scheme', mask_filename = DWIMASK_FILE, b0_thr = 0)
-> Loading data:
    * DWI signal
        - dim    = 130 x 130 x 82 x 129
        - pixdim = 1.769 x 1.769 x 1.800
    * Acquisition scheme
        - 129 samples, 2 shells
        - 1 @ b=0 , 64 @ b=1000.0 , 64 @ b=2000.0 
    * Binary mask
        - dim    = 130 x 130 x 82
        - pixdim = 1.769 x 1.769 x 1.800
        - voxels = 282878
   [ 4.4 seconds ]

-> Preprocessing:
    * Normalizing to b0... [ min=-3.28,  mean=0.25, max=22.86 ]
    * Keeping all b0 volume(s)
   [ 1.1 seconds ]

3.3. 応答関数(response function)の計算

NODDIモデルを設定して、応答関数(response function)を計算する。計算が完了するとkernelファイルが生成される。

ae.set_model('NODDI')
ae.generate_kernels()
-> Creating LUT for "NODDI" model:
   [==================================================] 100.0% 
   [ 373.3 seconds ]

作成したkernelファイルを読み込む。

ae.load_kernels()
-> Resampling LUT for subject "Subject":
   [==================================================] 100.0% 
   [ 112.8 seconds ]

3.4. モデルフィッティング

NODDIのモデルフィッティングを開始する。

ae.fit()
-> Fitting "NODDI" model to 282878 voxels:
   [==================================================] 100.0% 
   [ 02h 52m 07s ]

最後に、結果をNIfTIフォーマットで保存する。

ae.save_results()
-> Saving output to "AMICO/NODDI/*":
    - configuration  [OK]
    - FIT_dir.nii.gz  [OK]
    - FIT_ICVF.nii.gz  [OK]
    - FIT_OD.nii.gz  [OK]
    - FIT_ISOVF.nii.gz  [OK]
   [ DONE ]

3.5. 結果

結果は、「Study/Subject/AMICO/NODDI/」フォルダにある。

Study/Subject/AMICO/NODDI/
├── FIT_ICVF.nii.gz
├── FIT_ISOVF.nii.gz
├── FIT_OD.nii.gz
├── FIT_dir.nii.gz
└── config.pickle

画像はこちら。

Print Friendly, PDF & Email

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください