SPM8のdefaults setting

以前の記事でSPMのdefault settingに関して書いた下書きがどこかに消えてしまい(はてぶの下書き保存されていなかった)再度、書き直し。。


SPMではspm_defaults.mと言う関数の中で色々な設定を行うことができます。
その中でも変更しておいた方が良いと思われる項目をいくつか

  • defaults.stats.maxmem

こちらは結構有名?な変数で、これはSPMでの最大メモリー使用量に関する項目です。
defaultsだと2^26となっているのだがこれだと64MBしか使われず、SPMの計算時に余計な時間がかかる。32bit windowsでも2^29=512MB位にしておいた方が良いでしょう。64bitOSで4GB以上のメモリーを乗せているのであれば、2^31=2GB位にしておいても何ら問題は無いでしょう。
蛇足ですが、matlabwindowsよりもlinuxの方が圧倒的に早くかつ安定しているので、64bit版のlinuxOSを入れる事をオススメします。


これはmicrotimesとも呼ばれている物で、あまり知られていない変数ですが、、
この変数の説明に入る前に、SPMのregressorがどう作られているかと言う所から始めます。


SPMでは以下のような手順でgeneral linear modelのregressorを作っています。

  1. TR(EPI imageのスキャンの間隔)をdefaultで16個のbinにup sampling
  2. 各trialに対するbox-car regressorを作る
  3. box-car regressorをhemodynamic response functionでconvolution
  4. 再度down samplingして、scan volume数に合わせる

この時に16個のbinの内どのbinを使ってdown samplingするかを決めるのがこの変数です。ちなみに”defaults.stats.fmri.fmri_t" で何個のbinにするかを決めています。


Defaultではt0は「1」になっていますが、これはすなわちTRのonsetのタイミングでのresamplingを意味しています。Blocked designの時には大して問題になりませんが、TRが長くてinter-trial intervalが短めの(2-4秒)event-related designの実験だっりすると、t0をどこにするかによって、regressorの形が結構変わってきます。

またslice timing correction等を行う場合は大抵真ん中のsliceに合わせる事が多いのですが、ここでT0をdefaultのままモデルを立ててしまうと、1/2TR分のタイミングでずれてしまいます。なので、slice timing correctionを行った場合はT0の値はreference imageのタイミングに合わせる事が大切です。reference sliceに合わせてt0を設定する事によって、データの統計値が良くなる事もあります。例えば27 slicesで14th sliceをreferenceとしてslice timing correctionをした場合は、t0 = 9とします(TR最小にして aquisitionのgapを無しにしている場合)。


実際に以前の職場の同僚がevent designでTR2.1s, 1s?のboxcar regressorのevent-related design、slice timing correction有りで(25slicesでreferenceは13th slice)、T0 = 1からT0 = 9に変えた所、RFXで有意だったclusterのpeak t-valueが大きくなったようです。


一度試してみてはいかがでしょう?