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の画像は、以下。
お世話になっております。先日は質問に回答していただき、無事FA値を取り出すことができました。ありがとうございました。私の勉強不足でしたら申し訳ないのですが、FA値を計算する際には分子の速さのベクトル情報から算出していると認識しております。このベクトル情報を入手するやり方がもしあれば教えていただけませんでしょうか。よろしくお願いいたします。
以下のリンクをご覧ください。
https://www.nemotos.net/?p=4797
dtifit で、以下が生成されます。
output_V1 – 1st eigenvector (固有ベクトル)
output_V2 – 2nd eigenvector
output_V3 – 3rd eigenvector
output_L1 – 1st eigenvalue (固有値)
output_L2 – 2nd eigenvalue
output_L3 – 3rd eigenvalue
これが欲しいものではないかと思います。
お世話になっております。
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=DWI.nii.gz
bval=bval
bvec=bvec
にしてやってみましたが、エラーが出てしまいました。
1行ずつ実行してもらって、その結果を貼り付けていただけますか。
恐らくコメントがスパム扱いされていると思うのですが。。。
3行目のところで、
Image Exception : #63 :: No image files match: _ecc
No image files match: _ecc
このメッセージがでます。
変数がうまく展開されていないようですね。
一度、以下でやってみていただけませんか。
(コメントはスパム扱いされていないようです)
ありがとうございます。
進みました。
FA.nii.gz などができました。
よかったです。
続いて、FAを標準化します。
これで、DWI_FA_normalized.nii.gz ができるはずです。
そこまで進めていただけませんか。
Warning, Jacobian not within prescribed range. Prescription is 0.01 …
のような表示が4回ほど出ましたが、
DWI_FA_normalized.nii.gz ができました。
そこまで来ましたね。
続いて以下をお願いします。
これで値が50ぐらい出てくるので、それを確認していただけませんでしょうか?
お世話になっております。こちらのコメントを参考にFA値の解析をWindowsのLin4Neuro上で行っております。以前の質問者様と同様にecc部分でエラーが出てしまったため、2024-03-15 の 11:20のコメントに沿ってコマンドを入力しているのですが、エラーが発生しています。当方は.nii.gz、.bvec、.bvalの3つのファイルをLin4neuroに移し、それらが含まれているディレクトリで作業を行っています。
”’
dwi=$(imglob $”/0916DTINII.nii.gz”)
eddy_correct DWI $DWI_ecc 0
#出力
Usage : fslroi …
Note: indexing (in both time and space) starts with 0 not 1!…
#入力
bet DWI_b0 DWI_brain -f 0.3 -m
#出力
Error : input image DWI_b0 not valid
”’
エラー対処方法を教えていただけませんでしょうか。よろしくお願いいたします。
これは、おそらく変数の扱いがうまくいっていないと思います。
DWIファイルが 0916DTINII.nii.gz
だとしたら、
一番シンプルなのは
eddy_correct 0916DTINII.nii.gz 0916DTINII_ecc 0
fslroi 0916DTINII_ecc 0916DTINII_b0 0 1
bet 0916DTINII_b0 0916DTINII_brain -f 0.3 -m
となります。
もし、変数でやっていきたいのであれば、
dwi=0916DTINII
eddy_correct $dwi ${dwi}_ecc 0
fslroi ${dwi}_ecc ${dwi}_b0 0 1
bet ${dwi}_b0 ${dwi}_brain -f 0.3 -m
としてみてください。
変数は大文字と小文字を区別します。また、バックスラッシュが入ることで、意味が変わってしまうので、そこも注意してください。
出てきました。
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の平均を示しています。
としていただくと、以下が得られます。
さきほど得られたものとこの一覧が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 は脳梁体部とわかります。これを使用します。
今、以下のようにしてください。
これは、これは、JHU-ICBM-FA-1mm.nii.gz の中で、JHU-1mm_04.nii.gz のROI内の値の範囲を表示します。
今の場合、
0.193593 0.629957
となるので、0.193593〜0.629957の値をとるのだなということがわかります。
ROI内平均は以下になります。
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 としましょうか。
次に、wget で genroi.sh を入手します。そのうえで、実行権限を与えます。
次に、JHU-ICBM-labels-1mm.nii.gz をコピーします。
スクリプトを実行し、ROIを作成します。
そうすると、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値のファイルが作成できますでしょうか。
以下のように使います。
これで、FA_normalized.nii.gz の画像から、JHU-ICBM-labels-1mm_04.nii.gz のマスク内のFAの平均値が求められます。
長い間ご対応いただきありがとうございます。
FA値が得られました。やはり低い値でした。
以前のコメントから、TBSSで行う方法もあるということでしょうか。時間や手順などはもっと煩雑なのでしょうか。
はい、もしかしたら、TBSSの方がより好ましい結果が出るかもしれないですね。
individualでTBSSをやることはしてこなかったので1例でというのは若干の試行錯誤が必要かもですが、時間は追加で20分くらいかなと思います。
ここまで来て非常に恐縮ではございますが、TBSSで脳梁体部のFA値を計測する方法を教えていただけますでしょうか。
TBSSですが、たとえば、sub01_FA.nii.gz というFA画像が得られているディレクトリにいるとします。
この1例だけ処理するとします。
[bash]
mkdir sub01_TBSS
cp sub01_FA.nii.gz sub01_TBSS
cd sub01_TBSS
tbss_1_preproc sub01_FA.nii.gz
tbss_2_reg -T
tbss_3_postreg -T
tbss_4_prestats 0.2
[bash]
これで、 stats ディレクトリに all_FA_skeletonised.nii.gz が生成されます。
これに対してROIをあてはめれば値が求められます。
TBSSの方法を教えて頂きありがとうございます。
sub01_TBSSができて、stats の中にall_FA_skeletonised.nii.gzが見つかりました。
ここからは、前のコメントでおしえていただいた、
fslstats all_FA_skeletonised.nii.gz -k JHU-ICBM-labels-1mm_04.nii.gz -M
と続けて実行すると良いのでしょうか。
all_FA_skeletonised に対してエラーが出て、No image filesや、Failed to read volume と言われました。
はい、そのとおりです。
No image files や failed to read volume というのは、基本、今いるディレクトリに指定したファイルがないからだと思います。
たいていは、タイプミスや、そこではなく別のディレクトリにファイルがある場合が多いので、改めてご確認ください。
私はよく、 ls でファイルがあることを確認し、そのファイル名をコピペでfslstatsのあとに貼り付けしています。
度々申し訳ありませんが、おしえていただけますでしょうか。
fslstats all_FA_skeletonised.nii.gz -k JHU-ICBM-labels-1mm_04.nii.gz -M
を実行したところ、
ERROR::Empty mask image
0.000000
と表示されました。
all_FA_skeletonised.nii.gz が入っているstatsフォルダに、以前作成したJHU-ICBM-labels-1mm_04.nii.gzを入れて、そのフォルダ上で端末を開いて実行しました。
fsleyes all_FA_skeletonised.nii.gz -cm green JHU-ICBM-labels-1mm_04.nii.gz
とした時に、ふたつは重なって見えますでしょうか。
ご返信ありがとうございます。
fsleye では、脳梁体部と思われる真っ白い構造のみが見えています。
ふたつのものが重なっているようには見えないです。
fsleyes all_FA_skeletonised.nii.gz -cm green
では、FAの画像は見えますか?skeletonized なので、細い骨格が緑色で見えるのが期待されるのですが。
度々のご返信、お手数をおかけしております。
fsleyes all_FA_skeletonised.nii.gz -cm green実行後、
fsleyes は起動しましたが、FA画像は出てきません。
そうしましたら、そこにファイルがあるかご確認いただけますか。
また、ファイル名が若干違うかもしれないので、そちらも確認していただけたらと思います。
もう一度DWIのDICOMデータからやり直しました。
FA値 0.499518が得られました。
緑の骨格の画像も表示できました。
ありがとうございます!!
大変長い間お手数をおかけして申し訳ありませんでした。
無事にできたようでよかったです。
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を入れました。
すみません、なぜだかスパム判定されており、今、気づきました。
よろしかったら、コマンドから、
とした時にうまく動くか教えていただけますか?
今、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というフォルダの下にデータがあるという前提で進むのでエラーになります。
解析が進みました!ありがとうございます。
初歩的なことでお騒がせして申し訳ありませんでした。
無事に進んでよかったです。
お世話になります。
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』を指定しています。
いつも興味深く拝見させていただいています。
DTI解析を行う際に根本先生が公開しているshall scriptを使って解析を始めました。
”mrmatrix3_6_fsl_fa.sh”でエラーが出ていて、”exit 1”を削除してmrconvertのみの実施はできいるようですが、dtifitは上手くいかなようです。
基本的な質問でしたら申し訳ないのですが、どうぞよろしくお願いします。
このスクリプトですが、
とすることを期待しています。
ステップをひとつひとつ確認できるように作ったスクリプトですので、もし、ERRORが出るとしたら、その前のステップのどこかでうまくいっていない可能性があるかなと思います。いかがでしょうか?
特に、mrtrix3_3_fslpreproc_AP.sh か mrtrix3_4_dwibiascorrect.sh でエラーが出る可能性が高いです。
mrtrix3_3 は、DWIの位相方向がAP方向であることを期待しています。
mrtrix3_4 は、ANTSが入っていないと失敗します。
質問ありがとうございます。
mrtrix3_3はAPで、mrtrix3_4ではANTSをインストールしました。
前のステップでエラー出ていないか確認してみます。
はい、ご確認いただけたらと思います。
後日、まとめたスクリプトをあげるようにします。