脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建
Evoked结构
Evoked potential(EP)诱发电位或诱发反应是指在出现诸如闪光或纯音之类的刺激后,从人类或其他动物的神经系统,特别是大脑的特定部分记录的特定模式的电位。不同形式和类型的刺激会产生不同类型的电位。
诱发电位振幅往往较低,从小于1微伏到数微伏不等,而脑电图为数十微伏,肌电图为毫伏,心电图通常接近20毫伏。为了在EEG、ECG、EMG等生物信号和环境噪声的背景下解决这些低幅度电位,通常需要对信号进行平均。信号被时间锁定在刺激上,大部分噪声是随机产生的,这样就可以通过对重复响应来平均掉噪声。
诱发电位(Evoked)结构主要用于存储实验期间的平均数据,在MNE中,创建Evoked对象通常使用mne.Epochs.average()来平均epochs数据来实现。
Evoked结构简介
import os.path as op
import matplotlib.pyplot as plt
import mne
从fif文件中读取诱发数据
"""
从文件中读取诱发数据集
"""
data_path = mne.datasets.sample.data_path()
fname = op.join(data_path, 'MEG', 'sample', 'sample_audvis-ave.fif')
evokeds = mne.read_evokeds(fname, baseline=(None, 0), proj=True)
print(evokeds)
Read a total of 4 projection items:PCA-v1 (1 x 102) activePCA-v2 (1 x 102) activePCA-v3 (1 x 102) activeAverage EEG reference (1 x 60) activeFound the data of interest:t = -199.80 ... 499.49 ms (Left Auditory)0 CTF compensation matrices availablenave = 55 - aspect type = 100
Projections have already been applied. Setting proj attribute to True.
Applying baseline correction (mode: mean)
使用read_evokeds函数加载诱发文件,并返回evoked实例列表,可以使用condition参数来读取指定类别
这里有['Left Auditory', 'Right Auditory', 'Left Visual', 'Right Visual']等类别,
evoked = mne.read_evokeds(fname, condition='Left Auditory')
evoked.apply_baseline((None, 0)).apply_proj()
print(evoked)
# 打印evoked的信息,这个信息和Raw对象以及Epochs对象中的info很相似
print(evoked.info)
print(evoked.times)
# 查看evoked结构其他属性
print(evoked.nave) # Number of averaged epochs.
print(evoked.first) # First time sample.
print(evoked.last) # Last time sample.
print(evoked.comment) # Comment on dataset. Usually the condition.
print(evoked.kind) # Type of data, either average or standard_error.
55
-120
300
Left Auditory
average
快速提取并绘制全局能量谱(Global Field Power, GFP)作为跨通道的标准偏差
这里仅对EEG显示
gfp = evoked.copy().pick_types(eeg=True, meg=False).data.std(axis=0)
fig, ax = plt.subplots(1)
ax.plot(evoked.times, gfp / 1e6) # scale to uV
ax.set(xlabel='Time (sec)', ylabel='GFP (uV)')
fig.tight_layout()
a. 读取evoked文件,创建evoked对象
sample_audvis-ave.fif文件包含了听觉诱发电位
1) 读取fif文件,创建evoked对象
from mne import read_evokeds
from mne.datasets import sample
import matplotlib.pyplot as plt"""
文件存放地址
"""
data_path = sample.data_path()
fname = data_path + '/MEG/sample/sample_audvis-ave.fif'"""
读取fif文件:
sample_audvis-ave.fif只读取左听觉的电位数据
"""
condition = 'Left Auditory'
evoked = read_evokeds(fname, condition=condition, baseline=(None, 0),proj=True)
Read a total of 4 projection items:PCA-v1 (1 x 102) activePCA-v2 (1 x 102) activePCA-v3 (1 x 102) activeAverage EEG reference (1 x 60) activeFound the data of interest:t = -199.80 ... 499.49 ms (Left Auditory)0 CTF compensation matrices availablenave = 55 - aspect type = 100
Projections have already been applied. Setting proj attribute to True.
Applying baseline correction (mode: mean)
2)绘制evoked数据
将结果显示为蝶形图
可以通过使用exclude=[],这里不排除不良通道,将不良通道以红色显示
evoked.plot(exclude=[], time_unit='s')
plt.show()
将结果以二维图片的形式显示 (x: time, y: channels, color: amplitude)
evoked.plot_image(exclude=[], time_unit='s')
plt.show()
b. MNE 从头创建Evoked对象
在实际过程中,有时需要从头自动构建数据来创建Evoked对象,
方式:利用mne.EvokedArray创建Evoked对象,创建时直接构建numpy数组即可,数组的形状必须是(n_epochs, n_chans, n_times)
数据对应的单位:
V: eeg, eog, seeg, emg, ecg, bio, ecog
T: mag
T/m: grad
M: hbo, hbr
Am: dipole
AU: misc
案例1
import mne
import numpy as np
import matplotlib.pyplot as plt
第一步:构建数据
构建一个大小为10x5x200的三维数组,数组中数据是随机数;
第一维数据表示:10 epochs
第二维数据表示:5 channels
第三维数据表示:2 seconds per epoch
# 采样频率
sfreq = 100
data = np.random.randn(10, 5, sfreq * 2)# 创建一个info结构
info = mne.create_info(ch_names=['MEG1', 'MEG2', 'EEG1', 'EEG2', 'EOG'],ch_types=['grad', 'grad', 'eeg', 'eeg', 'eog'],sfreq=sfreq
)
第二步:创建evoked对象
利用mne.EvokedArray创建Evoked对象
"""
tmin:event开始前的时间,如果未指定,则默认为0
"""
# 设置事件开始前时间为-0.1s
tmin = -0.1# 对数据求平均
data_evoked = data.mean(0)# epochs的数量
nave = data.shape[0]# 给evoked起一个名称
comment = "Smiley faces""""
利用mne.EvokedArray创建Evoked对象
"""
evoked_array = mne.EvokedArray(data_evoked, info, tmin,comment=comment, nave=nave)
print(evoked_array)
_ = evoked_array.plot(time_unit='s')
案例2
import numpy as np
import neoimport mne
import matplotlib.pyplot as plt
"""
设置event id,用来识别events.
"""
event_id = 1
# 第一列表示样本编号
events = np.array([[200, 0, event_id],[1200, 0, event_id],[2000, 0, event_id]]) # List of three arbitrary eventssfreq = 1000 # 采样频率
times = np.arange(0, 10, 0.001) # Use 10000 samples (10s)sin = np.sin(times * 10) # 乘以 10 缩短周期
cos = np.cos(times * 10)"""
利用sin和cos创建一个2个通道的700 ms epochs的数据集只要是(n_epochs, n_channels, n_times)形状的数据,都可以被用来创建
"""
epochs_data = np.array([[sin[:700], cos[:700]],[sin[1000:1700], cos[1000:1700]],[sin[1800:2500], cos[1800:2500]]])ch_names = ['sin', 'cos']
ch_types = ['mag', 'mag']
info = mne.create_info(ch_names=ch_names, sfreq=sfreq, ch_types=ch_types
nave = len(epochs_data) # Number of averaged epochs
evoked_data = np.mean(epochs_data, axis=0)evokeds = mne.EvokedArray(evoked_data, info=info, tmin=-0.2,comment='Arbitrary', nave=nave)picks = mne.pick_types(info, meg=True, eeg=False, misc=False)evokeds.plot(picks=picks, show=True, units={'mag': '-'},titles={'mag': 'sin and cos averaged'}, time_unit='s')
plt.show()
不用于商业行为,转载请联系后台
若有侵权,请后台留言,管理员即时删侵!
更多阅读
[MNE-Python-1]| MNE-Python详细安装与使用
[MNE-Python-2]| MNE中数据结构Raw及其用法简介
[MNE-Python-2]| MNE中数据结构Epoch及其创建方法
脑机接口新应用,利用深度学习对无声语音信号解码
猴子意念打字,有可能敲出莎士比亚全集
投稿通道
如何让你的工作让更多人知晓和受益?
脑机接口社区就是这样一个连接学界、
企业界和爱好者的平台渠道。
社区鼓励高校实验室、企业或个人在我们平台上分享优质内容。
稿件要求
稿件系个人原创作品,若已在其他平台发表,请明确标注。
稿件一经录取,便提供稿费!
投稿通道
微信扫码,备注:投稿+姓名+单位
微信交流群,请扫码上方微信
(备注:姓名+单位+专业/领域行业)
QQ交流群:913607986
你的每一次在看,我都很在意!
脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建相关推荐
- 脑电分析系列[MNE-Python-5]| Python机器学习算法随机森林判断睡眠类型
案例介绍 本案例通过对多导睡眠图(Polysomnography,PSG)数据进行睡眠阶段的分类来判断睡眠类型. 训练:对Alice的睡眠数据进行训练: 测试:利用训练结果对Bob的睡眠数据进行测试, ...
- 脑电分析系列[MNE-Python-21]| Python协方差矩阵处理脑电数据
今天主要介绍一下MNE中如何用协方差矩阵来处理脑电数据的. MNE中的许多方法,包括源估计和一些分类算法,都需要根据记录进行协方差估计. 在本教程中,我们将介绍传感器协方差计算的基础知识,并构建一个噪 ...
- 脑电分析系列[MNE-Python-6]| Python读取.set文件和.locs文件
本案例主要介绍如何读取eeglab示例文件.set以及.locs文件. .set文件记录的是采集的信息,主要内容包括通道数,事件数,开始时间与结束时间等. .locs文件记录的是电极位置信息. 知识点 ...
- Python-EEG工具库MNE中文教程(4)-MNE中数据结构Evoked及其对象创建
目录 Evoked结构 Evoked结构简介 a. 读取evoked文件,创建evoked对象 1) 读取fif文件,创建evoked对象 2)绘制evoked数据 b. MNE 从头创建Evoked ...
- 脑电分析系列 | MNE-Python汇总
1 脑电分析系列MNE-Python教程 [MNE-1]| MNE-Python详细安装与使用(更新) [MNE-2]| MNE中数据结构Raw及其用法简介(更新) [MNE-3]| MNE中数据结构 ...
- 脑电分析系列[MNE-Python-19]| 可视化Evoked数据
在前面我们介绍过Evoked的数据结构以及如何创建Evoked对象: 脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建 Evoked potential(EP)诱发 ...
- 脑电分析系列[MNE-Python-2]| MNE中数据结构Raw及其用法简介(更新)
Raw对象主要用来存储连续型数据,核心数据为n_channels和times,也包含Info对象. 下面可以通过几个案例来说明Raw对象和相关用法. Raw结构查看: # 引入python库 impo ...
- 脑电分析系列[MNE-Python-11]| 信号空间投影SSP 应用
信号空间投影(SSP) 在前面一篇分享(脑电分析系列[MNE-Python-10]| 信号空间投影SSP数学原理)中提到,投影矩阵将根据您试图投射出的噪声种类而变化.信号空间投影(SSP)是一种通过比 ...
- 脑电分析系列 | eeglab汇总
1 脑电分析系列eeglab教程 eeglab教程系列(1)-安装教程 eeglab教程系列(2)-加载.显示数据 eeglab教程系列(3)-绘制脑电头皮图 eeglab教程系列(4)-绘制通道光谱 ...
最新文章
- php 批量导出excel文件,PHPEXCEL批量导出
- USACO 1.3... 虫洞 解题报告(搜索+强大剪枝+模拟)
- 日历控件源码开放--适用于ASP.NET 1.1
- 物理化学 界面现象
- wamp 使用mysql_PHP当中如何使用Wampserver连接到Mysql数据库以及怎样使用
- 链表题目--2 求链表的中间结点 和 求链表中倒数第k个结点
- leetcode236 二叉树的最近公共祖先
- 认清面向服务架构SOA的真实面目
- 创建tensor的几种常用方式
- PHP中的unset的使用问题
- 在手机上模拟kali系统(bochs)
- blackduck,黑鸦binary二进制模式扫描jenkins配置
- Android端百度地图API使用详解
- .m3u8视频格式转换
- 无人驾驶5: 贝叶斯公式
- windows自带hyperv安装虚拟机ubuntu与分辨率修改
- 形态学 - 膨胀和腐蚀
- 标段(包)分类 字典sql
- 小沙的remake(牛客)排序+ 树状数组 + dp
- 深入浅出解答hero刷rom的各种问题