共変量⊂Covariateではあるが、共変量=Covariateではない

SPMを使っていると、Covariateという単語がよく出てきます。
Covariateを日本語に訳すと、「共変量」となりますが、SPMでのCovariateはもうちょっと広い気がしていました。
Matthew BrettのIntroduction to SPM statisticsを翻訳したものに対し、他の先生方からご指摘をいただき、改めて検討してみました。

Wikipedia英語版では、covariateについて以下のように説明されています。

In statistics, a covariate is a variable that is possibly predictive of the outcome under study. A covariate may be of direct interest or it may be a confounding or interacting variable.

ここで、covariateは結果を予測する変数であり、直接関心のある変数のこともあれば、そうでないこともあると書かれています。日本語の「共変量」の意味するところは、後者のことだけを指しますので、英語のcovariateの方が広義ということになります。

Wikipediaに戻ります。

The alternative terms explanatory variable , independent variable , or predictor, are used in a regression analysis . In econometrics , the term “control variable” is usually used instead of “covariate”.

上記で述べたように、covariateは説明変数、独立変数、予測因子とも表現されると書かれています。

さらに、以下のようにも述べられています。

In a more specific usage, a covariate is a secondary variable that can affect the relationship between the dependent variable and other independent variables of primary interest.

ここで、「より狭義の意味では、covariateは従属変数と最も関心のある独立変数との関係に影響を与える二次的な変数である」となっています。これがまさに日本語に訳されるところの「共変量」ということになります。

つまり、covariateには、広義のcovariateと狭義のcovariateがあり、狭義のcovariateは日本語で言うところの共変量を指し、広義のcovariateは、回帰分析における説明変数のような変数も入ってくるわけです。

ということで、タイトルになるわけですが、SPMにおいては、共変量⊂Covariateではあるが、共変量=Covariateではないということに注意が必要です。
説明をするときには気をつける必要がありますね。

Freesurferのインストール Step by Step

注意:このポストは古いものです。より、新しいガイドは下記から見れます。
以下をご参照ください。

http://www.nemotos.net/?p=1012

以前、Freesurferのインストールを手伝ったことがあったのですが、そのときの文章が出てきたので、以下に記載しておきます。
ちなみに英語でのFreesurferをLinuxにインストールするときの具体的な方法は、
http://surfer.nmr.mgh.harvard.edu/fswiki/LinuxInstall
に書いてあります。以下は英語を読むのがつらい方のためとでもとっておいてください。

まず、ルートになります。

その後、ダウンロードしてきたファイルを/usr/localにうつします。
安全のためにコピーすることにしましょうか。
落としてきたディレクトリから、以下のコマンドをうってください。

# cp freesurfer-Linux-xxxxx-full.tar.gz /usr/local

となりますね。xxxxは落としてきたバージョンによって変わります。まぁ、基本的に
補完機能を使って、freeまでタイプして後はTabを押せば終わりですけどね。
そしたら、次に/usr/localに移ります。

# cd /usr/local/

そこで、ファイルを解凍します。

# tar -xvf freesurfer-Linux-xxxxx-full.tar.gz

これで、ディレクトリ構造を保ったまま解凍してくれます。
この後、FREESURFER_HOMEは、常に/usr/local/freesurfer
となります。
その後、ライセンスファイルを作成する必要があります。
ダウンロードする前にRegistrationをしますが、登録時のメールアドレスにメールが送られてきます。
その内容をコピーします。
Freesurferのホームディレクトリに移動します。
(とりあえず絶対パスを書いておきます。)

# cd /usr/local/freesurfer

GNOME環境で、初心者ならば、geditなんてエディタがとっかかりやすいかもしれません。

# gedit .license

そうすると、GUI環境でのエディタが立上りますので、そこにメールの内容をコピーして保存します。
これでライセンスファイルが作成されます。
ここまでできたらルートを抜けてください。

# exit

その後、ホームディレクトリに戻ってください。

$ cd

linuxはcd
とだけ打つと勝手にホームに戻ってきてくれます。僕はこれが好きですね。
その後、今度はシェルが立ち上がったときに常にfreesurferが動く設定にします。
今のLinuxのベースのシェルはたいていbashだと思います。freesurferのページにはtcshがいいと書いてありますが、別にbashで問題ないと思いますし、現に私はbashで使用しています。
エディタで.bashrcを立ち上げます。

