SPMで位置合わせする方法は2つあります。
- Realign: これは同じモダリティで位置合わせする場合に選びます。主に fMRIやPETの位置合わせに用いられます。
- Coregister: これは別のモダリティで位置合わせする場合に選びます。
ここでは、Coregister について述べます。
SPMで位置合わせする方法は2つあります。
ここでは、Coregister について述べます。
ある方から、「CONNで前処理したfMRI画像から、デフォルト・モード・ネットワーク(DMN)の時系列データを取り出すにはどうしたらよいですか?」というご質問をいただきました。
鍵となるプログラムは以下の2つです。
以下に、方法を記載します。
以前、DTIの画像などをFreeSurferの脳表に投影する方法を紹介しましたが、SPMの結果のspmT画像をFreeSurferの脳画像に投影する方法もわかりましたので紹介したいと思います。
必要なコマンドは、mri_vol2surf です。
入力画像は、spmT_0001.nii とします。出力ファイル名は、左半球の画像ということで、lh.spmT_0001.mgzとします。
今回、大事になるのは、–mni152reg というオプションです(木村先生、教えてくれてありがとうございました)。MNI空間でのあわせこみに使えるオプションです。
シンプルに以下でいけました。
mri_vol2surf --mov spmT_0001.nii --mni152reg --hemi lh --o lh.spmT_0001.mgz
入出力ファイル以外のオプションは2つだけ、–mni152reg と –hemi lh だけです。
最後にfreeviewで表示します。T値が3以上を表示したいと思ったので、thresholdを3,5としてあります。
freeview -f \ $SUBJECTS_DIR/fsaverage/surf/lh.inflated:overlay=lh.spmT_0001.mgz:overlay_threshold=3,5\ --viewport 3d --layout 1
結果、以上のような感じで表示できました。
SPMのスクリプトを書く際、SPMのウィンドウを起動したいと思うことがあります。
SPMのコードを見ながら、以下で起動できることがわかりました。
便利なので備忘録がわりに書いておきます。
spm('CreateMenuWin','on'); %左上のウィンドウ spm('CreateIntWin','on'); %左下のウィンドウ spm_figure('Create','Graphics','Graphics','on'); %右のウィンドウ
しばらく前に作成したものですが、SPMのPlotに対する理解をまとめましたので、公開します。
SPM8の時に作成しましたが、SPM12でも十分に通用します。
Understanding_Plot_of_SPM.pdfをダウンロード。(右クリックで名前をつけて保存で保存してください。)
SPMでSPECT画像やPET画像を標準化するとき、Normalise (Est & Write)から行います。しかし、この時、Source ImageとImages to Writeにいちいち画像ファイルを指定せねばならず、苦痛を伴います。
私の友人の岩手医大の山下典生先生が、この問題を解決するスクリプトを書いて下さいました。
使い方はいたって簡単です。
fy_normalise
非常に便利なので、関心のある方はどうぞお使いください。なお、fy_normalise(”,1)とすると、一度に標準化を走らせることもできますが、設定ミスで後悔しないように、設定を確認してから走らせることをお勧めします。
山下先生、ありがとうございました!
VBMの前処理にはどのくらいの時間がかかりますか?という質問を受けましたので、様々なマシンで計測してみました。
3人の3D-T1 MRI画像(ボクセルサイズ 1x1x1mm)をVBM8でDARTELでノーマライズしています。
前処理の設定をvbm8_preproc.matという名前で保存して、以下のベンチマークスクリプトを用意しました。とても単純なMATLABのスクリプトで、処理の前後にtic, tocというコマンドを入れることで前処理にかかった時間を測定するというものです。
%vbm8_benchmark.m tic spm('defaults','pet'); spm_jobman('initcfg'); load vbm8_preproc.mat; spm_jobman('run',matlabbatch); toc
その結果は、以下のようになりました。
Machine | CPU | Core | Thread | Memory | OS | Matlab | Processed time |
Workstation BTO | AMD Opteron Processor 2425HE x 2 | 12 | 12 | 24GB | Xubuntu 12.04 | R2013b | 74m31s |
Desktop BTO | Core i7-960 3.2GHz | 4 | 8 | 24GB | Xubuntu 12.04 | R2011b | 34m47s |
Desktop BTO | Core i7-960 3.2GHz | 4 | 8 | 24GB | Xubuntu 12.04 | R2013b | 33m20s |
Mac Book Pro (Late 2011) | Core i7-2640M 2.8GHz | 2 | 4 | 8GB | Mac OSX 10.9 | R2011b | 30m29s |
Thinkpad T430s | Core i7-3520M 2.9GHz | 2 | 4 | 16GB | Windows 7 | R2013a | 35m0s |
Thinkpad T430s | Core i7-3520M 2.9GHz | 2 | 4 | 16GB | Xubuntu 12.04 | R2013b | 29m12s |
Desktop BTO | Core i7-3930K 3.2GHz | 6 | 12 | 32GB | Xubuntu 12.04 | R2013b | 26m52s |
この結果をまとめると、以下のようになります。
ということで、SPM-VBMという観点からでは、1コアあたりの周波数ができるだけ速いCPUを入手することをお勧めします。
SPMを使う方々は必ずMatlabを使いますが、世の中のMatlab入門をうたった書籍は、たいていが工学向けで、SPMを使う人がこれを知っておいたらいいというようなMatlab入門はあまりありません。何かいい手引きがないかと探していたら、Antonia Hamilton女史の書いたMatlab for Psychologists: A Tutorialという手引きを見つけました。ざっと見たところ非常によい手引きと感じたので、Hamilton女史に連絡をとり、日本語訳の許可をいただきました。日本語訳ができましたので、公開します。「心理のため」となっていますが、SPMを使う方々には、とても有用だと思います。
なお、翻訳にあたり、山口大学の松尾幸治先生に多くのアドバイスをいただきました。この場をお借りして深謝いたします。
心理のためのMatlabチュートリアルをダウンロード
チュートリアルで用いるデータは下からダウンロードしてください。
練習用データ
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.
You find this file in SPM5 or SPM8 directory. You can just copy it from SPM5/8 to SPM2 directory.
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”)
Now you can run different versions of SPM concurrently.
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.