1. 目的
2. Volume計算
3. 一括で計測する場合
3.1. フォルダ構造
3.2. コード
3.3. 結果
1. 目的
FSLをつかったVOI (ROI) Volumeの計測。
2. Volume計算
Volume計算にはFSLコマンドのfslstatsを用いる。
-Vオプションでvoxel数とvolumeを計測できる。
-V : output
(for nonzero voxels)
1 2 | $ fslstats lt_SN_mask.nii -V 529 293.009949 |
Volumeのみを取り出したい場合は、cutコマンドを用いる。
- -d : 区切り文字を指定
- f : 何個目の要素かを指定
このケースだと、空白(” “)で区切って(-d ” “)、2個目の要素(-f2)であるVolumeを抽出。
1 2 | $ fslstats lt_SN_mask.nii -V | cut -d " " -f2 293.009949 |
3. 一括で計測する場合
3.1. フォルダ構造
3人の被験者がいて、以下のVOIのVolumeを計測する。
- VTA_mask.nii
- lt_SN_mask.nii
- lt_ant_SN_mask.nii
- lt_mid_SN_mask.nii
- lt_pos_SN_mask.nii
- rt_SN_mask.nii
- rt_ant_SN_mask.nii
- rt_mid_SN_mask.nii
- rt_pos_SN_mask.nii
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | . ├── sub_1 │ ├── 20171007_134045tse3t1Conc1p1Neuromelanins020a1001A.nii │ ├── MB.nii │ ├── VTA_mask.nii │ ├── kiritori.nii │ ├── lt_SN_mask.nii │ ├── lt_ant_SN_mask.nii │ ├── lt_mid_SN_mask.nii │ ├── lt_pos_SN_mask.nii │ ├── rt_SN_mask.nii │ ├── rt_ant_SN_mask.nii │ ├── rt_mid_SN_mask.nii │ └── rt_pos_SN_mask.nii ├── sub_2 │ ├── 20171007_134045tse3t1Conc1p1Neuromelanins020a1001A.nii │ ├── MB.nii │ ├── VTA_mask.nii │ ├── kiritori.nii │ ├── lt_SN_mask.nii │ ├── lt_ant_SN_mask.nii │ ├── lt_mid_SN_mask.nii │ ├── lt_pos_SN_mask.nii │ ├── rt_SN_mask.nii │ ├── rt_ant_SN_mask.nii │ ├── rt_mid_SN_mask.nii │ └── rt_pos_SN_mask.nii └── sub_3 ├── 20171007_134045tse3t1Conc1p1Neuromelanins020a1001A.nii ├── MB.nii ├── VTA_mask.nii ├── kiritori.nii ├── lt_SN_mask.nii ├── lt_ant_SN_mask.nii ├── lt_mid_SN_mask.nii ├── lt_pos_SN_mask.nii ├── rt_SN_mask.nii ├── rt_ant_SN_mask.nii ├── rt_mid_SN_mask.nii └── rt_pos_SN_mask.nii |
3.2. コード
以下のコードを実行すると、各被験者、各ROIごとのVolumeを計測し、まとめてresult_vol.txtとして出力する。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #!/bin/sh count=0 for sub in *; do echo "$sub done..." count=$(( ${count}+1 )) if [ ${count} = 1 ]; then # redirect subject name (folder name) echo "ID" >> tmp_ID fi echo ${sub} >> tmp_ID for roi in lt_SN rt_SN lt_ant_SN rt_ant_SN lt_mid_SN rt_mid_SN lt_pos_SN rt_pos_SN VTA; do if [ ${count} = 1 ]; then # redirect ROI name echo "${roi}(mm^3)" > tmp_${roi} # calc ROI vol fslstats ${sub}/${roi}_mask -V | cut -d " " -f2 >> tmp_${roi} else # calc ROI vol fslstats ${sub}/${roi}_mask -V | cut -d " " -f2 >> tmp_${roi} fi done done # merge calc result paste tmp* > result_vol.txt # remove tmp files rm tmp* |
3.3. 結果
result_vol.txtの中身は以下。
sub1~sub3は、同じデータを複製したものなので値は同じ。
ID | VTA(mm^3) | lt_SN(mm^3) | lt_ant_SN(mm^3) | lt_mid_SN(mm^3) | lt_pos_SN(mm^3) | rt_SN(mm^3) | rt_ant_SN(mm^3) | rt_mid_SN(mm^3) | rt_pos_SN(mm^3) |
---|---|---|---|---|---|---|---|---|---|
sub_1 | 29.910278 | 293.009949 | 132.380676 | 104.685974 | 55.943298 | 304.087830 | 122.410583 | 106.347656 | 75.329590 |
sub_2 | 29.910278 | 293.009949 | 132.380676 | 104.685974 | 55.943298 | 304.087830 | 122.410583 | 106.347656 | 75.329590 |
sub_3 | 29.910278 | 293.009949 | 132.380676 | 104.685974 | 55.943298 | 304.087830 | 122.410583 | 106.347656 | 75.329590 |
ありがとうございます、大変参考になりました。
ご返信ありがとうございます。Neuromelanin-sensitive MRIから手動で作成されたVOIとのこと、承知しました。手動で作成されたという部分をより具体的にお教え頂きたいのですが、その際に使ったソフトウェア等についてはいかがでしょうか。
基本的には、MRIcron(https://www.nemotos.net/?p=4340)を使っております。
あるいは、ITK-SNAPを使います。
この二つが使えれば、困ることはないと思います。
1点、質問をさせて下さい。このページに記載のございます、VTA_mask.niiやlt_SN_mask.nii等のmask画像は、どのように準備されたのでしょうか。
ご質問ありがとうございます。
こちらは、手動で作成したものです。
具体的には、Neuromelanin-sensitive MRIから作成したVOIでございます。