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

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

【FSL】Atlas(アトラス)を1枚1枚はがして別々にする方法

f:id:AIProgrammer:20200501020347p:plain

目的

FSLを用いて、atlas(アトラス)のlabel(ラベル)を1枚1枚はがして別々にする。

例として、AAL atlasを用いる。

atlasの用意

今回のターゲットとなるatlasはAAL atlas。

1から116の画素値を持つ。 f:id:AIProgrammer:20200501020347p:plain

label listの作成

labelの番号(画素値)ごとの領域名を一列にしてテキストに保存する。

label_list.txt

AAL001_Precentral_L
AAL002_Precentral_R
AAL003_Frontal_Sup_L
AAL004_Frontal_Sup_R
AAL005_Frontal_Sup_Orb_L
AAL006_Frontal_Sup_Orb_R
AAL007_Frontal_Mid_L
AAL008_Frontal_Mid_R
AAL009_Frontal_Mid_Orb_L
AAL010_Frontal_Mid_Orb_R
AAL011_Frontal_Inf_Oper_L
AAL012_Frontal_Inf_Oper_R
AAL013_Frontal_Inf_Tri_L
AAL014_Frontal_Inf_Tri_R
AAL015_Frontal_Inf_Orb_L
AAL016_Frontal_Inf_Orb_R
AAL017_Rolandic_Oper_L
AAL018_Rolandic_Oper_R
AAL019_Supp_Motor_Area_L
AAL020_Supp_Motor_Area_R
AAL021_Olfactory_L
AAL022_Olfactory_R
AAL023_Frontal_Sup_Medial_L
AAL024_Frontal_Sup_Medial_R
AAL025_Frontal_Med_Orb_L
AAL026_Frontal_Med_Orb_R
AAL027_Rectus_L
AAL028_Rectus_R
AAL029_Insula_L
AAL030_Insula_R
AAL031_Cingulum_Ant_L
AAL032_Cingulum_Ant_R
AAL033_Cingulum_Mid_L
AAL034_Cingulum_Mid_R
AAL035_Cingulum_Post_L
AAL036_Cingulum_Post_R
AAL037_Hippocampus_L
AAL038_Hippocampus_R
AAL039_ParaHippocampal_L
AAL040_ParaHippocampal_R
AAL041_Amygdala_L
AAL042_Amygdala_R
AAL043_Calcarine_L
AAL044_Calcarine_R
AAL045_Cuneus_L
AAL046_Cuneus_R
AAL047_Lingual_L
AAL048_Lingual_R
AAL049_Occipital_Sup_L
AAL050_Occipital_Sup_R
AAL051_Occipital_Mid_L
AAL052_Occipital_Mid_R
AAL053_Occipital_Inf_L
AAL054_Occipital_Inf_R
AAL055_Fusiform_L
AAL056_Fusiform_R
AAL057_Postcentral_L
AAL058_Postcentral_R
AAL059_Parietal_Sup_L
AAL060_Parietal_Sup_R
AAL061_Parietal_Inf_L
AAL062_Parietal_Inf_R
AAL063_SupraMarginal_L
AAL064_SupraMarginal_R
AAL065_Angular_L
AAL066_Angular_R
AAL067_Precuneus_L
AAL068_Precuneus_R
AAL069_Paracentral_Lobule_L
AAL070_Paracentral_Lobule_R
AAL071_Caudate_L
AAL072_Caudate_R
AAL073_Putamen_L
AAL074_Putamen_R
AAL075_Pallidum_L
AAL076_Pallidum_R
AAL077_Thalamus_L
AAL078_Thalamus_R
AAL079_Heschl_L
AAL080_Heschl_R
AAL081_Temporal_Sup_L
AAL082_Temporal_Sup_R
AAL083_Temporal_Pole_Sup_L
AAL084_Temporal_Pole_Sup_R
AAL085_Temporal_Mid_L
AAL086_Temporal_Mid_R
AAL087_Temporal_Pole_Mid_L
AAL088_Temporal_Pole_Mid_R
AAL089_Temporal_Inf_L
AAL090_Temporal_Inf_R
AAL091_Cerebelum_Crus1_L
AAL092_Cerebelum_Crus1_R
AAL093_Cerebelum_Crus2_L
AAL094_Cerebelum_Crus2_R
AAL095_Cerebelum_3_L
AAL096_Cerebelum_3_R
AAL097_Cerebelum_4_5_L
AAL098_Cerebelum_4_5_R
AAL099_Cerebelum_6_L
AAL100_Cerebelum_6_R
AAL101_Cerebelum_7b_L
AAL102_Cerebelum_7b_R
AAL103_Cerebelum_8_L
AAL104_Cerebelum_8_R
AAL105_Cerebelum_9_L
AAL106_Cerebelum_9_R
AAL107_Cerebelum_10_L
AAL108_Cerebelum_10_R
AAL109_Vermis_1_2
AAL110_Vermis_3
AAL111_Vermis_4_5
AAL112_Vermis_6
AAL113_Vermis_7
AAL114_Vermis_8
AAL115_Vermis_9
AAL116_Vermis_10

