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

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

【FSL】XTRACTを用いたトラクトグラフィー

f:id:AIProgrammer:20201124123102p:plain

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

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

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

目的

  • XTRACTを用いたトラクトグラフィー(Tractography)
  • 主要白質路の抽出

XTRACT

XTRACTの論文はこちら

www.sciencedirect.com

XTRACTのドキュメントはこちら

fsl.fmrib.ox.ac.uk

XTRACTによって以下の白質路がトラクトグラフィーによって抽出される。

Tract Abbreviation Left/Right? Seeding Strategy
Association Fibres Arcuate Fasciculus AF Yes Reverse-seeding
Frontal Aslant Tract FA Yes Single-ROI
Inferior Longitudinal Fasciculus ILF Yes Reverse-seeding
Inferior Fronto-Occipital fasciculus IFO Yes Reverse-seeding
Middle Longitudinal Fasciculus MdLF Yes Reverse-seeding
Superior Longitudinal Fasciculus I SLF1 Yes Single-ROI
Superior Longitudinal Fasciculus II SLF2 Yes Single-ROI
Superior Longitudinal Fasciculus III SLF3 Yes Single-ROI
Uncinate Fasciculus UF Yes Single-ROI
Vertical Occipital Fasciculus VOF Yes Reverse-seeding
Commissural Fibres Anterior Commissure AC No Reverse-seeding
Forceps Major FMA No Reverse-seeding
Forceps Minor FMI No Reverse-seeding
Middle Cerebellar Peduncle MCP No Reverse-seeding
Limbic Fibres Cingulum subsection: Dorsal CBD Yes Single-ROI
Cingulum subsection: Peri-genual CBP Yes Single-ROI
Cingulum subsection: Temporal CBT Yes Single-ROI
Fornix FX Yes Single-ROI
Projection Fibres Acoustic Radiation AR Yes Reverse-seeding
Anterior Thalamic Radiation ATR Yes Single-ROI
Corticospinal Tract CST Yes Single-ROI
Optic Radiation OR Yes Reverse-seeding
  Superior Thalamic Radiation STR Yes Single-ROI

(Shaun W, et al. NeuroImage. 2020より)

XTRACTコマンドのヘルプは次の通り。

 __  _______ ____      _    ____ _____ 
 \ \/ /_   _|  _ \    / \  / ___|_   _|
  \  /  | | | |_) |  / _ \| |     | |  
  /  \  | | |  _ <  / ___ \ |___  | |  
 /_/\_\ |_| |_| \_\/_/   \_\____| |_|  
 

Usage: 
    xtract -bpx <bedpostX_dir> -out <outputDir> -str <structuresFile> -p <protocolsFolder> [options]
    xtract -bpx <bedpostX_dir> -out <outputDir> -species HUMAN [options]
    xtract -bpx <bedpostX_dir> -out <outputDir> -species MACAQUE [options]

    Compulsory arguments:

       -bpx <folder>                     Path to bedpostx folder
       -out <folder>                     Path to output folder
       
       And EITHER:
       -str <file>                       Structures file (format: <tractName> [samples=1], 1 means 1000, '#' to skip lines)
       -p   <folder>                     Protocols folder (all masks in same standard space)

       Or:
       -species <SPECIES>                One of HUMAN or MACAQUE

    Optional arguments:

       -stdwarp <std2diff> <diff2std>    Standard2diff and Diff2standard transforms (Default=bedpostx_dir/xfms/{standard2diff,diff2standard}) 
       -gpu                              Use GPU version 
       -native                           Run tractography in native (diffusion) space
       -res <mm>                         Output resolution (Default=same as in protocol folders unless '-native' used)
       -ptx_options <options.txt>  Pass extra probtrackx2 options as a text file to override defaults, e.g. --steplength=0.2 --distthresh=10)

前処理

XTRACTに必要な前処理は次の通り。FDT processing pipelineで処理することが可能。

  • Brain extraction using BET
  • Susceptibility distortion correction using TOPUP
  • Eddy current distortion and motion correction using EDDY
  • Fit the crossing fibre model using BEDPOSTX

www.aiprogrammers.net

  • Registration to standard space (MNI152), see the FDT pipeline

www.aiprogrammers.net

必要なファイル

必要なファイルは次の通り。

.
├── DTI.bedpostX  # BEDPOSTXの出力フォルダ
└── T1_brain.nii.gz  # BET後のBrain 3D-T1WI

「DTI.bedpostX/xfms/」にDiffusion空間からMNI空間への変換行列があることを確認する。

DTI.bedpostX/xfms/
├── diff2standard.mat
├── diff2standard_warp.nii.gz
├── diff2str.mat
├── eye.mat
├── standard2diff.mat
├── standard2diff_warp.nii.gz
├── standard2str.mat
├── standard2str_warp.nii.gz
├── str2diff.mat
├── str2standard.mat
└── str2standard_warp.nii.gz

実行

XTRACTを実行するには、次のコマンドを実行。

  • GPUを使用する場合:-gpuオプション追加
  • 個人のDiffusion空間で出力する場合:-nativeオプション追加
