SPMの結果から閾値をこえる領域のすべての座標を求める方法

最近、ある方にこういう依頼を受けました。

「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列の行列です。
これは扱いにくいので、転置してあげると扱いやすくなります。

>&gt; A=xSPM.XYZmm;
>&gt; 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離れたピーク領域しか表示されませんが、このような方法を使えば自分が気になっている領域が入っているかどうかを確認できます。

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

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

imglob: command not found

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

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

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

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

続きを読む

MRIcroGL および dcm2niix の MacOSでのセットアップ方法

2019.01.07 追記: MRIcroGLは開発者のChris Rorden教授のGitHubから直接ダウンロードした方がバージョンが新しいので、こちらで案内することとしました。

DICOM -> nifti ツールとして dcm2nii が有名ですが、開発者の Chris Rorden は、 dcm2nii の開発はすでに終了しており、後継の dcm2niix の開発を継続しています。
dcm2niix は dcm2nii よりも変換速度が非常に速く、BIDS形式にも対応しているなど、使い勝手も向上しています。
MRIcroGLに搭載されていますので、MRIcroGLをインストールすることで使えますが、パスの設定を通しておかないともったいないのでその方法を記載します。

続きを読む

脳画像解析のためのコマンドライン習得勉強会(2019年2月10日)

(2018.12.05 満席となりました)

脳画像解析を行っていくうえで、コマンドラインに慣れることは必須です。
しかし、コマンドラインを習得するよいテキストはなかなかありません。
このため、脳画像解析を行ううえで有用なコマンドラインを習得するための勉強会を企画しました。

  • 日時:2019年2月10日(日)9:00-17:00
  • 場所:オフィス東京(東京駅八重洲口から徒歩5分)
  • 費用:無料
  • 定員:30名(先着順)

続きを読む

FSLなどで生成したFA画像を、FreeSurferのSurface画像に投影する方法

FreeSurferで画像解析をしていると、「他の画像解析ソフトで解析した画像をFreeSurferで表示できないだろうか?」という疑問が湧いてきます。
今回、慶応大の上田亮先生が、その方法を見出してくださいましたので、上田先生の了解を得て、その方法を説明します。
FSLで作成したFA画像を、FreeSurferのSurface画像に投影してみます。

続きを読む

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

続きを読む

Anacondaを用いたPython 2.x系と3.x系の使い分け

先日、Python 3.x系のAnacondaをLinuxにインストールする必要がありました。
これ自体はなんら問題がなかったのですが、FreeSurferを使っている時にひとつ問題が出ました。

FreeSurferの asegstats2table と aparcstats2table はPython 2.x系で書かれているスクリプトで、Python3系では動きません。

Ubuntuの場合、デフォルトだと

python or python2 –> Python 2.x系
python3 –> Python 3.x系

となっているため、

#!/usr/bin/env python

は、通常はpython2.x系を指します。

しかし、私のように、Python3.x系のAnacondaをいれると

$ python --version

とすると

Python 3.6.5 :: Anaconda, Inc.

となり、python3.x系が呼び出されているのがわかります。

どうしたものかと思いましたが、Anacondaのサイトにきちんと答えが書いてありました。

続きを読む

pipを用いたUbuntuへのANTsのインストール方法(ソースコードからのコンパイル)

しばらく前に、ANTsのUbuntu 14.04へのインストール方法(ソースからのコンパイル)という記事を書きましたが、最近のANTsは、cmakeのバージョンが3.10以上でないとコンパイルできなくなっていました。

方法を探してみましたが、cmakeのコンパイルを説明するページが圧倒的でした。
しかし、さらに探していたところ、pipを使えばすんなりいくことがわかりました。

pipは、pythonのパッケージ管理システムで、この中にcmakeも入っています。

ということで、改めて記事を書いていきます。

続きを読む

第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名(先着順)
  • 参加費:無料

Rとigraphを使ったネットワーク解析と可視化

Rで用いることのできるネットワーク解析ツールに igraph があります。
何かよいチュートリアルがないかと探していたところ、Katherine Ognyanova女史によるすばらしいチュートリアルを見つけました。