フォルダ構造

AAL atlasを各被験者に位置合わせしてある。

この各被験者のAAL atlasを116個のlabelに分ける。

フォルダ構造は、以下のように、studyフォルダの中で被験者ごとにフォルダがありその中にターゲットであるAAL_labels.nii.gzが入っている。

先程作成したAAL atlasの各領域ごとのリスト(label_list.txt)は、親フォルダであるstudyにいれる。

study
├── label_list.txt
├── sub001
│   ├── AAL_labels.nii.gz
│   ├── bvals.bval
│   ├── bvecs.bvec
│   └── dwi.nii.gz
├── sub002
│   ├── AAL_labels.nii.gz
│   ├── bvals.bval
│   ├── bvecs.bvec
│   └── dwi.nii.gz
├── sub003
    ├── AAL_labels.nii.gz
    ├── bvals.bval
    ├── bvecs.bvec
    └── dwi.nii.gz

コード

以下のコードをstudyフォルダで実行すると各被験者ごとにAAL atlasのsplitが始まる。

FSLのfslmathsを使ってAAL atlasをはがしていく。

countを使うことで領域番号(画素値)の選択、for label in $(cat ../label_list.txt);doで出力ファイルの名前を制御。

#!/bin/sh

function split_label () {
count=0
for label in $(cat ../label_list.txt);do
count=$(( ${count} + 1))
fslmaths $1 -thr $count -uthr $count $label
done
}

atlas="AAL_labels.nii.gz"
for k in $(ls -F |grep / |cut -d / -f1);do
cd $k
echo $k
split_label $atlas
cd ..
done

結果

コードを実行後、各被験者フォルダの中身はこのようになっている。

sub001フォルダ

