用Python处理CHB-MIT脑电数据:从EDF文件读取到癫痫发作标记提取的完整流程
当我在波士顿儿童医院的科研合作项目中第一次接触CHB-MIT数据集时,那些看似简单的EDF文件里藏着令人着迷的神经密码。作为目前癫痫研究领域最权威的公开脑电数据库之一,它包含了22名患者长达数天的多通道头皮EEG记录,采样率256Hz,数据总量超过600小时。但原始数据就像未切割的钻石——需要专业的工具和流程才能释放其价值。本文将分享一套经过临床验证的Python处理流水线,从数据下载到特征提取,手把手带你穿越EEG分析的迷雾森林。
1. 环境准备与数据获取
在开始解剖EDF文件之前,我们需要搭建一个稳定的Python工作环境。推荐使用conda创建独立环境以避免依赖冲突:
bash复制conda create -n eeg_analysis python=3.8
conda activate eeg_analysis
pip install mne pyedflib numpy pandas matplotlib scipy
CHB-MIT数据集托管在PhysioNet平台,获取需要三个步骤:
- 注册PhysioNet账号并通过认证(约需1个工作日)
- 签署数据使用协议
- 使用
wget批量下载(约23GB):
python复制import os
base_url = "https://physionet.org/files/chbmit/1.0.0/"
files = ["chb01.tar.gz", "chb02.tar.gz", ..., "chb24.tar.gz"]
for file in files:
os.system(f"wget {base_url}{file}")
os.system(f"tar -xzf {file}")
注意:国内用户可能需配置代理加速下载,解压后会得到以患者ID命名的文件夹(如chb01),每个包含:
- 多个.edf文件(每小时一个)
- .seizure标注文件(标记发作时段)
- summary.txt(临床摘要)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. EDF文件解析与信号可视化
EDF(European Data Format)是医疗设备常用的标准格式,其结构包含:
- 256字节头文件(采样率、通道数等)
- 信号数据块(固定时长)
使用MNE-Python读取比直接解析更高效:
python复制import mne
def load_edf(edf_path):
raw = mne.io.read_raw_edf(edf_path, preload=True)
print(f"采样率: {raw.info['sfreq']}Hz")
print(f"通道: {raw.ch_names}")
return raw
# 示例:加载chb