とてもよいものだったので、ぜひ日本語化したいと思い、Ognyanova女史に翻訳の許可を求めたところ、快諾してくださいましたので、我々の研究室の田村昌士先生が中心に翻訳してくださいました。

以下に公開します。

Rとigraphを使ったネットワーク解析と可視化のチュートリアル

Ubuntu上でのVirtualBoxで仮想マシンを立ち上げようとしたときに Kernel driver not installed (rc=-1908) のエラーが出た場合の対処方法

自分が頻回に遭遇するエラーなので、備忘録として載せておきます。

Ubuntuでカーネルをアップデートすると、VirtualBoxを起動するときに、以下のエラーが出ます。

このエラーがでたときに、このまま

sudo /sbin/vboxconfig

としてもエラーが出て解決しません。(細かいエラーを保存し忘れました)

解決方法はシンプルで、新しいカーネルにあったカーネルヘッダーをインストールすることです。

以下に具体的な解決法を示します。

  1. カーネルのバージョンを確認
  2. $ uname -r
    4.15.0-22-generic
    

    今の場合、4.15.0-22-generic であることがわかります

  3. 該当するバージョンのカーネルヘッダーをインストール
  4. 上記を賢く使ってインストールします。

    $ sudo apt update
    $ sudo apt install linux-headers-$(uname -r)
    

    これでカーネルヘッダーがインストールされます

  5. /sbin/vboxconfig の実行
  6. $ sudo /sbin/vboxconfig 
    vboxdrv.sh: Stopping VirtualBox services.
    vboxdrv.sh: Building VirtualBox kernel modules.
    vboxdrv.sh: Starting VirtualBox services.
    

    これで無事にVirtualBoxの仮想マシンが起動するようになります。

VirtualBox上でUbuntuの画面が乱れてしまった時の対処法

VirtualBox上にUbuntu (正確にはLin4Neuroなのですが)をインストールしたところ、下図のように画面が乱れるという現象が再現性をもって起こりました。

ログイン画面が表示されているのですが、これでは全く使いものになりません。

いろいろ調べていたのですが、なかなかわからなかったのですが、ふと、「仮想ターミナルを立ち上げて戻ってきたらどうだろう?」と思い、試したところ解決しました。

VirtualBoxのHotkey (デフォルトは右Ctrl) + F1 を押します。

私の環境で、 右Ctrl + F1 を押すと以下のようになりました。

きれいに見えます。

ここで、さらに、Hotkey + F7 を押します。

私の環境では、右Ctrl + F7 を押してみました。

なんときれいになりました。

忘れないようにメモとして残しておきます。

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

Ubuntu 14.04/16.04 を使った exFAT形式のフォーマット

USBメモリは多くの場合、FAT32形式でフォーマットされています。これは汎用性がありますが、4GBの壁があり、4GBをこえるファイルは使うことができません。

WindowsにはNTFS形式があり、これは4GBを超えて保存できますが、MacでNTFSでフォーマットされたUSBメモリを読み込むにはひと手間必要です。

では、WindowsでもMacでもLinuxでも4GB以上のファイルをUSBメモリで扱うにはどうしたらいいでしょうか。
それに対する答えのひとつが exFAT形式です。
exFAT形式は、Microsoftが主にリムーバブルメディア向けに開発したファイルシステムだそうです。WindowsでもMacでも普通に読み込むことができます。

Ubuntuでもソフトウェアを2つ入れればすぐに使えます。それはexfat-fuse と exfat-utilsです。

Ubuntu 14.04の場合は、PPA経由で入れます。

sudo apt-add-repository ppa:relan/exfat
sudo apt-get update
sudo apt-get install exfat-fuse exfat-utils

Ubuntu 16.04は本家から普通に入れられます。

sudo apt-get update
sudo apt-get install exfat-fuse exfat-utils

それで、フォーマットの仕方は非常に簡単です。

sudo mkfs -t exfat [ -n 名前 ] デバイス

もしくは

sudo mkfs.exfat [ -n 名前 ] デバイス

mkfs -t exfatも、mkfs.exfatも mkexfatfs へのシンボリックリンクのようです

たとえば、/dev/sdf を DATA と名づけたい場合

