ubuntu-drivers devices で “FileNotFoundError: [Errno 2] No such file or directory: ‘aplay'” が出たときの対処法

Ubuntuでグラフィックドライバを入れるときなど、ubuntu-driversが便利ですが、あるマシンでこんなエラーが出ました。

$ ubuntu-drivers devices
ERROR:root:could not open aplay -l
Traceback (most recent call last):
  File "/usr/share/ubuntu-drivers-common/detect/sl-modem.py", line 35, in detect
    aplay = subprocess.Popen(
  File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'aplay'

No such file or directory: ‘aplay’ と出ます。
これは何だろうなと思って調べたところ、Linuxのオーディオ入出力のALSAの音声再生コマンドであることがわかりました。

ALSAを入れれば問題ないだろうと思ったところ、解決しました。

sudo apt install alsa-base

これで ubuntu-drivers devices でエラーが出なくなりました。

Ubuntu への AnyDesk のインストール

AnyDeskはマルチプラットフォームで動作するリモートデスクトップアプリケーションです。動きがとても軽くて非常に使いやすいです。

本家サイトに ‘AnyDesk DEB repository how-to‘ が紹介されていますが、root で作業するように書かれています。

Ubuntuで普通のユーザーが使う時はちょっとだけ違う方がすんなりインストールできますので紹介します。

  • リポジトリキーを信頼するソフトウェア・プロバイダー・リストに登録する
wget -qO - https://keys.anydesk.com/repos/DEB-GPG-KEY | sudo apt-key add -
  • リポジトリを追加する
sudo sh -c 'echo "deb http://deb.anydesk.com/ all main" > /etc/apt/sources.list.d/anydesk-stable.list'
  • リポジトリを更新し、AnyDeskをインストールする
sudo apt update
sudo apt install anydesk
古着 TOMMY トミーヒルフィガー ポロシャツ ワンポイント ボーダー オレンジ ホワイト サイズ表記:S著 銀行振込をお受けできない商品になります■商品名: 2 大津光央 送料無料商品やセール商品も多数掲載中 大判プリンターOA用紙 CR-S64A2 重要 2-5営業日後の発送となります タマラナク 通販サイト ニ 委託先から直接手配となるため 著■フリガナ:サブマリン あなたの欲しい物がきっと見つかる マーケット 2本入 ポイントやクーポンをつかったお買い物もOK 送料について au ご注文下さいますようお願い致します その他取り扱いが異なる点がございますので 374円 支払い方法 コノ 当店のお買い物ガイド タイシヨウ■著者名:大津光央 本 ■ISBN:9784800271310 タカラジマシヤ ブンコ Item auコマース Search Shop 販売条件 人気のアイテムが大集合 ミス C?オ?7?1 ライフ株式会社が運営するネットショッピング Category 送料の重複はございません をよくご確認の上 16cmDORAMA 弊社取り扱い品と別便での発送となります クラウン 日時指定 ヨロシク 000万品以上の豊富な品ぞろえ A2 サブマリンによろしく 新品 PAY グツドバイ 著のお買いものならKDDI株式会社 著■出版年月:201705■出版社:宝島社■大きさ:391P 本商品は委託販売品となりスニーカー レディースシューズ レースアップ ローカット 靴 履きやすい フラットシューズ 即納 ホワイト(レッド)/23.0cm(36)大判プリンターOA用紙 auコマース 釣り糸 杭や桟橋などの障害物への接触などによる擦れに十分対応するA 強靱 号数:0.8号 0.8号 商品仕様 CR-S64A2 2 規格:80m単品 サイズ 高引張 ライフ株式会社が運営するネットショッピング PAY つり具 2本入 クラウン R 80m ハリスナチュラム商品番号1040816 禅 短ハリスはもちろん長ハリスでも 底釣り専用ハリス 送料無料商品やセール商品も多数掲載中 高比重素材採用により素早いタナ取りが可能となります 結節強度性能を兼ね備えた サンライン 商品説明 au 一覧 0.25号 0.35号 0.3号 0.4号 0.5号 0.6号 0.8号 ナチュラルクリア 〇 〇 〇 〇 〇 〇 〇 関連ワード釣り具 深宙 マーケット あなたの欲しい物がきっと見つかる 人気のアイテムが大集合 ナチュラルクリアのお買いものならKDDI株式会社 ナチュラルクリア ハリやサルカンとの結束部もスムーズで強力も安定 ビギナーからトーナメンターまで幅広い層の要望に応えます S加工採用 ヘラハリス カラー その他 釣具 898円 タモ枠との擦れ 000万品以上の豊富な品ぞろえ 早く系を張りたい方には必要不可欠なフロロへらハリスです A2 ハリス ポイントやクーポンをつかったお買い物もOK しなやかで取り扱いも良く 厳選素材フロロカーボン採用 タナがずれない 通販サイト トルネード鬼爆閃光 カローラ アクシオ前期 NZE/ZRE140系 [H18.10〜H20.9] LEDウインカー球 4個セット ACompatible DOT NC Factory Dust Driver 商品詳細をご確認くださいませ Direct 通販サイト 大判プリンターOA用紙 最寄りの営業所での受け取りをお願いする場合がございます A2 商品の発送前に念入りな検品を行っておりますが Duty その場合はお客様側で輸入業者へ輸入消費税のお支払いのご負担をお願いする場合がございます ポイントやクーポンをつかったお買い物もOK 販売行為までとなり FO2503344_15 商品ご到着より7日以内のみ保証対象とします 2015-2017 High SAE Fitment 17 Placement Does Part あなたの欲しい物がきっと見つかる ■商品説明文中に英語にて”保証”に関する記載があっても適応されませんので ■商品の配送方法や日時の指定頂けません MILLENNIUM Yes Package ■お届けまでには HeadLights 盗難等に関する一切責任は負いかねます Smoke Moisture Composite Brand: 2 お問い合わせ用アドレス Not ライフ株式会社が運営するネットショッピング or Color: その場合は 本商品の使用における怪我 また作業時間や難易度は個々の技量に左右されますのでお答え出来かねます ■取付並びにサポートは行なっておりません and ■商品購入後のお客様のご都合によるキャンセルはお断りしております 000万品以上の豊富な品ぞろえ 離島は省く Free For HeadLamps amp; Ford ■フィッテングや車検対応の有無については 60 保証対象外となります 9005 2〜3週間程頂いております set Headlights Warranty: 商品到着後は速やかに商品の確認をお願いいたします クラウン day CR-S64A2 Compliant: 37200円 Yes Bulb Black Lens Low defective on apply※以下の注意事項をご理解頂いた上で Side Return: 送料無料商品やセール商品も多数掲載中 Shipping 商品に小傷やスレなどがある場合がございます ■輸入品につき 接続コネクタが必ずしも一致するとは限らず ご不明点がございましたら 通関処理や天候次第で遅れが発生する場合もございます Beam Polycarbonate Headlight 加工が必要な場合もございます Right+Left ■大型商品に関しましては H11 運送状況による破損等がある場合がございますので 取り付け後は FO2502344 輸入消費税が課税される場合もございます Smoked ■商品名は英文を直訳で日本語に変換しております 会社や倉庫 Include: 商品の素材等につきましては マーケット Passenger items Attention: ショップに掲載されていない商品でもお探しする事が可能です F-150 Heaのお買いものならKDDI株式会社 Front Size: Vehicle: ただし ※北海道 16 NRでお願い致します damaged Right Other 基本的に画像と説明文よりお客様の方にてご判断をお願いしております auコマース Heavy Replacement Type: ■USパーツの輸入代行も行っておりますので au Type: For PAY ■他にもUSパーツを多数出品させて頂いておりますので Style: Return Number: HB3 Bulb FO2502335 Halogen Manufacturer ご理解ください ■商品の在庫は常に変動いたしております Protection: Bulb SAE w 同様のお時間をいただくことになりますのでご了承お願いいたします Headlight: 商品詳細輸入商品の為 Models ご覧頂けたらと思います Condition: not SUPPLY Certifications: ご購入下さい※■海外輸入品の為 New Housing Tinted Interchange 人気のアイテムが大集合 LED Factory 1000円 また業販や複数ご購入の場合 沖縄 事故 Apply Lens: ご購入いただいたタイミングと在庫状況にラグが生じる場合がございます ■商品の破損により再度お取り寄せとなった場合 pairカテゴリUSヘッドライト状態新品メーカー車種発送詳細送料一律 なお usdm.shop@gmail.com ■弊社の責任は 2016 FO2503335_2015 2017 Assembly Hea 2本入 割引の対応可能でございます Included UPC: Side 2015-2017フォードF-150スモークヘッドライトヘッドランプ右+左セットペア ■取扱い説明書などは基本的に同封されておりません お気軽にお問い合わせ下さい ご注文と同時に商品のお取り寄せが開始するため 英語表記となります USヘッドライト Left ご購入前にお問い合わせください 配送会社の規定により個人宅への配送が困難な場合がございます ■USパーツは国内の純正パーツを取り外した後Ibanez アイバニーズ EHB1505MS Pacific Blue Burst Flat S/N:I210316228 【5弦ベース】【マルチスケール】 【未展示品】2枚セット 製造:日本製 温かさが広がり赤くなっています  唐辛子と蓬の粒が体を暖める 皮膚からも吸収され熱くなります 熱さを発生させるのです ストレッチ性があるので動きやすい 立体編みなので 4290円 これが 男女兼用のお買いものならKDDI株式会社 サポーターを着用してから10分程経過すると 大判プリンターOA用紙 ■商品仕様 薄くて軽いので 脱いだ後も温かさが持続 ポイントやクーポンをつかったお買い物もOK 温恵 PAY 2 ライフ株式会社が運営するネットショッピング 大阪府立産業技術総合研究所調べ 000万品以上の豊富な品ぞろえ 体温と汗などの水分に反応し 人気のアイテムが大集合 膝サポーター 品質:絹80% 2本入 商品名:温恵 CR-S64A2 サポーターを外した後 伸縮性にも優れ関節部分にもジャストフィットします ナイロン15% サーモグラフィを見ると全体的に緑色に写っているのが分かります A2 おばあちゃんの知恵 お灸の原料ヨモギはミネラルを多く含み トウガラシと相乗で優しく温熱 おんけい 通販サイト 外出の時にも違和感がありません もぐさ クラウン auコマース 唐辛子の成分カプサイシンは マーケット あなたの欲しい物がきっと見つかる もぐさサポーターひざ用2枚セット ポリウレタン5% 約30分経過しても 粒を繊維の内側に粘着 au 膝の曲げ伸ばしに 装着前の腕が冷えた状態で 男女兼用 蓬を特殊加工で凝縮 唐辛子 送料無料商品やセール商品も多数掲載中 まだ温かさが持続しているlower suspension エスポンシンソントロールアーザンとハルポイントアンプリアリアリアー - オリジナルのタイトルを表示 サスペPU20393のお買いものならKDDI株式会社 auコマース 支払い メーカー品番 2 黄銅 195円 大判プリンターOA用紙 あなたの欲しい物がきっと見つかる 配送時期について詳細 ロットナンバー 213365757 測定器 商品コード:ED683693 商品代金の支払い時期や商品が配送される時期についての詳細情報 支払い 工具のイーデンキ PU20393 通販サイト 配送時期について マーケット クラウン 備考 厚み3mm以上の浴槽に取付可 材質: 人気のアイテムが大集合 PU20-393 完全防水タイプではありません ポイントやクーポンをつかったお買い物もOK au 000万品以上の豊富な品ぞろえ SANEI A2 バス用内締ヒートン ライフ株式会社が運営するネットショッピング 送料無料商品やセール商品も多数掲載中 商品説明 PAY 浴槽のゴム栓クサリと接続 CR-S64A2 2本入 三栄水栓製作所igcase iphone XR iPhone 10r アイフォーン エックスアール テン PC ハードケース 005988 ラブリー005988 ラブリー☆ をご希望の場合は スペック表 000万品以上の豊富な品ぞろえ エア ご了承下さい 配送時期について詳細 ロットナンバー 268676830 総合釣具販売フーガショップ2 定形外郵便での発送は 定形外郵便 ライフ株式会社が運営するネットショッピング 通販サイト CR-S64A2 A2 別途料金を頂きます #39;16 及び お譲りする商品は au 5.8R お待ち頂ける方は予約受付致します 定形外発送の商品数点をご希望の場合は マーケット 掲載写真は参考掲載です ≫≫ 商品代金の支払い時期や商品が配送される時期についての詳細情報 支払い 《お取り寄せ》商品に関しまして 送料が変更になる場合もございますのでご了承下さい は出来ませんので ¥500 ハンドルのお買いものならKDDI株式会社 ポイントやクーポンをつかったお買い物もOK ≪≪ 支払い 2本入 運送会社 水曜日以降の御注文は翌週金曜日に発送致します ご連絡下さい 注 火曜日までの御注文で今週金曜日に発送致します ≪パーツ≫ 1個につき お間違いのないようお願い致します また運送時点で事故があった場合は郵便局での保証はして頂けませんのでご注意下さい 運送での発送をお勧めします クラウン 人気のアイテムが大集合 大判プリンターOA用紙 あなたの欲しい物がきっと見つかる 1点のみです 本体価格には消費税は含まれておりません ハンドル 2 auコマース この商品は 上記タイトル記載商品 〔手数料込み ご心配な方は 着払い アルファス 〕にて発送させて頂きます PAY 代引 送料無料商品やセール商品も多数掲載中 ダイワ 配送時期について 4023円 祝祭日を除くCAMO プレミアム ブロードリーフXミリタリー ウッドランド 1.5mX3m PBLM1.5X3GB大判プリンターOA用紙 あなたの欲しい物がきっと見つかる 2 誰でも簡単に使えて ジョイント製造国日本雪国の必需品 蛇口をひねって調節してください 5m ライフ株式会社が運営するネットショッピング 打ち水効果で涼しくなります 耐候性にすぐれ 人気のアイテムが大集合 l返品不可l大研化成工業 ストッパー:ABSジョイント:ABS仕様片面穴タイプ水道ホース内径15〜18mmに適合穴ピッチ150mm付属品エンドストッパー 北海道 沖縄 サイズ60×5000×23mm個装サイズ:45×45×8cm重量3600g個装重量:4000g素材 A2 耐寒性 3215円 クラウン KUP-05S ■都市部で問題になったヒートアイランド現象の対策にも一役買います fk094igrjs ポイントやクーポンをつかったお買い物もOK 家庭用融雪プロテクター PAY 夏は玄関先や駐車場などの焼けた路面に使用すれば 送料無料商品やセール商品も多数掲載中 材質本体:PVC ■冬季以外や雪の降らない地域でも散水用にご利用いただけます 000万品以上の豊富な品ぞろえ 片面穴 離島へのお届けは別途送料を請求させていただきます KUP-05Sのお買いものならKDDI株式会社 通販サイト シーズン終了後は巻き取って片付けできます 2本入 CR-S64A2 後片付けも簡単 au 水道ホースに接続して散水することで雪を溶かす融雪ホースです 散水量は雪の量や場所により マーケット ■畑やお庭の水やりに auコマース【中古】 通常攻撃が全体攻撃で二回攻撃のお母さんは好きですか? 9 / KADOKAWA [文庫]【メール便送料無料】2 クセのない味と香りをわずかに加えています 使用上の注意 auコマース 大判プリンターOA用紙 グレープ風味 飲み込まないようにご注意ください 5ml×4個 使用方法 A2 のお買いものならKDDI株式会社 2本入 ブラッシングの向上につながります ファンタスティックなグレープの香り CR-S64A2 送料無料商品やセール商品も多数掲載中 染色後 水で軽くお口をすすぎます      クローバー ライフ株式会社が運営するネットショッピング マーケット あなたの欲しい物がきっと見つかる 歯の表面全体に塗りつけ 香料 PAY 飲みものではありません 赤く染まったところが au 数量別リンク 小さなお子様は 歯科専売 通販サイト もし衣服についた時は 食用青色1号 5ml ポイントやクーポンをつかったお買い物もOK 氷いちご風味 佐藤歯材 570円 000万品以上の豊富な品ぞろえ 人気のアイテムが大集合 ⇒ 歯科衛生士オススメ商品磨き残しがわかりやすく 水 使いやすいよう 歯や口唇に着色した余分な染色液を落とし易くしております 大人の指示のもとでご使用ください クラウン 歯垢染め出し液 すぐに水洗いや漂白してください フレッシュないちごの香りとほのかな甘みのマイルドタイプ 主成分 磨き残した歯垢のある部分です 綿棒等に液を数滴つけて 食用赤色104号 キシリトール

【Python】縦断データの可視化(プロット・箱ひげ図・バイオリン図・信頼区間・ヒストグラム)

【FSL】ROI(VOI)を用いた画像計測



1. 【T278】ポルテ [H24/8-][NCP141 / NSP140 / NSP141] カジュアルG ホワイト Bellezza ベレッツァ シートカバ
2. 計測コマンド
3. 複数人被験者がいる場合
3.1. フォルダ構造
3.2. ソースコード


1. 目的

  • 関心領域ROI(VOI)内の画像の定量値を計測

2. 計測コマンド

FSLのfslstatsを使う。
各オプションは、以下の通り。

  • -K: 関心領域ROI
  • -M: ROI内の平均値の算出
fslstats -K <ROI> <input> -M

3. 複数人被験者がいる場合

複数人の被験者がいる場合、以下のようなフォルダ構造にならって各被験者ごとにファイルを用意し、後述するソースコードを実行することで、すべての被験者の計測結果をresult_mapstats.csvにまとめてくれる。

3.1. フォルダ構造

data
├── sub001
│   ├── basalganglia_roi_in_qsm.nii.gz
│   └── qsm_map.nii.gz
├── sub002
│   ├── basalganglia_roi_in_qsm.nii.gz
│   └── qsm_map.nii.gz
└── sub003
    ├── basalganglia_roi_in_qsm.nii.gz
    └── qsm_map.nii.gz

3.2. ソースコード

すべての被験者のデータが入っている「data」フォルダと同じ階層で以下のコマンドを実行。

# define name
foldername="data"
map="std_qsm_map"
roi="basalganglia_roi_in_qsm"
# make ROI name file
for roiname in \
"Region" \
"Left-Thalamus-Proper" \
"Left-Caudate" \
"Left-Putamen" \
"Left-Pallidum" \
"Brain-Stem/4th/Ventricle" \
"Left-Hippocampus" \
"Left-Amygdala" \
"Left-Accumbens-area" \
"Right-Thalamus-Proper" \
"Right-Caudate" \
"Right-Putamen" \
"Right-Pallidum" \
"Right-Hippocampus" \
"Right-Amygdala" \
"Right-Accumbens-area"
do
echo $roiname >> tmp1
done
# segment basal ganglia and calc volume
cd $foldername
for k in *;do
echo "processing $k"
echo $k > ../tmp2  # make ID name file
# measure mean value from QSM map using basal ganglia ROI
fslstats -K $k/$roi $k/$map -M \
|grep -v missing >> ../tmp2
## save ID and volume ,and accumulate them in result_vol.csv
cat ../tmp2 > ../tmp3
paste ../tmp1 ../tmp3 > ../result_mapstats.csv
cat ../result_mapstats.csv > ../tmp1
# cd ..
done
cd ..
# remove temporaly files
rm tmp*

【FSL】TBSSで出た有意領域をマスクとして画像定量値を計測



1. CD / オリジナル・サウンドトラック / ジョジョ・ラビット オリジナル・サウンドトラック (解説歌詞対訳付)
2. ソースコード


1. 目的

2. ソースコード

TBSSの結果が格納されているフォルダ(「stats」フォルダ)で以下のコードを実行。
この例では、健常群と患者群の2群比較をした結果を用いている。

c1: 患者群 > 健常群
c2: 患者群 < 健常群
の片側検定の結果をまとめている。

手順は次の通りです。

  1. corrected p mapを0.95でしきい処理することで有意差のあった領域のマスクを作成
  2. 1.のマスクを用いて各被験者の画像定量値を計測
  3. skeletonisedされた画像(all_[map]skeletonised.nii.gz)とそうでない画像(all[map].nii.gz)のそれぞれを別々に計測
  4. 計測した結果をまとめる(c?_allmap.txt)
.nii.gz)
    # C1 (ASD>HC)
    fslstats -t all_${map}.nii.gz -k tbss${map}_tfce_corrp_tstat1_sigmask.nii.gz -M >> stats_sigmap/original_map/c1_${i}_${map}.txt
    # C2 (ASD<HC)
    fslstats -t all_${map}.nii.gz -k tbss${map}_tfce_corrp_tstat2_sigmask.nii.gz -M >> stats_sigmap/original_map/c2_${i}_${map}.txt
    # calc skeletonised map (all_[map]_skeletonised.nii.gz)
    # C1 (ASD>HC)
    fslstats -t all_${map}_skeletonised.nii.gz -k tbss${map}_tfce_corrp_tstat1_sigmask.nii.gz -M >> stats_sigmap/skeletonised_map/c1_${i}_${map}.txt
    # C2 (ASD<HC)
    fslstats -t all_${map}_skeletonised.nii.gz -k tbss${map}_tfce_corrp_tstat2_sigmask.nii.gz -M >> stats_sigmap/skeletonised_map/c2_${i}_${map}.txt
