FSLでFA画像を用いてMD画像を非線形変換する方法

FSLにはFA画像を非線形変換する際、FA_2_FMRIB58_1mm という設定ファイルが準備されており、比較的簡単に非線形変換ができます。
しかし、MD画像を非線形変換したい場合にはすぐにはうまくできません。
この時、FA画像の非線形変換のパラメーターを利用することで、可能になります。
ポイントは、flirt, fnirt, applywarp を上手に使うことです。
以下、sub1_FA.nii.gz, sub1_MD.nii.gz があるという前提でこれらを標準化するコマンドを記載します。コメントに意味を記載しています。

# FA画像を線形変換で標準化
# パラメータを affine.mat として出力(変換後の画像は出力しない)
flirt -ref $FSLDIR/data/standard/FMRIB58_FA_1mm \
      -in sub1_FA \
      -omat affine.mat
# FA画像を非線形変換で標準化
# 非線形変換のパラメータ画像を、sub1_cout.nii.gz として出力
# FA画像の標準化された画像を、sub1_FA_fnirted.nii.gz として出力
fnirt --config=FA_2_FMRIB58_1mm \
      --in=sub1_FA \
      --aff=affine.mat \
      --cout=sub1_cout \
      --iout=sub1_FA_fnirted
# MD画像を非線形変換で標準化
# 上記で得られた、affine.mat, sub1_cout.nii.gz を利用して、
# sub1_MD を変換させる
# sub1_FA と sub1_MD は全く同じ次元なので、パラメータだけ当てはめることができる
# MD画像の標準化された画像を、sub1_MD_fnirted.nii.gz として出力
applywarp --ref=$FSLDIR/data/standard/FMRIB58_FA_1mm \
          --in=sub1_MD \
          --warp=sub1_cout \
          --premat=affine.mat \
          --out=sub1_MD_fnirted

Making use of eddy_cuda of FSL 6.0.4 on Ubuntu 18.04

eddy implemented in FSL is time-consuming program. FSL recommends using eddy_cuda, GPU version of eddy. They ship eddy_cuda8.0 and edddy_cuda9.1. If you use Ubuntu 18.04, you can make use of eddy_cuda9.1 with only 4 commands.

Disclaimer: Installing nvidia-driver could cause display problem. I am not responsible for the problem…

続きを読む

Ubuntu18.04上のFSL6.0.4でeddy_cudaを使う方法

FSLにはeddyという拡散MRI画像の渦電流を補正するプログラムが搭載されています。
かつてはeddy_correctというシンプルなプログラムでしたが、
今のeddyは、計算量がとてつもなく大きな(=処理時間がかかる)プログラムとなっています。

Liux版のFSLには、eddy_openmp というCPU版と、eddy_cuda{8.0,9.1}というGPU版があります。

Ubuntu 18.04 が搭載されているLinuxで NVIDIA製のグラフィックボードが搭載されている場合、eddy_cudaを比較的簡単にセットアップできるので紹介します。

注意:NVIDIAのドライバを入れる時点で、ディスプレイの解像度が変になることがあります。現在の実働マシンに使う場合は相当注意しながら行ってください。個々人の環境があまりにも違うのでこの方法で不具合が起こっても責任は負いかねます。(すでに3台のマシンでセットアップを行い問題ないことを確認していますが…)

続きを読む

fslroiやmrconvertを使ってNIfTI画像からスライスを1枚だけ削除する方法

拡散画像からZ軸(上下)方向に1枚だけスライスを除く必要がありました。

どんな方法があるか調べていたところ、fslroiがいいなと思いました。
そして、慶応大学病院の上田先生からMrtrixについてくるmrconvertでも同様のことができることを教わりました。
自分の備忘録も兼ねてここに記載しておきます。

実際に試せるように、サンプル画像を準備しました。この画像をベースに説明します。

続きを読む

FSLをCPUによる並列処理で高速化する(Chris Rorden版fsl_subの使用)

FSL(FMRIB Software Library)には、fsl_subというプログラムがあります。これは並列処理をするためのプログラムですが、基本、クラスターコンピューティングを想定しており、CPUによる並列処理に対応していません。
Chris Rorden先生が、CPUでの並列処理に対応したfsl_subを公開されています。CPUでの高速化の手順を研究室の黒下君がまとめてくれましたので、公開します。

