目录

  • Evoked结构
    • Evoked结构简介
    • a. 读取evoked文件,创建evoked对象
      • 1) 读取fif文件,创建evoked对象
      • 2)绘制evoked数据
    • b. MNE 从头创建Evoked对象
      • 案例1
      • 案例2

本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195

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) active
Found the data of interest:t =    -199.80 ...     499.49 ms (Left Auditory)0 CTF compensation matrices availablenave = 55 - aspect type = 100Projections 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) active
Found the data of interest:t =    -199.80 ...     499.49 ms (Left Auditory)0 CTF compensation matrices availablenave = 55 - aspect type = 100Projections 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()

脑机接口 QQ交流群:903290195
更多分享,请关注公众号

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

  1. 脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建

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

  2. Python-EEG工具库MNE中文教程(1)-MNE中数据结构Raw及其用法简介

    目录 Raw数据结构 MNE 从头创建Raw对象 案例1 案例2 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 Raw数据结构 Raw对象主要用来存储连续型数 ...

  3. Python-EEG工具库MNE中文教程(3)-MNE中数据结构Epoch及其用法简介

    目录 a. 创建epoch对象 b.查看epoch对象 c.epoch平均叠加 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 Epochs对象是一种将连续数据 ...

  4. Python-EEG工具库MNE中文教程(2)-MNE中数据结构Epoch及其创建方法

    目录 Epoch概念简介 a. 读取fif文件创建Epoch对象 b. 从头创建Epoch对象 案例1 案例2 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 ...

  5. Python-EEG工具库MNE中文教程(14)-Epoch对象中的元数据(metadata)

    目录 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195 本案例演示使用Epochs元数据.关于Epochs数据结构:可以查看文章Python-EEG工具库MN ...

  6. Python-EEG工具库MNE中文教程(13)-“bad“通道介绍

    目录 标记坏频道/标记不良通道(marking bad channels) 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195 本教程主要介绍手动标记坏通道以及 ...

  7. Python-EEG工具库MNE中文教程(12)-注释连续数据

    目录 注释连续数据(Annotating continuous data) 通过代码创建注释 可视化原始对象 交互式注释原始对象 对注释对象的操作 本分享为脑机学习者Rose整理发表于公众号:脑机接口 ...

  8. 用python画玫瑰花教程-利用Python的turtle库绘制玫瑰教程

    用Python的turtle库绘图是很简单的,闲来无事就画了一个玫瑰花,下面奉上源码.... 源码: ''' Created on Nov 18, 2017 @author: QiZhao ''' i ...

  9. NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码

    NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码 目录 全部代码 相关文章 NLP之情感分析:基于python编程(jieba库)实现中文文本情 ...

最新文章

  1. 欧盟如何运用AI之力推动社会创新
  2. 暨南大学击败清华,首次夺得ASC世界大学生超算竞赛冠军
  3. [转] Java多线程发展简史
  4. 【ValueError: Target is multiclass but average=‘binary‘. Please choose another average setting, one 】
  5. pythoning——11、正则匹配
  6. 1090 危险品装箱 (25分)
  7. 苹果全线支持支付宝,放不下的中国战场
  8. 麦克纳姆轮全向移动机器人运动学模型应用
  9. Android系统框架总结(好文)
  10. C# 中取绝对值的函数
  11. Chain ‘MASQUERADE‘ does not exist 报错解决
  12. 计算机桌面亮度调节,电脑屏幕亮度怎么调?笔记本屏幕亮度调节方法图解教程 电脑维修技术网...
  13. pvs安装配置_配置警告下一代插件以与PVS-Studio集成
  14. 计算机网络的ask表示啥,计算机网络理论知识:物理层
  15. 【RFC6582 TCP快速恢复算法的NewReno修改】(翻译)
  16. 运行python程序总是报警告“libpng warning: iCCP: known incorrect sRGB profile”,解决方案:将Anaconda中的libpng版本替换即可
  17. STM32F4_定时器输入捕获详解
  18. 弘辽科技:抖音最大对手,有了新变化
  19. Springboot 整合Retry 实现重试机制
  20. wrong ELF class: ELFCLASS32

热门文章

  1. springboot aop + logback + 统一异常处理 打印日志
  2. Android 解决不同进程发送KeyEvent 的问题
  3. 如何在Python Interpreter中重新导入更新的包? [重复]
  4. Git每次推送时都会询问用户名
  5. 如何分割字符串以便可以访问项目x?
  6. 检查Bash Shell脚本中输入参数的存在
  7. 微信小程序----日期时间选择器(自定义精确到分秒或时段)
  8. SpringBoot引用lombok让代码更简洁
  9. 分析型数据库受大数据市场追捧
  10. (操作系统)实验二 作业调度