done
# summary result
paste stats_sigmap/original_map/c1_* > stats_sigmap/original_map/c1_allmap.txt
paste stats_sigmap/original_map/c2_* > stats_sigmap/original_map/c2_allmap.txt
paste stats_sigmap/skeletonised_map/c1_* > stats_sigmap/skeletonised_map/c1_allmap.txt
paste stats_sigmap/skeletonised_map/c2_* > stats_sigmap/skeletonised_map/c2_allmap.txt

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



1. 【新品】【本】明月記研究 記録と文学 8号(2003年12月) 明月記研究会/編
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> -str <structuresFile> -p <protocolsFolder> [options]
    xtract -bpx <bedpostX_dir> -out <outputDir> -species HUMAN [options]
    xtract -bpx <bedpostX_dir> -out <outputDir> -species MACAQUE [options]
    Compulsory arguments:
       -bpx <folder>                     Path to bedpostx folder
       -out <folder>                     Path to output folder
       And EITHER:
       -str <file>                       Structures file (format: <tractName> [samples=1], 1 means 1000, '#' to skip lines)
       -p   <folder>                     Protocols folder (all masks in same standard space)
       Or:
       -species <SPECIES>                One of HUMAN or MACAQUE
    Optional arguments:
       -stdwarp <std2diff> <diff2std>    Standard2diff and Diff2standard transforms (Default=bedpostx_dir/xfms/{standard2diff,diff2standard})
       -gpu                              Use GPU version
       -native                           Run tractography in native (diffusion) space
       -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)

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 -str T1_brain.nii.gz -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> [options]
    Compulsory arguments:
       -dir FOLDER                       Path to XTRACT output folder
    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
       -brain                            The brain image to use for the background overlay - must be in the same space as tracts.
                                         Default is the FSL_HCP065_FA map

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

xtract_viewer -dir XTRACT_output

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】FLICAを用いたマルチモーダル独立成分分析


1. オリムパス製絲(Olympus Thred) オリムパス 和柄の玉手箱 オリジナルキット めおと千鳥 PA-788 (1466240)
2. リポジトリ
3. 必要なデータ
4. 注意点
5. 実行
5.1. run_FLICA.m
6. 結果
6.1. index.html
6.2. コンポーネントごとの結果(All_in_one_page)
6.3. モダリティごとの結果(FA, MD, AD, RD, etc.)
7. GBSSへの適応
7.1. index.html
7.2. コンポーネントごとの結果(All_in_one_page)
7.3. モダリティごとの結果(FA, MD, AD, RD, etc.)


1. 目的

  • FLICAを用いた画像のマルチモーダル独立成分分析(ICA)

2. リポジトリ

FLICAに必要なスクリプトを次のコマンドで取得。今のところプライベートリポジトリにしています。ご興味のある方はコメントしてください。

git clone https://github.com/Hexans/FLICA_corrected.git

3. 必要なデータ

必要なデータは、モダリティごとに全ての被験者の画像がまとめられた4D画像である。例えば、次のようなファイルを用いる。

  • VBM: GM_mod_merg_s?.nii.gz
  • TBSS: all_??_skeletonised.nii.gz
  • FreeSurfer: ?h.thick.fsaverage.mgh and ?h.pial.area.fsaverage.mgh
  • etc.

さらに、共変量(年齢・疾患グループ・性別)との相関もみることができる。共変量ごとに1列に数値をまとめテキストファイル(.txt)として保存する。

  • 年齢: age.txt
  • 疾患グループ: group.txt
  • 性別: sex.txt

4. 注意点

NANボクセルがある場合、FLICA処理でエラーが発生する。

例えば、次のようなファイルがあったとする。

.
├── all_median_FA_skeletonised.nii.gz
├── all_median_ICVF_skeletonised.nii.gz
├── all_median_ISO_skeletonised.nii.gz
├── all_median_MD_skeletonised.nii.gz
├── all_median_MVF_skeletonised.nii.gz
└── all_median_OD_skeletonised.nii.gz

NANボクセルがあるかは、FSLのfslstatsで検出できる。-Mオプションは、non zeroボクセルにおける平均値を算出するオプションである。

