2024年10月現在、FreeSurferはUbuntu 24.04 では動作しません

ときどきこの質問を受けるので言及しておきます。

2024年4月にUbuntu 24.04が公開されました。
しかし、Ubuntu 24.04上では現行のFreeSurfer 7.4.1は動きません。
このため、FreeSurferを実行したい場合は、しばらくUbuntu 22.04からアップグレードしないようにしましょう。

FreeSurferとFSL 6.0.6以降を同時にインストールしている時に起きる事象への対処法

FreeSurfer と FSL 6.0.6以降を使っていると、ある事象が起きます。

  • Python3がFSLが提供するPython3になります。
  • dcm2niixがFSLが提供するdcm2niixになります。

これの影響を受けているかの確認法および対処法を最初に解説した後、その理由を述べます。

続きを読む

FreeSurfer で Local Gyrification Index を求めるための準備

FreeSurfer では Local Gyrification Index (LGI) を求めることができます。LGIを一言で言えば、脳の皮質の折りたたみの状態を指標化とでも言えるでしょうか。
詳細は、本家のウェブサイトにありますが、ポイントを示します。

  • 必要なソフトウェアとしては、Matlab と Matlab Imaging Toolbox が必要となります。
  • Matlab のパスに $FREESURFER_HOME/matlab を追加しておくことが必要です。
  • 画像の準備としては、recon-all が終わっていることが必要です。

この3つを準備しておけば、あとは、以下のコマンドをタイプするだけです。

recon-all -s <fsid> -localGI

SPMの結果をFreeSurferの脳表画像に投影する方法

以前、DTIの画像などをFreeSurferの脳表に投影する方法を紹介しましたが、SPMの結果のspmT画像をFreeSurferの脳画像に投影する方法もわかりましたので紹介したいと思います。

必要なコマンドは、mri_vol2surf です。

  • 入力ファイルと出力ファイル名
  • 入力画像は、spmT_0001.nii とします。出力ファイル名は、左半球の画像ということで、lh.spmT_0001.mgzとします。

  • mri_vol2surf のオプション
  • 今回、大事になるのは、–mni152reg というオプションです(木村先生、教えてくれてありがとうございました)。MNI空間でのあわせこみに使えるオプションです。

  • 実際のコマンド
  • シンプルに以下でいけました。

    mri_vol2surf --mov spmT_0001.nii --mni152reg --hemi lh --o lh.spmT_0001.mgz
    

    入出力ファイル以外のオプションは2つだけ、–mni152reg と –hemi lh だけです。

  • Freeviewでの表示
  • 最後にfreeviewで表示します。T値が3以上を表示したいと思ったので、thresholdを3,5としてあります。

    freeview -f \
    $SUBJECTS_DIR/fsaverage/surf/lh.inflated:overlay=lh.spmT_0001.mgz:overlay_threshold=3,5\
      --viewport 3d --layout 1
    

    結果、以上のような感じで表示できました。

2019年度第2回脳画像解析(FreeSurfer)勉強会(2020年1月12日開催)

2019年11月16日7時で定数に達しましたので、締め切りました。

2020年1月12日開催予定の『FreeSurfer勉強会』のご案内をいたします。
まい参加希望の方は、下記のフォームにて、お申し込みをしていただけますよう、お願い申し上げます。
FreeSurferの勉強会を開催します。
今回は、「FreeSurferでrecon-allはやってみた。でも、もう少し学んでみたい」方を対象にしたいと思います。
現時点では、内容は以下を予定しています。

9:00-15:00
– recon-allのステップの理解
– ROI解析
– 縦断解析
– TRACULA(予定です)

15:00-17:00
– スクリプト化演習

日時:2020年1月12日(日)9:00-17:00
場所:オフィス東京(東京駅八重洲口から徒歩5分)
費用:無料
定員:30名(先着順)
受講条件:
– これまでにFreeSurferの解析を一度はやったことがある方
– ご自身のPCを持ち込んで作業ができる方

第2回 FreeSurfer 6.0 勉強会を開催します (2018年11月18日)

2018/8/28 13:40 満席となりましたので、受付を終了いたしました。

2018年3月にABiS脳画像解析チュートリアルにおいてFreeSurferのチュートリアルを行いましたが、アンコールのリクエストを複数いただいているので、今回も岩手医科大学の山下典生先生の協力を得て、2018年11月18日に東京でFreeSurferの勉強会を開催することとしました。

今回は、研究費のサポートがあるため、無料です。

これまでに開催してきたチュートリアルのように、ご自身のパソコンを持ち込んでいただき、FreeSurferにじっくり触れていただきます。

想定している対象者は、FreeSurferの経験がまだ少ない方です。全く経験がない方もOKです。また、recon-allはやったことがあるけれども、マニュアル修正をやったことがない方はとてもいい経験になると思います。これらの経験がある中級者以上の方には物足りないかと思います。

日程及び場所は以下になります。

  • 日程:2018年11月18日(日) 09:00-17:00
  • 場所:オフィス東京
  •    東京駅八重洲口徒歩5分

  • 講師
  • 根本清貴(筑波大学医学医療系精神医学)
    山下典生(岩手医科大学医歯薬総合研究所超高磁場MRI診断・病態研究部門)

  • セミナー内容(予定;基本的には2018年3月に生理研で行われたチュートリアルをベースにしています)
  • ・FreeSurferの概要
    ・recon-allを用いた前処理の方法
    ・ROI解析
    ・個人解析結果のマニュアル修正
    ・Qdecを用いた基本的なグループ解析
    ・コマンドラインを用いたグループ解析

  • 定員:50名(先着順)
  • 参加費:無料

