FSLのMLに最近、macOS 10.15の方々がインストールがうまくいかないという相談がたくさんなされています。
エラーメッセージは以下のような感じです。
東京大学の小池先生が国際脳のヒトMRI研究ポータルサイトを開設されました。
このサイトは、国際脳ヒト脳MRI研究プロジェクトで策定されたデータ取得手順、データ集約と共有化、前処理技術開発、Traveling subject project、倫理的配慮などの情報を集約し、国内のヒト脳MRI研究を発展させることを目的としたウェブサイトとのことです。
プロトコル論文がpreprintで公開されていたり、有用な情報が掲載されていますので、一見の価値ありです。
以前、DTIの画像などをFreeSurferの脳表に投影する方法を紹介しましたが、SPMの結果のspmT画像をFreeSurferの脳画像に投影する方法もわかりましたので紹介したいと思います。
必要なコマンドは、mri_vol2surf です。
入力画像は、spmT_0001.nii とします。出力ファイル名は、左半球の画像ということで、lh.spmT_0001.mgzとします。
今回、大事になるのは、–mni152reg というオプションです(木村先生、教えてくれてありがとうございました)。MNI空間でのあわせこみに使えるオプションです。
シンプルに以下でいけました。
mri_vol2surf --mov spmT_0001.nii --mni152reg --hemi lh --o lh.spmT_0001.mgz
入出力ファイル以外のオプションは2つだけ、–mni152reg と –hemi lh だけです。
最後に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
結果、以上のような感じで表示できました。

