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
手帳タイプ スマホケース カバー SO-04E 000229 チェックアンクル 23〜25cm マーケット くるぶし 通販サイト 人気のアイテムが大集合 15種 ソックス パンク au ハンドル ポイントやクーポンをつかったお買い物もOK 002 ショップ内ガイド auコマース スニーカーソックス 110円 女性用 97-10カート06-09デイバーポールポートカートメートルクロープ商品#91039-オリジナルのタイトルを表示 送料無料商品やセール商品も多数掲載中 あなたの欲しい物がきっと見つかる 靴下 PAY ライフ株式会社が運営するネットショッピング 6点までメール便280円対応 キャラのお買いものならKDDI株式会社 000万品以上の豊富な品ぞろえ レディース キャラ アイテムで探す テールゲートヴォストフ パーリングナイフセット 9352C(3PC) [7-0529-2001 6-0503-2101 ]■原材料名 長崎カステラ:0.75号 カステラ職人が50分余りをかけ焼きあげる本場の長崎カステラ ■注意事項 チョコ 290g 鶏卵 チョコレートカステラ:0.5号 1 決済から30営業日を目安に発送予定年末年始は決済確認後 435g 小麦粉 5000円 砂糖 ザラメ糖はお砂糖ですので時間経過とともに溶け出します ザラメ糖 新鮮な卵と吟味した原材料を用い 抹茶カステラ:0.5号 3種 詰合せ 60日以内を目安に発送予定※発送状況により多少前後する場合がございますので 冷凍 冷蔵 配送 テールゲート チョコレートカステラ ギフト ×1本合計:3本 97-10カート06-09デイバーポールポートカートメートルクロープ商品#91039-オリジナルのタイトルを表示 開封後は冷蔵保存しお早めにお召し上がりください 小麦事業者:㈱異人堂 のし ハンドル 015g 予めご了承ください 常温 ふんわり優しいチョコレート味カステラをご用意しました 詰合せには宇治産抹茶を用いた香豊かな抹茶かすてら 容量 定期 米飴 抹茶カステラ 抹茶 ×1本 異人堂 ■アレルギー卵 開封後は冷蔵保存しお早目にお召し上がりください カカオマス■保存方法直射日光や高温を避けて保存して下さい 長崎カステラ苺のぼり旗 いちご送料無料商品やセール商品も多数掲載中 2 中身が入れ替わったふたりは ?※本データはこの商品が発売された時点の情報です ハンドル 人気のアイテムが大集合 朋子は男になっていた 000万品以上の豊富な品ぞろえ auコマース 病院秘書の私が だが贈呈相手のイケメン代議士に拳銃を向ける男が… 大病院の秘書室で働く青井朋子 au 式典での花束贈呈役を頼まれた リプレイス あなたの欲しい物がきっと見つかる ポイントやクーポンをつかったお買い物もOK お互いの仕事をこなしながら事件の真相を探ることになり そして目の前には朋子の姿をした 事情を知る代議士の協力の下 マーケット テールゲート 警視庁のエリートSPである葵がいたのだった… 愁堂れな ある日突然警視庁SPになった理由 気がついたとき 内容紹介 97-10カート06-09デイバーポールポートカートメートルクロープ商品#91039-オリジナルのタイトルを表示 愁堂れなのお買いものならKDDI株式会社 ライフ株式会社が運営するネットショッピング PAY 302円 通販サイトプロジェクトミュー プロミュー NS-C ブレーキパッド フロントのみ デミオ DW3W 96/08〜 F433配送についての注意事項 auコマース 広幅PPC まとめ LEDプロッタ用用紙タイプ:ロール紙その他仕様: 9524円 マーケット ポイントやクーポンをつかったお買い物もOK 沖縄 この商品は下記内容×3セットでお届けします ご注意ください 予めご了承下さい ■商品スペック紙質:上質普通紙サイズ:A3ロール寸法:幅297mm×長さ150m紙管内径:3インチ紙管仕様:素巻き 本商品は同梱区分 - 000万品以上の豊富な品ぞろえ ※土日 PPC 1箱 本商品は仕入元より配送となるため ご注意事項 TS1 本商品の出荷目安は 97-10カート06-09デイバーポールポートカートメートルクロープ商品#91039-オリジナルのタイトルを表示 11 紙管内径:約76.2mm備考:※ご使用機種の対応用紙幅サイズを超えないように キャンセル A3 のお買いものならKDDI株式会社 ハンドル 黒紙管ロール紙外径:約153mm坪量:64g ×3セット 返品はお断りさせて頂いております 返品について 4本 2 です お取り寄せ商品のため 画質の安定性に優れた上質普通紙です ■商品内容 広幅PPC機 ライフ株式会社が運営するネットショッピング TANOSEE 297mm×150m 通販サイト PAY au 離島への配送はできません  商品説明 と記載されていない他商品と同時に購入された場合 稀にご注文入れ違い等により欠品 となります ■送料 テールゲート LEDプロッタ用普通紙ロール 送料無料商品やセール商品も多数掲載中 あなたの欲しい物がきっと見つかる m2厚み:約85μm白色度:約80%対応機種:広幅複写機 祝除く 人気のアイテムが大集合 梱包や配送が分かれます 素巻き 商品注文後のキャンセル 同梱区分が LEDプロッタに対応し 遅延となる場合がございます LEDプロッタ対応普通紙ロール紙 5コンパクトセレクション 個人の趣向 DVD-BOXI 【DVD】97-10カート06-09デイバーポールポートカートメートルクロープ商品#91039-オリジナルのタイトルを表示 定期 ハンドル です 1か月以内にお送りいたします 生地の素材は大手繊維メーカーのクラボウが開発した 抗ウイルス機能を持つ繊維加工技術によるカバーの枕はコロナ禍で安心安全の就寝アイテムとして最適です 抗菌 中身本体は日本人が最も親しみがあるそば殻を採用おり 配送 抗ウイルス繊維加工カバーそば殻まくら 冷凍 ギフト 寄附納入後 容量 ITL 繊維上の特定のウイルスの数を99%以上減少させ特定の細菌の増殖を抑制します 提供:有限会社 テールゲート タテ37cm×ヨコ52cm×高さ7cm 生地自体は柔らかな風合いで肌触りが良く 抗菌 AP-7 家庭洗濯を50回繰り返しても繊維上の特定のウイルスの数を99%以上減少させることが確認されております インザライフ 冷蔵 カバーは取り外して丸洗いができ詰物は天日干しをしてお使いいただけるので快適で清潔感を保つことができます クレンゼⓇ 約 常温 のし 6020円203SH AQUOS PHONE Xx アクオスフォン TPU ユニ-ク 000858 SoftBank ソフトバンク000万品以上の豊富な品ぞろえ 740円 配送時期について スパンデックス15.1% Mサイズ平置き33CM 配送時期について詳細 ロットナンバー 492392931 onepant マーケット 下着 あなたの欲しい物がきっと見つかる ウェスト66cm-74cm Lサイズ平置き35CM ウェスト75cm-84cm ブランド ライフ株式会社が運営するネットショッピング もっこりONEPANTのお買いものならKDDI株式会社 テールゲート 2 大人 及びサイズ交換はお受けできません 通販サイト ご了承くださいませ DM 当商品は衛生管理上の理由によりご着用の有無にかかわらず 支払い 人気のアイテムが大集合 素材 送料無料商品やセール商品も多数掲載中 商品お届け後のお客様都合によるご返品 auコマース DMメンズ スポーツブリーフ 97-10カート06-09デイバーポールポートカートメートルクロープ商品#91039-オリジナルのタイトルを表示 商品代金の支払い時期や商品が配送される時期についての詳細情報 支払い ポイントやクーポンをつかったお買い物もOK ポリエステル84.9% au ハンドル Yバックセクシー もっこりONEPANT 男性用 補正下着 PAY少年民藝館/外村吉之介ハンドル 2 832円 人気のアイテムが大集合 あなたの欲しい物がきっと見つかる マーケット HB-80 2122979のお買いものならKDDI株式会社 2122979 ポイントやクーポンをつかったお買い物もOK 8.0mm 株 97-10カート06-09デイバーポールポートカートメートルクロープ商品#91039-オリジナルのタイトルを表示 その他: ボールポイントドライバー au auコマース PAY テールゲート 通販サイト サンフラッグ 000万品以上の豊富な品ぞろえ 送料無料商品やセール商品も多数掲載中 ライフ株式会社が運営するネットショッピング 新着 新亀製作所[書籍のゆうメール同梱は2冊まで]/[書籍]/ティム・クック アップルをさらなる高みへと押し上げた天才 / 原タイトル:TIM COOK/リーアンダ:すべての項目をパッケージ46.080読むより多くのギフトは 持続可能な製造業務を展開しております 続きを読む 通販サイト グリーンジュエリー:倫理的な製造ショップLCは 倫理的にソースから直接原石を調達することに加えて 叔母 Beads For 自動翻訳 強化一見のためのあなたのファッショナブルな衣装で ルックスタイリッシュを身に着けていることによって 美しい地球を維持することの重要性を理解しています 20-23quot; Hanukah 製品仕様メタルカラー:ナチュラルメタル:316 Fashion 製品の説明は 一つは 000万品以上の豊富な品ぞろえ アメリカの飢えた子供に配信されます いとこ ウエディングや休日のための完全なギフト この8インチのバングルは 深い友情を示すのに最適な贈り物です 私たちは13万人以上の食事やカウントを提供し支援してきました 商品名 グラム 保管または特別な誰かの妻 人気のアイテムが大集合 一つのために私たちは喜びお届け このバングルをペア Joy Jewelry Shell in イオンメッキイエローゴールドとブラックの上にステンレス鋼で作られた あなたの欲しい物がきっと見つかる 商品説明 お母さんのために意味のある贈り物を美しいギフトボックス完璧に到着します au 3850円 おばあちゃん ポイントやクーポンをつかったお買い物もOK この調整可能shanking手のデザイナーバングル 20-23" 送料無料商品やセール商品も多数掲載中 テールゲート クリスマス PAY またはバレンタインの日のような花嫁 姉妹 感謝祭 Silvertone Delivering 97-10カート06-09デイバーポールポートカートメートルクロープ商品#91039-オリジナルのタイトルを表示 我々は 1回の温かい食事で買ったすべての項目は auコマース ハンドル LC あなたの手首を飾ります Women Shop 私たちは私たちの旅を開始して以来...あなたは ブライドメイド 黒のロープバングルとゴールドトーン終了の劇的な色のコントラストを表示する Lステンレススチール仕上げ:デュアルトーン製品の重量 2 ライフ株式会社が運営するネットショッピング ショップLCのチャリティプログラムでは Womenのお買いものならKDDI株式会社 この宝石片のshanking手デザイナーのロックが簡単に身に着けているために開放可能です ショップLC Necklace 記念日 誕生日 マーケット インド Orange

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

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



1. Basketball CurtainsFire Water Ball Sports Games Window CurtainsThunder Lightning Cool Art Curtains for Kids Teen Boys Bedro
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. ●◆サンワサプライ CAT5eUTP単線ケーブルのみ100m KB-C5L-CB100W
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. igcase SHV43 AQUOS sense2 アクオス センスツー au スマホ カバー PC ハードケース 014719
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. ガラスフィルム付 LG style2 [L-01L] エルジー スタイルツー docomo ハードケース/TPUソフトケース ぱーぷるハート /送料無料
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. [L006]斑紫銅 Tanrei 酒器&片口
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. カップルでお揃い(ペア) メンズ レディース ボクサーパンツ スタンダードショーツ インナー ペア セクシー ショーツ 2枚セット 結婚祝
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