Method:

fslstats <INPUT> -M

次のコマンドを実行することで、すべての画像に対して、NANボクセルがありなしをチェックする。

In:

for image in *nii.gz; do
    echo "${image} : $(fslstats $image -M)"
done

以上のコマンドを実行した例が、以下である。この場合、「all_median_ICVF_skeletonised.nii.gz」と「all_median_MVF_skeletonised.nii.gz」にNANボクセルが含まれていることが分かる。

Out:

all_median_FA_skeletonised.nii.gz : 0.157853
all_median_ICVF_skeletonised.nii.gz : -nan
all_median_ISO_skeletonised.nii.gz : 0.246872
all_median_MD_skeletonised.nii.gz : 1.141417
all_median_MVF_skeletonised.nii.gz : -nan
all_median_OD_skeletonised.nii.gz : 0.516476

NANボクセルをゼロに置換するには、FSLのfslmathsコマンドを用いる。

Method:

fslmaths <INPUT> -nan <OUTPUT>

すべての画像に対して、NANボクセルがある場合、0に置換する処理をするには、以下のコマンドを実行する。以下の処理が完了すると、「corrected_nan」フォルダに、NANボクセルが含まれない画像が保存される。

mkdir corrected_nan
for image in *nii.gz; do
    fslmaths $image -nan corrected_nan/${image}
done

NANボクセル補正後のデータに、NANが含まれていないかチェックするには、以下のコマンドを実行する。

In:

for image in $(ls corrected_nan); do
    echo "${image} : $(fslstats corrected_nan/$image -M)"
done

「all_median_ICVF_skeletonised.nii.gz」と「all_median_MVF_skeletonised.nii.gz」にあったNANボクセルが、解消されていることが分かる。

Out:

all_median_FA_skeletonised.nii.gz : 0.157853
all_median_ICVF_skeletonised.nii.gz : 0.422611
all_median_ISO_skeletonised.nii.gz : 0.246872
all_median_MD_skeletonised.nii.gz : 1.141417
all_median_MVF_skeletonised.nii.gz : 0.086699
all_median_OD_skeletonised.nii.gz : 0.516476

5. 実行

FLICAを実行するには、MATLABから次のコマンドを実行。

ICAのComponent数を被験者数の4分の1以下(Components < subjects/4)に設定し、Overfittingを避ける。また、被験者ごとのノイズ推定を省く(opts.lambda_dims = ”;)ことでもOverfittingを避けることができる。

5.1. run_FLICA.m

%% Set up:
addpath([getenv('FSLDIR') '/etc/matlab/'])
addpath('~/Documents/software/flica')
%% Load data
Yfiles = {'all_FA_skeletonised.nii.gz',
    'all_MD_skeletonised.nii.gz',
    'all_AD_skeletonised.nii.gz',
    'all_RD_skeletonised.nii.gz'};
% NOTE that these should be downsampled to around 20k voxels in the mask,
% per modality... hoping to increase this memory/cpu-related limitation.
[Y, fileinfo] = flica_load(Yfiles);
fileinfo.shortNames = {'FA', 'MD', 'AD', 'RD'};
%% Run FLICA
clear opts
opts.num_components = 5;
opts.maxits = 100;
% opts.lambda_dims = '';  # Reduce subject-noise estimation to avoid overfitting
Morig = flica(Y, opts);
[M, weights] = flica_reorder(Morig);
%% Save results
outdir = [pwd '/result/'];
mkdir(outdir)
flica_save_everything(outdir, M, fileinfo);
%% Produce correlation plots
clear des
des.Group = load('group.txt');
des.Age = load('age.txt');
des.Gender = load('gender.txt');
flica_posthoc_correlations(outdir, des);

実行が成功すると次のように画像を読み込み、計算が始まる。

Loading "all_FA_skeletonised.nii.gz"...
Converting back to single... Generating mask... Flattening data matrix... Freeing memory...
Loading "all_MD_skeletonised.nii.gz"...
Converting back to single... Generating mask... Flattening data matrix... Freeing memory...
Loading "all_AD_skeletonised.nii.gz"...
Converting back to single... Generating mask... Flattening data matrix... Freeing memory...
Loading "all_RD_skeletonised.nii.gz"...
Converting back to single... Generating mask... Flattening data matrix... Freeing memory...
Setup... doing PCA... more setup... done (0.72 sec)
Iteration 1... eta H W X.... lambda.... done updates (0.2 sec) F (0.061 sec)No previous lastF
Iteration 2... eta H W X.... lambda.... done updates (0.17 sec) F (0.029 sec), dF = 6.38536e+07
Iteration 3... eta H W X.... lambda.... done updates (0.16 sec) F (0.027 sec), dF = 21559.9
Iteration 4... eta H W X.... lambda.... done updates (0.13 sec) F (0.019 sec), dF = 253.743
...
Iteration 100... eta H W X.... lambda.... done updates (0.13 sec) F (0.019 sec), dF = 253.743

計算が終わったら、bashでƒƒflica_report.shを実行することで、HTML形式で結果をまとめることができる。まとめられた結果(HTML)を見るには「index.html」を開く。

flica_report.sh result  # 引数としてresultフォルダを指定

6. 結果

6.1. index.html

index.htmlの開くと次のようにFLICAの、まとめの結果を見ることができる。

6.2. コンポーネントごとの結果(All_in_one_page)

ICAの各Componentごとの結果は、index.htmlの「All_in_one_page」から確認することができる。

6.3. モダリティごとの結果(FA, MD, AD, RD, etc.)

モダリティごとの結果は、index.htmlの「モダリティ名」をクリックすることで確認できる。以下の図は、FAの結果である。

7. GBSSへの適応

GBSSの結果に対してもFLICAが使えるか、不明であったためできるか試してみた。

特に問題なく、使えそうな感じ。

7.1. index.html

7.2. コンポーネントごとの結果(All_in_one_page)

7.3. モダリティごとの結果(FA, MD, AD, RD, etc.)

【FSL】fslmathsの使ったROI解析


1. スパイダーマン Spiderman B6ノート MARVEL
2. fslmaths
2.1. binary maskを使う場合
2.2. index maskを使う場合
3. 使用例
3.1. フォルダ構造
3.2. コード
3.3. 結果


1. 目的

  • MRIデータをROIを用いて計測

2. fslmaths

fslmathsを使った(non zeroボクセルの)平均値および標準偏差の計算方法は次のとおり。

2.1. binary maskを使う場合

[preparation]として-k <binary mask>を指定

# 平均値
fslmaths -k <index mask> <input image> -M
# 標準偏差
fslmaths -k <index mask> <input image> -S

2.2. index maskを使う場合

maskの中には、1以上の離散値を持つ場合もある(例:前頭葉: 1, 側頭葉: 2, 頭頂葉: 3, 後頭葉: 4)。このようなmaskをFSLでは「index mask」と呼ぶ。
[preparation]として-K <index mask>を指定(ラージKであることに注意)。

# 平均値
fslmaths -K <index mask> <input image> -M
# 標準偏差
fslmaths -K <index mask> <input image> -S

3. 使用例

firstというディレクトリにfactor 1.0 ~ 2.0の範囲で0.2刻みでデータ収集し、1つのfactorには5種類の画像がある。

さらに、3種類のindex maskがある(20190616_${map}.nii.gz)。

新たにデータセットを用意する場合、

  • index maskは、「_${map}.nii.gz(map =T1, T2, PD)」の部分だけ揃える
  • 画像データは、「_${i}.nii(i =1, 2, 3, 4, 5))」の部分は揃える

3.1. フォルダ構造

first/
├── 1.0
│   ├── 20190616_135659WIPCS103DSyMRIs901a1009_1.nii
│   ├── 20190616_135659WIPCS103DSyMRIs901a1009_2.nii
│   ├── 20190616_135659WIPCS103DSyMRIs901a1009_3.nii
│   ├── 20190616_135659WIPCS103DSyMRIs901a1009_4.nii
│   └── 20190616_135659WIPCS103DSyMRIs901a1009_5.nii
├── 1.2
├── 1.4
...
└──2.0
20190616_T1.nii.gz
20190616_T2.nii.gz
20190616_PD.nii.gz

3.2. コード

以上の準備ができたら、以下のコマンドをfirstフォルダのあるディレクトリと同じ場所で実行する。

計測結果は、「temp」フォルダにまとめられ、最終的なまとめ結果は「temp/summary」にまとめられる。