$ gedit .bashrc

このファイルの文末に以下の2行をコピペしてください。

export FREESURFER_HOME=/usr/local/freesurfer
source $FREESURFER_HOME/SetUpFreeSurfer.sh

そして保存してください。
これでfreesurferのインストールは終わりです。
で、実際に動くかどうかのテストですが、
シェルを立ち上げていただくと、私の場合、以下のようなメッセージが出てきます。(私のは64bit環境です)

——– freesurfer-Linux-centos4_x86_64-stable-pub-v4.5.0 ——–
Setting up environment for FreeSurfer/FS-FAST (and FSL)
FREESURFER_HOME /usr/local/freesurfer
FSFAST_HOME /usr/local/freesurfer/fsfast
FSF_OUTPUT_FORMAT nii
SUBJECTS_DIR /usr/local/freesurfer/subjects
MNI_DIR /usr/local/freesurfer/mni
hogehoge@hogehoge:~>

こんな感じでしょうか。

LaTeXで横長の表を90度回転させて配置する方法

今、ある論文をLaTeXを用いて書いています。
表を入れたいのですが、大きくて、横にしなければ入りません。
LaTeXでどうすればいいのか調べました。
ポイントは2つ。
最初に、プリアンブルに

\usepackage{lscape}

を記載すること。

次に、横にしたいところで、

\begin{landscape}
\end{landscape}

とすること。

シンプルな解決方法ですっきりしました。

Ubuntu 10.04 (Lucid) 以降でsplash画面をカスタマイズしたいとき… (plymouthの使い方)

Ubuntu 10.04になってからsplash画面を制御するのがplymouthというものになったようです。
これを用いてsplash画面をカスタマイズするのに難渋したので備忘メモ。
kubuntuのsplash画面がカスタマイズするのにいい勉強になったので、kubuntu-logoというテーマをもとにカスタマイズしています。
*なお、この方法は、12.04でも有効でしたので、タイトルを修正しました。

  1. *.script, *.pngなどが入っているテーマを見つけます。
  2. といってもそれはすぐにはわからないので、とりあえず、apt-cache searchでテーマを見つけます。

    $ sudo apt-cache search theme

  3. 適当にテーマをインストールしてみます。
  4. 上述のように、カスタマイズしやすかったのが、kubuntuのテーマでした。

    $ sudo apt-get install plymouth-theme-kubuntu-logo

  5. テーマは/lib/plymouth/themeの中にインストールされます。なので、そこに移動します。
  6. $ cd /lib/plymouth/themes/kubuntu-logo

    テーマの中身は以下のようになっています。

    $ ls
    kubuntu-logo.plymouth password_field.png progress_dot_on.png
    kubuntu-logo.script password_field16.png progress_dot_on16.png
    kubuntu_logo.png progress_dot_off.png kubuntu_logo16.png
    progress_dot_off16.png

    ここで、
    kubuntu-logo.script: これをカスタマイズしていきます。
    kubuntu-logo.png: splash画面での真ん中に現れる”kubuntu”のロゴ画像です。
    progress_dot_*.png: 起動時にロゴの下で点滅するドットの画像です。
    ここでは、scriptをいじって背景の色を変えてみて、そしてlogoの画像を変更し、dotの画像の色を変えることでカスタマイズすることとしました。

  7. scriptの中身をいじります。背景の色は以下をいじります。
  8. ( )内にある3つの数値はそれぞれRGBを表し、0と1の間の数値を指定するのだそうです。TopColorは画面の一番上で、BottomColorは画面の一番下で、上から下に向かってグラデーションがかかっていくことになります。

    Window.SetBackgroundTopColor (0.00, 0.28, 0.45);
    Window.SetBackgroundBottomColor (0.00, 0.28, 0.45);

  9. splash画面に表示させたい画像は以下で指定します。
  10. 従って、自分で画像を用意して、下のファイル名を変更すればいいことになります。

    logo_filename = "kubuntu_logo.png";

  11. 起動時に点滅するドットは以下で規定されています。これも元画像をもとに、色を変えればいいことになりますね。
  12. progress_dot_off_filename = "progress_dot_off.png";
    progress_dot_on_filename = "progress_dot_on.png";

  13. プレビュー
  14. 以上のところをいじってあげたら、プレビューします。プレビューには、以下の方法がいいかと思います。

    $ sudo plymouthd #plymouthのデーモンを立ち上げます。
    $ sudo plymouth --show-splash

    ちなみに終わるときは、sudo plymouth –quitです。

  15. 変更を反映させる(ここがキモ)
  16. Splashの変更を反映させます。ここは忘れがちなのであえて書いておきます。initramfsなるものをアップデートする必要があります。

    $ sudo update-initramfs -u

    これで、次回からsplash画面が変更されます。

    上記だけでは、テーマを変えたときに他に変わってしまいます。
    自分のものとしてきちんとインストール方法は以下にあります。

    https://forums.ubuntulinux.jp/viewtopic.php?pid=77654

    23/July/2012追記: 上記のリンクはよく参照するので、以下に転載します。

    plymouthのテーマは1から作るのは大変なので、既存のテーマを変更する方法がいいです。
    まず、ベースにするテーマをインストールします。全画面自作画像が良ければplymouth-theme-sabilyパッケージがおすすめです。(以下このパッケージを元に説明します)

    $ sudo apt-get install plymouth-theme-sabily

    インストールしたテーマは/lib/plymouth/themes/sabily内にあります。このフォルダをコピーして、コピー先を編集するようにします。

    $ sudo cp -R /lib/plymouth/themes/sabily /lib/plymouth/themes/mytheme
    $ gksu nautilus /lib/plymouth/themes/mytheme

    bg_2560x1600.png: 背景画像(PNGでなければなりません。GIMPなどで変換してください。サイズがあまり大きくならないようにしましょう。)
    sabily-logo.png: 中央に表示されるロゴ。この下に点滅する点が表示されます。
    sabily.plymouth: 名前をmytheme.plymouthなど、分かりやすいように変えておきます。
    (画像など、他のファイルの名前も変えていいですが、その場合はsabily.scriptやsabily.plymouthの中身も編集する必要があります。)

    一通り編集したら、次のコマンドにより自作テーマをインストールします。

    $ sudo update-alternatives --install /lib/plymouth/themes/default.plymouth default.plymouth /lib/plymouth/themes/mytheme/mytheme.plymouth 100

    この段階ではインストールされただけで、テーマの変更は行われていません。表示されるテーマの変更は次のコマンドにより行います。

    $ sudo update-alternatives --config default.plymouth
    番号の入力を求められるので、自作テーマのファイル名が書かれた行の先頭にある番号を入力し、Enterキーを押してください。

    これで完了です。
    以下の方法により再起動せずにテーマの確認を行えます。
    まず、plymouth-x11をインストールします。

    $ sudo apt-get install plymouth-x11

    plymouthデーモンの起動、表示、終了は以下のとおりです。

    $ sudo plymouthd
    $ sudo plymouth show-splash
    $ sudo plymouth quit