sudo mkfs.exfat -n DATA /dev/sdf

となります。

フォーマットが非常に速くて便利です。

クロスプラットフォームで4GB超の大容量ファイルが扱えるのと、フォーマットの速さが魅力的なので今はUSBメモリはとりあえず exFAT にフォーマットしてから使用するようになりました。

Ubuntu 16.04への MRtrix3 インストールスクリプト

先日、ABiSチュートリアルで順天堂大学の鎌形先生から、FSL, FreeSurfer, MRtrix3を組み合わせたコネクトーム解析の素晴らしい講義を聞く機会がありました。

MRtrix3はインストールしなきゃと思いつつできていませんでしたが、せっかくですから、モチベーションが高いうちにインストールしようと思い、Ubuntu 16.04へのインストールを行いました。

http://mrtrix.readthedocs.io/en/latest/installation/linux_install.html

こちらに説明がありますが、これをまとめてみました。

関心のある方はこちらからダウンロードしてみてください。(右クリック→名前をつけて保存)

保存した後、

$ chmod 755 mrtrix3_installer_ubuntu1604.sh
$ ./mrtrix3_installer_ubuntu1604.sh

でインストールができます。

ちなみに、上記スクリプトは以下のようになっています。
GitHubからダウンロードし、コンパイルし、.bashrcにパスを通すというシンプルなことをやっています。

#!/bin/bash
#Script to setup mrtrix3 for Ubuntu 16.04

#Install prerequisite packages
sudo apt-get install git g++ python libgsl0-dev zlib1g-dev libqt4-opengl-dev libgl1-mesa-dev libqt5svg5* libeigen3-dev

#Download MRtrix3 source
if [ ! -e $HOME/git ]; then
 mkdir $HOME/git
fi

cd $HOME/git
git clone https://github.com/MRtrix3/mrtrix3.git

#Configuration and build
cd mrtrix3
./configure
./build

#.bashrc
echo >> $HOME/.bashrc
echo "#MRtrix3" >> $HOME/.bashrc
echo 'export PATH=$PATH:$HOME/git/mrtrix3/bin:$HOME/git/mrtrix3/scripts' >> $HOME/.bashrc

How to make a UEFI-based bootable USB stick with Ubuntu mini.iso

Ubuntu mini.iso is useful when we want to build a system with minimal packages.
It is useful to make a bootable USB stick.
Below is how to make UEFI-based bootable USB stick with Ubuntu mini.iso.

Required package: 7-zip

You can get 7-zip with the following command;

sudo apt install p7zip-full

Now we will use “7z” command.
Two options are needed. “x” for extract and “-o” to specify output directory. If the directory doesn’t exist, 7z creates automatically.

  1. Extract iso image into a directory
  2. Now I want to extract images into “usbdisk” directory.

    7z x -ousbdisk mini.iso
    

    This will make “usbdisk” directory and extract into the directory. Note that no space is allowed between “-o” and target directory. I tried space or quotation, without success.

  3. Extract efi.image under boot/grub
  4. One more thing. In order to make the USB stick bootable with UEFI, we need to extract efi.img under boot/grub. This can be easily done with the following command. (You don’t have to change directory.)

    7z x -ousbdisk usbdisk/boot/grub/efi.img
    

    This command will extract efi.img, which will be “efi” directory under which bootx64.efi and grubx64.efi exist into the usbdisk directory.

  5. Copy the contents under “usbdisk” to USB stick
  6. Finally we just copy the contents under usbdisk to a USB.

That’s it. Now try to boot from USB disk.

Install igraph in R-studio on Ubuntu 16.04

I tried to install igraph simply by running install.packages(‘igraph’), which resulted in compile error.
Gathering information scatterd on websites, I came to the conclusion.

My Circumstance is as follows;

Ubuntu
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial

$ uname -a
Linux vincent 4.10.0-42-generic #46~16.04.1-Ubuntu SMP Mon Dec 4 15:57:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

R-studio
Version 1.1.383

sudo apt update
sudo apt install libssl-dev libcurl4-openssl-dev libxml2-dev

Then running install.packages(‘igraph’) in R-studio succeeded without error.