mkdir -p temp temp/summary
for img in $(seq 1 5);do
    echo "Calc image$img ..."
    for i in $(ls first);do
        for map in T1 T2 PD;do
            echo ${map}_img${img}_${i} > temp/${map}_img${img}_${i}.txt
            fslstats -K *_${map}.nii.gz first/$i/*_${img}.nii -M >> temp/${map}_img${img}_${i}.txt
        done
    done
    # summary
    paste temp/T1_img${img}_*.txt > temp/summary/T1_img${img}.txt
    paste temp/T2_img${img}_*.txt > temp/summary/T2_img${img}.txt
    paste temp/PD_img${img}_*.txt > temp/summary/PD_img${img}.txt
done

3.3. 結果

「temp/summary」フォルダの中身を確認すると次のようなファイルが生成されている。

これらの結果は、各index maskおよび各factorにおける5種類の画像ごとに計測結果をまとめたものである。

$ ls temp/summary/
PD_img1.txt  PD_img4.txt  T1_img2.txt  T1_img5.txt  T2_img3.txt
PD_img2.txt  PD_img5.txt  T1_img3.txt  T2_img1.txt  T2_img4.txt
PD_img3.txt  T1_img1.txt  T1_img4.txt  T2_img2.txt  T2_img5.txt

「PD_img1.txt」の中身は次の通り。

PD_1_1.0	PD_1_1.2	PD_1_1.4	PD_1_1.6	PD_1_1.8	PD_1_10	PD_1_2.0	PD_1_2.2	PD_1_2.4	PD_1_2.6	PD_1_2.8	PD_1_3.0	PD_1_3.5	PD_1_4.0	PD_1_4.5	PD_1_5.0	PD_1_5.5	PD_1_6.0	PD_1_6.5	PD_1_7.0	PD_1_7.5	PD_1_8.0	PD_1_8.5	PD_1_9.0	PD_1_9.5
56.071172 	53.571421 	57.104340 	65.576766 	56.634142 	164.695774 	59.164714 	66.530548 	64.210779 	72.075169 	88.882530 	68.767341 	78.006755 	82.362270 	102.866073 	95.148962 	157.649307 	135.169850 		136.416867 	209.898826 	143.974304 	206.080797 	144.660493 	152.182925
59.219002 	59.634794 	67.469257 	57.990326 	68.822425 	135.478640 	61.384532 	70.464787 	71.207407 	73.836757 	85.293909 	69.715787 	85.544729 	98.812038 	120.032300 	113.378021 	137.899509 	162.424688 		186.341014 	182.449928 	168.822476 	226.915020 	168.971066 	156.942100
65.593938 	73.217330 	78.069650 	72.319718 	72.329499 	229.141061 	72.960663 	85.006750 	71.576984 	86.298830 	101.787668 	68.924592 	111.201372 	124.327963 	136.776286 	160.195031 	187.189908 	202.490824 		222.796888 	278.856697 	198.264230 	250.119406 	227.780093 	328.350670
60.599368 	73.082315 	75.607594 	78.199978 	77.303263 	264.188672 	82.484480 	87.064013 	90.335936 	86.806134 	99.869636 	91.716010 	100.842814 	124.390488 	152.835757 	158.187163 	190.057344 	231.426025 		255.339445 	233.320259 	210.198541 	268.658566 	277.634037 	304.397152
62.596507 	73.224809 	73.435417 	74.447392 	82.949692 	200.789283 	95.077401 	76.603784 	91.650407 	86.794202 	97.143067 	96.004177 	91.693638 	114.771571 	147.396567 	128.985783 	156.368281 	180.671239 		219.410221 	212.203824 	191.402947 	209.449536 	208.555533 	208.911982
70.904297 	74.822798 	82.031894 	81.959065 	81.159454 	204.884733 	84.416149 	84.009042 	105.231751 	102.618848 	109.251246 	87.436376 	87.707241 	103.725383 	124.369558 	148.823854 	178.081095 	170.385173 		216.685645 	324.138544 	221.210790 	270.552265 	221.176516 	209.839571
73.786061 	76.172245 	78.538106 	88.747996 	75.945391 	210.691364 	96.988982 	93.988295 	92.378013 	94.479654 	102.801537 	105.931549 	100.643631 	119.402497 	133.575660 	158.669452 	168.026760 	208.149685 		216.036306 	200.196084 	221.846031 	254.239667 	222.523944 	208.206735
87.495523 	88.813652 	87.880272 	85.964579 	98.281155 	349.093039 	98.692713 	94.235417 	101.215252 	112.179749 	109.359223 	92.050666 	103.862347 	126.171527 	137.595066 	170.217829 	185.742386 	242.152668 		271.305374 	222.041778 	273.485643 	306.670516 	315.758490 	264.002075
98.739737 	100.720432 	97.328787 	99.053358 	97.533872 	316.762011 	103.369259 	113.277178 	99.181052 	109.115135 	118.181639 	109.618875 	118.613545 	125.297607 	148.418087 	162.936641 	185.542536 	241.243367 		219.280341 	239.735891 	205.617819 	270.702777 	229.903270 	235.547812
103.277802 	106.846910 	104.091932 	106.542414 	102.750478 	207.280336 	102.150977 	113.678573 	109.015869 	102.060726 	112.479080 	106.674224 	115.947559 	116.607501 	144.210974 	143.748899 	149.864118 	209.414898 		207.632018 	212.082947 	221.947801 	243.473957 	262.798043 	187.095868
126.149411 	128.146098 	123.403289 	129.219018 	120.576404 	307.939330 	127.342593 	130.534624 	136.748147 	135.015205 	130.025685 	127.302044 	129.562001 	181.892504 	175.129838 	214.058127 	226.497845 	261.011736 		293.147569 	369.290946 	318.991315 	334.730611 	391.036790 	375.232291
142.132261 	136.881755 	140.397574 	139.790297 	137.662219 	372.306719 	144.546539 	141.836003 	157.273254 	146.306116 	172.242885 	156.343952 	157.901801 	186.644997 	198.501073 	221.079046 	239.737134 	273.049238 		337.570792 	359.821785 	327.865160 	385.884041 	403.470958 	392.444883
153.414811 	149.560298 	153.284503 	153.066674 	161.247593 	389.665428 	167.865698 	162.732419 	163.929323 	170.265862 	175.904991 	159.839045 	172.798252 	191.501041 	201.477961 	243.534578 	247.816996 	296.709427 		355.380479 	385.017319 	365.828550 	409.998897 	380.333908 	410.494708
123.627007 	125.429929 	125.827541 	128.563233 	124.580074 	305.157273 	133.259714 	136.405932 	140.542948 	138.670648 	136.025625 	134.278958 	149.233630 	156.115582 	180.495762 	207.980796 	201.333914 	247.976671 		304.193507 	306.642640 	293.506436 	327.611026 	335.249888 	354.644789

これをエクセルに貼り付けると、次のようになる。行はindex maskのindexに対応し、列は各factorに対応する。factorのネーミングの仕方が悪く「PD_1_10」が6列目に出てきてしまっていることに注意。

PD_1_1.0 PD_1_1.2 PD_1_1.4 PD_1_1.6 PD_1_1.8 PD_1_10 PD_1_2.0 PD_1_2.2 PD_1_2.4 PD_1_2.6 PD_1_2.8 PD_1_3.0 PD_1_3.5 PD_1_4.0 PD_1_4.5 PD_1_5.0 PD_1_5.5 PD_1_6.0 PD_1_6.5 PD_1_7.0 PD_1_7.5 PD_1_8.0 PD_1_8.5 PD_1_9.0 PD_1_9.5
56.07117 53.57142 57.10434 65.57677 56.63414 164.6958 59.16471 66.53055 64.21078 72.07517 88.88253 68.76734 78.00676 82.36227 102.8661 95.14896 157.6493 135.1699 102.8661 136.4169 209.8988 143.9743 206.0808 144.6605 152.1829
59.219 59.63479 67.46926 57.99033 68.82243 135.4786 61.38453 70.46479 71.20741 73.83676 85.29391 69.71579 85.54473 98.81204 120.0323 113.378 137.8995 162.4247 120.0323 186.341 182.4499 168.8225 226.915 168.9711 156.9421
65.59394 73.21733 78.06965 72.31972 72.3295 229.1411 72.96066 85.00675 71.57698 86.29883 101.7877 68.92459 111.2014 124.328 136.7763 160.195 187.1899 202.4908 136.7763 222.7969 278.8567 198.2642 250.1194 227.7801 328.3507
60.59937 73.08232 75.60759 78.19998 77.30326 264.1887 82.48448 87.06401 90.33594 86.80613 99.86964 91.71601 100.8428 124.3905 152.8358 158.1872 190.0573 231.426 152.8358 255.3394 233.3203 210.1985 268.6586 277.634 304.3972
62.59651 73.22481 73.43542 74.44739 82.94969 200.7893 95.0774 76.60378 91.65041 86.7942 97.14307 96.00418 91.69364 114.7716 147.3966 128.9858 156.3683 180.6712 147.3966 219.4102 212.2038 191.4029 209.4495 208.5555 208.912
70.9043 74.8228 82.03189 81.95907 81.15945 204.8847 84.41615 84.00904 105.2318 102.6188 109.2512 87.43638 87.70724 103.7254 124.3696 148.8239 178.0811 170.3852 124.3696 216.6856 324.1385 221.2108 270.5523 221.1765 209.8396
73.78606 76.17225 78.53811 88.748 75.94539 210.6914 96.98898 93.9883 92.37801 94.47965 102.8015 105.9315 100.6436 119.4025 133.5757 158.6695 168.0268 208.1497 133.5757 216.0363 200.1961 221.846 254.2397 222.5239 208.2067
87.49552 88.81365 87.88027 85.96458 98.28116 349.093 98.69271 94.23542 101.2153 112.1797 109.3592 92.05067 103.8623 126.1715 137.5951 170.2178 185.7424 242.1527 137.5951 271.3054 222.0418 273.4856 306.6705 315.7585 264.0021
98.73974 100.7204 97.32879 99.05336 97.53387 316.762 103.3693 113.2772 99.18105 109.1151 118.1816 109.6189 118.6135 125.2976 148.4181 162.9366 185.5425 241.2434 148.4181 219.2803 239.7359 205.6178 270.7028 229.9033 235.5478
103.2778 106.8469 104.0919 106.5424 102.7505 207.2803 102.151 113.6786 109.0159 102.0607 112.4791 106.6742 115.9476 116.6075 144.211 143.7489 149.8641 209.4149 144.211 207.632 212.0829 221.9478 243.474 262.798 187.0959
126.1494 128.1461 123.4033 129.219 120.5764 307.9393 127.3426 130.5346 136.7481 135.0152 130.0257 127.302 129.562 181.8925 175.1298 214.0581 226.4978 261.0117 175.1298 293.1476 369.2909 318.9913 334.7306 391.0368 375.2323
142.1323 136.8818 140.3976 139.7903 137.6622 372.3067 144.5465 141.836 157.2733 146.3061 172.2429 156.344 157.9018 186.645 198.5011 221.079 239.7371 273.0492 198.5011 337.5708 359.8218 327.8652 385.884 403.471 392.4449
153.4148 149.5603 153.2845 153.0667 161.2476 389.6654 167.8657 162.7324 163.9293 170.2659 175.905 159.839 172.7983 191.501 201.478 243.5346 247.817 296.7094 201.478 355.3805 385.0173 365.8286 409.9989 380.3339 410.4947
123.627 125.4299 125.8275 128.5632 124.5801 305.1573 133.2597 136.4059 140.5429 138.6706 136.0256 134.279 149.2336 156.1156 180.4958 207.9808 201.3339 247.9767 180.4958 304.1935 306.6426 293.5064 327.611 335.2499 354.6448

【FSL】MRI画像のレジストレーション(Registration)と関心領域(ROI)解析



1. Hynix original 128?GB ( 4?x 32gbSupermicro用サーバーメモリアップグレー(新古未使用品)
2. JHU White-matter labels & tractography atlasでROI解析する方法
2.1. ディレクトリ構造
2.2. 実行方法
2.3. ソースコード
3. Desikan Killiany AtlasでROI解析する方法
3.1. 前提条件
3.2. ディレクトリ構造
3.3. 実行方法
3.4. ソースコード
4. FreeSurferのwm.seg.nii.gzをDWI空間に位置合わせする方法
4.1. 必要なファイル
4.2. ソースコード
5. 標準空間にあるROIを各被験者脳に位置合わせ
6. bertのwmparcをMNI空間に移動後、個人脳(Perfusion image)にレジストレーション


1. 目的

  • JHU White-matter labels & tractography atlasでROI解析する方法
  • Desikan Killiany AtlasでROI解析
  • FreeSurferのwm.seg.nii.gzをDWI空間に位置合わせする方法

2. JHU White-matter labels & tractography atlasでROI解析する方法

標準空間(template (standard) space)にあるJHU-ICBM-labels-1mm.nii.gz、JHU-ICBM-tracts-maxprob-thr25-1mm.nii.gz をDWI空間に位置合わせしてROI解析するスクリプト。

2.1. ディレクトリ構造

最低限 FA.nii.gz は用意。

SUBJ1/
 + map/
    + FA.nii.gz
    + MD.nii.gz
    + AD.nii.gz
       :
SUBJ2/
 + map/
    + FA.nii.gz
    + MD.nii.gz
    + AD.nii.gz
       :

2.2. 実行方法

cd SUBJ1
bash ../reg_FMRIB_to_FA.sh

2.3. ソースコード

function reg_FMRIB-Atlas_to_FA () {
    flirt -in map/FA -ref ${FSLDIR}/data/standard/FMRIB58_FA_1mm -omat FA_to_FMRIB.mat
    fnirt --in=map/FA --aff=FA_to_FMRIB.mat --config=FA_2_FMRIB58_1mm --cout=warp_FA_to_FMRIB
    invwarp -w warp_FA_to_FMRIB -o warp_FMRIB_to_FA -r map/FA
    applywarp --in=${FSLDIR}/data/atlases/JHU/JHU-ICBM-labels-1mm --ref=map/FA --warp=warp_FMRIB_to_FA --interp=nn --out=JHU-ICBM-labels_to_FA
    applywarp --in=${FSLDIR}/data/atlases/JHU/JHU-ICBM-tracts-maxprob-thr25-1mm --ref=map/FA --warp=warp_FMRIB_to_FA --interp=nn --out=JHU-ICBM-tracts-maxprob-thr25_to_FA
}
function split_JHU-ICBM-labels () {
    OUT_DIR=mask/JHU-ICBM-labels
    mkdir -p ${OUT_DIR}
    fslmaths JHU-ICBM-labels_to_FA -thr  1 -uthr  1 ${OUT_DIR}/01_Middle-cerebellar-peduncle
    fslmaths JHU-ICBM-labels_to_FA -thr  2 -uthr  2 ${OUT_DIR}/02_Pontine-crossing-tract
    fslmaths JHU-ICBM-labels_to_FA -thr  3 -uthr  3 ${OUT_DIR}/03_Genu-of-corpus-callosum
    fslmaths JHU-ICBM-labels_to_FA -thr  4 -uthr  4 ${OUT_DIR}/04_Body-of-corpus-callosum
    fslmaths JHU-ICBM-labels_to_FA -thr  5 -uthr  5 ${OUT_DIR}/05_Splenium-of-corpus-callosum
    fslmaths JHU-ICBM-labels_to_FA -thr  6 -uthr  6 ${OUT_DIR}/06_Fornix
    fslmaths JHU-ICBM-labels_to_FA -thr  7 -uthr  7 ${OUT_DIR}/07_Corticospinal-tract_R
    fslmaths JHU-ICBM-labels_to_FA -thr  8 -uthr  8 ${OUT_DIR}/08_Corticospinal-tract_L
    fslmaths JHU-ICBM-labels_to_FA -thr  9 -uthr  9 ${OUT_DIR}/09_Medial-lemniscus_R
    fslmaths JHU-ICBM-labels_to_FA -thr 10 -uthr 10 ${OUT_DIR}/10_Medial-lemniscus_L
    fslmaths JHU-ICBM-labels_to_FA -thr 11 -uthr 11 ${OUT_DIR}/11_Inferior-cerebellar-peduncle_R
    fslmaths JHU-ICBM-labels_to_FA -thr 12 -uthr 12 ${OUT_DIR}/12_Inferior-cerebellar-peduncle_L
    fslmaths JHU-ICBM-labels_to_FA -thr 13 -uthr 13 ${OUT_DIR}/13_Superior-cerebellar-peduncle_R
    fslmaths JHU-ICBM-labels_to_FA -thr 14 -uthr 14 ${OUT_DIR}/14_Superior-cerebellar-peduncle_L
    fslmaths JHU-ICBM-labels_to_FA -thr 15 -uthr 15 ${OUT_DIR}/15_Cerebral-peduncle_R
    fslmaths JHU-ICBM-labels_to_FA -thr 16 -uthr 16 ${OUT_DIR}/16_Cerebral-peduncle_L
    fslmaths JHU-ICBM-labels_to_FA -thr 17 -uthr 17 ${OUT_DIR}/17_Anterior-limb-of-internal-capsule_R
    fslmaths JHU-ICBM-labels_to_FA -thr 18 -uthr 18 ${OUT_DIR}/18_Anterior-limb-of-internal-capsule_L
    fslmaths JHU-ICBM-labels_to_FA -thr 19 -uthr 19 ${OUT_DIR}/19_Posterior-limb-of-internal-capsule_R
    fslmaths JHU-ICBM-labels_to_FA -thr 20 -uthr 20 ${OUT_DIR}/20_Posterior-limb-of-internal-capsule_L
    fslmaths JHU-ICBM-labels_to_FA -thr 21 -uthr 21 ${OUT_DIR}/21_Retrolenticular-part-of-internal-capsule_R
    fslmaths JHU-ICBM-labels_to_FA -thr 22 -uthr 22 ${OUT_DIR}/22_Retrolenticular-part-of-internal-capsule_L
    fslmaths JHU-ICBM-labels_to_FA -thr 23 -uthr 23 ${OUT_DIR}/23_Anterior-corona-radiata_R
    fslmaths JHU-ICBM-labels_to_FA -thr 24 -uthr 24 ${OUT_DIR}/24_Anterior-corona-radiata_L
    fslmaths JHU-ICBM-labels_to_FA -thr 25 -uthr 25 ${OUT_DIR}/25_Superior-corona-radiata_R
    fslmaths JHU-ICBM-labels_to_FA -thr 26 -uthr 26 ${OUT_DIR}/26_Superior-corona-radiata_L
    fslmaths JHU-ICBM-labels_to_FA -thr 27 -uthr 27 ${OUT_DIR}/27_Posterior-corona-radiata_R
    fslmaths JHU-ICBM-labels_to_FA -thr 28 -uthr 28 ${OUT_DIR}/28_Posterior-corona-radiata_L
    fslmaths JHU-ICBM-labels_to_FA -thr 29 -uthr 29 ${OUT_DIR}/29_Posterior-thalamic-radiation_R
    fslmaths JHU-ICBM-labels_to_FA -thr 30 -uthr 30 ${OUT_DIR}/30_Posterior-thalamic-radiation_L
    fslmaths JHU-ICBM-labels_to_FA -thr 31 -uthr 31 ${OUT_DIR}/31_Sagittal-stratum_R
    fslmaths JHU-ICBM-labels_to_FA -thr 32 -uthr 32 ${OUT_DIR}/32_Sagittal-stratum_L
    fslmaths JHU-ICBM-labels_to_FA -thr 33 -uthr 33 ${OUT_DIR}/33_External-capsule_R
    fslmaths JHU-ICBM-labels_to_FA -thr 34 -uthr 34 ${OUT_DIR}/34_External-capsule_L
    fslmaths JHU-ICBM-labels_to_FA -thr 35 -uthr 35 ${OUT_DIR}/35_Cingulum-cingulate-gyrus_R
    fslmaths JHU-ICBM-labels_to_FA -thr 36 -uthr 36 ${OUT_DIR}/36_Cingulum-cingulate-gyrus_L
    fslmaths JHU-ICBM-labels_to_FA -thr 37 -uthr 37 ${OUT_DIR}/37_Cingulum-hippocampus_R
    fslmaths JHU-ICBM-labels_to_FA -thr 38 -uthr 38 ${OUT_DIR}/38_Cingulum-hippocampus_L
    fslmaths JHU-ICBM-labels_to_FA -thr 39 -uthr 39 ${OUT_DIR}/39_Fornix-Stria-terminalis_R
    fslmaths JHU-ICBM-labels_to_FA -thr 40 -uthr 40 ${OUT_DIR}/40_Fornix-Stria-terminalis_L
    fslmaths JHU-ICBM-labels_to_FA -thr 41 -uthr 41 ${OUT_DIR}/41_Superior-longitudinal-fasciculus_R
    fslmaths JHU-ICBM-labels_to_FA -thr 42 -uthr 42 ${OUT_DIR}/42_Superior-longitudinal-fasciculus_L
    fslmaths JHU-ICBM-labels_to_FA -thr 43 -uthr 43 ${OUT_DIR}/43_Superior-fronto-occipital-fasciculus_R
    fslmaths JHU-ICBM-labels_to_FA -thr 44 -uthr 44 ${OUT_DIR}/44_Superior-fronto-occipital-fasciculus_L
    fslmaths JHU-ICBM-labels_to_FA -thr 45 -uthr 45 ${OUT_DIR}/45_Uncinate-fasciculus_R
    fslmaths JHU-ICBM-labels_to_FA -thr 46 -uthr 46 ${OUT_DIR}/46_Uncinate-fasciculus_L
    fslmaths JHU-ICBM-labels_to_FA -thr 47 -uthr 47 ${OUT_DIR}/47_Tapetum_R
    fslmaths JHU-ICBM-labels_to_FA -thr 48 -uthr 48 ${OUT_DIR}/48_Tapetum_L
    fsladd ${OUT_DIR}/51_Corticospinal-tract ${OUT_DIR}/07_Corticospinal-tract_R ${OUT_DIR}/08_Corticospinal-tract_L > /dev/null
    fsladd ${OUT_DIR}/52_Medial-lemniscus ${OUT_DIR}/09_Medial-lemniscus_R ${OUT_DIR}/10_Medial-lemniscus_L > /dev/null
    fsladd ${OUT_DIR}/53_Inferior-cerebellar-peduncle ${OUT_DIR}/11_Inferior-cerebellar-peduncle_R ${OUT_DIR}/12_Inferior-cerebellar-peduncle_L > /dev/null
    fsladd ${OUT_DIR}/54_Superior-cerebellar-peduncle ${OUT_DIR}/13_Superior-cerebellar-peduncle_R ${OUT_DIR}/14_Superior-cerebellar-peduncle_L > /dev/null
    fsladd ${OUT_DIR}/55_Cerebral-peduncle ${OUT_DIR}/15_Cerebral-peduncle_R ${OUT_DIR}/16_Cerebral-peduncle_L > /dev/null
    fsladd ${OUT_DIR}/56_Anterior-limb-of-internal-capsule ${OUT_DIR}/17_Anterior-limb-of-internal-capsule_R ${OUT_DIR}/18_Anterior-limb-of-internal-capsule_L > /dev/null
    fsladd ${OUT_DIR}/57_Posterior-limb-of-internal-capsule ${OUT_DIR}/19_Posterior-limb-of-internal-capsule_R ${OUT_DIR}/20_Posterior-limb-of-internal-capsule_L > /dev/null
    fsladd ${OUT_DIR}/58_Retrolenticular-part-of-internal-capsule ${OUT_DIR}/21_Retrolenticular-part-of-internal-capsule_R ${OUT_DIR}/22_Retrolenticular-part-of-internal-capsule_L > /dev/null
    fsladd ${OUT_DIR}/59_Anterior-corona-radiata ${OUT_DIR}/23_Anterior-corona-radiata_R ${OUT_DIR}/24_Anterior-corona-radiata_L > /dev/null
    fsladd ${OUT_DIR}/60_Superior-corona-radiata ${OUT_DIR}/25_Superior-corona-radiata_R ${OUT_DIR}/26_Superior-corona-radiata_L > /dev/null
    fsladd ${OUT_DIR}/61_Posterior-corona-radiata ${OUT_DIR}/27_Posterior-corona-radiata_R ${OUT_DIR}/28_Posterior-corona-radiata_L > /dev/null
    fsladd ${OUT_DIR}/62_Posterior-thalamic-radiation ${OUT_DIR}/29_Posterior-thalamic-radiation_R ${OUT_DIR}/30_Posterior-thalamic-radiation_L > /dev/null
    fsladd ${OUT_DIR}/63_Sagittal-stratum ${OUT_DIR}/31_Sagittal-stratum_R ${OUT_DIR}/32_Sagittal-stratum_L > /dev/null
    fsladd ${OUT_DIR}/64_External-capsule ${OUT_DIR}/33_External-capsule_R ${OUT_DIR}/34_External-capsule_L > /dev/null
    fsladd ${OUT_DIR}/65_Cingulum-cingulate-gyrus ${OUT_DIR}/35_Cingulum-cingulate-gyrus_R ${OUT_DIR}/36_Cingulum-cingulate-gyrus_L > /dev/null
    fsladd ${OUT_DIR}/66_Cingulum-hippocampus ${OUT_DIR}/37_Cingulum-hippocampus_R ${OUT_DIR}/38_Cingulum-hippocampus_L > /dev/null
    fsladd ${OUT_DIR}/67_Fornix-Stria-terminalis ${OUT_DIR}/39_Fornix-Stria-terminalis_R ${OUT_DIR}/40_Fornix-Stria-terminalis_L > /dev/null
    fsladd ${OUT_DIR}/68_Superior-longitudinal-fasciculus ${OUT_DIR}/41_Superior-longitudinal-fasciculus_R ${OUT_DIR}/42_Superior-longitudinal-fasciculus_L > /dev/null
    fsladd ${OUT_DIR}/69_Superior-fronto-occipital-fasciculus ${OUT_DIR}/43_Superior-fronto-occipital-fasciculus_R ${OUT_DIR}/44_Superior-fronto-occipital-fasciculus_L > /dev/null
    fsladd ${OUT_DIR}/70_Uncinate-fasciculus ${OUT_DIR}/45_Uncinate-fasciculus_R ${OUT_DIR}/46_Uncinate-fasciculus_L > /dev/null
    fsladd ${OUT_DIR}/71_Tapetum ${OUT_DIR}/47_Tapetum_R ${OUT_DIR}/48_Tapetum_L > /dev/null
    fsladd ${OUT_DIR}/81_Corpus-callosum ${OUT_DIR}/03_Genu-of-corpus-callosum ${OUT_DIR}/04_Body-of-corpus-callosum ${OUT_DIR}/05_Splenium-of-corpus-callosum > /dev/null
    fsladd ${OUT_DIR}/82_Internal-capsule ${OUT_DIR}/56_Anterior-limb-of-internal-capsule ${OUT_DIR}/57_Posterior-limb-of-internal-capsule ${OUT_DIR}/58_Retrolenticular-part-of-internal-capsule > /dev/null
    fsladd ${OUT_DIR}/83_Corona-radiata ${OUT_DIR}/59_Anterior-corona-radiata ${OUT_DIR}/60_Superior-corona-radiata ${OUT_DIR}/61_Posterior-corona-radiata > /dev/null
}
function split_JHU-ICBM-tracts-maxprob-thr25 () {
    OUT_DIR=mask/JHU-ICBM-tracts-maxprob-thr25
    mkdir -p ${OUT_DIR}
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr  1 -uthr  1 ${OUT_DIR}/01_Anterior-thalamic_Radiation_L
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr  2 -uthr  2 ${OUT_DIR}/02_Anterior-thalamic_Radiation_R
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr  3 -uthr  3 ${OUT_DIR}/03_Corticospinal-tract_L
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr  4 -uthr  4 ${OUT_DIR}/04_Corticospinal-tract_R
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr  5 -uthr  5 ${OUT_DIR}/05_Cingulum-cingulate-gyrus_L
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr  6 -uthr  6 ${OUT_DIR}/06_Cingulum-cingulate-gyrus_R
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr  7 -uthr  7 ${OUT_DIR}/07_Cingulum-hippocampus_L
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr  8 -uthr  8 ${OUT_DIR}/08_Cingulum-hippocampus_R
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr  9 -uthr  9 ${OUT_DIR}/09_Forceps-major
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 10 -uthr 10 ${OUT_DIR}/10_Forceps-minor
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 11 -uthr 11 ${OUT_DIR}/11_Inferior-fronto-occipital-fasciculus_L
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 12 -uthr 12 ${OUT_DIR}/12_Inferior-fronto-occipital-fasciculus_R
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 13 -uthr 13 ${OUT_DIR}/13_Inferior_Longitudinal-fasciculus_L
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 14 -uthr 14 ${OUT_DIR}/14_Inferior_Longitudinal-fasciculus_R
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 15 -uthr 15 ${OUT_DIR}/15_Superior_Longitudinal-fasciculus_L
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 16 -uthr 16 ${OUT_DIR}/16_Superior_Longitudinal-fasciculus_R
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 17 -uthr 17 ${OUT_DIR}/17_Uncinate-fasciculus_L
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 18 -uthr 18 ${OUT_DIR}/18_Uncinate-fasciculus_R
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 19 -uthr 19 ${OUT_DIR}/19_Superior_Longitudinal-fasciculus-temporal-part_L
    fslmaths JHU-ICBM-tracts-maxprob-thr25_to_FA -thr 20 -uthr 20 ${OUT_DIR}/20_Superior_Longitudinal-fasciculus-temporal-part_R
    fsladd ${OUT_DIR}/21_Anterior-thalamic_Radiation ${OUT_DIR}/01_Anterior-thalamic_Radiation_L ${OUT_DIR}/02_Anterior-thalamic_Radiation_R > /dev/null
    fsladd ${OUT_DIR}/22_Corticospinal-tract ${OUT_DIR}/03_Corticospinal-tract_L ${OUT_DIR}/04_Corticospinal-tract_R > /dev/null
    fsladd ${OUT_DIR}/23_Cingulum-cingulate-gyrus ${OUT_DIR}/05_Cingulum-cingulate-gyrus_L ${OUT_DIR}/06_Cingulum-cingulate-gyrus_R > /dev/null
    fsladd ${OUT_DIR}/24_Cingulum-hippocampus ${OUT_DIR}/07_Cingulum-hippocampus_L ${OUT_DIR}/08_Cingulum-hippocampus_R > /dev/null
    fsladd ${OUT_DIR}/25_Forceps ${OUT_DIR}/09_Forceps-major ${OUT_DIR}/10_Forceps-minor > /dev/null
    fsladd ${OUT_DIR}/26_Inferior-fronto-occipital-fasciculus ${OUT_DIR}/11_Inferior-fronto-occipital-fasciculus_L ${OUT_DIR}/12_Inferior-fronto-occipital-fasciculus_R > /dev/null
    fsladd ${OUT_DIR}/27_Inferior_Longitudinal-fasciculus ${OUT_DIR}/13_Inferior_Longitudinal-fasciculus_L ${OUT_DIR}/14_Inferior_Longitudinal-fasciculus_R > /dev/null
    fsladd ${OUT_DIR}/28_Superior_Longitudinal-fasciculus ${OUT_DIR}/15_Superior_Longitudinal-fasciculus_L ${OUT_DIR}/16_Superior_Longitudinal-fasciculus_R > /dev/null
    fsladd ${OUT_DIR}/29_Uncinate-fasciculus ${OUT_DIR}/17_Uncinate-fasciculus_L ${OUT_DIR}/18_Uncinate-fasciculus_R > /dev/null
    fsladd ${OUT_DIR}/30_Superior_Longitudinal-fasciculus-temporal-part ${OUT_DIR}/19_Superior_Longitudinal-fasciculus-temporal-part_L ${OUT_DIR}/20_Superior_Longitudinal-fasciculus-temporal-part_R > /dev/null
}
function output_results () {
    [[ -d results ]] && \rm -rf results
    mkdir -p results
    for MAP in $(\ls -1 map/*.nii.gz | xargs -i basename -s ".nii.gz" {}); do
        for MASK in $(\ls -1 mask/JHU-ICBM-labels/*.nii.gz); do
            fslstats map/${MAP} -k ${MASK} -M >> results/JHU-ICBM-labels_${MAP}_mean.txt &
            fslstats map/${MAP} -k ${MASK} -S >> results/JHU-ICBM-labels_${MAP}_sd.txt &
            wait
        done
    done
    for MAP in $(\ls -1 map/*.nii.gz | xargs -i basename -s ".nii.gz" {}); do
        for MASK in $(\ls -1 mask/JHU-ICBM-tracts-maxprob-thr25/*.nii.gz); do
            fslstats map/${MAP} -k ${MASK} -M >> results/JHU-ICBM-tracts-maxprob-thr25_${MAP}_mean.txt &
            fslstats map/${MAP} -k ${MASK} -S >> results/JHU-ICBM-tracts-maxprob-thr25_${MAP}_sd.txt &
            wait
        done
    done
}
reg_FMRIB-Atlas_to_FA
split_JHU-ICBM-labels
split_JHU-ICBM-tracts-maxprob-thr25
output_results

結果のまとめ方

ls |grep -v temp_ID|tr "\n" "\t" | sed -e 's/^/\t/' | sed -e 's/$/\n/'> temp_ID
ls $(ls |head -n 1)/mask/JHU-ICBM-labels > temp_labels_name
ls $(ls |head -n 1)/mask/JHU-ICBM-tracts-maxprob-thr25 > temp_tracts_name
paste temp_labels_name */results/JHU-ICBM-labels_FA_mean.txt > temp_labels_value
paste temp_tracts_name */results/JHU-ICBM-tracts-maxprob-thr25_FA_mean.txt > temp_tracts_value
cat temp_ID temp_labels_value > labels_result.csv
cat temp_ID temp_tracts_value > tracts_result.csv
rm temp*

