Python-可视化Evoked数据

更多技术干货第一时间送达

在前面我们介绍过Evoked的数据结构以及如何创建Evoked对象:

Python-EEG工具库MNE中文教程(4)-MNE中数据结构Evoked及其对象创建

Evoked结构


Evoked potential(EP)诱发电位或诱发反应是指在出现诸如闪光或纯音之类的刺激后,从人类或其他动物的神经系统,特别是大脑的特定部分记录的特定模式的电位。不同形式和类型的刺激会产生不同类型的电位。

诱发电位振幅往往较低,从小于1微伏到数微伏不等,而脑电图为数十微伏,肌电图为毫伏,心电图通常接近20毫伏。为了在EEG、ECG、EMG等生物信号和环境噪声的背景下解决这些低幅度电位,通常需要对信号进行平均。信号被时间锁定在刺激上,大部分噪声是随机产生的,这样就可以通过对重复响应来平均掉噪声。

诱发电位(Evoked)结构主要用于存储实验期间的平均数据,在MNE中,创建Evoked对象通常使用mne.Epochs.average()来平均epochs数据来实现。

本示例中,我们着重于mne.Evoked的绘图功能。

案例介绍

# 导入工具包import os.path as opimport numpy as npimport matplotlib.pyplot as plt
import mne
"""第一步:从文件中读取诱发对象"""# 获取数据文件默认春芳地址data_path = mne.datasets.sample.data_path()# 构建文件存放的具体路径fname = op.join(data_path, 'MEG', 'sample', 'sample_audvis-ave.fif')# 根据文件存放的具体路径evoked = mne.read_evokeds(fname, baseline=(None, 0), proj=True)
# 打印 evokedprint(evoked)

从上面打印信息可以看到,Evoked的内容包含了4个类别的evoked数据,分别是:Left Auditory、Right Auditory、Left visual、Right visual。

注意,诱发事件是一系列诱发事件的实例。
通过将参数条件传递给mne.read_evokeds(),您只能读取其中一个类别。 为了使本教程更简单,我们将每个实例读取到一个变量。

evoked_l_aud = evoked[0]evoked_r_aud = evoked[1]evoked_l_vis = evoked[2]evoked_r_vis = evoked[3]

下面我们绘制事件相关的电位/场(ERP / ERF)。 默认情况下不绘制不良通道。
在这里,我们明确设置了exclude参数,以红色显示不良频道。 MNE-python的所有绘图功能都会返回图形实例的句柄。
有了句柄后,我们可以自定义绘制效果

fig = evoked_l_aud.plot(exclude=(), time_unit='s')

下面我们将它变得更漂亮一些,仅使用MEG通道。许多mne函数都包含一个pick参数来包含频道的选择。pick_types()、mne.pick_channels()、mne.pick_channels_regexp()或可以解释为通道名称或通道类型的字符串列表,可以轻松构造这些通道索引。

使用spatial_colors=True,对各个通道行进行颜色编码,以显示传感器的位置—具体地说,将传感器的x、y和z位置转换为R、G和B值。

evoked_l_aud.plot(spatial_colors=True, gfp=True, picks='meg')

注意左边的图例。这些颜色表明可能有两个不同的信号来源。 从第一个数字来看,这并不明显。尝试用鼠标左键绘制斜线。 它应该打开一个新窗口,其中topomaps(头皮区域)是绘制区域的平均值。还有一个单独绘制topomaps的功能。

evoked_l_aud.plot_topomap(time_unit='s')

默认情况下,topomaps是从诱发数据上平均分布的时间点绘制的。
我们也可以自己定义时间。

times = np.arange(0.05, 0.151, 0.05)evoked_r_aud.plot_topomap(times=times, ch_type='mag', time_unit='s')
# 或者我们可以自动选择峰值。# 或者我们可以自动选择峰值。evoked_r_aud.plot_topomap(times='peaks', ch_type='mag', time_unit='s')

首先,我们在一个图形中创建一组matplotlib轴,并将所有诱发数据的类别相互绘制在一起。

fig, ax = plt.subplots(1, 5, figsize=(8, 2))kwargs = dict(times=0.1, show=False, vmin=-300, vmax=300, time_unit='s')evoked_l_aud.plot_topomap(axes=ax[0], colorbar=True, **kwargs)evoked_r_aud.plot_topomap(axes=ax[1], colorbar=False, **kwargs)evoked_l_vis.plot_topomap(axes=ax[2], colorbar=False, **kwargs)evoked_r_vis.plot_topomap(axes=ax[3], colorbar=False, **kwargs)for ax, title in zip(ax[:4], ['Aud/L', 'Aud/R', 'Vis/L', 'Vis/R']): ax.set_title(title)plt.show()

如上图,我们创建了五个轴,但是只有四个类别。第五轴用于绘制颜色栏。创建此类自定义图或使用colorbar = False禁用颜色条时,必须为其提供空间。这就是警告要告诉您的内容。同样,我们将show = False用于第三个函数调用。

我们可以使用Evoked对象的mne.Evoked.plot_joint()方法在一张图中组合两种图形。按原样调用(evoked.plot_joint()),此函数应提供时空动态的信息显示。 可以使用topomap_args和ts_args参数直接设置图的时间序列部分和topomap部分的样式。也可以将键值对作为Python字典传递。

然后将它们作为参数传递给联合绘图的mne.Evoked.plot_topomap()和时间序列(mne.Evoked.plot())。

对于使用这些topomap_args和ts_args参数的特定样式的示例,此处显示了特定时间点(90和200 ms)的topomaps,未绘制传感器(通过转发到plot_topomap的参数),并且显示了Global Field Power:

ts_args = dict(gfp=True, time_unit='s')topomap_args = dict(sensors=False, time_unit='s')evoked_r_aud.plot_joint(title='right auditory', times=[.09, .20], ts_args=ts_args, topomap_args=topomap_args)

更多阅读

小脑的功能解剖

脑机头条 第29期|  非脑机专业如何进入脑机接口领域

关于事件相关电位P300应用于视频游戏的研究

Python-生成模拟原始脑电数据

头皮脑电图源空间的计算建模为癫痫的术前评估提供依据

测试干式EEG传感器的有效性--使用游戏

Python-使用多种滤波器对脑电数据去除伪影

长文阅读 | 人机融合智能:人工智能3.0

脑机接口基础之神经科学(更新)

BCI比赛数据集简介-BCI competition IV 2b

EEG信号特征提取算法

EEMD算法原理与实现

EMD算法原理与实现
EEGNet: 神经网络应用于脑电信号

信号处理之倒频谱原理与python实现

信号处理之功率谱原理与python实现

脑电信号滤波-代码实现

运动想象系统中的特征提取算法和分类算法

特征提取算法 | 共空间模式 Common Spatial Pattern(CSP)

功率谱估计-直接法原理与案例

MNE中文教程(16)-脑电数据的Epoching处理

DEAP数据库介绍--来自于音乐视频材料诱发得到的脑电数据

PsychoPy安装与测试案例

PsychoPy文字刺激、图片刺激和光栅刺激

Python机器学习算法随机森林判断睡眠类型

应用深度学习EEGNet来处理脑电信号

(0)

相关推荐