wodim (旧cdrecord) を用いてisoイメージをCDに焼く方法

LinuxでisoイメージをCDやDVDに焼きたいとき、簡便な方法があります。
シェルからwodimを使う方法です。
以前は、いろいろ確認することも必要だったようですが、改めてmanページを見たら、もっとシンプルにできるのではないかと思いました。

インストールは以下で簡単にできます。

sudo apt install wodim

今、hogehoge.isoというファイルがあったとします。これをCDに焼きたいとすると…

  1. もっともシンプルな方法
  2. hogehoge.isoがあるディレクトリにいきます。
    そこで、これを打つだけ。

    $ wodim hogehoge.iso
    

    そうすると、自分の環境ではこんなメッセージが出てきました。

    wodim: No write mode specified.  #書き込みモードが特定されていないよって注意されていますね。
    wodim: Asuming -tao mode.    # -taoモードでいくよと。Track at Onceの略ですね。
    wodim: Future versions of wodim may have different drive dependent defaults.
    wodim: Operation not permitted. Warning: Cannot raise RLIMIT_MEMLOCK limits.Device was not specified. Trying to find an appropriate drive…
    Looking for a CD-R drive to store 696.71 MiB… #書き込みデバイスが特定されていないので、いいものを見つけにいくよと。
    Detected CD-R drive: /dev/cdrw  #いいCD-R driveを見つけてくれたようです。
    Using /dev/cdrom of unknown capabilities
    Device type : Removable CD-ROM #以下、自分のCD-Rドライブの説明をしてくれていますね。
    Version : 5
    Response Format: 2
    Capabilities :
    Vendor_info : ‘_NEC ‘
    Identification : ‘DVD_RW ND-3540A ‘
    Revision : ’1.01′
    Device seems to be: Generic mmc2 DVD-R/DVD-RW.
    Using generic SCSI-3/mmc CD-R/CD-RW driver (mmc_cdr).
    Driver flags : MMC-3 SWABAUDIO BURNFREE
    Supported modes: TAO PACKET SAO SAO/R96R RAW/R96R
    Speed set to 5645 KB/s
    Starting to write CD/DVD at speed 32.0 in real TAO mode for single session. #32倍速で書き込むよと言ってますね。
    Last chance to quit, starting real write in 0 seconds. Operation starts. #今だったら中止できるよ、どうする?と聞いてきてます。
    Track 01: Total bytes read/written: 730554368/730554368 (356716 sectors).
    

    と、こんな感じでやってくれるのです。GUIを立ち上げてやるよりずっと楽です。

  3. これでうまくいかない場合
    1. ドライブを確認します。
    2. 次のようにコマンドを実行します。

      $ wodim -scanbus
      

      自分のマシンでは、こんな結果がはき出されました。

      scsibus1:
      1,0,0     100) ‘_NEC ‘ ‘DVD_RW ND-3540A ‘ ’1.01′ Removable CD-ROM
      1,1,0     101) *
      1,2,0     102) *
      1,3,0     103) *
      1,4,0     104) *
      1,5,0     105) *
      1,6,0     106) *
      1,7,0     107) *
      

      1,0,0というのがデバイス名になるらしいです。

    3. 書き込みをする場合、次のようにします。
    4. $ wodim dev=1,0,0 speed=8 -v hogehoge.iso
      

      ちなみにspeedで倍速を決定し、-vは「いろいろ表示しなさい」というverboseオプション(個人的にはおせっかいオプションと言っています)ですね。

      もし、ATA接続だった場合、dev=ATA:1,0,0のように書くようです。