2020年2月6・7日に、東京大学駒場キャンパスにおいて、「国際脳MRIプロトコルデータ(HCP data 含む)と精神疾患臨床データの前処理・解析」というテーマにおいて、脳MRI・臨床データ解析チュートリアルが開催されます。ついに日本でHCPデータの解析法などを学べる時が来ました。
主催の東京大学の小池先生から情報をいただきましたので、告知させていただきます。
関心ある方は、こちらをご確認ください。
私は講師としては参加しませんが、HCP readyのLin4Neuroを提供します。
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を持ち込んで作業ができる方
FSLやそれを利用したHCPパイプラインでは、計算を高速化するためにCPUあるいはGPUを介した並列分散処理を行います。CPUの並列分散化には、Sun Microsystemsが開発していたオープンソースのSun Grid Engine(SGE)が使われます。しかし、同社は2010年にOracleが買収し、ソースコードがクローズドになってしまいました(現在はUnivaが引き継いでいますが、これもクローズドです)。これを受けて、リバプール大のグループがSun Grid Engineのオープンソースの最終版である6.2u5をベースに、オープンソースでの開発を継続し、Son of Grid Engineとして公開しています。(https://arc.liv.ac.uk/trac/SGE/wiki )しかし、Son of Grid Engineも2016年を最後に開発が停止しています。一方、Debian/Ubuntu系では、”gridengine” として同様の試みがなされてきており、現在も開発が継続されています。そこで、Ubuntu18.04LTSへのgridengineのインストール方法について紹介します。なお、本稿は京都大学精神科の宮田淳先生が作成した「Son of Grid EngineのUbuntu18.04LTSへのインストール方法」をベースに、筑波大学精神科の根本清貴が改変したものです。この場を借りて宮田淳先生に御礼申し上げます。なお根本は(もちろん宮田先生も)本マニュアルの内容に関して一切の責任を負いません。あくまで自己責任でこのマニュアルをご使用下さい。
FSLやそれを利用したHCPパイプラインでは、計算を高速化するためにCPUあるいはGPUを利用した介した並列分散処理を行います。CPU の並列分散化には、Sun Microsystems が開発していたオープンソースの Sun Grid Engine(SGE)が使われます。しかし同社は2010年にOracle買収し、ソースコードがクローズドになってしまいました。
これを受けて、リバプール大のグループがSun Grid Engine のオープンソースの最終版である 6.2u5 を利用したベースに、オープンソースでの開発を継続し、Son of Grid Engine として公開しています。Son of Grid Engine も SGE と呼ばれています。
https://arc.liv.ac.uk/trac/SGE/wiki
対応OSはLinuxのみで、Debian/Ubuntu系、RedHat/CentOS系があります。
インストールにはいろいろ工夫が必要ですが、このたび、京都大学の宮田淳先生がそのインストールマニュアルを作成してくださいました。
宮田先生のご厚意で公開をご快諾いただきましたので、公開します。
※満席になりましたので、申し込みを締め切らせていただきました。
これまでに脳画像解析勉強会を開催してまいりましたが、2019年度も2回開催予定です。
今回は、「SPM-VBMの基本は理解できた、その先をもう少し知りたい」方を対象にしたいと思います。
日時:2019年12月1日(日)9:00-17:00
場所:オフィス東京(東京駅八重洲口から徒歩5分)
費用:無料
定員:30名(先着順)
受講条件
– Matlabを既にお持ちであること
– 「すぐできるVBM」の内容は理解されていること
勉強会の内容(予定)
9:00-15:00
– Matlab入門(兼予習)
– SPMを利用したMatlabスクリプト
– SPMの結果をFigureにしていく方法
– VBMのTips
15:00-17:00
– 「今さら聞けないことを聞きたい」質疑応答コーナー
FSL(FMRIB Software Library)には、fsl_subというプログラムがあります。これは並列処理をするためのプログラムですが、基本、クラスターコンピューティングを想定しており、CPUによる並列処理に対応していません。
Chris Rorden先生が、CPUでの並列処理に対応したfsl_subを公開されています。CPUでの高速化の手順を研究室の黒下君がまとめてくれましたので、公開します。
DICOM→NIFTIに変換する際に、MRI画像の左右を反転する方法はありますか?というご質問をいただきました。
DICOM→NIFTIの際に変換する方法は私が知る限りあまりないと思いますが、NIFTI画像に対する方法はあります。
この方法を紹介します。
FSLに、”MNI152_T1_2mm_LR-masked” というファイルがあります。
画像の反転の確認にはわかりやすいファイルなので、今回はこれを使用します。
Mangoで見ると、画像に埋め込まれている”R”が実際にR側にあることに気をつけてください。

*MRIcronは開発が終了しており、最終版が2-September-2019なので、こちらのインストール方法を改めて紹介します。
MRIcronはNIFTIファイルのビューワーです。開発は終了しており、後継のMIRcroGLを使うことが勧められていますが、使い勝手はいいので、以下、紹介します。
MRIcronは、https://www.nitrc.org/frs/?group_id=152よりダウンロードします。
2-September-2019 の “MRIcron_windows.zip” をクリックします。
ファイルをダウンロードするにあたっての規約が表示されますので、[I Agree]をクリックします。

そうすると、MRIcron_windows.zip を保存する画面が出てくると思いますので、適宜保存します。
ファイルが圧縮されていますので、解凍してください。Windows10では、ファイルを右クリックで、「すべて展開」で展開できます。

すると、下図のようにファイルが解凍されます。

“mricron.exe” をダブルクリックします。(拡張子を表示するオプションを有効にしていない方はmricronだけかもしれません)
そうすると、一度だけ、以下のwarningが出ます。

ここで、「詳細情報」をクリックすると、以下のような画面になるので、「実行」をクリックします。

そうすると無事に起動します。(表示される画像は違うかもしれませんが)

以下、簡単に、背景画像と、アトラスを重ね合わせる方法を紹介します。
まず、背景画像を表示します。上に使っているのは、ch2.nii.gzですが、それを表示します。
MRIcronのメニューから、”File” -> “Open templates” -> “ch2.nii.gz” で、上手のような画像が表示されます。
これに、AALアトラスを重ね合わせたいと思います。
メニューの”Overlay” -> “Add” を選びます。
画像の選択画面が出ますので、MRIcronのフォルダがあるところの Resources/templates/aal.nii.gz を探します。
私の場合、MRIcronを ダウンロード/MRIcron_windows/MRIcron にインストールしてあるので、以下のところにありました。

そうすると、AALアトラスが重ね合わせられて表示されました。ここで適当な領域をクリックすると、ウィンドウの上にその解剖学的名称が出ています。
今の場合、右の海馬をクリックしたので、Hippocampus_R と表示されています。(MRIcronの表示はデフォルトは、RadiologicalでなくNeurologicalであり、右側は右に表示されます)

なお、デフォルトだと、アトラスはベタッと上に表示されます。
アトラスを少し透過させて、下の画像も確認するためには、”Overlay” -> “Transparency on Background” で値を調整します。
60%としてみると、以下のようになりました。こうすれば、背景画像とアトラスを比較できます。

最近、ある方にこういう依頼を受けました。
「SPMの結果から閾値を超えるクラスターの全領域名が知りたい」
このためには、まず、閾値を超えるクラスターの座標を知る必要があります。
SPMの構造体には、座標がすべて入っています。
SPMで結果を出した後に、Matlabのコマンドウィンドウに以下をタイプするだけでOKです。
xSPM.XYZmm
SPMの統計結果は xSPM という構造体におさめられています。
xSPMとタイプすると構造体の内容を見ることができます。
>> xSPM
xSPM =
フィールドをもつ struct:
swd: 'ワーキングディレクトリ'
title: 'コントラストのタイトル'
Z: [1×1102 double]
n: 1
STAT: 'T'
df: [1.0000 250.0000]
STATstr: 'T_{250}'
Ic: 2
Im: []
pm: []
Ex: []
u: 3.1232
k: 100
XYZ: [3×1102 double]
XYZmm: [3×1102 double]
S: 70831
R: [1 41.5028 447.2876 1.2207e+03]
FWHM: [3.6448 3.8374 3.7707]
M: [4×4 double]
iM: [4×4 double]
DIM: [3×1 double]
VOX: [3 3 3]
Vspm: [1×1 struct]
thresDesc: 'p<0.001 (unc.)'
VRpv: [1×1 struct]
Pp: [1×116 double]
Pc: [1×58 double]
uc: [4.8405 Inf 62.0000 62.0000]
units: {'mm' 'mm' 'mm'}
これを改めてみると、SPMのResultsに出てくる内容がほぼ網羅されていることがわかります。
Z: [1×1102 double] はZ値が1102個あるということです。つまり、閾値を超えるボクセルが1102ボクセルあるということがわかります。
u: 3.1232 は p<0.001, uncorrectedに相応するT値、k: 100 はextent thresholdです。
XYZ: [3×1102 double]には、ボクセルの位置が入っており、XYZmmに、そのMNI座標が入っています。
とこんな感じでいろいろな情報が入っています。
XYZmmは3×1102ですから、3行1102列の行列です。
これは扱いにくいので、転置してあげると扱いやすくなります。
>> A=xSPM.XYZmm;
>> A'
ans =
-9 54 21
-6 54 24
-9 54 24
-12 54 24
-6 57 24
-9 57 24
-12 57 24
-15 57 24
(…以下、この例の場合では1102行の出力が続きます)
こうやってすべての座標を得ることができました。
SPMでは、統計の結果はデフォルトでは、8mm離れたピーク領域しか表示されませんが、このような方法を使えば自分が気になっている領域が入っているかどうかを確認できます。
2019.01.07 追記: MRIcroGLは開発者のChris Rorden教授のGitHubから直接ダウンロードした方がバージョンが新しいので、こちらで案内することとしました。
DICOM -> nifti ツールとして dcm2nii が有名ですが、開発者の Chris Rorden は、 dcm2nii の開発はすでに終了しており、後継の dcm2niix の開発を継続しています。
dcm2niix は dcm2nii よりも変換速度が非常に速く、BIDS形式にも対応しているなど、使い勝手も向上しています。
MRIcroGLに搭載されていますので、MRIcroGLをインストールすることで使えますが、パスの設定を通しておかないともったいないのでその方法を記載します。
FreeSurferで画像解析をしていると、「他の画像解析ソフトで解析した画像をFreeSurferで表示できないだろうか?」という疑問が湧いてきます。
今回、慶応大の上田亮先生が、その方法を見出してくださいましたので、上田先生の了解を得て、その方法を説明します。
FSLで作成したFA画像を、FreeSurferのSurface画像に投影してみます。
2018年10月26日、FSL 6.0.0がリリースされました。
メジャーバージョンアップなのでこれからいろいろ調べないといけませんが、
FSLのインストーラー、fslinstaller.pyをそのまま実行するとFSL 6.0.0がインストールされます。
しかし、従来のFSL 5.0.11をインストールしたい人もいます。
fslinstaller.pyのオプションで、指定できることがわかりました。
なお、fslinstaller.pyはPython2のスクリプトです。最近は、pythonとタイプするとpython3が起動する人も多いので、
python2.7 fslinstaller.py としてあげるといいでしょう。(Linuxはpython2でいいのですが、MacOSはpython2.7と明示しないとうまく動きません)
2018/8/28 13:40 満席となりましたので、受付を終了いたしました。
2018年3月にABiS脳画像解析チュートリアルにおいてFreeSurferのチュートリアルを行いましたが、アンコールのリクエストを複数いただいているので、今回も岩手医科大学の山下典生先生の協力を得て、2018年11月18日に東京でFreeSurferの勉強会を開催することとしました。
今回は、研究費のサポートがあるため、無料です。
これまでに開催してきたチュートリアルのように、ご自身のパソコンを持ち込んでいただき、FreeSurferにじっくり触れていただきます。
想定している対象者は、FreeSurferの経験がまだ少ない方です。全く経験がない方もOKです。また、recon-allはやったことがあるけれども、マニュアル修正をやったことがない方はとてもいい経験になると思います。これらの経験がある中級者以上の方には物足りないかと思います。
日程及び場所は以下になります。
東京駅八重洲口徒歩5分
根本清貴(筑波大学医学医療系精神医学)
山下典生(岩手医科大学医歯薬総合研究所超高磁場MRI診断・病態研究部門)
・FreeSurferの概要
・recon-allを用いた前処理の方法
・ROI解析
・個人解析結果のマニュアル修正
・Qdecを用いた基本的なグループ解析
・コマンドラインを用いたグループ解析
使いたいGPU計算ソフトがCUDAの特定のバージョンでしか動かないことがあると思います。
CUDAのバージョンの切り替え方を書いておきます。
切り替え先のバージョンがインストールしてある必要があります。
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
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>、さもなければ選択肢の番号のキーを押してください:
すると、以下のような表示になります。
update-alternatives: /usr/local/cuda (cuda) を提供するためにマニュアルモードで /usr/local/cuda-10.2/ を使います
私は、できるだけ .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}}
$ 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
nvcc -V
例:CUDA5.0に切り替える場合
sudo unlink /usr/local/cuda sudo ln -s /usr/local/cuda-5.0 /usr/local/cuda
nvcc -V

