在前面咱们介绍过Evoked的数据结构以及如何建立Evoked对象《Python-EEG工具库MNE中文教程(4)-MNE中数据结构Evoked及其对象建立》以及上文介绍了Evoked的数据可视化《Python-可视化Evoked数据》。数据库
今天接着介绍Evoked数据的地形图可视化。微信
首先仍是先介绍一下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 pltimport 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)
注意,诱发事件是一系列诱发事件的实例。
经过将参数条件传递给mne.read_evokeds(),您只能读取其中一个类别。 为了使本教程更简单,咱们将每一个实例读取到一个变量。编码
evoked_l_aud = evoked[0]evoked_r_aud = evoked[1]evoked_l_vis = evoked[2]evoked_r_vis = evoked[3]
咱们可使用Evoked对象的mne.Evoked.plot_joint()方法在一张图中组合两种图形。按原样调用(evoked.plot_joint()),此函数应提供时空动态的信息显示。 可使用topomap_args和ts_args参数直接设置图的时间序列部分和topomap部分的样式。也能够将键值对做为Python字典传递。spa
而后将它们做为参数传递给联合绘图的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)
若是想要比较两个或多个传感器的选择条件,或例如,为全局场功率。为此,可使用函数mne.viz.plot_compare_evokeds()。最简单的方法是建立一个Python字典,其中键是条件名,值是mne诱发对象。
若是你提供了多个诱发对象的列表,好比那些多被试的对象,总平均值连同一个置信区间带被绘制出来——这能够用来对比整个实验的条件。
首先,咱们将诱发对象加载到字典中,将键设置为‘/’分隔的标记(就像咱们能够对epochs中的event_id所作的那样)。
而后,咱们使用mne.viz.plot_compare_evokeds()进行绘图。该图表使用dict参数进行样式化,一样使用“/”分隔的标记。咱们绘制了一个具备强烈听觉反应的脑磁图MEG通道。
conditions = ["Left Auditory", "Right Auditory", "Left visual", "Right visual"]evoked_dict = dict()for condition in conditions: evoked_dict[condition.replace(" ", "/")] = mne.read_evokeds( fname, baseline=(None, 0), proj=True, condition=condition)print(evoked_dict)
对于移动高级绘图使用mne.viz.plot_compare_evokeds()。
"""设置 evoked 类别颜色,左听觉和左视觉的线条颜色为:Crimson右听觉和右视觉的线条颜色为:CornFlowerBlue"""colors = dict(Left="Crimson", Right="CornFlowerBlue")"""设置 evoked 绘制 线型,听觉的线型为:-视觉的线型为:--"""linestyles = dict(Auditory='-', visual='--')# pick = evoked_dict["Left/Auditory"].ch_names.index('MEG 1811')mne.viz.plot_compare_evokeds(evoked_dict, picks=pick, colors=colors, linestyles=linestyles, split_legend=True)
也能够用图像来描绘这些活动。时间沿着x轴,通道沿着y轴。振幅是彩色编码的,因此振幅从负到正转换成从蓝色到红色。白色表示零振幅。您可使用cmap参数本身定义颜色映射。接受的值包括全部matplotlib颜色映射。
evoked_r_aud.plot_image(picks='meg')
最后将传感器数据绘制成地形图。在简单的状况下,咱们只绘制左听觉反应,而后咱们把它们都绘制在同一个图中进行比较。单击各个图,将它们放大。
title = 'MNE sample data\n(condition : %s)'evoked_l_aud.plot_topo(title=title % evoked_l_aud.comment, background_color='k', color=['white'])mne.viz.plot_evoked_topo(evoked, title=title % 'Left/Right Auditory/Visual', background_color='w')
对于少许传感器,也能够建立更精细的弹出窗口。 一样,单击传感器可打开一个单传感器图。
mne.viz.plot_compare_evokeds(evoked_dict, picks="eeg", colors=colors, linestyles=linestyles, split_legend=True, axes="topo")
文章来源于网络,仅用于学术交流,不用于商业行为,如有侵权及疑问,请后台留言!
更多阅读
清华大学、中科院等研究机构研究人员提出BETA:面向SSVEP-BCI应用程序的大型基准测试数据库
你知道"淘宝意念购"吗?阿里巴巴也入局脑机接口领域了...,
使用时空-频率模式分析从脑电数据的一些试验中提取N400成分
脑机接口BCI学习交流QQ群:515148456
微信群请扫码添加,Rose拉你进群
(请务必填写备注,eg. 姓名+单位+专业/领域/行业)
长按加群
本文分享自微信公众号 - 脑机接口社区(Brain_Computer)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。