脑机接口基础学习08

您所在的位置:网站首页 1839怎么读 脑机接口基础学习08

脑机接口基础学习08

2024-06-30 18:19| 来源: 网络整理| 查看: 265

EDF,全称是Eurpean 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是字符串,则该字符串为数据存放在硬盘中的路径地址(速度较慢,需要较少的内存)

来看一个实例

###1.导入工具包 from mne.io import concatenate_raws,read_raw_edf import matplotlib.pyplot as plt import mne ###2.加载本地edf文件 raw=read_raw_edf("Affaf Ikram 20121020 1839.L1.edf",preload=False) ###3.获取原始数据中事件 #查看原始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个事件

###4.根据事件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_id) print(events_from_annot)

在这里插入图片描述

###5.绘制事件图 fig=mne.viz.plot_events(events_from_annot,sfreq=raw.info['sfreq'], first_samp=raw.first_samp,event_id=event_dict) 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) plot.title('Sample channels')

在这里插入图片描述 今天同样没有找到相应数据文件,里面的图仍然是公众号里的,实在惭愧



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3