根本先生の解説

斎藤先生の紹介してくれたところを見てくださったらと思うのですが、ポイントは、FSLでは、

invwarp

というコマンドがあるんですね。
この inv は、inverse で、普段の warp は 患者空間 → MNI空間であるものを、invwarp は、MNI空間 → 患者空間に戻します。

じゃ、最初の 患者空間 → MNI空間のパラメータをどうとるのかというところになるわけですが、斎藤先生のスクリプトの2行が肝になります。

flirt -in map/FA -ref ${FSLDIR}/data/standard/FMRIB58_FA_1mm -omat FA_to_FMRIB.mat

これは、患者のFA画像 (map/FA) を入力として、MNI空間に線形変換をし、パラメータを FA_to_FMRIB.mat で出力します。

fnirt --in=map/FA --aff=FA_to_FMRIB.mat --config=FA_2_FMRIB58_1mm --cout=warp_FA_to_FMRIB

こちらは、入力は同じですが、先程得られた線形変換のパラメータも利用し、
FSLでもともと準備されているFA画像をMNI空間に非線形変換するのに適した設定 (FA_2_FMRIB58_1mm) を利用して
非線形変換を行い、その変換に必要なパラメータを warp_FA_to_FMRIB として出力します。
なので、出力されるものは画像ではなく、変形パラメータになります。

