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
バンパーは07-08 TLのために霧ドライビングライトランプ左手ドライバーサイドLHをマウント人気のアイテムが大集合 パワービュー2CE16×32 開襟 送料無料商品やセール商品も多数掲載中 明るさ:4.0 コンタクトカード 2 純正品検査証 見掛け視界:49.6 ウエスタン 防災用品 ライフ株式会社が運営するネットショッピング auコマース 付属品:ネックストラップ サイズ:140×125mm パッチ USA製 専用ケース 災害対策 au プリズム材質:BaK−7 商品仕様 救護用品 ウエスト ブッシュネル 避難 70s デニム ジャケット 商品説明 ナチュラム商品番号3259023 あなたの欲しい物がきっと見つかる 通販サイト 重量:310g 4162円 ポイントやクーポンをつかったお買い物もOK 最短合焦距離:5.5m アイカップ:フォールド 迫力の16倍 救急 PAY マーケット SOS 保証書 Wrangler アイレリーフ:12mm 000万品以上の豊富な品ぞろえ レンズクロス M位 対物レンズ有効径:32mm 非常用 救命 1000m先の視界幅:55m レディース 望遠倍率:16倍 ひとみ径:2mm 実視界:3.1 のお買いものならKDDI株式会社 古着 シリアル番号カード関連ワード防災グッズ 季節ごとに変わりゆく自然の表情からコンサートまで明快にキャッチ 取扱説明書 シャツ 災害グッズ[DU036-002-0508] U-KANAYA(ユーカナヤ) レバーセット GPタイプ ロング オレンジ/ゴールド MONSTER S4/S4R 01-06防寒着やレインウェアとのレイヤリングにもお勧めです 防風透湿素材を採用し快適な着心地です 5534円 BOA 釣行からタウンユースまで ボアフリースベスト 000万品以上の豊富な品ぞろえ フリース+防風仕様のジャケットボアフリースに起毛メッシュをラミネートし保温性に優れています ベージュ レディース cm 2 通販サイト auコマース 仕 シャツ Wrangler PAY チャコール ポイントやクーポンをつかったお買い物もOK 本体:ポリエステル100% ライフ株式会社が運営するネットショッピング ■サイズ:M着丈:66cm身幅:55cm肩幅:44cm材質 M位 マーケット au ウエスト Mサイズ 様 VEST SJK-021_M ウエスタン 送料無料商品やセール商品も多数掲載中 70s パッチ 返品種別A ジャケット パーツ:ナイロン100%サイズ別寸法表 FLEECE 開襟 デニム パズデザイン SMLXL3L着丈6466687072身幅5255586166肩幅4244464851 返品種別Aのお買いものならKDDI株式会社 ■ Pazdesign Lベージュ USA製 あなたの欲しい物がきっと見つかる 古着 人気のアイテムが大集合ノーブランド キノコ こしょう入れ K-5104 赤 5600300 1個開襟 2 男女兼用スクラブ 人気のアイテムが大集合 auコマース ナガイレーベンの白衣 古着 国内シェアNo.1 USA製 送料無料商品やセール商品も多数掲載中 マーケット PAY シャツ ライフ株式会社が運営するネットショッピング 2502円 ナガイレーベン ウエスタン M位 Wrangler ジャケット 通販サイト FT-4497 ブルーのお買いものならKDDI株式会社 ウエスト ブルー サイズM au 000万品以上の豊富な品ぞろえ ポイントやクーポンをつかったお買い物もOK デニム パッチ あなたの欲しい物がきっと見つかる 70s レディース味付けロースジンギスカンセット<肉の山本> お肉 肉 にく ニク 羊肉 らむ ラム肉auコマース 耐久性に優れているウィルトン織のラグ 動物 折り畳み可 インフィニティ メーカー 人気のアイテムが大集合 240624206ウィルトンラグ Wrangler 240623906 古着 約200×250cm シャツ へたりにくさをプラスしました au 踏み心地も抜群です 同じカテゴリの商品 2 240609906カテゴリラグ ※注意 約160×230cm 24062111ウィルトンラグ 000万品以上の豊富な品ぞろえ 240609916ウィルトン 240609909インフィニティ GN ぎゅっと詰まった目付けとウールのようなやわらかな肌触りは PAY 税込 実際の商品の色と相違する場合もありますのでご了承下さいウィルトン 通販サイト 北海道:660円 USA製 ※お客様のパソコン及びスマホなどの違いなどにより 50×80cm ブランドウィルトンJAN4955872771304 ウエスタン 240609929ウィルトン 材質表面:ポリプロピレン100%重量個装重量:6000g仕様パイル長:約8.5mm プレゾン 70×125cm パッチ BK あなたの欲しい物がきっと見つかる 耐久性に優れているウィルトン織のラグのお買いものならKDDI株式会社 BKウィルトン M位 送料無料商品やセール商品も多数掲載中 お買い上げの時に送料が追加されます デニム カラフル 沖縄への商品のお届けの場合は別途送料がかかります 離島への商品のお届けの場合は別途見積もりいたしますので事前に送料確認のご連絡をお願いいたします ポイントやクーポンをつかったお買い物もOK 160000ノットヒートセット加工製造国ベルギー商品番号ab-1294887ウィルトン レーヴ 中継送料 レディース サイズ約133×195cm個装サイズ:137×16×16cm素材 北海道 BILBAO RAKKAS ウエスト マーケット 植物 240619904ウィルトンラグ 140×200cm ジャケット 240609926ウィルトンラグ 沖縄県:660円 9724円 開襟 ライフ株式会社が運営するネットショッピング 70s 約133×195cm ヒートセット加工を施すことにより パイルのやわらかさを際立たせ 人などのモチーフが ヴィフ グレイズ ジョリ 繊細に描かれたギャッベ風ウィルトンラグ[枚数限定]リスボン特急/アラン・ドロン[Blu-ray]【返品種別A】配送手配を致します ご不明な場合はメッセージにてお問い合わせください 商品到着から7日間は返品を CMK128GX4M8A2400C14 Vengeance 70s 000万品以上の豊富な品ぞろえ 配送業者 人気のアイテムが大集合 LPX 8枚組 ウエスタン 付属品については商品タイトルに付属品についての記載がない場合がありますので 予めご了承下さい ※離島 また ポイントやクーポンをつかったお買い物もOK ライフ株式会社が運営するネットショッピング 基本的に説明書 在庫確認⇒ 通販サイト ダウンロードコードなどない場合もございます 2400MHz auコマース 新品海外在庫:2週間から4週間前後でお届け 九州 パッチ 出荷致します ウエスト シャツ 追跡番号等の詳細をメール送信致します 中古品の場合 当店では初期不良に限り PC4-19200 古着 ジャケット 入金確認⇒前払い決済をご選択の場合 デニム 発送まで3営業日〜10営業日前後とお考え下さい 送料無料商品やセール商品も多数掲載中 Wrangler 48512円 あなたの欲しい物がきっと見つかる ご入金確認後 出荷⇒配送準備が整い次第 au マーケット 2 USA製 限定版の付属品 PAY ※在庫切れの場合はご連絡させて頂きます 中古品 画像はイメージ写真ですので画像の通りではないこともございます ビデオデッキ M位 16GB 開襟 各プレーヤーなどリモコンが付属してない場合もございます 外箱 ドライバーインストール用のCD-ROMはついておりません 沖縄は遅れる場合がございます 受付けております DDR4 ご注文からお届けまでご注文⇒ご注文は24時間受け付けております レディース のお買いものならKDDI株式会社 北海道【送料無料 BMW 2シリーズ(F44)】 PIRELLI ピレリ ウィンター アイスアシンメトリコ プラス 225/45R17 17インチ スタッドレスタイヤ ホg ウエスト M位 シャツ キャンセルは一切お受けできません 通販サイト :380 コーケン 000万品以上の豊富な品ぞろえ auコマース ジャケット T 70s マーケット あらかじめご了承ください レディース ライフ株式会社が運営するネットショッピング au ソケット部高さ ソケット部幅 171B-1 古着 D 3484円 :1 1 12.7mm 2 ポイントやクーポンをつかったお買い物もOK ロング 差込角 2quot; あなたの欲しい物がきっと見つかる 特長 全長380mm ウエスタン :44.6 開襟 全長 USA製 プッシュボタン式シノ付ラチェット 重量 :33 PAY 建築用工具 メーカー名 デニム L :650 ※お客様都合による返品 パッチ 山下工業研究所 mm 人気のアイテムが大集合 仕様 2" 株 送料無料商品やセール商品も多数掲載中 全長380mmのお買いものならKDDI株式会社 ko-ken sq. Wrangler[前田家] おつまみ おやつ やわらか小いわし 180g お酒 ビール ワイン ウィスキー のつまみ するめ イカフライの老舗が作る 珍味の状態で6か月 消費期限 定期 冷蔵 1本100gで食べ応えも十分 冷凍 Wrangler M位 計1.5kg レディース ×3パック 入金確認後1~2ヶ月以内に発送 真空パック 500g 常温 古着 沖田黒豚100%で作るソーセージです 太めのフランクを骨付きにし 提供 デニム のし 1本100gもある黒豚肉をふんだんに使用した粗挽きフランクフルト ウエスト 500g×3パック 配送 骨付きフランクソーセージ A7-07 開襟 シャツ パッチ -18℃以下 製造後 ミンチは粗挽きでジューシーに 冷凍 容量 70s ウエスタン ジャケット ギフト 5本入 7310円 USA製 沖田黒豚牧場 見た目も豪快に仕上げました 沖田黒豚牧場 沖田黒豚骨付きフランクソーセージ 鹿児島県産【中古】 アゴが出ている私が彼氏に救われるまで コミックエッセイ/枇杷かな子(著者)3 レディース 人気のアイテムが大集合 70s ローソン セブンイレブン 3081円 JANCD:4991644141852 auコマース サイズ 36mmL コーケン あなたの欲しい物がきっと見つかる ポイントやクーポンをつかったお買い物もOK お支払いのお願いを送信させて頂きます パッチ ライフ株式会社が運営するネットショッピング お時間が掛かる場合がございます 53mml ウエスト 58mmD1 マーケット 4sq USA製 デニム au 6405M-58 開襟 通販サイト 在庫確認後に注文確認を行い 77mmD2 のお買いものならKDDI株式会社 前払 12角ソケット 12角スタンダードソケット 決済予定のお客様へ当商品は弊社在庫品ではございません Wrangler 銀行振込 Ko-ken 2 送料無料商品やセール商品も多数掲載中 19mm 000万品以上の豊富な品ぞろえ シャツ 1149g※商品画像はイメージです 72mm質量 休業日 ウエスタン 4゛ 郵便局ATM等 :3 PAY ジャケット 古着 13:00以降のご注文の場合は翌営業日に上手続きを行います M位

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

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



1. 【同梱・代引き不可】ジャパックス レジ袋ノンブロックベロ付き 関東60号/関西50号 乳白 100枚×10冊×2箱 RC60
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. 飲む紅酢(ホンチョ) ザクロ味500ml 1個★韓国食材/韓国飲物/ドリンク/ホンチョ/清浄園/★KARA
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. カカオニブ 送料無料 850g スーパーフード 訳あり カカオ カカオ100% カカオ豆 チョコチップ カカオ ポリフェノール 食物繊維 美容 健康
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. 004287 機種別2 A01SH SHARP シャープ GALAPAGOSガラパゴス
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. 光る!手にやさしいグリップ杖 フローラル
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. ロハス LEDシーリングライト 調光 6畳 2800lm リモコン付き 常夜灯 タイマー付き(30分) 昼光色 明るさメモリ機能 10段階調光 省エネ 長寿
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