一、使用脚本的必要性
-
SPM12里有些模块的图形界面(GUI)只能处理单个被试,比如,Specify 1st-level,但是实践中不可能只处理一个被试,如果每个被试都用GUI设置一遍,非常繁琐而且容易出错。
-
使用脚本可以更容易把不同处理模块串联起来。一旦建立了一个处理流程后,相似的数据集可以重复使用脚本。当然,SPM12的Batch System也可以使用图形界面的方式将不同处理模块串联起来,但是还是会有无法处理多个被试的困难。
-
更容易和其他处理软件结合起来使用。
-
更容易在集群服务器上使用。
二、使用方法
-
针对某一个模块(比如,Segment模块),使用GUI设置一个被试的数据并运行。
-
在图形窗口菜单栏选择
File -> Save Batch and Script
,会生成*.m
和*_job.m
两个文件,其中*
表示设置的文件名,*_job.m
里包含进行Segment任务所需要的代码,如下图所示:
- 在上述代码最开始的部分加上初始化的代码,在结束的部分加上运行任务的代码,如下所示:
%% initialize
spm('defaults', 'fmri');
spm_jobman('initcfg');
%% some job-related code
matlabbatch{1}.spm...=...;
%% run current job
spm_jobman('run', matlabbatch);
-
比较使用GUI和使用脚本得到的结果是否一致,确保脚本正确。
-
添加一些循环和输入输出的Matlab代码来处理所有被试的数据,需要一些基本的Matlab编程知识,这里不做介绍。
一个更完整的例子可以参考我的博客:https://alexbrain.cn/?p=491。我个人对SPM12日常使用不多,还在积极学习中,有不准确的地方,欢迎指正。
三、参考资料