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



1. 目的
2. XTRACT
3. 前処理
4. 必要なファイル
5. 実行
6. 結果
7. XTRACTのトラクトを用いて、定量値のサンプル


1. 目的

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

2. XTRACT

XTRACTの論文はこちら

https://www.sciencedirect.com/science/article/pii/S1053811920304092

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

https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/XTRACT:embed:cite

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> -species <SPECIES> [options]
    xtract -bpx <bedpostX_dir> -out <outputDir> -species CUSTOM -str <file> -p <folder> -stdref <reference> [options]
    xtract -list

    Compulsory arguments:

       -bpx <folder>                          Path to bedpostx folder
       -out <folder>                          Path to output folder
       -species <SPECIES>                     One of HUMAN or MACAQUE or HUMAN_BABY or CUSTOM

    If -species CUSTOM:
      -str <file>                            Structures file (format: format: <tractName> [samples=1], 1 means 1000, '#' to skip lines)
      -p <folder>                            Protocols folder (all masks in same standard space)
      -stdref <reference>                    Standard space reference image

    Optional arguments:
       -list                                  List the tract names used in XTRACT
       -str <file>                            Structures file (format: <tractName> per line OR format: <tractName> [samples=1], 1 means 1000, '#' to skip lines)
       -p <folder>                            Protocols folder (all masks in same standard space) (Default=/usr/local/fsl/data/xtract_data/<SPECIES>)
       -stdwarp <std2diff> <diff2std>         Standard2diff and Diff2standard transforms (Default=bedpostx_dir/xfms/{standard2diff,diff2standard})
       -stdref <reference>                    Standard space reference image (Default = /usr/local/fsl/data/standard/MNI152_T1_1mm [HUMAN], /usr/local/fsl/data/xtract_data/standard/F99/mri/struct_brain [MACAQUE], /usr/local/fsl/data/xtract_data/standard/neonate/schuh_template [HUMAN_BABY])
       -gpu                                   Use GPU version
       -par                                   If cluster, run in parallel: submit 1 job per tract
       -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)

       And EITHER:
       -native                                Run tractography in native (diffusion) space

       OR:
       -ref <refimage> <diff2ref> <ref2diff>  Reference image for running tractography in reference space, Diff2Reference and Reference2Diff transforms

3. 前処理

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

4. 必要なファイル

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

.
├── 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

5. 実行

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

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

xtract -bpx $BPX_DIR -out XTRACT_output -species HUMAN -stdwarp $BPX_DIR/xfms/standard2diff_warp $BPX_DIR/xfms/diff2standard_warp

6. 結果

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

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


Usage:
    xtract_viewer -dir <xtractDir> -species HUMAN [options]
    xtract_viewer -dir <xtractDir> -species MACAQUE [options]
    xtract_viewer -dir <xtractDir> -brain <PATH> [options]

    Compulsory arguments:

       -dir <FOLDER>                     Path to XTRACT output folder

       And EITHER:
       -species <SPECIES>                One of HUMAN or MACAQUE or BABY

       OR:
       -brain <PATH>                     The brain image to use for the background overlay - must be in the same space as tracts.
                                         Default is the FSL_HCP065_FA map for HUMAN and F99 T1 brain for MACAQUE

    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

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

xtract_viewer -dir XTRACT_output -species HUMAN

