Python专栏 | MNE脑电数据预处理

在这里插入图片描述

关注微信公众号:脑机接口研习社
了解脑机接口最近进展

系列文章目录

Python专栏 | 脑电图和脑磁图(EEG/MEG)的数据分析方法之载入数据

Python专栏 | MNE脑电数据(EEG/MEG)可视化

Python专栏 | MNE数据预处理方法——独立成分分析

Python专栏 | 独立成分分析(ICA)的实例应用:消除伪影信号

Python专栏 | ICA应用:如何识别伪影信号?(一)

Python专栏 | ICA应用:如何识别伪影信号?(二)

Python专栏 | ICA应用:如何识别伪影信号?(三)

持续更新中……



数据预处理(Preprocessing)

独立成分分析(ICA)是MNE-Python教程重点介绍的脑电数据预处理技术,在之前的几篇文章里我们重点介绍了如何通过ICA技术来清理原始数据里的伪影数据,以及如何在Components里识别伪影信号。戳下面的文章链接可查看具体内容,这里将不再赘述。

Python专栏 | MNE数据预处理方法——独立成分分析

Python专栏 | 独立成分分析(ICA)的实例应用:消除伪影信号

Python专栏 | ICA应用:如何识别伪影信号?(一)

Python专栏 | ICA应用:如何识别伪影信号?(二)

Python专栏 | ICA应用:如何识别伪影信号?(三)

代码示例:

# set up and fit the ICA
ica = mne.preprocessing.ICA(n_components=20, random_state=97, max_iter=800)
ica.fit(raw)

ica.exclude = [1, 2]  # details on how we picked these are omitted here
ica.plot_properties(raw, picks=ica.exclude)

输出结果:
在这里插入图片描述
在这里插入图片描述

Fitting ICA to data using 364 channels (please be patient, this may take a while)
Selecting by number: 20 components
Fitting ICA took 3.6s.

Using multitaper spectrum estimation with 7 DPSS windows
Not setting metadata
Not setting metadata
138 matching events found
No baseline correction applied
0 projection items activated
0 bad epochs dropped
C:\ProgramData\Anaconda3\lib\site-packages\mkl_fft\_numpy_fft.py:331: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
  output = mkl_fft.rfft_numpy(a, n=n, axis=axis)
Not setting metadata
Not setting metadata
138 matching events found
No baseline correction applied
0 projection items activated
0 bad epochs dropped

Note:
由前面介绍ICA的文章可知,ICA001和ICA002分别是眼动和心跳的伪影信号,故ICA.exclude选择了1和2。

在确定要删除哪些Components后,我们将它们作为exclude参数传递,然后将ICA应用于原始信号raw。

ICA.apply的方法要求将原始数据加载到内存中(默认情况下是仅从磁盘中读取数据),因此我们将首先使用load_data。

我们还将复制Raw对象,以便我们可以并行比较去除伪影之前和之后的信号。

代码示例:

orig_raw = raw.copy()
raw.load_data()#ICA.apply的方法要求将原始数据加载到内存中,因此我们将首先使用load_data。
ica.apply(raw)

# show some frontal channels to clearly illustrate the artifact removal
chs = ['MEG 0111', 'MEG 0121', 'MEG 0131', 'MEG 0211', 'MEG 0221', 'MEG 0231',
       'MEG 0311', 'MEG 0321', 'MEG 0331', 'MEG 1511', 'MEG 1521', 'MEG 1531',
       'EEG 001', 'EEG 002', 'EEG 003', 'EEG 004', 'EEG 005', 'EEG 006',
       'EEG 007', 'EEG 008']
chan_idxs = [raw.ch_names.index(ch) for ch in chs]
orig_raw.plot(order=chan_idxs, start=12, duration=4)
raw.plot(order=chan_idxs, start=12, duration=4)

输出结果:
在这里插入图片描述
在这里插入图片描述

Reading 0 ... 41699  =      0.000 ...   277.709 secs...
Out[8]: <Raw | sample_audvis_filt-0-40_raw.fif, 376 x 41700 (277.7 s), ~122.9 MB, data loaded>

Applying ICA to Raw instance
    Transforming to ICA space (20 components)
    Zeroing out 2 ICA components
    Projecting back using 364 PCA components

Note:
从图上可以很明显看到MEG信号的区别,第一张图是去除伪影之前的脑电数据图,而第二张图是去除伪影之后的脑电数据图。

未完待续……

参考链接:
https://mne.tools/stable/auto_tutorials/intro/plot_10_overview.html#preprocessing
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
脑电数据的预处理是为了去除噪声、伪迹和其他干扰,以提取出有效的脑电信号。在Python中,可以使用多种库和工具进行脑电数据的预处理,下面介绍一些常用方法。 1. 导入库和数据:首先,你需要导入一些常用的库,如numpy、scipy和matplotlib,并加载你的脑电数据。可以使用一些库(如mne)来读取常见的脑电数据格式(如EDF、BDF等)。 2. 去除噪声:去除噪声是预处理的关键步骤之一。常用方法包括滤波和去伪迹。滤波可以使用数字滤波器(如Butterworth滤波器)来去除低频和高频噪声。去伪迹可以通过一些算法(如平均参考、CAR参考等)来减少电极间的共模噪声。 3. 剔除伪迹:伪迹是由于运动或其他干扰引起的数据畸变。可以使用运动估计算法(如ICA)来识别和剔除这些伪迹。 4. 修正偏移:脑电信号可能存在偏移,即信号整体上升或下降。可以通过减去信号均值或进行基线校正来修正偏移。 5. 降采样:对于长时间的脑电数据,可以考虑将数据进行降采样,以减少计算负担。 6. 分割数据:根据实验设计,可以将脑电数据分割成不同的试验段或事件段,以便进一步分析。 这只是脑电数据预处理的一些基本步骤,具体的方法和流程可能会根据数据类型和研究目的而有所不同。你可以根据实际需求选择适合的方法和工具进行预处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值