Ubuntuでの CUDAのバージョンの切り替え方

使いたいGPU計算ソフトがCUDAの特定のバージョンでしか動かないことがあると思います。
CUDAのバージョンの切り替え方を書いておきます。
切り替え先のバージョンがインストールしてある必要があります。

1. update-alternatives を使う方法

  • Ubuntuには、update-alternativesという機能があり、バージョンの切り替えが比較的容易にできます。
  • 今、CUDA 10.2, 11.0, 11.5 がインストールされているとします。
  • まず、update-alternatives の選択肢に入るように、update-alternatives –install をします。優先順位はそこまで重要ではないのですが、10.2を優先したいので、この中では一番小さくしました。
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.5 100
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.0 90
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-10.2 80
  • 次に、update-alternatives –config で選びます。
sudo update-alternatives --config cuda
  • すると次のような画面になります。
$ sudo update-alternatives --config cuda
alternative cuda (/usr/local/cuda を提供) には 3 個の選択肢があります。

  選択肢    パス                 優先度  状態
------------------------------------------------------------
* 0            /usr/local/cuda-11.5    100       自動モード
  1            /usr/local/cuda-10.2    80        手動モード
  2            /usr/local/cuda-11.0    90        手動モード
  3            /usr/local/cuda-11.5    100       手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 
  • 今の場合、cuda-10.2 を使いたいので 1 を押してEnterをします。

すると、以下のような表示になります。

update-alternatives: /usr/local/cuda (cuda) を提供するためにマニュアルモードで /usr/local/cuda-10.2/ を使います

パスの設定

  • NVIDIAの公式サイトの Post-installation action に、パス設定が記載されています。

  • 私は、できるだけ .bashrc をいじらないでというのを最近、モットーにしています。Ubuntuでは .bashrc の中で読み込まれる .bash_aliases があるのでそちらに追記します。.bash_aliases はその名の通り、本来はエイリアスの設定を書くものと思いますが、様々なパスをここに書いておくと、.bashrc を直接いじらなくていいので安全かと思います。

  • update-alternatives を併用すると、以下のような記載で大丈夫になります。LD_LIBRARY_PATHは、自分が使い分けをしたいCUDAの lib64 のパスをひたすら書いていきます。

# CUDA
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda-10.2/lib64:/usr/local/cuda-11.0/lib64:/usr/local/cuda-11.5/lib64${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}}
  • ターミナルを一度閉じて、再度ターミナルを起動します。

CUDA の確認

  • nvcc –version で NVCC のドライバが確認できます。
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89
  • CUDA 10.2 が選ばれています。
  • 他を選びたかったら、sudo update-alternatives –config cuda を実行すれば大丈夫です。

2. シンボリックリンクを使う方法

  • 現在のCUDAのバージョンを確認します。
nvcc -V
  • /usr/local/cuda へのリンクを切り替え先のバージョンのインストール場所に変更します。

  • 例:CUDA5.0に切り替える場合

sudo unlink /usr/local/cuda
sudo ln -s /usr/local/cuda-5.0 /usr/local/cuda
  • 切り替え後のバージョンを確認します。
nvcc -V
  • なおrebootは不要です。

FreeSurferをインストールした後の第一歩

FreeSurferをインストールした後、自分のデータを用いてどうしたらいいか困る人が多くいます。

まず、1例を試してみるといいと思います。

以下のようにされてはいかがでしょうか。

  1. ターミナルを開きます。
  2. 画像があるディレクトリに移動します。
  3. たとえば、画像が、/Users/foo/img_dataにあるとすれば、

    $ cd /Users/foo/img_data/
    

    となります。

  4. 画像の被験者IDを決めます
  5. FreeSurferでは実はこれが大事です。ここをきちんとしていないと、話が次に進みません。

  6. 以下の書式でコマンドをうちます。
  7. $ recon-all -s 【被験者ID】 -i 【NIFTI画像ファイル】 -all
    

    今、被検者IDがHC001、NIFTI画像がV_HC001.niiだとすると、

    $ recon-all -s HC001 -i V_HC001.nii -all
    

    となります。

これでしばらく待ちます。私の最近のPCでは、9時間程度で1例の処理が終わります。

スクリプト化してみましょう。画像のファイル名(拡張子抜き)をIDとして扱うことにします。

#!/bin/sh

if [ $# -lt 1 ]
then
        echo "Please specify image files!"
        echo "Usage: $0 imagefiles"
        echo "Wild card can be used."
        exit 1
fi

for f in "$@"
do
        subjid=`imglob $f`
        recon-all -i $f -s $subjid -all
done

という感じになりますね。

出力ファイルは、$SUBJECTS_DIRに出力されます。
私の場合、
$SUBJECTS_DIRはホームディレクトリの下のfreesurfer/subjectsにしてあります。
この設定の仕方は、こちらをご覧ください。

どこにあるかすぐにわからなかったら、以下をしたらいいと思います。

$ cd $SUBJECTS_DIR

ここに先ほど入力したIDがあります。その中にいろいろ入っています。

$SUBJECTS_DIRはHDDの容量をくいますので、十分なスペースを確保しないと容量不足に陥りますのでご注意ください。