含教程 | 时间导数分布修复(TDDR):fNIRS运动校正方法
导读
功能近红外光谱(fNIRS)是一种光学神经成像技术,它作为一种研究皮层活动的工具受到了广泛的关注。由于在头部放置光极,头部运动产生的伪影相对来说比fMRI要小。然而,在数据处理过程中仍需删除运动伪影。研究者提出了一种新的基于鲁棒回归的运动校正方法(即,时间导数分布修复(TDDR)),该方法有效地消除了基线偏移和峰值伪影,而且不需要用户提供任何参数。模拟结果表明,该方法比其他5种运动校正方法具有更好的激活检测性能。在对7-15岁儿童样本的工作记忆任务实证验证中,该方法产生了比其他任何方法更强、更广泛的激活。TDDR校正方法增强了fNIRS作为功能性神经成像方式的可行性,可用于不适应fMRI研究的人群。
前言
在这里,研究者介绍了一种新的伪影校正方法,时间导数分布修复(TDDR)。通过模拟来评估该方法的相对性能,其中任务激活管道在数据上执行,这些数据包括:1)无运动伪影,2)未校正的运动伪影,或3)使用TDDR方法或5种比较方法之一校正的运动伪影。为了在真实数据上证明这种方法的可行性,研究者在儿童样本中进行了一项实证研究,因为该群体通常比成年人群体有更高的运动。研究者让7-15岁的儿童参与者执行了工作记忆任务,因为大量的fMRI和fNIRS研究一致表明,工作记忆能够有效激活儿童前额叶皮层,使其成为验证本研究算法的理想认知过程。然后,使用TDDR方法评估任务激活,并与5种现有的运动校正方法进行比较。
方法
理论
测量的fNIRS信号(x)可以表示为时间(t)的函数,其中信号是所有先前实时波动(y)的时间积分。
①非运动波动(即非运动相关活动的导数)近似正态分布。
②大部分波动不包含运动伪影。
如果这些假设得到满足,来自运动的信号具有振幅大且不频繁的特点,因此驻留在信号波动的正态分布的遥远尾部。解决该问题的一个可能方法是减少异常大波动的权重。
其中w是范围为[0,1]的权重函数。一个明显的选择是使用基于Chauvenet准则的固定阈值:
最常见的鲁棒估计量是m估计量(指所有用通过找到最大化/最小化某个目标函数的参数的总称,也叫极值估值法)。这些估计量被定义为使表达式最小化:
其中di是预测值和观测值之间的尺度偏差,ρ是一个权重函数。m估计量是极大似然估计量的概括,最小二乘解是一个特定的非鲁棒情况:
实际考虑
图1.在真实数据上演示TDDR。
虽然这种算法本质上是迭代的,但它仍然非常快。这是因为每次迭代只涉及到计算信号导数的加权平均值,然后计算新的权重集。所有操作在计算上都相对简单。为了说明这一点,一个模拟的10min扫描,32个通道以20Hz采样,在2.40GHz工作站上以单线程模式应用TDDR大约需要0.13s。在本研究的模拟和实验数据中,权重通常在不到20次迭代中收敛。实现TDDR算法的源代码可以在https://github.com/frankfishburn/TDDR上访问。
模拟验证
图2.在模拟数据上演示TDDR。光密度显示为无运动伪影信号(蓝色),未进行伪影校正的相同信号(红色),以及使用TDDR校正伪影后的信号(绿色)。可以看到,校正后的信号与无运动伪影信号大致相同。
分析#1:采样率和滤波的影响
激活。然后,按照如前所述(分析#1中的激活)的相同方式评估每种方法的激活性能。每次检验的AUC均方误差均小于10-5。
实验验证
图3.探测器的布局。
分析
激活。通过创建工作记忆负荷依变回归来量化任务激活。如前所述,通过创建一个加权任务boxcar函数,其中每个条件(0-、1-和2-back)都有对应于其相对负荷(分别为1、2和3)的振幅。然后将加权的boxcar与正则血流动力学响应函数(HRF)进行卷积,并输入到一般线性模型。为了考虑血流动力学响应函数的变化,模型中包括了时间导数和离散导数。通过在模型中包含离散余弦变换项来解释低频漂移,最大频率为1/128Hz。通过Abdelnour和Huppert(2011)描述的基于正则化表面的图像重建,使用AtlasViewer在探测器配准过程中生成的灵敏度矩阵进行组水平分析。
结果
模拟#1:采样率和低通滤波的影响
图4.采样率和低通滤波对TDDR性能的影响。
评估激活检测性能的ROC曲线如图5A所示。TDDR(0.775)的AUC均值最接近无运动伪影的数据(0.869),大于CBSI(0.733)、MARA(0.563)、tPCA(0.591)、kWavelet(0.513)、spline-SG(0.652)和uncorrected(0.516)。各方法AUC值的均值和标准差如图5B所示。
图5.TDDR与其他校正方法的性能比较。
实验
每种方法对含氧血红蛋白数据产生的激活图谱如图6所示。在测试的方法中,与CBSI(3.02)、MARA(2.96)、tPCA(3.79)、kWavelet(3.96)、spline-SG(3.68)和未校正(3.67)相比,TDDR产生了最大的激活t统计量(4.88)。此外,与CBSI(903)、MARA(924)、tPCA(891)、kWavelet(935)、spline-SG(1153)和未校正(1560)相比,TDDR产生的正显著网格顶点数量最多(2399)(p<.05)。
图6.不同方法激活结果的比较。
结论
本研究设计了TDDR运动校正方法。由于该方法基于鲁棒估计量,它没有调谐参数,可以有效地去除峰值和基线偏移。通过模拟和实证数据集的验证表明,该方法的性能优于目前的其他校正方法。这种方法增加了fNIRS应用于功能性神经成像的可行性,如应用于婴幼儿群体,以及那些因顺应性或交流限制而难以限制头部运动的智力障碍人群。
TDDR操作步骤(示例)
本研究提出的TDDR校正方法的操作步骤示例如下(该脚本由Robert Luke提供,基于python运行)。
import os
import mne
from mne.preprocessing.nirs import (optical_density,
temporal_derivative_distribution_repair)
①加载数据
这里将使用fNIRS motor数据(该数据集来自麦考瑞大学)。重采样数据以使索引时间更快捷。然后,将数据转换为光密度,以对这些信号进行校正和绘制。
fnirs_data_folder = mne.datasets.fnirs_motor.data_path()
fnirs_cw_amplitude_dir = os.path.join(fnirs_data_folder, 'Participant-1')
raw_intensity = mne.io.read_raw_nirx(fnirs_cw_amplitude_dir, verbose=True)
raw_intensity.load_data().resample(3, npad="auto")
raw_od = optical_density(raw_intensity)
new_annotations = mne.Annotations([31, 187, 317], [8, 8, 8],
["Movement", "Movement", "Movement"])
raw_od.set_annotations(new_annotations)
raw_od.plot(n_channels=15, duration=400, show_scrollbars=False)
OUT:Loading /home/circleci/mne_data/MNE-fNIRS-motor-data/Participant-1 Reading 0 ... 23238 = 0.000 ... 2974.464 secs... |
可以看到40、190和320s左右的运动中有一些小的伪影。但此数据相对干净,因此接下来将添加一些额外的伪影进行演示。
②向数据中添加伪影
NIRS数据中两种常见的伪影类型是尖峰和基线偏移。当一个人移动,并且光极相对于头皮移动然后返回其原始位置时,通常会出现尖峰。如果光极相对于头皮移动并且不返回其原始位置,则会发生基线偏移。这里,在数据中添加了100s的尖峰类型伪影和200s的基线偏移。
corrupted_data = raw_od.get_data()
corrupted_data[:, 298:302] = corrupted_data[:, 298:302] - 0.06
corrupted_data[:, 450:750] = corrupted_data[:, 450:750] + 0.03
corrupted_od = mne.io.RawArray(corrupted_data, raw_od.info,
first_samp=raw_od.first_samp)
new_annotations.append([95, 145, 245], [10, 10, 10],
["Spike", "Baseline", "Baseline"])
corrupted_od.set_annotations(new_annotations)
corrupted_od.plot(n_channels=15, duration=400, show_scrollbars=False)
OUT:Creating RawArray with float64 data, n_channels=56, n_times=8924 Range : 0 ... 8923 = 0.000 ... 2974.333 secs Ready. |
③应用时间导数分布修复(TDDR)
这种方法无需任何用户提供的参数,即可校正基线偏移和尖峰伪影。
corrected_tddr = temporal_derivative_distribution_repair(corrupted_od)
corrected_tddr.plot(n_channels=15, duration=400, show_scrollbars=False)
注:需要TDDR工具包和示例脚本的小伙伴,可以在公众号后台回复“TDDR”获取。
Temporal Derivative Distribution Repair (TDDR): A motion correction method for fNIRS.
https://doi.org/10.1016/j.neuroimage.2018.09.025
更多精彩课程推荐
| |||
本文内容仅供参考,一切内容以英文原文为准。
非常欢迎大家留言、转载、收藏或分享~ 本文来自微信公众号“茗创科技”。如需转载,请在“茗创科技”后台回复“转载”,并附上所需转载的文章标题以及您的ID。
MC_Brain
茗创科技工作室
觉得有帮助,欢迎转发收藏或者点个在看哦~
听说点在看的人SCI接收率都提升了18%呢!