EDF(European Data Format)是用来存储生物电信号(如 EEG/ECG/EMG)的标准格式。
以下是一份系统化的 EDF 脑电数据可分析清单,覆盖数据理解、可视化、预处理、特征提取、模型建立与展示。
🟢 第一阶段:基本信息与波形可视化
| 项目 | 说明 | 工具/函数 |
|---|---|---|
| 📋 通道列表 | 查看通道名、数量、单位 | raw.ch_names, raw.info |
| ⏱ 时长与采样率 | 了解数据总长度、每秒采样数 | raw.info['sfreq'], raw.times |
| 📈 波形图 | 绘制多通道 EEG 波形 | raw.plot() |
| 🎚 滤波前后比较 | 高频滤波(除肌电)、低频滤波(除漂移) | raw.filter(l_freq, h_freq) |
多通道波形图

事件图

🟡 第二阶段:频域分析与热图
| 项目 | 说明 | 工具/函数 |
|---|---|---|
| 📊 PSD 功率谱图 | 观察 δ~γ 各频段强度 | raw.plot_psd() |
| 🌡 时频热图 | 短时傅里叶、小波变换等频谱变化 | tfr_multitaper() |
| 🌈 频段能量提取 | 计算特定频段平均能量 | bandpower()(自定义) |
PSD功率谱图

Topomap

🔵 第三阶段:空间分布与伪迹剔除
| 项目 | 说明 | 工具/函数 |
|---|---|---|
| 🧭 Topomap 头皮地形图 | 可视化某频段功率在空间分布 | raw.compute_psd().plot_topomap() |
| 👁 ICA 去伪迹 | 去除眼动、肌电等干扰 | ICA().fit(raw) → ica.exclude |
| 🔗 通道间连接 | 查看脑区同步(相干性) | spectral_connectivity() |
Topomap 头皮地形图/ICA 去伪迹

ICA 去伪迹

🟠 第四阶段:事件与标签分析(如睡眠、任务段)
| 项目 | 说明 | 工具/函数 |
|---|---|---|
| 📝 标注提取 | 查看文件中有无注释/事件 | raw.annotations |
| ⏳ 分段 Epochs | 基于标注/事件将数据切分 | mne.Epochs() |
| 📉 ERP 分析 | 计算时间锁定电位 | evoked = epochs.average() |
| 🛏 Hypnogram 睡眠图 | 绘制睡眠阶段标注图 | 自定义 plot or yasa.plot_hypnogram() |
ERP 分析

Hypnogram 睡眠图

🔴 第五阶段:特征提取与机器学习
| 项目 | 说明 | 工具/函数 |
|---|---|---|
| 🧮 时间域特征 | 均值、峰度、方差、过零点数 | numpy / tsfresh |
| 📶 频域特征 | α、β波功率,频谱斜率 | psd, bandpower |
| 🔢 非线性特征 | 熵、复杂性、样本熵 | antropy / entropy() |
| 🤖 分类建模 | 睡眠分期、情绪识别、状态识别 | sklearn, xgboost, cnn, lstm |
🟣 第六阶段:交互式可视化仪表盘
| 项目 | 说明 | 工具 |
|---|---|---|
| 📊 通道切换查看 | 可选通道查看波形 | Plotly, Dash |
| 🎛 多图联动 | 左侧时频图,右侧 Topomap | Dash, Streamlit, Panel |
| 🧭 交互头皮图 | 鼠标悬停查看每个电极数据 | mne interactive, plotly |