7. 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の詳細はこちらをご覧ください。

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
tract vol (mm3) median_prob mean_prob stddev_prob median_length (mm) mean_length (mm) stddev_length (mm) median_FA mean_FA stddev_FA median_MD (mm2.s-1) mean_MD (mm2.s-1) stddev_MD (mm2.s-1)
ac 3414.398 0.002678 0.017128 0.045917 28.7 29.74347 17.81838 0.521566 0.523296 0.236441 0.000546 0.000549 0.000086
af_l 20666.68 0.002328 0.003994 0.004256 42.12476 44.20898 23.76673 0.613976 0.577222 0.173791 0.000502 0.00051 0.000074
af_r 24948.77 0.002255 0.003645 0.003219 47.85464 48.74961 25.61298 0.615803 0.592681 0.1526 0.000504 0.00051 0.000188
ar_l 8164.129 0.003856 0.012093 0.022575 28.42037 36.09538 29.55519 0.55656 0.520793 0.225014 0.000536 0.00054 0.000158
ar_r 8293.718 0.002954 0.012143 0.022982 22.85014 32.43816 28.56032 0.533049 0.499066 0.221096 0.000544 0.000546 0.00018
atr_l 18289 0.002699 0.004647 0.004877 57.80597 49.69841 29.79699 0.575311 0.575069 0.165324 0.000503 0.000506 0.000063
atr_r 17821.35 0.002619 0.00464 0.005357 54.94699 49.30058 29.63312 0.557883 0.545817 0.170427 0.000514 0.000517 0.000065
cbd_l 11657.41 0.002613 0.010754 0.028017 98.31573 81.48625 42.73049 0.607537 0.596432 0.165071 0.000514 0.000522 0.000058
cbd_r 8603.606 0.002572 0.012132 0.027985 89.72475 75.92992 42.34245 0.592488 0.580259 0.179246 0.000525 0.000534 0.000068
cbp_l 2197.385 0.003905 0.022907 0.053306 22.45625 25.27225 19.48524 0.545097 0.533311 0.195338 0.000531 0.000542 0.000076
cbp_r 1295.893 0.004301 0.030165 0.056452 22.73876 25.37224 16.77534 0.584728 0.562756 0.176806 0.000554 0.000556 0.000074
cbt_l 3211.562 0.005425 0.01773 0.030143 26.74173 26.77412 18.85376 0.430775 0.435227 0.207792 0.000581 0.000573 0.000085
cbt_r 3256.637 0.005607 0.016774 0.028038 16.79167 22.45104 18.22606 0.382306 0.4093 0.212651 0.000577 0.000572 0.000237
cst_l 17832.62 0.003415 0.007274 0.012186 90.84464 85.81865 32.18107 0.640534 0.621043 0.179487 0.000484 0.000488 0.000102
cst_r 18311.54 0.003422 0.007005 0.010465 87.59891 82.39769 33.99891 0.660138 0.637923 0.176238 0.000489 0.00049 0.000082
fa_l 8981.105 0.00313 0.008087 0.014326 30.88156 35.4233 21.24802 0.551998 0.524526 0.186808 0.000505 0.000513 0.000085
fa_r 11020.73 0.00295 0.007052 0.011075 32.56344 35.19621 21.1158 0.556506 0.530259 0.18864 0.000504 0.000513 0.000133
fma 20244.11 0.002896 0.007776 0.011268 83.8533 83.33609 57.70774 0.681275 0.659728 0.211593 0.000525 0.000559 0.001264
fmi 26627.79 0.002735 0.004226 0.003915 50.42218 53.67333 34.15696 0.616961 0.618517 0.170364 0.000526 0.000536 0.000067
fx_l 7392.227 0.002952 0.015563 0.036943 61.5648 63.38259 41.55957 0.584486 0.591175 0.244622 0.000576 0.002147 0.053695
fx_r 6062.528 0.003308 0.018033 0.046488 79.0278 72.24227 42.73615 0.505915 0.527057 0.251368 0.000612 0.000642 0.001626
ifo_l 24374.07 0.00259 0.006683 0.011182 55.74806 73.31606 51.36399 0.644492 0.632296 0.150666 0.000522 0.000528 0.000061
ifo_r 24531.83 0.002684 0.006509 0.011672 63.05942 78.94564 55.58284 0.629515 0.614532 0.158353 0.000527 0.000536 0.000268
ilf_l 16356.43 0.00263 0.005763 0.008443 51.05518 48.10694 28.54763 0.610046 0.568141 0.206338 0.000554 0.000558 0.000068
ilf_r 16750.83 0.002442 0.004905 0.006768 43.45034 43.53699 24.9466 0.566343 0.532399 0.205195 0.000564 0.000571 0.000078
mcp 20756.83 0.002571 0.005435 0.006748 53.16116 59.9034 37.39916 0.638924 0.606495 0.217408 0.00044 0.000441 0.000085
mdlf_l 22621.79 0.002328 0.004845 0.006854 62.31984 57.58495 34.51005 0.619331 0.583481 0.190562 0.000524 0.001737 0.076146
mdlf_r 26210.85 0.002244 0.004559 0.006158 64.63949 60.43966 34.84705 0.618442 0.584208 0.190205 0.000529 0.000542 0.000303
or_l 15900.05 0.002753 0.005406 0.006641 58.00233 52.80807 25.41879 0.687723 0.664749 0.148922 0.000517 0.000522 0.000067
or_r 19567.99 0.002326 0.004878 0.006523 66.28878 62.15824 29.92579 0.670205 0.647372 0.15949 0.000518 0.000525 0.000071
slf1_l 11668.68 0.002888 0.009406 0.016493 44.12645 45.98651 26.8693 0.634192 0.59082 0.19284 0.000514 0.000522 0.000098
slf1_r 10479.83 0.003252 0.009862 0.019153 41.26475 42.87262 22.49848 0.600393 0.553235 0.204767 0.00053 0.000537 0.000091
slf2_l 11629.24 0.003415 0.012128 0.023267 33.56578 36.14035 24.11797 0.557181 0.528692 0.198405 0.000509 0.000514 0.000085
slf2_r 14666.13 0.00291 0.010663 0.019574 52.40123 47.55139 21.13686 0.591315 0.548816 0.193379 0.000506 0.000512 0.000094
slf3_l 12801.17 0.00283 0.008231 0.016514 42.1875 41.84864 21.03708 0.584062 0.531114 0.189168 0.00052 0.000534 0.000109
slf3_r 21331.53 0.002617 0.00664 0.011388 50.27447 52.50993 26.76177 0.591089 0.549534 0.177987 0.000517 0.000533 0.000283
str_l 17781.91 0.002877 0.004736 0.004635 45.51739 43.66699 24.95468 0.572124 0.557619 0.189184 0.000481 0.000492 0.000123
str_r 17117.06 0.002982 0.004948 0.004979 44.51994 43.55247 24.74726 0.584902 0.560258 0.183142 0.000482 0.000487 0.000082
uf_l 11189.76 0.002795 0.008007 0.01537 51.86394 47.84278 28.20727 0.532622 0.518818 0.178007 0.000562 0.000845 0.010806
uf_r 10981.29 0.002616 0.007184 0.011671 49.07641 46.89259 27.77912 0.560397 0.53906 0.170793 0.000566 0.001967 0.058334
vof_l 7223.198 0.002525 0.004833 0.005789 19.95182 19.58273 9.168275 0.578046 0.540677 0.183096 0.000504 0.00051 0.000065
vof_r 9183.941 0.002322 0.004658 0.006384 27.81706 27.70939 11.97529 0.553992 0.522878 0.201648 0.000505 0.000519 0.00008