そして、

invwarp -w warp_FA_to_FMRIB -o warp_FMRIB_to_FA -r map/FA

で、非線形変換で得られた warp_FA_to_FMRIB の逆変換を計算して、warp_FMRIB_to_FA として保存します。

そして、最後に、

applywarp --in=${FSLDIR}/data/atlases/JHU/JHU-ICBM-labels-1mm --ref=map/FA --warp=warp_FMRIB_to_FA --interp=nn --out=JHU-ICBM-labels_to_FA
applywarp --in=${FSLDIR}/data/atlases/JHU/JHU-ICBM-tracts-maxprob-thr25-1mm --ref=map/FA --warp=warp_FMRIB_to_FA --interp=nn --out=JHU-ICBM-tracts-maxprob-thr25_to_FA

で、2つのアトラス (JHU-ICBM-labels-1mm と JHU-ICBM-tracts-maxprob-thr25-1mm) に対して、その逆変換したパラメータをあてて、患者空間の(患者用の)アトラスを作成しています。
その後、各アトラスの個々の領域の値を求めています。

3. Desikan Killiany AtlasでROI解析する方法

T1WI空間にあるDesikan Killiany AtlasをDWI空間に位置合わせをしてROI解析するスクリプト。

3.1. 前提条件

「/opt/mrtrix3/share/mrtrix3/labelconvert/fs_default.txt」がある前提で走ります。

3.2. ディレクトリ構造

ディレクトリ構造は次の通り。

SUBJ_N
├── 3DT1.nii.gz
├── aparc+aseg.mgz ... FreeSurfer output
├── b0.nii.gz      ... b0 (ex: `fslroi eddy_result b0 0 1`)
├── wm.seg.mgz     ... FreeSurfer output
└── map
   ├── FA.nii.gz
   ├── MD.nii.gz
   └── uFA.nii.gz
$ ls -1
this_script.sh
SUBJ_1
SUBJ_2
SUBJ_3

3.3. 実行方法

$ cd SUBJ_1
$ bash ../this_script.sh

3.4. ソースコード