$ ls sub001
AAL001_Precentral_L.nii.gz          AAL062_Parietal_Inf_R.nii.gz
AAL002_Precentral_R.nii.gz          AAL063_SupraMarginal_L.nii.gz
AAL003_Frontal_Sup_L.nii.gz         AAL064_SupraMarginal_R.nii.gz
AAL004_Frontal_Sup_R.nii.gz         AAL065_Angular_L.nii.gz
AAL005_Frontal_Sup_Orb_L.nii.gz     AAL066_Angular_R.nii.gz
AAL006_Frontal_Sup_Orb_R.nii.gz     AAL067_Precuneus_L.nii.gz
AAL007_Frontal_Mid_L.nii.gz         AAL068_Precuneus_R.nii.gz
AAL008_Frontal_Mid_R.nii.gz         AAL069_Paracentral_Lobule_L.nii.gz
AAL009_Frontal_Mid_Orb_L.nii.gz     AAL070_Paracentral_Lobule_R.nii.gz
AAL010_Frontal_Mid_Orb_R.nii.gz     AAL071_Caudate_L.nii.gz
AAL011_Frontal_Inf_Oper_L.nii.gz    AAL072_Caudate_R.nii.gz
AAL012_Frontal_Inf_Oper_R.nii.gz    AAL073_Putamen_L.nii.gz
AAL013_Frontal_Inf_Tri_L.nii.gz     AAL074_Putamen_R.nii.gz
AAL014_Frontal_Inf_Tri_R.nii.gz     AAL075_Pallidum_L.nii.gz
AAL015_Frontal_Inf_Orb_L.nii.gz     AAL076_Pallidum_R.nii.gz
AAL016_Frontal_Inf_Orb_R.nii.gz     AAL077_Thalamus_L.nii.gz
AAL017_Rolandic_Oper_L.nii.gz       AAL078_Thalamus_R.nii.gz
AAL018_Rolandic_Oper_R.nii.gz       AAL079_Heschl_L.nii.gz
AAL019_Supp_Motor_Area_L.nii.gz     AAL080_Heschl_R.nii.gz
AAL020_Supp_Motor_Area_R.nii.gz     AAL081_Temporal_Sup_L.nii.gz
AAL021_Olfactory_L.nii.gz           AAL082_Temporal_Sup_R.nii.gz
AAL022_Olfactory_R.nii.gz           AAL083_Temporal_Pole_Sup_L.nii.gz
AAL023_Frontal_Sup_Medial_L.nii.gz  AAL084_Temporal_Pole_Sup_R.nii.gz
AAL024_Frontal_Sup_Medial_R.nii.gz  AAL085_Temporal_Mid_L.nii.gz
AAL025_Frontal_Med_Orb_L.nii.gz     AAL086_Temporal_Mid_R.nii.gz
AAL026_Frontal_Med_Orb_R.nii.gz     AAL087_Temporal_Pole_Mid_L.nii.gz
AAL027_Rectus_L.nii.gz              AAL088_Temporal_Pole_Mid_R.nii.gz
AAL028_Rectus_R.nii.gz              AAL089_Temporal_Inf_L.nii.gz
AAL029_Insula_L.nii.gz              AAL090_Temporal_Inf_R.nii.gz
AAL030_Insula_R.nii.gz              AAL091_Cerebelum_Crus1_L.nii.gz
AAL031_Cingulum_Ant_L.nii.gz        AAL092_Cerebelum_Crus1_R.nii.gz
AAL032_Cingulum_Ant_R.nii.gz        AAL093_Cerebelum_Crus2_L.nii.gz
AAL033_Cingulum_Mid_L.nii.gz        AAL094_Cerebelum_Crus2_R.nii.gz
AAL034_Cingulum_Mid_R.nii.gz        AAL095_Cerebelum_3_L.nii.gz
AAL035_Cingulum_Post_L.nii.gz       AAL096_Cerebelum_3_R.nii.gz
AAL036_Cingulum_Post_R.nii.gz       AAL097_Cerebelum_4_5_L.nii.gz
AAL037_Hippocampus_L.nii.gz         AAL098_Cerebelum_4_5_R.nii.gz
AAL038_Hippocampus_R.nii.gz         AAL099_Cerebelum_6_L.nii.gz
AAL039_ParaHippocampal_L.nii.gz     AAL100_Cerebelum_6_R.nii.gz
AAL040_ParaHippocampal_R.nii.gz     AAL101_Cerebelum_7b_L.nii.gz
AAL041_Amygdala_L.nii.gz            AAL102_Cerebelum_7b_R.nii.gz
AAL042_Amygdala_R.nii.gz            AAL103_Cerebelum_8_L.nii.gz
AAL043_Calcarine_L.nii.gz           AAL104_Cerebelum_8_R.nii.gz
AAL044_Calcarine_R.nii.gz           AAL105_Cerebelum_9_L.nii.gz
AAL045_Cuneus_L.nii.gz              AAL106_Cerebelum_9_R.nii.gz
AAL046_Cuneus_R.nii.gz              AAL107_Cerebelum_10_L.nii.gz
AAL047_Lingual_L.nii.gz             AAL108_Cerebelum_10_R.nii.gz
AAL048_Lingual_R.nii.gz             AAL109_Vermis_1_2.nii.gz
AAL049_Occipital_Sup_L.nii.gz       AAL110_Vermis_3.nii.gz
AAL050_Occipital_Sup_R.nii.gz       AAL111_Vermis_4_5.nii.gz
AAL051_Occipital_Mid_L.nii.gz       AAL112_Vermis_6.nii.gz
AAL052_Occipital_Mid_R.nii.gz       AAL113_Vermis_7.nii.gz
AAL053_Occipital_Inf_L.nii.gz       AAL114_Vermis_8.nii.gz
AAL054_Occipital_Inf_R.nii.gz       AAL115_Vermis_9.nii.gz
AAL055_Fusiform_L.nii.gz            AAL116_Vermis_10.nii.gz
AAL056_Fusiform_R.nii.gz            AAL117_PAG.nii.gz
AAL057_Postcentral_L.nii.gz         AAL_labels.nii.gz
AAL058_Postcentral_R.nii.gz         bvals.bval
AAL059_Parietal_Sup_L.nii.gz        bvecs.bvec
AAL060_Parietal_Sup_R.nii.gz        dwi.nii.gz
AAL061_Parietal_Inf_L.nii.gz       



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