Linuxでhomeディレクトリ以下の日本語ディレクトリを英語に変えたい

最近のLinuxディストリビューションでは、日本語版をインストールすると、ホームディレクトリ以下のサブディレクトリが日本語で表示されるようになっています。
これは便利なようでいて、シェルを多用する人にはかなり不便だったりします。

Ubuntu, openSUSEで確認しましたが、以下のような方法で英語に戻すことができます。

$ LANG=C xdg-user-dirs-gtk-update

注意しなければいけないこととしては、スーパーユーザーでなく、一般ユーザーとしてこのコマンドをうつ必要があるということです。
また、既にディレクトリの中にファイルがある場合、英語名でのディレクトリは作成されますが、日本語名のディレクトリは残ります。その中のファイルは手動で移動する必要があります。

また、ときにこれが動かないことがあります。
コマンドを打っても何も反応しないのです。
(その理由ははっきりしないのですが…)
そんなときには、以下のコマンドを打ちます。

$ xdg-user-dirs-update --force

このあと、もう一度

$ LANG=C xdg-user-dirs-gtk-update

とすると、設定ダイアログが出て、英語のディレクトリ名に変更することができます。

Imagemagickを使用してWindowsでもEPS画像を簡単に作る方法

かつて、Linux上で動くEPS画像への変換スクリプトを書きましたが、ふと考えたらImagemagickを使えばWindows上でもEPS画像への変換は簡単にできるのではないか?と思いました。

実際に簡単にできたので記載しておきます。

まず、下記のリンクから、Imagemagickをインストールします。
http://www.imagemagick.org/script/index.php

そして、コマンドプロンプトを開き、画像があるディレクトリに移動します。

hogehoge.pngという画像をEPSに変換したいとするならば、以下のようにうちます。

convert hogehoge.png eps2:hogehoge.eps

これだけです。今までEPS画像を作成するのにいろいろ苦労していましたが、これで簡単に作成できるようになりました。

Linux上でPNG画像をEPS画像に変換するスクリプト

最近、LaTeXを用いて文章を作る機会が増えています。
画像を入れる際に、EPS画像だと使い勝手がいいのですが、スクリーンショットなどを変換するのにいい方法はないかと思っていました。

ググったところ、こんなページを見つけました。

画像ファイルをepsに変換してLaTeXで使う

これは便利。
早速、とっても小さなスクリプトですが、友人からアドバイスをもらって、一括処理するスクリプトを書いてみました。