BPX_DIR='DTI.bedpostX'

xtract -bpx $BPX_DIR -out XTRACT_output -str T1_brain.nii.gz -species HUMAN -stdwarp $BPX_DIR/xfms/standard2diff_warp $BPX_DIR/xfms/diff2standard_warp

結果

結果の可視化には、xtract_viewerを用いるとよい。xtract_viewerのヘルプは次の通り。

 __  _______ ____      _    ____ _____         _                        
 \ \/ /_   _|  _ \    / \  / ___|_   _| __   _(_) _____      _____ _ __ 
  \  /  | | | |_) |  / _ \| |     | |   \ \ / / |/ _ \ \ /\ / / _ \ '__|
  /  \  | | |  _ <  / ___ \ |___  | |    \ V /| |  __/\ V  V /  __/ |   
 /_/\_\ |_| |_| \_\/_/   \_\____| |_|     \_/ |_|\___| \_/\_/ \___|_|                                                                           
                                                             

Usage:
    xtract_viewer -dir <xtractDir> [options]

    Compulsory arguments:

       -dir FOLDER                       Path to XTRACT output folder

    Optional arguments:

       -str STRUCTURE,STRUCTURE,...      Structures (comma separated (default = display all that is found in input folder)

       -thr NUMBER NUMBER                The lower and upper thresholds applied to the tracts for viewing
                                         Default = 0.001 0.1

       -brain                            The brain image to use for the background overlay - must be in the same space as tracts.
                                         Default is the FSL_HCP065_FA map

今回の例では、次のようなコマンドを実行する。引数として、XTRACTの出力フォルダを指定する。個人空間でXTRACTをした場合:-brainで個人脳を指定。

xtract_viewer -dir XTRACT_output -species HUMAN

XTRACTのトラクトを用いて、定量値のサンプル

XTRACTのトラクトグラフィーで抽出した、白質ROIを用いて定量値を算出することも可能。コマンドは、xtract_statsを用いる。

xtract_statsのヘルプは次の通り。

__  _______ ____      _    ____ _____    _        _
\ \/ /_   _|  _ \    / \  / ___|_   _|__| |_ __ _| |_ ___
 \  /  | | | |_) |  / _ \| |     | |/ __| __/ _  | __/ __|
 /  \  | | |  _ <  / ___ \ |___  | |\__ \ || (_| | |_\__ \
/_/\_\ |_| |_| \_\/_/   \_\____| |_||___/\__\__ _|\__|___/


Usage:
    xtract_stats -d <dir_basename> -xtract <XTRACT_dir> -w <xtract2diff> [options]

    Compulsory arguments:

       -d <folder_basename>                   Path to microstructure folder and basename of data (e.g. /home/DTI/dti_)
       -xtract <folder>                       Path to XTRACT output folder
       -w <xtract2diff>                       EITHER XTRACT results to diffusion space transform OR 'native' if tracts are already in diffusion space

    Optional arguments:
       -r <reference>                         If not 'native', provide reference image in diffusion space (e.g. /home/DTI/dti_FA)
       -out <path>                            Output filepath (Default <XTRACT_dir>/stats.csv)
       -str <file>                            Structures file (as in XTRACT) (Default is all tracts under <XTRACT_dir>)
       -thr <float>                           Threshold applied to tract probability map (default = 0.001 = 0.1%)

       -meas <list>                           Comma separated list of features to extract (Default = vol,prob,length,FA,MD - assumes DTI folder has been provided)
                                              vol = tract volume, prob = tract probability, length = tract length
                                              Additional metrics must follow file naming conventions. e.g. for dti_L1 use 'L1'

       -keepfiles                             Keep temporary files

計測するための、Diffusion定量値を計算する。DTIの定量値を計算するには、dtifitを用いる。

DTIFITの詳細はこちらをご覧ください。

www.aiprogrammers.net

dtifitのために次のファイルを用意する。

DTI_metrics/
├── bvals  # DWIのGradient Table
├── bvecs  # DWIのGradient Table
├── data.nii.gz  # DWI
└── nodif_brain_mask.nii.gz  # b=0のマスク

DTIの定量値を計算するために、dtifitを用いて、次のようにコマンドを実行する。

dtifit -k DTI_metrics/data -o DTI_metrics/dti -m DTI_metrics/nodif_brain_mask -r DTI_metrics/bvecs -b DTI_metrics/bvals

これで、DTIの定量値であるFAおよびMDが計算されました。

次に、定量値の計測に移ります。今回の例では、標準空間にトラクトがあるため、次のようなコマンドを実行する。デフォルトでは、トラクトの容積・確率・長さ、FAとMDの平均値のみしか計算しないが、-measオプションで計測したい定量値をリストで指定することで計測できる。

BPX_DIR='DTI.bedpostX'
xtract_stats -d DTI_metrics/dti_ -xtract XTRACT_output -w $BPX_DIR/xfms/standard2diff_warp  -r DTI_metrics/dti_FA


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

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

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

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