专栏首页脑机接口Python读取.edf格式脑电数据文件

Python读取.edf格式脑电数据文件

MNE-python读取.edf文件

EDF,全称是 European Data Format,是一种标准文件格式,用于交换和存储医疗时间序列。

该格式文件能够存储多通道的数据,允许每个信号拥有不同的采样频率。

在内部,它包括标题和一个或多个数据记录。标题包含一些一般信息(患者标识,开始时间......等等)以及每个信号的技术规格(校准,采样率,过滤,......等等),编码为 ASCII 字符。数据记录包含小端 16 位整数的样本。因此,EDF 也是多导睡眠图(PSG)录音的流行格式。

python读取edf文件,可以通过mne实现

方法原型:

方法原型:
mne.io.read_raw_edf(input_fname,
                    montage='deprecated', 
                    eog=None,
                    misc=None,
                    stim_channel='auto',
                    exclude=(), 
                    preload=False, 
                    verbose=None)

"""
input_fname:edf文件存放地址

montage='deprecated':已弃用

eog:通道名称或应指定为EOG通道的索引列表。值应对应于文件中的电极。默认为无。

misc:通道名称或应指定为MISC通道的索引列表。值应对应于文件中的电极。默认为无。

stim_channel:默认为"auto",这意味着将名为“status”或“trigger”(不区分大小写)的通道设置为STIM。
如果为str(或str列表),则所有与名称匹配的通道均设置为STIM;
如果为int(或int列表),则将对应于索引的通道设置为STIM。

exclude:要排除的频道名称。这在读取具有不同采样率的数据时会有所帮助,以避免不必要的重采样。

preload:如果为True,则数据将被预加载到内存中(这样可以加快数据的索引);
如果preload是字符串,则该字符串为数据存放在硬盘中的路径地址(速度较慢,需要较少的内存)。
"""

读取edf文件:Affaf Ikram 20121020 1839.L1.edf

第一步:导入工具包

from mne.io import concatenate_raws, read_raw_edf
import matplotlib.pyplot as plt
import mne

第二步:加载本地edf文件

raw=read_raw_edf("Affaf Ikram 20121020 1839.L1.edf",preload=False)

第三步:获取原始数据中事件

查看原始edf文件中保存的event id以及events

events_from_annot, event_dict = mne.events_from_annotations(raw)
print(event_dict)
print(events_from_annot)

如上图可以发现,事件ID有1,2,3,4,5,6

每个ID对应着注释:['TRSP', 'bgin', 'fix+', 'resp', 'stm+', 'stm-']

共有517个事件

第四步:根据事件ID获取对应事件

下面只选取事件ID为5和6的所对应的事件

custom_mapping = {'stm+':5, 'stm-': 6}
(events_from_annot,
 event_dict) = mne.events_from_annotations(raw, event_id=custom_mapping)
print(event_dict)
print(events_from_annot)

第五步:绘制事件图

fig = mne.viz.plot_events(events_from_annot, sfreq=raw.info['sfreq'],
                          first_samp=raw.first_samp, event_id=event_dict)
fig.subplots_adjust(right=0.7)
epochs = mne.Epochs(raw, events=events_from_annot, 
                    event_id=event_dict)

epochs.plot_image()
"""
获取采样频率sfreq

知识点:

“采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。
采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。
通俗的讲采样频率是指计算机每秒钟采集多少个信号样本。”

"""
sfreq=raw.info['sfreq']
"""
获取索引为m到n的样本,每个样本从第k次到第h次.
data,times=raw[m:n,k:h]

其中data为索引为m到n的样本,每个样本从第k次到第h次.
times是以第k次采样的时间作为开始时间,第h次采样时的时间为结束时间的时间数组。
"""
data,times=raw[:3,int(sfreq*1):int(sfreq*3)]
plt.plot(times,data.T)
plt.title("Sample channels")

文章来源于网络,仅用于学术交流,不用于商业行为,若有侵权及疑问,请后台留言!

本文分享自微信公众号 - 脑机接口社区(Brain_Computer),作者:Rose

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python-EEG工具库MNE中文教程(7)-读取.edf文件

    EDF,全称是 European Data Format,是一种标准文件格式,用于交换和存储医疗时间序列。

    脑机接口社区
  • Python-EEG工具库MNE中文教程(13)-"bad"通道介绍

    有时个别通道出现故障,提供的数据中噪声过高而无法使用。 通过使用MNE-Python,可以很容易地跟踪分析流中的这些通道,而无需实际删除这些通道中的数据。 它具...

    脑机接口社区
  • MNE-Python专辑 | MNE-Python详细安装与使用(更新)

    1.安装Python(推荐安装Anaconda)[这里是windows系统下的安装]

    脑机接口社区
  • Python-EEG工具库MNE中文教程(7)-读取.edf文件

    EDF,全称是 European Data Format,是一种标准文件格式,用于交换和存储医疗时间序列。

    脑机接口社区
  • SpringBoot自定义Starter

    3) 输入GroupId、ArtifactId 和 Version 信息,点击Finish

    lyb-geek
  • Spring Boot如何自定义Starter

    如果我们系统中想要拥有自动配置的功能,可以自己编写一个starter (启动器),想想就觉得很酷,因为这意味着我们不仅有自己定义的自动配的功能,而且具有更通用的...

    黄泽杰
  • Kubernetes应用健康检查

    在实际生产环境中,想要使得开发的应用程序完全没有bug,在任何时候都运行正常,几乎 是不可能的任务。因此,我们需要一套管理系统,来对用户的应用程序执行周期性的健...

    用户1263954
  • kubernete编排技术六:RBAC权限控制

    这是kubernete编排技术的第六篇,本文主要讲一下RBAC。之前讲过,kubernete所有API对象,都保存在etcd里。要访问和操作这些对象,一定会通过...

    jinjunzhu
  • kubernetes中的Pause容器如何理解?

    前几篇文章都是讲的Kubernetes集群和相关组件的部署,但是部署只是入门的第一步,得理解其中的一些知识才行。今天给大家分享下Kubernets的pause容...

    程序员同行者
  • CVPR 2020 论文大盘点-图像分割完整篇

    本文对剩余所有分割论文进行了总结,每个方向论文数量较少,但不少论文都很有意思,非常值得关注。

    CV君

扫码关注云+社区

领取腾讯云代金券