跳转到内容

SPM/时间序列提取

来自维基教科书,开放的书籍,开放的世界
< SPM

各种功能性磁共振成像分析,如PPI或DCM,都是从选定的脑区提取代表性时间序列开始的。这些有时被称为感兴趣体积 (VOI) 或感兴趣区域 (ROI)。使用 SPM 可以通过手动和自动方式完成此操作,如下所述。在此之前,我们建议定义一个“感兴趣的影响”F 对比,它告诉 SPM 设计矩阵中的哪些回归器(列)是有趣的。在 VOI 提取期间,任何其他回归器,如头部运动或信号均值,将从时间序列中回归出去。

初步步骤 - 定义感兴趣的影响

[编辑 | 编辑源代码]

感兴趣的影响 F 对比的定义方式与任何其他对比相同 - 可以手动定义(通过在查看 SPM 结果时按下定义新对比)或使用对比管理器批处理。确保创建一个 F 对比而不是 T 对比,并为清楚起见将其命名为感兴趣的影响。

F 对比矩阵通常每个感兴趣的影响有一行。例如,如果设计矩阵中的前三个回归器是有趣的,则对比矩阵将为

或者,如果只有第一个和第三个回归器是有趣的,则矩阵为

在这两种情况下,设计矩阵中第四列及以后编码的任何影响将在时间序列提取期间回归出去。

手动时间序列提取

[编辑 | 编辑源代码]
  1. 通过单击结果、选择 SPM.mat 文件并按照出现的提示进行操作,以通常的方式查看您的 SPM 结果,直到显示结果。
  2. 将十字准星/光标放置在您希望 VOI 所在的位置。这最容易通过单击 SPM 结果表的一行(在右侧的毫米坐标上)来完成。
  3. 在结果窗口中单击特征值。注意:如果您的光标未定位在峰值处,它将跳转到最接近的峰值。
  4. 为该区域命名。
  5. 单击“调整数据”下拉菜单,然后选择您之前定义的感兴趣的影响 F 对比。
  6. 选择要包含哪些体素以生成该区域的代表性时间序列的标准。您可以在以十字准星为中心的球体、框或位于十字准星处的阈值激活簇或预定义掩码之间进行选择。请注意,只有超过步骤 1 中选择的显着性阈值的体素才会被包含在内。
  7. 回答有关 VOI 形状的任何其他问题,然后按完成。一个文件将保存在与 SPM.mat 相同的目录中,名为 VOI_XX_sess.mat,其中 sess 是会话或运行编号。它包含一个名为 Y 的变量,它是该区域的代表性时间序列。更准确地说,它是所选区域中预白化、高通滤波和混杂校正时间序列的第一主成分或特征值。

批处理时间序列提取 (GUI)

[编辑 | 编辑源代码]

批处理编辑器提供了定义 VOI 的更多灵活性,并且还能够跨受试者编写 VOI 提取脚本。这里我们将逐步介绍如何创建一个基于球体的 VOI,该球体在每个受试者中跳到峰值,并在一定的最大半径内。

  1. 从主 SPM 窗口中,单击批处理,然后使用顶部的菜单,单击 SPM -> 实用程序 -> 感兴趣体积。
  2. 选择估计的 SPM.mat。
  3. 对于调整数据,选择上面定义的感兴趣的影响 F 对比的索引。例如,如果 F 对比是添加到 SPM 的第一个对比,并且是在查看对比列表时第一个对比,则输入:1 并按确定。
  4. 对于哪个会话,选择要提取 VOI 的会话或运行编号。
  5. 输入一个简短的VOI 名称
  6. 通过在感兴趣区域下混合和匹配不同的组件来定义 VOI 的形状。对于此示例,我们将需要三个组件:1) 超过 p < 0.001 未校正的统计显着性的体素图 2) 在受试者之间位置固定的较大球体 3) 可以自动跳到较大球体峰值的较小移动球体。要创建这些组件,请单击:“新的阈值 SPM”、“新建:球体”然后再次单击“新建:球体”。(我们将在这之后出现的步骤中将这三个组件分别称为 i1、i2 和 i3。)
  7. 对于“选择 SPM.mat”(在阈值 SPM 下),您可以将其保留为空白 - 它会自动拾取在步骤 2 中定义的 SPM。
  8. 对于对比,输入要用于查找峰值的对比索引。例如,输入数字 2 并按确定以使用第二个对比。
  9. 对于第一个球体的中心,输入坐标(以毫米为单位)。这将是限制较小内部球体移动的外球体。对于半径,将半径设置为足以覆盖感兴趣的解剖结构的值,例如 15(以毫米为单位)。
  10. 对于第二个球体的中心,将中心设置为任何值,例如 [0 0 0](因为它会自动移动)。将半径设置为所需 ROI 的大小,例如 8 毫米。将中心移动设置为全局最大值。将SPM 索引设置为 1(如果它是您在步骤 6 中选择的第一个元素),并且对于掩码表达式,输入:“i2”(不带引号)。这告诉它使用外球体来限制内球体的移动。
  11. 最后,对于底部的表达式,输入:“i1 & i3”(不带引号)。这将包括在步骤 6 中添加的第一和第三个组件中的所有体素 - 即阈值 SPM 和移动球体。

