SPM中文教程汇总.docx
一、SPM 的安装与启动先安装 matlab,然后将 SPM 复制到 matlab 下的一个文件夹SPM2 需要 matlab6.0 或以上版本。启动 matlab,首先 set path,然后在 matlab 命令窗口中输入 SPM 即可启动,然后选择fMRI,也可以直接输入 SPM fMRI二、SPM 数据处理概要先将所得数据进展空间预处理对齐,平滑,标准化等,然后进展模型估量将刺激的时间、间隔与血流淌力函数进展卷积,所得结果与全脑象素信号进展相关分析,最终观察结果。三、SPM8 数据处理的一般步骤为便利后续的数据处理,假设数据分散处理后整合,建议全部处理数据路径保持全都,要统一路径。处理前首先要承受数据转换软件将 dicom 数据转换成 SPM 解析格式,然后进展数据预处理,预处理完毕后到 matlab 安装名目中备份 spm*.ps 文件,其中包含了空间校正和标准化的信息,然后进展建模分析。运行命令:spm fmri,翻开 spm8 的操作界面我们称左上侧的窗口为按钮窗口(button window),左下侧的窗口为输入窗口(input window),右侧大窗口为树形构造窗口或图形窗口(Tree Building Window or the graphics window)。在 spm8 和 spm5 中,每一步处理都承受了直观的“树形构造”的面板,假设一个分支项左面有“+” 号,你可以双击显示子分支项, 假设一个分支项右面有“<-X”号,你必需为之指定选项(否则不能运行该 tree),分支项的选项在其右侧面板指定,而帮助信息则在下面的面板中显示。假设我们处理数据没1有特别需求,我们只关心带有“<-X”工程并完成输入即可,其余均可承受默认设置。另外留意在 Tree Building Window 的顶部菜单,增了一个菜单项“TASKS”,在使用批处理分析时格外重要。以下内容,还可以参考 E:汇总中“静息态 fMRI 的数据预处理流程”这局部的表达。1、转换数据dicom 格式转换为 img 文件,将以层为单位的数据转换成以全脑为单位的数据。转换时格式请选择NIfTI,可用 SPM 输入面板中的 DiCOM Import 模块转换,也可以承受特地的转换软件,如 MRIcovert。2、Slice timing校正 1 个 volume 中层与层之间猎取(采集)时间的差异,即订正 slice下译为扫描层之间采集时间的差异。这对大事相关设计的试验尤为重要,使一个 TR 中的各层获得时间全都如都在一个 TR 的开头,相当于 AFNI 中 tshift 所做的工作。校正后的文件名为:a原文件名。原理概述:Sliceorder扫描层序数用于指明扫描层被采集时的挨次,其总数为n,n 即一个volumevolume 为一个 TR 时间内的扫描量里面所包含的扫描层的总数。每个 Sliceorder扫描层系数 同时指明白每个扫描层在图像文件中的存储位置。因此扫描层系数说明白扫描层被采集时的时间顺 序。我们可以用 SPM 的 Display 功能来查看这个挨次。移动鼠标的十字准线到 Z 坐标为 1 的位置时, 我们看到的就是一个 volume 里面第一个 slice扫描层上的象元voxel。核磁仪采集数据的时间精度为一个 TR,因此我们通常默认一个 TR 内采集到的数据一个 volume采自完全一样的时间。但事实并非如此,一个 TR 内我们需要采集很多扫描层例如 20 层的数据以掩盖较大的脑区通常是全脑。这些扫描层是一个接一个依据上面所说的 sliceorder扫描层序数的挨次来采集的,因此各个扫描层之间的采集时间是有差异的。Slice timing 这一步所要做的就是通过肯定的算法订正这一时间差异。常规的订正方法是在保持整段采集信号不变的条件下推前或者推后采集的起始时间。这可以通过简洁的移动采集信号的正弦相位来做到。一种常用的数学转换方法:傅立叶转换可以把任何简单信号转换为由不同频率和相位的简洁正弦曲线的线性组合。这样,只要通过参加一个常数到每个频率的相位中,就可以到达移动数据起始和完毕时间的目的。我们在按钮窗口中的预处理面板中点击“Slice Timimg”,将消灭如下对话框:2对上图右侧选项我们做如下设置Data,预备数个被试或者 session 的数据。以下所述参数设置将被应用到全部所选数据。点击 data 并在下面的面板中点击“new session”,这样在 data 下会消灭“session”的分支项,选中该项并点击面板下方的“select files”,然后用 spm 文件选择器选择你要处理的数据,最终点击“Done”。选择数据时可以把静息态、数值任务和物理大小任务分为三个session 来选datanew sessionsession,也可以作为一个 session 来选,结果是一样的。Number of Slices,我们输入每祯图像的层数,如“32”,即扫描层总数。TR,我们输入重复时间,一般为 2 秒,我们输入“2”TA,是每祯图像猎取第一层开头到猎取最终一层图像的时间间隔,单位为秒。一般可以用以下公式计算:TATR-(TR/扫描层数)。这里可以不必计算出结果,直接写上带入了数字的公式就可以了。比方,TR 为 3 秒,扫描了 20 层,则可以直接写为:3-(3/20)。我们的数据则输入“2-2/32”Slice order,输入扫描挨次。如前述此挨次可通过 SPM 的 Display 功能查看。我们输入“1:2:31, 2:2:32”。指定层猎取挨次的层次序参数是一个含 N 个数的向量,这里 N 是每个 volume 所含的层数。每一个数表示该层在图像(volume)中的位置。向量内的数字排列挨次是这些层的猎取时间挨次。如行向量 1 3 5 7 9 11 13 15 17 19 21 23 25 2 4 6 8 10 12 14 16 18 20 22 24(在 Matlab 中可表示为1:2:25,2:2,25) 各种扫描类型和输入的层挨次如下: ascending 升序扫描(first slice=bottom,扫描序数从底部到顶部排列,即从1 挨次递增到 n): 1:1:nslices; descending 降序扫描(first slice=top,扫描序数从顶部到底部排列,即从 n 挨次递减到 1): nslices:-1:1; interleaved 间隔扫描扫描序数间隔递增或递减,一般挨次为 2,4,6,8,10.1,3,5,7,9.n(middle-top):for k = 1:nslices,round(nslices-k)/2 + (rem(nslices-k),2) * (nslices - 1)/2) + 1,end; interleaved (bottom -> up): 1:2:nslices 2:2:nslices,如1:2:25,2:2,25; interleaved (top -> down): nslices:-2:1, nslices-1:-2:13Reference Slice,我们输入“31。”选择参考扫描层一般可使用默认值,其它扫描层的起始时间都将以此层的起始时间为标准来移动进展校正。通常选择 n slice/2,如 25 层时选择 13 层作为参考层。Filename Prefix,是指生成的图像前加何标记,一般承受默认设置。a*.img 文件,这就最终点击面板上方的向右的绿色三角即开头运行。运行完后将会生成一系列是时间校准后的数据。留意很多争论者简洁将时间校准和空间校准挨次颠倒,一般的观点是假设图像猎取是隔层interleaved进展的,如1、3、5、7、9、2、4、6、8、10,则要先进展slice timing 再进展 realign,假设图像各层是连续(sequential)猎取的,如 1、2、3、4、5、6、7、8、9、10,则要先进展realign 再做 slice timing。为什么?3、Realign相当于 AFNI 中的 registration 分两步:1) coregister,将每个 session 的第一个 scan 与第一个 session 的第一个 scan 进展比较,然后将每个session 中的其他scan 与本session 中的第一个scan 进展比较,得到每个 filename.img 文件的转换参数, 生成 filename.mat 文件,同时为每个 session 生成一个对齐参数realignment parameters,文件名为 realignment_params_*.txt2) reslice,用 filename.mat 文件对 filename.img 重切片,生成 rfilename.img 文件。并可依选择生成一个平均象,名为 meanfilename.img。以上两步具体解释如下即使我们对被试的头部做了很好的固定,在试验过程中,被试也会不由自主的有一些稍微的头动,这在fMRI 试验中尤为明显。这一步就是把一个试验序列中的每一帧图像都和这个序列的第一桢图像依据肯定的算法做对齐,以矫正头动。做完这一步,能给出该序列中被试的头动状况,以作为是否放弃该数据的依据,假设头动超过 1 个 voxel功能图像扫描矩阵一般是64*64,则体素的大小为FOV/64*FOV/64*层厚+层间距,则要考虑放弃该时间点数据。该程序利用最小二乘法(least squares approach)原理和含 6 个参数(刚体模型)的空间变换,对从一个被试猎取的时间序列进展校正。用户可指定某个volume 作为随后volumes 的参考。可以是第1 个volume, 也可选择比较有代表性的 volume(更明智的选择),例如选择磁场相对稳定的第 4 个 volume。校正信息(头动信息)将在结果窗口(Graphics Window)显示。每个 Session 的校正信息将存储为 rp*.txt,其中* 为 Session 数据集名称。另外,头动校正信息将以plot 图形显示。如以下图:Translation 表示被试头部在 X,Y,Z 三个方向的平移,分别用蓝,绿,红三种颜色表示。Rotation 表示被试头部在试验过程当中绕 X(L-R),Y(A-P),Z(S-I)三条轴的转动角度。横坐标代表这个序列所采集的全部图像,纵坐标表示的是偏移量和偏转角度,分别以毫米和度为单位。承受SPM8,头动信息和空间标准化的图形文4件将以 spm_“data”.ps 的形式保存于 matlab 的工作名目下,如我们是 2009 年 4 月 30 日处理的数据, 则将以 spm_2009Apr30.ps 文件存于 matlab 的 work 名目下。我们在预处理面板校准选项中选择“Realign (Est & Res)”,消灭如下对话框,我们按下面设置进展:选中“data”, 选择“New Session”, 然后选中 data 下消灭的 “Session”选项。点击“Specify Files”,用spm 文件选择器选择刚做完时间校准的图像a*.img。其余选项承受默认设置,点击上方绿色的三角开头运行。Realign 这一步也有分开进展的,具体描述如下53.1 Realign: Estimate重排参数的估量此步骤承受最小方差原理和六参数刚体空间变换来重排从同一个被试上采集到的图像数据。使用者所选取的第一幅图像文件将被作为其它图像重排的参考标准。也就是说,你想要用哪一幅图像作为参考标准,就先选哪一幅图像的文件。参考图像文件不肯定非用采集到的第一幅图像,使用最有“代表性” 的一幅图像或许更好。本步骤的目的主要是去除 fMRI 和 PET 数据中的运动伪影。图像数据的头文件会被改写以反映数据相对空间位置的变化。此过程的具体参数会在结果窗口中 以平移translation 和旋转rotation曲线图显示。每个 session 的重排参数会被存储到名为 rp*.txt 的文件中。这些参数可以在最终的一般线性模型统计估量中作为混淆因素考虑进去。3.1.1 Data 选择一个被试需要进展此步骤处理的全部 sessions。注:在 coregistration 这一步,首先是对全部的 session 进展重排,其具体做法是把所选每个 session 的第一个 scan 与所选第一个 session 的第一个 scan 对齐。然后再把每个 session 里的其它 scan 与该 session 的第一个 scan 进展对齐。使用此方式进展重排是由于各个 session 的数据之间可能会有较大差异。Session 选择 session 里全部的scan。3.1.2 Estimation Options 这里包括各种注册参数选择项,假设对某一个选项不确定,使用软件默认值即可。 Quality 质量与速度的权衡。选择高质量以最慢的速度给出最准确的结果,低质量以较快的速度给出较不准确的结果。此参数的设定实际影响到的是参与参数估量的象元 voxel的数目。其依据是有些象元voxel其实对重排参数的估量奉献不大,可以舍弃。 Separation 此参数以毫米为单位,表示对参考图像文件进展重采样时采样点之间的间隔。采样点之间间隔越小,结果越准确,运算速度越慢。 Smoothing (FWHM)高斯平滑的半高宽值。在估量重排参数之前一般先进展高斯平滑。PET 数据一般使用 7mm。MRI 数据一般使用 5mm。 Num Passes Register to first: 全部图像文件对齐注册到第一幅图像。 Register to mean: 使用 twopass 处理将全部图像文件对齐注册到全部图像文件的平均图像。PET 数据一般注册到平均图像。由于 PET 数据相比 fMRI 数据噪音更大,文件更少,所以时间的影响更小。MRI 数据一般注册到第一幅图像。虽然使用 twopass 处理可能更准确, 但是其对效果的提高与其所损失的运行时间相比得不偿失。 Interpolation 在估量最正确变换时对数据进展重采样的方法。高的degree 供给更好的结果,但是也更慢,由于会采样更多的相邻象元voxel 52, 53, 54。Wrapping 此参数指示一个 volume 中数据 wrap around in 的方向此处具体理解有待大家补充。No wrapping:适用于 PET 数据或者已进展过空间变换的数据。同时当你不确定自己数据类型时,推举使用此选项。Wrap in Y:适用于没有重排resilce过的在 Y 方向上进展相位编码的MRI 数据。Weighting 供给一个加权图像,在估量重排参数时对参考图像的每一个象元进展加权。加权系数与标准差成反比。例如当有大量额外的头动如说话或者特定区域内的严峻伪影时。此处具体理解有待大家补充。63.2 Realign: Reslice据已估量出的参数重排此功能重排以上步骤中已进展参数估量和注册的图像文件,使之与参考图像文件到达象元级的匹配准确。重排后的数据被命名为:r原文件名。3.2.1 Images 选择要重排的数据文件3.2.2 Reslice Options 各种重排参数设定,假设对某一个选项不确定,使用软件默认值即可。 Resliced images All Images (1.n) :重排全部数据,包括标准参考图像重排后还是保持原位置不变。Images 2.n :重排解了标准参考图像之外的全部数据。此选项用于当你以 MRI 构造像为标准重排 PET 图像数据,而又不想在结果中再生成一个等同的 MRI 标准构造像时。All Images + Mean Image : 重排图像文件之外,另生成一个重排后的平均图像文件。 Mean Image Only : 只生成重排后的平均图像文件。Interpolation 图像文件重采样和重写入的方式。Nearest Neighbour :最快,但不推举使用。Bilinear Interpolation:可用于 PET 数据,但不是太适用于 fMRI 数据。Fourier Interpolation:此选项仅适用于纯刚体变换,也就是说象元大小必需是一样,并且等方性正方体的17, 14。 Wrapping 此参数指示一个 volume 中数据 wrap around in 的方向此处具体理解有待大家补充。No wrapping: 适用于 PET 数据或者已进展过空间变换的数据。同时当你不确定自己数据类型时,推举使用此选项。Wrap in Y:适用于没有重排resilce过的在 Y 方向上进展相位编码的 MRI 数据。Masking 由于扫描过程中被试总会或多或少有头动,造成同一个时间系列数据里所采集到的图像的边界不会完全重合。在有些图像还有数据的地方信号值大于 0,其它一些图像已经超出了图像边界信号值为 0了。在这些信号为 0 的区域是无法采样数据的,因此 SPM 只要检测到某一幅图像在某个区域已经超出了边界即信号为 0,就会将其它全部图像的此区域信号值均设为 0。此做法相当于取了时间系列数据中全部图像的交集。3.3 Realign: Estimate & Reslice将上述参数估量与数据重排合到一起做。全部选项与参数原理均与 3.1 和 3.2 中对应项一样。4、Normailze选用 realign 步骤中得到的平均象与模板进展比较,获得进展标准化的参数,参数文件命名为filename_sn3d.mat,然后依据此参数文件对每个img 文件进展标准化,生成文件 nfilename.img。具体操作如下:在预处理面板标准化选项中选择“Normalise: Estimate & Wr,it出e”现如下对话框:7我们做如下设置:选中“data”“new sbject”,在 data 下消灭的 “subject” 选项中作如下设置, “source image”选择空间校准步骤中生成的 mean 文件, “image to write”选择全部刚进展完校准的文件“ra*.img”,“template image”我们选择“EPI.nii”,其余承受默认设置,点绿三角运行。5、SmoothFWHM 推举为象素大小的两至三倍。在预处理面板标准化选项中选择“smooth”,消灭如下对话框:8我们在“image to smooth”选项中选择全部刚进展完标准化的文件“wra*.img”,然后点绿三角运行即可。这里 FWHM 我们承受默认设置“8 8 8”。6、fMRI models依据提示填入刺激消灭的间隔与时间,并选择试验涉及类型,然后进展估量。 估量结果生成spm.mat 等文件,保存在当前工作名目。即以前版本的“fMRI model”,spm5 和 spm8 的分析选项有所变化,使用 Specify 1st level 做单个被试(single subject)分析;使用 Specify 2nd level 做组分析(group analysis)。比方我们选择“Specify 1st level”,消灭如下对话框见下一页:我们选择 Directory 指定一个文件夹存放结果数据,其余做如下设置:“Units for design”选择“Scans”,“Interscan interval”输入“2”,选择“Data and Design”后选择“New Subject/Session”,再选择消灭的“Subject/Session”,选择“Scans”并用文件选择器选择相应任务的全部平滑后的功能图像swra*.img然后点击“down”,选择“Condition”后选择“New condition”,然后选中消灭的“Condition”,“name”选项输入任务条件的名称,“onset”输入任务条件的启动向量,代表任务刺激启动的扫描数,选中“Durations”输入任务组块的持续时长,如是大事相关设计请输入 “0”。如9还有其他任务,要再次选中“Condition”“New condition”“Condition”定义其他任务条件。设置完毕后点击绿三角运行。这样将会在开头选择的名目中生成文件 spm.mat。下面要估量我们刚建立的模型,在模型设置面板中点击“estimate”,将翻开如下对话框:很简洁,我们只须选择刚生成的“spm.mat”文件点击“down”然后点击绿三角运行即可。估量完成后,我们选择“results”,将翻开如下对话框:10上图设计矩阵说明一个扫描序列中我们有三个任务条件,均为大事相关设计,选中“t-contrasts”, 点击“define new contrast”, 第一个任务“contrast”定义为“1”, 其次个任务定义为“0 1”,第三个任务nn 定义为“0 0 1”,第一个任务减第三个任务定义为“1 0 -1”,其次个任务减第三个任务定义为“0 1 -1”, 其次个任务减第一个任务定义为“-1 1”,其余操作以及激活图显示和以前版本都是全都的。值得我们留意的是,我们指定或输入一系列的参数来进展每一步的处理,完成后我们可以通过Save按钮将每一步存为一个*.mat文件。以后我们可以通过Load按钮重加载并使用这些*.mat文件, 我们适当修改后例如转变所运行的数据集再选择Run按钮运行。另外我们可以使用TASKS菜单项指定一系列的操作(预处理和/或分析),在 TASKS->Batch菜单项下,你可以在一个大文件中指定数据处理全部步骤。批处理交互界面格外灵活。它知道依据指定的步骤将产生什么文件。例如,在Tasks->Batch菜单项下,选择New “Spatial“。在你的SPM任务树(Jobs tree) 中选择(highlight) -Spatial ,并从选项面板中选择 New “Realign“ 选项指定我们前述的realignment的具体步骤。现在,当我们向任务树中添加标准化步骤时,我们将观察为标准化操作选择r*文件的选项, 尽管事实上,我们还没有真的生成r*文件。所以,批处理格外智能,可以推测我们的需要。假设我们已经生成了几个批处理任务文件,我们可以使用TASKS->Util->Execute Batch Jobs选项来运行它们。该工具允许我们选择一系列的mat文件(不肯定是batch jobs文件)来运行。假设你思念旧版本SPM操作界面,在TASKS菜单下,选择Sequential,这样就不会消灭树(tree),选项将会消灭在SPM输入窗口。7、Result选中刚刚生成的 spm.mat 文件,定义 constrast,看结果。在上面的“fMRI models”局部有表达。11四、SPM 的多种数据转换方法使用 SPM 进展数据处理前,必需先将其它档案格式转换成 SPM 可以读取的 Analyze 档案格式,包含.img 档和.hdr 标头档,相关的转档软件有 XMedCon 和 MRIcro。1. 利用 AFNI 数据转换首先使用 AFNI 的三维数据重建: to3d -time:tz 177 20 2s altplus * 生成+orig 文件,然后: 3dAFNItoAnalyze -4D -orient LPI *epi+orig,将生成*.hdr 与*.img 文件. (*代表你所用的任意文件名), 然后翻开MRIcro软件:选择要转换的hdr,img 文件, processing, ok.择面板上部 File -Save as 4d to 3d - Save as intel -Save (这里有点忘了:)这一段我压根没有看懂2. 直接用 MRIcro 转换:(此局部转自核医学论坛)注: SPM 的 dicom import 是可以导入 dicom 文件,但导入的这些图像还是 2D 的,不是 3D 的,不能用于 fMRI 分析。要先把2D 的 slice 重建成 3D 的 volume,就可以用于fMRI 分析了。MRIcro 可以干这活:先把 3 次 BOLD 的文件分别移动到三个不同的文件夹里,然后用 MRIcro 依次导入转换每个名目的 slice dicom file 成一个 ANALYZE 文件4D 的,再另存为多个 img,hdr 文件4D%26gt;3D,个数就是 volume 数,也就是名目下文件数除以层数。这是针对从 GE Signa 1.5T 上刻录的光盘上的dicom 格式数据来讲的,其它机器的数据存放方式可能有所不同,请相应具体分析。MRIcro 的 Import Convert 中的 volume 可以理解为完整头部像数目。在从 GE Signa 1.5T 中获得的 fMRI Dicom 数据中, 是 1 个 slice 存成一个 dicom image 文件,因此 volume 数也就是整个 dicom image 名目所包含的完整头部扫描图像数目应当等于整个 dicom image 名目下全部单个 slice dicom image 文件除以试验时设置的 slices 数。简洁地说,一个 fMRI 试验,层数为 16,获得 512 个 slice dicom image 文件,则其volumes=512/16=32。1) 点 Import/convert foreign to analyze,在消灭的对话框中,number of files 为你数据的总文件数,slice increment1,volume increment0,volumes 为你的试验的 volume 数。填好后,先点design,后点 select,然后选中你的数据的第一个文件我试验了一下,选中后报错,无法连续。然后保存。2) 点 file/open,翻开刚刚保存的 img 文件。3) 点“file/sae as .rotate/clip/format/4D->3D“,然后点击“save intel”。 这样保存后的文件就是 analyze格式的了。12