#!/bin/bash
# SUBJ_N
# ├── 3DT1.nii.gz
# ├── aparc+aseg.mgz ... FreeSurfer output
# ├── b0.nii.gz      ... b0 (ex: `fslroi eddy_result b0 0 1`)
# ├── wm.seg.mgz     ... FreeSurfer output
# └── map
#     ├── FA.nii.gz
#     ├── MD.nii.gz
#     └── uFA.nii.gz
#
# $ ls -1
# this_script.sh
# SUBJ_1
# SUBJ_2
# SUBJ_3
#  :
# $ cd SUBJ_1
# $ bash ../this_script.sh
function create_nodes () {
    mkdir -p mask/DK
    fslreorient2std 3DT1 T1
    bet T1 T1_brain -B -f 0.1
    mri_label2vol --temp T1.nii.gz --seg aparc+aseg.mgz --regheader aparc+aseg.mgz --o aparc+aseg.nii.gz
    labelconvert aparc+aseg.nii.gz ${FREESURFER_HOME}/FreeSurferColorLUT.txt /opt/mrtrix3/share/mrtrix3/labelconvert/fs_default.txt nodes.nii.gz
    labelsgmfix nodes.nii.gz T1_brain.nii.gz /opt/mrtrix3/share/mrtrix3/labelconvert/fs_default.txt mask/nodes_sgmfixed.nii.gz -premasked
}
function split_nodes () {
    fslmaths mask/nodes_sgmfixed -thr  1 -uthr  1 mask/DK/01-lh-bankssts
    fslmaths mask/nodes_sgmfixed -thr  2 -uthr  2 mask/DK/02-lh-caudalanteriorcingulate
    fslmaths mask/nodes_sgmfixed -thr  3 -uthr  3 mask/DK/03-lh-caudalmiddlefrontal
    fslmaths mask/nodes_sgmfixed -thr  4 -uthr  4 mask/DK/04-lh-cuneus
    fslmaths mask/nodes_sgmfixed -thr  5 -uthr  5 mask/DK/05-lh-entorhinal
    fslmaths mask/nodes_sgmfixed -thr  6 -uthr  6 mask/DK/06-lh-fusiform
    fslmaths mask/nodes_sgmfixed -thr  7 -uthr  7 mask/DK/07-lh-inferiorparietal
    fslmaths mask/nodes_sgmfixed -thr  8 -uthr  8 mask/DK/08-lh-inferiortemporal
    fslmaths mask/nodes_sgmfixed -thr  9 -uthr  9 mask/DK/09-lh-isthmuscingulate
    fslmaths mask/nodes_sgmfixed -thr 10 -uthr 10 mask/DK/10-lh-lateraloccipital
    fslmaths mask/nodes_sgmfixed -thr 11 -uthr 11 mask/DK/11-lh-lateralorbitofrontal
    fslmaths mask/nodes_sgmfixed -thr 12 -uthr 12 mask/DK/12-lh-lingual
    fslmaths mask/nodes_sgmfixed -thr 13 -uthr 13 mask/DK/13-lh-medialorbitofrontal
    fslmaths mask/nodes_sgmfixed -thr 14 -uthr 14 mask/DK/14-lh-middletemporal
    fslmaths mask/nodes_sgmfixed -thr 15 -uthr 15 mask/DK/15-lh-parahippocampal
    fslmaths mask/nodes_sgmfixed -thr 16 -uthr 16 mask/DK/16-lh-paracentral
    fslmaths mask/nodes_sgmfixed -thr 17 -uthr 17 mask/DK/17-lh-parsopercularis
    fslmaths mask/nodes_sgmfixed -thr 18 -uthr 18 mask/DK/18-lh-parsorbitalis
    fslmaths mask/nodes_sgmfixed -thr 19 -uthr 19 mask/DK/19-lh-parstriangularis
    fslmaths mask/nodes_sgmfixed -thr 20 -uthr 20 mask/DK/20-lh-pericalcarine
    fslmaths mask/nodes_sgmfixed -thr 21 -uthr 21 mask/DK/21-lh-postcentral
    fslmaths mask/nodes_sgmfixed -thr 22 -uthr 22 mask/DK/22-lh-posteriorcingulate
    fslmaths mask/nodes_sgmfixed -thr 23 -uthr 23 mask/DK/23-lh-precentral
    fslmaths mask/nodes_sgmfixed -thr 24 -uthr 24 mask/DK/24-lh-precuneus
    fslmaths mask/nodes_sgmfixed -thr 25 -uthr 25 mask/DK/25-lh-rostralanteriorcingulate
    fslmaths mask/nodes_sgmfixed -thr 26 -uthr 26 mask/DK/26-lh-rostralmiddlefrontal
    fslmaths mask/nodes_sgmfixed -thr 27 -uthr 27 mask/DK/27-lh-superiorfrontal
    fslmaths mask/nodes_sgmfixed -thr 28 -uthr 28 mask/DK/28-lh-superiorparietal
    fslmaths mask/nodes_sgmfixed -thr 29 -uthr 29 mask/DK/29-lh-superiortemporal
    fslmaths mask/nodes_sgmfixed -thr 30 -uthr 30 mask/DK/30-lh-supramarginal
    fslmaths mask/nodes_sgmfixed -thr 31 -uthr 31 mask/DK/31-lh-frontalpole
    fslmaths mask/nodes_sgmfixed -thr 32 -uthr 32 mask/DK/32-lh-temporalpole
    fslmaths mask/nodes_sgmfixed -thr 33 -uthr 33 mask/DK/33-lh-transversetemporal
    fslmaths mask/nodes_sgmfixed -thr 34 -uthr 34 mask/DK/34-lh-insula
    fslmaths mask/nodes_sgmfixed -thr 35 -uthr 35 mask/DK/35-Left-Cerebellum-Cortex
    fslmaths mask/nodes_sgmfixed -thr 36 -uthr 36 mask/DK/36-Left-Thalamus-Proper
    fslmaths mask/nodes_sgmfixed -thr 37 -uthr 37 mask/DK/37-Left-Caudate
    fslmaths mask/nodes_sgmfixed -thr 38 -uthr 38 mask/DK/38-Left-Putamen
    fslmaths mask/nodes_sgmfixed -thr 39 -uthr 39 mask/DK/39-Left-Pallidum
    fslmaths mask/nodes_sgmfixed -thr 40 -uthr 40 mask/DK/40-Left-Hippocampus
    fslmaths mask/nodes_sgmfixed -thr 41 -uthr 41 mask/DK/41-Left-Amygdala
    fslmaths mask/nodes_sgmfixed -thr 42 -uthr 42 mask/DK/42-Left-Accumbens-area
    fslmaths mask/nodes_sgmfixed -thr 43 -uthr 43 mask/DK/43-Right-Thalamus-Proper
    fslmaths mask/nodes_sgmfixed -thr 44 -uthr 44 mask/DK/44-Right-Caudate
    fslmaths mask/nodes_sgmfixed -thr 45 -uthr 45 mask/DK/45-Right-Putamen
    fslmaths mask/nodes_sgmfixed -thr 46 -uthr 46 mask/DK/46-Right-Pallidum
    fslmaths mask/nodes_sgmfixed -thr 47 -uthr 47 mask/DK/47-Right-Hippocampus
    fslmaths mask/nodes_sgmfixed -thr 48 -uthr 48 mask/DK/48-Right-Amygdala
    fslmaths mask/nodes_sgmfixed -thr 49 -uthr 49 mask/DK/49-Right-Accumbens-area
    fslmaths mask/nodes_sgmfixed -thr 50 -uthr 50 mask/DK/50-rh-bankssts
    fslmaths mask/nodes_sgmfixed -thr 51 -uthr 51 mask/DK/51-rh-caudalanteriorcingulate
    fslmaths mask/nodes_sgmfixed -thr 52 -uthr 52 mask/DK/52-rh-caudalmiddlefrontal
    fslmaths mask/nodes_sgmfixed -thr 53 -uthr 53 mask/DK/53-rh-cuneus
    fslmaths mask/nodes_sgmfixed -thr 54 -uthr 54 mask/DK/54-rh-entorhinal
    fslmaths mask/nodes_sgmfixed -thr 55 -uthr 55 mask/DK/55-rh-fusiform
    fslmaths mask/nodes_sgmfixed -thr 56 -uthr 56 mask/DK/56-rh-inferiorparietal
    fslmaths mask/nodes_sgmfixed -thr 57 -uthr 57 mask/DK/57-rh-inferiortemporal
    fslmaths mask/nodes_sgmfixed -thr 58 -uthr 58 mask/DK/58-rh-isthmuscingulate
    fslmaths mask/nodes_sgmfixed -thr 59 -uthr 59 mask/DK/59-rh-lateraloccipital
    fslmaths mask/nodes_sgmfixed -thr 60 -uthr 60 mask/DK/60-rh-lateralorbitofrontal
    fslmaths mask/nodes_sgmfixed -thr 61 -uthr 61 mask/DK/61-rh-lingual
    fslmaths mask/nodes_sgmfixed -thr 62 -uthr 62 mask/DK/62-rh-medialorbitofrontal
    fslmaths mask/nodes_sgmfixed -thr 63 -uthr 63 mask/DK/63-rh-middletemporal
    fslmaths mask/nodes_sgmfixed -thr 64 -uthr 64 mask/DK/64-rh-parahippocampal
    fslmaths mask/nodes_sgmfixed -thr 65 -uthr 65 mask/DK/65-rh-paracentral
    fslmaths mask/nodes_sgmfixed -thr 66 -uthr 66 mask/DK/66-rh-parsopercularis
    fslmaths mask/nodes_sgmfixed -thr 67 -uthr 67 mask/DK/67-rh-parsorbitalis
    fslmaths mask/nodes_sgmfixed -thr 68 -uthr 68 mask/DK/68-rh-parstriangularis
    fslmaths mask/nodes_sgmfixed -thr 69 -uthr 69 mask/DK/69-rh-pericalcarine
    fslmaths mask/nodes_sgmfixed -thr 70 -uthr 70 mask/DK/70-rh-postcentral
    fslmaths mask/nodes_sgmfixed -thr 71 -uthr 71 mask/DK/71-rh-posteriorcingulate
    fslmaths mask/nodes_sgmfixed -thr 72 -uthr 72 mask/DK/72-rh-precentral
    fslmaths mask/nodes_sgmfixed -thr 73 -uthr 73 mask/DK/73-rh-precuneus
    fslmaths mask/nodes_sgmfixed -thr 74 -uthr 74 mask/DK/74-rh-rostralanteriorcingulate
    fslmaths mask/nodes_sgmfixed -thr 75 -uthr 75 mask/DK/75-rh-rostralmiddlefrontal
    fslmaths mask/nodes_sgmfixed -thr 76 -uthr 76 mask/DK/76-rh-superiorfrontal
    fslmaths mask/nodes_sgmfixed -thr 77 -uthr 77 mask/DK/77-rh-superiorparietal
    fslmaths mask/nodes_sgmfixed -thr 78 -uthr 78 mask/DK/78-rh-superiortemporal
    fslmaths mask/nodes_sgmfixed -thr 79 -uthr 79 mask/DK/79-rh-supramarginal
    fslmaths mask/nodes_sgmfixed -thr 80 -uthr 80 mask/DK/80-rh-frontalpole
    fslmaths mask/nodes_sgmfixed -thr 81 -uthr 81 mask/DK/81-rh-temporalpole
    fslmaths mask/nodes_sgmfixed -thr 82 -uthr 82 mask/DK/82-rh-transversetemporal
    fslmaths mask/nodes_sgmfixed -thr 83 -uthr 83 mask/DK/83-rh-insula
    fslmaths mask/nodes_sgmfixed -thr 84 -uthr 84 mask/DK/84-Right-Cerebellum-Cortex
}
function conbine_region () {
    #
    # Whole brain
    #
    fsladd mask/wholebrain $(imglob mask/DK/*)
    #
    # Cortical
    #
    # Frontal
    fsladd mask/cortical-frontal \
        mask/DK/27-lh-superiorfrontal \
        mask/DK/76-rh-superiorfrontal \
        mask/DK/26-lh-rostralmiddlefrontal \
        mask/DK/75-rh-rostralmiddlefrontal \
        mask/DK/03-lh-caudalmiddlefrontal \
        mask/DK/52-rh-caudalmiddlefrontal \
        mask/DK/17-lh-parsopercularis \
        mask/DK/66-rh-parsopercularis \
        mask/DK/18-lh-parsorbitalis \
        mask/DK/67-rh-parsorbitalis \
        mask/DK/19-lh-parstriangularis \
        mask/DK/68-rh-parstriangularis \
        mask/DK/11-lh-lateralorbitofrontal \
        mask/DK/13-lh-medialorbitofrontal \
        mask/DK/60-rh-lateralorbitofrontal \
        mask/DK/62-rh-medialorbitofrontal \
        mask/DK/23-lh-precentral \
        mask/DK/72-rh-precentral \
        mask/DK/16-lh-paracentral \
        mask/DK/65-rh-paracentral \
        mask/DK/31-lh-frontalpole \
        mask/DK/80-rh-frontalpole
    # Parietal
    fsladd mask/cortical-parietal \
        mask/DK/28-lh-superiorparietal \
        mask/DK/77-rh-superiorparietal \
        mask/DK/07-lh-inferiorparietal \
        mask/DK/56-rh-inferiorparietal \
        mask/DK/30-lh-supramarginal \
        mask/DK/79-rh-supramarginal \
        mask/DK/21-lh-postcentral \
        mask/DK/70-rh-postcentral \
        mask/DK/24-lh-precuneus \
        mask/DK/73-rh-precuneus
    # Temporal
    fsladd mask/cortical-temporal \
        mask/DK/29-lh-superiortemporal \
        mask/DK/78-rh-superiortemporal \
        mask/DK/14-lh-middletemporal \
        mask/DK/63-rh-middletemporal \
        mask/DK/08-lh-inferiortemporal \
        mask/DK/57-rh-inferiortemporal \
        mask/DK/01-lh-bankssts \
        mask/DK/50-rh-bankssts \
        mask/DK/06-lh-fusiform \
        mask/DK/55-rh-fusiform \
        mask/DK/33-lh-transversetemporal \
        mask/DK/82-rh-transversetemporal \
        mask/DK/05-lh-entorhinal \
        mask/DK/54-rh-entorhinal \
        mask/DK/32-lh-temporalpole \
        mask/DK/81-rh-temporalpole \
        mask/DK/15-lh-parahippocampal \
        mask/DK/64-rh-parahippocampal
    # Occipital
    fsladd mask/cortical-occipital \
        mask/DK/10-lh-lateraloccipital \
        mask/DK/59-rh-lateraloccipital \
        mask/DK/12-lh-lingual \
        mask/DK/61-rh-lingual \
        mask/DK/04-lh-cuneus \
        mask/DK/53-rh-cuneus \
        mask/DK/20-lh-pericalcarine \
        mask/DK/69-rh-pericalcarine
    # Cingulate
    fsladd mask/cortical-cingulate \
        mask/DK/25-lh-rostralanteriorcingulate \
        mask/DK/74-rh-rostralanteriorcingulate \
        mask/DK/02-lh-caudalanteriorcingulate \
        mask/DK/51-rh-caudalanteriorcingulate \
        mask/DK/22-lh-posteriorcingulate \
        mask/DK/71-rh-posteriorcingulate \
        mask/DK/09-lh-isthmuscingulate \
        mask/DK/58-rh-isthmuscingulate
    # Cortical
    fsladd mask/cortical \
        mask/cortical-frontal \
        mask/cortical-parietal \
        mask/cortical-temporal \
        mask/cortical-occipital \
        mask/cortical-cingulate
    #
    # Subcortical
    #
    fsladd mask/subcortical \
        mask/DK/36-Left-Thalamus-Proper \
        mask/DK/37-Left-Caudate \
        mask/DK/38-Left-Putamen \
        mask/DK/39-Left-Pallidum \
        mask/DK/42-Left-Accumbens-area \
        mask/DK/43-Right-Thalamus-Proper \
        mask/DK/44-Right-Caudate \
        mask/DK/45-Right-Putamen \
        mask/DK/46-Right-Pallidum \
        mask/DK/49-Right-Accumbens-area
    #
    # Gray matter
    #
    fsladd mask/graymatter mask/cortical mask/subcortical
    #
    # White matter
    #
    mri_label2vol --temp T1.nii.gz --seg wm.seg.mgz --regheader wm.seg.mgz --o wm.seg.nii.gz
    fslmaths wm.seg -bin mask/whitematter
}
function reg_maps_to_T1 () {
    bet b0 b0_brain -f 0.1 -m
    epi_reg --epi=b0_brain --t1=T1 --t1brain=T1_brain --out=BBR_DWI-to-T1
    for map in $(imglob map/* | sed "s|map/||g" | tr " " "\n"); do
        flirt -in map/${map} -ref T1 -out ${map}_T1 -init BBR_DWI-to-T1.mat -applyxfm
    done
}
function out_results () {
    [[ -d results ]] && rm -fr results
    mkdir results
    for map in $(imglob map/* | sed "s|map/||g" | tr " " "\n"); do
        for mask in $(imglob mask/DK/*); do
            fslstats ${map}_T1 -k ${mask} -M >> results/DK_${map}_mean.txt &
            fslstats ${map}_T1 -k ${mask} -S >> results/DK_${map}_sd.txt &
            wait
        done
        for mask in wholebrain graymatter whitematter cortical subcortical \
                    cortical-frontal cortical-parietal cortical-temporal cortical-occipital cortical-cingulate; do
            fslstats ${map}_T1 -k mask/${mask} -M >> results/DK_${map}_mean.txt &
            fslstats ${map}_T1 -k mask/${mask} -S >> results/DK_${map}_sd.txt &
            wait
        done
    done
}
create_nodes
split_nodes
conbine_region
reg_maps_to_T1
out_results

4. FreeSurferのwm.seg.nii.gzをDWI空間に位置合わせする方法

T1WI空間にあるFreeSurferのwm.seg.nii.gzををDWI空間に位置合わせするスクリプト。

4.1. 必要なファイル

  • dwi.nii.gz (DWI 画像)
  • orig.mgz (T1 画像; T1空間)
  • wm.seg.mgz (White matter ラベル; T1空間)

4.2. ソースコード

# mgz を nii.gz に変換
mrconvert orig.mgz orig.nii.gz
mrconvert wm.seg.mgz wm.seg.nii.gz
fslmaths wm.seg.nii.gz -bin wm.seg.nii.gz
# reorient
fslreorient2std dwi.nii.gz dwi.nii.gz
fslreorient2std orig.nii.gz orig.nii.gz
fslreorient2std wm.seg.nii.gz wm.seg.nii.gz
# epi_reg で DWI→T1 の変換行列を計算し、逆行列 (T1→DWI) も計算
bet orig.nii.gz orig_brain.nii.gz -f 0.1 -B -m
fslroi dwi.nii.gz b0.nii.gz 0 1
epi_reg --epi=b0.nii.gz --t1=orig.nii.gz --t1brain=orig_brain.nii.gz --out=DWI_to_T1
convert_xfm -omat T1_to_DWI.mat -inverse DWI_to_T1.mat
# White matter ラベルを DWI 空間に移動
flirt -in wm.seg.nii.gz -ref b0.nii.gz -out wm.nii.gz -init T1_to_DWI.mat -applyxfm -interp nearestneighbour
# 確認
freeview dwi.nii.gz wm.nii.gz:colormap=jet

5. 標準空間にあるROIを各被験者脳に位置合わせ

# required files
## T1_brain.nii.gz                  : BET T1WI
## T1.nii.gz                        : T1WI
## nodif_brain.nii.gz               : b0 image
## MNI152_T1_1mm_brain.nii.gz       : template image
## SN_labels_LR.nii.gz              : subsegmented mask
# Register SN-labels to Subject space
## MNI to T1WI
flirt -in T1_brain -ref ../MNI152_T1_1mm_brain -omat SubT1_to_MNI.mat
# fnirt --ref=../MNI152_T1_1mm_brain --in=T1_brain --aff=SubT1_to_MNI.mat --config=T1_2_MNI152_2mm --cout=warp_SubT1_to_MNI
fnirt --ref=../MNI152_T1_1mm_brain --in=T1_brain --aff=SubT1_to_MNI.mat --cout=warp_SubT1_to_MNI
invwarp -w warp_SubT1_to_MNI -o warp_MNI_to_SubT1 -r T1_brain
## T1WI to DWI
epi_reg --epi=nodif_brain --t1=T1 --t1brain=T1_brain --out=DWI_to_T1
convert_xfm -omat T1_to_DWI.mat -inverse DWI_to_T1.mat
# warp MNI to Subject T1WI space
# applywarp --in=../SN_labels_L --ref=T1_brain --warp=warp_MNI_to_SubT1 --interp=nn --out=SN_labels_L_to_SubT1
# applywarp --in=../SN_labels_R --ref=T1_brain --warp=warp_MNI_to_SubT1 --interp=nn --out=SN_labels_R_to_SubT1
applywarp --in=../SN_labels_LR --ref=T1_brain --warp=warp_MNI_to_SubT1 --interp=nn --out=SN_labels_LR_to_SubT1
# warp Subject T1WI space to Subject DWI space
# flirt -in SN_labels_L_to_SubT1 -ref nodif_brain -out SN_labels_L_to_SubDWI -init T1_to_DWI.mat -applyxfm -interp nearestneighbour
# flirt -in SN_labels_R_to_SubT1 -ref nodif_brain -out SN_labels_R_to_SubDWI -init T1_to_DWI.mat -applyxfm -interp nearestneighbour
flirt -in SN_labels_LR_to_SubT1 -ref nodif_brain -out SN_labels_LR_to_SubDWI -init T1_to_DWI.mat -applyxfm -interp nearestneighbour
# calc map values
[[ -d results ]] && \rm -rf results
mkdir -p results
MASK='SN_labels_LR_to_SubDWI'
for MAP in $(\ls -1 map/*.nii.gz | xargs -i basename -s ".nii.gz" {}); do
    fslstats -K ${MASK} map/${MAP}  -M >> results/SN-labels_${MAP}_mean.txt &
    # fslstats -K ${MASK} map/${MAP}  -S >> results/SN-labels_${MAP}_sd.txt &
    wait
done

6. bertのwmparcをMNI空間に移動後、個人脳(Perfusion image)にレジストレーション

# Required files
# - brain.mgz: bert's T1WI
# - wmparc.mgz: bert's wmparc
# - <perfusion>.nii.gz: a subjects's perfusion images
# Definition
PERFUSION='E_01_TR05_sms_perfusion_Junten_176_20190212142306_121'
LABEL='std_subj_wmparc'
# 1. Preparation
echo '1. Preparation'
## compress data
find . -name "*nii" |xargs -i gzip {}
## copy files
mkdir preprocessing
cp brain.mgz wmparc.mgz ${PERFUSION}.nii.gz preprocessing
# cp brain.mgz wmparc.mgz ${PERFUSION}.nii.gz std_bert_wmparc_MNI std_bert_brain_MNI preprocessing
cd preprocessing
## convert bert's mgz to nii.gz
mrconvert brain.mgz bert_brain.nii.gz
mrconvert wmparc.mgz bert_wmparc.nii.gz
## abstract first volume from perfusion images
fslroi $PERFUSION perfusion 0 1
## reorient to FMRIB'S standard
fslreorient2std bert_brain std_bert_brain
fslreorient2std bert_wmparc std_bert_wmparc
fslreorient2std perfusion std_perfusion
## BET perfusion image
bet std_perfusion std_perfusion_brain
# 2. bert2MNI
echo '2. bert2MNI'
## flirt
flirt -in std_bert_brain \
      -ref ${FSLDIR}/data/standard/MNI152_T1_1mm_brain \
      -omat bert_to_MNI.mat
## fnirt
fnirt --ref=${FSLDIR}/data/standard/MNI152_T1_1mm_brain \
      --in=std_bert_brain --aff=bert_to_MNI.mat \
      --cout=warp_bert_to_MNI --iout=std_bert_brain_MNI
applywarp --in=std_bert_wmparc \
          --ref=${FSLDIR}/data/standard/MNI152_T1_1mm_brain \
          --warp=warp_bert_to_MNI --interp=nn \
          --out=std_bert_wmparc_MNI
## 3. regster ROIs to subject space (bert2subj)
echo '3. regster ROIs to subject space (bert2subj)'
flirt -in std_perfusion_brain \
      -ref std_bert_brain_MNI \
      -omat subj_to_bert.mat \
      -out std_perfusion_brain_flirt
convert_xfm -omat bert_to_subj.mat  -inverse subj_to_bert.mat
flirt -in std_bert_wmparc_MNI \
      -ref std_perfusion_brain \
      -out std_subj_wmparc \
      -init bert_to_subj.mat \
      -applyxfm \
      -interp nearestneighbour
## 4. abstract Tissues
echo '4. abstract Tissues'
mkdir ROI
## GM
fslmaths $LABEL -thr 800 -uthr 1200  -bin ROI/l_gm
fslmaths $LABEL -thr 1800 -uthr 2200 -bin ROI/r_gm
## WM
fslmaths $LABEL -thr 2800 -uthr 3200 -bin ROI/l_wm
# fslmaths $LABEL -thr 5001 -uthr 5001 -bin l_wm_tmp2
# fsladd l_wm l_wm_tmp*
fslmaths $LABEL -thr 3800 -uthr 4200 -bin ROI/r_wm
# fslmaths $LABEL -thr 5002 -uthr 5002 -bin r_wm_tmp2
# fsladd r_wm r_wm_tmp*
# rm *_wm_tmp*
## Cerebellum
fslmaths $LABEL -thr 7 -uthr 8 -bin ROI/l_cblm
fslmaths $LABEL -thr 46 -uthr 47 -bin ROI/r_cblm
mv ROI ../
cd ..
## 5. check results
fsleyes $PERFUSION \
        ROI/l_gm ROI/r_gm \
        ROI/l_wm ROI/r_wm \
        ROI/l_cblm ROI/r_cblm &

bert脳とwmparcをMNIに移動した画像が用意できていれば、次のコードを実行するとよい。

# Required files
# - brain.mgz: bert's T1WI
# - wmparc.mgz: bert's wmparc
# - <perfusion>.nii.gz: a subjects's perfusion images
# - std_bert_brain_MNI.nii.gz: bert's brain T1WI in MNI
# - std_bert_wmparc_MNI.nii.gz: bert's wmparc in MNI
# Definition
PERFUSION='org_perfusion'
LABEL='std_subj_wmparc'
TEMPLATE='std_bert_brain_MNI'
TEMPLAET_LABEL='std_bert_wmparc_MNI'
# 1. Preparation
echo '1. Preparation'
## compress data
find . -name "*nii" |xargs -i gzip {}
## copy files
mkdir preprocessing
cp ${PERFUSION}.nii.gz ${TEMPLAET_LABEL}.nii.gz ${TEMPLATE}.nii.gz preprocessing
cd preprocessing
## abstract first volume from perfusion images
mcflirt -in $PERFUSION -out ${PERFUSION}_realign
fslmaths ${PERFUSION}_realign -Tmean perfusion
## reorient to FMRIB'S standard
fslreorient2std perfusion std_perfusion
## BET perfusion image
bet std_perfusion std_perfusion_brain
## 2. regster ROIs to subject space (bert2subj)
echo '2. regster ROIs to subject space (bert2subj)'
## subj2bert
# flirt -in std_perfusion_brain \
#       -ref std_bert_brain_MNI \
#       -omat subj_to_bert.mat \
#       -out std_perfusion_brain_flirt
# convert_xfm -omat bert_to_subj.mat  -inverse subj_to_bert.mat
## check std_perfusion_brain_flirt.nii.gz
## if fail subj2bert, use the follwing code:
## bert2subj
flirt -in  std_bert_brain_MNI \
      -ref std_perfusion_brain \
      -omat bert_to_subj.mat \
      -out std_bert_brain_subj
## apply warp to register bert's to subj's wmparc
flirt -in std_bert_wmparc_MNI \
      -ref std_perfusion_brain \
      -out std_subj_wmparc \
      -init bert_to_subj.mat \
      -applyxfm \
      -interp nearestneighbour
# fsleyes std_perfusion_brain.nii.gz std_bert_brain_subj.nii.gz
## 3. abstract Tissues
echo '3. abstract Tissues'
mkdir ROI
## GM
fslmaths $LABEL -thr 800 -uthr 1200 -bin -mul 1 ROI/l_gm
fslmaths $LABEL -thr 1800 -uthr 2200 -bin -mul 2 ROI/r_gm
## WM
fslmaths $LABEL -thr 2800 -uthr 3200 -bin -mul 3 ROI/l_wm
# fslmaths $LABEL -thr 5001 -uthr 5001 -bin l_wm_tmp2
# fsladd l_wm l_wm_tmp*
fslmaths $LABEL -thr 3800 -uthr 4200 -bin -mul 4 ROI/r_wm
# fslmaths $LABEL -thr 5002 -uthr 5002 -bin r_wm_tmp2
# fsladd r_wm r_wm_tmp*
# rm *_wm_tmp*
## Cerebellum
fslmaths $LABEL -thr 7 -uthr 8 -bin -mul 5 ROI/l_cblm
fslmaths $LABEL -thr 46 -uthr 47 -bin -mul 6 ROI/r_cblm
fsladd ROI/subj_WM_GM_CBLM_labels ROI/l_gm ROI/r_gm ROI/l_wm ROI/r_wm ROI/l_cblm ROI/r_cblm
mv ROI ../
cd ..
## 5. check results
# fsleyes $PERFUSION \
#         ROI/l_gm ROI/r_gm \
#         ROI/l_wm ROI/r_wm \
#         ROI/l_cblm ROI/r_cblm &
# for k in *;do
# fsleyes $k/preprocessing/std_perfusion_brain \
#         $k/ROI/l_gm $k/ROI/r_gm \
#         $k/ROI/l_wm $k/ROI/r_wm \
#         $k/ROI/l_cblm $k/ROI/r_cblm
# done