目录

  • 注释连续数据(Annotating continuous data)
    • 通过代码创建注释
  • 可视化原始对象
    • 交互式注释原始对象
    • 对注释对象的操作

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

注释连续数据(Annotating continuous data)

本案例主要介绍如何向原始(Raw)对象添加注释,以及在数据处理的后期阶段如何使用注释。
Raw:原始对象
Annotations:注释
导入工具包

import os
from datetime import datetime
import mnesample_data_folder = mne.datasets.sample.data_path()
sample_data_raw_file = os.path.join(sample_data_folder, 'MEG', 'sample','sample_audvis_raw.fif')
raw = mne.io.read_raw_fif(sample_data_raw_file, verbose=False)
# 只截取60s的数据
raw.crop(tmax=60).load_data()

MNE-Python中的注释是一种存储关于原始对象的时间跨度的短字符串信息的方法。
注释是类似列表的对象,其中每个元素包含三部分信息:起始时间(以秒为单位)、持续时间(也以秒为单位)和描述(文本字符串)。
此外,annotation对象本身也跟踪orig_time,它是一个POSIX时间戳,表示相对于注释开始的真实时间。

通过代码创建注释

如果事先知道要注释的原始对象的跨度,可以通过编程来创建注释,甚至可以将列表或数组传递给Annotations的构造函数来同时注释多个跨度:

my_annot = mne.Annotations(onset=[3, 5, 7],duration=[1, 0.5, 0.25],description=['AAA', 'BBB', 'CCC'])
print(my_annot)

<Annotations | 3 segments : AAA (1), BBB (1), CCC (1), orig_time : None>

注意,orig_time是None,因为我们还没有指定它。在这些情况下,当您将注释添加到原始(Raw)对象时,假设orig_time与记录的第一个样本的时间相匹配,因此将设置orig_time以匹配记录的测量日期(Raw.info[‘meas_date’])。

raw.set_annotations(my_annot)
print(raw.annotations)# 构建事件戳
meas_date = raw.info['meas_date'][0] + raw.info['meas_date'][1] / 1e6
orig_time = raw.annotations.orig_time
print(meas_date == orig_time)

<Annotations | 3 segments : AAA (1), BBB (1), CCC (1), orig_time : 2002-12-03 19:01:10.720100>
True

由于示例数据来自Neuromag系统,该系统在记录开始之前就开始对样品编号进行计数,因此将my_annot添加到Raw对象还涉及另一个自动更改:偏移量等于第一个记录的样品的时间(raw.first_samp / raw.info [ ‘sfreq’])已添加到每个注释的初始值中.

time_of_first_sample = raw.first_samp / raw.info['sfreq']
print(my_annot.onset + time_of_first_sample)
print(raw.annotations.onset)

[45.95597083 47.95597083 49.95597083]
[45.95597088 47.95597088 49.95597088]

如果知道注释的开始时间是相对于其他时间的,则可以在调用set_annotations()之前设置orig_time, 然后开始时间将根据指定的orig_time与raw.info [‘meas_date’]之间的时差进行调整。这里我们将使用ISO 8601格式的字符串,并将其设置为比raw.info [‘meas_date’]晚50秒。

time_format = '%Y-%m-%d %H:%M:%S.%f'
new_orig_time = datetime.utcfromtimestamp(meas_date + 50).strftime(time_format)
print(new_orig_time)later_annot = mne.Annotations(onset=[3, 5, 7],duration=[1, 0.5, 0.25],description=['DDD', 'EEE', 'FFF'],orig_time=new_orig_time)raw2 = raw.copy().set_annotations(later_annot)
print(later_annot.onset)
print(raw2.annotations.onset)

2002-12-03 19:02:00.720100
[3. 5. 7.]
[53. 55. 57.]

上述已将注释添加到原始对象中了,可以可视化的原始对象来进行查看:

可视化原始对象

fig = raw.plot(start=2, duration=6)


这三个注释显示为不同颜色的矩形,因为它们具有不同的描述值(沿绘图区域的顶部边缘打印)。在绘图窗口底部可以看到彩色跨度出现在绘图窗口底部的小滚动条中,这有助于快速查看注释在Raw对象中的位置。

