多导睡眠PSG五大数据集处理为统一格式|Sleepedf、HMC、ISRUC、P2018、SHHS
本文针对睡眠研究中多源PSG数据集兼容性问题,提出对SleepDG开源项目的优化方案。重点解决了ISRUC、SHHS等5个主流数据集(SleepEDFx、ISRUC、SHHS、HMC、P2018)预处理中的三大痛点:依赖版本冲突、文件导入不稳定和日志可读性差。通过规范版本管理(如numpy1.26.4+mne0.23.4)、重构数据流(支持EDF/BDF格式转换)和增强日志系统(含异常定位功能),
若需要如SHHS、Sleep-EDF、ISRUC、NSRR等数据集的预处理脚本及其他,请私信博主。
一、前言
在开展睡眠深度学习研究时,不可避免地需要使用 PSG(Polysomnography,多导睡眠图)公开数据集。然而,不同数据集在 数据形状与文件格式 上差异较大,如果想同时使用多个数据集进行实验,就不得不针对每个数据集单独编写接口,这不仅耗时,而且维护起来十分痛苦。
目前社区里已经有一些开源项目尝试解决这一问题(此项目基于https://github.com/wjq-learning/SleepDG搭建),但在实际使用过程中仍存在不少困难:例如官方没有明确说明依赖版本,导致环境配置经常报错;文件导入不稳定,时常出现兼容性问题;此外,日志输出不够直观,遇到问题时难以及时定位和排查。
因此,本文在现有开源代码的基础上,针对上述问题进行了优化与改进,主要包括:日志输出更清晰,兼容性与可复现性增强,以及若干实用性改进。希望能为后续研究者在处理多源睡眠数据时,提供更流畅的使用体验。
具体代码见:
XingXingYuoos/PSG_data_prepare
https://gitcode.com/m0_70335361/PSG_public_data.git
目录
2. SHHS(Sleep Heart Health Study)数据集
3. HMC(Haaglanden Medisch Centrum Sleep Staging Database)数据集
4. SleepEDFx(Sleep-EDF Database Expanded)数据集
5. P2018(PhysioNet/CinC Challenge 2018:You Snooze, You Win)数据集(220G)
本文针对以下5个数据集做处理:SleepEDFx、ISRUC、SHHS、HMC、P2018
依次处理,最终将其统一为
1. 序列 .npy 文件 → (20, 2, 3000) (20 个 epoch,每个 epoch 有 2 通道 × 3000 点)
(2通道指的是['EEG F4-M1', 'EOG E1-M2'])
2. 标签 .npy 文件 → (20,) (对应这 20 个 epoch 的阶段标签 ID)
下面是数据集下载链接:
The SleepEDFx dataset is on https://physionet.org/content/sleep-edfx/1.0.0/
The ISRUC dataset is on https://sleeptight.isr.uc.pt/
The SHHS dataset is on https://sleepdata.org/datasets/shhs
The HMC dataset is on https://physionet.org/content/hmc-sleep-staging/1.1/
The P2018 dataset is on https://physionet.org/content/challenge-2018/1.0.0/
如需要原数据集或者处理后的数据集,请联系博主
关键库函数版本:
python==3.12
numpy==1.26.4
mne==0.23.4
scipy==1.13.0
二、数据集处理
1. ISRUC数据集
A.数据集介绍
ISRUC数据集是由葡萄牙科英布拉大学(ISRUC)整理的临床 PSG 数据集,社区里做跨域/多中心泛化常会用到。
B.数据预处理
最终加了日志后结果:

运行完最后会得到如下结果:


具体代码处理方法见
2. SHHS(Sleep Heart Health Study)数据集
A.数据集介绍
介绍:SHHS是美国多中心、基于社区人群的大型纵向队列,居家 PSG,随访多年,是研究睡眠与心血管风险关系的里程碑项目。
规模:包含基线(SHHS-1)与随访(SHHS-2)两次大规模采集(数千人规模;随访仍是上千例 PSG),是公开数据里体量最大的之一。
信号/文件:NSRR(sleepdata.org)提供 PSG EDF 文件目录 与丰富的临床/问卷衍生变量。
标注:临床标准 30 s 分期(历史上使用规则版本不同,需留意)。
用途/注意:适合做 大样本泛化、人群研究、与合并症相关分析;由于多中心、居家场景,通道/质量不完全一致,训练前需严格对齐通道与质控。
具体代码处理方法见:
3. HMC(Haaglanden Medisch Centrum Sleep Staging Database)数据集
A.数据集介绍
介绍:荷兰 HMC 睡眠中心 2018 年的临床 PSG 数据,PhysioNet 开放获取。
规模:151 个整夜 PSG(版本 1.1,为清理异常后数据)。
信号与采样:4×EEG(F4/M1, C4/M1, O2/M1, C3/M2)+ 2×EOG(E1/M2, E2/M2)+ 下颏 EMG + ECG,全部 256 Hz。
标注:AASM v2.4 规则,人工分期;每条记录配 SNXXX_sleepscoring.edf(EDF+) 和 同名 .txt 的 hypnogram。
用途/注意:与 SleepEDFx(R&K)/ISRUC(五类)合训时,要统一到 AASM 五类;高采样率(256 Hz)→ 和 100 Hz 数据混训前需重采样与滤波策略一致。
B.数据预处理
替换数据集路径后直接跑:
报错:AttributeError: 'Epochs' object has no attribute 'get_annotations_per_epoch'
最终修改后的日志输出为:

处理完毕

具体代码处理方法见:
4. SleepEDFx(Sleep-EDF Database Expanded)数据集
A.数据集介绍
介绍:PhysioNet 上最常用的睡眠公开基准之一,来自两项研究(Sleep Cassette、Sleep Telemetry)。
规模:共 197 个整夜 PSG 记录,并配有人工标注的 hypnogram。
信号与采样:典型包含 EEG Fpz–Cz、Pz–Oz、水平 EOG、颏肌 EMG;EEG/EOG 多为 100 Hz 采样(部分记录还有气流/体温等)。
标注:依据 R&K(30 s epoch)。
文件:PSG .edf + 对应的 hypnogram(同库提供)。
用途/注意:做睡眠分期入门非常合适;由于用 R&K,训练 AASM 规则的模型时记得 3/4→N3,并处理少量的移动/未定义标签。
具体代码处理方法见:
5. P2018(PhysioNet/CinC Challenge 2018:You Snooze, You Win)数据集(220G)
A.数据集介绍
是什么:2018 年 PhysioNet 挑战赛官方数据,来自 麻省总医院(MGH)。
规模:训练集 994 夜、测试集
989 夜(合计 1,985 名受试者的 PSG)。
信号:多导 PSG(EEG、EOG、EMG、呼吸/氧饱和度、ECG 等)+ 人工分期;用于评测自动分期算法。
用途/注意:数据量大、分布更“临床化”,适合做 大规模分期/泛化评估;注意官方训练/测试划分与评分协议。
具体代码处理方法见:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)