【FSL】FSLを用いた拡散テンソルイメージング: DTI


1. 目的
2. コマンド
3. 使用例


1. 目的

  • FSLを用いた拡散テンソルイメージング: DTI

2. コマンド

FSLを用いて、拡散テンソルイメージング(DTI)をするには、dtifitコマンドを用いる。

dtifitのヘルプは、次の通り。

クリックして展開
Usage: 
dtifit -k <filename>
 dtifit --verbose


Compulsory arguments (You MUST set one or more of):
	-k,--data	dti data file
	-o,--out	Output basename
	-m,--mask	Bet binary mask file
	-r,--bvecs	b vectors file
	-b,--bvals	b values file

Optional arguments (You may optionally specify one or more of):
	-V,--verbose	switch on diagnostic messages
	-h,--help	display this message
	--cni	Input confound regressors
	--sse	Output sum of squared errors
	-w,--wls	Fit the tensor with weighted least squares
	--kurt	Output mean kurtosis map (for multi-shell data)
	--kurtdir	Output  parallel/perpendicular kurtosis maps (for multi-shell data)
	--littlebit	Only process small area of brain
	--save_tensor	Save the elements of the tensor
	-z,--zmin	min z
	-Z,--zmax	max z
	-y,--ymin	min y
	-Y,--ymax	max y
	-x,--xmin	min x
	-X,--xmax	max x
	--gradnonlin	Gradient Nonlinearity Tensor file

基本的な使い方は、以下の通り。

dtifit -k <DWI images> -o <OUTPUT> -m <MASK> -r <b-vectors file> -b <b-values file>

3. 使用例

まず、次のファイルを用意する。

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

ファイルの用意ができたら、dtifitを次のように実行する

dtifit -k DWI.nii.gz -o output -m DWI_mask.nii.gz -r bvecs -b bvals

処理が終わると次のファイルが生成される。

  • output_V1 – 1st eigenvector (固有ベクトル)
  • output_V2 – 2nd eigenvector
  • output_V3 – 3rd eigenvector
  • output_L1 – 1st eigenvalue (固有値)
  • output_L2 – 2nd eigenvalue
  • output_L3 – 3rd eigenvalue
  • output_MD – mean diffusivity
  • output_FA – fractional anisotropy (isotropic ~ 0; stick-like ~1)
  • output_MO – mode of the anisotropy (oblate ~ -1; isotropic ~ 0; prolate ~ 1)
  • output_S0 – raw T2 signal with no diffusion weighting

FA, MD, L1の画像は、以下。

Print Friendly, PDF & Email

