上一篇文章中介绍了研究读取gdf格式数据的心路历程,绕了半天竟然直接操作就可以。本来以为会很容易,毕竟数据都已经成功读入了,可是我又错了,弄了好久读取的数据绘图都不对(打印看数据是对的),感觉是mne的一个bug,在Github上提issue可是网络不给力,图片死活传不上,最后给开发团队发了封邮件,也不知道能不能回我。。。。好在经过不懈努力,试了多种方法,总算有一种方法可以成功绘制数据图像了。

问题描述,读取数据绘图,可以明显看出EEG数据绘制的图像有问题。

rawDataGDF = mne.io.read_raw_gdf("B0101T.gdf",preload=True,eog=['EOG:ch01', 'EOG:ch02', 'EOG:ch03'])

rawDataGDF.plot()

打印输出数据查看,并没有发现异常。

又尝试了N多的方法,也没有定位到问题的根本原因,虽然严重怀疑是描述信息(info)有问题,可是比对了好久也没有发现异常。最后没办法了尝试自己构造RawArray数据结构,虽然麻烦一些,也是最后的办法了,好在这个方法可行。

sfreq = 250

data = np.squeeze(np.array([rawDataGDF['EEG:Cz'][0], rawDataGDF['EEG:C3'][0], rawDataGDF['EEG:C4'][0]]))

ch_types = ['eeg', 'eeg', 'eeg']

ch_names = ['EEG:Cz', 'EEG:C3', 'EEG:C4',]

info = mne.create_info(ch_names=ch_names,sfreq=sfreq,ch_types=ch_types)

raw = mne.io.RawArray(data, info)

raw.plot(n_channels=3,show=True)

最后将代码整理了下,用于处理EEG竞赛的数据,嗯嗯,真香~~

import mne
import matplotlib.pyplot as plt
import numpy as np
%matplotlib auto
#文件路径和文件名称
path = "F:\\BaiduNetdiskDownload\\BCICompetition\\BCICIV_2b_gdf\\"
fileName = "B0101T"
#事件的对应关系
eventDescription = {'276': "eyesOpen", '277': "eyesClosed", '768': "startTrail", '769':"cueLeft", '770':"cueRight", '781':"feedback", '783':"cueUnknown",'1023': "rejected", '1077': 'horizonEyeMove', '1078': "verticalEyeMove", '1079':"eyeRotation",'1081':"eyeBlinks",'32766':"startRun"}
# 读取原始数据
rawDataGDF = mne.io.read_raw_gdf(path+fileName+".gdf",preload=True,eog=['EOG:ch01', 'EOG:ch02', 'EOG:ch03'])
# 定义数据通道和通道类型
ch_types = ['eeg', 'eeg', 'eeg','eog','eog','eog']
ch_names = ['EEG:Cz', 'EEG:C3', 'EEG:C4','EOG:ch01', 'EOG:ch02', 'EOG:ch03']
# 创建数据的描述信息
info = mne.create_info(ch_names=ch_names, sfreq=rawDataGDF.info['sfreq'], ch_types=ch_types)
# 创建数据结构体
data = np.squeeze(np.array([rawDataGDF['EEG:Cz'][0], rawDataGDF['EEG:C3'][0], rawDataGDF['EEG:C4'][0], rawDataGDF['EOG:ch01'][0] , rawDataGDF['EOG:ch02'][0] ,rawDataGDF['EOG:ch03'][0]]))
# 创建RawArray类型的数据
rawData = mne.io.RawArray(data, info)
rawData.plot()
# 获取事件
event,_= mne.events_from_annotations(rawDataGDF)
print(event)
event_id = {}
for i in _:#整理event_idevent_id[eventDescription[i]] = _[i]
# 提取epoch
epochs = mne.Epochs(rawData,event,event_id, tmax=1.5 ,event_repeated = 'merge')
epochs.plot()
ev_left = epochs['cueLeft']
ev_left.plot()

原始数据图像

epochs数据图像

左手对应得epoch

