CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理(一)

主要内容

  • 1、CHB-MIT头皮脑电图数据介绍
  • 2、CHB-MIT头皮脑电图数据下载
  • 3、CHB-MIT头皮脑电图数据处理
    • 3.1、提取原始数据
    • 3.2、滤波(0.1~50hz)
    • 3.3、数据分块(时间窗口)

1、CHB-MIT头皮脑电图数据介绍

该数据库收集自波士顿儿童医院,其中包括患有难治性癫痫发作的儿科患者的脑电图记录。停用抗癫痫药物后最多持续几天对受试者进行监测,以表征其癫痫发作并评估其对手术干预的候选资格。

从22位受试者中收集了23个病例的记录(5例男性,3至22岁; 17例女性,1.5至19岁)。 (案例chb21是在案例chb01之后1.5年从同一女性受试者获得的。)文件SUBJECT-INFO包含每个受试者的性别和年龄。 (案例chb24已于2010年12月添加到此收藏中,并且当前未包含在SUBJECT-INFO中。)

每个案例(chb01,chb02等)都包含9到42个来自单个主题的连续.edf文件。硬件限制导致连续编号的.edf文件之间出现间隙,在此期间未记录信号;在大多数情况下,间隔为10秒或更短,但偶尔会有更长的间隔。为了保护受试者的隐私,原始.edf文件中的所有受保护健康信息(PHI)已替换为此处提供的文件中的替代信息。原始.edf文件中的日期已替换为代理日期,但属于每种情况的单个文件之间的时间关系已保留。在大多数情况下,.edf文件仅包含一小时的数字化EEG信号,尽管属于情况chb10的文件为两个小时,而属于情况chb04,chb06,chb07,chb09和chb23的文件为四个小时。有时,记录有癫痫发作的文件较短。

所有信号均以每秒256个样本的速度以16位分辨率进行采样。大多数文件包含23个EEG信号(在某些情况下为24或26)。这些记录使用了国际10-20脑电图电极位置和命名系统。在一些记录中,还记录了其他信号,例如,属于案例chb04的后36个文件中的ECG信号和属于案例chb09的后18个文件中的迷走神经刺激(VNS)信号。在某些情况下,最多5个“虚拟”信号(称为“-”)散布在EEG信号中,以获得易于读取的显示格式;这些虚拟信号可以忽略。

文件RECORDS包含此集合中所有664个.edf文件的列表,文件RECORDS-WITH-SEIZURES列出了包含一个或多个癫痫发作的文件中的129个。这些记录总共包括198次癫痫发作(原始23例病例中为182例); .seizure批注文件中对每个扣押的开始([)和结束(])进行了注释,这些文件与RECORDS-WITH-SEIZURES中列出的每个文件一起提供。此外,名为chbnn-summary.txt的文件包含有关每次录制使用的剪辑画面的信息,以及从每个.edf文件开始到其中包含的每次检出开始和结束的经过时间(以秒为单位)。

2、CHB-MIT头皮脑电图数据下载

https://physionet.org/content/chbmit/1.0.0/
由于该数据集在国外,下载速度较慢,本人将下好的数据集放到了网盘,需要的可以私信提供下载链接!

3、CHB-MIT头皮脑电图数据处理

3.1、提取原始数据

为了方便研究,首先要将.edf文件提取出来(这里保存为.npy文件,若要保存为其他格式,也非常容易),下面附上Python代码:

import mne
import numpy as np
import pandas as pd
import os

raw = mne.io.read_raw_edf("path_edf",preload=False,verbose=False)
data,times = raw[:,:]
data = data.T * 1000000
np.save("data"+f_str,data)

3.2、滤波(0.1~50hz)

原始数据中包含了很多我们不需要的频率成分,所以我们要对原始脑电数据滤波。正常脑电频率范围是0~50hz。具体代码如下:

import mne
import numpy as np
import pandas as pd
import os

raw = mne.io.read_raw_edf("path_edf",preload=False,verbose=False)
raw.filter(0.1,50.,method='iir')
data,times = raw[:,:]
data = data.T * 1000000
np.save("data"+f_str,data)

3.3、数据分块(时间窗口)

目前大多数研究的做法都是将数据分块,也就是划分了时间窗口:
用MNE-Python库实现还是比较容易的,直接附上代码:

new_events = mne.make_fixed_length_events(raw,start=0,stop=t_start-ser,duration=duration,overlap=0.)
epochs = mne.Epochs(raw, new_events, event_id=None, tmin=0., tmax=tmax, baseline=None, picks=None, preload=True, 
                    reject=None, flat=None, proj=True, decim=1, reject_tmin=None, reject_tmax=None, detrend=None, 
                    on_missing='raise', reject_by_annotation=True, metadata=None, event_repeated='error', verbose=None)

data = epochs.get_data()
data = data*1e6

np.save("data",data)

接下来就可以进入具体的研究内容了!!!

你可能感兴趣的:(eeg脑电研究,深度学习,python,大数据,神经网络,数据挖掘)