【FSL】FSLを用いた拡散テンソルイメージング: DTI” へのコメント

  1. お世話になっております。
    DWIのデータからFAマップを作成し脳梁のFAを計測したいのですが、簡単にできる操作法を教えて頂きますでしょうか。
    現在Lin4neuro使用中です。
    お手数をおかけしますがご返信いただけましたら幸いです。

    • ご質問に関してですが、

      1. DICOM→NIFTI変換
      2. FA画像の生成(eddy_current, fsl_roi, bet, dtifit)
      3. FA画像の標準化
      4. Atlasを用いた脳梁のFAの計算

      ということができるのかなと思います。

      このステップを見る時に、ご自身のデータではどこまでできている状況でしょうか?

      • ご返信ありがとうございます。
        現在、NIFTI変換まで完了しております。

        • 以下を実行してみてください。ご自身のnifti, ご自身のbval, bvecはそれぞれご自身のファイル名を入れてください。
          これでFA画像が生成されます。

          dwi_nifti=ご自身のnifti
          bval=ご自身のbval
          bval=ご自身のbvec
          
          
          dwi=$(imglob $dwi_nifti)
          eddy_correct $dwi ${dwi}_ecc 0
          fslroi ${dwi}_ecc ${dwi}_b0 0 1
          bet ${dwi}_b0 ${dwi}_brain -f 0.3 -m
          dtifit --data=${dwi}_ecc \
          --out=$dwi \
          --mask=${dwi}_brain_mask \
          --bvecs=$bvec \
          --bvals=$bval
          
          • ご返信ありがとうございます。
            自分の操作に初歩的なミスがあるのかもしれませんが、エラーが出ました。
            (コメントが残せなくなっておりましたので詳細は記載できませんでした)

          • ご返信ありがとうございます。
            うまくコメントが残せず、お返事に時間がかかっておりました。

            dwi_nifti=DWI.nii.gz
            bval=bval
            bvec=bvec
            にしてやってみましたが、エラーが出てしまいました。

          • 1行ずつ実行してもらって、その結果を貼り付けていただけますか。

          • 恐らくコメントがスパム扱いされていると思うのですが。。。

            3行目のところで、
            Image Exception : #63 :: No image files match: _ecc
            No image files match: _ecc
            このメッセージがでます。

          • 変数がうまく展開されていないようですね。
            一度、以下でやってみていただけませんか。
            (コメントはスパム扱いされていないようです)

            eddy_correct DWI DWI_ecc 0
            fslroi DWI_ecc DWI_b0 0 1
            bet DWI_b0 DWI_brain -f 0.3 -m
            dtifit --data=DWI_ecc \
            --out=DWI \
            --mask=DWI_brain_mask \
            --bvecs=bvec \
            --bvals=bval
            
          • ありがとうございます。
            進みました。
            FA.nii.gz などができました。

          • よかったです。
            続いて、FAを標準化します。

            flirt -ref ${FSLDIR}/data/standard/FMRIB58_FA_1mm 	\
            	      -in DWI_FA -omat affine.mat
            	fnirt --config=FA_2_FMRIB58_1mm 			\
            	      --in=DWI_FA --aff=affine.mat 	\
            	      --cout=DWI_nonlinear_transf		\
            	      --iout=DWI_FA_normalized
            

            これで、DWI_FA_normalized.nii.gz ができるはずです。

            そこまで進めていただけませんか。

          • Warning, Jacobian not within prescribed range. Prescription is 0.01 …
            のような表示が4回ほど出ましたが、
            DWI_FA_normalized.nii.gz ができました。

          • そこまで来ましたね。

            続いて以下をお願いします。

            fslstats -K ${FSLDIR}/data/atlases/JHU/JHU-ICBM-labels-1mm.nii.gz DWI_FA_normalized.nii.gz -M
            

            これで値が50ぐらい出てくるので、それを確認していただけませんでしょうか?

      • 出てきました。

        0.286732
        0.100420
        0.204927
        0.152456
        0.138297
        0.150586
        0.217048
        0.201204
        0.063700
        0.104614
        0.029997
        0.233068
        0.056401
        0.232217
        0.094263
        0.431142
        0.157707
        0.187617
        0.121747
        0.178197
        0.146161
        0.106245
        0.155616
        0.096551
        0.163854
        0.102282
        0.136881
        0.165039
        0.017880
        0.248496
        ERROR:: Empty mask image
        0.000000
        0.151590
        0.181601
        0.069131
        0.134808
        0.173575
        0.140056
        0.155823
        0.217967
        0.091894
        0.117130
        0.071671
        0.135905
        0.110984
        0.077940
        0.146440
        ERROR:: Empty mask image
        0.000000
        0.391511
        0.042384
        0.239456

        • ばっちりです。これは、JHUアトラスに基づいた領域のFAの平均を示しています。

          cd ${FSLDIR}/data/atlases
          cat JHU-labels.xml | grep index
          

          としていただくと、以下が得られます。

          <label index="0" x="0" y="0" z="0">Unclassified</label>
          <label index="1" x="69" y="83" z="36">Middle cerebellar peduncle</label>
          <label index="2" x="89" y="97" z="40">Pontine crossing tract (a part of MCP)</label>
          <label index="3" x="93" y="152" z="77">Genu of corpus callosum</label>
          <label index="4" x="95" y="100" z="97">Body of corpus callosum</label>
          <label index="5" x="85" y="89" z="88">Splenium of corpus callosum</label>
          <label index="6" x="89" y="116" z="88">Fornix (column and body of fornix)</label>
          <label index="7" x="82" y="103" z="43">Corticospinal tract R</label>
          <label index="8" x="97" y="103" z="43">Corticospinal tract L</label>
          <label index="9" x="84" y="89" z="40">Medial lemniscus R</label>
          <label index="10" x="95" y="89" z="40">Medial lemniscus L</label>
          <label index="11" x="83" y="83" z="20">Inferior cerebellar peduncle R  </label>
          <label index="12" x="96" y="83" z="20">Inferior cerebellar peduncle L</label>
          <label index="13" x="84" y="93" z="53">Superior cerebellar peduncle R</label>
          <label index="14" x="95" y="93" z="53">Superior cerebellar peduncle L</label>
          <label index="15" x="75" y="107" z="60">Cerebral peduncle R</label>
          <label index="16" x="104" y="107" z="60">Cerebral peduncle L</label>
          <label index="17" x="75" y="129" z="79">Anterior limb of internal capsule R</label>
          <label index="18" x="104" y="129" z="79">Anterior limb of internal capsule L</label>
          <label index="19" x="66" y="108" z="85">Posterior limb of internal capsule R</label>
          <label index="20" x="113" y="108" z="85">Posterior limb of internal capsule L</label>
          <label index="21" x="61" y="101" z="78">Retrolenticular part of internal capsule R</label>
          <label index="22" x="117" y="101" z="78">Retrolenticular part of internal capsule L</label>
          <label index="23" x="69" y="163" z="73">Anterior corona radiata R</label>
          <label index="24" x="110" y="163" z="73">Anterior corona radiata L</label>
          <label index="25" x="63" y="109" z="96">Superior corona radiata R</label>
          <label index="26" x="116" y="109" z="96">Superior corona radiata L</label>
          <label index="27" x="64" y="99" z="99">Posterior corona radiata R</label>
          <label index="28" x="115" y="99" z="99">Posterior corona radiata L</label>
          <label index="29" x="57" y="64" z="73">Posterior thalamic radiation (include optic radiation) R</label>
          <label index="30" x="122" y="64" z="73">Posterior thalamic radiation (include optic radiation) L</label>
          <label index="31" x="48" y="97" z="60">Sagittal stratum (include inferior longitidinal fasciculus and inferior fronto-occipital fasciculus) R</label>
          <label index="32" x="131" y="97" z="60">Sagittal stratum (include inferior longitidinal fasciculus and inferior fronto-occipital fasciculus) L</label>
          <label index="33" x="56" y="111" z="71">External capsule R</label>
          <label index="34" x="123" y="111" z="71">External capsule L</label>
          <label index="35" x="83" y="132" z="105">Cingulum (cingulate gyrus) R</label>
          <label index="36" x="97" y="110" z="108">Cingulum (cingulate gyrus) L</label>
          <label index="37" x="66" y="101" z="53">Cingulum (hippocampus) R</label>
          <label index="38" x="112" y="99" z="54">Cingulum (hippocampus) L</label>
          <label index="39" x="62" y="100" z="66">Fornix (cres) / Stria terminalis (can not be resolved with current resolution) R</label>
          <label index="40" x="117" y="100" z="66">Fornix (cres) / Stria terminalis (can not be resolved with current resolution) L</label>
          <label index="41" x="53" y="103" z="102">Superior longitudinal fasciculus R</label>
          <label index="42" x="126" y="103" z="102">Superior longitudinal fasciculus L</label>
          <label index="43" x="69" y="121" z="93">Superior fronto-occipital fasciculus (could be a part of anterior internal capsule) R</label>
          <label index="44" x="110" y="121" z="93">Superior fronto-occipital fasciculus (could be a part of anterior internal capsule) L</label>
          <label index="45" x="58" y="131" z="64">Inferior fronto-occipital fasciculus R</label>
          <label index="46" x="121" y="131" z="64">Inferior fronto-occipital fasciculus L</label>
          <label index="47" x="55" y="127" z="54">Uncinate fasciculus R</label>
          <label index="48" x="123" y="125" z="58">Uncinate fasciculus L</label>
          <label index="49" x="60" y="78" z="86">Tapetum R</label>
          <label index="50" x="117" y="76" z="87">Tapetum L</label>
          

          さきほど得られたものとこの一覧が1対1対応です。

          • ありがとうございます。
            確かに、ご返信のものと同じような表示が出てきましたが、この前の数字(50個くらいの羅列)の方が一欄多いのですが、良いのでしょうか。
            近づいてきた感覚はあります。が、Splenium of corpus callosumのFAはどちらに表示されているのでしょうか。

            また、論文化の際にこの解析法の記載方法、引用論文等ありましたら、ご教示いただけましたら幸いです。
            色々とすみません。

          • – Splenium of corpus callosum は label index = 5 に書いてあるかと思います。
            – それ以外のご希望の内容ですが、コメントでお返事する範囲を超えているかなと感じます。これに関しては個別にご相談いただけますか。

          • 不躾なお願いで大変申し訳ございませんでした。

            解析方法につきましては、非常にご丁寧に対応いただきありがとうございました。

          • 行ったことは以下のとおりです。

            – eddy_current を使って渦電流の補正
            – b0画像をもとにマスク画像を作成
            – dtifit でFA画像を生成
            – FLIRT, FNIRTで標準脳に解剖学的標準化
            – JHUアトラスを用いて各領域の平均値を抽出

            すべてFSLのツールを使っていますので、FSLの論文を引用すれば大丈夫です。

          • 教えていただきありがとうございます。
            コメントのやり取りを通じて断片的な知識が整理できてきました。

          • 度々恐れ入ります。
            教えていただいた解析結果のFA値の見方が分かっておらず、再度確認させていただきたいと思います。
            通常、脳梁のFA値は0.6-0.8程度かと思いましたが、貼り付けた50個ほどの数値は低いので混乱しています。具体的に何行目がlabel index= 5 の数値となるのでしょうか。

          • JHU-ICBM-labels-1mm.nii.gz から50の領域を個別にROIにしたものを以下に準備しました。

            https://drive.google.com/file/d/1vl_LvseC_CDu8YcjxbIGvpN-QlYbDcnn/view?usp=sharing

            展開していただくと、JHU_rois というフォルダができて、その中に、JHU-1mm_01〜50.nii.gz と JHU_index.txt, JHU-ICBM-FA-1mm.nii.gz というファイルがあると思います。

            JHU-1mm_[01-50].nii.gz: 各領域のROI(マスク画像)
            JHU-ICBM-FA-1mm.nii.gz: FSLに搭載されているFA画像 説明のために使います。
            JHU_index.txt: 各インデックスがどの領域に該当するかの説明

            JHU_index.txtを見ると、

            04 Body of corpus callosum

            となっているので、JHU-1mm_04.nii.gz は脳梁体部とわかります。これを使用します。

            今、以下のようにしてください。

            fslstats JHU-ICBM-FA-1mm.nii.gz -k JHU-1mm_04.nii.gz -R
            

            これは、これは、JHU-ICBM-FA-1mm.nii.gz の中で、JHU-1mm_04.nii.gz のROI内の値の範囲を表示します。
            今の場合、

            0.193593 0.629957

            となるので、0.193593〜0.629957の値をとるのだなということがわかります。

            ROI内平均は以下になります。

            fslstats JHU-ICBM-FA-1mm.nii.gz -k JHU-1mm_04.nii.gz -M
            

            0.398582となります。

            FA画像をシンプルに標準化してFAを取り出すと脳梁でもこの程度の値になります。
            そのためにTBSSのような方法が開発されてきていると理解しています。

          • ご丁寧にご返信いただきありがとうございます。
            すみません、まだコマンド入力までできていないのですが、理解が進みました。
            実際の症例で、JHU-1mm_4.nii.gzのようなファイルはどのようにして得られるのでしょうか。

          • このファイルは、FSLのアトラスにある JHU-ICBM-labels-1mm.nii.gz から作成したものです。このファイルは、MNI標準脳空間にあります。

            個々の症例のファイルをFLIRT, FNIRTを使って標準化することで、MNI標準脳空間になりますので、どの症例でも使うことのできるファイルとなります。

          • おしえていただきありがとうございます。
            こちらのコメント欄の方法で作られた、FA.nii.gzを標準化し、JHU-ICBM-labels-1mm.nii.gzに合わせるのでしょうか。

            こちらのサイトのどちらのページを参照すると良いでしょうか?

          • 度々失礼します。
            こちらのコメント欄の方法で、既にFA_normalized.nii.gz ができておりますが、こちらを使用するのでしょうか。

          • FA_normalized.nii.gz がMNI標準脳に変換された画像となります。

          • では、FA_normalized.nii.gz から、JHU-1mm_4.nii.gzのようなファイルを作成する方法を教えて頂けますでしょうか。

          • このファイルはマスク画像になりますので、アトラスファイルから作成します。

            まず、最初にディレクトリを作成します。jhu_rois としましょうか。

            mkdir jhu_rois
            cd jhu_rois
            

            次に、wget で genroi.sh を入手します。そのうえで、実行権限を与えます。

            wget https://gitlab.com/kytk/kn-scripts/-/raw/main/genroi.sh
            chmod 755 genroi.sh
            

            次に、JHU-ICBM-labels-1mm.nii.gz をコピーします。

            cp ${FSLDIR}/data/atlases/JHU/JHU-ICBM-labels-1mm.nii.gz .
            

            スクリプトを実行し、ROIを作成します。

            ./genroi.sh JHU-ICBM-labels-1mm.nii.gz
            

            そうすると、JHU-ICBM-labels-1mm-roisというディレクトリが生成され、その中にROIが50個できています。

            私はこのスクリプトを使っていつもROIを作成しています。

          • ありがとうございます。
            教えて頂いた操作を行いましたところ、Lin4neuro内の/home/brain/jhu_rois/の中に、JHU-ICBM-labels-1mm.nii.gzができました。
            JHU-1mm_[01-50].nii.gz 
            JHU-ICBM-FA-1mm.nii.gz
            を作成するにはどうしたらよいのでしょうか。

          • 下記のコメントに従って、genroi.sh を入手し、JHU-ICBM-lables-1mm.nii.gzを引数に実行していただければできます。
            JHU-ICBM-FA-1mm.nii.gzは /usr/local/fsl/data/atlases/JHU の中にあります。

          • ありがとうございます。無事、JHU-ICBM-labels-1mm_[01-50].nii.gz が得られました。
            JHU-ICBM-FA-1mm.nii.gzも見つかりました。

            ここまでで、症例から得られたFA_normalized.nii.gzは使用していませんが、どのようにすると個々の症例のFA値のファイルが作成できますでしょうか。

          • 以下のように使います。

            	
            fslstats FA_normalized.nii.gz -k JHU-ICBM-labels-1mm_04.nii.gz -M
            

            これで、FA_normalized.nii.gz の画像から、JHU-ICBM-labels-1mm_04.nii.gz のマスク内のFAの平均値が求められます。

          • 長い間ご対応いただきありがとうございます。
            FA値が得られました。やはり低い値でした。

            以前のコメントから、TBSSで行う方法もあるということでしょうか。時間や手順などはもっと煩雑なのでしょうか。

          • はい、もしかしたら、TBSSの方がより好ましい結果が出るかもしれないですね。
            individualでTBSSをやることはしてこなかったので1例でというのは若干の試行錯誤が必要かもですが、時間は追加で20分くらいかなと思います。

          • ここまで来て非常に恐縮ではございますが、TBSSで脳梁体部のFA値を計測する方法を教えていただけますでしょうか。

  2. 6/21の返信になります。
    先に自分が作成した返信コメントが送信されていないかと思い、こちらから送信させていただきます。

    PCはWindowsでLinux環境を作り、共有フォルダ(dev)にcase1フォルダを作成し、DICOMファイルを入れました。Lin4neuroのMRIcroGLでNifTi変換し、DWI_AP.nii.gz, bvecs,bvalsファイルを作りました。できたファイルはcase1フォルダのままです。コマンドはタイプせず、ホーム画面のアプリケーションの脳画像解析にあるFSLを立ち上げ、FDTdiffusion、DTIFIT Reconstruct diffusion tensorsに入りました。Input directoryに先ほどのcase1内のDWI_AP.nii.gzを入れました。

    • すみません、なぜだかスパム判定されており、今、気づきました。

      よろしかったら、コマンドから、

      dtifit --data=DWI_AP.nii.gz \
      --out=subj1 \
      --mask=マスクファイル \
      --bvecs=bvecファイル \
      --bvals=bvalファイル
      

      とした時にうまく動くか教えていただけますか?

    • 今、GUIを立ち上げてわかりました。

      DTIFITのところで、

      “Specify input files manually”

      をクリックしてください。

      そうすると、
      Diffusion weighted data
      BET binary brain mask
      Output basename
      Gradient directions
      b values

      をそれぞれ指定できるので、指定してみていただけませんか。

      そうすることで解析が進むかと思います。

      Input directory に指定するのは、フォルダなので、DWI_AP.nii.gz を指定すると、DWI_AP.nii.gzというフォルダの下にデータがあるという前提で進むのでエラーになります。

      • 解析が進みました!ありがとうございます。
        初歩的なことでお騒がせして申し訳ありませんでした。

  3. お世話になります。
    DTIデータを使って、FSLで解析を始めようとしています。
    以下の問題に対し、ご意見頂けましたら幸いです。

    FSLのGUIでFDTdiffusion、DTIfitに入りnii.gzファイルを読み込ませようとしていますが、bvecs, bvalsファイルが開けないというエラーが出て、次のエラーメッセージが出ます。
    『Image Exception: #63 :: No image files match: /mnt/dev/case1/DWI_AP. nii.gz/data
    Image Exception : #22 ** Failed to read volume /mnt/dev/case1/DWI_AP. nii.gz/data
    No image files match : mnt/dev/case1/DWI_AP. nii.gz/data
    terminate called after throwing an instance of ‘std::runtime_error’
    what ()* Failed to read volume mnt/dev/case1/DWI_AP. nii.gz/data』
    なお、DTIデータはフィリップス、シーメンスから抽出したもので試しましたが、同じエラーでした。

    • 具体的にタイプされたコマンドを教えていただけますか?

      また、どのディレクトリにデータがあって、ファイル名はそれぞれどうなっているかも教えていただければ。

      DWI_AP.nii.gz/data というのはおかしいので、なにかコマンドが違うのかなと感じます。

      • 早速ご返信いただきありがとうございます。
        WindowsでLinux環境を作りLin4neuroをインストールしている状態です。
        WindowsとLin4neuroの共有フォルダー(ファイル名『dev』)を作り、その中にcase1フォルダを作成しています。この中にNifTiファイル(ファイル名『DWI_AP.nii.gz』に書き換えています)、『bvecs』, 『bvals』の名前のファイルを入れています。コマンドはタイプせず、Lin4Neuroの左下の脳画像解析のアイコンからFSLを立ち上げ、FDTdiffusionのDTIfitの中で、上記の『DWI_AP.nii.gz』を指定しています。

  4. いつも興味深く拝見させていただいています。
    DTI解析を行う際に根本先生が公開しているshall scriptを使って解析を始めました。
    ”mrmatrix3_6_fsl_fa.sh”でエラーが出ていて、”exit 1”を削除してmrconvertのみの実施はできいるようですが、dtifitは上手くいかなようです。
    基本的な質問でしたら申し訳ないのですが、どうぞよろしくお願いします。

    • このスクリプトですが、

      mrtrix3_6_fsl_fa.sh *_den_unr_preproc_unbiased.mif
      

      とすることを期待しています。

      ステップをひとつひとつ確認できるように作ったスクリプトですので、もし、ERRORが出るとしたら、その前のステップのどこかでうまくいっていない可能性があるかなと思います。いかがでしょうか?

      特に、mrtrix3_3_fslpreproc_AP.sh か mrtrix3_4_dwibiascorrect.sh でエラーが出る可能性が高いです。

      mrtrix3_3 は、DWIの位相方向がAP方向であることを期待しています。
      mrtrix3_4 は、ANTSが入っていないと失敗します。

      • 質問ありがとうございます。
        mrtrix3_3はAPで、mrtrix3_4ではANTSをインストールしました。
        前のステップでエラー出ていないか確認してみます。

        • はい、ご確認いただけたらと思います。

          後日、まとめたスクリプトをあげるようにします。

コメントを残す

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