信息速览
INFOBOX — Apnea-ECG 一屏速览
维度 内容 本质 70 条整夜单导联 ECG + 逐分钟人工专家呼吸暂停标注的公开筛查基准(非影像、非 PSG 全导联) 团队 Thomas Penzel(Philipps-Universität Marburg,数据贡献)+ Moody/Mark/Goldberger(Harvard-MIT,PhysioNet 平台组装)+ J. H. Peter(Marburg) 论文 Penzel 等. The Apnea-ECG Database. Computers in Cardiology 2000;27:255-258(doi:10.1109/CIC.2000.898505) 发布 2000-02-10 上线 PhysioNet;版本至今 1.0.0(单版本,25 年未修订) 数据 learning set 35(a01-a20/b01-b05/c01-c10)+ test set 35(x01-x35);100 Hz;16 bits/sample;整包 580.6 MB 分组 a 组(apnea,≥100 紊乱分钟)20 条|b 组(borderline,10-96 分钟)5 条|c 组(control,<5 分钟)10 条 标注 .apn 逐分钟 A/N 二分类——人类专家基于同步呼吸信号判定(非 ECG 推断);hypopnea 分钟计入 A 附加信号 仅 8 条(a01-a04、b01、c01-c03):胸/腹感应描记 + 鼻气流各 20 Hz + SpO2 1 Hz 赛事 PhysioNet/CinC Challenge 2000(首届 PhysioNet Challenge):Event 1 记录级筛查满分 30 + Event 2 逐分钟量化满分 17,268 赛果 Event 1 四队满分 30/30;Event 2 冠军 McNames 等(Portland State)15,994/17,268 = 92.62% 历史结论 首次系统证明"仅凭单导联 ECG 即可筛查睡眠呼吸暂停",逐分钟准确率 85-93% 与人类专家间一致度相当 许可 ODC-By 1.0(署名即可,无 share-alike——不是 ODbL);无注册门槛,AWS 镜像 --no-sign-request 可拉 库内互链 sleep-edf(73)、ptb-xl(70)、chb-mit-scalp-eeg(72)、cinc-2018-sleep(493)、hmc-sleep-staging(654)、dreamt(650)
Apnea-ECG 是一个"用一条心电线回答呼吸问题"的开创性数据集:它只装了单导联 ECG——没有呼吸传感器、没有脑电、没有完整多导睡眠图(PSG)——却带着人类专家逐分钟写好的"这一分钟有没有呼吸暂停"的答案。2000 年,PhysioNet 用它办了系列挑战赛的第一届(Computers in Cardiology Challenge 2000),让参赛算法仅凭 ECG 猜呼吸;比赛证明这件事能做到 85-93% 的逐分钟准确率,与人类专家之间的一致度相当。此后二十余年,这 70 条记录成了 ECG-based 睡眠呼吸暂停筛查研究的公共起点,从支持向量机一路考到 Transformer。
它的三重身份值得先立住:基准(35+35 的固定 split 是社区沿用二十年的标准协议)、赛事底座(首届 PhysioNet/Moody Challenge 的比赛数据)、教学样本(不足 1 GB、纯 WFDB 标准格式、CPU 即可复现全流程)。同时它也是"文档会撒谎、文件不会"的活案例——官页标注说明至今停留在 Challenge 期间的保密规则,而文件列表里 test set 的 35 个标注文件早已全部公开(坑 3)。
时间线速览:
- 2000-02-10:数据库随 PhysioNet 上线,learning set 35 条标注全公开;
- 2000-02 ~ 2000-09:Challenge 2000 在线举行,双事件计分,多次提交取最优;
- 2000-09-24~27:CinC 2000 会议(Cambridge, MA)收官,四队满分 + 92.62% 冠军线写入会议论文集;
- 赛后:x 系列标注并入 1.0.0 公开(官页说明文字未同步更新,坑 3);
- 2013-04:用户 Chiu-wen Wu 报告 c05/c06 同源,官页存照(坑 5);
- 2019-02-20:补加 SHA256SUMS.txt 校验和;
- 2026(抓取时点):版本仍为 1.0.0,二十六年单版本,字节级稳定。
导语读法三则:
- 只想下数据:直奔 §6 获取与许可——ODC-By 1.0 无门槛,网页 ZIP / wget / AWS 三通道任选;注意别把 ODC-By 写成 ODbL(坑 4)。
- 关心基准成绩:直奔 §4 Challenge 2000 双任务设计 + §5 现代深度学习基准——92.62% 的 2000 年冠军线与 95.0% 的 2025 年 SpiTranNet 线可以直接对标。
- 准备发论文:先读 §3 标注体系(hypopnea 计入 A、无纯中枢性事件)与 §10 避坑清单(c05/c06 同源、.qrs 未审计、70 不是 100),再决定实验设计。
§0 导读:这个数据集解决什么问题
睡眠呼吸暂停(sleep apnea)的确诊金标准是多导睡眠图(PSG):一整夜贴十几路传感器——脑电、眼电、肌电、呼吸气流、胸腹运动、血氧、心电——由人工按规则逐分钟判读呼吸暂停低通气指数(AHI)。这套流程贵、吵、等床周期长,于是从 1980 年代起就有人问:能不能只用心电这一路信号做初筛? 生理学依据是真实存在的:呼吸暂停发生时,胸腔内压力剧烈波动会调制 R-R 间期(心率变异性的呼吸性窦性心律不齐成分),QRS 形态也会随电极-心脏几何关系变化——这些痕迹理论上写在 ECG 里,问题是没有公开数据集能把"猜 ECG 里的呼吸"变成可评测的题目。
Apnea-ECG 的回答分三层。第一层是数据:Thomas Penzel(马尔堡)提供了 70 名受试者经完整 PSG 检查的整夜单导联 ECG,附带 PSG 呼吸通道的人工逐分钟判读结果——注意这个标注方向:专家是看着呼吸信号标的,不是看 ECG 标的,因此标注独立于 ECG 本身,不构成循环论证。第二层是赛事:2000 年 2 月数据上线 PhysioNet,同年 2-9 月 Challenge 2000 在线进行,双任务设计(记录级三分类筛查 + 逐分钟量化计分)让"ECG 能不能筛呼吸暂停"第一次有了可比的数字。第三层是遗产:35 条 learning set(带标注)+ 35 条 test set(赛时保密)的划分成为此后所有论文的默认协议;test set 标注赛后公开,基准永远可复现。
一个自然的问题是:2026 年了,为什么还值得用 2000 年的数据? 答案有三层。其一,协议资产:35/35 固定 split 与 92.62% 冠军线构成二十余年的历史坐标系,任何新方法都能立刻定位自己——这是任何新数据集都给不了的纵深。其二,生理学恒定:呼吸暂停在 ECG 上的痕迹(RSA 调制、事件串纹理)不随年月改变,2000 年的信号与 2026 年可穿戴设备采集的信号在生理层是同一道题。其三,规模缺口仍在:整夜单导联+分钟级呼吸真值的公开数据至今仍以本库与 UCDDB 为主力,"更大的替代品"并不存在——本库小,但它的生态位还没有被填满。
§0 读法三则:
- 这个条目是"数据集+赛事底座+基准协议"三合一:本体是 70 条 WFDB 记录,赛事是首届 PhysioNet Challenge,遗产是 35/35 固定 split——三者对应三节:§2-§3 数据与标注、§4 赛事、§5 现代基准。
- 全文硬数字均出自 PhysioNet 官页、Challenge 2000 官方总结论文与第三方学术文献的三源互证;四处双口径(16-bit 存储 vs 12-bit 有效分辨率、官页标注文字 vs 文件实况、580.6 vs 583 MB、Phillips vs Philipps 拼写)在 §10 避坑清单与文末事实清单中全部存照。
- 流传甚广的"约 100 条记录(35 带标注 + 35 未标注)"是 Challenge 期间旧状态与误算的混合物——1.0.0 现状是 70 条记录、70 份标注全公开(坑 1、坑 3)。
库内睡眠/生理信号条目的三分钟定位:
| 你的问题 | 该看的条目 | 与本库的关系 |
|---|---|---|
| 睡眠分期(30 秒分期、多导联) | sleep-edf(73) | 同代经典,粒度不同 |
| 大规模睡眠分期 | cinc-2018-sleep(493)、hmc-sleep-staging(654) | 任务放大版 |
| 多模态睡眠(IMU+ECG+事件级) | dreamt(650) | 事件级标注的现代补全 |
| 心律失常分类(12 导联静态) | ptb-xl(70) | ECG 谱系另一端 |
| 癫痫检测(EEG) | chb-mit-scalp-eeg(72) | PhysioNet 另一疾病域 |
| 大人群 AHI/事件级 | shhs、mesa-sleep、mros-sleep | 事件级与人群外推 |
本库在地图上的坐标:任务最小化(单导联)、粒度中庸(分钟)、协议最硬(35/35 + 官方榜单)。
临床语境的分级用词在本条目里需要保持一致:**筛查(screening)**指低成本的初步风险分层(本库 Event 1 对应的能力);**诊断(diagnosis)**指 PSG 确诊——本库训练的模型永远够不到这一级,文献里"ECG-based diagnosis of sleep apnea"的措辞本身就是越界;**监测(monitoring)**指已确诊或高风险人群的居家连续跟踪(Event 2 对应的能力)。三个词用错一级,临床结论就会越权一级——这也是读二手报道时最常见的滑坡点。
§1 数据集速览:十二问十二答
Q1:Apnea-ECG 里到底有多少条记录?
70 条,不是 100 条。learning set 35 条(a01-a20、b01-b05、c01-c10)+ test set 35 条(x01-x35)。"约 100 条"的说法要么把两条系列文件数混入记录数,要么沿用 Challenge 期间"35 带标注"旧口径的误传——1.0.0 的文件列表可逐一核对(坑 1)。
Q2:信号规格是什么?
每条记录一路 ECG,采样率 100 Hz,16 bits/sample(little-endian),标称增益 200 A/D units/mV,WFDB 标准格式(.dat 数据 + .hea 头文件)。时长稍短于 7 小时到近 10 小时(第三方整理口径 401-578 分钟/条)。8 条记录(a01-a04、b01、c01-c03)另有胸/腹感应容积描记与鼻气流三路呼吸信号(各 20 Hz)和 SpO2(1 Hz)。
Q3:标注怎么做的?
人类专家在整夜 PSG 的语境下,依据同步记录的呼吸信号(气流、胸腹运动、血氧)逐分钟判定,写进 .apn 文件:A = 该分钟存在呼吸暂停,N = 正常。判定对象是阻塞型或混合型事件——数据库不含纯中枢性呼吸暂停与 Cheyne-Stokes 呼吸;低通气(hypopnea)分钟也计入 A。
Q4:a/b/c 三组是什么意思?
learning set 按整夜呼吸紊乱分钟数分层:a 组 20 条(≥100 分钟,典型患者)、b 组 5 条(10-96 分钟,边界样本)、c 组 10 条(<5 分钟,对照)。这个分层直接进了 Challenge 计分规则——b 组边界样本单列,正是筛查任务最容易翻车的地方。
Q5:test set 的 x 系列标注现在能拿到吗?
能。Challenge 期间(2000 年 2-9 月)x 系列标注保密作为赛题答案;赛后随 1.0.0 版本公开。2026-09-27 对 PhysioNet 文件列表实抓确认:x01.apn 到 x35.apn 全部 35 个文件存在且可下载。官页文字说明未更新、仍写着"仅 learning set 有标注",以文件实况为准(坑 3)。
Q6:Challenge 2000 考了什么?
双任务。Event 1(Apnea Screening):只看 ECG 对 test set 35 条按 A/B/C 三类分组,其中 A 类 20 条+C 类 10 条正式计分(满分 30),四队满分;Event 2(Apnea Quantification):对 test set 逐分钟标注 A/N,按正确分钟数计分(满分 17,268),冠军 McNames 等(Portland State)15,994 分 = 92.62%。
Q7:仅凭 ECG 筛查靠谱吗——数据集给出了什么结论?
官方结论:记录级筛查准确率 90-100%,逐分钟量化 85-93%,与人类专家对完整 PSG 评分的一致度(约 90%)相当。这是"单导联 ECG 可用于睡眠呼吸暂停筛查"的首次系统证明——注意是筛查/初筛,不是诊断替代。
Q8:后来的人用深度学习考到多少?
沿用 35/35 协议的代表性成绩(逐分钟 acc):1D-CNN 87.9%、FASSNet 87.09%(轻量可穿戴向)、CNN-BiGRU 时空模型 91.22%、SpiTranNet(SNN+Transformer 混合)95.0%;逐记录级分类普遍 97-100%。也就是说二十五年的深度学习把逐分钟线从 92.62% 推到约 95%,但这个基准的"简单部分"早已被吃干净(§5.3)。
Q9:许可是什么?商用行不行?
数据文件按 ODC-By 1.0(Open Data Commons Attribution License v1.0)发布:署名即可自由使用、修改、再分发,含商用——没有 ODbL 的 share-alike 条款,也没有 NC 限制。引用义务是双重的:Penzel 2000 论文 + PhysioNet 标准引用(Goldberger 2000)。
Q10:它对 AI-Ready 的意义是什么?
它是"可获取性天花板"级别的样本:公开直链、无注册、无申请、ODC-By 明确、WFDB 格式有成熟的 Python 生态(wfdb、torch_ecg、NeuroKit2 原生支持)、不足 1 GB CPU 可跑、25 年单版本无漂移。失分点几乎全在元数据层:官页文字过时、机构拼写笔误、位数双口径——文档质量拖了数据质量的后腿(§6.5)。
Q11:数据质量有什么已知问题?
两处官页明示:① c05/c06 来自同一原始记录(受试者级去重,坑 5);② .qrs 逐搏标注为 sqrs125 机器生成、未审计、含错误(坑 6)。逐分钟 .apn 真值无已知问题报告。对使用者的含义:分钟级任务放心用,逐搏级任务先处理 QRS,受试者级划分先绑 c05/c06。
Q12:和库内其他睡眠库怎么选?
入门/单导联筛查/可穿戴原型 → 本库;30 秒睡眠分期 → sleep-edf(73) 或 cinc-2018-sleep(493);多模态+事件级 → dreamt(650);大人群 AHI 研究 → shhs/mesa-sleep。本库的不可替代项:单导联最小化协议 + 二十余年可对照的历史成绩(§9.3 有完整的粒度转换对照)。
全篇结构导航(十一章 + FAQ + 附录的路线图):
| 章节 | 一句话内容 | 优先读者 |
|---|---|---|
| §2 | 数据构成与规格:记录/信号/分组/文件/生理学/算力 | 所有人 |
| §3 | 标注体系:谁标的、怎么标、边界在哪、分布画像 | 建模者 |
| §4 | Challenge 2000:双任务设计、两榜成绩、方法流派 | 关心历史成绩者 |
| §5 | 现代基准:二十五年成绩曲线、口径陷阱、复现清单 | 方法论文作者 |
| §6 | 获取与许可:四通道、ODC-By 辨析、引用格式、AI-Ready | 工程与法务视角 |
| §7-§8 | 生态影响与方法学启示 | 综述与教学者 |
| §9 | 库内关系与跨任务迁移路径 | 跨库实验设计者 |
| §10 | 避坑清单八则 | 所有人(开工前必读) |
| §11 | 总结与决策卡 | 时间紧张者 |
| FAQ/附录 | 62 问 + 事实清单 + 术语表 + 8 个附录 | 按需查阅 |
§2 数据构成与规格
2.1 规模与分组:70 条记录的完整名录
Apnea-ECG 1.0.0 的记录清单固定为 70 条,任何文献里出现的其他数字(100、105、86……)都值得先怀疑(坑 1):
| 子集 | 记录 ID | 条数 | 分组依据(整夜呼吸紊乱分钟数) | 角色 |
|---|---|---|---|---|
| learning set · a 组 | a01-a20 | 20 | ≥100 分钟(典型呼吸暂停患者) | 开发/调参(Event 1 在 test set 上预测同构三类) |
| learning set · b 组 | b01-b05 | 5 | 10-96 分钟(边界样本) | 训练/调参 + Event 1 非正式计分 |
| learning set · c 组 | c01-c10 | 10 | <5 分钟(健康对照) | 开发/调参(Event 1 在 test set 上预测同构三类) |
| test set | x01-x35 | 35 | 未按 a/b/c 分组公开 | 赛时保密、赛后公开标注 |
| 合计 | — | 70 | — | — |
三处结构细节:
- a/b/c 分层只对 learning set 定义。test set 的 x 系列从未公布分组归属——这也合理:公布"x07 属于 a 组"等于泄露一道赛题的答案。赛后做全量分析的研究者通常用 AHI 或紊乱分钟数自行对 x 系列再分层。
- b 组是刻意保留的"最难档"。边界受试者(一晚 10-96 分钟紊乱)在临床上恰恰是筛查最需要抓又最容易漏的人群,Challenge 把它们单列计分,等于把"筛查的临床价值"直接写进了比赛规则。
- 每条记录一名受试者——除了 c05/c06。2013 年 4 月外部用户 Chiu-wen Wu 向 PhysioNet 报告:c05 与 c06 来自同一原始记录(c05 比 c06 晚 80 秒开始,c06 疑为 c05 的修正版)。这意味着名义 70 条、实际受试者 ≤69。做受试者级(subject-wise)数据划分时,c05/c06 必须绑在同一侧,否则产生患者级泄漏(坑 5)。
2.2 信号规格
| 属性 | 规格 | 备注 |
|---|---|---|
| 导联数 | 1(单导联 ECG) | 全库统一;具体导联位置未在官页逐条披露 |
| 采样率 | 100 Hz | ECG 通道;附加呼吸/SpO2 通道见 2.4 |
| 存储位数 | 16 bits/sample(little-endian) | 官页口径;Challenge 论文另提"12-bit resolution"——存储容器 16-bit、有效 A/D 分辨率 12-bit 的双口径见坑 2 |
| 增益标称 | 200 A/D units/mV | .hea 头文件逐条给出 |
| 时长 | 稍短于 7 小时至近 10 小时/条 | 第三方整理口径 401-578 分钟/条 |
| 格式 | WFDB(.dat + .hea) | PhysioNet 原生格式,wfdb-python/R/wave 一键读 |
| 整包大小 | 580.6 MB(1.0.0 官页) | archive 旧页口径 583 MB,差异约 0.4% 存照于事实清单第 29 条 |
| 版本 | 1.0.0(2000-02-10) | 25 年单版本无修订;2019-02-20 补加 SHA256SUMS.txt 属文件级补加 |
100 Hz 对今天的深度学习来说是"低配":现代可穿戴 ECG 常见 250-512 Hz,PSG 机 ECG 通道多为 500 Hz。但对 R-R 间期分析(呼吸性窦性心律不齐、QRS 形态抖动)而言,100 Hz 意味着每个心搏约 8-10 个采样点落在 QRS 上——这解释了为什么 2000 年的冠军方案(McNames 等)大量依赖心搏级统计特征而非原始波形细节,也解释了为什么后来基于原始波形的深度模型在逐分钟线上的收益递减(§5.3)。
2.3 WFDB 文件族:每个文件类型是什么
Apnea-ECG 是学习 PhysioNet/WFDB 生态的理想教材——文件类型少而齐全:
| 文件 | 内容 | 生成方式 | 可信度 |
|---|---|---|---|
<rec>.dat |
ECG 波形二进制(16-bit little-endian) | 采集设备原始输出 | 数据本体 |
<rec>.hea |
WFDB 头文件(采样率、增益、信号名、时长) | 平台生成 | 元数据 |
<rec>.apn |
逐分钟呼吸暂停标注(A/N) | 人类专家基于呼吸信号判定 | 参考真值(task label) |
<rec>.qrs |
逐搏心搏位置标注 | sqrs125 算法自动生成 | 未审计、含错误,仅作参考 |
<rec>.xws |
WAVE 可视化引用文件 | 平台生成 | 在线查看入口 |
RECORDS / RECORDS-a 等 |
记录清单索引 | 平台生成 | 目录导航 |
additional-information.txt |
逐条记录时长、non-apnea/apnea 分钟数、hours with apnea、AI/HI/AHI、年龄、性别、身高、体重、BMI | Marburg 团队(Penzel)提供 | 人口学与负荷参考 |
SHA256SUMS.txt |
全部文件校验和 | 2019-02-20 补加 | 完整性验证 |
<rec>.apn 的实际内容极简——每行一个字符加时间戳,一分钟一个判定。用文本方式看开头几行:
00:00:00 N
00:01:00 N
00:02:00 A
00:03:00 A
00:04:00 A
00:05:00 N
这段示意读法:前两分钟正常,第 2-4 分钟连续呼吸暂停,第 5 分钟恢复。真实文件由 WFDB 工具链按 annotation 文件解析(wfdb-python 的 rdann 指定 ann_ext='apn'),逐分钟标签天然对齐到整分钟网格——这决定了所有按本库评测的模型都必须输出分钟级预测,而不是事件级时间戳(§3.6)。
一条 578 分钟记录的 .apn 文件只有约 3.8 KB——每分钟一个字符(N/A)加时间戳,578 条标注不到 4 KB。信号与真值的体量比接近 1500:1:这是"重信号、轻标注"的极端组合,也解释了为什么这个库的一切工程瓶颈都在信号处理侧而标注加载近乎免费。
2.4 附加信号:8 条记录的四路额外通道与 r/er 文件组
learning set 中的 8 条记录(a01-a04、b01、c01-c03)在 ECG 之外还带着呼吸与血氧通道。这 8 条记录的文件比其他 62 条多出两组,命名带 r/er 后缀(以 a01 为例,2026-09-27 文件列表实抓):
| 文件组 | 内容 | 说明 |
|---|---|---|
a01.dat/.hea/.apn/.qrs |
标准组:单导联 ECG + 标注 | 与其他 62 条记录同构 |
a01r.dat/.hea/.apn |
附加信号组:Resp C / Resp A / Resp N / SpO2 四通道(无 .qrs) | r = respiration,只装呼吸/血氧信号 |
a01er.hea/.apn/.qrs |
并阅组(无独立 .dat):头文件把 a01.dat(ECG)与 a01r.dat(四通道)合成一条 5 通道记录 |
er = ECG + respiration 并阅版,标注与标准组内容一致 |
附加通道的构成(a01r.hea 头文件实抓证实):
| 通道 | 传感器 | 采样率(官方口径) | 语义 |
|---|---|---|---|
| Resp C | 胸带感应容积描记(inductive plethysmography) | 20 Hz | 胸廓呼吸运动 |
| Resp A | 腹带感应容积描记 | 20 Hz | 腹部呼吸运动 |
| Resp N | 鼻热敏/鼻气流 | 20 Hz | 气流(呼吸暂停判定的直接依据之一) |
| SpO2 | 脉搏血氧 | 1 Hz | 血氧饱和度 |
设计意图一眼即明:给参赛者一个"窥看答案依据"的窗口。专家标注是看着呼吸信号做的;8 条带附加信号的记录让参赛者能对照"呼吸信号长什么样"与"专家在哪一分钟打了 A",从而理解任务本质。但只给 8 条、且全在 learning set——test set 一条附加信号都没有——比赛考的仍然是"从 ECG 推呼吸",不是"从呼吸判呼吸"。
一处口径细节:Challenge 论文将附加呼吸信号概括为"three respiration signals each 20 Hz",physiobank 页面则未逐一给出呼吸通道采样率(SpO2 的 1 Hz 有明示);头文件的帧率结构与官页文字并非一一对应。本条目按 20 Hz/1 Hz 官方口径撰写;精确复核请直接读 a01r.hea——头文件就在包里,读它比考据文献更快。使用提示:别把 a01r.apn 当独立第二套真值(与 a01.apn 内容同源),也别直接把 a01r.dat 当 ECG 读(里面没有心电通道)。
2.5 受试者画像:additional-information.txt 里的数字范围
additional-information.txt 逐条给出每条记录的负荷与人口学参数(表头实测:Record / Length / non-apn / apnea / hours w-apnea / AI / HI / AHI / Age / Sex / height / weight),由 Penzel 提供:
| 维度 | 范围 | 说明 |
|---|---|---|
| Length(分钟数) | 401-578 分钟/条 | 逐条给出;也是 Event 2 分母 17,268 的逐条来源 |
| non-apnea / apnea 分钟数 | 逐条给出 | 与 .apn 标注同源;hypopnea 分钟计入 apnea 列(官方口径原文) |
| hours with apnea | 逐条给出 | 按 60 分钟窗统计含 ≥5 个 A 分钟的小时数(1-4 个 A 分钟的小时不计) |
| AI / HI / AHI | 逐条给出 | AI=A 事件数/小时、HI=低通气事件数/小时、AHI=AI+HI(PSG 判读口径) |
| 年龄 | 27-63 岁 | 中年主导,无儿科样本 |
| 性别(Sex) | 逐条给出 | 男女均有(OSA 人群的典型构成) |
| 身高/体重 | 逐条给出;体重 53-135 kg | 跨度极大,反映 OSA 与肥胖的强关联 |
| BMI | 20.3-42.1 | 覆盖正常体重到重度肥胖(III 级肥胖阈值 40) |
三处使用提醒:
- 披露是有边界的。性别、身高确实逐条在列(常被误以为只有年龄段);但种族、合并症、用药、吸烟等临床上下文未披露,睡眠分期(哪段是 REM/深睡)也不在表内——亚组公平性分析只能做到性别与年龄段,人种差异与共病混杂研究无从做起。
- 人口学范围窄。27-63 岁、无儿科、老年上限 63——把本库模型直接推向老年(AHI 分布与睡眠结构完全不同)或儿科人群,外推风险自负。
- AHI 数值是 PSG 语境的。文件里的 AI/HI/AHI 由 Marburg 团队按 PSG 判读得出,与 .apn 的逐分钟 A 标注同源但口径不同(AHI 按小时折算、事件计数;.apn 按分钟归并)——用 AHI 做分层时不要假设"AHI>30 等于整夜 ≥30 分钟 A"。
人群边界的临床解读:27-63 岁、BMI 20.3-42.1 的构成大致对应"睡眠门诊的典型转诊人群"——这使本库对"门诊筛查"场景的模拟度很好;但反过来,它对三个方向的外推都缺数据支撑:老年(>65)人群的 ECG 形态与心律失常共病、儿童与青少年(扁桃体肥大型 OSA 的主人群)、以及无症状一般人群(筛查场景的真实基线中 OSA 患病率与门诊人群完全不同)。写论文时把"人群"一句话说清(“middle-aged suspected-OSA cohort”),是避免外推质疑最省事的预防针。
2.6 与同期 ECG 库的规格对照
把 Apnea-ECG 放进 2000 年前后的 PhysioBank 早期经典库里看规格定位:
| 数据库 | 导联 | 采样率 | 规模 | 任务属性 |
|---|---|---|---|---|
| MIT-BIH Arrhythmia Database | 2 | 360 Hz | 48 条 30 分钟 | 心律失常逐搏标注 |
| Apnea-ECG | 1 | 100 Hz | 70 条整夜(401-578 min) | 呼吸暂停逐分钟标注 |
| QT Database | 多导联组合 | 250 Hz | 105 条 15 分钟片段 | QT 间期逐搏标注 |
| PTB Diagnostic ECG Database | 15 | 1000 Hz | 549 条短记录 | 心肌梗死诊断 |
规律很清楚:Apnea-ECG 是这一批库里**采样率最低、单条时长最长、标注粒度最粗(分钟级 vs 逐搏级)**的一个——因为它服务的问题(整夜呼吸事件筛查)与心电形态学问题(逐搏诊断)对信号的需求完全不同。这也预告了它的社区用法:没人拿它做 QRS 检测研究(有专门的库和更高质量的逐搏标注),它自始至终是"分钟级标签 × 整夜信号"的时序分类基准。
信号质量的一般印象:本库无官方逐条信号质量分级,但二十余年文献反复引用的事实是:整夜单导联中常见的伪影类型(体动、电极脱落、心律失常干扰)在部分记录中存在,方法设计应包含"低质量分钟"的鲁棒策略(跳过、插补或降权)。文献里未见系统性的逐分钟信号质量标注发布——这既是使用上的自由(不会被质量预筛引导),也是责任(质量把控逻辑要自建)。与 shhs 等提供质量旗标的大库相比,这是一处显式差异。
2.7 信号生理学:ECG 如何"看见"呼吸暂停
理解这个库为什么成立,需要先理解呼吸暂停在 ECG 上留下的痕迹——它们是二十余年方法演进共同依赖的生理学基础:
- RR 间期的呼吸性调制(RSA 的存在与消失):正常人吸气时心率轻度加快、呼气时减慢(呼吸性窦性心律不齐,respiratory sinus arrhythmia, RSA),RR 间期序列因此携带与呼吸同频的振荡。呼吸暂停发生时这一节律被打破:事件期间迷走张力变化使心率呈现"先抑后扬"的特征性轨迹(事件中心率下降、事件结束时因微觉醒与代偿性过度通气反跳上升)。逐分钟 RR 间期序列的时域统计与频谱结构因此成为判别 A/N 的第一信息源——Challenge 2000 大多数顶尖方法的公开概要都以心搏级统计特征为核心。
- QRS 形态与电轴向的呼吸相关微变:呼吸运动改变心脏与电极的相对几何关系,QRS 波群的幅度与形态随呼吸周期发生微小变化;呼吸暂停期间胸腹运动停止,这种微变的"节奏"随之消失或畸变。这是一条与 HRV 互补的独立信息通道,也是 ECG-derived respiration(EDR,从 ECG 反推呼吸波形)技术的物理基础。
- 事件边界的心率突变:事件的开始与结束(微觉醒、代偿通气)在心率曲线上造成较陡峭的升降。整夜心率曲线因此呈现"慢波起伏"的独特纹理,逐分钟统计量(均值、方差、极差、斜率)可以低成本捕获。
100 Hz 采样对这三条通道的充分性论证:RR 间期精度受采样率限制(100 Hz 下量化步长 10 ms),但对逐分钟聚合统计量而言误差在聚合中大幅抵消;形态学通道对采样率更敏感,这也部分解释了为什么心搏级统计特征方法在本库长期占优、而纯形态学方法收益有限。理解这一点,就理解了"100 Hz 单导联 + 分钟真值"这个协议组合为何在 2000 年的技术条件下被设计出来,且至今未被推翻。
反过来,生理学基础也划定了任务的物理下限:呼吸暂停对 ECG 的影响是间接的(经自主神经与机械运动两条通路传导),部分分钟级事件在 ECG 上可能无可检出的痕迹——真值通道(呼吸信号)与输入通道(ECG)之间存在客观的信息缺口。92.62% 之后每 1 个百分点的提升都异常艰难,以及"人类专家一致度约 90%"这个对照基准的深层含义,都藏在这个缺口里:任何模型的准确率天花板由缺口决定,而不是由算力决定。
2.8 体量与算力画像
把"跑这个库需要什么资源"算成账:
| 层面 | 数值 | 说明 |
|---|---|---|
| 单条 ECG 样本数 | 100 Hz × 7-10 小时 ≈ 250-360 万样本 | 16-bit 存储 ≈ 5-7.2 MB/条 |
| 单条分钟数 | 约 401-578 个标注点 | .apn 每分钟一条 |
| 全库 ECG 原始数据 | 70 条 ≈ 400-500 MB 信号本体 | 整包 580.6 MB 含标注/头文件/呼吸附加信号 |
| 全库标注分钟总数 | ≈ 2.9-3.4 万分钟(learning 35 约 1.5 万 + test 35 约 1.7 万) | Event 2 口径的 test set 侧为 17,268 |
| 训练一个经典特征基线 | CPU 几分钟 | RR 提取+统计+线性分类器 |
| 训练一个深度基线 | 单 GPU 数小时 | 逐分钟切片后样本量数万级 |
这个画像的含义:它是库内生理信号条目里"跑一次全流程"成本最低的之一——没有任何其他整夜生理信号库能在 1 GB 以内完成从原始信号到发表级评估的全链路。教学场景里"一节课下数据、一节课跑通 baseline"的承诺只有本库兑现得起。
§3 标注体系:逐分钟 A/N 的来龙去脉
3.1 标注协议:谁标的、看什么标的
Apnea-ECG 标注体系最重要的属性只有一句话:人类专家在整夜 PSG 语境下,依据同步呼吸信号逐分钟判定。拆开三个成分:
- 人类专家——不是算法产物。整库唯一的算法生成标注是 .qrs(sqrs125 心搏检测),任务标注 .apn 全部出自专家判读。
- 依据呼吸信号——专家看的是气流、胸腹运动带、血氧这些 PSG 通道,不是 ECG。这保证标注与 ECG 独立:模型从 ECG 猜呼吸暂停,不是"从 ECG 猜 ECG 里印好的答案"。这也让本库成为 ECG-derived respiration(EDR)研究的天然干净基准。
- 逐分钟判定——标签对齐整分钟网格。一分钟内只要出现呼吸暂停事件(按 3.2 的定义),该分钟记 A。
标注的"独立性"与"粗粒度"是一体两面:独立使它可信,粗粒度使它可用但损失信息(§3.6)。
3.2 事件定义:哪些呼吸事件会进入标签
官页与 Challenge 论文给出的判定边界:
| 判定规则 | 内容 | 对使用者的影响 |
|---|---|---|
| 事件类型 | 仅阻塞型与混合型呼吸暂停 | 数据库不含纯中枢性呼吸暂停与 Cheyne-Stokes 呼吸——中枢性事件研究别用本库 |
| 低通气(hypopnea) | 含低通气的分钟一并记 A | 标签实际是"呼吸紊乱分钟"而非严格意义的"呼吸暂停分钟";定义口径:呼吸气流间歇下降超 50% + SpO2 下降 ≥4% + 随后代偿性过度通气 |
| 分钟归并 | 事件跨分钟时各记各的 | 与临床 AHI 的事件计数口径不同,AHI 与 A 分钟数不能互相换算 |
| 判读语境 | 整夜 PSG 全通道 | 专家可参考睡眠分期、体位等上下文——单导联模型拿不到这些 |
“hypopnea 计入 A"是最容易被忽视的一条:很多论文复现时把任务名写成"apnea detection”,但标签的真实语义更接近"respiratory disturbance detection"。这不是缺陷而是设计选择——筛查场景里"该叫醒去看医生吗"不区分暂停与低通气;但它直接影响与 UCDDB 等库的可比性(UCDDB 标注含中枢性事件,两库分数天然不可直接互比,§5.3)。
3.3 .apn 在标注生态里的位置
WFDB 的 annotation 文件体系里,.apn 属于自定义扩展名标注(ann_ext)。生态支持现状:
- wfdb-python:
wfdb.rdann(record, 'apn')直接读出逐分钟标签与时间戳;wfdb.wrann可写回。 - torch_ecg:内置
ApneaECG数据Reader类(deeppsp 等模型管线直接挂载),处理 35/35 split 协议。 - NeuroKit2:信号处理与生理特征提取管线原生兼容 WFDB 输入。
- WAVE(PhysioNet 在线查看器):.xws 文件把波形与标注叠加渲染,浏览器里逐分钟目检。
- LightWAVE / PhysioNet 网页:不用装任何软件,官页点开即可看 ECG + apn 标注对齐显示。
实际工程里最常见的读取组合是 wfdb-python 读信号 + rdann 读标签 + pandas 落表,十分钟内可以搭出"逐分钟特征提取→二分类"的 baseline 全流程——这正是它作为教学基准的含金量。
放在 WFDB 注释生态里看,.apn 属于"逐分钟低频注释"类型,与本库并存的另一类是逐搏注释(.qrs 用 sqrs125、其他库的人工逐搏标注用 .atr 等)——wfdb 库统一用 rdann("记录名", "标注器名") 接口读取,标注器名即文件扩展名(“apn”/“qrs”/“atr”)。这个统一接口意味着:给本库写的数据管线稍加改造即可消费任何 PhysioBank 库的同构数据——WFDB 生态的网络效应就是从这个细节里长出来的。
3.4 .qrs 存照:机器生成的逐搏标注
.qrs 文件由 sqrs125(PhysioToolkit 的 QRS 检测算法)自动生成,官页明示:未经人工审计、含错误(errors have not been corrected),仅作参考。使用立场:
- 可以用:作为 R 波位置的粗定位起点、EDR 特征提取的心搏对齐参考、逐搏统计特征的骨架。
- 不要用:心律失常检测的训练标签(有 MIT-BIH 的专家逐搏标注库)、对定位精度敏感的任务(QT 间期等)、任何把 .qrs 当真值报告精度的场合。
一个务实的做法:自己跑一遍现代 QRS 检测(如 NeuroKit2 或 gqrs),与 .qrs 交叉比对——两法不一致的搏动即高错误风险区。这不是本库独有的问题,是"算法生成标注"的通用纪律;本库只是把"含错误"写在官页上,比很多默认沉默的库诚实。
3.5 附加信号的标注价值:EDR 研究的对照组
8 条带呼吸/SpO2 通道的记录,除帮助 2000 年的参赛者理解任务外,今天还有第二重价值:EDR(ECG-Derived Respiration)方法的天然对照组。研究者可以:
- 用算法从 ECG 推导呼吸波形(EDR);
- 与真实呼吸通道(Resp C/A/N)逐分钟比对,量化 EDR 质量;
- 再把 EDR 特征喂给呼吸暂停分类器,对照 .apn 标注看端到端损失在哪一环。
这种"信号重建质量"与"任务性能"解耦分析的设计,至今仍是 EDR 论文的标准动作——而它需要的数据条件(ECG + 真实呼吸 + 逐分钟任务标签三合一)恰好是这 8 条记录独有的。
3.6 标注的先天边界:分钟粒度买到了什么、丢了什么
逐分钟二分类是一个刻意的选择,收益与代价都极端:
买到的:标注成本可控(70 条整夜、逐分钟、跨 25 年依然全库一致);评测协议简单无歧义(对齐分钟网格数对错);与临床初筛的决策粒度匹配(“今晚要不要转诊 PSG”)。跨标注者一致性也因此天然规避了事件起止点争议——分钟归并吸收了"事件从 23:47:20 还是 23:47:35 开始"这类无临床意义的分歧。
丢掉的:无事件起止时间戳(做不了事件级检测/定位研究);无事件分型(阻塞 vs 混合未区分,且不含中枢性);无严重度分级(A 分钟不区分一次短暂低通气与长时间呼吸暂停);无睡眠分期(深睡/REM 中的呼吸暂停临床含义不同,本库无 EEG 无法标);分钟归并抹掉了分钟内时序细节(一分钟前 10 秒暂停与后 50 秒暂停同标签)。
后续研究用两条路绕这些边界:一是换库(mesa-sleep、shhs、cinc-2018-sleep 等带 PSG 分期与事件级标注的大库,§7);二是在本库上做"分钟粒度+时序聚合"的折中建模(滑窗多分钟预测再聚合),本库 25 年文献里大量方法学创新正是发生在这条缝里。
3.7 标签的分布画像与指标选择
虽然 70 条记录的逐分钟 A/N 分布没有逐条官方汇总,但分组规则本身就决定了分布的结构性特征:a 组整夜紊乱 ≥100 分钟(占整夜 1/5 以上),c 组不足 5 分钟,x 系列混合。由此带来三个工程含义:
- 类不平衡是常态而非例外:整夜 400-580 分钟里,A 分钟的占比从 c 组的近 0% 到重度 a 组的 40%+ 不等。全局 accuracy 在这种结构下会被"多数类"稀释——一个把所有分钟都猜 N 的朴素基线在 c 组占比高的划分下也能拿到不低的 accuracy。这也是为什么严肃的论文都同时报 sensitivity(A 分钟抓到的比例,临床漏诊成本)、specificity(N 分钟判对的比例,误报成本)与宏平均指标。
- 分钟间强自相关:呼吸暂停以"事件串"形式出现(一次发作持续数十秒到数分钟),相邻分钟的标签高度相关。这带来两个推论:逐分钟独立假设下的统计检验会高估显著性;按记录切分训练/验证集(而非按分钟随机切分)是底线纪律——分钟级随机切分会让同一次发作的两分钟分居两侧,测试分数虚高。
- 记录级指标的正确打开方式:记录级分类(Event 1 口径)在 a/c 上接近满分是"容易题"属性的体现;对模型筛查能力的诚实评估应报告按组分层的结果,尤其 b 组(或按 AHI 自行再分层后的中间带)的表现。
指标选择的社区惯例可总结为一句话:逐分钟 accuracy 对表 92.62%(协议一致时),sensitivity/specificity/F1 防不平衡失真,AUC 用于阈值无关的比较,记录级成绩只作辅助证据——五项全报是近年高被引论文的通行格式。
3.8 标注协议对照:本库与相邻库的判定规则差异
跨库使用呼吸暂停标签时,最先踩的坑是"以为 A 的意思都一样"。三库判定规则对照:
| 维度 | 本库(Apnea-ECG) | UCDDB | SHHS 系大库 |
|---|---|---|---|
| 标注粒度 | 逐分钟二分类 A/N | 逐分钟(含辅助分数) | 事件级(起止时间)+ AHI |
| 低通气处理 | 计入 A | 有独立低通气语义 | 独立 H 事件 |
| 事件分型 | 仅阻塞/混合型(中枢型不存在) | 含中枢型 | 含中枢型 |
| 判定依据 | 同步呼吸信号人工判读 | PSG 人工判读 | PSG 规则化判读(AASM 规则迭代) |
| 跨库等价性 | — | 与本库不可直接对表(坑 7) | 事件聚合成分钟后方可近似对齐 |
结论:三库标签的"A"字面相同、语义各异。任何跨库成绩对照表必须先贴上这五行对照,否则就是在比较三个不同的题目。
§4 PhysioNet/CinC Challenge 2000:首届挑战赛如何设计
4.1 赛事背景:PhysioNet 成立元年的"开门考"
2000 年是 PhysioNet 上线元年(平台论文 Goldberger 等, Circulation 101(23):e215-e220, 2000 年 6 月 13 日刊出)。PhysioNet 团队——Moody、Mark、Goldberger——决定用一个在线竞赛来为开放数据开题:选一个临床需求明确、公开数据此前不存在、方法学有争议的问题,把数据挂出来,让全世界团队在同一评分标准下比一次。选题落在了"仅凭 ECG 筛查睡眠呼吸暂停",数据来自 Marburg 的 Penzel。Challenge 2000 因此是 PhysioNet Challenge 系列的第一届(官方原文"the first in a planned series of challenges"),该系列延续至今、2007 年起基本年度化(中间仅个别年份停办),后称 PhysioNet/Moody Challenge——Moody 即 George B. Moody,本库论文的第二作者与系列挑战赛的冠名人。
时间线四行就够清楚:
- 2000-02-10:Apnea-ECG 数据库在 PhysioNet 上线(含 learning set 全标注;test set 的 x 系列标注暂扣);
- 2000 年 2-9 月:Challenge 在线进行,参赛者可随时提交 test set 预测,官站滚动更新成绩;
- 2000-09-24~27:Computers in Cardiology 会议(Cambridge, MA)公布结果,Challenge 总结论文与数据库描述论文同期发表于当届会议论文集(CinC 2000;27 卷);
- 赛后:x 系列标注并入 1.0.0 公开,35/35 固定 split 成为社区标准协议。
4.2 双任务设计:筛查与量化分开计分
Challenge 把"ECG 筛呼吸暂停"拆成两个难度不同、粒度不同的任务:
Event 1 — Apnea Screening(记录级)。参赛者仅凭 ECG,对 test set 的 35 条记录逐条判断其属于 A(呼吸暂停,同 learning set 的 a 组负荷量级)、B(边界,同 b 组)、C(对照,同 c 组)三类中的哪一类。计分规则:A 类 20 条 + C 类 10 条正式计分(每条 1 分,满分 30),B 类 5 条边界记录不计正式分——赛后官方公布正确分类,PK Stein 据此提交了含 B 类的"三-way"非官方成绩(33/35)。任务实质是整夜记录的三分类筛查:这条 ECG 的主人是典型患者、边界人还是对照。
Event 2 — Apnea Quantification(逐分钟)。对 test set x01-x35 的每一分钟预测 A/N,与专家标注逐分钟比对,正确一分钟得 1 分,满分 17,268(test set 可用参考标注的分钟总数)。任务实质是逐分钟二分类的宏总计分——不再看"这个人有没有病",而是"每一分钟究竟有没有呼吸暂停"。
两个任务的得分线刻画的是两种不同的临床能力:Event 1 对应"筛查分诊"(决定谁需要 PSG),Event 2 对应"整夜监测"(无 PSG 条件下估算紊乱负荷)。拆开考的意义在 2000 年是方法学创新——同期大多数竞赛只有一个冠军一个指标。
两个事件各自映射一个真实临床场景:Event 1 对应"睡眠门诊的分诊决策"——医生拿到问卷与初步体征,要决定谁值得花一晚 PSG(漏判一个重度患者的代价 >> 误查一个正常人);Event 2 对应"家庭监测报告"——设备整夜佩戴后,报告要画出"哪几分钟在暂停"的时间轴(每分钟都判错会累积成完全失真的整夜画像)。一个任务在英语文献里常被称作 recording-level classification,另一个是 minute-wise detection——检索文献时两套术语都要试。
4.3 Event 1 结果:四队满分
Event 1(记录级筛查,满分 30)最终榜:
| 排名 | 参赛者/机构 | 提交日期 | 得分 |
|---|---|---|---|
| 1 | Jarvis & Mitra(Caltech) | 2000-05-03 | 30/30 |
| 1 | Raymond 等(Birmingham Heartlands Hospital) | 2000-05-10 | 30/30 |
| 1 | de Chazal 等(University College Dublin) | 2000-07-17 | 30/30 |
| 1 | McNames 等(Portland State University) | 2000-09-12 | 30/30 |
| 5 | PK Stein & Domitrovich | — | 29/30 |
并列排名按提交日期先后排序——Caltech 的 Jarvis & Mitra 最早满分。另有参赛者在 unofficial 三分类(把 b 组 5 条边界记录也计入,满分 35)上试水:最佳成绩 33/35(PK Stein),边界样本的难度可见一斑——b 组单独计分时,最强队也要丢 2 分。
如何读这张榜:① 满分并列按提交日期排序是官方规则(先到先得的荣誉次序),四队的真实水平差异要看 Event 2 的分钟线;② 提交次数列(官页原始表格含此列)透露了各队的调参投入——高分背后有明显的迭代成本;③ 官方自家的 Beth Israel 队按规则参赛但不领奖(unofficial),McGill 队同为 unofficial——看榜时别把这两行计入"竞争格局"。
4.4 Event 2 结果:92.62% 的冠军线
Event 2(逐分钟量化,满分 17,268)最终榜前十:
| 排名 | 参赛者/机构 | 得分 | 正确率 |
|---|---|---|---|
| 冠军 | J McNames, A Fraser, A Rechtsteiner(Portland State University) | 15,994 | 92.62% |
| 亚军 | Raymond 等(Birmingham Heartlands) | — | 92.30% |
| 季军 | de Chazal 等(UC Dublin) | — | 89.36% |
| 4 | Schrader 等(Medical School Hannover) | — | 87.56% |
| 5 | Jarvis & Mitra(Caltech) | — | 87.30% |
| 6 | Shinar 等(Tel-Aviv University) | — | 85.63% |
| 7 | Maier 等(Heidelberg) | — | 85.54% |
| unofficial | Mietus(Beth Israel Deaconess) | — | 84.49% |
值得注意的结构:Event 1 满分的四支队伍在 Event 2 上拉开了 5 个百分点的差距——"判断这个人有没有病"与"判断每分钟有没有暂停"是两种难度梯度;Caltech 在记录级最早满分、在分钟级却排第五,说明两类任务的最优方法并不重合。
如何读这张榜:① 冠亚军的 0.32 个百分点差距(33 分钟)在 17,268 的分母上统计意义有限——榜首之争应视为并列量级;② 前三名与第四名之间有近 2 个百分点的断档,说明头部两队用了本质上更强的时序建模;③ 四支 Event 1 满分队伍中只有 Portland State 与 Birmingham 站住了 Event 2 头两位——筛查满分不自动带来量化冠军。
4.5 官方结论与历史意义
Challenge 总结论文(Moody, Mark, Goldberger, Penzel. CinC 2000;27:207-210, doi:10.1109/CIC.2000.898493)给出的官方结论有三层:
- 筛查可行:记录级准确率 90-100%、逐分钟 85-93%——多个独立团队用不同方法(心率变异性统计、EDR、时频分析、混合特征)达到同一量级,结论不依赖单一方法。
- 与人类专家一致:85-93% 的逐分钟一致度与"人类专家对完整 PSG 评分的相互一致度(约 90%)"相当——ECG 筛查的精度上限没有显著低于人工判读的精度下限。
- 开放竞赛模式被验证:数据公开 + 统一计分 + 快速迭代,三个月内产出了分散研究多年才能积累的方法学对比。这一模式成为 PhysioNet/Moody Challenge 的模板。
历史定位一句话:Challenge 2000 用一次比赛把"ECG-based sleep apnea screening"从假说变成了工程可行项,今天的可穿戴设备睡眠呼吸暂停提示功能(腕表、戒指、贴片)的方法学源头都能追到这条线上。
4.6 数据集与赛事的关系辨析
一处常见误引值得单独存照:把 Apnea-ECG 称为"Challenge 2000 的比赛数据集"在时间顺序上是倒置的——先有数据库(2000-02-10 上线),后有比赛(同年 2-9 月)。准确的关系表述是:数据库为 Challenge 组装、随 Challenge 出名、赛后沉淀为永久公开基准。引用实践中的三个推论:
- 引数据用 Penzel 2000(CinC 2000;27:255-258,数据库描述论文),引赛事用 Moody 2000(CinC 2000;27:207-210,Challenge 总结论文)——两篇论文、两个 doi(10.1109/CIC.2000.898505 / 10.1109/CIC.2000.898493),别串。
- “CinC Challenge 2000 data sets"是 PhysioNet 旧版官页(archive)对本库的标题栏描述——它说的是"这批数据曾服务于 Challenge”,不是"这是比赛专属数据"。
- 数据库 25 年单版本 1.0.0,比赛是 2000 年的一次性事件——用本库做研究不需要也无法"参加 Challenge 2000",那扇门 2000 年 9 月就关上了。
4.7 方法流派一瞥:2000 年冠军们在做什么
Challenge 总结论文与当届会议论文集收录了主要参赛队的方法摘要(官方 papers 页保留至今)。按技术路线归类,可以拼出一张"2000 年技术路线图":
| 流派 | 代表队 | 核心思路 |
|---|---|---|
| HRV 频域/时域统计 | 多数队伍 | 逐分钟 RR 间期序列的频谱(RSA 频带能量)、时域统计喂给分类器 |
| EDR(ECG-derived respiration) | 部分队伍 | 从 R 波幅度/轴向变化反推呼吸波形,再按呼吸暂停的形态规则判别 |
| 时变滤波/轨迹建模 | Portland State(Event 2 冠军)、Birmingham(亚军) | 把整夜心搏序列建模为随时间演化的状态,捕获事件串的慢波纹理 |
| 混合特征+机器学习 | UC Dublin(季军)、Caltech | 时域+频域+形态学特征组合,LDA/NN/SVM 分类 |
三个跨队共同点:没有人使用原始波形端到端学习(2000 年没有深度学习),全部依赖心搏级特征+分钟级聚合的两段式架构;所有队伍都从同一份 learning set 出发但特征工程各异——最终 85-93% 的收敛区间说明特征路线已经触到信号上限(§2.7 的信息缺口); 方法之间的差异主要体现在"对 b 组边界样本的处理"上——正式计分不含 b 组,冠军与第五名的差距实际藏在边界样本的鲁棒性里。
四分之一个世纪后回看,这张路线图仍然成立:今天的深度模型大多在学同样的东西——只不过把"人工特征工程"换成了"卷积自动学特征",把"心搏级统计"换成了"波形端到端",而分钟聚合与事件串建模的骨架没变。
四个流派的"现代后裔"也值得对照:HRV 统计流 → 今日的可穿戴睡眠评分(各家手表的"呼吸规律性"指标本质是 RSA 节律扰动检测);EDR 流 → 智能手表/戒指的呼吸率估算功能;时变状态建模流 → 深度学习里的 RNN/状态空间模型(S4/Mamba 类);混合特征流 → 冻结编码器+线性探针的基准范式。一条 2000 年的路线图,几乎每一格都能在 2026 年的产品或论文里找到直系后代——这也是"读经典比赛论文仍有生产力"的罕见案例。
§5 现代基准:二十五年的成绩曲线
5.1 经典机器学习时代(2000-2015):特征工程的主场
Challenge 之后十年,本库是传统 ML 方法的标准考场:HRV 时域/频域统计(SDNN、RMSSD、LF/HF)、EDR 特征、QRS 形态学参数、非线性动力学(样本熵、Poincaré)喂进 LDA、kNN、SVM、神经网络。这一时期的代表成绩与 Challenge 榜单基本持平(逐分钟 85-93%),方法学共识是:心搏级统计特征(尤其 R-R 间期的呼吸性调制)承载了大部分判别信息。35/35 固定 split 在这个时期被彻底固化——几乎所有论文都直接沿用 learning 35 训练、test 35 评测的 Challenge 协议,使跨论文比较成为可能(这在数据集史上相当罕见:一个比赛的计分协议变成一个领域的默认评测协议)。
5.2 深度学习时代(2016-2025):代表成绩表
沿用 35/35 协议的代表性深度学习成绩(逐分钟准确率口径):
| 模型/工作 | 架构要点 | 逐分钟 acc | 出处 |
|---|---|---|---|
| 1D-CNN(NYCU) | 一维卷积端到端 | 87.9% | NYCU 课程/技术报告 |
| FASSNet | 轻量 CNN,可穿戴向 | 87.09% | IOPscience 2021 |
| CNN-BiGRU | 卷积+双向门控循环时空模型 | 91.22% | 时空序列文献 |
| SpiTranNet | SNN(脉冲神经网络)+Transformer 混合 | 95.0% | Frontiers 2025 |
| (逐记录级) | 各类端到端分类 | 普遍 97-100% | 多篇 |
两条曲线值得对照:逐分钟线从 2000 年冠军的 92.62% 到 2025 年的 95.0%——25 年深度学习在逐分钟指标上只推进约 2.4 个百分点;逐记录线则几乎饱和(97-100%)。这不是深度学习不行,而是这个基准的信号上限:100 Hz 单导联 + 分钟粒度标签 + 约 70 条训练样本的组合里,能榨取的判别信息就那么多(5.3、5.4 展开)。
对表格的一个补充观察:表中成绩全部标注口径差异——NYCU 与 CNN-BiGRU 用 35/35,FASSNet 用 70 条十折+患者无关双协议,SpiTranNet 用自定义分段协议。"逐分钟 acc"四个字在不同协议下不是同一个量,这正是 §5.3 五条口径检查存在的理由。
5.3 读榜注意事项:五个口径陷阱
拿本库分数做横向比较前,先过五道检查:
- 协议是否 35/35。本库社区默认协议是 learning 35 训练 + test 35 评测。有论文做 10 折交叉验证、有论文把 train/test 重新切分、有论文只用 learning set 报交叉验证分——分数与 35/35 协议不可直接比。读方法节先找 split 描述。
- UCDDB 分数不可直接互比。UCDDB(UC Dublin 数据库,25 条)标注含中枢性事件、双导联、时长口径不同,且"hypopnea 计入 A"的本库标签语义与 UCDDB 不对齐。CNN-BiGRU 论文实测:本库训练的模型直接迁移 UCDDB 准确率显著大跌——跨库泛化是公认难点,别拿两库分数排出"谁强谁弱"。
- 逐记录 vs 逐分钟是两个任务。逐记录 acc 97-100% 听着碾压,但它只回答"这人有没有嫌疑";逐分钟才是 Challenge Event 2 的口径。引文时先确认指标,混报会造成"95% vs 99%"式的假差距。
- 正确率的分母。Event 2 满分 17,268 是 test set 可用参考标注分钟总数——部分论文按各自解析的分钟总数计分,分母差几分钟在 17,268 量级上影响很小,但严格复现应按官方口径。
- 预训练与否。近年工作有的用大规模 ECG 预训练编码器(PTB-XL 等)再微调本库——这类"迁移增强"成绩与从零训练不可同列比较;库内 ptb-xl(70) 条目与互链的意义正在于此。
5.4 基准红利盘点:还剩什么可做
按 2026 年的视角盘点本库的研究剩余价值:
- 饱和区(不建议再刷):35/35 协议下的逐分钟二分类主榜——剩余空间 <3 个百分点,且无临床意义增量。
- 活水区:跨库泛化(本库↔UCDDB↔SHHS/mesa 的域适应)、无监督/自监督预训练在 EDR 上的表征评估、轻量化可穿戴模型(FASSNet 路线)、SNN 等低功耗架构(SpiTranNet 路线)。
- 教学区:信号短、任务清晰、CPU 可跑——生理信号课程与入门者复现 baseline 的最佳素材之一;坑 5(c05/c06)也恰好是讲"数据泄漏"的现成案例。
5.5 复现清单:从协议到分数的六步
把"在 Apnea-ECG 上做一次合规评测"拆成可勾选的六步:
- 锁定协议:决定用 35/35(可对表历史成绩)还是全量交叉验证(需声明协议变更)。声明写在摘要,不藏在方法节。
- 受试者级切分:任何内部验证都按记录切分,c05/c06 绑定同侧(坑 5),分钟级随机切分是禁手(§3.7)。
- 信号层预处理:带通滤波(常见 0.5-40 Hz)、去基线漂移;保持 100 Hz 原生采样或声明重采样方案;增益换算(200 units/mV)仅在做跨库幅值对齐时需要。
- 特征/表示层:经典路线提取 RR 间期序列→逐分钟统计+频谱;深度路线按分钟切片(100 Hz 下约 6,000 样本/分钟)做端到端;两条路线都可以叠加 QRS 检测——记得 .qrs 的未审计身份(坑 6),或用 pantompkins/wqrs 自行检测。
- 评估层:逐分钟 accuracy + sensitivity/specificity/F1(宏)+ 记录级成绩,五项齐报(§3.7);与 92.62% 对照时核对分母是 17,268 分钟口径(§5.3)。
- 报告层:写明 split、预处理、特征维度、随机种子与试验次数;引用双引用组(§6.4)与 DOI 10.13026/C23W2R。
这份清单的价值在于把"社区默认但散落在各论文方法节"的惯例集中显式化——照单执行即得到可与历史文献对话的结果,跳过第 1、2 步则是口径混乱与数据泄漏的两大事故源头。
§6 获取与许可
6.1 四条获取通道
| 通道 | 命令/入口 | 适合场景 |
|---|---|---|
| 网页 ZIP 直下 | https://physionet.org/content/apnea-ecg/1.0.0/ 页面 Download zip(580.6 MB) | 一次性拿全包,图形界面用户 |
| wget 递归 | wget -r -N -c -np https://physionet.org/files/apnea-ecg/1.0.0/ |
服务器命令行,断点续传 |
| AWS 开放数据镜像 | aws s3 sync --no-sign-request s3://physionet-open/apnea-ecg/1.0.0/ ./apnea-ecg |
云端管线、批量程序化拉取 |
| 在线可视化 | 官页 LightWAVE 入口或 WAVE,.xws 引用 | 不装环境先目检信号与标注 |
访问政策为"Anyone can access the files":无注册、无申请、无 license 点击墙;AWS 镜像支持 --no-sign-request 匿名拉取。整包不足 1 GB,没有分片、没有配额、没有限速焦虑。
下载解压后(或 AWS 同步后)的目录长这样(节选):
apnea-ecg/1.0.0/
├── RECORDS # 70 条记录的索引清单
├── RECORDS-a, RECORDS-b, RECORDS-c, RECORDS-x # 分组子清单
├── ANNOTATORS # 标注器说明(apn 的判定来源)
├── SHA256SUMS.txt # 全文件校验和(2019-02-20)
├── additional-information.txt # 逐条人口学 + AI/HI/AHI
├── a01.dat a01.hea a01.apn a01.qrs a01.xws
├── a01r.dat a01r.hea a01er.apn a01er.hea a01er.qrs a01er.xws # 呼吸附加信号组(仅 8 条)
├── ...(a02-a20, b01-b05, c01-c10 同构)
└── x01.dat x01.hea x01.apn x01.qrs x01.xws
...(x02-x35 同构;x 系列无 r/er 文件组)
三条阅读线索:RECORDS 系列文件是脚本化处理的权威记录清单(别硬编码文件名);x 系列没有呼吸附加信号,做 EDR 的素材只在 learning set 的 8 条;看到 rnner.* 后缀要想起坑 8(并阅对照组,不是第二套真值)。
通道选择的小决策树:图形界面/一次性 → ZIP;写脚本拉数据 → AWS 镜像(比 wget 快且不占 PhysioNet 带宽);Windows 无 AWS CLI → wget;只想"看一眼" → LightWAVE。所有通道拿到的字节相同(SHA256SUMS 可验证),通道选择只影响便利性不影响正确性。
6.2 十分钟上手:从下载到逐分钟 baseline
wfdb-python 一条路径跑通"读信号+读标注+落表":
import wfdb
import numpy as np
# 1) 从 PhysioNet 远端直接读(也可先按 6.1 下载到本地)
rec = wfdb.rdrecord("a01", pn_dir="apnea-ecg/1.0.0/")
print(rec.fs, rec.sig_len, rec.sig_name) # 100 Hz, 样本数, ['ECG']
# 2) 读逐分钟呼吸暂停标注(.apn)
ann = wfdb.rdann("a01", "apn", pn_dir="apnea-ecg/1.0.0/")
labels = np.array(ann.symbol) # ['N','N','A',...] 每分钟一个
minutes = ann.sample / rec.fs / 60.0 # 对齐分钟网格
# 3) 逐分钟统计:a01 的紊乱分钟占比
apnea_ratio = (labels == "A").mean()
print(f"a01: {len(labels)} min, apnea ratio = {apnea_ratio:.2%}")
再进阶一步的社区管线:
# torch_ecg 内置 ApneaECG Reader(35/35 split 原生支持)
from torch_ecg.databases import ApneaECG
db = ApneaECG(db_dir="path/to/apnea-ecg/1.0.0/")
recs_train = db.get_train_test_splits() # learning/test 划分
labels = db.get_labels("a01") # 逐分钟 A/N
工程提示三条:100 Hz 单通道内存占用极低(一条整夜 ECG 约 7-10 MB),CPU 全流程可复现;.hea 头文件里的增益(200 units/mV)在需要跨记录幅值对齐时记得换算;wfdb 远端读取(pn_dir)每次拉取有网络开销,正式实验请先本地化。
6.3 ODC-By 1.0 辨析:它是什么、不是什么
官页 License 栏明确写着 Open Data Commons Attribution License v1.0(ODC-By 1.0)。三个常见混淆点:
| 对比对象 | ODC-By 1.0(本库) | ODbL 1.0 | CC BY 4.0 |
|---|---|---|---|
| 家族 | Open Data Commons(数据专属许可) | Open Data Commons | Creative Commons |
| 核心义务 | 署名 | 署名 + share-alike(衍生库同许可开放) | 署名 |
| 商用 | 允许 | 允许 | 允许 |
| 衍生要求 | 无传染性 | 衍生数据库必须同样 ODbL 开放 | 无传染性 |
| 对应类比 | 数据界的 CC BY | 数据界的 CC BY-SA | — |
逐条落成使用守则:
- 本库是"署名即自由":修改、再分发、商用、建模、出产品都行,唯一硬义务是按官方要求给出双重引用(6.4)。
- 不是 ODbL——没有 share-alike。把基于本库训练的模型、衍生的特征库、再标注版本闭源或换许可发布,均不违反 ODC-By(坑 4:别在论文/条目里写 Open Database License 或 ODbL)。
- 与 CC 家族的措辞区分:ODC-By 与 CC BY 精神相近但文本独立,严谨写法引用许可全称与版本号,不写"CC BY"。
- 论文的版权独立于数据:CinC 论文由 IEEE 出版(doi:10.1109/CIC.2000.898505),引用论文内容(如结论数字)与数据文件许可互不替代。
6.4 引用责任:双重引用的标准格式
官方要求同时引用数据描述论文与 PhysioNet 平台论文。可直接复制的两条:
@inproceedings{penzel2000apnea,
title = {The Apnea-ECG Database},
author = {Penzel, Thomas and Moody, George B. and Mark, Roger G.
and Goldberger, Ary L. and Peter, J. Hermann},
booktitle = {Computers in Cardiology 2000},
volume = {27},
pages = {255--258},
year = {2000},
doi = {10.1109/CIC.2000.898505}
}
@article{goldberger2000physiobank,
title = {PhysioBank, PhysioToolkit, and PhysioNet:
Components of a New Research Resource for Complex Physiologic Signals},
author = {Goldberger, Ary L. and Amaral, Luis A. N. and Glass, Leon
and Hausdorff, Jeffrey M. and Ivanov, Plamen Ch. and Mark, Roger G.
and Mietus, Joseph E. and Moody, George B. and Peng, Chung-Kang
and Stanley, H. Eugene},
journal = {Circulation},
volume = {101},
number = {23},
pages = {e215--e220},
year = {2000}
}
使用数据文件本体时再补一条数据引用:PhysioNet, Apnea-ECG Database(version 1.0.0), doi:10.13026/C23W2R, 2000。
三种常见的引用错误,反例示范:
- 只引论文不引平台(或反之)——官页明确要求双重引用,缺一条都会被 PhysioNet 社区的引用规范核查盯上;
- 把 DOI 写成 10.13026/C23W2R 的全大写变体(C23w2r/c23W2R)——DOI 大小写敏感的规范写法以官页为准;
- 引用赛事结论(92.62%)时只引数据库描述论文——这个数字出自 Challenge 总结论文(10.1109/CIC.2000.898493)与官页排行榜,引错出处的审稿风险大于引错年份。
6.5 AI-Ready 自评:可获取性天花板,元数据拖后腿
按库内 AI-Ready 检查单过一遍:
- 机器可读元数据:WFDB 头文件逐条机器可读;官页结构化元数据完整(doi、版本、许可、文件校验和 SHA256SUMS.txt)——良好。
- 公开直链:无门槛直链 + AWS 匿名镜像,四通道获取——满分档。
- 许可明确性:ODC-By 1.0 全库单一许可,无三层异构、无请求制——满分档。
- 可复现性:25 年单版本、SHA256 校验、固定 35/35 协议、CPU 可跑——良好。
- 文档自洽:四处双口径(位数、标注可得性文字、总大小、机构拼写)+ 官页标注说明未随赛后公开更新——失分集中区。
综合:AI-Ready 等级"高"——可获取性与许可纪律是库内天花板级样本,文档层的历史残留(2000 年的规则描述服务 2026 年的文件列表)是唯一拖累,也正是本条目 §10 避坑清单的全部来源。库内可获取性光谱(注册墙→请求制→平台托管→公开直链)里,本条目位于最右端的公开直链档,与 sleep-edf(73)、ptb-xl(70) 等老牌 PhysioNet 条目同档。
6.6 与库内可获取性光谱的对照
| 档位 | 库内参照 | 本条目对应 |
|---|---|---|
| 注册墙(最严) | 部分 DUA/审批型条目 | — |
| 请求制 | upon request 型条目 | — |
| 平台托管 | Zenodo 型条目 | — |
| Registry 收录 | AWS Registry 型条目 | AWS 开放数据镜像(物理同档,且免签名) |
| 公开直链(最开放) | PhysioNet 系/直链型条目 | 四通道全开放,无任何门槛 |
特色在于"老而开"的组合:2000 年发布的数据集比后来者(请求制、注册墙型)反而站在可获取性光谱的最右端——开放不是新数据集的专利,而是 PhysioNet 从建库第一天写进政策的制度设计。对检索者的含义:按"能否立刻下载"过滤库内生理信号条目时,本条目与 ptb-xl(70)、sleep-edf(73) 同批命中;按许可宽松度(可商用、无传染)过滤时,ODC-By 1.0 使它落在与 CC BY 等价的最宽档。
§7 生态与影响
7.1 开创 PhysioNet 挑战赛系列
Challenge 2000 是 PhysioNet 挑战赛系列的第一届。官方总结论文的措辞是"the first in a planned series of challenges"——一场原本计划性的系列实验的第一环。此后该系列多年延续、议题逐年轮换(睡眠分期、重症监护、心律失常检测等——如 2018 年的多导睡眠分期挑战赛即库内 cinc-2018-sleep,rid 493),成为医学信号机器学习社区最重要的年度公开评测舞台,社区现以 George B. Moody 之名称之为 Moody Challenge。Apnea-ECG 作为第一届的底座数据,其"learning/test 双集+多次提交取最优+官方排行榜永久公开"的机制设计被整个系列继承至今——从谱系上说,今天所有 PhysioNet 挑战赛的赛制都是 Challenge 2000 的直系后代。
7.2 数据集景观中的位置:小库大引用
在睡眠呼吸暂停 ECG 检测任务的数据集景观里,Apnea-ECG 的位置相当独特:
| 数据集 | 年份 | 记录数 | 导联 | 事件类型 | 相对规模 |
|---|---|---|---|---|---|
| Apnea-ECG | 2000 | 70 | 1 | 逐分钟 A/N(阻塞/混合型) | 最小但引用最多 |
| UCDDB(UCD Database) | 2013 | 25 | 2(ECG+HRV 派生) | 逐分钟(含中枢性) | 更小,常用外部验证 |
| cinc-2018-sleep | 2018 | 1,985 | 7(PSG) | 30 秒分期 | 大(任务不同) |
| SHHS / MESA / MrOS | 2000s-2010s | 数千 | PSG 全导 | 事件级+分期 | 巨大(任务不同) |
一句话定位:在"单导联 ECG 检测呼吸暂停"这个具体任务上,Apnea-ECG 是规模最小、但评估协议最硬、引用最集中、历史最长的公共基准;UCDDB 是它最常被搭配的外部验证集(也是它跨库泛化短板的照妖镜);SHHS/cinc-2018-sleep 等大库解决的是不同粒度与不同任务的问题。二十余年后新论文仍以"在 Apnea-ECG 上报告 35/35 split 成绩"作为方法发表的事实门槛,这个地位至今未被任何更大的单导联库取代。
7.3 从比赛结论到产业现实
Challenge 2000 的"yes"结论在二十余年间完成了从论文到产品的落地路径:智能手表/戒指厂商近年陆续推出睡眠呼吸暂停筛查功能(以夜间血氧+HRV 为主),其方法学谱系可以直接追到"单导联/少信号筛查呼吸暂停"这条以 Apnea-ECG 为公共证据起点的技术线上。学术界对此的冷静注脚是:消费级设备走的是"血氧为主、HRV 为辅"的路线,而非 Challenge 冠军们验证的"纯 ECG 路线"——纯 ECG 筛查的临床落地(如置入式起搏器的呼吸暂停检测)反而是更窄的应用。数据集的历史意义与产业形态的演化方向并不完全重合,这是引用"ECG 筛查呼吸暂停已被证明"这句话时值得保留的一层辨析。
7.4 文献影响与引用规模
Apnea-ECG 属于"数据集即论文"引用模式的常青树:Penzel 2000 论文(CinC 2000;27:255-258)与 PhysioNet 平台引用(Goldberger 2000)共同构成引用对,累计被引数千次,横跨生物医学工程、信号处理、机器学习三个文献圈。它还作为标准案例进入教科书与工具库文档(torch_ecg、WFDB 教程、多个生理信号课程的默认示例数据集)——"70 条记录、35+35 split、92.62%"这三个数字在社区语境里近乎无需注释。对写综述或建 benchmark 表格的人,它是最安全的"公共常识级"引用锚点。
7.5 二次资源与教学生态
本库的"周边生态"是它长盛不衰的放大器:
- 官方资源:PhysioNet 官页(数据+描述+校验和)、moody-challenge.physionet.org/2000(比赛全档:规则、排行榜、方法摘要、论文 PDF)、WFDB 软件包文档;
- 加载器生态:wfdb-python(官方基准)、torch_ecg 的
ApneaECG类(分组查询/标注加载)、NeuroKit2(信号处理链)、R 的 wfdb 包与 MATLAB WFDB——四套语言生态全覆盖; - 教学场景:生理信号课程的标准作业题库(数据小、任务清晰、有官方"标准答案"对分);WFDB 格式教学的示范库(文件类型少而齐全,§2.3);
- 二次基准:多篇综述把本库成绩表当作 ECG-based apnea detection 的"历史主轴"复刻——做相关综述时可直接引用 §4 与 §5 的两张成绩表结构。
这个生态的护城河效应值得记一笔:数据集的持续被用不完全取决于数据本身,还取决于"新手第一次接触它的摩擦有多小"——本库的摩擦被二十余年积累压到了近乎为零。
§8 方法学启示:六条可迁移的经验
8.1 监督信号必须独立于待测模态
Apnea-ECG 最根本的方法学设计是:标注者看呼吸信号,模型学 ECG。这条"标注模态≠输入模态"的原则适用于一切"用 A 信号预测 B 事件"的任务——如果 B 事件的真值本来就从 A 信号里来(如用 ECG 生成的呼吸暂停标签训练 ECG 模型),模型学到的是标注者的伪影而非生理。迁移到库内其他任务:心电图报告生成的标签来自报告文本而非信号本身、睡眠分期标签来自 PSG 全导而输入可能是单导联——都要先问一句"真值的观察通道和模型的输入通道是什么关系"。
8.2 难度分层设计保护评测的区分度
a/b/c 三分组 + Event 1 排除 b 组计分的组合,本质是把"容易题"(a vs c)与"难题"(b 及含 b 的三分类)显式分离。没有这个设计,满分会掩盖边缘病例的失败;有了这个设计,官方既给出了"问题基本可解"的有力结论(30/30),又通过三-way 33/35 与逐分钟 92.62% 诚实标出了残余难度。任何自建评测集的团队都应复制这个结构:主指标算简单部分保证区分度,补充指标算全量暴露真实难度。
8.3 小数据任务的"协议护城河"
70 条记录能统治一个领域二十余年,靠的不是规模而是协议:固定 split、公开排行榜、标准格式、统一指标。数据可以被反复评估,但协议让每一次评估都可对照。这对"数据不够多"的领域(罕见病、罕见事件检测)是直接的启示:与其追逐数据规模,不如先把"split 冻结+历史成绩公开"的协议立起来——小数据配上硬协议,胜过大数据配上散协议。
8.4 与人类一致度对照的论证结构
官方论证"ECG 可行"的方式不是宣称"接近真值",而是把 92.62% 与"人类专家之间的 90% 一致度"并置——因为逐分钟呼吸暂停的"真值"本身带有专家间变异,追求 100% 既不可能也无意义。这个论证结构(把模型成绩锚定在人类变异的量程上)值得一切"金标准本身有噪声"的任务借鉴:先测出标注者间一致度,再判断模型成绩的天花板在哪。
8.5 EDR:从辅助通道到自监督靶标
本库 8 条记录的呼吸通道还有一个常被低估的用法:训练/验证 ECG-derived respiration(EDR) 模型——输入 ECG、输出呼吸波形。有了这 8 条 ECG-呼吸严格同步的成对数据,EDR 的重建质量可以直接量化(相关系数、频带一致性),而无需任何人工标注。这个用法的影响超出本库:EDR 是一切"单导联设备上估算呼吸率"功能(智能手表、床垫传感器)的技术前身,而 Apnea-ECG 是少数能公开验证 EDR 的成对数据源之一。自监督学习兴起后,这 8 条成对数据又成为"呼吸预训练任务"的天然靶标——先学"从 ECG 重建呼吸",再用逐分钟标签微调筛查头,是近年论文里常见的两段式配方。
8.6 跨库泛化:域差距的三重来源
本库↔UCDDB(及其他睡眠库)的迁移性能下降是公认难点,值得把"域差距"拆解成三个可分别对治的来源:
- 硬件域:采样率(100 Hz vs UCDDB 的 128 Hz 等)、导联位置、设备增益不同——原始波形统计分布整体漂移。对治:特征层方法(RR 间期统计对硬件差异不敏感)或域适应/归一化层。
- 人群域:年龄、BMI、性别构成不同(UCDDB 含更多样的人群与本库不含的中枢性事件)。对治:人群分层评估、按 AHI 匹配的子集对照。
- 标签域:判定协议不同(本库 hypopnea 计入 A、UCDDB 的标注协议与分钟切分规则不同;中枢性事件的有无)。对治:标签语义对齐表写在论文里,跨库成绩只比"语义对齐后"的子集。
三重来源的清单给"为什么跨库掉分"提供了归因框架:掉分不可怕,无法归因的掉分才可怕。库内做跨库泛化研究时,把三重来源各设一个对照实验,是这个领域论文方法论成熟度的快速试金石。
§9 与库内条目的关系
9.1 家族图谱与互链点
-
ptb-xl(rid 70):同属 PhysioNet 的 ECG 基准双璧——PTB-XL 是静态 12 导联心律失常大库,Apnea-ECG 是整夜单导联呼吸事件小库;两者合看构成"ECG 任务谱系"的两端(形态学分类 vs 时序事件检测)。
-
sleep-edf(rid 73):睡眠领域另一经典库(PSG 级、30 秒分期)。两者同采自 2000 年前后、同为 WFDB 格式、同为"小而硬"协议库,但任务粒度不同(分钟 vs epoch)——跨库迁移研究最常搭配的一对。
-
chb-mit-scalp-eeg(rid 72):PhysioNet 系头皮 EEG 癫痫库。共享"PhysioBank 经典库+挑战赛/评测生态"背景,代表生理信号库的另一大疾病域。
-
cinc-2018-sleep(rid 493):CinC Challenge 系列第十九届(睡眠分期),与 Challenge 2000 同属一个赛事谱系——把两者连读可以看到挑战赛任务从"呼吸事件检测"演化到"睡眠分期"的十八年轨迹。
-
hmc-sleep-staging(rid 654)与 dreamt(rid 650):现代 PSG 级睡眠库(大样本、多导联、30 秒分期与呼吸事件标签),是 Apnea-ECG 的"任务放大版"——需要全人群、多模态、事件级标注时应转向这两条。
-
mesa-sleep / mros-sleep / shhs(库内相邻条目):大型队列级 PSG 库,事件级 AHI 研究的主战场,人群外推验证的首选外部库。
-
mimic-iv-ecg / icentia11k / vitaldb / pulsedb / brset(库内 ECG 相邻条目):大规模 ECG 资源,分别覆盖 ICU 整夜 ECG、连续可穿戴监测、术中信号、脉搏波与视网膜-心血管关联——与本库构成"ECG 应用谱"的长尾。预训练编码器时代,它们与本库最常以"大规模预训练 → 本库小样本微调"的管线相连(§5.3 口径陷阱第 5 条)。
-
QT-Database(库内相邻):WFDB 时代的另一经典,逐搏级标注与本库的逐分钟标注形成"WFDB 标注粒度光谱"的两端参照。
9.2 检索路径建议
- 检索词组合:“Apnea-ECG”(精确)+“PhysioNet”+“Challenge 2000”;注意与 UCDDB(都柏林库)区分(坑 7)。
- 要历史成绩:moody-challenge.physionet.org/2000 与 archive.physionet.org/challenge/2000/top-scores.shtml 两页合读(后者为最终版计分)。
- 要数据:physionet.org/content/apnea-ecg/1.0.0/ 四通道任选(§6.1);引用时论文+平台双引用缺一不可(§6.4)。
- 要扩展任务:库内按"睡眠信号"标签联动 sleep-edf(73)、cinc-2018-sleep(493)、hmc-sleep-staging(654)、dreamt(650)。
9.3 跨任务迁移路径:分钟粒度怎么接到别的任务上
本库的逐分钟标签与库内相邻条目的标注粒度不同,迁移时需要一张粒度转换对照:
| 目标任务 | 相邻库 | 粒度差异 | 转换路径 |
|---|---|---|---|
| 睡眠分期(30 秒 epoch) | sleep-edf(73)、cinc-2018-sleep(493)、hmc-sleep-staging(654) | 60 秒 → 30 秒 | 分钟标签拆分给两个 epoch(引入边界噪声)或聚合两个 epoch 对齐分钟(损失分辨率);呼吸暂停事件与睡眠期不一一对应,标签不能直接映射——只能做"分期特征辅助呼吸检测"的单向迁移 |
| 事件级呼吸暂停定位 | shhs、dreamt(650) | 分钟二分类 → 事件起止时间 | 本库只能做预训练/表征学习,事件级监督必须来自大库;反向(大库标签聚合成分钟)可行,可用于构造更大规模的"分钟口径"训练集 |
| AHI 严重度回归 | additional-information.txt(本库自带) | 逐分钟标签 → 整夜 AHI | 预测的 A 分钟数/小时数与真实 AI/HI/AHI 做相关/一致性分析——本库逐条提供真实值是回归任务的关键红利 |
| 心律失常辅助 | ptb-xl(70)、MIT-BIH 系 | 病理谱不同 | 呼吸暂停筛查模型提取的 HRV 特征可迁移至心律失常风险研究(双向的生理学桥梁),但标签体系不互通 |
一句话总结:分钟粒度是本库的"方言"——往 30 秒世界迁移要拆,往事件级世界迁移要借大库,往 AHI 回归迁移反而最顺(自带真实值)。设计跨库实验前先画这张转换图,能省掉大量"标签对不上"的返工。
§9.3 的粒度转换表还有一层用法:它是审计其他论文跨库实验设计的清单——读到"在 Apnea-ECG 和 SHHS 上都验证了"的论文时,对照五行转换路径检查其标签语义对齐声明,缺哪行就在哪个环节存疑。
§10 避坑清单:八个已踩过的坑
以下八则按"踩坑频率 × 后果严重度"排序前四条为高频高害。每则给出事实、来源与操作守则三件套——开工前把八条读完约需十分钟,能省掉本库使用史上最常复现的八类事故。
坑 1:70 条,不是"约 100 条"。本库写作立项时的方向提示为"约 100 条记录",经 PhysioNet 官页、Challenge 官页、第三方加载器文档三方核验,实际为 70 条(learning 35 + test 35)。"100 条"口径可能来自对衍生文件(70 条 ECG + 8 条呼吸版 + 对照版文件组)或个别二手文献的误数。一切以 RECORDS 文件与官页 Data Description 为准。
坑 2:16-bit 存储与 12-bit 分辨率双口径。physiobank 官页写 ECG “16 bits per sample”;Challenge 2000 官页与总结论文写 “digitized at 100 Hz with 12-bit resolution”。合理解读:.dat 文件以 16-bit 容器存储(故有"16 bits per sample"),A/D 采集有效分辨率 12-bit(故有"12-bit resolution")。条目引用规格时写"100 Hz、16-bit 存储、有效 12-bit 分辨率"最完整,单独引任一口径都可能被审稿人质疑。
坑 3:官页"标注仅 learning set"文字已过时。physiobank 描述文字仍写".apn files … available for the 35 learning set recordings only"——这是 Challenge 期间规则的历史残留。对 1.0.0 文件列表实抓(2026-09-27):x01-x35.apn 全部 35 个公开在列。自动抓取官页文字会得出"test set 无标注"的错误结论;以文件实况为准。
坑 4:License 是 ODC-By 1.0,不是 ODbL,也不是 CC。官页明示 “Open Data Commons Attribution License v1.0”。它常被二手资料误写为 “Open Database License (ODbL)”——两者同属 Open Data Commons 家族但条款不同:ODC-By 只要求署名(无 share-alike),ODbL 要求衍生数据库同许可开放。也勿写成 CC BY——CC 系列不用于数据库本体。写作/入库时精确到 “Open Data Commons Attribution License v1.0 (ODC-By 1.0)”。
坑 5:c05/c06 同源,受试者级划分会泄漏。c05 与 c06 来自同一原始记录(c05 比 c06 晚 80 秒开始,c06 疑为修正版,2013 年用户报告、官页存照)。守则:① 任何受试者级划分(留出验证、患者无关交叉验证)把 c05/c06 绑定同侧;② 报告"受试者数"时写 ≤69 并注明原因;③ 做记录间相关分析时警惕这两条的伪独立。
坑 6:.qrs 是未审计机器标注。sqrs125 生成、官页原文 “unaudited and contain errors”。做逐搏级分析(RR 间期、形态学)时:要么自备 QRS 检测器,要么声明方法对少量检测误差鲁棒,要么接受并量化该噪声。把 .qrs 直接当金标准喂给评估流程是本库最典型的静默错误。
坑 7:Apnea-ECG ≠ UCDDB。名字相近、任务相同、经常同页出现的是两个库:Apnea-ECG(PhysioNet,70 条,单导联,100 Hz)与 UCDDB/UCD Database(University College Dublin,25 条,双导联,含中枢性事件,不同采样率)。后者常作 Apnea-ECG 的外部验证集,文献里"apnea database"一词两者通指——引用具体记录数与结论前先核对库名,跨库成绩不可混填一张表。
坑 8:附加信号记录的 r/er 双版本迷宫。8 条附加信号记录(a01-a04、b01、c01-c03)各有三组文件(2026-09-27 文件列表实抓,以 a01 为例):标准组 a01.dat/.hea/.apn/.qrs;附加信号组 a01r.dat/.hea/.apn(r = respiration,Resp C/A/N + SpO2 四通道,没有 .qrs);并阅组 a01er.hea/.apn/.qrs(er = ECG+respiration,头文件把 a01.dat 与 a01r.dat 合成一条 5 通道记录,没有独立 .dat)。典型错误三种:把 a01r.apn 当独立第二套真值(与 a01.apn 内容同源)、直接读 a01r.dat 找 ECG(里面没有心电通道)、在受试者级划分时把同一记录的 r/er/标准组当成三条独立记录。规则一句话:信号看 r、并阅看 er、真值内容两边一样、算记录数永远按一条算。
§11 总结
11.1 三句话总结
- Apnea-ECG 用 70 条整夜单导联 ECG 与逐分钟人工真值,通过 Challenge 2000(四队满分、逐分钟 92.62%)第一次公开证明"仅凭 ECG 可与人类专家一致地筛查呼吸暂停",并开创了延续至今的 PhysioNet/Moody 挑战赛系列。
- 它的真正遗产是协议而非数据:35/35 固定 split、双事件计分、边缘组隔离、官方排行榜永久公开——这套协议使 70 条小库成为二十余年可对照评测的硬基准。
- 它的边界同样清晰:无事件时间戳、无低通气独立标签、无中枢性事件、人群以超重中年为主、c05/c06 同源与未审计 QRS 两处质量存照——用它做筛查级研究是基准,用它做事件级/全人群研究是越界。
对外一句话引用模板(按场合选用):
- 综述场景:“Apnea-ECG(70 条整夜单导联 ECG,PhysioNet,2000)是该任务事实上的公共基准,35/35 固定划分与逐分钟人工标注使跨方法比较成为可能。”
- 方法场景:“我们在 Apnea-ECG 的标准 35/35 协议下报告逐分钟准确率,与 2000 年 Challenge 冠军的 92.62% 直接对照。”
- 教学场景:“不足 1 GB、CPU 可跑、有官方标准答案——生理信号入门的第一课用 Apnea-ECG 不会错。”
11.2 适合谁
- 单导联 ECG 睡眠呼吸暂停检测的新方法验证:35/35 split 历史成绩可对照,入门与发表双友好。
- 可穿戴筛查算法的早期原型:100 Hz 单导联正是消费级设备的信号条件,协议最贴场景。
- 生理信号教学与课程实验:<1 GB、三行代码加载、有官方"标准答案"可对分。
- 跨库泛化研究者:与 UCDDB/sleep-edf 搭配构成域差距研究的经典三角。
11.3 不适合谁
- 需要事件起止时间戳或秒级定位的团队(标注只有分钟粒度)。
- 需要低通气独立标签、中枢性事件覆盖的任务(判定标准明确排除)。
- 需要多模态全量训练的团队(呼吸/血氧仅 8 条)。
- 儿童、孕产妇、轻症人群的模型评估(人群构成不支持外推)。
- 追求大规模预训练的团队(70 条的数据量级与 PTB-XL/cinc-2018-sleep 差两个数量级以上)。
11.4 30 秒决策卡
| 你的情况 | 行动 |
|---|---|
| 要立刻跑通一个基准 | §6.2 十分钟上手 + 35/35 split,对表 §4.4 的 92.62% |
| 要发方法论文 | Challenge 口径逐分钟 accuracy + 记录级成绩双报;先读 §5.3 分清五种口径陷阱 |
| 要做受试者级验证 | 先读坑 5,c05/c06 绑定同侧;受试者数写 ≤69 |
| 要逐搏级分析 | 自备 QRS 检测器(坑 6),.qrs 只可作参考 |
| 要外部验证 | UCDDB(坑 7)或库内 shhs/mesa-sleep;预期性能下降并如实报告 |
| 要商用/闭源管线 | ODC-By 1.0 允许;守住双引用(§6.4)与 DOI 10.13026/C23W2R |
11.5 里程碑时间轴(维护者视角)
| 时点 | 事件 | 对条目的影响 |
|---|---|---|
| 2000-02-10 | 数据库上线 PhysioNet | 数据本体冻结 |
| 2000-09 | Challenge 2000 收官、结果发表 | 评估协议与历史成绩锚定 |
| 2000 年后某时点 | x 系列标注并入 1.0.0 文件包 | 标注全公开(官页文字未更新,坑 3) |
| 2013-04 | c05/c06 同源报告 | 数据质量存照(坑 5),受试者数 ≤69 |
| 2019-02-20 | SHA256SUMS.txt 补加 | 字节级可验证性补齐 |
| 未来 | 无官方更新计划 | 1.0.0 为终版;条目维护触发点仅剩"官页文字修订"与"第三方加载器 API 变化"两类 |
FAQ(高频问答 62 问)
A. 基础认知
Q1:Apnea-ECG 是挑战赛还是数据库?
两者皆是:它首先是 PhysioNet 上一个永久公开的数据库(2000-02-10 发布,1.0.0 版),其次这个数据库正是 PhysioNet/Computers in Cardiology Challenge 2000 的比赛数据——赛后比赛落幕,数据留下。
Q2:谁贡献的数据?
德国 Philipps-Universität Marburg(菲利普斯-马尔堡大学)内科学系的 Thomas Penzel 博士团队采集;PhysioNet(Harvard-MIT HST 与 Beth Israel Deaconess 医学中心的 Moody、Mark、Goldberger)负责数字化标准、托管与比赛运营。官页"Phillips-University"为拼写笔误,正确是 Philipps-Universität。
Q3:数据是哪年采的?
受试者采集时间未逐条公开;数据库 2000 年 2 月 10 日在 PhysioNet 发布,2000 年 2-9 月用于比赛。条目 schema_org 的 temporalCoverage 以发布年 2000 记。
Q4:70 条记录是什么意思?
70 名受试者各一条整夜(7-10 小时)单导联 ECG 记录。learning set 35 条(a01-a20、b01-b05、c01-c10)+ test set 35 条(x01-x35)。严格说是 ≤69 名独立受试者——c05/c06 同源(Q31)。
Q5:a/b/c 前缀是什么意思?
按整夜呼吸紊乱分钟数分组的难度标签:a=呼吸暂停组(≥100 分钟)、b=边缘组(10-96 分钟)、c=对照组(<5 分钟)。x 系列无公开分组。
Q6:这个库解决什么临床问题?
“不穿戴 PSG 能否用一条 ECG 筛查睡眠呼吸暂停”。Challenge 2000 的官方答案:可以——筛查准确率 90-100%、逐分钟 85-93%,与人类专家对完整 PSG 的判读一致度(约 90%)相当。
Q7:它和智能手表的呼吸暂停筛查是一回事吗?
谱系相关但路线不同:本库验证的是"纯 ECG 路线";消费级设备多用"血氧为主+HRV 为辅"路线。两者共享"少信号筛查 OSA"的科学起点(§7.3)。
Q8:发表在哪?
数据描述论文:Penzel T, Moody GB, Mark RG, Goldberger AL, Peter JH. The Apnea-ECG Database. Computers in Cardiology 2000;27:255-258(doi:10.1109/CIC.2000.898505)。比赛总结:Moody GB 等,同会议 207-210 页(doi:10.1109/CIC.2000.898493)。
Q9:数据集的 DOI?
10.13026/C23W2R(PhysioNet Discovery DOI,version 1.0.0)。
Q10:一句话卖点?
70 条记录、一场比赛、92.62%——人类第一次公开证明单导联 ECG 筛查呼吸暂停可行,并让这个证明在二十六年里一直可复现。
B. 数据与获取
Q11:怎么下载?
四通道任选:网页 ZIP(580.6 MB)/ wget 递归 / AWS 开放镜像(–no-sign-request)/ WAVE 在线浏览。无需注册与申请(§6.1)。
Q12:AWS 命令原样给一条?
aws s3 sync --no-sign-request s3://physionet-open/apnea-ecg/1.0.0/ apnea-ecg/——匿名、免密、断点续传。
Q13:ECG 采样率多少?够用吗?
100 Hz。按现代标准偏低,但对 HRV 与逐分钟节律特征方法完全够——Challenge 冠军就是在这个采样率上拿到 92.62% 的。
Q14:每个文件多大?
单条 ECG(.dat)约 5.6-6.5 MB;附加信号文件(a01r.dat,呼吸+SpO2 四通道)约 23-24 MB;.apn 标注约 3.8 KB/条。全库 580.6 MB。
Q15:分辨率是 16-bit 还是 12-bit?
存储 16-bit 容器、采集 12-bit 有效分辨率——两说都出自官方(坑 2),写规格时建议全写。
Q16:SpO2 数据有吗?
8 条 learning set 记录(a01-a04、b01、c01-c03)附带 1 Hz SpO2,另有胸/腹呼吸努力与鼻气流各 20 Hz(§2.4)。仅此 8 条,不是全库。
Q17:有受试者的人口学信息吗?
有:additional-information.txt 提供逐条年龄(27-63 岁)、性别、身高、体重(53-135 kg)、BMI(20.3-42.1)与 AI/HI/AHI(§2.5)。
Q18:下载后怎么读?
Python wfdb 包三行代码(§6.2),或 torch_ecg 的 ApneaECG 类;信号与标注都是 WFDB 标准格式。
Q19:能商用吗?
能。ODC-By 1.0 允许商用,唯一义务是署名双引用(Penzel 2000 + Goldberger 2000)。无 share-alike、无 NC 限制。
Q20:版本会更新吗?
二十六年只有 1.0.0 一版;2019 年补加过 SHA256SUMS.txt。不存在版本选择问题——全网同一批字节。
C. 标注与任务
Q21:标注是谁打的?
人类专家——基于同步记录的呼吸信号(气流、胸腹努力、血氧)逐分钟判定,不是看着 ECG 打的(§3.1)。
Q22:标签是什么形式?
WFDB .apn 二进制注释文件,每分钟一个符号:N(正常)/A(呼吸暂停)。无置信度、无事件起止时间。
Q23:低通气算 A 吗?
算。含低通气的分钟统一记 A(低通气定义:气流降超 50%+SpO2 降≥4%+代偿过度通气)。所以 A 的真实语义是"呼吸暂停或低通气"(§3.2)。
Q24:有中枢性呼吸暂停吗?
没有。官页明示数据库不含纯中枢性呼吸暂停与 Cheyne-Stokes 呼吸,所有事件均为阻塞型或混合型——模型对中枢性事件的泛化未知。
Q25:为什么不给事件起止时间?
分钟级二分类是本库真值的天然粒度;事件级定位需要更细的呼吸事件标注,应转向库内 PSG 级大库(shhs、dreamt 等)。
Q26:.qrs 文件能当金标准吗?
不能。sqrs125 机器生成、未审计、官页明示含错误(§3.4、坑 6)。逐搏分析请自备检测器。
Q27:a01er.apn 是另一套标注吗?
不是。er 后缀(如 a01er)是 ECG-呼吸并阅文件组:头文件把 ECG(a01.dat)与附加信号(a01r.dat)合成一条 5 通道记录,其 .apn/.qrs 标注与标准组内容一致(坑 8)。
Q28:能预测 AHI 吗?
可以间接做:additional-information.txt 提供逐条真实 AHI,部分论文把任务扩展为"ECG 预测 AHI 回归";但逐分钟 A/N 标注本身不含 AHI。
D. Challenge 与基准
Q29:Challenge 2000 是第一届 PhysioNet 挑战赛吗?
是。官方总结论文自称"the first in a planned series of challenges"——即今日 Moody Challenge 系列的起点(§7.1)。
Q30:比赛怎么计分?
Event 1 记录级筛查:只对 20 条 a 类+10 条 c 类计分(满分 30),b 类排除;Event 2 逐分钟量化:35 条 test set 全部 17,268 个真值分钟逐分钟计分。允许多次提交取最优。
Q31:c05/c06 问题是什么?
2013 年用户报告这两条记录来自同一原始记录(c05 比 c06 晚 80 秒开始,c06 疑为修正版),官页已存照。含义:独立受试者 ≤69;受试者级划分需绑定同侧(坑 5)。
Q32:92.62% 是谁、什么任务?
Portland State University 的 McNames、Fraser、Rechtsteiner 队,Event 2 逐分钟量化:15,994/17,268(§4.4)。
Q33:四个满分是谁?
Event 1 满分 30/30:Caltech(Jarvis & Mitra)、Birmingham Heartlands(Raymond 等)、UC Dublin(de Chazal 等)、Portland State(McNames 等),按提交日期破平(§4.3)。
Q34:为什么 Event 1 不计 b 组?
b 组是 10-96 分钟紊乱的边缘地带,计入会诱导参赛者在灰色带乱猜刷分;排除后满分更可信。含 b 的三分类只有一队自发提交:33/35(非官方)。
Q35:深度学习超过 92.62% 了吗?
Challenge 口径下二十余年未有公认超越;近年论文报告 87-95%(口径各异,部分用自定义 split/交叉验证),如 SpiTranNet 2025 报 95.0% 但协议与官方 split 有差异(§5.2)。
Q36:为什么文献里的"准确率"五花八门?
三种口径并存:Challenge test set 口径、70 条交叉验证口径、十折/患者无关混合口径——分母与协议不同不可互比(§5.3)。
E. 复现与工程
Q37:笔记本能复现吗?
能。580.6 MB、CPU 即可;从下载到复现冠军方法的全流程无 GPU 硬需求——这在现代生理信号库中近乎唯一。
Q38:torch_ecg 怎么用?
from torch_ecg.databases import ApneaECG; db = ApneaECG(db_dir=...),提供记录枚举、a/b/c 分组查询、标注加载(第三方维护,非官方)。
Q39:训练前要做什么预处理?
惯例:去基线漂移、按分钟切片、提取 RR 间期/形态/频谱特征(经典路线)或原始波形分段(深度路线);注意保持 100 Hz 原生采样或明确说明重采样。
Q40:怎么避免"编号泄漏"?
a/b/c 前缀与标签强相关(a 组几乎全是"病人")——模型若学到编号规律即伪相关;受试者级划分、组内分层报告、编号打乱后重验是三条守则。
Q41:test set 可以训练吗?
Challenge 口径不行(test set 留作一次性评估)。若做 70 条交叉验证请明确声明协议改变、勿与 92.62% 对照。
Q42:x 系列标注是赛后才有的?
Challenge 期间保密,赛后随 1.0.0 公开;官页描述文字未更新——以文件实况为准(坑 3)。
F. 生产与库内
Q43:本条目与 ptb-xl(70) 的分工?
同库双璧:ptb-xl 记 12 导联静态心律失常大库;本条目记整夜单导联呼吸事件小库。ECG 任务谱系的两端,检索 ECG 数据时应互相提示。
Q44:本条目与 cinc-2018-sleep(493) 的关系?
同属 CinC Challenge 谱系(2000 第一届 vs 2018 第十九届),任务不同(呼吸事件 vs 睡眠分期)、信号不同(单导联 vs PSG 七导联)——挑战赛演化轨迹的两个时间点。
Q45:要做睡眠任务的全家桶研究,路径怎么排?
入门/原型:本库(最小协议)→ 粒度升级:sleep-edf(73)(30 秒分期)→ 规模升级:cinc-2018-sleep(493)/hmc-sleep-staging(654) → 多模态:dreamt(650) → 人群外推:shhs/mesa-sleep。
Q46:如果只记住一件事?
70 条单导联 ECG + 一场 2000 年的比赛,证明了"一条心电曲线能以接近人类专家一致度的准确率筛查呼吸暂停"——而这个证明至今仍可在你的笔记本上复现。
G. 进阶方法学
Q47:为什么 c 组只有 10 条、a 组 20 条?
刻意的不对称:呼吸暂停筛查的实际应用里"阴性对照"样本天然少于"阳性病例"(临床送检者多为疑似患者),分组比例镜像了这个先验。使用者在做平衡采样或重加权时应当知道这个比例是设计出来的,不是采样事故。
Q48:分钟级随机切分为什么是错的?
呼吸暂停以"事件串"出现,相邻分钟标签强相关(§3.7);分钟级随机切分让同一次发作的相邻分钟分居训练/测试两侧,模型只需"记住"事件串的片段即可得分——测试分数虚高且不可复现于真实场景。按记录(受试者)切分是底线纪律。
Q49:能把本库当作睡眠分期任务的预训练语料吗?
能且常用:70 条整夜 ECG 是不小的自监督语料(约 3-4 万分钟连续信号),可以训练 ECG 表征(重建、对比学习),再迁移到分期或筛查任务。但注意:预训练用全量 70 条时,评测"35/35 协议"的 test set 已参与预训练——需要在论文中声明"自监督预训练全量、有监督微调仅 learning set"的双层协议。
Q50:8 条带呼吸信号的记录能做 EDR 吗?
可以且是教科书级用法(§8.5):ECG-呼吸严格成对、无标注依赖,重建质量可直接量化。局限是样本小(8 条),EDR 模型的泛化结论只能算初步证据,最好与 sleep-edf(73) 等库的成对数据联合验证。
Q51:EDR 和 HRV 两条路线怎么选?
看输出需求:只需要逐分钟判别 → HRV 统计特征足够且鲁棒;需要呼吸波形/呼吸率输出(可穿戴功能)→ 必须走 EDR。两者可串联:EDR 先重建呼吸波形,再在重建波形上提取 HRV 之外的呼吸节律特征——这是 Challenge 冠军与时下可穿戴方法的公共骨架。
Q52:跨库迁移前要做哪些对齐检查?
三重域清单(§8.6):硬件域(采样率/增益/导联)、人群域(年龄/BMI/性别谱)、标签域(低通气语义/事件分型/分钟切分规则)。三个域各设一个对照实验,成绩掉分才能归因。
Q53:为什么 92.62% 的纪录这么难破?
三个结构性原因:① 真值通道(呼吸信号)与输入通道(ECG)之间存在信息缺口(§2.7),部分事件在 ECG 上无迹可寻;② test set 只有一次独立评估机会,二十余年的"隐式调参"已把协议内的红利吃尽;③ 92.62% 本身已与人类专家间一致度(约 90%)同量级——继续涨分进入的是"标注噪声的量程",无临床意义增量。
Q54:想给本库补标注(如事件时间戳),可行吗?
技术上可行(用 8 条记录的呼吸通道做参照逐秒标事件),但要意识到两件事:① 你的标注与原版 .apn 语义不同(原版含 hypopnea 计入 A 的规则),两套标签不可混用;② 补标是研究工作而非数据集官方更新——1.0.0 不会变,你的版本须独立命名与许可声明,避免与官方 .apn 混淆。
H. 统计与评估进阶
Q55:该报 accuracy 还是 F1?
按 §3.7 的结构说:主指标逐分钟 accuracy(对表历史),同时报 sensitivity/specificity/F1(宏)防类不平衡失真。只报单一指标(无论哪个)在审稿语境下都算选择性报告。
Q56:AUC 在这个任务里怎么用?
阈值无关比较时用:把模型的逐分钟输出视为连续分数(如 A 类概率),全量分钟上算 ROC-AUC 或 PR-AUC。注意本库分钟分布的不平衡度因记录而异,PR-AUC 对少数类(A 分钟)更敏感。
Q57:kappa 有用吗?
可用于记录级三分类(A/B/C)与逐分钟标签的一致性修正;逐分钟上 Cohen’s κ 的先验由 A 分钟占比决定,跨记录波动大——按记录分别算 κ 再汇总(或用多类 κ)比全局单值更诚实。
Q58:置信区间怎么算才不踩自相关的坑?
分钟级独立假设会严重低估区间宽度(§3.7)。正确姿势:以记录为聚类单元做 bootstrap(重采样 70 条而非数万分钟),或按记录分层的 block bootstrap——区间会宽很多,但那才是真实的区间。
Q59:multiple comparison 要管吗?
做跨库(本库/UCDDB/SHHS 子集)或多特征对照时需要;单库单协议的主实验不涉及。把 §8.6 三重域的对照实验族一起报时,用 Holm 或 Benjamini-Hochberg 控制。
Q60:样本量 70 条能支撑什么统计结论?
记录级对照(如两模型逐分钟差异)用记录级 bootstrap 区间说话;小于 3-5 个百分点的组间差异在本库规模下通常落进噪声带——如实报告"不可区分"比硬报显著更可发表。
Q61:标注本身有噪声吗,怎么在评估里体现?
有——人类专家间一致度约 90% 是官方口径,意味着约 10% 的分钟真值本身存在专家间分歧空间。严谨的评估可在讨论节引用该口径,把模型成绩与"标注噪声地板"并置(§8.4 的论证结构)。
Q62:报成绩时最常被审稿人追问的三件事?
① split 是不是 35/35(协议声明);② c05/c06 怎么处理的(泄漏控制);③ 分母是不是 17,268 口径(复现对齐)。三问都能一句答清,论文就过了大半关。
事实清单(硬事实 43 条)
- Apnea-ECG Database 含 70 条整夜单导联 ECG 记录,PhysioNet 2000-02-10 发布,版本至今 1.0.0。
- 构成:learning set 35 条(a01-a20、b01-b05、c01-c10)+ test set 35 条(x01-x35)。
- 分组标准:a 组呼吸紊乱≥100 分钟、b 组 10-96 分钟、c 组<5 分钟。
- ECG 规格:100 Hz、16 bits/sample 存储(小端)、有效 12-bit 分辨率(双口径存照)、标称 200 A/D units/mV。
- 记录时长:稍短于 7 小时至近 10 小时(第三方整理口径 401-578 分钟)。
- test set 35 条可用参考分钟总数 17,268(Event 2 满分口径)。
- 逐分钟标注 .apn:人工专家基于同步呼吸信号判定,符号 N/A;Challenge 期间仅 learning set 可得,赛后 70 条全部公开(2026-09-27 文件列表实抓 x01-x35.apn 共 35 个)。
- 低通气分钟记为 A(气流降超 50%+SpO2 降≥4%+代偿过度通气);数据库不含纯中枢性呼吸暂停与 Cheyne-Stokes 呼吸。
- 附加信号:8 条记录(a01-a04、b01、c01-c03)有胸/腹呼吸努力(20 Hz,感应式体积描记)、鼻气流(20 Hz,鼻热敏)、SpO2(1 Hz),存于 rnnr.dat。
- rnner.hea 为 ECG-呼吸并阅对照头文件;rnner 系标注与 ECG 侧标注内容一致。
- .qrs 为 sqrs125 机器生成逐搏标注:未审计、官页明示含错误。
- 受试者:男女均有、27-63 岁、体重 53-135 kg、BMI 20.3-42.1;additional-information.txt 提供逐条 AI/HI/AHI。
- 数据贡献者 Thomas Penzel(Philipps-Universität Marburg 内科学系);官页拼写 “Phillips-University” 系笔误。
- PhysioNet 核心团队:George B. Moody、Roger G. Mark、Ary L. Goldberger(Harvard-MIT HST / Beth Israel Deaconess);合作者 J Hermann Peter(Marburg)。
- 数据描述论文:Penzel T 等. The Apnea-ECG Database. Computers in Cardiology 2000;27:255-258,doi:10.1109/CIC.2000.898505。
- Challenge 总结论文:Moody GB 等. Stimulating Rapid Research Advances Via Focused Competition. 同会议 27:207-210,doi:10.1109/CIC.2000.898493。
- PhysioNet 平台引用:Goldberger AL 等. Circulation 101(23):e215-e220, 2000(RRID:SCR_007345)。
- Challenge 2000 于 2000 年 2-9 月在线进行;CinC 2000 会议 2000-09-24~27 于 Cambridge, MA 举行;两项目各 500 美元奖金。
- Event 1 计分规则:20 条 a 类+10 条 c 类(满分 30),b 类排除;四队满分 30/30。
- Event 1 满分四队(按提交日期):Jarvis & Mitra(Caltech,5-03)、Raymond 等(Birmingham Heartlands,5-10)、de Chazal 等(UC Dublin,7-17)、McNames 等(Portland State,9-12)。
- Event 1 次名:PK Stein & Domitrovich(Washington Univ. St. Louis)29/30;含 b 组三-way 非官方成绩 33/35(PK Stein)。
- Event 2 冠军:McNames, Fraser, Rechtsteiner(Portland State)15,994/17,268 = 92.62%。
- Event 2 前五:92.62%(Portland State)/92.30%(Birmingham)/89.36%(UC Dublin)/87.56%(Hannover)/87.30%(Caltech)。
- 官方结论:筛查 90-100%、逐分钟 85-93%,与人类专家对完整 PSG 判读一致度(约 90%)相当。
- 主办方自己的 Beth Israel(Mietus 等)与 McGill(Ballora 等)两队为 unofficial 不参赛夺奖;Event 2 前 8 名中 4 队同时 Event 1 满分。
- Challenge 2000 是 PhysioNet 挑战赛系列第一届(“the first in a planned series of challenges”),现称 Moody Challenge。
- License:Open Data Commons Attribution License v1.0(ODC-By 1.0),官页明示;非 ODbL、非 CC。
- 获取:网页 ZIP 580.6 MB / wget 递归 / AWS 开放镜像 s3://physionet-open/apnea-ecg/1.0.0/(–no-sign-request)/ WAVE 在线;无注册门槛。
- 总大小双口径:1.0.0 官页 580.6 MB vs archive 旧页 583 MB。
- 版本链:仅 1.0.0;2019-02-20 补加 SHA256SUMS.txt;无修订版本。
- c05 与 c06 来自同一原始记录(c05 比 c06 晚 80 秒开始,c06 疑为修正版;2013-04 Chiu-wen Wu 报告、官页存照)——独立受试者数 ≤69。
- PhysioNet DOI:10.13026/C23W2R;官页 Topics:apnea/sleep/multiparameter/challenge/ecg。
- WFDB 标准格式;Python wfdb 包支持 pn_dir 远程直读;torch_ecg 提供 ApneaECG 封装类。
- 35 learning + 35 test 固定 split 成为社区沿用二十余年的标准评估协议;Challenge 口径 test set 逐分钟 accuracy 是历史对照锚点。
- 深度学习代表成绩(口径各异):NYCU 1D-CNN 逐分钟 87.9%/逐记录 97.1%;FASSNet 87.09%(轻量,患者无关协议严重度>90%);CNN-BiGRU 91.22%/97.1%/AHI 相关 0.984;SpiTranNet(2025)95.0%/100%。
- 跨库迁移难点:Apnea-ECG→UCDDB 直接迁移性能显著下降(采样率/人群/事件谱系三重域差距)。
- UCDDB(University College Dublin Database)为另一独立数据集:25 条、双导联、含中枢性事件——与本库常被搭配、不可混淆。
- Challenge 期间规则:test set 标注保密、允许多次提交取最优;官页记录每位参赛者最好成绩、日期与提交次数。
- 官页描述文字 “16 bits per sample” 与 Challenge 论文 “12-bit resolution” 并存(存储容器 vs 有效分辨率);官页 “.apn 仅 learning set” 文字未随文件实况更新——两处过时文字均以文件实况/论文为准。
- 官页数据说明明示 .qrs “unaudited and contain errors”,建议修正、鲁棒使用或忽略。
- Event 1 的计分对象是 test set 35 条(A 类 20 + C 类 10 计分、B 类 5 条不计)——learning set 的 a/b/c 分组只是开发期参照,文献与二手资料常把两者混写。
- 附加呼吸信号的 8 条记录全部位于 learning set;x 系列(test set)无任何非 ECG 通道——EDR 等成对数据实验的素材上限是 8 条。
- 官页 LightWAVE/WAVE 支持免下载在线目检波形与标注,.xws 文件是其引用入口。
术语表(40 条)
| 术语 | 释义 |
|---|---|
| 睡眠呼吸暂停(sleep apnea) | 睡眠中呼吸反复暂停的疾病,分阻塞型/中枢型/混合型 |
| 阻塞型睡眠呼吸暂停(OSA) | 上气道塌陷导致的呼吸暂停,本库事件的主类型 |
| 中枢性呼吸暂停 | 中枢神经驱动缺失所致,本库明确不含 |
| Cheyne-Stokes 呼吸 | 渐强-渐弱的周期性呼吸模式,心衰人群常见,本库不含 |
| 低通气(hypopnea) | 呼吸气流下降超 50% 伴 SpO2 降≥4% 的事件,本库计入 A 标签 |
| AHI | 呼吸暂停低通气指数:每小时 A+H 事件数;本库逐条提供真实值 |
| AI/HI | 呼吸暂停指数/低通气指数:AHI 的两个分项 |
| PSG | 多导睡眠图:睡眠研究的金标准采集协议(脑电+呼吸+血氧等十余路) |
| 单导联 ECG | 仅一路心电信号;本库整夜记录的输入模态 |
| 逐分钟标注 | 每 60 秒一个二分类标签(A/N)的标注粒度,本库真值形态 |
| WFDB | PhysioNet 的信号-注释存储标准(.dat/.hea/.apn/.qrs) |
| .apn 文件 | 本库逐分钟呼吸暂停标注的 WFDB 二进制注释文件 |
| .qrs 文件 | sqrs125 程序生成的逐搏 QRS 标注(未审计) |
| sqrs125 | PhysioNet 经典单导联 QRS 检测程序 |
| QRS 波 | 心室除极在 ECG 上的特征波群,逐搏分析的定位锚点 |
| RR 间期 | 相邻 R 波间期,HRV 分析的原始序列 |
| HRV | 心率变异性:RR 间期波动携带自主神经信息,是 ECG 检测呼吸暂停的主要信息源之一 |
| RSA | 呼吸性窦性心律不齐:心率随呼吸周期性波动,呼吸暂停时特征性消失 |
| 感应式体积描记 | inductive plethysmography:以感应带测量胸/腹呼吸努力的传感技术 |
| 鼻热敏式气流 | nasal thermistor:以温度变化测量口鼻气流的传感技术 |
| SpO2 | 脉搏血氧饱和度;本库 8 条记录附带 1 Hz 通道 |
| PhysioNet / PhysioBank | Harvard-MIT 系公共生理信号研究资源;PhysioBank 为其数据库总库 |
| PhysioNet Challenge | 年度公开算法竞赛(CinC Challenge,2000 起;今称 Moody Challenge) |
| CinC | Computers in Cardiology:年度学术会议,挑战赛结果的发布地 |
| learning set / test set | 训练开发用带标注子集/评估用子集;本库 35/35 固定划分 |
| 记录级筛查 | 每条记录判"有无显著呼吸暂停"的任务(Event 1) |
| 逐分钟量化 | 每分钟判 A/N 的任务(Event 2),对应监测场景 |
| 边缘组(borderline group) | b 组:呼吸紊乱负荷居中的 5 条记录,Event 1 排除计分 |
| ODC-By 1.0 | Open Data Commons Attribution License v1.0:署名即可自由使用的数据库许可 |
| UCDDB | University College Dublin 的呼吸暂停 ECG 库(25 条双导联),本库最常用的外部验证对照 |
| Sensitivity/Sensitivity(灵敏度) | A 分钟中被正确检出的比例——漏诊成本的度量 |
| Specificity(特异度) | N 分钟中被正确判为正常的比例——误报成本的度量 |
| F1(宏平均) | 精确率与召回率的调和平均,多类下按类平均以防多数类主导 |
| AUC | ROC 曲线下面积:阈值无关的判别力度量 |
| 数据泄漏(data leakage) | 训练与评估单元未隔离导致测试分数虚高;本库的 c05/c06 与分钟级随机切分是两个经典来源 |
| StratifiedGroupKFold | scikit-learn 的"分层+分组"交叉验证切分器,可同时保证类别比例与 c05/c06 同侧 |
| EDR | ECG-derived respiration:从 ECG 反推呼吸波形的技术,本库 8 条成对数据可定量验证 |
| 事件串(event cluster) | 呼吸暂停以连续数分钟成串出现的模式,是分钟标签强自相关的来源 |
| 事件级标注 | 带起止时间的呼吸事件标注(SHHS 系大库的形态),本库不具备 |
| 分钟级聚合 | 把事件级/秒级预测聚合成逐分钟判定的后处理,是跨库成绩对齐的常用桥 |
附录
附录 A:条目信息速查卡
| 项 | 值 |
|---|---|
| 条目名 | Apnea-ECG Database |
| url_name | apnea-ecg |
| 类型 | 数据库+挑战赛底座+基准协议(三合一) |
| 论文 | Computers in Cardiology 2000;27:255-258(doi:10.1109/CIC.2000.898505) |
| 团队 | Philipps-Universität Marburg(数据)+ PhysioNet/Harvard-MIT(平台与比赛) |
| 规模 | 70 条整夜单导联 ECG(learning 35 + test 35) |
| 标注 | 逐分钟 A/N 人工真值;8 条附加呼吸/血氧;全部记录带未审计 QRS |
| 许可 | ODC-By 1.0(署名即可,含商用) |
| 获取 | PhysioNet 四通道,无注册;580.6 MB |
| DOI | 10.13026/C23W2R |
| 抓取时点 | 2026-09-27 |
| 官方话题标签 | apnea / sleep / multiparameter / challenge / ecg |
| 与 UCDDB 关系 | 名字相近的两个库,常搭配、不可混淆(坑 7) |
| 库内互链 | sleep-edf(73)/chb-mit-scalp-eeg(72)/ptb-xl(70)/cinc-2018-sleep(493)/hmc-sleep-staging(654)/dreamt(650) |
附录 B:DAIMS 评估全表
| 维度 | 评分(1-10) | 依据 |
|---|---|---|
| D 可发现性 | 9 | PhysioNet 官页+DOI+二十余年文献引用网;三个常见名称(apnea-ecg/Apnea-ECG Database/CinC Challenge 2000 data sets)均可命中;扣 1 分:与 UCDDB 名称易混 |
| A 可获取性 | 10 | 四通道全开放、无注册、AWS 匿名镜像、580.6 MB——库内最开放档 |
| I 可互操作 | 9 | WFDB 标准格式+wfdb/torch_ecg 加载器+SHA256 校验;100 Hz 原生格式无需转换;扣 1 分:分钟粒度标签与主流 30 秒 epoch 任务不互通需自行转换 |
| M 元数据质量 | 7 | 逐条人口学+AI/HI/AHI 完整;但官页两处过时文字(标注可得性、机构拼写)未修订,.qrs 未审计声明被动发现 |
| S 可持续性 | 9 | PhysioNet 平台级维护二十六年、AWS 开放镜像双备份、SHA256SUMS 固定字节;单版本无演化风险 |
| 综合评级 | 8.8/10(高) | 获取/互操作/可持续三维接近满分;元数据过时文字与任务粒度局限是小瑕疵;规模小不影响 AI-Ready 评级但限制任务覆盖 |
附录 C:逐项证据链自证
| 关键数字 | 来源 | 位置/URL |
|---|---|---|
| 70 条=35+35、a/b/c 分组、100 Hz、16 bits/sample、200 A/D units/mV | PhysioNet 官页 Data Description | physionet.org/physiobank/database/apnea-ecg/(搜索实抓 2026-09-27) |
| 时长 7-10 小时、12-bit resolution、附加信号 20 Hz/1 Hz、低通气定义、无中枢型 | Challenge 2000 官页与总结论文 PDF | moody-challenge.physionet.org/2000 与 physionet.org/files/challenge-2000/1.0.0/papers/challenge-cinc-2000.pdf |
| x01-x35.apn 共 35 个公开 | PhysioNet 1.0.0 文件列表 curl 实抓 | physionet.org/files/apnea-ecg/1.0.0/(2026-09-27) |
| Event 1 满分四队/29/30/三-way 33/35 | Challenge 2000 Final Top Scores | archive.physionet.org/challenge/2000/top-scores.shtml |
| Event 2 15,994/17,268=92.62% 及前八名 | Moody Challenge 2000 官页 | moody-challenge.physionet.org/2000(Event 2 表) |
| 17,268 分钟满分口径 | 同上(“the total number of minutes in the 35 recordings”) | 同上 |
| 401-578 分钟、N/A 符号、分组分钟阈值 | torch_ecg ApneaECG 文档(第三方) | deeppsp.github.io/torch_ecg/.../ApneaECG.html |
| ODC-By 1.0、DOI 10.13026/C23W2R、580.6 MB、发布日期 2000-02-10、AWS 镜像 | PhysioNet 官页 Share/Access 与 Versions 区 | physionet.org/physiobank/database/apnea-ecg/ |
| 受试者 27-63 岁/53-135 kg/BMI 20.3-42.1 | Challenge 2000 官页(赛后补充信息段) | alpha.physionet.org/content/challenge-2000/1.0.0/papers/ |
| c05/c06 同源(80 秒偏移,2013 报告) | PhysioNet 官页追记 | physionet.org/physiobank/database/apnea-ecg/(April 2013 段) |
| 论文 doi 10.1109/CIC.2000.898505/898493 | IEEE 经 torch_ecg 引用块与 UTB 图书记录 | 搜索实抓 2026-09-27 |
| 现代成绩 87.9%/87.09%/91.22%/95.0% | NYCU 摘要页/FASSNet(IOPscience)/CNN-BiGRU(Lacuna 转述)/SpiTranNet(Frontiers) | 各论文页 2026-09-27 实抓 |
附录 D:数据获取决策树
需求是什么?
├── 只想跑通基准/教学实验
│ └── wfdb 三行远程直读(§6.2),无需下载全库
├── 完整本地复现(含 Challenge 口径评测)
│ ├── 1) AWS 镜像同步全库(580.6 MB,§6.1)
│ ├── 2) learning set 35 条训练,test set 35 条一次性评估
│ └── 3) 与 §4.4 排行榜对照(口径 §5.3)
├── 逐搏级分析
│ ├── 自备 QRS 检测器(.qrs 未审计,坑 6)
│ └── 或声明鲁棒性并量化 sqrs125 噪声
├── 受试者级泛化评估
│ ├── c05/c06 绑定同侧(坑 5)
│ └── 受试者数报告 ≤69
└── 需要多模态/事件级/大人群
└── 转库内 dreamt(650)/hmc-sleep-staging(654)/cinc-2018-sleep(493)/shhs
附录 E:引用格式(BibTeX)
@inproceedings{penzel2000apnea,
title = {The Apnea-ECG Database},
author = {Penzel, T. and Moody, G. B. and Mark, R. G. and Goldberger, A. L. and Peter, J. H.},
booktitle = {Computers in Cardiology 2000. Vol.27 (Cat. 00CH37163)},
series = {CIC-00},
doi = {10.1109/CIC.2000.898505},
publisher = {IEEE},
pages = {255--258},
year = {2000}
}
@misc{apneaecg_physionet,
title = {Apnea-ECG Database},
author = {Penzel, Thomas and Moody, George B and Mark, Roger G and Goldberger, Ary L and Peter, J Hermann},
doi = {10.13026/C23W2R},
publisher = {physionet.org},
year = {2000}
}
@article{goldberger2000physiobank,
title = {PhysioBank, PhysioToolkit, and PhysioNet: Components of a New Research
Resource for Complex Physiologic Signals},
author = {Goldberger, Ary L. and Amaral, Luis A. N. and Glass, Leon and
Hausdorff, Jeffrey M. and Ivanov, Plamen Ch. and Mark, Roger G. and
Mietus, Joseph E. and Moody, George B. and Peng, Chung-Kang and
Stanley, H. Eugene},
journal = {Circulation},
volume = {101},
number = {23},
pages = {e215--e220},
year = {2000}
}
三条引用构成完整引用组:数据论文(Penzel)+ 数据集本体(PhysioNet DOI)+ 平台(Goldberger)。官页要求前两条同时给出,第三条为 PhysioNet 标准引用。
附录 F:扩展实验设计模板(患者无关交叉验证)
要在 35/35 协议之外做更强的泛化评估(全量 70 条、患者无关),可按以下骨架搭建:
# 患者无关(subject-wise)10 折交叉验证骨架
import numpy as np
from sklearn.model_selection import StratifiedKFold
records = [f"a{i:02d}" for i in range(1, 21)] + \
[f"b{i:02d}" for i in range(1, 6)] + \
[f"c{i:02d}" for i in range(1, 11)] + \
[f"x{i:02d}" for i in range(1, 36)]
# 1) c05/c06 绑定同侧:把它们视为一个"超级记录"组(坑 5)
groups = [ "c05+c06" if r in ("c05", "c06") else r for r in records ]
# 2) 记录级标签:a/b/x 多数含显著紊乱(可用 additional-information.txt 的 AHI 精确二分)
# 此处示意按组前缀分层
rec_label = [1 if r.startswith(("a", "b")) else 0 for r in records]
# 3) 分层分组 K 折(同一"超级记录"的成员永远同侧)
skf = StratifiedKFold(n_splits=10, shuffle=True, random_state=42)
for tr_idx, te_idx in skf.split(records, rec_label):
# 注意:StratifiedKFold 不感知 groups;严格实现请换
# sklearn.model_selection.GroupKFold 或 StratifiedGroupKFold,
# 以 groups 数组保证 c05/c06 不被拆开
train_recs = [records[i] for i in tr_idx]
test_recs = [records[i] for i in te_idx]
# 4) 逐记录读信号 -> 逐分钟切片 -> 特征/模型 -> 记录级聚合(见 §6.2)
...
三条纪律:① 用 StratifiedGroupKFold 把 groups 传进去(上面注释的位置),否则 c05/c06 可能被拆到两侧;② 报告 10 折均值±标准差,并与 35/35 协议成绩分开陈述,两者不可平均;③ test set x 系列一旦进入训练(本模板正是如此),就永久失去"Challenge 口径对照"资格——两条协议各写一节,别混。
附录 G:与相邻库的粒度/规格转换对照
把本库数据接到库内相邻条目的任务时,规格差异速查:
| 转换方向 | 采样率处理 | 标签粒度处理 | 主要陷阱 |
|---|---|---|---|
| 本库 → sleep-edf(73) | 100 Hz ↔ 100 Hz(ECG 通道一致) | 分钟 → 30 秒 epoch(拆 1 分 2,边界分钟引入噪声) | 分期标签与呼吸事件不同轴,只做特征级迁移 |
| 本库 → cinc-2018-sleep(493) | 100 Hz → 多通道 PSG 的 ECG 通道(对齐通道名) | 分钟 → 30 秒 epoch | 大库 ECG 通道位置/增益不同,需重校准 |
| 本库 → hmc-sleep-staging(654) | 100 Hz → 256 Hz(上采样或重提取) | 分钟 → 30 秒 epoch | 上采样不产生新信息,模型侧按目标率设计即可 |
| 本库 → dreamt(650) | 100 Hz → 对齐其 ECG 通道率 | 分钟 → 30 秒 + 事件级 | dreamt 有事件级标注,方向反过来(事件聚合成分钟)更自然 |
| 本库 → shhs/mesa-sleep | 各库 PSG 的 ECG 通道率不一 | 分钟 → 事件级/epoch | 人群域差异最大(§8.6),先做人群分层再谈迁移 |
| 本库 → ptb-xl(70) | 100 Hz → 500/100 Hz 两档 | 逐分钟事件 → 静态节律标签 | 任务不同轴(整夜动态 vs 短程静态),仅共享特征工程与预训练价值 |
附录 H:常见审稿意见预演(本库论文高频三问与标准答法)
| 审稿意见 | 风险本质 | 标准答法 |
|---|---|---|
| “Split 是否与历史可比?” | 协议漂移 | 声明 35/35 或声明协议变更;两条协议分节陈述,不与 92.62% 混表(§5.3) |
| “c05/c06 如何处理?” | 同源泄漏 | 绑定同侧 + 受试者数写 ≤69 + 引官页 2013 追记(坑 5) |
| “为什么不超过/远超 92.62%?” | 上限认知 | 引 §2.7 信息缺口与"人类一致度约 90%"量程——涨分进入标注噪声区,掉分检查口径而非能力 |
预演的价值:这三问覆盖了本库投稿意见的绝大多数高频条目,方法节按 §5.5 六步清单写、讨论节按 §8.4/§8.6 论证,可把审稿往返压缩一轮。
附录 I:上手 15 分钟检查清单(打印即用)
[ ] 1. 通读 §1 十二问,明确你的任务属于哪一格
[ ] 2. 决定协议:35/35(对表历史)或全量交叉验证(声明变更)——§4.2/§5.3
[ ] 3. 下载:AWS 镜像 --no-sign-request(§6.1),校验 SHA256SUMS.txt
[ ] 4. wfdb 三行读通第一条记录(§6.2),目检信号与 .apn 对齐
[ ] 5. 检查清单化:c05/c06 绑定(坑 5)、.qrs 处置声明(坑 6)、
UCDDB 勿混(坑 7)、r/er 文件名(坑 8)
[ ] 6. 基线跑通:逐分钟 accuracy + sens/spec/F1 五项齐报(§3.7)
[ ] 7. 对表:与 §4.4 的 92.62% 同口径比较(分母 17,268)
[ ] 8. 引用三件套粘贴(§6.4),DOI 10.13026/C23W2R 写对
八个框全打勾,你的实验就已经在"可与二十余年文献对话"的轨道上了。
附录 J:与库内其他条目写作的呼应点
- 与 ptb-xl(70):两库同为 PhysioNet 旗舰,条目互链时"静态多导联 vs 整夜单导联"是标准对照句式;
- 与 sleep-edf(73):同为 2000 年前后 WFDB 经典,"分钟 vs 30 秒"粒度对照在两条目中各自展开;
- 与 cinc-2018-sleep(493):挑战赛谱系的时间锚(第一届 vs 第十九届),赛制演化的叙事在两条目间互相引用;
- 与 dreamt(650)/hmc-sleep-staging(654):现代多模态条目引用本库时统一口径为"单导联筛查基准的鼻祖",避免"古董库"的贬义化表述。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- cinc-2021 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准
- hmc-sleep-staging — 共享标签:生理信号 / 心电信号 / 睡眠信号 / 评测基准
- cinc-2013 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准
- ltafdb — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准
- cinc-2020 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准
- cinc-2014 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 评测基准
- qt-database — 共享标签:生理信号 / 心电信号 / 评测基准
- isruc-sleep — 共享标签:生理信号 / 睡眠信号 / 评测基准
- dreamt — 共享标签:生理信号 / 睡眠信号 / 评测基准
- cpsc — 共享标签:生理信号 / 心电信号 / 挑战赛数据集
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

