非官方中文翻译
本页译自 MNE-Python 官方文档:
查看英文原文 ↗。
文档版权归 MNE Developers 所有(BSD-3-Clause)。
说明
转到末尾下载完整示例代码。
可视化 NIRS 伪迹校正方法#
这里我们人为引入若干 fNIRS 伪迹,观察伪迹校正技术如何尝试修正数据。
# Authors: Robert Luke <mail@robertluke.net>
#
# License: BSD-3-Clause
# Copyright the MNE-Python contributors.
import os
import mne
from mne.preprocessing.nirs import (
optical_density,
temporal_derivative_distribution_repair,
)
导入数据#
我们使用 fNIRS 运动数据。先重采样数据,使按精确时间索引更方便;然后把数据转换为光密度以便校正,并绘制这些信号。
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)

Loading /home/circleci/mne_data/MNE-fNIRS-motor-data/Participant-1
Reading 0 ... 23238 = 0.000 ... 2974.464 secs...
上图中约 40、190 与 240 秒处可见运动引起的小伪迹。不过该数据相对干净,因此下面再添加一些伪迹。
向数据中加入人工伪迹#
NIRS 数据中两种常见伪迹是尖峰与基线漂移。尖峰常发生在人移动、光极相对头皮移动后又回到原位时;基线漂移则发生在光极移动后未回到原位时。我们在 100 秒处加入尖峰型伪迹,在 200 秒处加入基线漂移。
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)

Creating RawArray with float64 data, n_channels=56, n_times=8924
Range : 0 ... 8923 = 0.000 ... 2974.333 secs
Ready.
应用时间导数分布修复#
该方法无需用户提供参数即可校正基线漂移与尖峰伪迹 [1]。
corrected_tddr = temporal_derivative_distribution_repair(corrupted_od)
corrected_tddr.plot(n_channels=15, duration=400, show_scrollbars=False)

从上面的数据可以看到,加入的尖峰与漂移大部分被去除,但仍残留较小的伪迹;原始数据中的伪迹也类似。
参考文献#
脚本总运行时间:(0 分 1.358 秒)