#!/bin/sh
for f in $*
do
  convert $f `echo eps2:$f | sed 's/png$/eps/'`
done

これで複数のPNG画像を一括してEPS画像にできるのでとっても便利です。

友人のコメントが勉強になりましたので、それも記載しておきます。

バッククォートで何らかの処理を囲み、その結果として返される文字列を更にシェルで利用する方法は、一度身につけると相当便利に使えるので、オススメです。
たとえば私は以下の処理を、mkdatedir という alias にして使っています。

mkdir `date '+%Y%m%d'`

確かにこれは便利ですね。Linuxのシェルを使いこなすコツの一つはバッククォートにあるということですね。

png2eps.shをダウンロード

A study of FSLUTILS: a script to convert image files into NIFTI format

FSL has a set of many useful command-line utilities. One of the utilities is “fslchfiletype” which can change the file type of an image (e.g. from ANALYZE to NIFTI).

Using this utility, I wrote a very tiny script with which one can convert many types of image files into NIFTI format. This is very effective if you have many ANALYZE format files and want to convert them into NIFTI format in one shot.

#!/bin/sh
#Image file type converter using fslchfiletype
#This script converts image files into NIFTI format files.
for f in $*
do
  fslchfiletype NIFTI $f
done

Download image2nii.sh

A study of SPM script: Data type converter