【FSL】XTRACTを用いたトラクトグラフィー” へのコメント

  1. 何度も相談させていただいております.Sawaiです.
    ご教示いただいた方法でxtractの前処理を完了することができました.
    ありがとうございます.

    その後,FDT pipelineを使用するために続けてFSLを起動させようとしたのですが,以下のエラーコードが出ました.

    application-specific initialization failed: couldn’t connect to display “:0.0”
    Error in startup script: couldn’t connect to display “:0.0”
    while executing
    “load /home/・/fsl/lib/libtk8.6.so”
    (“package ifneeded Tk 8.6.12” script)
    invoked from within
    “package require Tk”
    (file “/home/・/fsl/tcl/fslstart.tcl” line 19)
    invoked from within
    “source [ file dirname [ info script ] ]/fslstart.tcl”
    (file “/home/・/fsl/tcl/fsl.tcl” line 71)
    invoked from within
    “source ${FSLDIR}/tcl/${origname}.tcl”
    (file “/home/・/fsl/bin/fsl” line 20)

    以前教えていただいた通り,export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk ‘{print \$2}’):0.0と入力した後であればうまく起動するのかと考えたのですが,上記を入力した際に以下のエラーコードが出ました.

    awk: cmd. line:1: {print \$2}
    awk: cmd. line:1: ^ backslash not last character on line
    awk: cmd. line:1: {print \$2}
    awk: cmd. line:1: ^ syntax error

    このとき,参照ディレクトリはDWIデータが入っているwindowsのフォルダになります.
    解決方法があれば何度も申し訳ありませんが,ご教示お願い致します.

    • awk の後は、 $2 でバックスラッシュは不要です。
      また、シングルクォートもエラーになることがあるので、そこはコピペでなく、ご自身でタイプした方がいいかもしれません。

      export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
      
      • ご返信ありがとうございます.
        ご教示いただいた方法で修正したのですが,以下のようにディスプレイの数字が変わってしまってfslを開くことができませんでした.
        application-specific initialization failed: couldn’t connect to display “172.18.1.20
        172.18.1.21
        fec0:0:0:ffff::1:172.18.1.20”
        Error in startup script: couldn’t connect to display “172.18.1.20
        172.18.1.21
        fec0:0:0:ffff::1:172.18.1.20”
        while executing
        “load /home/hidekinakano/fsl/lib/libtk8.6.so”
        (“package ifneeded Tk 8.6.12” script)
        invoked from within
        “package require Tk”
        (file “/home/hidekinakano/fsl/tcl/fslstart.tcl” line 19)
        invoked from within
        “source [ file dirname [ info script ] ]/fslstart.tcl”
        (file “/home/hidekinakano/fsl/tcl/fsl.tcl” line 71)
        invoked from within
        “source ${FSLDIR}/tcl/${origname}.tcl”
        (file “/home/hidekinakano/fsl/bin/fsl” line 20)

        export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk ‘{print $2}’):0.0
        こちらを入力した際にはエラーコードは出ず,次のコマンド週力へと進むことができました.

        何度も申し訳ありませんが,ご教示お願い致します.

        • このような場合、VirtualBoxを使って仮想マシンで作業していただくのが一番かなと思いました。

          近日中に公開しますが、最新のLin4Neuroの仮想マシンは以下になります。

          https://www.nemotos.net/l4n_archive/l4n-22.04.2-standard-ja_20230604.ova

          すでにFSLもMrtrix3もANTSも入っていますので、VirtualBoxにインポートさえしていただければすぐに使えるようになっています。

          こちらを試されてはいかがでしょうか。

          • ご返信ありがとうございます.
            Virtual Boxのインストールは完了しました.
            仮想デスクトップの中のなにかのアプリケーションを使用してFSLを立ち上げるのでしょうか.
            何度も申し訳ありませんが,ご教示お願い致します.

          • 教えていただいた環境で解析が進められそうです。
            ありがとうございます。

            何度もエラーが出てしまい申し訳ありませんが、FDT pipelineの際に、nodif_brain_mask.nii.gzがマッチしないというエラーが出てしまい、standard2diff.nii.gzが生成されませんでした。
            nodif_brain.nii.gzはBedoostXのフォルダに入れてあるのですが、何か誤った手順を踏んでしまったのでしょうか。
            何度も申し訳ありませんが教えていただけると幸いです。

          • タイプしたコマンドとエラーメッセージをそのままコピペしていただけませんか?

          • 申し訳ありません.
            T1画像の保存フォルダを誤っていたようで,解決できました.
            わかりにくい質問をしてしまい申し訳ありません.

            XTRACTまで何とか解析することができました.
            何度もご相談させていただきありがとうございます.

            結果をFSLeyesで開いたのですが,色をRender2などに変更してもこちらのサイトで示されている画像よりもかなり広い範囲に色がついてしまいます.
            小脳や基底核などがかなり広く色で示されていました(Render2では,小脳は青や緑,基底核は緑).
            どこかFSLeyerの操作を誤っているのでしょうか.
            白質線維をはっきりを示すことができる設定があれば教えていただきたいです.

          • xtract_viewer のオプションに

            -thr NUMBER NUMBER
            

            というのがあります。

            デフォルトは 0.001 0.1 となっています。
            この値を変えてみてはいかがでしょうか?

          • 教えていただいた方法で少し線維がはっきりと見えるようになりました.ありがとうございます.

            FA値を算出する際に,
            DTIFITはエラーなく実行できました.
            XTRACTstatsを実行した際に「af_l」「af_r」「ar_l」などは値を算出することができ,プログラムもエラーなく進みましたが,多くのtractは
            ERROR:: Empty mask image
            と表示されて全ての値が0になってしまいました.

            実行したXTRACTstastのコードは以下の通りです.
            xtract_stats -d DTI_metrics/dti_ -xtract XTRACT_output -w $BPX_DIR/xfmd/standard2diff_warp -r DTI_metrics/dti_FA

            また,エラーコードは以下のようにtractごとに表示されました.
            Processing ac
            ERROR:: Empty mask image
            ERROR:: Empty mask image
            ERROR:: Empty mask image
            ERROR:: Empty mask image
            ERROR:: Empty mask image

          • これは、DWIの画像によるものなので、なんとも言えないところです。
            いくつかの画像を試してみてもらうしかないかなと思います。

          • 承知しました.
            最後まで解析することができました.
            ありがとうございます.

            XTRACTの解析に4日間かかったのですが,virtual desktopの設定を変更することで解析時間の問題は解決しないですか?
            現在の設定は,以前に教えていただいたサイトの通りになっています.

            何度も申し訳ありませんがよろしくお願いいたします.

          • XTRACTは正直、GPUを使って計算させないと非常に時間がかかります。
            仮想マシンはGPUを使えないので、できることがあるとすれば、仮想マシンのCPUのコア数とメモリをPC本体のCPUとメモリを考慮しながらあげることぐらいでしょうか。

            XTRACTできっちり解析したいのであれば、GPUを搭載したLinuxマシンを入手していただくのが一番だと思います。最低でも40万円ぐらいかかってしまいますが。私が監修しているものでは、https://www.amulet.co.jp/solutions/lin4neuro/ があります。

          • ご教示ありがとうございます。
            仮想デスクトップではいけないということは、windows PCに外付けGPUをつけても意味は無いですか?

          • Windows PCに外付けGPUをつけた場合、これまでトライされてきた WSL2 で動かすならばGPUを活用できる可能性があります。
            ただ、WSL2は私は個人的にはそこまで使っていないので、そこまでサポートできないです。
            まだリソースも少ないのでかなりの試行錯誤が必要になるのかなとは思います。

          • 承知しました。
            lin4neuroでCPUを出来るだけ高く設定して見ようと思います。

            何も分からないところから手取り足取り教えて頂き本当にありがとうございました。
            先生のご指導があり一連の解析の手順や環境は出来ましたので、研究を進めていこうと思います。
            長期間にわたり、何度もご指導頂きありがとうございました。

          • 何度もご相談させていただいたsawaiです.
            xtractを実施する際に新しいエラーが出て来たのでご相談させていただきたいです.
            ターミナル上でXTRACTを実施する際に
            xtract -bpx $BPX_DIR -out XTRACT_output -species HUMAN -stdwarp $BPX_DIR/xfms/standard2diff_warp $BPX_DIR/xfms/diff2standard_warpと入力したのですが,
            Unknown option ‘XTRACT_output’と表示され,解析できませんでした.
            XTRACT_outputをオプションではなくアウトプットするフォルダ名だと認識してもらえないのですが,どのように解決すればよろしいでしょうか.

            一度うまく行ったのに申し訳ありません.
            よろしくお願いします.

          • output=XTRACT_output
            

            としたうえで

            xtract -bpx $BPX_DIR -out $output -species HUMAN -stdwarp $BPX_DIR/xfms/standard2diff_warp $BPX_DIR/xfms/diff2standard_warp
            

            とされてはいかがでしょうか?

          • ありがとうございます
            解決することが出来ました

  2. 以前からご相談させていただいているsawaiです.
    何度も教えていただきありがとうございます.
    教えていただいた方法でFSLの画面を表示させることができました.

    以前のpreproc.shをUbuntuで実施しようとしたのですが,preproc.shやdwiデータなどがWindowsからUbuntuに移動させることができなくて解析できませんでした.
    アクセス権がないと出てしまってWindowsからコピペできなかったのですが,なにか方法はありませんでしょうか.
    ネットではプロパティからアクセス権を変更できると記載されていましたが,Ubuntuのプロパティにはアクセス権の項目がありませんでした.

    ファイルを移動させずに,UbuntuからWindowsのファイルにアクセスして解析できないかと考えたのですが,fslのファイルはUbuntu上にあるためなのか,preproc.shを実行できませんでした.

    なにか解決方法を教えていただけるとありがたいです.
    不足している情報がありましたら,送信いたしますのでよろしくお願いします.

    • どこからwslをたちあげるかだと思います。

      Powershellから、ご自身の脳画像解析データが入っているディレクトリに移動したうえで、
      wsl

      として起動すると、Ubuntuはそのファイルにアクセスできるかなと思いますがいかがでしょうか。

      • アクセスできました.ありがとうございます.
        以前教えていただいたpreproc.shを実行したのですが,以下のエラーが出ました.
        何かソフトが足りないのでしょうか.
        ・はユーザー名を示しています.

        何度も教えて頂き申し訳ありません.
        よろしくお願いいたします.

        brain extraction from sub1_dwi_b0
        No
        subjectdir is /mnt/c/Users/・/desktop/sample/bedpostx/sub1
        Making bedpostx directory structure
        Queuing preprocessing stages
        Queuing parallel processing stage
        /home/・/fsl/bin/bedpostx: line 96: ${subjdir}.bedpostX/monitor: ambiguous redirect
        chmod: cannot access ‘/mnt/c/Users/・/desktop/sample/bedpostx/sub1.bedpostX/monitor’: No such file or directory
        /home/・/fsl/bin/bedpostx: line 272: /mnt/c/Users/・/desktop/sample/bedpostx/sub1.bedpostX/monitor: No such file or directory
        Error submitting job – Array task definition file fault: Unable to read ‘/mnt/c/Users/・’
        Queuing post processing stage

        • ユーザー名が日本語でかつスペースが入っている可能性はないでしょうか?

          • ご返信ありがとうございます.
            英語ですが,スペースが入っています.

          • 英語でも半角スペースが入るとパスが上手に通りません。

            もし、それなら、ひとつの対応方法として、

            Cドライブの下に、img_data などのフォルダを作成し、
            img_data の中に画像ファイルやスクリプトを保存したうえで、

            Powershell から

            cd C:\img_data
            wsl

            としてUbuntuを起動したうえで、スクリプトを実行されてはいかがでしょうか。

  3. 以前xtractについて何度も教えていただいていたsawaiです.
    なんとか解析できるようになりました.ありがとうございます.
    以前まで自分のMacで解析していたのですが,研究室にあるwindows10でLINUXから再度解析できる環境を構築することになりました.
    他のサイトを参考にWindows Subsystem for LINUXを使用してLINUXの仮想デスクトップを構築しようとしていたのですが,エラーが出てしまい進めなくなりました.WindowsやLINUXについてもご相談させていただけないでしょうか.何度も申し訳ありません.
    以下に使用しているソフトや経緯を記載します.不足している情報がありましたら,お教えください.
    【ソフトウェア】
    Windows 10
    Ubuntu -10.04
    XLaunch
    【エラーについて】
    https://ao-tela.com/wsl_gui/#toc8
    https://qiita.com/ikota3/items/590f6efa267576493a30
    これらのサイトを参考にubuntuを使用した仮想デスクトップ構築をしようとしていました.一度デスクトップを開くことができたのですが,突然ubuntuが落ちてしまい,それ以降開くことができなくなってしまいました.その際のエラーコードは以下のとおりです.sudo service dbus start
    sudo service x11-common start
    の後に
    gnome-shell -x11 -r
    を入力した時に以下エラーが表示されました.

    libmutter-Message: 16:27:58.228: running GNOME Shell (using mutter 42.5) as a X11 window and compositing manager
    Failed to setup: Unable to open display, DISPLAY not set

    仮想デスクトップを立ち上げなくでもubuntuからコードを入力してfslやxtractを作動させられないかなと思って操作していたのですが,私の技量では困難でした.
    お忙しい中申し訳ありませんが,お助け願えませんでしょうか.

      • ご返信ありがとうございます.
        sudo service dbus start
        sudo service x11-common start
        export DISPLAY=:0.0
        gnome-shell –x11 -r
        の順であっていますでしょうか.
        上記の順序で入力した際に以下のようなエラーがでました.

        libmutter-Message: 16:59:16.716: Running GNOME Shell (using mutter 42.5) as a X11 window and compositing manager
        Failed to setup: Unable to open display ‘:0.0’

        また,fslと入力した場合には以下のようなエラーが出るのですが,fslをインストールするにはどのようなコードが必要でしょうか.

        Command ‘fsl’ not found, did you mean:
        command ‘fsa’ from deb fsa (1.15.9+dfsg-6)
        command ‘wsl’ from deb wsl (0.2.1-3)
        command ‘sl’ from deb sl (5.02-1)
        command ‘fs’ from deb openafs-client (1.8.8.1-3ubuntu2~22.04.1)
        command ‘fstl’ from deb fstl (0.9.4-1)
        command ‘fal’ from deb dnet-progs (2.65build2)
        command ‘fls’ from deb sleuthkit (4.11.1+dfsg-1)
        command ‘psl’ from deb psl (0.21.0-1.2build2)
        command ‘fsc’ from deb scala (2.11.12-5)
        command ‘gsl’ from deb generator-scripting-language (4.1.5-3)
        Try: sudo apt install

        • WSL(およびXlaunch)をインストールしたら

          Powershellから

          wsl

          でUbuntuが起動し、

          FSLを正しくインストールできていたら、

          fsl

          でFSLが起動すると思うのですが、いかがでしょうか?

          sudo service dbus start などはあえてやる必要はないと思うのですが…。

          • 丁寧に説明していただきありがとうございます.
            送信していただいた記事から進めたところ,glxgearsと入力した時にError: couldn’t open display :0.0
            と表示されました.
            どのように解決すればよろしいでしょうか.

            何度も解説していただきありがとうございます.
            申し訳ありませんが,よろしくお願いいたします.

          • export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk ‘{print \$2}’):0.0

            としてから

            glxgears

            としたらいかがでしょうか?

  4. xtractについて教えていただいていた澤井です.
    コメントの追加ができなくなっていたので新しくコメントをさせていただきます.

    bedpostXまでは教えていただいた方法で解析できました.ありがとうございます.

    次の解析のFDT pipelineで以下のエラーコードが出ました.
    Error: Could not open matrix file /Users/username/sample/bedpostX/sub1bedpostX/xfms/str2diff.mat libc++abi: terminating with uncaught exception of type std:: logic error: matrix multiplication: incompatible matrix dimensions: 0×0 and 4×1

    そして,xfmsフォルダに
    eye.mat
    standard2str_warp.nii.gz
    standard2str.mat
    str2standard_warp.nii.gz
    str2standard.mat
    が生成されていました.
    これは正しく解析できていないのでしょうか.

    • 確認しました。

      nodif_brain.nii.gz というファイルが sub1.bedpostX に入っていないといけないんですが、それが入っていないですね。
      FDT pipelineを実行する前にコピーしていただく必要があります。

      とりいそぎ、sample ディレクトリ直下にある

      sub1_dwi_brain.nii.gz を sub1.bedpostX にコピーし、ファイル名を nodif_brain.nii.gz と変更してください。

      そのうえで再度実行していただけませんか?

      • ありがとうございます.
        生成されたファイルが増えました.
        私のPCのスペックが悪いのもあるかもしれませんが,かなり時間がかかっており,後diff2standard_warp.nii.gzとstandard2diff_warp.nii.gzだけ生成されていない状態です.

        • fnirtなどはかなり時間がかかるので忍耐が必要です。XTRACTはGPUがないとさらに時間がかかります。まる一日かかると覚悟しておいてください。

          • FDT pipelineは正常に完了しました.ありがとうございます.

            XTRACTはPreparing submission script…で固まっているのですが,あっていますでしょうか.

          • 現在,logは少しずつ生成されていっていますが,前回送信したコマンドのままで止まっています.

          • そうなのですね。ログが生成されていっているということは待ってみるしかないかもですね。

  5. お世話になります.
    初めてMRI画像の解析を行うためかなり苦戦しており,ご助言をいただきたいです.

    X-tractを実行する前処理の段階で,nii.gzファイルはあるのですが,他のacqparams.txtやbval,bvecなどの付随するファイルがありません.
    こちらはどのように入手すればいいのでしょうか?

    また,手順を解説しているyoutubeなどでnodif.nii.gzやnodif_PA.nii.gzなどのデータが出てきたのですが,これはMRIからデータを抜き取る際に2種類のデータが存在するということなのですか?

    無知で申し訳ありません.スクリプトを動かすことに慣れていないので見当違いなことを言ってしまっているかもしれませんが,ご教示いただけると幸いです.

    • はじめてMRIの解析をされるのですね。それならば、XTRACTを最初から行うのはかなりハードルが高いかもしれません…

      まず、.nii.gzファイルはあるということですが、それはどのように入手されたものでしょうか?

      拡散MRIの解析のためには、以下の手順を踏む必要があります。

      ・DICOM画像をNIFTI画像に変換する
       この際に、NIFTI画像(拡張子は nii もしくは nii.gz)とbval, bvec ファイルが生成されます。
      ・TOPUPおよびEddyというプログラムを使って歪み補正をするためには、PA方向に撮像した画像とAP方向に撮像した画像が必要になります。
       ただ、これは研究向けでないと撮像していないと思うので、普通はPA方向に撮像した画像しかないのではないかと思います。それでも大丈夫です。
      ・acqparams.txtもTOPUP用です。

      なお、bval, bvecファイルは電子カルテ経由で得られたDICOM画像では生成できないことがあります。そういう場合には、放射線科に相談していただく必要があるかもしれません。

      まずはそこからご確認いただけませんか?

      • ご返信ありがとうございます.
        なんとかネット上の情報からacquisition parametersとindexのファイルの生成は完了しました.
        bval,bvecのデータはT1強調画像のNIfTI変換では出てこなかったのですが,DWI画像の変換では生成できました.これはもしかすると以前まで解析していたT1強調画像がカルテ経由で取得したものである可能性がありますね(ネット上のサンプルデータを使用して解析の練習をしています).

        PAしか臨床では撮影されていないことが多いとのことですが,その場合,topupなどの補正はどのように実施するのでしょうか.

        • bval, bvec は、DWI画像でしか生成されません。これは、印加軸の情報であり、DWIのように、磁場の向きを変えて撮像する時にだけできるものなので、T1強調画像では生成されないのが標準ですのでご安心ください。

          TOPUPの補正は、PAとAPと双方を撮像している時にのみ使えます。それ以外の場合は、TOPUPを使わないで渦電流の補正などを行うことが多いです。FSLでは、eddy_correctという方法を使うことが多いかと思います。(TOPUPとEDDYが出る前の標準的な方法でした)

          • ご返信ありがとうございます.
            ご指導の通り,eddy_correctで渦電流の補正ができました.
            ありがとうございます.
            このeddy_correctの出力ファイルを使用してxtractのその後の解析に進めるでしょうか?

            また,xtractの一連の処理プロセスについて,
            ①dcm2niixでDICOM→NIfTI(DWI画像であればbval,bvec等もここで出力)
            ②BETでmask画像等作成
            ③eddy_correctで渦電流の補正
            ④bedpostXでcrossing fibre modelの適応
            ⑤FDT pipelineで位置合わせ
            ⑥xtract
            の流れであってますか?

            何度も申し訳ありませんが,ご教示お願いいたします.

          • eddy_correctで以下のエラーコードが出ました.
            Input does not exist or is not in a supported format
            DWI画像をNIfTIに変換したデータなのですが,どこが間違っているのでしょうか.

            ご教示お願いいたします.

          • 具体的にどのようなコマンドを入力したか示していただけますか。

            また、input does not exist とありますので、入力画像がきちんと存在するかの確認もお願いします。

          • eddy_correct sampledata_dwi.nii.gz eddy 0
            こちらのコードを入力しました.

            DWI画像データを参照しているディレクトリに移動させたら解析できました.
            他の解析では,参照しているディレクトリの中のフォルダの中にデータがあっても解析できていたのですが,フォルダからは出していた方が良いのでしょうか.
            (例えば,デスクトップを参照していて,デスクトップ上のフォルダにDWIデータが入っている状態.こちらではeddy_correctでエラーが生じました.)

            何度も申し訳ありません.

          • eddy_correct の場合、カレントディレクトリにファイルがあることを前提にしています。
            したがって、方法としては先生がとられたようにデータそのものを移動するか、
            もしくは、データが入っているディレクトリに移動して解析をするかどちらかになるかと思います。

            あまり移動するとファイルを失うリスクが高くなるので、私は後者のディレクトリを移動するという方法をとっています。

          • ありがとうございます.解決できました.

            何度も申し訳ありませんが,次のFDTpipelineでの位置合わせで使用するBET前後のファイルはそれまで解析していたDWI画像ではないのでしょうか.

          • XTRACTのところまで来たのですが,現在ネット上のサンプルデータで解析練習をしており,DWIデータとT1データで同一対象者のものが揃っていない状態です.
            DWI画像とは異なるサイトから取ってきたT1画像でFDTpipelineは実施できたのですが,XTRACTは以下のエラーコードが出てしまいます.
            これは同一対象者のDWI画像とT1画像であれば解決するのでしょうか.
            何度も申し訳ありませんがご教示お願いいたします.

            -str file format is inconsistent. Format should be either:
            per line
            OR
            [samples=1] per line
            samples=1, 1 means 1000. Use ‘#’ to skip lines

          • だいぶ前に下に書き込ませていただいたのですが、小山先生がおっっしゃるように-strオプションは-species HUMAN ( もしくはMACAQUE)を指定した場合には既製品が用意されているので必要ないかと思います。(指定する場合にはT1wなどの構造画像ではなく、自分で決めたseedやtarget等のROIを記載したファイルを指定します。)
            上の5. 実行にあるコマンドを「-str T1_brain.nii.gz」だけ削除すると実行できるかと思います。

          • 金子先生、フォローをどうもありがとうございます!

          • BedpostXで以下のようなエラーコードが出ました.
            ファイル名は修正していて問題ないと思うのですが,このエラーコードから何か問題点はわかりますでしょうか.
            何度も申し訳ありません.

            No
            subjectdir is /Users/sample/sub1
            Making bedpostx directory structure
            Queuing preprocessing stages
            Queuing parallel processing stage

            —– Bedpostx Monitor —–
            Queuing post processing stage
            An error ocurred. Please check file /Users//sample/sub1.bedpostX/logs/bedpostx.e31402.1
            /Users/fsl/share/fsl/bin/bedpostx: line 2: 30661 Killed: 9 /Users/fsl/bin/bedpostx “$@”

          • /Users/(ユーザー名が入るのかなとは思います)/sample/sub1.bedpostX/logs/bedpostx.e31402.1 の中身を貼り付けていただけませんか?

            あと、気になるのは、FSLのインストール場所なのですが、macをお使いと思うのですが、/Users/fsl というアカウントをお作りになっているということですか?

          • Image Exception : #3 :: Mask of different size used in matrix()

            Mask of different size used in matrix()

            こちらの内容が入っていました.

            fslの保存場所はUsers/ユーザー名/fslです.
            フルネームのユーザー名なので消去していました.

          • そういうことですね。たぶん マスク画像がうまく作れていないのでしょう。DWIから b0 画像を抽出し、b0画像に対してbetで脳抽出を行い、そこからマスク画像を生成するプロセスができていないのかもしれません。

            そうしましたら、一度、以下の内容を “preproc.sh” として、sample ディレクトリの直下に保存し、そして
            ターミナルから

            bash preproc.sh sub1_dwi.nii.gz
            

            として実行していただけませんか?

            eddy_correct, bedpostx まで実行してくれます。

            #!/bin/bash
            
            if [[ $# -lt 1 ]]; then
              echo "ERROR: Please specify dwi file"
              echo "Usage: $0 <dwi>"
              exit 1
            fi
            
            dmri=$(imglob $1)
            subject=${dmri%_*}
            
            # eddy_correct
            echo "eddy_correct $dmri"
            eddy_correct $dmri ${dmri}_ecc 0
            
            # extract B0
            echo "extract B0 from $dmri"
            fslroi ${dmri}_ecc ${dmri}_b0 0 1
            
            # bet
            echo "brain extraction from ${dmri}_b0"
            bet ${dmri}_b0 ${dmri}_brain -f 0.3 -m
            
            # preparation for bedpostx
            [[ -d bedpostx ]] || mkdir bedpostx
            mkdir -p bedpostx/${subject}
            cp ${dmri}.nii.gz bedpostx/${subject}/data.nii.gz
            cp ${dmri}.bval bedpostx/${subject}/bvals
            cp ${dmri}.bvec bedpostx/${subject}/bvecs
            cp ${dmri}_brain_mask.nii.gz bedpostx/${subject}/nodif_brain_mask.nii.gz
            
            # bedpostx
            cd bedpostx 
            bedpostx ${subject}
            
  6. お世話になっております。
    上記5.でxtractを実行する時に、-str でT1画像を指定しようとするとerrorになってしまいます。https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/XTRACT ではoptional argumentsとなっていたので、-str以下を削除したら実行できました。External Compatible Protocol Librariesのところを見ると、何らかのTractnameなどを自分で指定しないといけないと書かれている気がするのですが・・・

    • 当方も同様エラーを体験しております。-str以下を削除したら実行できました。以下より、それで問題ないものと考えております。

      ターミナルで
      xtract
      とタイプしてリターンしてください。xtract の使用例(Usage)が表示されます。
      その最初の一行(典型例)は以下です。
      xtract -bpx -out -species [options]
      -species については HUMAN または MACAQUE あるいは CUSTOM です。
      CUSTOMの場合 -str オプションが必要に見えます。
      -species HUMAN なら -str オプションは不要と読み解けます。

      次にターミナルで
      ls ${FSLDIR}/data/xtract_data/Human/
      とタイプしてリターンしてください。
      そこにトラクトのseed, target, exclude を含んだフォルダと並んで、structureList という名のがあります。

      次にターミナルで
      cat ${FSLDIR}/data/xtract_data/Human/structureList
      とタイプしてリターンしてください。
      その一行に
      # Format:
      が見えます。

      -species HUMAN なら既に -str オプションに必要な情報を読み込んでいると読み解いています。

      以上から当方も -str オプションはオミットしています。

コメントを残す

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