信息速览

ISRUC-Sleep — 睡眠分期多导睡眠图基准 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | ISRUC-Sleep 睡眠多导睡眠图数据集 |
| 英文全称 | ISRUC-Sleep: A comprehensive public dataset for sleep researchers |
| 别名/简称 | ISRUC-Sleep Dataset、SleepTight ISRUC、ISRUC-Sleep-1/-2/-3 |
| 疾病分类(ICD-11) | 7A00 失眠障碍;7A20 阻塞性睡眠呼吸暂停;7A00–7B2Z 睡眠-觉醒障碍章节 |
| SNOMED CT | 193520004(睡眠障碍);193462001(失眠);702750040(阻塞性睡眠呼吸暂停) |
| 数据模态 | PSG 多导睡眠图:6×EEG、2×EOG、3×EMG、1×ECG、呼吸气流、腹带努力、鼾声、SaO2、体位 |
| AI 任务类型 | 自动睡眠分期(ASSC)、睡眠呼吸事件检测、睡眠生理与药物效应研究 |
| 样本总数 | 118 名受试者 / 126 份整夜记录(100 + 16 + 10) |
| 数据大小 | 约 17.7 GB(14.12 + 2.2 + 1.35 GB) |
| 数据格式 | .rec(EDF 兼容信号)、.mat(MATLAB)、.text(睡眠图)、.xlsx(标注与受试者信息) |
| 许可证 | 免费公开用于研究用途(要求引用原始论文;未声明标准 OSI 许可证) |
| 访问级别 | 开放(官方页面 MEGA 直接下载,无需注册审批) |
| DUO 标签 | NRES(推断:官方仅要求研究用途与引用,无额外限制条款) |
| 语言 | 英语(元数据与标注说明) |
| 首发日期 | 2016-02(CMPB 期刊论文版面,2015-11-02 在线) |
| 最后更新 | 官方未声明版本号(NeMAR BIDS 镜像为 v1.0.1) |
| 发布机构 | 科英布拉大学 ISR-UC 与科英布拉大学医院中心(CHUC)睡眠医学中心 |
| 官方主页 | http://sleeptight.isr.uc.pt/ |
| 下载地址 | https://sleeptight.isr.uc.pt/?page_id=48 |
| DOI | 10.1016/j.cmpb.2015.10.013 |
| 引用次数 | 约 460+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 数据完整且双专家标注质量高,但需格式转换(.rec/.xlsx 自定义布局、0–5 数字编码映射),且无官方深度学习划分文件;NeMAR BIDS 镜像可部分缓解 |
| 页面状态 | published |
§0 E-E-A-T 审核与免责
本页面由千方病案医学编辑部编写,遵循 AI-Ready 百科规范。医学审核:[千方病案医学编辑部] 交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、睡眠-觉醒障碍临床任务)、§7 偏倚分析。数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。审核日期:2026-09-05。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。ISRUC-Sleep 官方仅要求研究用途使用并引用原始论文,未附标准开源许可证;本页 DUO 标签仅供参考,具体使用限制以数据集官方声明为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? ISRUC-Sleep 是葡萄牙科英布拉大学在 2016 年公开发布的整夜多导睡眠图(PSG)数据集,来自 CHUC 医院睡眠医学中心 2009–2013 年的临床采集。它包含 118 名受试者的 126 份整夜记录,既有睡眠障碍患者,也有健康对照,每份记录都由两名睡眠专家独立打分,标出每 30 秒属于清醒、N1、N2、N3 深睡还是 REM 眼动期。
为什么重要? 睡眠分期标注成本极高:一晚约 900 个片段、需 trained 专家逐段判读。ISRUC-Sleep 提供了少见的双专家独立标注,让研究者能同时评估"机器 vs 专家 1"和"机器 vs 专家 2";其三个亚组设计(大量患者 + 双夜记录 + 健康对照)在同类公开数据集中独树一帜,是自动睡眠分期领域被广泛引用的经典基准之一。
我能用它做什么? 训练和评测自动睡眠分期模型(subject-independent 协议)、研究睡眠结构随时间的变化(8 例受试者各两夜)、对比健康人与患者的 PSG 差异、开发呼吸事件检测与生物医学信号处理算法。数据约 17.7 GB,免费下载,无需申请审批。
§1.1 技术摘要
ISRUC-Sleep 由科英布拉大学系统与机器人研究所(ISR-UC)与 CHUC 睡眠医学中心联合构建,原始论文发表于 Computer Methods and Programs in Biomedicine(2016)。每份记录采用 SomnoStar Pro 系统整夜采集,含 6 通道 EEG(F3-A2、C3-A2、O1-A2、F4-A1、C4-A1、O2-A1)、2 通道 EOG、3 通道 EMG、1 通道 ECG 及呼吸、血氧、体位等信号,EEG/EOG/EMG/ECG 采样率 200 Hz,官方已施加 50 Hz 陷波与带通预滤波。两名睡眠专家按 AASM 规则对每 30 秒 epoch 独立评分,标签为 W/N1/N2/N3/REM 五类。官方同时发布了配套的 subject-independent 自动分期方法(SSM4S)脚本作为基线。截至 2026-09,原始论文在 Google Scholar 被引约 460+ 次。
一屏速记本数据集的"硬参数":
| 维度 | 数值/事实 |
|---|---|
| 受试者 / 记录 | 118 / 126(100 + 16 + 10) |
| 电生理通道 | 6 EEG + 2 EOG + 3 EMG + 1 ECG = 11 |
| 采样率 | 200 Hz(EEG/EOG/EMG/ECG/鼾声);呼吸/血氧 12.5–25 Hz |
| 标注 | 双专家独立 AASM 评分,30 秒 epoch,五分类 |
| 体量 | 约 17.7 GB;SG1 约 69,671 epoch、SG3 约 8,589 epoch |
| 获取 | MEGA 免费下载,研究用途,要求引用论文 |
§1.2 战略价值
维度一:双专家标注的评测金矿。 多数公开睡眠数据集只有单一专家(或合并后)的分期标签,导致无法量化"标签噪声对模型评估的影响"。ISRUC-Sleep 每份记录附带两套独立标注,研究者可以:将专家间一致性作为标签噪声上界;用第二套标注做"人类一致性"对照,判断模型误差究竟来自算法还是来自人类判读的模糊地带(尤其 N1 与 N2 边界)。这使得它成为标注质量研究与模型校准研究的理想测试床。
维度二:三组设计的临床对照价值。 亚组 1 提供大量真实临床患者(含用药状态),亚组 3 提供 10 例健康对照,可直接构建"健康 vs 患者"对比实验;亚组 2 的 8 例受试者各含两夜记录,为睡眠结构纵向变化、重测信度与 domain shift 研究提供了天然素材。这种"患者 + 纵向 + 对照"三合一结构,是 Sleep-EDF、SHHS 等数据集未覆盖的组合。
维度三:方法学教学的低成本样本。 数据集体积约 17.7 GB、每夜约 950 个 epoch,规模适中——大到能训练出有统计意义的深度模型,又小到单卡、单日即可完成一次完整的五折实验。因此它被广泛用作睡眠分期课程、论文消融实验与工程管线的"标准试金石":一份配置文件加一张消费级 GPU,当天就能从下载走到第一版混淆矩阵。
维度四:与 BIDS 生态的互操作性。 通过 NEMAR/EEGDash 的 BIDS 1.7.0 镜像(DOI 10.82901/nemar.nm000111),本数据集可无缝接入 MNE-BIDS、braindecode 等 Python 生态工具链,也能与同镜像下的其他 EEG 数据集共用一套加载与预处理代码,大幅降低多数据集研究的工程成本。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态与采样率 | 标注 | 与 ISRUC-Sleep 的差异化 |
|---|---|---|---|---|
| ISRUC-Sleep | 118 人 / 126 夜 | 全导 PSG(6 EEG + 2 EOG + 3 EMG + ECG + 呼吸),200 Hz | AASM 双专家独立标注 | 双专家标签 + 双夜纵向记录 + 健康对照三合一 |
| Sleep-EDF Expanded | 197 份记录 | 2×EEG + 1×EOG + 1×EMG,100 Hz | AASM 单专家 | 健康者与入睡困难者为主,通道少,无患者多样本 |
| SHHS | 多中心家庭 PSG(数千份) | 家庭级简化 PSG | 单一中心判读 | 规模大但非实验室全导联,患者结构不同 |
| MASS | 约 200 名受试者 | 32 导联实验室 PSG,256 Hz | 单专家(CMMC 规则) | 通道更全、采样率更高,但无双专家与双夜设计 |
| CAP Sleep Database | 108 份记录 | 实验室 PSG | AASM/R&K 专家标注 | 提供 CAP 周期序列标注,聚焦微结构而非队列对照 |
§1.4 版本时间轴
| 时间 | 版本/事件 | 说明 |
|---|---|---|
| 2009–2013 | 数据采集 | CHUC 睡眠医学中心临床整夜 PSG 采集(SomnoStar Pro) |
| 2015-11-02 | 论文在线 | CMPB 论文在线发表(DOI 10.1016/j.cmpb.2015.10.013) |
| 2016-02 | 数据集公开发布 | 官方 sleeptight.isr.uc.pt 上线,三组 MEGA 压缩包发布 |
| 2021–2024 | 社区镜像与转换 | NEMAR/EEGDash 提供 BIDS 1.7.0 转换版(DOI 10.82901/nemar.nm000111,v1.0.1) |
发布与维护团队:数据集由 ISR-UC 的 Sirvan Khalighi、Teresa Sousa、Urbano Nunes 与 CHUC 睡眠医学中心的 José Moutinho Santos 共同构建,葡萄牙科学技术基金会(FCT)博士基金(SFRH/BD/81828/2011、SFRH/BD/80735/2011)与 QREN 项目 SLEEPTIGHT(CENTRO-01-0202-FEDER-011530)资助,CHUC 睡眠专家承担全部目测评分。官方明确致谢并要求使用者引用论文——这一引用义务是该数据集唯一的"许可条款"。
§1.5 典型应用场景
- 自动睡眠分期基准评测:subject-independent 协议下的五分类(W/N1/N2/N3/REM),社区已积累 AttnSleep、U-Sleep 等大量可对比基线。
- 标签噪声与人类一致性研究:利用双专家标注量化分期边界模糊性(尤其 N1),评估模型预测与人类分歧的关系。
- 纵向睡眠结构分析:亚组 2 每人两夜,研究药物、治疗或时间对睡眠结构的影响。
- 健康-患者对照研究:亚组 3 健康对照 vs 亚组 1 患者,探索病理对 PSG 特征的影响。
- 呼吸事件与血氧信号挖掘:气流、腹带、SaO2 通道支持睡眠呼吸暂停相关算法开发(文献已有应用)。
场景与数据子集的匹配速查:
| 场景 | 首选子集 | 配套子集 | 关键注意 |
|---|---|---|---|
| 分期基准评测 | SG1 | SG3 独立测试 | subject-independent 协议 |
| 标签噪声研究 | SG1 双标签 | SG2 双标签 | 固定主标签源,另一套仅做一致性 |
| 纵向/重测分析 | SG2 | — | 两夜必须同侧划分 |
| 健康对照研究 | SG3 | SG1 | 对照仅 10 例,结论需谨慎 |
| 呼吸事件检测 | SG1(含呼吸通道) | — | 需自行构建事件级标签 |
§2 医学背景
§2.1 ICD-11 编码映射
ISRUC-Sleep 受试者的诊断谱系覆盖多种睡眠-觉醒障碍(含失眠、睡眠相关呼吸障碍、癫痫共病、异态睡眠等),下表给出本数据集核心疾病标签与 ICD-11 的映射。
映射的两点说明:其一,数据集不提供逐受试者的 ICD-11 编码,受试者信息表中的诊断类别需要使用者自行映射到编码体系(本表给出的是概念级映射,供数据卡与论文使用);其二,癫痫、异态睡眠等共病诊断在队列中样本很少,若按诊断分层做实验,多数分层的统计功效不足,建议仅做探索性分析并在论文中声明。
| 标签/概念 | ICD-11 编码 | ICD-11 中文名 |
|---|---|---|
| 睡眠-觉醒障碍(章节) | 7A00–7B2Z | 睡眠-觉醒障碍 |
| 失眠障碍 | 7A00 | 失眠症 |
| 阻塞性睡眠呼吸暂停 | 7A20 | 阻塞性睡眠呼吸暂停 |
| 异态睡眠(段) | 7B00–7B0Z | 异态睡眠 |
§2.1b SNOMED CT 映射
| 标签/概念 | ICD-11 | SNOMED CT 码 | SNOMED 术语 |
|---|---|---|---|
| 睡眠障碍(总类) | 7A00–7B2Z | 193520004 | Sleep disorder (disorder) |
| 失眠 | 7A00 | 193462001 | Insomnia (disorder) |
| 阻塞性睡眠呼吸暂停 | 7A20 | 702750040 | Obstructive sleep apnea (disorder) |
| 睡眠呼吸暂停(泛指) | 7A20 段 | 73446004 | Sleep apnea (disorder) |
§2.2 疾病简介与流行病学
睡眠-觉醒障碍是一类以睡眠数量、质量或时相异常为核心表现的疾病群,ICD-11 将其列为独立章节(7A00–7B2Z)。其中失眠障碍与阻塞性睡眠呼吸暂停最为常见:前者以入睡困难、睡眠维持困难及早醒为特征,后者以夜间反复上气道塌陷导致间歇性低氧与睡眠片段化为特征。睡眠分期(将整夜记录划为 W/N1/N2/N3/REM)是上述疾病诊断与疗效评估的基础步骤:AASM 规则要求结合 EEG、EOG 与下颌 EMG 对每个 30 秒 epoch 判读。睡眠呼吸暂停与失眠人群的睡眠结构常高度碎片化,N1 比例升高、N3 与 REM 占比下降,这也解释了在患者数据上分期为何更困难。ISRUC-Sleep 的受试者来自临床转诊人群,正反映了这种"真实世界"的碎片化睡眠结构。对 AI 研究者而言,掌握分期规则的语义细节不是可选项:标签的每一类都对应一组可观测的生理事件,模型的可解释性与错误分析都建立在这些语义之上。
理解分期标注本身对工程实践至关重要——下表汇总 AASM 规则下各期的判读线索,也是本数据集标签语义的速查卡:
| 睡眠期 | EEG 特征线索 | EOG 线索 | 下颌 EMG 线索 | 分期难点 |
|---|---|---|---|---|
| W(清醒) | 后部 alpha 节律(闭眼时)或低幅混合频 | 快速/缓慢眨眼 | 张力高,运动多 | 与 N1 边界模糊 |
| N1 | alpha 消失、低幅混合频、顶区锐波 | 缓慢眼动 | 张力略降 | 人类分歧最大的期,F1 普遍最低 |
| N2 | 睡眠纺锤波(11–16 Hz)与 K-复合波 | 少量眼动 | 张力低而稳定 | 依赖特征事件检测 |
| N3 | 高幅慢波(delta 为主) | 少量眼动 | 张力低 | 门槛明确,一致性高 |
| REM | 低幅混合频、锯齿波 | 快速眼动爆发 | 张力显著迟滞(atonia) | 期内外状态切换(相位/张力性) |
自动分期模型若在 N1/REM 起止段表现差,多源于上述边界语义——这恰是双专家标注能量化的部分:把专家间分歧 epoch 的分布按期统计,可以直接观察每期的"判读模糊度"。
§2.3 临床任务定义
| 任务 | 定义 | 本数据集的角色 |
|---|---|---|
| 筛查 | 从整夜 PSG 识别睡眠结构异常(如 N3 缺失、REM 潜伏期延长) | 双专家标注提供结构参考,健康对照提供正常范围 |
| 诊断 | 睡眠呼吸暂停需结合气流、血氧与呼吸努力通道判读呼吸事件 | 呼吸通道与 SaO2 齐备,支持事件级研究(文献已有应用) |
| 分期/分级 | 30 秒 epoch 五分类(W/N1/N2/N3/REM),AASM 规则 | 核心任务:双专家独立标注构成评测金标准 |
| 预后/纵向 | 治疗前后睡眠结构变化 | 亚组 2 双夜记录支持纵向对比设计 |
四类任务对数据使用的深度不同:筛查与分期只用 EEG/EOG/EMG 标签层即可启动;诊断级任务必须叠加呼吸与血氧通道;预后/纵向任务的正确单位是"受试者"而非"记录",两夜差异本身是研究信号而非噪声。把任务定位清楚,再决定读哪些通道、用哪个键做划分,是使用本数据集的第一决策。
§2.4 患者人群
| 亚组 | 来源 | 采集年份 | 年龄 | 性别 | 健康状态 |
|---|---|---|---|---|---|
| 亚组 1 | CHUC 睡眠中心(临床转诊) | 2009–2013 | 51±16 岁(20–85) | 55 男 / 45 女 | 有睡眠障碍证据(部分在药物作用下;诊断含 SDB、癫痫、异态睡眠等) |
| 亚组 2 | CHUC 睡眠中心 | 2009–2013 | 46.87±18.7 岁(26–79) | 6 男 / 2 女 | 文献多记为睡眠障碍/治疗中受试者;官方新页面表述为健康成人(存在表述差异) |
| 亚组 3 | CHUC 睡眠中心 | 2009–2013 | 40±10 岁(30–58) | 9 男 / 1 女 | 健康对照 |
人群设计的两点解读:其一,亚组 1 的年龄跨度(20–85 岁)与性别接近均衡(55:45),使它比多数"窄年龄、单性别偏斜"的小数据集更适合作为主训练集;其二,受试者信息表提供了逐人的诊断类别与用药摘要,允许把"用药 vs 未用药""SDB vs 非呼吸类诊断"作为分层变量——这是在单中心数据上逼近多中心分析能力的少数手段。
§2.5 临床价值
对临床 AI 而言,ISRUC-Sleep 的价值在于提供"真实临床噪声"下的分期基准:患者数据包含用药影响与碎片化睡眠,模型在此数据上的表现比在纯健康数据上更能代表部署场景。双专家标注让研究者可以把"专家间分歧 epoch"单独分析——这些 epoch 恰是自动系统最容易出错、也最需要临床复核的区域。健康对照亚组则允许构建"正常睡眠结构"参考模型,用于筛查类产品的校准。需要注意的是,单中心数据决定了任何诊断级结论都必须在多中心数据上复现后才可信。
从监管与产品视角看,本数据集适合承担三个角色:其一,算法研发期的内部基准(与文献可比);其二,回归测试集——每次模型迭代后在固定划分上重跑,防止"改善 A 场景、退化 B 期"的隐性回归;其三,教学与复现研究素材——双标签、全导联、文档齐全的特性使它成为少有的"可完整复现他人论文"的睡眠数据集。但它不应被用作注册临床试验的主要有效性证据:样本量与单中心设计均不满足该层级要求。
§2.6 金标准对照
| 维度 | 内容 |
|---|---|
| 标注对象 | 每份记录的全部 30 秒 epoch(每夜约 900–1,000 个) |
| 标注方式 | 双盲独立目测评分(visual scoring),无第三方仲裁合成 |
| 标注者 | CHUC 睡眠医学中心的睡眠专家(两名,逐记录独立) |
| 标注规则 | AASM 规则(30 秒 epoch,W/N1/N2/N3/REM 五类) |
| 金标准性质 | 双套独立人工标签(可计算专家间一致性),非共识合成标签 |
与同类数据集的金标准相比,本数据集的定位是"最高保真、中等规模":标签粒度(30 秒 epoch)与规则(AASM)是行业标配,双独立评分则是 Sleep-EDF、CAP 等同类所没有的;代价是规模远小于 SHHS 等普查级队列。因此正确的使用姿势是"方法精调与评测在 ISRUC-Sleep,规模化验证在更大的队列",而不是把它当主力训练集去堆参数。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 复现文献基线 / 自定义预处理 | 官方 MEGA 原始包 | 约 17.7 GB | 与绝大多数论文协议一致,含原始 .rec/.mat 与双专家 .xlsx 标注 |
| 快速跑通 PyTorch / MNE 流程 | NeMAR/EEGDash BIDS 镜像(v1.0.1) | 按记录流式拉取 | .rec 已重命名为 .edf,BIDS 1.7.0 布局,MNE/braindecode 可直接读取 |
| 只做方法学验证(小规模) | 官方亚组 3(10 例健康对照) | 1.35 GB | 体积最小、健康对照信号干净,适合调试管线 |
| 纵向/重测信度研究 | 官方亚组 2(8 例 × 2 夜) | 2.2 GB | 每人两夜是纵向分析的必要结构 |
版本决策的唯一分叉点是"要不要双套专家标签":要(标签噪声、一致性、校准研究)就必须用官方原始包——BIDS 镜像默认只携带专家 1 标签;不要(主流分期基准)则选 EEGDash 镜像更省事。其余维度(体积、速度、格式)都只是工程摩擦,不构成决策级差异。
§3.1 模态详情
| 模态 | 通道 | 采样率 | 官方预滤波 |
|---|---|---|---|
| EEG | 6:F3-A2、C3-A2、O1-A2、F4-A1、C4-A1、O2-A1 | 200 Hz | Butterworth 0.3–35 Hz + 50 Hz 陷波 |
| EOG | 2:LOC-A2、ROC-A1 | 200 Hz | Butterworth 0.3–35 Hz + 50 Hz 陷波 |
| EMG | 3:下颌 X1、右腿 X3、左腿 X4 | 200 Hz | Butterworth 10–70 Hz + 50 Hz 陷波 |
| ECG | 1:X2 | 200 Hz | 50 Hz 陷波 |
| 鼾声 | 1:X5 | 200 Hz | Butterworth 10–70 Hz + 50 Hz 陷波 |
| 呼吸气流 | 2:X6(12.5 Hz)、DC3(25 Hz) | 12.5/25 Hz | 未声明 |
| 腹带努力 | 2:X7、X8 | 25 Hz | 未声明 |
| 血氧饱和度(SaO2) | 1 | 12.5 Hz | 未声明 |
| 体位 | 1:DC8 | 25 Hz | 未声明 |
模态工程的两个要点:其一,分期主信号是 EEG/EOG/下颌 EMG 七通道,腿部 EMG、ECG、呼吸、血氧属于"增广模态"——做分期基准时应固定七通道集合,做呼吸事件研究时再按需扩展;其二,200 Hz 与 12.5/25 Hz 两档采样率意味着 SaO2 与气流的时间分辨率天然不同,跨模态对齐必须以 epoch 为粒度而不是逐采样点。
§3.2 按子集样本数
| 亚组 | 受试者数 | 记录数 | 大小 | 用途 |
|---|---|---|---|---|
| 亚组 1(SG1) | 100 | 100(每人 1 夜) | 14.12 GB | 患者为主的主流分期基准(文献常记 ISRUC-Sleep-1,约 69,671 个 epoch) |
| 亚组 2(SG2) | 8 | 16(每人 2 夜) | 2.2 GB | 纵向睡眠结构变化研究(ISRUC-Sleep-2) |
| 亚组 3(SG3) | 10 | 10(每人 1 夜) | 1.35 GB | 健康对照(文献常记 ISRUC-Sleep-3,约 8,589 个 epoch) |
| 合计 | 118 | 126 | 约 17.7 GB | — |
按记录时长的进一步拆分(文献实测统计):每夜约 8 小时对应约 950 个 30 秒 epoch;以 subject1 为例,.mat 信号含 924 个 epoch(末尾约 30 个 epoch 因噪声未计入信号,详见坑点 2)。三组下载体积与 epoch 体量呈同向关系——SG1 约占全库 85% 的数据体积与 epoch 数量,是绝大多数论文的唯一训练来源;SG2 与 SG3 更多承担验证与对照角色。
§3.3 数据格式
| 文件类型 | 内容 | 读取工具 |
|---|---|---|
| .rec | 整夜 PSG 信号(EDF 兼容内容,非标准扩展名) | 重命名为 .edf 后用 MNE/pyedflib 读取 |
| .mat | 整夜 PSG 信号(MATLAB 格式,末尾 30 个 epoch 未包含) | scipy.io / h5py |
| .text | 睡眠图(hypnogram)标注 | 文本解析 |
| .xlsx | 与 .text 等价的分期标注(每专家一份)+ 受试者信息表 | pandas.read_excel / openpyxl |
格式选择的建议:信号走 .rec→.edf + MNE(生态最全、可读 EDF头 标定),标注走 .xlsx(信息最全),.mat 与 .text 仅在需要与特定历史代码对齐时使用;所有格式读取都应纳入 §6.2 的自检脚本,防止"格式正确但内容错位"的隐性错误。
§3.4 存储大小
官方三个亚组压缩包分别为 14.12 GB、2.2 GB 与 1.35 GB,合计约 17.7 GB(来源:官方下载页)。解压后体积与压缩包接近(EDF 信号本身压缩比有限)。若磁盘紧张,可先下载 1.35 GB 的亚组 3 完成管线调试。
§3.5 标注方式
人工标注(visual scoring)。两名睡眠专家对每份记录独立评分,30 秒 epoch 粒度,遵循 AASM 规则,输出 W/N1/N2/N3/REM 五类标签。标注文件中分期以数字编码存储(社区惯例映射:0=Wake、1=N1、2=N2、3=N3、5=REM;数值 4 对应运动/无法判读 epoch,惯例上剔除),官方 Content.pdf 提供各列缩写说明。
标注的工程形态值得展开:每个受试者目录内,分期结果同时以三种载体存在——.text 睡眠图(轻量、逐行一个编码)、.xlsx 工作簿(带表头与附加列,含每专家一份)以及受试者信息表。三种载体内容等价但读取方式各异;由于 xlsx 是唯一同时携带"epoch 序号 + 分期 + 附加事件"的结构,绝大多数流程以 xlsx 为主标签源、以 .text 做交叉校验。除睡眠分期外,xlsx 中还包含事件级标注与受试者诊断/用药摘要,这也是该数据集"comprehensive"定位的实质:一次夜间采集同时服务分期、事件检测与临床背景分析三类任务。
§3.6 标注者资质与一致性
标注者为 CHUC 睡眠医学中心执业睡眠专家,具备临床多导睡眠图判读资质。原始论文以专家间一致性与分类性能的关联分析讨论了标签质量,但未在公开摘要中给出统一 kappa 数值;研究者应基于随包两套标注自行计算本队列的一致性(Cohen’s kappa 或逐 epoch 一致率),并在论文中报告。
关于"哪套标签是金标准"的问题,官方立场是两套并列而非合成:既不提供第三方仲裁标签,也不声明哪位专家更权威。这一设计把选择权与责任同时交给使用者——学术上它保留了完整的分歧信息,但工程上意味着任何单标签流水线都默认放弃了一半标注资产,这是使用本数据集时最容易被忽视的隐性成本。
§3.7 采集周期
2009–2013 年,于 CHUC 睡眠医学中心按临床常规整夜采集(每夜约 8 小时),每份记录从中心存档中随机抽取。
§3.8 地域覆盖
单一中心:葡萄牙科英布拉(Coimbra),科英布拉大学医院中心(CHUC)睡眠医学中心。地域单一性是本数据集最大的外推约束:任何"多中心稳健性"声明都必须依赖外部数据集(SHHS、MASS、Sleep-EDF)补足,本页 §5.5 的迁移阶梯即为该目的设计。
§3.9 设备规格
采集系统为 SomnoStar Pro 多通道睡眠记录系统(多通道体内外生理信号同步采集设备),电极导联遵循 AASM 推荐蒙太奇(耳垂参考 A1/A2)。EEG/EOG/EMG/ECG/鼾声 200 Hz,部分呼吸与体位通道 12.5–25 Hz。
设备层面的工程提示:其一,参考电极位于耳垂(A1/A2)而非头顶,与采用 Fpz-Cz/Pz-Oz 蒙太奇的数据集(如 Sleep-EDF)做迁移时,EEG 空间滤波器的先验不可直接套用;其二,各通道采样率不一致(200/25/12.5 Hz 三档),构建多模态张量前必须统一重采样并对齐长度;其三,官方预滤波链在放大器与数字域均已完成,通道幅值的绝对标定信息随 EDF 头携带,读取时不要忽略 physical min/max 转换,否则单位(μV 级)会错。
§3.10 深度溯源链
受试者(科英布拉地区临床转诊人群)
└─ CHUC 睡眠医学中心整夜 PSG 采集(SomnoStar Pro,2009–2013)
└─ 官方预滤波(50 Hz 陷波 + 带通)与 30 s epoch 分段
└─ 两名睡眠专家独立 AASM 目测评分(.xlsx/.text 双套标签)
└─ ISR-UC 整理打包(三组 MEGA 压缩包,2016 发布)
└─ 社区镜像:NEMAR/EEGDash BIDS 1.7.0 转换(v1.0.1)
溯源核查要点:论文(PMID 26589468)保证"每份记录随机抽取自 CHUC 存档"这一上游事实;官方下载页保证三组体积与构成的现状;EEGDash 数据卡保证镜像转换是"内容不变"的。三者各管一段,任何一段断裂(如链接失效、镜像版本不符)都应回到上一级重新取证——这也是本页所有数字均带来源链接的原因。
§4 数据结构
§4.0 目录树
官方按亚组分三个压缩包发布;解压后每个受试者一个目录,目录内含信号文件与两套专家标注(不同亚组文件命名细节以实际解压结果为准):
ISRUC-Sleep/
├── subgroup1/ # 亚组 1:100 例患者(14.12 GB)
│ ├── 1/
│ │ ├── 1_1.rec # 第 1 夜 PSG 信号(EDF 兼容)
│ │ ├── 1_1.mat # 同一信号的 MATLAB 格式(不含末尾 30 epoch)
│ │ ├── 1_1.xlsx # 专家 1 的 30 s 分期标注 + 事件
│ │ ├── 1_2.xlsx # 专家 2 的 30 s 分期标注
│ │ ├── 1_1.txt # 睡眠图(hypnogram)
│ │ └── 1_1_info.xlsx # 受试者信息(年龄/性别/诊断/用药摘要)
│ ├── 2/ ... # 受试者 2–100 同构
├── subgroup2/ # 亚组 2:8 例 × 2 夜(2.2 GB)
│ └── 1/
│ ├── 1_1.rec # 第 1 夜
│ ├── 1_2.rec # 第 2 夜(不同日期采集)
│ └── ...
├── subgroup3/ # 亚组 3:10 例健康对照(1.35 GB)
│ └── 1/
│ ├── 1_1.rec
│ └── ...
└── Content.pdf # 官方标注列缩写说明
阅读目录树的三点提示:第一,同一受试者目录内 .rec 与 .mat 是同一信号的两种载体,工程上二选一即可(推荐 .rec 改名 .edf 走 MNE 生态);第二,两份 .xlsx 分别对应专家 1 与专家 2,文件名第二段数字即记录/专家序号,SG2 受试者因此有四份标注文件(两夜 × 两专家);第三,受试者信息表(年龄、性别、诊断类别、用药)是构建临床分层实验的关键元数据,建议入库时与信号一起进数据版本管理。
§4.1 DAIMS 字段字典
| 字段 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| subject_id | Integer | 受试者编号(目录名) | 1 | subject-independent 划分键 | 无 | 无 | 1–118(按亚组编号) |
| recording_id | Integer | 记录(夜)序号 | 1 | 区分同受试者双夜 | 无 | 无 | 1–2 |
| subgroup | Integer | 亚组编号 | 1 | 队列分层分析 | 无 | 无 | 1/2/3 |
| epoch_index | Integer | 30 s epoch 序号(自记录起点) | 500 | 时间对齐、序列建模 | 末尾 30 epoch 信号缺失 | 空白/NaN | 约 0–1,000 |
| stage_scorer1 | Integer | 专家 1 分期编码 | 2 | 主训练标签 | 人类判读分歧(N1 最甚) | 4(运动/无法判读,惯例剔除) | 0,1,2,3,5(4 保留) |
| stage_scorer2 | Integer | 专家 2 分期编码 | 2 | 标签噪声/一致性研究 | 同上 | 4(同上) | 0,1,2,3,5(4 保留) |
| C3-A2(EEG) | Float 时序 | 中央区脑电(200 Hz) | −37.4 μV 级原始值 | 主力分期特征 | 电极接触噪声 | EDF 缺段 | 连续 μV 值 |
| LOC-A2/ROC-A1(EOG) | Float 时序 | 左右眼电(200 Hz) | 连续 μV 值 | REM/清醒判别 | 眨动伪迹 | EDF 缺段 | 连续 μV 值 |
| X1(下颌 EMG) | Float 时序 | 下颌肌电(200 Hz) | 连续 μV 值 | 肌张力迟滞判别(REM) | 吞咽伪迹 | EDF 缺段 | 连续 μV 值 |
| SaO2 | Float 时序 | 血氧饱和度(12.5 Hz) | 96% 级 | 呼吸事件特征 | 运动伪影漂移 | 信号断点 | 60–100% |
| X5(鼾声) | Float 时序 | 鼾声拾音(200 Hz,10–70 Hz 预滤波) | 连续任意单位 | 呼吸事件辅助特征 | 环境噪声 | EDF 缺段 | 连续值 |
| X6/DC3(气流) | Float 时序 | 鼻/口气流(12.5/25 Hz) | 连续流量值 | 呼吸暂停/低通气检测 | 探头移位基线漂移 | EDF 缺段 | 连续值 |
| X7/X8(腹带努力) | Float 时序 | 呼吸努力(25 Hz) | 连续任意单位 | 区分中枢/阻塞事件 | 绑带松紧差异 | EDF 缺段 | 连续值 |
| DC8(体位) | Float 时序 | 体位编码(25 Hz) | 离散姿态值 | 睡眠行为学分析 | 传感器灵敏度 | EDF 缺段 | 离散姿态枚举 |
字段字典的三条使用规则:stage_scorer1/stage_scorer2 是仅有的两个"标签型"字段,其余均为信号通道,切勿把通道当特征标签混入分类目标;epoch_index 是全部字段的连接主键,任何两张表 join 前先验证其连续性与范围;“信息性缺失编码"列明确区分了"官方声明"与"社区惯例”——凡属惯例(如编码 4 的剔除)都应在你的数据卡中声明,而非当作官方约定转述。
§4.2 标签分布
文献统计:亚组 1 约 69,671 个 30 秒 epoch、亚组 3 约 8,589 个 epoch。整夜分布呈典型临床睡眠结构:W 与 N2 占比最高,N3 与 REM 居中,N1 最稀少——社区排行榜上 N1 的 F1 普遍仅 32–46,远低于其他类别,是本数据集最突出的类别不平衡问题。建议在划分与采样策略中显式处理 N1(过采样或 focal loss),并报告逐类别 F1 而非只报告准确率。
各期的临床含义与工程含义一并归纳如下:
| 睡眠期 | 编码(标注文件) | 整夜占比规律 | 工程含义 |
|---|---|---|---|
| W | 0 | 睡前/醒后片段与睡眠中觉醒 | 占比高但分散,易"撑大"准确率 |
| N1 | 1 | 最稀少的睡眠期 | 类不平衡焦点;F1 是模型真实水平的试金石 |
| N2 | 2 | 占比最高的睡眠期 | 基线类,多数方法 F1 > 75 |
| N3 | 3 | 前半夜集中 | 特征门槛清晰,一致性高,模型 F1 通常较好 |
| REM | 5 | 后半夜集中、周期性出现 | 张力迟滞特征依赖 EMG 通道;编码 4 为运动/未判读需剔除 |
§4.3 关键统计
- 记录时长:每夜约 8 小时,对应约 950 个 30 秒 epoch(单例实测:subject1 的 .mat 含 924 epoch)。
- 信号维度:每记录 11 个电生理通道 + 呼吸/血氧/体位等辅助通道。
- 采样点:200 Hz × 30 s = 6,000 点/epoch/通道。
- 亚组间年龄跨度:20–85 岁(SG1)与 30–58 岁(SG3),构成天然年龄迁移测试对。
以上统计建议在首次接手数据集时全部独立复算一遍(一条 SQL 式的标注扫描脚本即可完成),把结果存进项目数据卡——文献统计数字(如 69,671 epoch)来自特定论文的统计口径(是否剔除编码 4、是否截断末尾 30 epoch),与你的口径未必一致,只有自算的数字才能支撑自己的协议声明。
§4.4 数据层级
数据集(118 名受试者 / 126 份记录)
└─ 受试者(subject_id,1–100 / 1–8 / 1–10)
└─ 记录·夜(recording_id,SG2 每人 2 夜)
└─ 30 秒 epoch(epoch_index,每夜约 950 个)
└─ 通道采样点(200 Hz × 30 s = 6,000 点/通道)
各层级的规模速查:
| 层级 | 实体数 | 键 | 说明 |
|---|---|---|---|
| 数据集 | 1 | — | 三个亚组压缩包 + Content.pdf |
| 亚组 | 3 | subgroup | 1=患者队列、2=双夜队列、3=健康对照 |
| 受试者 | 118 | (subgroup, subject_id) | 全局唯一的最小分析单元 |
| 记录 | 126 | (subgroup, subject_id, recording_id) | SG2 一人两夜 |
| epoch | 约 78,000+(SG1 69,671 + SG3 8,589 + SG2 未单独统计) | (recording, epoch_index) | 30 秒粒度标签单元 |
| 采样点 | 6,000/epoch/通道(200 Hz) | — | 模型输入的基本单位 |
§4.5 缺失值与信息性缺失
| 缺失情形 | 表现 | 推荐处理 |
|---|---|---|
| 记录末尾 30 个 epoch | .mat 信号比 Excel 标注行数少约 30(末段噪声大,官方未计入信号) | 以信号实际 epoch 数截断标签 |
| 运动/无法判读 epoch | 标注编码 4 | 剔除该 epoch 或在损失中屏蔽;禁止臆测映射为某睡眠期 |
| Excel 中 NaN/空白 epoch | 部分记录标注行存在 NaN(EEGDash 转换时按顺序填补) | 逐记录检查对齐后再决定填补或剔除 |
| 个别通道信号差 | 部分记录个别导联质量低 | 用多通道模型 + 通道 dropout 增强鲁棒性 |
缺失处理的统一原则:"信息性缺失"在本数据集几乎都集中在记录首尾(入睡前调整期、记录末段)与个别导联,而不是随机散布——这意味着简单的"掐头去尾 + 通道级质量检查"就能覆盖绝大多数缺失场景,无需复杂的插补模型;反之,对中段突发的信号断段应提高警惕,那往往反映真实的采集故障而非正常缺失。
§5 划分与使用建议
§5.1 官方划分
官方未提供固定的深度学习划分文件。原始论文随附 SSM4S 方法的 subject-independent 实验脚本作为基线;社区随后形成的默认协议是:在 SG1(100 例患者)上做 subject-independent 的 5 折交叉验证或固定比例按受试者划分,SG3(10 例健康对照)作为独立测试或与 SG1 合并训练。
官方脚本的价值在于"协议锚点":它定义了作者自己验证数据集可用性时采用的实验设置(sleep-wake 二分类与 AASM 五分类两种任务、特征工程方法、性能度量),后续工作无论用何种深度模型,把 SSM4S 结果放进对照表即可证明数据集读法正确——这是复现工作里最容易被忽略、却最能节省排错时间的一步。
§5.2 社区惯例划分
- SG1 五折 subject-independent:按受试者分 5 折,逐折轮换测试;多数排行榜方法(AttnSleep、U-Sleep 等)在此协议下报告。
- SG1 + SG3 联合:训练混合患者与健康人,文献报告联合训练可提升泛化(Timplalexis et al., 2020)。
- 跨亚组迁移:SG1 训练 → SG3 测试,量化"患者→健康"的 domain shift。
三种方案的适用性对比:
| 方案 | 训练数据 | 测试数据 | 优点 | 代价 |
|---|---|---|---|---|
| SG1 五折 | 100 例患者 | 同分布患者 | 与榜单直接可比 | 健康人群表现未知 |
| SG1+SG3 联合 5 折 | 110 例 | 混合队列 | 泛化更好、样本更多 | 与纯 SG1 榜单不可比 |
| SG1→SG3 迁移 | 100 例患者 | 10 例健康 | 直接度量 domain shift | 测试集小,方差大 |
§5.3 泄漏风险(重点)
- 亚组 2 双夜泄漏:同一受试者两夜记录绝不能分属训练/测试两侧;正确键是 subject_id 而非 recording_id。
- 相邻 epoch 泄漏:30 秒 epoch 高度自相关,随机按 epoch 划分会让测试集信息渗入训练集,虚高数个百分点;必须按受试者(或至少按整夜记录)划分。
- 归一化统计泄漏:z-score 的均值/方差应仅来自训练折受试者。
- 双套标签混用:若训练用专家 1 标签、测试却读入专家 2 文件,会引入系统性标签错位。
四类泄漏的检查成本与收益完全不对称:双夜泄漏与 epoch 泄漏是"一行断言就能防住、却能让论文被拒"的高杠杆检查点,建议直接写进训练脚本的启动断言(划分前后打印训练/测试受试者交集并 assert 为空);归一化泄漏靠代码评审与统计快照对比兜底;标签混用则靠数据卡的"主标签源"声明来约束。
§5.4 交叉验证建议
优先 Leave-N-Subjects-Out(N=20,即 5 折),保证每折内受试者互斥;对亚组 2 与亚组 3 按受试者整组进出。报告均值 ± 标准差与逐类别 F1、Cohen’s kappa。一个可直接复用的划分实现:
from sklearn.model_selection import GroupKFold
import numpy as np
# groups = 每条记录的受试者全局键(亚组 2 的两夜共享同一键 -> 天然防双夜泄漏)
# X 只是占位(长度等于记录数),真正进入模型的是各记录内部 epoch
record_subjects = np.array(
[(1, i) for i in range(1, 101)] + # SG1:受试者 1-100
[(2, i) for i in range(1, 9)] + # SG2:每人 2 夜但同键
[(3, i) for i in range(1, 11)] # SG3:受试者 1-10
)
groups = np.array([f"{sg}-{sid}" for sg, sid in record_subjects])
X = np.zeros(len(groups))
gkf = GroupKFold(n_splits=5)
for fold, (tr, te) in enumerate(gkf.split(X, groups=groups)):
print(f"fold {fold}: train {len(set(groups[tr]))} 人 / test {len(set(groups[te]))} 人")
# 每折断言:set(groups[tr]) 与 set(groups[te]) 交集为空
assert not set(groups[tr]) & set(groups[te]), "subject leakage detected"
把这段划分代码连同产出的折索引 JSON 一起入库(建议目录 splits/isruc_5fold.json),此后所有实验引用同一文件而非现场随机——它同时解决了复现与审计两个问题:审稿人要求看划分时直接给文件,模型回归时直接复用同一折。
§5.5 外部验证建议
在 SHHS、MASS、Sleep-EDF Expanded 上做零样本或微调迁移,检验跨设备与跨人群泛化;SG1(患者)→ SG3(健康)是数据集内置的低成本迁移测试。注意各数据集采样率与导联差异需先统一(重采样 + 通道映射)。
按迁移距离递增的外部验证阶梯:
| 阶梯 | 目标数据 | 迁移距离 | 预期表现 | 主要风险 |
|---|---|---|---|---|
| L0 | SG1 内部 5 折 | 无 | 榜单水平(ACC 约 78–79%) | 无(基线) |
| L1 | SG3 健康对照 | 人群构成 | 轻度下降 | 病理特征权重过高 |
| L2 | SG2 第二夜 | 时间 + 人群 | 轻度下降 | 夜间状态差异 |
| L3 | Sleep-EDF Expanded | 蒙太奇 + 采样率 | 中度下降 | 参考电极与导联数不同 |
| L4 | MASS / SHHS | 设备 + 协议 + 人群 | 显著下降 | 需微调;判读规则版本差异 |
§6 AI 就绪指南
§6.0 云端快速启动(EEGDash BIDS 镜像)
不想先下载 17.7 GB 的话,可用 NeMAR/EEGDash 提供的 BIDS 1.7.0 镜像(DOI 10.82901/nemar.nm000111),按需流式拉取单条记录:
# 环境要求:Python >= 3.9,pip install eegdash
# 该镜像将官方 .rec 复制/符号链接为 .edf(内容未修改),
# 分期标签来自专家 1 的 Excel 文件(epoch 列 + 标签列)。
from eegdash.dataset import NM000111
dataset = NM000111(cache_dir="./data") # 首次访问按需下载
raw = dataset.datasets[0].raw # MNE Raw 对象
print(raw.info) # 通道名、采样率 200 Hz
sub1 = NM000111(cache_dir="./data", subject="01") # 按受试者过滤
两种获取通道的取舍:
| 维度 | 官方 MEGA 原始包 | EEGDash BIDS 镜像 |
|---|---|---|
| 保真度 | 官方原始字节 | 内容未修改,仅改名 .rec→.edf 并重组目录 |
| 获取成本 | 一次性 17.7 GB,受 MEGA 限速影响 | 按记录流式拉取 |
| 标签 | 双专家两套文件齐全 | 默认提供专家 1 标签(第二套需回官方包) |
| 读取 | 需自行改名/转换 | MNE/braindecode 直接可用 |
| 适用 | 论文复现、双标签研究 | 快速原型、教学 |
§6.1 快速上手(官方原始包)
# 目录结构预期:官方 MEGA 压缩包解压后的三个亚组目录
# data_root/subgroup1/<subject>/1_1.rec ... 1_2.xlsx
# data_root 通过环境变量 ISRUC_DATA_ROOT 指定,代码内一律用
# os.path.join(data_root, subgroup, subject, file) 拼接,禁止硬编码盘符。
# 最小可用子集:subgroup3(10 例健康对照,1.35 GB)即可完整调试本流程。
import os, shutil
import mne
data_root = os.environ.get("ISRUC_DATA_ROOT", "./isruc")
rec_path = os.path.join(data_root, "subgroup3", "1", "1_1.rec")
# 坑点:.rec 内容是 EDF,但扩展名不是 .edf,MNE 直接读会失败——
# 先复制/软链为 .edf 再读取(与 EEGDash 的做法一致)
edf_path = rec_path[:-4] + ".edf"
if not os.path.exists(edf_path):
shutil.copy(rec_path, edf_path)
raw = mne.io.read_raw_edf(edf_path, preload=True, verbose=False)
sfreq = raw.info["sfreq"] # 200 Hz
n_epochs = int(raw.n_times // (sfreq * 30)) # 信号覆盖的整 epoch 数
print(sfreq, n_epochs) # 例:200.0, 924
§6.2 数据获取
| 亚组 | 大小 | 获取方式 |
|---|---|---|
| 亚组 1(100 例患者) | 14.12 GB | 官方下载页 MEGA 链接 |
| 亚组 2(8 例 × 2 夜) | 2.2 GB | 同上 |
| 亚组 3(10 例健康对照) | 1.35 GB | 同上 |
# 方式 A:MEGA 命令行(megatools),官方用 MEGA 分发,带宽受限时需稍后重试
# mega-get "<官方页面上的亚组链接>" ./isruc/
# 方式 B:EEGDash 流式获取(推荐快速实验),自动处理 .rec -> .edf
pip install eegdash
合规提示:数据免费公开用于研究用途,使用时必须引用 Khalighi et al. 2016(CMPB)论文。
下载完成后的完整性自检脚本(批量验证 .rec 可读性与标注对齐,提前暴露坑点 1/2/6):
import glob, os, shutil, mne, pandas as pd
def audit_local_copy(data_root, subgroup):
"""遍历一个亚组,返回(可读记录数, 对齐异常清单)。
目录预期:data_root/subgroupN/<subject>/<subject>_1.rec + .xlsx"""
issues, ok = [], 0
for rec in sorted(glob.glob(os.path.join(data_root, f"subgroup{subgroup}", "*", "*.rec"))):
edf = rec[:-4] + ".edf" # 坑点 1:改名才可读
if not os.path.exists(edf):
shutil.copy(rec, edf)
try:
raw = mne.io.read_raw_edf(edf, preload=False, verbose=False)
except Exception as e: # noqa: BLE001
issues.append((rec, f"EDF 读取失败: {e}"))
continue
n_ep = int(raw.n_times // (raw.info["sfreq"] * 30))
xlsx = rec[:-4] + ".xlsx"
if os.path.exists(xlsx):
n_lab = len(pd.read_excel(xlsx)) # 坑点 2:标注行数可能多约 30
if n_lab - n_ep > 35 or n_lab < n_ep:
issues.append((rec, f"标注 {n_lab} 行 vs 信号 {n_ep} epoch"))
ok += 1
return ok, issues
ok, issues = audit_local_copy("./isruc", subgroup=3)
print(f"可读记录 {ok} 条,异常 {len(issues)} 项")
for path, msg in issues:
print(" -", os.path.basename(path), msg)
§6.3 预处理全流程
import os
import numpy as np
import pandas as pd
import mne
# 通道映射字典(坑点 6 的固化产物):以官方 Content.pdf 为准,一次定义全局复用。
# 注意 ECG = X2(部分文献误列为 EMG),右腿 X3、左腿 X4、鼾声 X5。
CHANNEL_MAP = {
"C3-A2": "EEG", "C4-A1": "EEG", "O1-A2": "EEG", "O2-A1": "EEG",
"F3-A2": "EEG", "F4-A1": "EEG",
"LOC-A2": "EOG", "ROC-A1": "EOG",
"X1": "EMG_chin", "X3": "EMG_leg_right", "X4": "EMG_leg_left",
"X2": "ECG", "X5": "snore",
"X6": "airflow", "DC3": "airflow_dc",
"X7": "effort_abd", "X8": "effort_abd_dc",
"DC8": "body_position",
}
# 官方已预滤波:EEG/EOG 0.3–35 Hz + 50 Hz 陷波;EMG 10–70 Hz + 50 Hz 陷波。
# 因此本流程不再二次带通滤波,只做重采样、对齐与标准化。
SFREQ_TARGET = 100
EPOCH_SEC = 30
STAGE_MAP = {0: 0, 1: 1, 2: 2, 3: 3, 5: 4} # W,N1,N2,N3,REM -> 0..4;4=运动/未判读,剔除
CHANNELS = ["C3-A2", "C4-A1", "O1-A2", "O2-A1", # EEG
"LOC-A2", "ROC-A1", # EOG
"X1"] # 下颌 EMG(通道名以 raw.info 为准)
def load_recording(rec_path: str):
edf_path = rec_path[:-4] + ".edf"
if not os.path.exists(edf_path):
shutil.copy(rec_path, edf_path)
raw = mne.io.read_raw_edf(edf_path, preload=True, verbose=False)
n_epochs = int(raw.n_times // (200 * EPOCH_SEC)) # 信号实际覆盖的 epoch 数
# 标注:每例两套专家文件;读专家 1,标签列按官方 Content.pdf 的缩写定位
ann = pd.read_excel(rec_path.replace(".rec", ".xlsx"))
labels = ann.iloc[:, 1].to_numpy() # 第 2 列为分期编码
labels = np.array([STAGE_MAP.get(v, -1) for v in labels])
labels = labels[:n_epochs] # 末尾 30 epoch 信号缺失 -> 截断
# 信号:选通道 + 重采样 + 逐记录 z-score(统计仅来自本记录,跨折无泄漏风险)
raw.pick([c for c in CHANNELS if c in raw.ch_names])
raw.resample(SFREQ_TARGET)
x = raw.get_data() # [C, T]
x = (x - x.mean(axis=1, keepdims=True)) / (x.std(axis=1, keepdims=True) + 1e-8)
return x[:, : n_epochs * SFREQ_TARGET * EPOCH_SEC], labels
def make_epochs(x, labels):
win = 100 * EPOCH_SEC
n = x.shape[1] // win
xs = x[:, : n * win].reshape(x.shape[0], n, win).transpose(1, 0, 2)
keep = labels[:n] >= 0 # 剔除编码 4 / NaN
return xs[keep], labels[:n][keep]
预处理产出的两个约定:load_recording 返回的信号数组形状为 [通道, 采样点],epoch 化交给 make_epochs;所有对齐决定(截断、剔除编码 4)都发生在这个阶段并应留下日志——下游 Dataset/训练代码应假设拿到的是"干净对齐"数据,不再重复处理。这一分层让数据问题只在一处排查,而不是散落在训练循环里。
§6.4 PyTorch DataLoader
使用要点:该 Dataset 以"整夜记录"为加载单位、以 epoch 为返回单位,__getitem__ 做的是跨记录的全局索引展开;若训练序列模型(输入需要连续多 epoch),应改为按记录返回 (x, y) 并在 collate_fn 里滑窗。num_workers > 0 时 MNE 的 EDF 读取会多进程展开内存,SG1 全量建议先离线转成 .npy 缓存再训练(首次约 10–20 分钟,之后每 epoch 提速一个量级)。
<details>
<summary>展开完整可运行 Dataset + DataLoader 代码(约 60 行)</summary>
import os, shutil
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import KFold
class ISRUCSleepDataset(Dataset):
"""按受试者加载整夜数据;subject-independent 划分由外部传入 subject 列表控制。
目录预期:
root/subgroup{1|2|3}/{subject}/{subject}_{rec}.rec + .xlsx
最小可用子集:subgroup3(10 例)即可端到端调试。
"""
def __init__(self, root, subjects, channels=("C3-A2", "C4-A1", "O1-A2",
"O2-A1", "LOC-A2", "ROC-A1", "X1")):
self.items = []
for sg, sid in subjects:
rec = os.path.join(root, f"subgroup{sg}", str(sid), f"{sid}_1.rec")
x, y = self._load(rec, channels)
self.items.append((x, y))
def _load(self, rec_path, channels):
edf = rec_path[:-4] + ".edf" # .rec 内容即 EDF,改名即读
if not os.path.exists(edf):
shutil.copy(rec_path, edf)
raw = mne.io.read_raw_edf(edf, preload=True, verbose=False)
n_ep = int(raw.n_times // 6000)
raw.pick([c for c in raw.ch_names if c in channels])
raw.resample(100)
x = raw.get_data()
x = (x - x.mean(1, keepdims=True)) / (x.std(1, keepdims=True) + 1e-8)
y = self._labels(rec_path.replace(".rec", ".xlsx"), n_ep)
xs = x[:, : n_ep * 3000].reshape(x.shape[0], n_ep, 3000).transpose(1, 0, 2)
keep = y >= 0
return torch.from_numpy(xs[keep]).float(), torch.from_numpy(y[keep]).long()
def _labels(self, xlsx, n_ep):
import pandas as pd
df = pd.read_excel(xlsx)
lab = df.iloc[:, 1].to_numpy()
m = {0: 0, 1: 1, 2: 2, 3: 3, 5: 4} # REM 编码为 5 -> 类别 4
return np.array([m.get(v, -1) for v in lab[:n_ep]])
def __len__(self):
return sum(y.numel() for _, y in self.items)
def __getitem__(self, idx):
for x, y in self.items:
if idx < y.numel():
return x[idx], y[idx]
idx -= y.numel()
def subject_independent_split(all_subjects, n_splits=5, seed=42):
"""受试者级 5 折;亚组 2 的两夜必须随同一受试者进同一侧。"""
kf = KFold(n_splits=n_splits, shuffle=True, random_state=seed)
for tr, te in kf.split(all_subjects):
yield [all_subjects[i] for i in tr], [all_subjects[i] for i in te]
sg3 = [(3, i) for i in range(1, 11)]
train_subs, test_subs = next(subject_independent_split(sg3))
train_set = ISRUCSleepDataset("./isruc", train_subs)
loader = DataLoader(train_set, batch_size=64, shuffle=True, num_workers=4)
x, y = next(iter(loader)) # x: [B, 7, 3000],y: [B]
</details>
§6.5 坑点 8 个(真实失败模式)
⚠️ 坑点 1:.rec 扩展名导致 EDF 读取失败(分类:工程陷阱)
问题:官方信号文件内容是 European Data Format(EDF),但扩展名为 .rec;MNE、pyedflib 等按扩展名嗅探的库会直接抛出"无法识别文件"错误。
症状:read_raw_edf(...)报文件不存在或格式错误;而用文本编辑器打开文件头可见 EDF+C 标识。
解决:
- 简单方法:读取前将 .rec 复制或软链为同名 .edf 文件(EEGDash 官方转换即采用复制/符号链接且不修改内容)。
- 进阶方法:批量转换脚本按亚组遍历
glob("*.rec"),用os.symlink建链避免双倍磁盘占用。- SOTA 方法:直接改用 NeMAR/EEGDash BIDS 镜像(DOI 10.82901/nemar.nm000111),已按 BIDS 1.7.0 布局提供 .edf。
参考:https://eegdash.org/api/dataset/eegdash.dataset.NM000111.html
⚠️ 坑点 2:信号与标注末尾相差约 30 个 epoch(分类:预处理陷阱)
问题:整夜记录末段噪声大,官方 .mat 信号比 Excel 标注行数少约 30 个 epoch(社区实测 subject1 的 .mat 为 924 epoch,而标注 925 行);直接按标注长度切片会越界或错位。
症状:信号长度除以 6,000 后得到的 epoch 数 < 标注行数;训练时最后若干样本标签与信号错位甚至越界崩溃。
解决:
- 简单方法:以
n_epochs = n_signal_samples // (sfreq*30)截断标签数组。- 进阶方法:逐记录打印
len(labels)与n_epochs差值并记录到日志,建立每记录对齐清单。- SOTA 方法:构建统一校验器:信号时长、标注行数、NaN 数三指标入元数据表,任何一指标超阈值即告警。
参考:http://ghub.com/YifuYuan/EEG-Dataset-Visualization
⚠️ 坑点 3:只用专家 1 标签,忽略第二套独立标注(分类:标签理解)
问题:每例有两套独立专家标注(两份 .xlsx/.txt);很多实现默认只读专家 1 文件,浪费了本数据集独有的标签噪声评测能力。
症状:模型对 N1 的评估完全依赖单一标注者,复现的"人类上限"缺失;论文被审稿人质疑未利用双标注。
解决:
- 简单方法:同时读入两套标签,报告专家间 Cohen’s kappa 作为一致性上界。
- 进阶方法:以两套标签训练/验证各用其一,评估模型对标签噪声的鲁棒性;分歧 epoch 单独统计各期分布。
- SOTA 方法:将分歧 epoch 视为"软标签"或多标签样本(label smoothing 或投票),并报告在分歧子集上的模型表现。
参考:https://pubmed.ncbi.nlm.nih.gov/26589468/
⚠️ 坑点 4:亚组 2 双夜记录受试者泄漏(分类:数据泄漏)
问题:亚组 2 每名受试者有两夜记录;若按记录(而非受试者)随机划分训练/测试,同一人的两晚会分属两侧,测试指标虚高。
症状:加入亚组 2 后准确率"异常提升";交叉验证方差极小但外部数据上大幅下滑。
解决:
- 简单方法:划分键一律用 subject_id,两夜绑定同侧。
- 进阶方法:实现
GroupKFold(groups=subject_id);亚组 2 的组 ID 映射到同一 subject。- SOTA 方法:数据卡中固化"划分键 = (subgroup, subject_id)"并写入 CI 校验,任何划分脚本不得以 recording_id 为键。
参考:数据集结构事实(8 例 × 2 夜,官方下载页)
⚠️ 坑点 5:随机按 epoch 划分夸大性能(分类:评估误用)
问题:30 秒 epoch 强自相关,把同一夜的 epoch 随机分进训练与测试等于"背答案考试";社区协议是 subject-independent。
症状:随机划分准确率比受试者独立划分高 5–15 个百分点;审稿或复现时结果无法对齐排行榜。
解决:
- 简单方法:按受试者 5 折交叉验证,禁止任何 epoch 级随机划分。
- 进阶方法:报告时注明划分协议、折数与随机种子;与排行榜对比时核对其协议是否一致。
- SOTA 方法:同时报告 SG1→SG3 跨亚组迁移成绩,展示真实泛化下界。
参考:https://www.sota2.com/research/sota/sleep-stage-classification-on-isruc-sleep
⚠️ 坑点 6:通道编号 X1–X8/DC3/DC8 映射错误(分类:工程陷阱)
问题:除 EEG/EOG 外,下颌 EMG、腿部 EMG、ECG、鼾声、气流、腹带、体位在文件中以 X1、X3、X4、X2、X5、X6/DC3、X7/X8、DC8 等编号存储;ECG 是 X2 而部分文献误将其列为 EMG,照抄错误映射会让模型"学到"错误模态。
症状:REM 期肌张力迟滞特征消失、ECG 通道频谱与 EMG 混淆;跨论文复现结果差异大。
解决:
- 简单方法:以官方 Content.pdf 的缩写表为准建立通道映射字典,一次固化。
- 进阶方法:读取后绘制各通道时频概览,人工抽查 X2 是否呈心电 QRS 形态。
- SOTA 方法:将通道映射写入数据卡与单元测试(对采样率与波形统计断言),防止后续重构引入回归。
参考:https://github.com/Visper22/Sleep-Disorders-Datasets
⚠️ 坑点 7:对已预滤波信号二次滤波(分类:预处理陷阱)
问题:官方已对 EEG/EOG 施加 0.3–35 Hz 带通与 50 Hz 陷波、对 EMG 施加 10–70 Hz 带通;若再叠加默认预处理(如 MNE 的 notch 或高频带通),会削掉 spindle/slow-wave 边缘能量并与文献协议不可比。
症状:谱特征与其他论文系统性偏移;复现基线偏低;50 Hz 区域"干净得反常"。
解决:
- 简单方法:预处理只做重采样 + z-score,不再滤波。
- 进阶方法:若必须自定义滤波,先在 PSD 上确认 50 Hz 线谱已被抑制,再决定是否补充处理。
- SOTA 方法:在方法节明确声明"信号沿用官方预滤波,本工作仅重采样至 100 Hz 并逐记录标准化",保证可比性。
参考:https://research.unl.pt/ws/portalfiles/portal/13025938/
⚠️ 坑点 8:MEGA 限速与官方页面表述漂移(分类:工程陷阱)
问题:分发依赖 MEGA,带宽受限时会临时限速导致大包下载中断;且官方页面历经改版,亚组 2 的健康状态表述与原始论文不一致(页面称健康成人,论文与多数文献记为睡眠障碍/治疗中受试者),照抄页面文案会造成数据卡错误。
症状:14.12 GB 大包下载反复失败;不同时间抓取的官方描述互相矛盾,文献综述出现两种"事实"。
解决:
- 简单方法:MEGA 限速时等待后重试,或改用命令行断点续传;先下 1.35 GB 的亚组 3 调试。
- 进阶方法:下载后校验文件清单与大小,冻结本地副本并记录获取日期。
- SOTA 方法:数据卡同时引用论文与页面并注明表述差异;引用亚组 2 人群属性时以原始论文为准。
参考:https://sleeptight.isr.uc.pt/?page_id=48 与 https://arxiv.org/pdf/2307.05373v1
八个坑点的共性值得点破:没有任何一个涉及"模型或算法"——全部集中在数据的读取、对齐、划分与协议理解上。这与该数据集"文档齐全但工程包装薄弱"的气质一致:官方把科学记录做得很好(设备、滤波、双标注),却把易用性留给了社区。把 §6.2 的自检脚本与 §6.4 的加载器纳入你的代码库,八坑中的六个会在第一次运行前被自动拦截。
§6.6 数据增强
| 策略 | 判定 | 说明 |
|---|---|---|
| 高斯噪声注入(小幅) | ✅ 安全 | 提升电极噪声鲁棒性,保持频谱结构 |
| 随机时间平移(±1–2 s) | ✅ 安全 | 模拟 epoch 起点抖动,不破坏 30 s 结构 |
| 通道 dropout | ✅ 安全 | 训练时随机屏蔽 1–2 通道,模拟导联故障 |
| 时间遮蔽(SpecAugment 式) | ✅ 安全 | 遮蔽短时间段,迫使模型利用全局上下文 |
| 幅值微缩放(0.9–1.1×) | ✅ 安全 | 模拟电极阻抗差异,生理幅值范围内 |
| 时间反转 | ❌ 危险 | EEG 睡眠动态不可逆,翻转破坏纺锤波/CSS 结构语义 |
| 跨 epoch 重排 | ❌ 危险 | 打乱 epoch 顺序破坏睡眠结构上下文(序列模型致命) |
| 随机重采样变速 | ❌ 危险 | 改变频率成分,纺锤波 11–16 Hz 特征被移位 |
| 幅值缩放过大(>2×) | ❌ 危险 | 超出生理幅值范围,引入不真实分布 |
实践建议:增强只作用于训练折,且在"逐记录 z-score 之前"施加原始幅值域扰动,否则噪声水平会被标准化吞掉;通道 dropout 与时间遮蔽二选一即可,叠加使用对小数据集(SG3 仅 10 例)容易欠拟合;所有增强超参数随实验配置入库,保证可复现。
§6.7 模型推荐
| 模型 | 类型 | 适用场景 | 在 ISRUC-Sleep 上的已知表现 |
|---|---|---|---|
| AttnSleep | CNN-LSTM + 多注意力 | 单 epoch + 序列上下文的强基线 | ACC 78.89 / MF1 75.29(社区榜单第一梯队) |
| U-Sleep | 全卷积 U 形架构 | 高频分段、跨数据集鲁棒 | ACC 77.89 / MF1 73.59 |
| IITNet | 序内+序列间双级上下文 | 上下文建模研究 | ACC 77.10(社区榜单) |
| DeepSleepNet | 双支路 CNN + LSTM | 经典深度基线,代码成熟 | ACC 69.84 / MF1 66.41 |
| TS-TCC | 自监督对比学习 | 标注稀缺场景预训练 | ACC 70.17 / MF1 65.51(线性评估协议) |
| EEG 基础模型(CBraMod/LaBraM 等) | 大规模预训练 Transformer | 跨数据集迁移 | BIDS 版协议下 Balanced Acc 约 74–79 |
选型决策树:资源有限(单卡、一周内出结果)→ DeepSleepNet 复现 + AttnSleep 对照;追求发表级 MF1 → AttnSleep 协议 + 序列后处理 + 双标签敏感性分析;做自监督/基础模型研究 → TS-TCC 或 CBraMod 协议,并在自建协议与社区协议下各报一份成绩。
§6.8 硬件需求
| 阶段 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| 数据下载与转换 | 40 GB 磁盘、4 核 | 100 GB SSD、8 核 | 原始包约 17.7 GB + 解压与 .edf 副本 |
| 特征/预处理 | CPU 即可 | 8 核 + 32 GB 内存 | MNE 重采样与 z-score 内存占用中等 |
| 训练(分期模型) | 单卡 8 GB(RTX 3060 级) | 单卡 12–24 GB(A5000/3090) | 7 通道 × 3,000 点/epoch,批 64 通常够用 |
| 序列模型整夜推理 | 单卡 8 GB | 单卡 12 GB | 整夜约 950 epoch 的序列上下文 |
配置选择的经验法则:分期 CNN/Transformer 在批 64 下显存占用约 4–8 GB,瓶颈通常在数据加载而非 GPU——先把 .npy 缓存做好,再谈升卡;若做大规模超参搜索,多进程共享只读数据缓存(内存映射)比复制多份更划算。
§6.9 评估指标代码
from sklearn.metrics import (accuracy_score, f1_score,
cohen_kappa_score, classification_report)
def sleep_metrics(y_true, y_pred, stage_names=("W", "N1", "N2", "N3", "REM")):
"""分期评测标准四件套:ACC、MF1、Kappa、逐类 F1。
注意:只报 ACC 会掩盖 N1 的失败——社区共识是必须报 MF1 与逐类 F1。"""
return {
"acc": accuracy_score(y_true, y_pred),
"mf1": f1_score(y_true, y_pred, average="macro"),
"kappa": cohen_kappa_score(y_true, y_pred),
"report": classification_report(y_true, y_pred, target_names=stage_names,
digits=4, zero_division=0),
}
def confusion(y_true, y_pred, stage_names=("W", "N1", "N2", "N3", "REM")):
"""混淆矩阵:定位主要混淆对(行业常见:N1<->N2、REM<->N1、W<->N1)。"""
from sklearn.metrics import confusion_matrix
import pandas as pd
cm = confusion_matrix(y_true, y_pred, labels=range(len(stage_names)))
return pd.DataFrame(cm, index=[f"真:{s}" for s in stage_names],
columns=[f"预:{s}" for s in stage_names])
阅读混淆矩阵的三个动作:看主对角线外的最大单元(主要混淆对);对比训练/测试两侧混淆结构是否一致(结构漂移 = 过拟合信号);把 N1 行单独拉出来跟踪版本迭代(最脆弱期)。
§6.10 MLOps 笔记
- 数据版本化:官方无版本号,建议以"获取日期 + 校验和"自建版本标签(如 isruc-20260909),DVC 管理三包。
- 划分固化:subject-independent 折索引存为 JSON 随代码入库,实验间复用同一划分。
- 协议声明模板:论文中固定声明"SG1 五折 subject-independent、重采样 100 Hz、通道集、逐记录 z-score",避免与线性评估协议(如自监督榜单)混淆。
- 监控:线上分期系统监控 N1 召回与 REM/NREM 混淆矩阵漂移——N1 F1 是模型退化的最早信号。
- 镜像通道:生产环境可锁 EEGDash 镜像 DOI(10.82901/nemar.nm000111)保证输入一致性。
- 实验追踪:以(划分哈希、通道集、采样率、随机种子)四元组作为 run 的最小元数据;缺任何一项都无法与历史结果对话。
- 双标签资产化:把专家 2 标签纳入评估流水线(每次发布跑一次"模型 vs 专家 2"成绩),作为人类一致性的长期锚点。
- 失败样本库:把混淆矩阵中重复出现的难例 epoch(如 REM 起止、N1/N2 过渡)沉淀为回归测试集,模型迭代必须全量通过。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 单中心偏倚 | 全部记录来自 CHUC 一家实验室、一套设备与本地操作规范 | 高 | 外部验证(SHHS/MASS/Sleep-EDF);报告跨数据集迁移 |
| 人群构成偏倚 | 患者占绝对多数(110/118 有睡眠障碍证据),健康对照仅 10 例且 9 男 1 女 | 高 | 对照研究使用时声明样本量限制;按性别分层敏感性分析 |
| 药物效应混杂 | 部分患者在睡眠药物作用下记录 | 中 | 用受试者信息表中的用药字段做分层或排除 |
| 年代偏倚 | 采集于 2009–2013,设备与临床规范为当时标准 | 中 | 与近年数据集对比时注意采集协议差异 |
| 标签偏倚 | 双专家独立标注但无仲裁共识;N1 等边界期人类分歧大 | 中 | 双标签一致性分析;分歧 epoch 敏感性实验 |
| 记录选择偏倚 | 每份记录由中心存档随机抽取,但抽取框为"临床转诊且完成整夜采集"人群 | 低 | 在数据卡中声明抽样框;避免外推到社区人群 |
偏倚叠加的综合效应值得注意:单中心(设备同质)与年代(2009–2013)两个偏倚叠加,意味着"跨医院 + 跨年代"的双重迁移没有人做过系统评测——这既是本数据集的局限,也是留给后续研究的空白点。建议任何声称"可泛化"的分期系统至少补一组 L3/L4 级外部验证(见 §5.5 阶梯表)。
§7.2 标注质量
标注由 CHUC 执业睡眠专家完成、遵循 AASM 规则,属于该领域可获得的较高等级参考标准;双套独立标注是相对多数单标注数据集的核心质量优势。原始论文将专家间一致性与自动分类性能做了关联分析,但未公开统一 kappa 数值——使用者应自行计算并报告本队列内专家一致性。边界期(N1、REM 起止段)的一致性显著低于 N2/N3,这是全行业现象,评估模型时应将分歧 epoch 单列。
使用双标签的三条实操守则:其一,主实验固定一套标签(惯例为专家 1),另一套专用于一致性分析,避免"挑好结果"的 cherry-picking 嫌疑;其二,报告专家间一致率时同时给整体与分期两个口径——整体一致率会被占比高的 W/N2 拉高,掩盖边界期的分歧;其三,若用分歧 epoch 构造软标签训练,需在测试时仍以单一标签评测,保持与社区榜单可比。
§7.3 泛化性
| 部署场景 | 失效风险 | 证据/机制 |
|---|---|---|
| 跨医院(不同设备/导联) | 高 | 单中心单设备;导联命名与放大器特性差异 |
| 家庭/可穿戴设备 | 高 | 实验室全导联 PSG 与家庭简化设备信号分布差异大 |
| 儿科人群 | 高 | 受试者 20–85 岁成人,儿童睡眠结构不同 |
| 健康人群筛查 | 中 | 患者为主训练会高估病理特征权重;可用 SG3 校准 |
| 跨年代数据 | 中 | 2009–2013 采集;近年数字系统滤波链不同 |
| 序列上下文依赖的线上部署 | 中 | 序列模型需要整夜滑动窗口缓冲;单 epoch 模型迁移成本更低 |
泛化风险的优先级排序基于一个事实:本数据集的全部变异都来自"人"(年龄、疾病、用药、夜间状态),而"设备与环境"维度完全固定。因此模型学到的很可能是"CHUC 人群的分期规律"而非"PSG 分期的普适规律"——逐项核对上表时,凡涉及设备与环境的行为风险最高,需要最先做外部验证。
§7.4 伦理
数据在 CHUC 临床采集后匿名化发布,标注与受试者信息仅含年龄、性别、诊断类别与用药摘要,不含姓名等直接标识符。官方要求研究用途使用并引用论文。基于该数据的模型用于临床前需通过独立伦理审批与前瞻性验证。
§7.5 公平性
性别分布不均衡(亚组 3 为 9 男 1 女,亚组 2 为 6 男 2 女),跨性别性能差异需专门评估;年龄跨度大(20–85 岁)既是资产也是风险——模型可能隐含"年龄→分期先验",部署到老年筛查场景时应做年龄分层评估。此外,患者队列的诊断构成以转诊人群为主,罕见睡眠疾病在亚组内样本极少甚至缺失,模型对长尾诊断人群的表现不应外推。
§7.6 数据漂移
作为固定快照数据集,其自身无持续漂移问题;漂移风险出现在"训练于 ISRUC-Sleep、部署于实时监测"的链路:电极阻抗、环境噪声、采样率差异都会造成输入分布偏移。建议上线前用目标场景小规模自采数据做 PS/ROPE 分析,并以 N1 F1 与 kappa 作为漂移哨兵指标。
工程上可落地的漂移监控分三层:输入层监控每通道幅值分布与缺失率(对应电极脱落、阻抗劣化);特征层监控整夜睡眠结构统计(N3 占比骤降可能提示人群变化而非模型问题);输出层监控预测分布与置信度熵(模型突然"全押 N2"是典型漂移征兆)。三层的阈值都应在 ISRUC-Sleep 内部验证集上先标定,再迁移到线上。
§7.7 DAIMS 24 项评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ⚠️ | 信号为逐记录 EDF/MAT,标注为 Excel/文本;无统一分析宽表,需自行构建 epoch × 特征表 |
| 2 | 唯一标识 | ✅ | 受试者编号 + 记录序号全局唯一,SG2 双夜以记录序号区分 |
| 3 | 特殊字符 | ✅ | 文件名与标注均为 ASCII 数字/字母,无特殊字符风险 |
| 4 | 重复行 | ✅ | 标注逐 epoch 单行,无重复记录 |
| 5 | 缺失编码 | ⚠️ | 未判读 epoch 以 NaN/空白/编码 4 混合出现,官方未给统一缺失编码文档 |
| 6 | 标签标识 | ✅ | 两套专家标注分文件存储,来源清晰可追溯 |
| 7 | 罕见类分组 | ⚠️ | N1 稀少且无官方分层抽样建议,需自行处理类不平衡 |
| 8 | 偏倚评估 | ⚠️ | 官方未附偏倚分析,本页 §7.1 提供社区视角评估 |
| 9 | 数据字典 | ✅ | 官方 Content.pdf 说明标注列缩写;通道映射需结合文献固化 |
| 10 | 信息性缺失解释 | ⚠️ | 末尾 30 epoch 缺口与 NaN 填补规则未官方文档化(EEGDash 转换时自行填补) |
| 11 | 设备记录 | ✅ | 设备型号(SomnoStar Pro)、导联、采样率、滤波链均有文档 |
| 12 | 共线性 | ✅ | 6 EEG 导联冗余为蒙太奇设计所需,无意外共线性 |
| 13 | 编码映射 | ⚠️ | 分期为 0–5 数字编码(REM=5、4 为运动/未判读),需自行映射并剔除 4 |
| 14 | 时间戳处理 | ⚠️ | 无绝对时钟,仅 epoch 序号自记录起点计数;跨记录时间分析受限 |
| 15 | 划分建议 | ⚠️ | 无官方深度学习划分文件;官方论文提供 SSM4S subject-independent 基线脚本 |
| 16 | 泄漏讨论 | ✅ | 数据结构(按受试者组织、双夜绑定)天然支持 subject-independent 协议 |
| 17 | 标签分布 | ✅ | 可从标注文件直接统计(SG1 约 69,671 epoch、SG3 约 8,589 epoch 有文献记录) |
| 18 | 测量偏倚 | ⚠️ | 单设备单实验室,放大器与电极特性不可分离 |
| 19 | 外部验证建议 | ✅ | 与 Sleep-EDF/SHHS/MASS 的通道映射与重采样路径清晰可行 |
| 20 | 版本记录 | ⚠️ | 官方无版本号与更新日志(NeMAR 镜像 v1.0.1 为唯一第三方版本锚点) |
| 21 | 预处理脚本 | ✅ | 官方发布 SSM4S 相关脚本支持基线复现(MATLAB 生态);Python 全流程需自建或用 EEGDash |
| 22 | 合规要求 | ✅ | 研究用途免费开放,唯一义务是引用原始论文 |
| 23 | 多模态对齐 | ⚠️ | 各通道同步采集,但末尾 30 epoch 缺口与低频通道(12.5/25 Hz)需对齐处理 |
| 24 | 去标识化 | ✅ | 匿名化发布,仅数值 ID 与人口学摘要,无直接标识符 |
DAIMS 评分:18.5 / 24
评分解读:13 项完全达标、11 项部分达标、0 项缺失。核心短板集中在"工程易用性"而非"科学质量"——数据本身的采集规范、设备文档与双专家标注属一流,但官方未提供 Python 生态的加载器、统一划分文件与缺失值规范,需要使用者自行补齐;这些短板均有社区成熟的替代方案(BIDS 镜像、公开划分协议)。
对你意味着什么:
- 第一天就能用:按 §6.1 把 .rec 改名 .edf,30 分钟内可在 MNE 里画出整夜低通视图——数据读取无根本障碍。
- 必须自己做对的三件事:subject-independent 划分(§5.3)、双标签的读取策略(坑点 3)、末尾 30 epoch 截断(坑点 2)——这三点是所有公开复现失败的集中区。
- 别指望的:开箱即用的宽表与官方 Python 划分文件;用 §6.4 代码与固定折索引 JSON 自建。
- 汇报成绩时:同时给 ACC、MF1、Kappa 与逐类 F1(尤其 N1),并声明划分协议,否则无法与排行榜对话。
- 长期项目:假定官方链接可能失效,第一天就自建镜像与校验和,引用一律指向论文 DOI 而非下载页。
针对 11 个 ⚠️ 项的补强路线图(按投入产出排序):
| 优先级 | 补强动作 | 覆盖的 DAIMS 项 |
|---|---|---|
| P0 | 固化 subject-independent 折索引并入库 | 划分建议、泄漏讨论 |
| P0 | 建立"信号-标注对齐校验"脚本(§6.2 自检代码) | 信息性缺失解释、多模态对齐 |
| P1 | 用 pandas 把 .xlsx 转成统一宽表(epoch × 标签 × 元数据)并随代码版本化 | 宽格式、缺失编码、编码映射 |
| P1 | 自行计算并报告双专家 kappa,分歧 epoch 单独建表 | 标签分布、偏倚评估 |
| P2 | 以"获取日期 + 校验和"建本地版本标签 | 版本记录 |
| P2 | 记录设备与滤波链元数据进数据卡 | 测量偏倚、时间戳处理 |
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| Sleep-EDF Expanded | PhysioNet( Massachusetts General Hospital 采集) | 五分类分期 | 与同模型 ISRUC-Sleep-1 成绩同数量级 | 视模型而定,通常略降 | 通道映射(Fpz-Cz/Pz-Oz → ISRUC 导联)与重采样是关键变量 |
| SHHS | 美国 SHHS 多中心队列 | 五分类分期 | U-Sleep 报告跨 16 研究库稳定表现 | 训练库含 SHHS 时泛化提升 | 大规模混合训练可缓解单中心偏倚 |
| SG3 健康对照(内置迁移) | CHUC | 患者模型 → 健康人测试 | ACC/MF1 通常下降 | 数据集内即可复现 | 验证"患者→健康"domain shift 的最小成本实验 |
| MASS | 加拿大蒙特利尔队列 | 跨数据集微调/零样本分期 | 逐类 F1 下降明显 | 采样率 256 Hz、导联蒙太奇差异需先统一 | 高通道数据集是检验通道鲁棒性的最佳外部站 |
§8 基准性能与生态
§8.1 排行榜
社区榜单(SOTA2:Sleep Stage Classification on ISRUC-Sleep,快照 2024-04)主流成绩如下。⚠️ 数值不可直接比较:各行来自不同论文协议(输入模态、是否线性评估、是否用序列上下文差异巨大),仅供量级参考。
| 排名 | 模型 | ACC / MF1(%) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | AttnSleep | 78.89 / 75.29 | 2022 | CNN-LSTM + 多头注意力 | Phan et al., 2022, IEEE Trans. Instrumentation and Measurement. DOI: 10.1109/TIM.2022.3166996 | github.com/OmarManzoor/AttnSleep |
| 2 | U-Sleep | 77.89 / 73.59 | 2021 | 高频 U 形全卷积 | Perslev et al., 2021, npj Digital Medicine. DOI: 10.1038/s41746-021-00440-5 | github.com/perslev/U-Time |
| 3 | ContraWR | 74.07 / 71.18 | 2022 | 自监督(与世界对比) | Yang et al., 2022, CIKM(线性评估协议) | — |
| 4 | TS-TCC | 70.17 / 65.51 | 2021 | 时序对比自监督 | Eldele et al., 2021, IJCAI. DOI: 10.24963/ijcai.2021/314 | — |
| 5 | DeepSleepNet | 69.84 / 66.41 | 2017 | CNN 特征 + LSTM 序列 | Supratak et al., 2017, IEEE Trans. Neural Systems and Rehabilitation Engineering. DOI: 10.1109/TNSRE.2017.2696227 | github.com/akaraspt/deepsleepnet |
补充:2025 年多模态通用模型 PSG-LLaVA 在自建协议下报告 ISRUC ACC 0.8596、Kappa 0.8172(arXiv:2509.22810),显示大规模预训练路线的潜力;BIDS 版协议下 CBraMod 脑电基础模型 Balanced Acc 约 78.65(SOTA2:ISRUC)。
读榜单的三个动作:第一,先看协议列——“线性评估”(冻结特征只训分类头)与全量微调不可混排,自监督方法在榜单上的绝对值天然偏低;第二,看 N1 F1 而非总 ACC——两个 ACC 相近的方法,N1 F1 可以相差 10 个点,而 N1 恰是临床价值最高的失败区;第三,看数据读法——有的工作合并 SG1+SG3、有的只用 SG1、有的用第二套专家标签做测试,读法不同则数字不可比。把这三点核对完,榜单才是一张可对话的成绩单。
§8.2 SOTA 总结与选型建议
MF1 比 ACC 更能反映真实水平:榜单头部方法 ACC 78–79%、MF1 75% 上下,而 N1 的 F1 长期停留在 32–46%,是全部方法的公共短板。选型建议:追求可复现基线选 AttnSleep 或 DeepSleepNet(代码成熟);标注稀缺或要做跨数据集预训练选 TS-TCC/CBraMod 类自监督路线;追求"即用型分期器"可考虑在 16 研究库上训练的 U-Sleep 再在本数据微调。
从方法演进看 ISRUC-Sleep 上的成绩曲线:特征工程时代(2016 前后,SSM4S 等)ACC 约 70–75%;CNN-LSTM 时代(2017–2020,DeepSleepNet 及其变体)ACC 约 70–77%;注意力与多模态时代(2021–2024,AttnSleep、U-Sleep)ACC 稳定在 78–79%、MF1 约 74–75%;2025 年后多模态通用/基础模型路线(PSG-LLaVA、CBraMod)开始冲击 ACC 84–86%(自建协议)。增量收益递减的核心瓶颈不是骨干网络,而是 N1 边界与标签噪声——这指向双标注利用、软标签与校准方法,而非更大的模型。
§8.3 评测协议
社区默认协议:SG1 受试者级 5 折交叉验证(subject-independent),重采样 100 Hz,通道集 C3-A2/C4-A1/O1-A2/O2-A1 + EOG + 下颌 EMG,逐记录 z-score,报 ACC/MF1/Kappa/逐类 F1。原始论文附带的 SSM4S 协议为 subject-independent 特征工程方法,可作为经典对照。与榜单对比前务必核对:输入是否含序列上下文、是否线性评估、是否合并 SG3。
三个协议细节决定了成绩能否对齐:其一,是否保留完整 Wake(部分工作只保留睡眠期前后各 30 分钟 Wake,会抬高 ACC);其二,是否剔除编码 4 的运动 epoch 以及如何处理 NaN 标注行;其三,测试期是否使用序列平滑(多数序列模型会做 HMM/Viterbi 后处理,单 epoch 模型则不做)。建议论文附上划分文件与预处理配置,使第三方可逐位复现。
§8.4 相关数据集
| 数据集 | 规模 | 关系 | 适用场景 |
|---|---|---|---|
| Sleep-EDF Expanded | 197 份记录 | 最常用对照基准 | 跨数据集泛化验证 |
| SHHS | 多中心家庭 PSG(数千份) | 大规模预训练源 | 缓解单中心偏倚 |
| MASS | 约 200 名受试者,32 导联 | 高通道数对照 | 高密度导联消融 |
| CAP Sleep Database | 108 份记录 | 微结构(CAP 序列)研究 | 睡眠微结构任务 |
| ANPHY-Sleep | 健康成人高密度 EEG 睡眠库(Scientific Data, 2024) | 高空间分辨率对照 | 高密度 EEG 睡眠生理研究 |
| PhysioNet CinC Challenge 系列 | 多任务 | 信号处理方法论来源 | 竞赛协议参考 |
选相关数据集的两条主线:做"方法学论文"时,ISRUC-Sleep + Sleep-EDF Expanded 是最小可信组合(一个患者队列一个健康队列,双数据集结果能说明方法不是过拟合某一分布);做"产品原型"时,ISRUC-Sleep(实验室级精细标签)+ SHHS(大规模真实世界分布)构成"精标小数据调模型、大数据看分布"的经典两段式。
§8.5 关键论文 Top 7
- Khalighi S, Sousa T, Santos JM, Nunes U. ISRUC-Sleep: A comprehensive public dataset for sleep researchers. Computer Methods and Programs in Biomedicine, 124:180–192, 2016. DOI: 10.1016/j.cmpb.2015.10.013 — 数据集本体论文,含 SSM4S 基线与三组设计原理。
- Sousa T, Cruz A, Khalighi S, Pires G, Nunes U. A two-step automatic sleep stage classification method with dubious range detection. Computers in Biology and Medicine, 59:42–53, 2015 — 配套两步法分期与"可疑区间"检测。
- Khalighi S, Sousa T, Pires G, Nunes U. Automatic sleep staging: A computer assisted approach for optimal combination of features and polysomnographic channels. Expert Systems with Applications, 40(17):7046–7059, 2013 — 特征/通道组合优化,ISRUC 队列前期工作。
- Phan H et al. AttnSleep: Embedding Multi-Attention Channels in a CNN-LSTM Architecture for Automatic Sleep Stage Classification. IEEE TIM, 2022. DOI: 10.1109/TIM.2022.3166996 — 社区榜单头部方法。
- Perslev M et al. U-Sleep: resilient high-frequency sleep staging. npj Digital Medicine, 2021. DOI: 10.1038/s41746-021-00440-5 — 跨 16 研究库的鲁棒分期器。
- Supratak A et al. DeepSleepNet: a model for automatic sleep stage scoring based on raw single-channel EEG. IEEE Trans. NSRE, 2017. DOI: 10.1109/TNSRE.2017.2696227 — 深度学习分期奠基工作。
- Eldele E et al. Time-Series Representation Learning via Temporal and Contextual Contrasting. IJCAI, 2021. DOI: 10.24963/ijcai.2021/314 — 自监督时序表征在分期上的代表。
按阅读目的检索以上文献的路径:做复现优先读 1(协议)+ 4(可运行代码);做自监督预训练读 7 与 5;写 related work 时 1、4、5、6 构成"数据集-深度学习奠基-鲁棒分期-注意力机制"的完整叙事线。
§8.6 社区活跃度
截至 2026-09,原始论文 Google Scholar 被引约 460+ 次(Semantic Scholar 收录 273 次),年平均引用持续上升;社区存在多个第三方数据准备仓库(如 Sleep-Disorders-Datasets 知识库、EEG 可视化仓库),NEMAR/EEGDash 官方生态提供 BIDS 镜像与 MNE/braindecode 加载路径。官方站点维护稳定,MEGA 分发链路多年未失效。引用结构上,本数据集同时被信号处理、深度学习与临床睡眠研究三个社区引用,其中 U-Sleep(npj Digital Medicine)、ANPHY-Sleep(Scientific Data)等高影响力后续工作均以其为对照基准,学术生命周期仍在活跃期。
活跃度的另一面是"维护集中度":官方渠道只有一个小型学术站点与 MEGA 链接,无 GitHub issue 区、无版本承诺——社区靠 EEGDash 镜像与第三方仓库自发维持易用性。这意味着任何基于该数据集的长期项目都应假设"官方链接可能失效",在项目内自建完整镜像与校验和(见 §6.10 MLOps 笔记)。
§8.7 生态快照
| 资源 | 类型 | 链接 | 状态(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| 官方主页与下载 | 数据分发 | http://sleeptight.isr.uc.pt/ | 在线 | 唯一权威来源 |
| 官方标注说明 | 文档 | http://dataset.isr.uc.pt/ISRUC_Sleep/Content.pdf | 在线 | 标注列缩写的权威解释 |
| NeMAR/EEGDash 镜像 | BIDS 数据镜像 | DOI 10.82901/nemar.nm000111 | 在线(v1.0.1) | 免转换直接读 EDF/BIDS |
| Sleep-Disorders-Datasets 知识库 | 社区文档 | https://github.com/Visper22/Sleep-Disorders-Datasets | 活跃 | 通道/人群速查表 |
| SOTA2 排行榜 | 基准追踪 | https://www.sota2.com/research/sota/sleep-stage-classification-on-isruc-sleep | 更新至 2024-04 | 方法对比快照 |
| AttnSleep 官方代码 | 模型实现 | https://github.com/OmarManzoor/AttnSleep | 社区维护 | 榜单头部方法可复现起点 |
| U-Time / U-Sleep 代码 | 模型实现 | https://github.com/perslev/U-Time | 社区维护 | 跨数据集鲁棒分期器 |
| EEG-Dataset-Visualization | 社区示例 | http://ghub.com/YifuYuan/EEG-Dataset-Visualization | 存档 | epoch 对齐问题的可视化记录 |
生态使用策略:以官方站为唯一权威源(引用与授权均指向它),以 EEGDash 为工程加速器(省掉格式转换),以社区仓库为知识补充(但任何数字须回官方或论文复核)。三层结构保证了"引用可溯源、工程可持续、知识不迷路"。
§9 相关资源与引用
§9.1 官方资源
- 官方主页(含资助信息与引用要求):http://sleeptight.isr.uc.pt/
- 数据下载页(三组 MEGA 链接):https://sleeptight.isr.uc.pt/?page_id=48
- 标注缩写说明 PDF:http://dataset.isr.uc.pt/ISRUC_Sleep/Content.pdf
- PubMed 摘要页:https://pubmed.ncbi.nlm.nih.gov/26589468/
- ScienceDirect 论文页:https://www.sciencedirect.com/science/article/pii/S0169260715002734
- EEGDash 数据卡(BIDS 镜像):https://eegdash.org/api/dataset/eegdash.dataset.NM000111.html
新手的推荐学习路径:先读官方主页与论文摘要(30 分钟建立全景),再跑 §6.0 的 EEGDash 快速启动(当天看到第一份 raw),然后读 §6.5 坑点 1/2/6(避开 80% 的读取问题),最后用 §6.4 代码在 SG3 上完成一次"训练-评估"闭环。全程不需要申请、不需要付费、不需要超过一张消费级 GPU。
§9.2 BibTeX 引用块
三条引用分别覆盖:数据集本体(必须)、官方分期方法(建议)、BIDS 镜像(使用镜像时必须)。多数期刊的 BibTeX 样式可直接消化以下条目;pages = {180--192} 中的双连字符是 BibTeX 的 en-dash 约定,请勿改写为单个连字符。
@article{Khalighi2016ISRUCSleep,
title = {ISRUC-Sleep: A comprehensive public dataset for sleep researchers},
author = {Khalighi, Sirvan and Sousa, Teresa and Santos, Jose Moutinho and Nunes, Urbano},
journal = {Computer Methods and Programs in Biomedicine},
volume = {124},
pages = {180--192},
year = {2016},
doi = {10.1016/j.cmpb.2015.10.013}
}
@article{Sousa2015TwoStep,
title = {A two-step automatic sleep stage classification method with dubious range detection},
author = {Sousa, Teresa and Cruz, Aniana and Khalighi, Sirvan and Pires, Gabriel and Nunes, Urbano},
journal = {Computers in Biology and Medicine},
volume = {59},
pages = {42--53},
year = {2015}
}
@dataset{NEMAR2024ISRUC,
title = {ISRUC-Sleep (BIDS conversion, NEMAR NM000111 v1.0.1)},
author = {Khalighi, Sirvan and Sousa, Teresa and Santos, Jose Moutinho and Nunes, Urbano},
doi = {10.82901/nemar.nm000111},
url = {https://eegdash.org/api/dataset/eegdash.dataset.NM000111.html}
}
§9.3 引用指南
使用本数据集的任何部分(信号、标注或受试者信息)都必须引用 Khalighi et al. 2016;使用 BIDS 镜像时建议同时引用上表第三条数据集引用;使用官方 SSM4S 基线思想时可加引 Sousa et al. 2015。论文方法节的推荐表述:“We used the ISRUC-Sleep dataset (Khalighi et al., 2016), comprising 118 subjects and 126 full-night PSG recordings scored independently by two sleep experts under AASM rules; we adopted the subgroup-1 cohort with a subject-independent 5-fold protocol.”
两项工程实践建议:其一,在代码仓库的数据卡(DATALICENSE/CITATION 文件)中固化上述引用要求,使 CI 在缺失引用文件时告警;其二,若同时使用了 NeMAR 镜像的转换产物(如 .edf 命名或 BIDS 事件表),在致谢中说明转换来源与版本(v1.0.1),方便读者复现完全一致的输入。
§9.4 获取与技术支持渠道
| 需求 | 渠道 |
|---|---|
| 数据与授权问题 | 官方下载页页脚联系方式( sleeptight.isr.uc.pt ) |
| MEGA 限速/链接失效 | 官方页面提示"稍后重试或联系作者获取替代访问" |
| BIDS 版技术问题 | EEGDash 项目文档与 issue 区 |
| 文献基线 | AttnSleep、U-Time 官方仓库 issue 区 |
§9.5 页面内容与数据版本的对应声明
本页全部事实对应 2026-09-09 检索快照与官方当前分发状态(三组 MEGA 包、NeMAR 镜像 v1.0.1)。由于官方未承诺版本化更新,若未来官方对亚组构成、标注格式或分发渠道做出变更,应以官方站新声明为准,并按入库管线流程触发本页复核;引用计数(约 460+,截至 2026-09)属持续增长量,引用时请回 Google Scholar 确认当时值。
§10 AI 使用声明卡
§10.1 本页使用的 AI 模型列表
| 模型 | 用途 | 版本/说明 |
|---|---|---|
| 大语言模型(CodeBuddy 内置 fast-model) | 初稿撰写、结构组织、代码示例生成 | 2026-09 版 |
| WebSearch 工具 | 事实检索与交叉验证 | 2026-09-09 检索快照 |
模型选型说明:撰写任务未使用任何具备联网训练或记忆能力的模型,检索结果以当次快照形式进入上下文;引用计数等"随时间变化的数字"均标注了截至日期,页面不承诺自动更新。
§10.2 AI 参与范围
AI 负责文献检索结果的结构化整理、初稿撰写与代码示例起草;所有数字(规模、采样率、通道、基准成绩、引用数)均要求有可回溯来源,AI 不得凭记忆填充无来源数字;最终内容由编辑部人工审核定稿。
划清三条边界:其一,医学编码(ICD-11/SNOMED CT)由 AI 起草映射表、人工逐码复核后才进入正文;其二,代码示例按"演示级"标准交付,能在标准 Python/MNE 环境运行,但不承诺在所有硬件/版本组合下零修改运行;其三,榜单数字以检索日快照为准(2024-04 的 SOTA2 快照与 2025 年 arXiv 结果),页面不承诺追踪后续更新,使用者引用时应回到原始来源确认最新值。
§10.3 输入来源列表
- Khalighi S, Sousa T, Santos JM, Nunes U. ISRUC-Sleep: A comprehensive public dataset for sleep researchers. Computer Methods and Programs in Biomedicine, 124:180–192, 2016. DOI: 10.1016/j.cmpb.2015.10.013
- PubMed 摘要页(PMID 26589468):https://pubmed.ncbi.nlm.nih.gov/26589468/
- 官方主页:http://sleeptight.isr.uc.pt/
- 官方下载页:https://sleeptight.isr.uc.pt/?page_id=48
- 官方标注说明:http://dataset.isr.uc.pt/ISRUC_Sleep/Content.pdf
- ScienceDirect 论文页:https://www.sciencedirect.com/science/article/pii/S0169260715002734
- EEGDash 数据卡(NEMAR NM000111):https://eegdash.org/api/dataset/eegdash.dataset.NM000111.html
- OpenAIRE 数据集记录(NeMAR v1.0.1):https://beta.explore.openaire.eu/search/dataset?pid=10.82901%2Fnemar.nm000111.v1.0.1
- Sleep-Disorders-Datasets 社区知识库:https://github.com/Visper22/Sleep-Disorders-Datasets
- MMASleepNet 论文(PMC9424881,含通道与 epoch 统计):https://pmc.ncbi.nlm.nih.gov/articles/PMC9424881
- SOTA2 排行榜(ISRUC-Sleep):https://www.sota2.com/research/sota/sleep-stage-classification-on-isruc-sleep
- SOTA2 排行榜(ISRUC BIDS 版协议):https://www.sota2.com/research/sota/sleep-stage-classification-on-isruc
- PSG-LLaVA 预印本(arXiv:2509.22810):https://ar5iv.labs.arxiv.org/html/2509.22810
- SSNet 论文预印本(arXiv:2307.05373):https://arxiv.org/pdf/2307.05373v1
- Sousa T et al. A two-step ASSC method with dubious range detection. Comput Biol Med, 59:42–53, 2015(ResearchGate 页):https://www.researchgate.net/publication/271538813
- Google Scholar 作者档案(引用计数):https://scholar.google.hr/citations?hl=en&user=o21xTXUAAAAJ
- Semantic Scholar 论文页(引用计数):https://www.semanticscholar.org/paper/a6648d1237fd10cb1e70136cabab0327cd862227
- UNL 论文 PDF(设备与滤波链细节):https://research.unl.pt/ws/portalfiles/portal/13025938/
- EEG-Dataset-Visualization 仓库(30 epoch 缺口实测):http://ghub.com/YifuYuan/EEG-Dataset-Visualization
- MDPI Biosensors 12(3):155(亚组 1 人群细节):https://www.mdpi.com/2079-6374/12/3/155
- 来源管理约定:一级来源(官方站、论文、PubMed/DOI)优先于二级来源(社区仓库、榜单聚合页);两者冲突时以一级来源为准并在正文注明差异,不静默取舍。
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、疾病描述) | 千方病案医学编辑部 | 对照 ICD-11/SNOMED 官方编码与文献逐项核对 | ✅ 已通过/已验证 |
| §3–§4 数据规格与数据字典 | 千方病案医学编辑部(数据工程) | 对照官方下载页、Content.pdf 与论文逐数字核对 | ✅ 已通过/已验证 |
| §5–§6 划分策略与代码 | 千方病案医学编辑部(数据工程) | 代码逻辑走查 + 坑点与社区证据交叉验证 | ✅ 已通过/已验证 |
| §7 DAIMS 与偏倚分析 | 千方病案医学编辑部 | 24 项逐项评估与评级复核 | ✅ 已通过/已验证 |
| §8 基准与生态 | 千方病案医学编辑部 | 榜单数字与引用逐条溯源 | ✅ 已通过/已验证 |
| §0 免责声明与合规表述 | 千方病案医学编辑部 | 对照官方许可声明核对 | ✅ 已通过/已验证 |
审核方法说明:医学编码逐条对照 ICD-11 浏览器与 SNOMED CT 官方术语服务;数据规格类数字以官方下载页与论文正文为一级来源、社区仓库为二级来源,两级不一致时以一级来源为准并在正文注明;基准数字逐条回溯到对应论文或榜单页面,禁止间接转引。
§10.5 AI 生成章节标注
本页各章节均由 AI 依据上列来源起草,经 §10.4 所列人工审核后发布;其中代码示例(§6.1–§6.4、§6.9)为 AI 依据官方文档与社区惯例编写,属"演示级"实现,生产使用前请按 §6.10 的 MLOps 建议验证。
需要特别说明的三处 AI 判断:其一,亚组 2 健康状态的表述差异(官方页面 vs 论文)由 AI 在交叉检索中发现并标注,正文以论文为准并保留差异说明;其二,标注编码 4 的语义(运动/无法判读)与 REM=5 的映射来自社区共识实现而非官方文档原文,使用时建议以 Content.pdf 自行复核;其三,DAIMS 24 项中的评级为编辑部结合本页证据给出的编辑判断,不是数据集官方立场。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)。
本页为 ISRUC-Sleep 数据集的 AI-Ready 百科首次发布版本,覆盖数据规格、医学背景、AI 工程实践与质量评估四个层面;后续如官方数据集发生重大变更(新增亚组、更换分发渠道、修订标注),将按管线流程更新本页并同步刷新审核日期。
页面状态:published(全部内容已完成审核并发布)
