見出し画像

第6回:解析結果を表示する

前回までで、脳画像解析結果ファイル(tfce_corrp)から有意領域を自動判定し、tbss_fillで強調表示画像(*_fill.nii.gz)を生成するスクリプトを構築してきました。
今回は、最終的な可視化ステップとして、fsleyesを用いて結果画像を表示する方法を学びます。
コマンドラインでfsleyesを起動し、標準脳画像、スケルトン画像、解析結果、fill画像を重ねて表示できるようになると、ワンクリックで解析結果を確認できるようになります。


fsleyesの基本的な使い方

fsleyesはFSLに付属するGUIベースの脳画像可視化ツールです。
GUIで起動するには単純にターミナルでfsleyes &と入力すればウィンドウが立ち上がりますが、コマンドラインオプションを使うと、

  • 複数の画像を一度に読み込み

  • カラーマップや表示範囲を指定

  • 起動時点で希望する表示条件をセット
    することができます。これにより、結果確認の自動化が可能です。

基本的な起動例

以下は、単純に標準脳画像(MNI152_T1_1mm_brain)と平均FAスケルトン(mean_FA_skeleton)を重ねて表示する例です。

fsleyes ${FSLDIR}/data/standard/MNI152_T1_1mm_brain mean_FA_skeleton &

&を付けるとバックグラウンドで起動し、ターミナルが使える状態になります。

カラーマップ、表示範囲の指定

fsleyesには様々なオプションがありますが、ここでは代表的なものを紹介します。

  • -dr <min> <max>:表示強度範囲の設定 (Display Range)

  • -cm <colormap>:カラーマップの指定

例:標準脳画像は強度範囲2000~10000で表示、スケルトンはgreenカラーマップで同じ範囲で表示するとします。

fsleyes ${FSLDIR}/data/standard/MNI152_T1_1mm_brain -dr 2000 10000 \
        mean_FA_skeleton -dr 2000 10000 -cm green &

このように、画像ファイルの後にオプションを記述します。
画像1個目のオプションは画像1個目に適用され、画像2個目以降についても同様に順番で適用されます。

解析結果表示例

tfce_corrp_tstat1.nii.gzを有意領域表示(0.95~1の範囲、red-yellowカラーマップ)で重ねるには以下のようにします。

fsleyes ${FSLDIR}/data/standard/MNI152_T1_1mm_brain -dr 2000 10000 \
        mean_FA_skeleton -dr 2000 10000 -cm green \
        tfce_corrp_tstat1 -dr 0.95 1 -cm red-yellow &

さらに、tbss_fillで作成したtfce_corrp_tstat1_fill.nii.gzも加えてみましょう。fill画像は0~1の範囲でred-yellowカラーマップとします。

fsleyes ${FSLDIR}/data/standard/MNI152_T1_1mm_brain -dr 2000 10000 \
        mean_FA_skeleton -dr 2000 10000 -cm green \
        tfce_corrp_tstat1 -dr 0.95 1 -cm red-yellow \
        tfce_corrp_tstat1_fill -dr 0 1 -cm red-yellow &

こうすると、標準脳 + スケルトン + 有意領域マップ + 強調フィル画像が重ね合わされた表示が一度に起動します。


スクリプトで表示条件をテキストファイルに書き出す流れ

多くの画像や条件をスクリプト内で直接fsleyesコマンドに書くと、行が長くなり見づらくなります。
そこで、表示条件をテキストファイルにまとめ、その内容を展開してfsleyesに渡す方法を取るとスクリプトが整理しやすくなります。

手順例

表示条件をテキストファイル(例えばfsleyes_conditions.txt)に1行ずつ書く

${FSLDIR}/data/standard/MNI152_T1_1mm_brain -dr 2000 10000mean_FA_skeleton -dr 2000 10000 -cm greentfce_corrp_tstat1 -dr 0.95 1 -cm red-yellowtfce_corrp_tstat1_fill -dr 0 1 -cm red-yellow

スクリプト内でこのテキストファイルをcatや$(<file)で呼び出し、fsleyesコマンドに渡す

fsleyes $(<fsleyes_conditions.txt)

これにより、テキストファイルの中身がそのままコマンドライン引数として展開され、わかりやすく管理できます。

スクリプトフラグメント例

ここでは、単純なスクリプト例を示します。prepare_fsleyes.shとして次のようなフラグメントを作成します。

#!/bin/bash
set -euo pipefail

# 表示範囲・カラーマップ設定
brain_display_range_start=2000
brain_display_range_end=10000

# 一時ファイルとして表示条件を書き出す(将来的にはmktempでも可)
conditions_file="fsleyes_conditions.txt"
rm -f $conditions_file

# 標準脳
echo "${FSLDIR}/data/standard/MNI152_T1_1mm_brain -dr $brain_display_range_start $brain_display_range_end" >> $conditions_file

# 平均FAスケルトン
echo "mean_FA_skeleton -dr $brain_display_range_start $brain_display_range_end -cm green" >> $conditions_file

# 解析結果(tstat1)の表示条件 0.95~1でred-yellow
echo "tfce_corrp_tstat1 -dr 0.95 1 -cm red-yellow" >> $conditions_file

# 強調表示(tstat1_fill)
echo "tfce_corrp_tstat1_fill -dr 0 1 -cm red-yellow" >> $conditions_file

# fsleyes起動
fsleyes $(<"$conditions_file")

このスクリプトを実行すると、fsleyes_conditions.txtに書かれた条件に従ってfsleyesが起動し、設定済みの画像が一度に表示されます。

ポイント

  • echoで条件を1行ずつ書き出すことで、後から条件を追加・変更しやすくなります。

  • fsleyes $(<"$conditions_file")という書き方で、ファイルの中身をすべて引数として展開できます。

まとめ

今回のポイントは次のとおりです。

  • fsleyesを使って標準脳、スケルトン、有意領域、fill画像を重ね表示する方法を学んだ

  • -drや-cmなどのオプションで表示条件を細かく指定可能

  • スクリプト内で表示条件をテキストファイルに書き出し、それをfsleyesで一気に読み込むことで、見やすく管理できる

これで、解析結果を自動で整え、ワンコマンドでビジュアライズする準備が整ってきました。
次回は、これら全て(有意差判定、fill生成、fsleyes起動)の処理を統合し、完成度の高い最終スクリプトへと仕上げ、エラーハンドリングや可読性向上のテクニックを交えながら最終形を提示します。


次回もお楽しみに!

いいなと思ったら応援しよう!