I’m learning how to make a script for SPM.
Below is a simple script which converts the data type of the image file.
It should work for both SPM8 and SPM5.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Data type converter
%Convert the data type (uint8, int16, int32, float32, float64)
%Usage
%Change the value at line 26(options.dtype) to the datatype you want.
%Kiyotaka Nemoto 2 Jan 2010
P = spm_select(Inf,’image’,'Select Files to be converted’);
for i=1:size(P,1)
ref = deblank(P(i,:));
[pth,nam,ext] = spm_fileparts(ref);
odir = pth;
cvt = ['d' nam '.nii'];
matlabbatch{1}.spm.util.imcalc.input = {ref};
matlabbatch{1}.spm.util.imcalc.output = cvt;
matlabbatch{1}.spm.util.imcalc.outdir = {odir};
matlabbatch{1}.spm.util.imcalc.expression = ‘i1′;
matlabbatch{1}.spm.util.imcalc.options.dmtx = 0;
matlabbatch{1}.spm.util.imcalc.options.mask = 0;
matlabbatch{1}.spm.util.imcalc.options.interp = 1;
matlabbatch{1}.spm.util.imcalc.options.dtype = 4;
% uint8=2; int16=4; int32=8; float32=16; float64=64
spm_jobman(‘run’,matlabbatch);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Download datatypeconv.m

Installing N3 (mni-n3) on Ubuntu 10.04 (Lucid Lynx) 64bit

Note: This article is pretty old. Now you can install MINC toolkit more easily. Please see the instruction in http://www.bic.mni.mcgill.ca/ServicesSoftware/ServicesSoftwareMincToolKit. (24 Oct 2014)

We have few resources how to install N3 on Ubuntu. I could successfully install N3 (aka mni-n3) on Ubuntu 10.04. I write down what I did.

NB: This is only for 64bit Ubuntu 10.04. They don’t maintain 32bit binary for minc.
The following commands must be executed with root privileges (use sudo) except for the last one.

  1. Add the repository for minc-related software to your /etc/apt/sources.list.
  2. You can do this by adding the following line to the /etc/apt/sources.list.

    #MINC software
    deb http://packages.bic.mni.mcgill.ca/ubuntu-lucid/ ./

    Note: You have to include “./” at the end of the line.

  3. Refresh repository
  4. $ sudo apt-get update

  5. Install N3
  6. Through many trials and errors, I found out that we have to specify the following 4 packages; minc, minc-tools, n3, and libmni-perllib-perl to have n3 work properly. Of course you can install other packages such as mni-autoreg, register, display, or mincblob. (However, I haven’t fully tested about these packages.)

    $ sudo apt-get install libmni-perllib-perl minc minc-tools n3

    Note: Ignore the Warning: “The following packages cannot be authenticated!” and press Y when asked: “Install these packages without verification [y/N]?”

  7. Configure the path
  8. Add the phrase “export PATH=/usr/local/bic/bin:$PATH” in your .bashrc file (located in your home directory). You don’t have to be root doing this.

Now you are ready to use N3 on your Ubuntu 10.04!

VBM8マニュアル 日本語版

VBMをされている方ならばChristian Gaserが開発しているVBM-toolsについて聞き及んだことがあると思います。
彼の許可を得て、このたびVBM8のマニュアルを訳しました。
訳がこなれていないところはありますが、英語を読むのがつらい方には多少はお役に立つかと。
それにしても、この世界にいる方々はみんな親切で協力的です。とてもありがたいことですね。

VBM8日本語マニュアルをダウンロード

*21/Aug/2013 リンク先をChristian Gaserのページに変更しました。
縦断解析の行列のところに修正がかかっています。
修正版をダウンロードしてご使用いただけたらと思います。
ご指摘いただいたM先生ありがとうございました。

VBMチュートリアル日本語版

これまで日本語でのVBMのドキュメントは非常に限られたものでした。
いいものが出てこないかなと思っていましたが、なかなか出てこないので、思い切って自分で日本語のドキュメントを作成してみました。といっても他の方々の協力をたくさん得てですが。

オリジナルは2010年5月にEdinburghで開催されたSPM couseのVBMクラスで使われた資料です。John Ashburner氏がSPMのメーリングリストで公開されていましたので、Johnから翻訳の承認をもらったうえで、翻訳しました。翻訳を助けてくださった高橋先生、草稿に目を通してくださってアドバイスをくださった松尾先生に感謝いたします。

興味のある方は以下のリンクからPDFをダウンロードしてみてください。

VBMチュートリアル日本語版

SPMのセットアップ方法

包括型脳科学研究推進支援ネットワークで、2011年1月16日に、ワークショップ「精神疾患の画像研究スタートアップ」が行われました。

私がそこで参加者の皆様にお配りしたSPMのセットアップに関しての手引きに関していくつかリクエストをいただいたので公開します。

SPMのセットアップに困っている方々のお役に立つかもしれません。

SPMのセットアップ方法をダウンロード

Introduction to SPM statistics 日本語版 (SPM統計入門)

私がSPMについて学び始めたころ、SPMの統計のところについての入門書的なリソースがないか探していた時に、Matthew Brett氏のIntroduction to SPM statisticsに出会いました。1999年に書かれたものなので、SPM96とSPM99を対象に書かれていますが、原則は同じですので、今でも十分に役立ちます。SPMの統計の基本を学びたい方にとっては必読と思います。

このたび、Matthew Brett氏から許可を得て日本語に翻訳しました。SPMの日本語リソースがまだまだ少ない中、お役に立てれば幸いです。

SPM統計入門(PDF)をダウンロード

AC-PC line

AC-PCラインについて聞かれることが時々あるので、BrainMapping.org Wikiの1ページを簡単に訳すことにします。僕はこのページでAC-PCについて勉強しました。

下に示すのは、Chris Rordenによって描かれた脳の矢状断のイラストです。前交連(anterior commissure; AC)は赤で示され、後交連(posterior commissure; PC)が黄色で示されています。Talairachのアトラスによると、公式には、AC-PCラインは、図に示すように、ACの上端から出発し、PCの真ん中を通ります。

これをMNI標準脳で示したものが以下になります。ACは赤線が交叉するところになります。

J. Talairach and P. Tournoux, “Co-planar Stereotaxic Atlas of the Human Brain: 3-Dimensional Proportional System – an Approach to Cerebral Imaging”, Thieme Medical Publishers, New York, NY, 1988

Run SPM2, SPM5, and SPM8 concurrently

Many SPMers use different versions of SPM. We can run different versions of SPM in one computer, but we need to set MATLAB path carefully.

I had some discussion with Volkmar Glauche and Guillaume Flandin, who kindly gave me advice how to write the script for running diferrent spms.

Below is the scripts which enables us to run SPM2, SPM5, and SPM8 concurrently.

  1. make a directory where you want to save scripts. (e.g. ~/spm_paths/)
  2. add the directory to the path in Matlab. (File -> Set Path -> Add path)
  3. put spm_rmpath.m in SPM2 folder.
  4. You find this file in SPM5 or SPM8 directory. You can just copy it from SPM5/8 to SPM2 directory.

  5. write scripts to run spm2, spm5, and spm8
  6. suppose your spm2, spm5, and spm8 directories are “/usr/local/spm2″, “/usr/local/spm5″, and “/usr/local/spm8″. (change the pathname to your circumstance)

    %%%%%%%%%%%%%%% spm2.m
    % remove spm path
    while true
    try, spm_rmpath; catch break; end
    end
    % add spm2 path
    addpath /usr/local/spm2;
    % run spm2
    spm;

    %%%%%%%%%%%%%%% spm5.m
    % remove spm path
    while true
    try, spm_rmpath; catch break; end
    end
    % add spm5 path
    addpath /usr/local/spm5;
    % run spm5
    spm;

    %%%%%%%%%%%%%%% spm8.m
    % remove spm path
    while true
    try, spm_rmpath; catch break; end
    end
    % add spm8 path
    addpath /usr/local/spm8;
    % run spm8
    spm;

    (Of course you can add any paths you like between “addpath /usr/local/spm/spm2/5/8″
    and “spm”)

  7. save these scripts in the directory ~/spm_paths/
  8. In a matlab window, type “spm2″
  9. In another matlab window, type “spm5″
  10. In another matlab window, type “spm8″

Now you can run different versions of SPM concurrently.

Matlab script for automatic AC-PC setting in SPM5, 8, or 12

ON 17 Oct 2008, Carlton Chu posted a nice script to SPM mailing list.
Though it doesn’t have any response from the list, I find it very useful, so I introduce the script on my blog.

The purpose of the script is simple: Set AC-PC automatically for you!

Though it takes time (around 5 minutes per subject in my circumstance), It’s so much time-saving for me who have more than 1000 subjects which I need to realign.

If you are interested, try the following script. It works for SPM5 and later (SPM8 or 12).

In the original post, function which calls select files window was commented out. I uncommented it and it runs without any problems.


function auto_reorient(p)
spmDir=which('spm');
spmDir=spmDir(1:end-5);
tmpl=[spmDir 'canonical/avg152T1.nii'];
vg=spm_vol(tmpl);
flags.regtype='rigid';
p=spm_select(inf,'image');
for i=1:size(p,1)
f=strtrim(p(i,:));
spm_smooth(f,'temp.nii',[12 12 12]);
vf=spm_vol('temp.nii');
[M,scal] = spm_affreg(vg,vf,flags);
M3=M(1:3,1:3);
[u s v]=svd(M3);
M3=u*v';
M(1:3,1:3)=M3;
N=nifti(f);
N.mat=M*N.mat;
create(N);
end

Usage: Download the file below, put the file into the SPM5, 8, or 12 directory, and run “auto_reorient” from Matlab window.

auto_reorient.m

Note on Bounding Box

Here I have an MRI data with the following parameters;


Vox dim: 91 109 91
Vox size: 2x2x2 mm
Origin: 46 64 37

Now I want to change the image into this;


Vox dim: 157 189 156
Vox size: 1x1x1 mm
Origin: 79 113 71

How can we set the Bounding Box?
As a result of trial and error, I got this.


[-78 -112 -70; 78 76 85]

Simple way to calculate this is the following;


Vox dim – Origin = positive value.

  • 157-79=78 <– positive value in X
  • 189-113=76 <– positive value in Y
  • 156-71=85 <– positive value in Z


-(Vox dim – positive value -1) = negative value

  • -(157-78-1)=-78 <– negative value in X
  • -(189-76-1)=-112 <– negative value in Y
  • -(156-85-1)=-70 <– negative value in Z

誰も教えてくれないBounding Boxの話

画像解析をするとBounding Boxという言葉にぶつかります。 Bounding Boxは何か?と調べると、

画像データをResliceするときの範囲。

といった表現は見つかりますが、それ以外に見つかりません。 さらに、SPMなどでは、Bounding Boxの設定の項目を見ると、

-90:90 -126:90 -72:108

なんて表現にぶつかる一方で、

-90 -126 -72; 90 90 108

なんて表現にもぶつかったりします。

で、いろいろ考えてみたらたいしたことはありませんでした。Bounding Boxとは、画像の中心を[0, 0, 0]と仮定したとき、画像がx, y, z軸方向にどれだけあるのかという情報のようです。

つまり、-90:90 -126:90 -72:108は、

x軸は中心から左右ともに90まで、y軸は前方には90、後方に126、z軸は上方に108、下方に72の範囲で画像がありますよ

という意味になります。ちょっとすっきりしました。