转载自公众号:路同学
作者:路同学
Hello,
这里是行上行下,我是喵君姐姐~
在之前所发布的“MNE-Python的简易中文教程简单入门”中,我们介绍了使用MNE来对EEG/MEG进行预处理;
另外,在发布的“MNE进阶教程|实例详解EEG/MEG数据读取”教程中,主要介绍了以一个公开数据为案例,详解基于MNE-Python的从“原数据”到“可处理数据”的读取流程。
随后,发布的“MNE-Python简易教程|解析EEG/MEG数据中的事件信息”教程中,详解如何从EEG/MEG数据中解析出事件信息,即介绍MNE-Python中的事件信息的读取。
![78d38d27ad1ff29456b1f13b7dcb386c.gif](https://i-blog.csdnimg.cn/blog_migrate/12c2f4ce1fa931f91be0b7e23d19427e.gif)
而在本期中,我们继续邀请路同学带大家详解EEG/MEG数据预处理的核心阶段——伪影的处理。
什么是伪影?
伪影是记录的信号中不属于本来大脑神经元活动的部分,造成这种干扰和噪音的原因很多:
环境伪影:
以交流电(典型的50或60Hz)为中心的持续震荡;
由建筑物震动引起的短暂信号跳跃(如砰地一声关上门);
附近电梯、手机、地磁场等产生的电磁干扰。
测量伪影:
来自刺激呈现的电磁干扰(如EEG传感器接收未屏蔽耳机产生的磁场);
头部位置指示器(HPI)线圈的特定频率的持续震荡;
由于传感器故障(如电极接触不良)造成的单个导联出现随机的高振幅波动或恒定的零信号。
生物伪影:
由于心脏电活动造成的周期性的类似QRS信号模式(尤其在MEG导联中);
由于眼动造成的短暂偏转(尤其在前额EEG导联中);
由于眨眼造成的大幅的瞬态偏转(尤其在前额EEG导联中);
由于吞咽引起的肌肉活动造成的几个通道上出现短暂的高频波动。
如何处理伪影?
三种选择:
1 忽略artifact照旧处理;
2 排除数据坏损的部分,分析剩余的数据;
3 修复artifact同时(希望)保持感兴趣的信号不变。
伪影检测
这是这一节的核心。
首先还是导入example data方便后面的示例:
import osimport numpy as npimport mnesample_data_folder = mne.datasets.sample.data_path()sample_data_raw_file = os.path.join(sample_data_folder, 'MEG', 'sample', 'sample_audvis_raw.fif')raw = mne.io.read_raw_fif(sample_data_raw_file)raw.crop(0, 60).load_data()
MNE-Python包括一些用于自动检测的工具,但是用户也可以通过对数据的可视化方式来进行检查。
由于示例数据中包含SSP projector,即数据导联到空间的投影信息,这个信息预留在Raw对象中作为一个单独的变量,这里我们先用del_proj()从Raw对象中删除掉它以便我们检查数据的最原始状态:
ssp_projectors = raw.info['projs']raw.del_proj()
接下来介绍一些典型的伪影:
低频漂移:
低频漂移很容易直接通过最基础的plot()方法观察到,这里我们画出60秒的所有导联的数据:
mag_channels = mne.pick_types(raw.info, meg='mag')raw.plot(duration=60, order=mag_channels, n_channels=len(mag_channels), remove_dc=False)
![1e2a61b1526f9ab27ac99dbf315b1df5.png](https://i-blog.csdnimg.cn/blog_migrate/cefdcdaa38d6ca41d239c53936b57381.png)
低频漂移很容易通过高通滤波以较低的截止频率来消除,通常使用0.1Hz的截止频率可以抑制大部分的漂移。
电力线噪音:
电力线伪影最容易通过绘画能量谱图来观察到,我们使用plot_psd()来说明:
fig = raw.plot_psd(tmax=np.inf, fmax=2