続きを読む

FSLやSPMを用いて画像の左右を反転する方法

DICOM→NIFTIに変換する際に、MRI画像の左右を反転する方法はありますか?というご質問をいただきました。

DICOM→NIFTIの際に変換する方法は私が知る限りあまりないと思いますが、NIFTI画像に対する方法はあります。

この方法を紹介します。

FSLに、”MNI152_T1_2mm_LR-masked” というファイルがあります。

画像の反転の確認にはわかりやすいファイルなので、今回はこれを使用します。

Mangoで見ると、画像に埋め込まれている”R”が実際にR側にあることに気をつけてください。

続きを読む

FSL で imglob: command not found と出た時の対処方法

FSLをきちんとインストールしたつもりなのに、imglob, imcp, immv のいずれかを実行したり、eddy などのコマンドを実行すると、

imglob: command not found

というエラーが出ることがあります。

これは、FSLのインストールがうまくいっていないサインです。

FSLのサイトにも記載があります。

しかし、もうひと工夫必要なので記載します。

続きを読む

FSLの異なるバージョンのインストール

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と明示しないとうまく動きません)

続きを読む

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は不要です。

FSLのインストーラー、fslinstaller.py はすぐに捨てない!

今、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のオプションが説明されています。

そのまま引用します。

  • -d specify folder to install FSL into (without ‘fsl’), e.g. /usr/local
  • -e only configure your account for running FSL
  • -E configure FSL for all users (Linux)
  • -v print installer version number and exit
  • -c check for updated versions of FSL
  • -l list versions of FSL available for download
  • -V install specified version number e.g. 5.0.10
  • -s download the source code for the current, or specified version of FSL
  • -f download the FEEDS data set for the current, or specified version of FSL
  • -q silence all messages
  • -p skip environment setup
  • -D switch on debug messages – use this option to generate logging that can be included when requesting installation support

-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系のみで動作しますので、そのことも覚えておいた方がいいでしょう。

FSLのGLMで対応のあるt検定のdesign matrixを作成・修正する方法

私がもっているデータのひとつに縦断DTIデータがあり、東京都健康長寿医療センターの下地先生が包括脳/ABiSチュートリアルで教えてくださっているTBSSを用いて解析を行っています。(下地先生は非常にわかりやすい講義をしてくださることで人気の先生です。)

GLMでDesign matrixを作成する時にひとつ困ったことに遭遇しました。

FSLのGLM Wizardでは、対応のあるt検定のDesign matrixを簡単に作成することができます。

続きを読む

How to run FSL on Windows 10 using Bash on Ubuntu on Windows

FSL_on_Windows

Since Aug 2016, Bash is available inside Windows.
That means, several neuroimaging software such as FSL or AFNI can be run from Windows.

I gave a try and confirmed FSL can run on Windows 10.

