非官方中文翻译 本页译自 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)
Raw plot
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)
Raw plot
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)
Raw plot

从上面的数据可以看到,加入的尖峰与漂移大部分被去除,但仍残留较小的伪迹;原始数据中的伪迹也类似。

参考文献#

脚本总运行时间:(0 分 1.358 秒)

图库由 Sphinx-Gallery 生成