脳画像解析のためのコマンドライン習得勉強会(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.

CONNチュートリアル 15: Second-level Analysis 群間比較

多くの方から、”Second-level Analysis”のチュートリアルを執筆するように言われていましたが、なかなか時間がとれなかったのでそのままになっていました。
ようやく、時間がとれたので second-level analysis にいきます。

First-level analysisで Done と押すと、以下のような画面になるはずです。

ここで、大事なのは、画面中央の “Subject effects” と “Between-subjects contrast” です。

CONNがすごいのが、SPMで設定するコントラストを自動で考えてくれるところです。

それでは、2群間の比較から行きましょう。

健常者より統合失調症でfunctional connectivityが落ちているところをまず探したいと思います。
年齢と性別は共変量として扱いましょう。

まずは、”Subjects effect” のところで、シフトキーを押しながら、

control
patients
age
gender

の4つを選択します。

次に、Between-subject contrastsで、”Any effects of interest” のところをクリックして、”control > patients”を選択します。

そうすると、上のコントラストが自動で [1 -1 0 0] となります。

つまり、SPMで自分で設定しなければいけないコントラストを、CONNは自動で設定してくれるのです。

そうすると、画面下に、統計の表があらわれます。

ただ、これは味気ないので、もう少しファンシーな結果を見ましょう。
画面左下にある “Results explorer” をクリックしてください。

これを見ていきます。

  • Define connectivity matrix
  • これは、connectivityの行列のサイズを示します。今は、164のROIを使っているとわかります。

  • Select seed ROI(s)
  • これは、左側にある図の seed がどれかを示します。今は、右前頭極がシードになっています。左側の絵が真っ黒ということは、右前頭極と相関をきたす領域で、統合失調症が健常者より落ちているconnectivityはなかったということになります。ちなみに、seedは、ひとつずつ変更していくと、左の絵が変わりますし、CtrlキーやShiftキーを使って複数選ぶことも可能です。下の”Select all”を選ぶと、ROIをすべて選ぶことになります。あたりをつけるために、やってみるといいと思います。今の場合でやった結果を下に示します。

  • Define thresholds
  • ここで統計の閾値を設定します。今は、FDRで多重比較補正をかけて p<0.05 となります。 閾値を変更したかったらここで変更します。

  • 統計結果
  • その下にあるのは、統計結果です。領域が出ているところを選択すると、左側でどのconnectivityかを示してくれます。

表示も変えてみましょう。

メニューの View -> axial view を選んでください。

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

きれいですね。

coronal, sagittalも同様です。

そして、3d viewを選択すると、以下のようになります。

これも素敵ですね。

こんな感じで結果を表示できます。

SPM12のアップデート (version 7219) がリリースされました

SPM12のアップデートのリリースが先ほどされました。

様々なバグ修正が行われています。
アップデートのREADMEを見ると、自分的に興味深いことを発見しました。
コマンドラインでですが、octaveでの動作ができるようにいろいろ試みられているようです。
バッチ処理などにmatlabなしでoctaveだけでできたら、応用範囲が一気に広がります。

すでにSPM12をインストールしている方々でしたら、アップデートは、Matlabから下記のコマンドを打てば自動でできます。

spm_update update

お試しあれ。

Ubuntu 16.04+fcitx+mozcで、viでインサートモードになる時は、mozcは起動させず、作業後にESCを押した時には、自動でmozcをOFFにする設定

私は、Ubuntu 16.04 (をカスタマイズしたLin4Neuro 16.04)でfcitx+mozcで日本語入力を行っています。
エディタはvimを利用しています。

多くの方がネットに記載されていますので、詳細は書きませんが、私がvimで日本語文書を書くとき、

  • 日本語で入力している時、入力が終わった後、ESCキーを押しても日本語入力の状態のままなので、一度mozcを切ってからでないと、ノーマルモードになれない。

という問題がありました。

この点に関して、私がよく参考にさせていただいている「いくやの斬鉄日記」にまさにこれに関する記事があり、中国語ですが、この問題を解決する .vimrc に記載する設定のリンクが紹介されていました。

早速、以下を ~/.vimrc に記載しました。(中国語のコメントは、英語に変換してあります)

"##### auto fcitx  ###########
let g:input_toggle = 1
function! Fcitx2en()
   let s:input_status = system("fcitx-remote")
   if s:input_status == 2
      let g:input_toggle = 1
      let l:a = system("fcitx-remote -c")
   endif
endfunction

function! Fcitx2zh()
   let s:input_status = system("fcitx-remote")
   if s:input_status != 2 && g:input_toggle == 1
      let l:a = system("fcitx-remote -o")
      let g:input_toggle = 0
   endif
endfunction

set ttimeoutlen=150
"Leave Insert mode
autocmd InsertLeave * call Fcitx2en()
"Enter Insert mode
autocmd InsertEnter * call Fcitx2zh()
"##### auto fcitx end ######

これでvimを起動したところ、日本語でいろいろ書いた後に、ESCを押してノーマルモードに戻ると、自動でmozcがoffになりました。やった!という感じです。

しかし、もう少し使っていて、不便に感じることがありました。それは、vimを起動して最初の挿入モードになるときに必ず mozc が立ち上がってしまうことです。日本語の文章を書くときはいいのですが、スクリプトを書くときは邪魔になります。ここは自動じゃないほうがいいなと思いました。

で、上の記載をよくよく見ると

Fcitx2en() というファンクションと
Fcitx2zh() というファンクションがあり、

前者はESCが押された時に自動でinput method (IM)をoffにする機能であり
後者は挿入モードになった時に自動でIMをonにする機能のようです。

私は後者の機能がいらないんだと気づきました。

なので、以下のように、Fcitx2zh()のところを削除しました。

"##### auto fcitx  ###########
let g:input_toggle = 1
function! Fcitx2en()
   let s:input_status = system("fcitx-remote")
   if s:input_status == 2
      let g:input_toggle = 1
      let l:a = system("fcitx-remote -c")
   endif
endfunction

set ttimeoutlen=150
"Leave Insert mode
autocmd InsertLeave * call Fcitx2en()
"##### auto fcitx end ######

こうしたところ、私の期待していたように

  • vimでノーマルモード→挿入モードになった時にはIMは起動しない
  • 必要時に手動でIMを起動
  • ESCを押すと自動でIMをoff

となりました。

これでvimがさらに便利になりました。
自分の備忘録として記載しておきます。

Ubuntu14.04, 16.04へのFreeSurfer 6.0のインストール

2014年12月にFreeSurfer 5.3のインストールの方法を記載しましたが、しばらく時間が経ちました。最近、FreeSurfer 6.0がリリースされましたので、コピペでもいけるぐらいにまとめてみます。

英語でのFreesurferをLinuxにインストールするときの具体的な方法は、
こちらに書いてあります。以下は英語を読むのがつらい方のためです。

なお、楽をしたい人は、一番最後にある【楽をするためのスクリプト】をご覧ください。

続きを読む