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


python读取cmd输入内容 python读取dem_采样频率


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)


读取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)


python读取cmd输入内容 python读取dem_采样频率_02


如上图可以发现,事件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)


python读取cmd输入内容 python读取dem_python读取cmd输入内容_03


第五步:绘制事件图


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)


python读取cmd输入内容 python读取dem_脑机接口_04


epochs = mne.Epochs(raw, events=events_from_annot, 
                    event_id=event_dict)

epochs.plot_image()


python读取cmd输入内容 python读取dem_Python_05


"""
获取采样频率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")


python读取cmd输入内容 python读取dem_python读取cmd输入内容_06

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

MNE-Python处理脑电教程汇总

脑机接口社区:MNE-Python处理脑电教程汇总