交互式注释原始对象

也可以通过在绘图窗口中单击并拖动鼠标以交互方式将注释添加到Raw对象。要做到这一点,首先进入"注释模式",将调出注释窗口。注释控件窗口:

%matplotlib auto
fig.canvas.key_press_event('a')

对注释对象的操作

只要注释对象共享相同的orig_time,就可以通过简单地用+运算符添加来组合注释对象:

new_annot = mne.Annotations(onset=3.75, duration=0.75, description='AAA')
raw.set_annotations(my_annot + new_annot)
raw.plot(start=2, duration=6)


说明:即使共享相同的描述,也可以创建重叠的注释。这在交互注释时是不可能的;
单击并拖动创建与具有相同描述的现有注释重叠的新注释,将导致新旧注释合并。

参考

MNE中文教程(12)-注释连续数据
脑机学习者Rose笔记分享,QQ交流群:903290195
更多分享,请关注公众号

Python-EEG工具库MNE中文教程(12)-注释连续数据相关推荐

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

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

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

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

  3. Python-EEG工具库MNE中文教程(5)-机器学习算法随机森林判断睡眠类型

    目录 案例介绍 数据集介绍 第一步:导入工具库 第二步:加载数据 第三步:加载Bob的数据作为测试数据 特征工程 第四步:设计scikit-learn 转换器 第五步:根据 Alice的数据来预测Bo ...

  4. Python-EEG工具库MNE中文教程(10)-信号空间投影SSP数学原理

    目录 projector(投影)和投影背景 案例解释投影原理 导入工具库 什么是projector(投影)? 计算正交平面 使用SVD计算投影矩阵 本分享为脑机学习者Rose整理发表于公众号:脑机接口 ...

  5. Python-EEG工具库MNE中文教程(9)-参考电极应用

    目录 MNE-Python中的参考 引用简介 无需重新引用(No re-referencing) 平均参考(Average reference) 单电极(A single electrode) 多个电 ...

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

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

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

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

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

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

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

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

最新文章

  1. VoxelNet阅读笔记
  2. 成功解决_catboost.CatBoostError: Bad value for num_feature[non_default_doc_idx=0,feature_idx=0]=“FDO09“:
  3. Laravel项目迁移步骤
  4. 喜茶多名员工与外卖小哥互殴 喜茶官方:辞退!
  5. 首次运行 tensorflow 项目之 vgg 网络
  6. 彻底明白ip地址,区分localhost、127.0.0.1和0.0.0.0
  7. 前端工作面试问题(上)---转
  8. 计算机中什么是以二进制表示的信息,计算机计算各种信息-为什么计算机中的所有信息都以二进制方式表示 – 手机爱问...
  9. Modelsim缺失库快速添加
  10. 001.UG_NX概述
  11. markdown 在线解析 工具
  12. 网站如何设置一个小图标
  13. 单招面试问为什么选择计算机这个专业,单招面试常见问题及答案 面试要注意什么...
  14. 关于卸载office的问题:office无法卸载的办法(附office安装和注册表查看)
  15. linux ubuntu 版本,ubuntu各版本的区别
  16. SAP license key developer access key
  17. IDEA最全最常用的配置与性能优化(Java必备)
  18. 重要的是商业,不是应用(Building a bussiness, not an app)
  19. 手游测试工具-脚本精灵
  20. 哪里计算机考研只考一门课,计算机考研|专业课只考一门数据结构的院校有哪些...

热门文章

  1. 解决:夜神模拟器连不上adb的问题
  2. node.js require()缓存-可能无效?
  3. 如何导入给定名称的模块为字符串?
  4. 多处理与线程Python
  5. BusinessObject Port 配置
  6. SQL用于更新ID为顺序ID(用于删除了几条数据导致id不连续)
  7. tp5页面跳转,空控制器空方法
  8. 【8.23更新--技术干货全家桶】大数据计算技术共享计划 — MaxCompute技术公开课第二季...
  9. php代码生成txt文件并下载
  10. Mac环境下sublime实现列选择或编辑的方法