您现在可以运行批处理,时间序列将保存在名为 VOI_XX_sess.mat 的文件中,其中 XX 是 VOI 名称,sess 是会话编号。与上面的手动示例一样,该文件将包含一个名为 Y 的变量,它是该区域的代表性时间序列。更准确地说,它是所选区域中预白化、高通滤波和混杂校正时间序列的第一主成分或特征值。

批处理时间序列提取 (脚本)

[编辑 | 编辑源代码]

与上面的步骤相对应的 Matlab 脚本如下。这很容易放在跨受试者的循环中。请务必仔细检查每个设置并根据每个实验的需要进行调整。

% Insert the subject's SPM .mat filename here
spm_mat_file = '';

% Start batch
clear matlabbatch;
matlabbatch{1}.spm.util.voi.spmmat  = cellstr(spm_mat_file);
matlabbatch{1}.spm.util.voi.adjust  = 1;                    % Effects of interest contrast number
matlabbatch{1}.spm.util.voi.session = 1;                    % Session index
matlabbatch{1}.spm.util.voi.name    = 'name';               % VOI name

% Define thresholded SPM for finding the subject's local peak response
matlabbatch{1}.spm.util.voi.roi{1}.spm.spmmat      = {''};
matlabbatch{1}.spm.util.voi.roi{1}.spm.contrast    = 2;     % Index of contrast for choosing voxels
matlabbatch{1}.spm.util.voi.roi{1}.spm.conjunction = 1;
matlabbatch{1}.spm.util.voi.roi{1}.spm.threshdesc  = 'none';
matlabbatch{1}.spm.util.voi.roi{1}.spm.thresh      = 0.001;
matlabbatch{1}.spm.util.voi.roi{1}.spm.extent      = 0;
matlabbatch{1}.spm.util.voi.roi{1}.spm.mask ...
    = struct('contrast', {}, 'thresh', {}, 'mtype', {});

% Define large fixed outer sphere
matlabbatch{1}.spm.util.voi.roi{2}.sphere.centre     = [-15 -37 59]; % Set coordinates here
matlabbatch{1}.spm.util.voi.roi{2}.sphere.radius     = 15;           % Radius (mm)
matlabbatch{1}.spm.util.voi.roi{2}.sphere.move.fixed = 1;

% Define smaller inner sphere which jumps to the peak of the outer sphere
matlabbatch{1}.spm.util.voi.roi{3}.sphere.centre           = [0 0 0]; % Leave this at zero
matlabbatch{1}.spm.util.voi.roi{3}.sphere.radius           = 8;       % Set radius here (mm)
matlabbatch{1}.spm.util.voi.roi{3}.sphere.move.global.spm  = 1;       % Index of SPM within the batch
matlabbatch{1}.spm.util.voi.roi{3}.sphere.move.global.mask = 'i2';    % Index of the outer sphere within the batch

% Include voxels in the thresholded SPM (i1) and the mobile inner sphere (i3)
matlabbatch{1}.spm.util.voi.expression = 'i1 & i3'; 

% Run the batch
spm_jobman('run',matlabbatch);
华夏公益教科书