Python 中 MNE 读取EEG竞赛数据绘图和提取epoch(gdf格式)相关推荐

  1. Python 中 MNE 读取EEG竞赛数据(gdf格式)

    最近在研究运动想象相关的算法,发现网上有一些公开的脑电数据,发现之前EEG还有这方面的竞赛,不知道为啥现在没有了,或许还有只不过我到目前还没找到,哈哈.前半部分都是说如何获取数据,后面才是标题的重点内 ...

  2. Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容

    1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有一个记录北京市部分PM2.5浓度监测站点信息的Excel表格数据,格式为.xls:文件内包含站点编号.X与Y坐标.站点名称等四列数据 ...

  3. Python中如何读取xml的数据

    <?xml version="1.0" encoding="utf-8" ?> - <catalog><maxid>4< ...

  4. Python 中MNE库去伪迹(ICA)案例的逐句解析

    本文是在阅读博主zhoudapeng01的文章Python 中MNE库去伪迹(ICA)_zhoudapeng01的博客-CSDN博客_ica mne后做的一个翻译工作. 主要介绍的还是ICA,需要了解 ...

  5. python应用中调用spark_在python中使用pyspark读写Hive数据操作

    1.读Hive表数据 pyspark读取hive数据非常简单,因为它有专门的接口来读取,完全不需要像hbase那样,需要做很多配置,pyspark提供的操作hive的接口,使得程序可以直接使用SQL语 ...

  6. python处理netcdf_在python中高效读取netcdf变量

    我需要能够在 python中快速读取大量的netCDF变量(每个文件1个变量).我发现netCDF4库中的数据集功能与其他语言(例如IDL)中的读取实用程序相比相当慢. 我的变量的形状为(2600,5 ...

  7. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  8. python读取ansi编码文件,如何在Python中同时读取ANSI和Unicode txt文件?

    我是python新手,遇到了一个奇怪的问题: 当一个目录中有50个txt文件时,我希望读取每个.txt文件并将其内容保存在一个唯一的变量中,例如:**file = open(fcf[i], 'r') ...

  9. 【机器学习】python使用matplotlib进行二维数据绘图并保存为png图片

    端到端机器学习导航: [机器学习]python借助pandas加载并显示csv数据文件,并绘制直方图 [机器学习]python使用matplotlib进行二维数据绘图并保存为png图片 [机器学习]p ...

最新文章

  1. 2022-2028年中国摩托车行业投资分析及前景预测报告(全卷)
  2. 某大龄程序员用亲身经历推翻35岁红线:大厂offer拿到手软,35岁才是黄金年龄!...
  3. go gin框架:Any响应任何请求类型
  4. python读取raw数据文件_Python 读写文件中数据
  5. 只显示隐藏文件 显示指定目录下的目录
  6. dubbo admin默认端口_Dubbo学习(四) Dubbo 从下载到编译成功
  7. 命令执行——远程命令执行(二)
  8. linux系统libpcap安装方法
  9. Android 自定义字体,设置字体
  10. keras报错ValueError: No data provided for XXX
  11. 新势力首家 小鹏汽车正式纳入港股通!
  12. 浮动div中的图片垂直居中
  13. 【转】pkg-config与LD_LIBRARY_PATH
  14. outlook搜索栏跑到上面去了_Outlook邮箱批量下载邮件附件+快速复制文件名
  15. Machine Learning ——Homework3
  16. javplayer 使用教程_Revit形状编辑操作大全(文末附39套BIM软件自学教程)
  17. 向量叉乘的线性性质 几何解释
  18. 双线性函数的紧凑超平面散列(Compact Hyperplane Hashing with Bilinear Functions)阅读笔记
  19. 服务器登录显示sa登录失败,U8应用服务器配置时提示登录SA失败发现是由于未能找到存储过程‘sp_password’的解决方案...
  20. 计算机文化基础—IT概论

热门文章

  1. 龙芯1b(LS1B200)使用LVGL7.0.1组件的初次体验
  2. 电商项目——商品新增/修改
  3. 好用的C语言编程软件!工具都没有,怎么用技术改变世界呢!
  4. 鸿蒙系统有希望像ios一样流畅,华为鸿蒙系统或继承了“IOS系统”大量优点,流畅性不输对手!...
  5. SAMSON阀门定位器3730-1的操作指南
  6. 基于AARRR、RMF模型对淘宝用户行为进行分析
  7. android下的app性能测试应主要针对那些方面,如何开展?
  8. jeecgboot问题解决方案
  9. A股一年见两次2800 那么期货是怎么多空操作的?
  10. 机械员培训建筑八大员培训机械设备液压系统故障诊断技术现状