脑机接口基础学习19---救救我吧,Evoked数据可视化

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

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

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

#案例介绍:

#导入工具包
import os 
import os.path as op
import numpy as np
import matplotlib.pyplot as plt

import mne
'''
第一步:
从文件中读取诱发对象

'''

data_path=r'E:\脑机接口资料\MNE-sample-data\MEG\sample'
fname=data_path+'/sample_audvis-ave.fif'
evoked=mne.read_evokeds(fname,baseline=(None,0),proj=True)

在这里插入图片描述

#打印evoked
print(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')

在这里插入图片描述
下面我们将它变得更漂亮一些,仅使用MNE通道。许多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()

上面几段代码都是在报这个错误,不知道为什么就是用不了plot_topomap()
求大佬拯救!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值