目录

  • a. 创建epoch对象
  • b.查看epoch对象
  • c.epoch平均叠加

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

Epochs对象是一种将连续数据表示为时间段集合的方法,
其存储在数组(n_events,n_channels,n_times)

其创建方式可以查看:MNE中数据结构Epoch及其创建方法

本例介绍Epoch对象的常见用法

a. 创建epoch对象

1)读取fif文件,创建raw对象
2)创建events对象
3)创建epoch对象

import mne
import os.path as op
import numpy as np
from matplotlib import pyplot as plt

第一步:创建raw对象

data_path = mne.datasets.sample.data_path()
# 加载包含事件events的听觉数据集
raw = mne.io.read_raw_fif(op.join(data_path, 'MEG', 'sample', 'sample_audvis_raw.fif'))

第二步:创建events对象

# 构造事件数组
events = mne.find_events(raw, stim_channel='STI 014')
# 显示事件数
print('Number of events:', len(events))
# 显示所有唯一的事件编号(第3列)
print('Unique event codes:', np.unique(events[:, 2]))

"""
使用描述性标签指定感兴趣的事件代码。
给不同的events一个描述性名称。
"""
event_id = {'Auditory/Left': 1, 'Auditory/Right': 2}

这里可以用上述提取的事件创建mne.Epochs对象,但该方式构造的epoch是无法使用,因为数据还未读入到内存中,可以通过get_data来获取也可以使用preload=True.

第三步:创建epoch对象

把原始数据(raw)切分成若干个epoch(时间片段)的集合,

以每个提前标准好的event为参照,取tmin到tmax这一段时间作为一个epoch来进行数据处理。

取每个event的前0.1秒和后1秒共1.1秒的时间长度作为一个epoch,为后续同类型的event的epochs叠加(average)分析做准备。

epochs = mne.Epochs(raw, events, event_id, tmin=-0.1, tmax=1,baseline=(None, 0), preload=True)
print(epochs)

b.查看epoch对象

epochs对象类似于mne.io.Raw对象,也具有info属性和event属性。

可以通过下面两种方式来查看epoch内的event相关信息

print(epochs.events[:3])
print(epochs.event_id)

[[27977 0 2]
[28771 0 1]
[29652 0 2]]
{‘Auditory/Left’: 1, ‘Auditory/Right’: 2}

也可以通过使用python的列表切片方式访问epoch对象内的events,
也可以通过events的描述性名称直接访问

print(epochs[1:5])
print(epochs['Auditory/Right'])


说明:’/‘符号用来划分标签(tag),每个被’/'划分开的单词都可以作为检索的字符串,

也可以直接搜索epochs[‘Right’]也能得到结果

print(epochs['Right'])
print(epochs['Right', 'Left'])

c.epoch平均叠加

通过调用mne.Epochs.average()方法可返回Evoked对象,average()方法可以通过参数指定需要的信道。

ev_left = epochs['Auditory/Left'].average()
ev_right = epochs['Auditory/Right'].average()f, axs = plt.subplots(3, 2, figsize=(10, 5))
_ = f.suptitle('Left / Right auditory', fontsize=20)
_ = ev_left.plot(axes=axs[:, 0], show=False, time_unit='s')
_ = ev_right.plot(axes=axs[:, 1], show=False, time_unit='s')
plt.tight_layout()


左上角图,该图展示了原始数据中左听觉(事件标记’Auditory/Left’)的epochs,
同时对所提取的所有的EEG通道进行平均值叠加处理。

在实际过程中也可以指定通道进行叠加(通过pick方法提取通道并进行average处理)

本文章由脑机学习者Rose笔记分享,QQ交流群:903290195
更多分享,请关注公众号

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

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

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

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

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

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

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

  4. MNE-Python专辑 (2) MNE中数据结构Raw及其用法简介(更新)

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 Raw对象主要用来存储连续型数据,核心数据为n_channels和times,也包含Info对象. 下面可以通过几个案例 ...

  5. 脑电分析系列[MNE-Python-2]| MNE中数据结构Raw及其用法简介(更新)

    Raw对象主要用来存储连续型数据,核心数据为n_channels和times,也包含Info对象. 下面可以通过几个案例来说明Raw对象和相关用法. Raw结构查看: # 引入python库 impo ...

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

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

  7. 脑电分析系列[MNE-Python-2]| MNE中数据结构Epoch及其创建方法

    Epoch概念简介 相信很多人第一次接触epoch时,都会有疑惑,这个词在EEG中到底指的是什么. 下面将详细说明一下. 从连续的脑电图信号中提取一些特定时间窗口的信号,这些时间窗口可以称作为epoc ...

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

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

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

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

最新文章

  1. jquery选择器玩得不6啊,只能慢慢写判断了,唉..........................
  2. python基础 list和tuple
  3. 印度不只有开挂火车,还有一开挂的数学家,凭一己之力单刷数学界
  4. 【消息果留言板 v1.2】支持回复邮件提醒+页面pc端宽度调整+时间友好显示
  5. c语言数据结构 字符串,C++数据结构之字符串操作
  6. 设计模式 C++外观者模式
  7. re管理器java格式_正则表达式工具类——ReUtil
  8. rpa打开浏览器_rpa.ie
  9. SecureCRT信号灯超时时间已到
  10. linux学习笔记3——计算机概述:主板、电源、数据表示方式、编码集
  11. Vivo手机originOS安装谷歌套件服务框架GMS安装谷歌三件套,进Google Play商店下载应用
  12. Python数据处理Tips数据特征处理离散化和二值化
  13. 完全查杀VIKING(威金蠕虫)病毒与免疫补丁
  14. C-COT 【目标跟踪】个人理解
  15. Ubuntu离线网卡驱动安装
  16. Selenium隐藏“Chrome is being controlled by automated test software”
  17. mybatis原理分析(五)---参数处理
  18. idea软件控制台Console里没有查找快捷键
  19. java 远程视频监控系统_基于android的远程视频监控系统 附完整源码
  20. win10 64位注册TeeChart8.ocx

热门文章

  1. 解决boostrap-table有水平和垂直滚动条时,滚动条滑到最右边表格标题和内容单元格无法对齐的问题
  2. Starting MySQL... ERROR! The server quit without updating PID file 问题解决
  3. “在使用GCC时,同意Xcode / iOS许可证需要管理员权限,请通过sudo以root身份重新运行。”
  4. JavaScript检查null与undefined以及==和===之间的差异
  5. 从C#中的枚举获取int值
  6. JAVA网络IO编程
  7. linux下如何判断oracle数据库tns是否设置正常
  8. XSLT模板转换XML文档
  9. ORACLE 日期查询
  10. 客户区和非客户区指的什么?窗口客户区和视图客户区的区别