今、MacもLinux (RedHat系, Debian系) もFSLのインストールはfslinstaller.pyを使うようになりました。
これは、インストールだけかと思いきや、アップデートにも使えます。
https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FslInstallation/MacOsX
https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FslInstallation/Linux
にfslinstaller.pyのオプションが説明されています。
そのまま引用します。
-c がアップデートを確認となっています。
試してみます。
python fslinstaller.py -c
--- FSL Installer - Version 3.0.11 ---
[Warning] Some operations of the installer require administative rights,
for example installing into the default folder of /usr/local.
If your account is an 'Administrator' (you have 'sudo' rights)
then you will be prompted for your administrator password
when necessary.
When asked a question, the default answer is given in square brackets.
Hit the Enter key to accept this default answer.
Where is the FSL folder (e.g. /usr/local/fsl)? [/usr/local/fsl]:
ここでそのままEnterを押します。
Looking for new version. [OK] Version 5.0.11 available. Would you like to install update? [yes]:
5.0.11があるのでアップデートする?と聞かれますので、そのままEnterキーを押すか、もしくは yes とタイプすると5.0.11のアップデートがはじまります。
fslinstaller.py自体は自分自身でプログラムをアップデートする機能を持っています。したがって、インストールした後も捨てないということが大事です。
なお、-f がFSL FEEDSのダウンロードとなっていますが、これは -F の間違いです。今度、FSLのMLに投稿しようと思います。
また、このプログラムはpython 2.x系のみで動作しますので、そのことも覚えておいた方がいいでしょう。