Below is what I did.

  1. Install Bash on Ubuntu on Windows
  2. First of all, we need to install bash on Windows.

    There is a good tutorial on this topic, so please follow the link below.

    How to Install and Use the Linux Bash Shell on Windows 10

  3. Install Xming
  4. Next, we neet to get Xming and install it. It seems the latest version is not free, but FSL can run with free version.

    You can get free version of Xming from here.

    Installation is simple. Default setting should work.

    After reboot, run xming. Though nothing seems to happen, please check the task bar of Windows on the right bottom corner.

    xming

    If you move cursor on the icon of Xming, it shows something like “Xming Server:0.0”. We use the information “0.0” later.

  5. Install FSL
  6. Next we run bash. type

    bash
    

    in the command prompt. (You already did this when you install bash on the first step)

    Ubuntu on Windows is based on Ubuntu 14.04 LTS, so we utilize Neurodebian repository for installation.

    Type the following in the command prompt.

    sudo apt-get update
    sudo apt-get dist-upgrade
    wget -O- http://neuro.debian.net/lists/trusty.us-nh.full | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
    sudo apt-key adv --recv-keys --keyserver hkp://pgp.mit.edu:80 0xA5D32F012649A5A9
    sudo apt-get update
    sudo apt-get install fsl
    

    (There are some mirrors of Neurodebian, so please check http://neuro.debian.net/ to find the closest mirror for you.)

    Here we do

    • Update repository
    • Update the system to the latest
    • Setup neurodebian repository
    • Get key for neurodebian repository
    • update repository again to enable neurodebian
    • Install FSL
  7. Add some lines to .bashrc
  8. Finally, type the following.

    echo ". /etc/fsl/fsl.sh" >> ~/.bashrc
    echo "export DISPLAY=localhost:0.0" >> ~/.bashrc
    

    This operation writes the following lines to .bashrc

    . /etc/fsl/fsl.sh
    export DISPLAY=localhost:0.0
    

    First line is necessary to run FSL, and the second line is to show the system where display is for GUI.

  9. Check the installation
  10. To enable change on .bashrc you need to exit bash once.

    exit
    

    Then type “bash” again.

    bash
    

    Then type

    fsl
    

    will bring up FSL menu.

    fslview
    

    will bring up FSLView.

Windows 10でFSLをネイティブ環境で起動する方法

FSL_on_Windows

2016年8月1日、Windows 10がAnniversary updateされました。
そこで、かねてから話題になっていたことですが、ついにUbuntuがWindowsに搭載されました。
ここ数年Ubuntuユーザーである私からしたら、別にどうってことないんですが、
これはWindowsで画像解析をやってきた方々には、すごく意味のある変化です。

Windows上でFSLが動かせる可能性が出てきた

ということですので。

早速、人柱的にやってみました。

普通に起動するところまでは成功しました!

  1. Windows 10 Anniversary Updateの入手(2016年9月9日現在、これはもうしなくて大丈夫です)
  2. まずはこれをしないことには話がはじまりません。(と書いていますが、2016年9月にはAnniversary Updateは普通に配布されているので、最新版に更新していただければ、終了です)

    Windows 10の「設定」→「更新とセキュリティ」に進んだ後、一番下にある「詳細情報」をクリックします。

    そうすると、Windows10の更新履歴のページが立ち上がるはずです。(直接左のリンクをクリックするのもありです)

    そこに「Anniversary Updateを入手する」とありますので、素直にクリックします。

    そうするとアップデートがはじまります。素直に従えば30分程度ですべて起動するはずです。

  3. Windows Subsystem for Linux(beta)の有効化
  4. 再起動後、スタートボタンを右クリックし、コントロールパネルを開きます。

    「プログラム」→「Windowsの機能の有効化または無効化」をクリックします。

    そうすると、ダイアログが開きますので、Windows Subsystem for Linux(beta)のチェックボックスにチェックを入れて「OK」とします。
    再起動を求められますので、再起動します。

  5. 開発者モードの有効化
  6. 次に、また「設定」→「更新とセキュリティ」に行きます。
    左側のメニューに「開発者向け」というものがあります。
    そこをクリックし、出てきた画面で、「開発者モード」を選択します。

    また再起動を要求されますので、再起動します。

  7. Xmingの入手
  8. 次に、Xmingを入手します。最新版はお金を寄付しないと入手できないようなので、無料版を手に入れます。
    こちらから入手できます。

    インストールはシンプルです。すべてデフォルトのままでOKです。

    早速起動します。といっても何もおきません。
    ただ、Windowsの右端のタスクバーを見ると、そこにちゃっかりといます。

    xming

    Xmingの上にマウスをもってくると、今の場合、Xming Server:0.0となっています。この0.0をあとで使います。

  9. bashの起動
  10. ここまで来たら、bashを起動します。

    まず、Windowsからコマンドプロンプトを起動します。簡単な方法は、メニュー左下の「何でもきいてください」というところに cmd とタイプすることです。
    そうすると、コマンドプロンプトが起動します。

    そこで

    bash
    

    とタイプしてください。
    そうすると、質問されますので “y” と答えると、bashのインストールがはじまります。
    そのうちに、ユーザー名とパスワードを設定するようにたずねられますので、それぞれ設定してください。

    ここでインストールされるものはUbuntu 14.04となります。

  11. FSLのインストール
  12. 次に、FSLをインストールします。

    下記をそのままコピペしてください。

    sudo apt-get update
    sudo apt-get dist-upgrade
    wget -O- http://neuro.debian.net/lists/trusty.jp.full | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
    sudo apt-key adv --recv-keys --keyserver hkp://pgp.mit.edu:80 0xA5D32F012649A5A9
    sudo apt-get update
    sudo apt-get install fsl
    

    何をしているかというと、

    ・リポジトリを更新します
    ・Ubuntuを最新の状態にアップデートします
    ・Neurodebianリポジトリを有効にします
    ・Neurodebianリポジトリのための鍵を入手します
    ・上記の作業を有効にするためにリポジトリを更新します
    ・FSLをインストールします

  13. .bashrcへの追記
  14. 最後に以下をタイプしてください。

    echo ". /etc/fsl/fsl.sh" >> ~/.bashrc
    echo "export DISPLAY=localhost:0.0" >> ~/.bashrc
    

    これは

    . /etc/fsl/fsl.sh
    export DISPLAY=localhost:0.0

    という2行を.bashrcというファイルに書き込みます。

    最初の行は、FSLの起動のために必要なコマンドで、
    2行目は、GUIを起動するためにbashにXmingがどこにあるかを伝えています。
    0.0は先ほどXmingで確認した数値です。もし、自分の環境で異なっていたら適宜修正してください。

  15. 起動確認
  16. 一度bashを終了します。

    exit
    

    とタイプしてください。
    そうすると普通にコマンドラインに戻るので、改めて

    bash
    

    とタイプしてください。

    そのうえで

    fsl
    

    とタイプすると、FSLが起動しないでしょうか。

    fslview
    

    でFSLViewも起動します。

    お試しあれ。
    今後、いろいろ動きが起こりそうです。
    ここ最近何回かやってきたシェルスクリプトの講習会などもより意味を持つようになってきますね。

FSLを用いたシェルスクリプト演習:脳3次元T1強調MRIの水平断一覧画像の作成

あるプロジェクトにおいて、「MRI画像の一覧画像を作成してもらいたい」という依頼を受けました。

イメージとしては、下記のようなものです。

LB_example

以前、FSLのシェルスクリプトチュートリアルを翻訳していた際に、演習に
Lightbox Viewerがあったのを思い出して、改めて、それを見ながら、さらに機能を追加したスクリプトを考えてみました。

作成しながら勉強になることがいくつもあったので、細かくわけてみたいと思います。

続きを読む

覚えておくと便利なFSLViewのオプション3つ

FSLViewを使うと、2つの画像を簡単に重ねあわせて表示できるわけですが、その際に様々なオプションを組み合わせることで画像をわかりやすく見せることができます。

主に3つ覚えておけば、結構いけるなと思いましたので、その3つを紹介します。

その3つとは、

  • -l (Lookup table)
  • -b (Brightness)
  • -t (Transparency)

です。

続きを読む

AFNIの3dresampleを使った画像のボクセルサイズの変更

これまで、MRI画像のボクセルサイズを変更する時に、簡単な方法がないなと思っていました。

コマンドひとつで簡単にできないかなといろいろ検索したところ、AFNIの3dresampleというプログラムに行き着きました。

書式は簡単です。
たとえば、ボクセルサイズを2mm x 2mm x 2mm にしたいとしたら、

$ 3dresample -dxyz 2 2 2 -prefix 出力画像 -inset 入力画像

となります。

入力画像、出力画像、ともにNIFTI画像(.nii, .nii.gz)が使えます。

FSLViewやITK-SNAPでは、2つの画像を重ねあわせる時、ボクセルサイズが一致していることが必須ですので、これを知っていることで、作業が簡単になるかもしれません。

続きを読む

fslmathsでproportional scalingをするワンライナー

Proportional scalingは割り算するだけなので大変ではありません。
スクリプトを書くまでもなく、ワンライナーでいけないかと思いました。
次のような感じでばっちりいけました。

必要なものはファイル名となんらかのglobalが記載されているテキストファイルです。ここでは、id_volume.txtとします。

$ cat id_volume.txt

filename1 1.34
filename2 1.43
filename3 1.36
...
filename4 1.47

それでは、本題です。

$ cat id_volume.txt | while read line; \
do id=`echo $line | awk '{ print $1 }'`; \
icv=`echo $line | awk '{ print $2 }'`; \
echo "ID=${id} and ICV=${icv}"; \
fslmaths ${id} -div ${icv} p${id}; done

これで、ファイル名の前にpがついたファイルができます。