跳转到内容

神经影像数据处理/处理/步骤/去尖峰

来自维基教科书,开放的书籍,开放的世界
神经影像数据处理/处理/步骤
丢弃前几卷 去尖峰 切片时间

例如由于过度头部运动引起的信号异常值会严重影响分析。运动校正算法并非针对这些情况而构建。因此,在开始实际预处理之前检查您的数据并立即消除信号异常值是有意义的。您可以绘制体素时间序列,并在大脑的不同部位检查它们是否显示出巨大的峰值,但也有自动方法可以覆盖所有体素(见下文)。一个好的开始是快速观看您的体积,以类似电影的序列,因为两幅图像之间的大幅度运动将变得明显。

检测到异常值后,应对其进行处理。删除显示异常值的整个体积将破坏时间序列,从而使信号时间序列的分析复杂化并损害后续步骤中使用的傅里叶变换。因此,相应的 数据点最好从相邻数据中插值得到。

3dToutcount[1]计算每个体积中的异常值数量并将结果写入文件。异常值自动定义为允许的 MAD(中值绝对偏差)数量,并考虑数据集中的 TR 数量。典型限制约为趋势的 3.5*MAD 距离。在寻找异常值之前对时间序列进行去趋势是有意义的。这可以通过使用-polort nn选项使用 nn 阶多项式进行去趋势(阶数基于第一个运行的持续时间:1 + floor(持续时间/150 秒))以及-legendre选项使用勒让德多项式(允许 polort > 3)来完成。例如

3dToutcount -automask -fraction -polort 3 -legendre INPUTFILE > OUTCOUNTFILE.1D

因此,outcountfile 将包含在 3 阶勒让德多项式去趋势后,每个体积(在自动掩码内)超过异常值限制的体素分数。要检查过多的异常值,您可以使用

1deval -a OUTCOUNTFILE.1D -expr 't*step(a-0.03)' | grep -v '0' 

返回超过 3% 异常值的 所有时间点,或

1dplot OUTCOUNTFILE.1D

用于视觉检查。在示例图中,您可以在第 222 卷中看到相当多的异常值分数,这也是 1deval 命令找到的异常值。在使用去尖峰(见下文)之后,此异常值将大大减少。

带有第 222 卷异常值的异常值文件图

3dDespike[2]实际上从 3D+时间输入数据集中删除尖峰,并写入一个新的数据集,其中尖峰值被替换为适合平滑曲线的 值。尖峰切割值可以通过选项-cut c1 c2 设置,其中 c1 是“尖峰”的 s 阈值 [默认 c1=2.5],c2 是允许的与曲线的偏差的上限(s=[c1..infinity) 映射到 s'=[c1..c2) [默认 c2=4])。拟合曲线的阶数可以通过-corder调整。尽管3dDespike可以在不进行视觉检查异常值的情况下运行,但建议在去尖峰之前和之后进行,以跟踪您的数据并在它们首次出现时检测可能的异常情况。

3dDespike [options] INPUTFILE

再次对去尖峰后的数据运行异常值检测时,您可以查看异常值是否已消除。例如,与上面相同的图,但在去尖峰后显示异常值已大大减少(注意 y 范围的差异)

去尖峰后的异常值,注意较低的 y 范围

afni_proc.py中,可以包含去尖峰块(但不是默认情况下)

-do_block despike

也可以在回归中删除异常值,但是,据我了解,这实际上会删除相应的体积,从而导致上述问题。通过以下方法可以对超过 n% 异常值的 TR 进行审查

-regress_censor_outliers 0.0n

参考文献

[编辑 | 编辑源代码]
  1. AFNI 程序:3dToutcount:-help 的输出
  2. AFNI 程序:3dDespike:-help 的输出
华夏公益教科书