信息速览

QT Database — ECG 波形边界标注金标准 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | QT Database(QTDB) |
| 英文全称 | QT Database: A Database for Evaluation of Algorithms for Measurement of QT and Other Waveform Intervals in the ECG |
| 别名/简称 | QTDB、PhysioNet QT Database、qtdb |
| 疾病分类 | 心电图波形测量学(非单一疾病队列)。核心映射:BC65.0 长 QT 综合征 / BA6Z 缺血性心脏病,未特指 / 心律失常与心脏猝死相关表型(详见 §2.1) |
| SNOMED CT | 301188000 Prolonged QT interval / 442174000 Long QT syndrome / 29303009 Electrocardiographic procedure / 286933004 QT interval(详见 §2.2) |
| 数据模态 | 时序(双导联 ECG 数字信号,250 Hz)+ 逐搏波形边界专家标注 |
| AI 任务类型 | 信号语义分割(波形描记)、目标检测(QRS/P/T 定位)、回归预测(QT/PR 间期测量)、半监督学习、观察者间变异性分析 |
| 样本总数 | 105 条记录(每条 15 分钟双导联)/ 3,622 个人工标注心搏 / 约 135,000 个自动标注心搏 |
| 数据大小 | 82.9 MB(解压后)/ 83.1 MB(ZIP) |
| 数据格式 | WFDB(.hea 头文件 / .dat 信号,format 212 十二位打包 / .q1c、.pu 等二进制标注文件) |
| 许可证 | Open Data Commons Attribution License v1.0(ODC-BY 1.0) |
| 访问级别 | 开放(无需注册、无需 CITI 培训,直接下载) |
| DUO 标签 | NRES(含署名义务,详见 ODC-BY 1.0) |
| 语言 | 英文(文档与标注符号) |
| 首发日期 | 1997-09(Computers in Cardiology 论文)/ 1999-11-16(PhysioNet 上线) |
| 最后更新 | 1999-11-16(v1.0.0,此后永久冻结) |
| 发布机构 | PhysioNet(Harvard-MIT 健康科学与技术部 & 贝斯以色列女执事医疗中心 & 萨拉戈萨大学) |
| 官方主页 | https://physionet.org/content/qtdb/1.0.0/ |
| 下载地址 | https://physionet.org/files/qtdb/1.0.0/ (wget 递归下载) |
| DOI | 10.13026/C24K53(数据集)/ 10.1109/CIC.1997.648140(论文) |
| 引用次数 | 930+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 完全开放、WFDB 标准格式、wfdb-python 即装即用、人工金标准 + 双人标注子集;扣分项:人工标注规模小、无官方划分、自动标注不可作真值、T 波无 onset |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(QT 间期临床意义、ICD-11 与 SNOMED CT 映射、金标准标注流程描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(WFDB 标注后缀体系、num 字段语义)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 PhysioNet、MIT、BIDMC、萨拉戈萨大学无任何商业利益关联。本页面不销售 QT Database 数据集本身(其为完全开放数据),仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。QT Database 采用 ODC-BY 1.0 协议,使用与再发布时须按规范署名(引用 Laguna 1997 论文、数据集 DOI 与 PhysioNet 平台,三件套见 §9)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
QT Database(QTDB) 是 PhysioNet 于 1999 年发布的经典心电数据集,由萨拉戈萨大学的 Pablo Laguna 与 MIT 的 Roger Mark、George Moody 及 BIDMC 的 Ary Goldberger 合作构建。它包含 105 条 15 分钟的双导联 ECG 记录(统一 250 Hz),从 MIT-BIH 心律失常库、欧洲心脏病学会 ST-T 库、猝死 Holter 等七个来源数据库中精选,覆盖尽可能多样的 QRS 与 ST-T 形态。
它的价值不在"大",而在"准":心脏病专家逐搏手工标注了 3,622 个心搏的 P 波、QRS 波群、T 波乃至 U 波的起点、峰点与终点——这是 ECG 波形描记(delineation)这一细分任务全球最权威的人工金标准。过去近三十年,从 Martínez 的小波描记器到今天的 1D U-Net,几乎所有波形边界检测算法都在 QTDB 上接受检验;其原始论文在 Google Scholar 已被引用 930 余次(截至 2026-09)。
你可以用它来:评测自研 ECG 分割/描记算法并与文献可比、研究 QT 间期自动测量的精度极限、用 11 条双人标注记录分析观察者间变异性、或结合 13.5 万条自动标注做半监督预训练。
§1.1 摘要
QTDB 的设计目标是回答一个看似简单却困扰领域数十年的问题:自动算法测量 QT 间期(以及 PR、QRS 时限)到底能有多准? 构建团队从七个既有 ECG 数据库中选取 105 条 15 分钟双导联片段,刻意规避显著基线漂移与伪差,统一重采样至 250 Hz(WFDB format 212)。每条记录的最后 5 分钟内,心脏病专家手工标注 30-100 个"正常"心搏的 P/QRS/T/U 波形边界(共 3,622 搏;QRS fiducial 点由自动检测器给出);前 10 分钟刻意留空,供算法"自适应学习"。其中 11 条记录由两位专家独立标注,用于量化观察者间变异性。除人工标注外,数据集还内置 ecgpuwave 算法对全部心搏(约 13.5 万搏)的自动描记输出(.pu/.pu0/.pu1 文件),形成"少量高质量 + 海量低质量"的天然半监督结构。数据集 1999-11-16 上线 PhysioNet,v1.0.0 永久冻结,ODC-BY 1.0 完全开放。
§1.2 战略价值分析
方法学评测维度:在 QTDB 之前,各团队的 ECG 描记算法各自为政——用私有数据、私有标注、私有误差口径,论文间完全无法比较。QTDB 首次给出"公开信号 + 公开专家标注 + 公开评测口径(误差均值/标准差,对照 CSE 医生间容差)"的完整闭环,直接定义了 delineation 这一子领域的评测范式。Martínez 等人 2004 年发表于 IEEE TBME 的小波描记器(引用 2,300+)正是凭借在 QTDB、CSE 等标准库上的系统对比成为该领域被引最高的方法学论文。
监管科学维度:QT 间期测量精度不只是学术问题。2005 年 ICH E14 指南要求所有非抗心律失常新药开展 thorough QT/QTc 研究以评估尖端扭转型室速风险,而监管机构当时仅认可人工测量——"全自动算法能否达到临床可接受精度"成为产业级问题。QTDB 作为唯一公开的逐搏边界金标准,是这一问题所有后续研究(包括 2006 年 PhysioNet/CinC QT 测量挑战赛)的方法学起点。QTDB 上建立的专家间一致性参照(约 6-10 ms RMS)至今仍是评判任何 QT 测量新算法(包括深度学习)的标尺。
数据工程维度:QTDB 是"小而精"数据设计的教科书:105 条记录刻意覆盖多样形态而非追求规模;前 10 分钟无标注段供算法自适应;11 条双人标注量化标注者噪声上限;自动标注全量搏动提供免费的弱标签。2021 年 Jimenez-Perez 等人的 U-Net 工作正是利用这一"3,246 高质量 + 135,170 低质量"的混合结构做出 SOTA 级结果——这一思路后来被广泛复制到其他小样本医学信号任务。
§1.3 横向对比
| 数据集 | 规模 | 导联/采样率 | 标注粒度 | 核心差异化 |
|---|---|---|---|---|
| QTDB | 105 条 × 15 分钟 | 2 导联 / 250 Hz | 3,622 搏专家逐搏边界(P/QRS/T/U)+ 全量自动标注 | 波形描记评测事实标准;双人标注子集;完全开放 |
| LUDB | 200 条 × 10 秒 | 12 导联 / 500 Hz | 每搏人工描记(P/QRS/T,无 U) | 导联多、每搏标注;无长期形态多样性设计 |
| MIT-BIH Arrhythmia | 48 条 × 30 分钟 | 2 导联 / 360 Hz | 全搏动类型标注(无波形边界) | 心律失常分类金标准;不可评测描记 |
| PTB-XL | 21,837 条 × 10 秒 | 12 导联 / 500 Hz | 报告级语句标注(无逐搏边界) | 大规模诊断分类;非描记用途 |
| CSE Database | 约 1,000 条 × 10 秒 | 12/15 导联 / 500 Hz | 5 位专家 + 15 个程序的参考中位点 | 官方容差标准来源;不公开,几乎不可得 |
QTDB 的不可替代性:它是唯一同时满足"公开可下载 + 专家逐搏边界 + 双人标注子集 + 全量自动弱标签"的描记评测集。LUDB 导联更多但每条仅 10 秒、无 U 波;CSE 库定义了容差标准却无法获取;MITDB/PTB-XL 根本没有边界标注。
§1.4 版本演进时间轴
| 时间 | 事件 |
|---|---|
| 1994 | Laguna et al. 发表 CSE 库多导联波形检测验证方法(Computers and Biomedical Research 27:45-60),奠定描记评测方法学 |
| 1997-09 | 数据集论文发表:Laguna P, Mark RG, Goldberger AL, Moody GB. Computers in Cardiology 24:673-676(DOI: 10.1109/CIC.1997.648140) |
| 1999-11-16 | QTDB v1.0.0 上线 PhysioNet(105 条记录,此后永久冻结) |
| 2000 | Goldberger et al. PhysioNet 平台论文发表(Circulation 101:e215-e220) |
| 2004-04 | Martínez et al. 小波描记器发表(IEEE TBME 51:570-581),以 QTDB 为核心评测集,成为领域被引最高方法学论文 |
| 2005-05 | ICH E14 指南 step 4 通过,thorough QT/QTc 研究成为新药强制要求 |
| 2006-09 | PhysioNet/CinC Challenge 2006(QT 间期测量,使用 PTB Diagnostic ECG DB)——注意并非 QTDB,见 §6.5 坑点 6 |
| 2015-09 | PhysioNet 为 QTDB 分配 DOI(10.13026/C24K53) |
| 2020-01 | Moskalenko et al. UNet 描记(arXiv:2001.04689),深度学习进入描记任务 |
| 2021 | Peimankar & Puthusserypady DENS-ECG(ESWA 165:113911);Jimenez-Perez et al. 混合质量标注 U-Net(Scientific Reports 11:524) |
| 2023 | Joung et al.(arXiv:2304.06237)系统揭示心律失常对描记模型的挑战,指出 QTDB 低心率偏倚 |
§1.5 典型 AI 应用场景
- ECG 波形描记算法评测:在 .q1c 金标准上报告 P/QRS/T onset/offset 的误差均值与标准差,与 Martínez 2004 以来的全部文献直接可比。
- QT 间期自动测量研究:药物安全(thorough QT)、QT 变异性(QTV)、长 QT 综合征筛查算法的精度验证。
- 深度学习分割模型训练:1D U-Net / CNN-LSTM 将描记转化为逐采样点多分类分割任务,QTDB 是最常用的训练与评测集。
- 半监督与弱监督学习:3,622 搏强标签 + 约 13.5 万搏 ecgpuwave 弱标签,是研究"少量金标准 + 海量机器标注"范式的天然实验场。
- 观察者间变异性与标注噪声研究:11 条双人标注记录(.q1c vs .q2c,及 .qt1 vs .qt2 第一/第二遍)用于量化金标准本身的噪声水平。
§2 医学背景
§2.1 ICD-11 疾病分类锚定
QTDB 不是单一疾病队列,而是波形测量学(waveform metrology)数据集——其临床锚点是 ECG 各波段的时限测量及其疾病关联:
| 数据集内容 | 临床关联 | ICD-11 对应 |
|---|---|---|
| QT 间期测量(QRS onset → T 波 offset) | 先天性/获得性 QT 延长、尖端扭转型室速风险、药物心脏安全性 | BC65.0 长 QT 综合征 |
| PR 间期 / P 波形态测量 | 房室传导阻滞、房性心律失常基质 | BB2Z 房室传导阻滞,未特指 |
| QRS 时限测量 | 束支传导阻滞、室性心律起源判别 | BC63.Z 心室传导延迟,未特指 |
| ST-T 形态多样性(ESC ST-T / MIT-BIH ST 来源记录) | 心肌缺血、ST 段抬高/压低 | BA6Z 缺血性心脏病,未特指 |
| 猝死 Holter 记录(24 条) | 恶性室性心律失常、心脏性猝死 | BC82 心室颤动(相关表型) |
为什么"测量"本身值得一个数据集:QT 间期延长是最著名的例子——它反映心室复极化延迟,与尖端扭转型室速(TdP)及猝死风险定性相关。2005 年 ICH E14 指南要求所有非抗心律失常新药在上市前完成 thorough QT/QTc 研究。但 QT 测量的天花板不在算法,而在"终点在哪里":T 波终点(T-end)与基线的交点即便在专家之间也有 6-30 ms 的波动(CSE 容差 ±30.6 ms,2σ)。QTDB 的全部设计都围绕"量化并压缩这一测量不确定性"展开。
§2.2 SNOMED CT 映射
| 临床概念 | ICD-11 | SNOMED CT | SNOMED CT 术语 |
|---|---|---|---|
| QT 间期(观察指标) | — | 286933004 | QT interval (observable entity) |
| QT 间期延长 | BC65.0(综合征口径) | 301188000 | Prolonged QT interval (finding) |
| 长 QT 综合征 | BC65.0 | 442174000 | Long QT syndrome (disorder) |
| 心电图检查(操作) | — | 29303009 | Electrocardiographic procedure (procedure) |
| 动态心电监测 | — | 426847000 | Holter monitor evaluation (procedure) |
| 尖端扭转型室速 | BC71.2 | 111288001 | Torsades de pointes (disorder) |
§2.3 疾病简介
心电图各波段时限是心脏电生理最基础的定量指标:P 波时限反映心房内传导(延长提示房内阻滞),PR 间期反映房室传导(延长为一度房室阻滞),QRS 时限反映心室去极化(>120 ms 提示束支阻滞或室性起源),QT 间期反映心室去极化与复极化总时长。QT 间期随心率变化,临床上以 Bazett 或 Fridericia 公式校正为 QTc;QTc 男性 >450 ms、女性 >470 ms 通常视为延长。获得性 QT 延长可由药物(抗心律失常药、大环内酯类、抗组胺药等)、电解质紊乱(低钾、低镁)引起,是药物撤市最常见的心脏安全原因;先天性长 QT 综合征患病率约 1/2,500,是青少年猝死的重要病因。准确的逐搏波形边界测量是这一切定量分析的物理基础——边界差 10 ms,QTc 分类就可能翻转。
§2.4 临床任务定义
| AI 任务 | 临床定义 | 标准参考 | 在 QTDB 中的操作化 |
|---|---|---|---|
| 波形描记(delineation) | 定位 P/QRS/T/U 的 onset/peak/offset | CSE 推荐容差(2σ) | 与 .q1c/.q2c 逐点比较,报告 m±s(ms) |
| QT 间期测量 | QRS onset 到 T 波 offset 的时长 | ICH E14 (2005);Baumert 2016 立场声明 | 由标注点直接计算 QT = Toff − QRSon |
| QRS 检测 | R 峰/QRS 定位 | ANSI/AAMI EC57 | 与 .atr/.man 参考搏动标注比对 Se/P+ |
| QT 变异性(QTV)分析 | 逐搏 QT 波动的时频分析 | Baumert et al. 2016, Europace | 30 个连续标注搏动提供逐搏 QT 序列 |
| 观察者间一致性评估 | 双人标注差异统计 | Bland-Altman / 2σ 容差 | 11 条记录的 .q1c vs .q2c 比对 |
§2.5 患者人群特征
| 维度 | 特征 |
|---|---|
| 数据来源 | 七个既有 ECG 数据库的再抽样:MIT-BIH 心律失常库(15 条)、MIT-BIH ST 改变库(6 条)、MIT-BIH 室上性心律失常库(13 条)、ESC ST-T 库(4 条,Pisa 大学)、MIT-BIH 长期 ECG 库(33 条)、MIT-BIH 正常窦律库(10 条)、BIDMC 猝死 Holter(24 条,含年龄性别匹配的正常对照) |
| 采集时间 | 源数据采集于 1979-1990 年间(各源库采集期);QTDB 本身 1997 年构建、1999 年发布 |
| 规模 | 105 条记录 × 15 分钟 × 2 导联;3,622 个人工标注心搏 |
| 年龄/性别/种族 | 未随数据集发布——QTDB 不提供任何患者级人口学元数据,仅猝死子集在源库文档中注明为"年龄性别匹配对照" |
| 人群构成 | 混合住院/动态监测人群:心律失常患者、疑似缺血患者、正常志愿者、猝死患者 |
| 选样标准 | 刻意规避显著基线漂移与伪差——官方论文明确提示其后果:记录内心率相对偏低(高心率常伴噪声而被排除) |
| 搏动构成 | 人工标注仅覆盖"正常"搏动(ARISTOTLE 判为 N 且前后搏动均正常);室早、房扑等病理搏动无人工边界标注 |
§2.6 金标准/参考标准
| 标注层 | 文件后缀 | 标注方式 | 标注者 | 金标准性质 |
|---|---|---|---|---|
| 人工波形边界(终稿) | .q1c(全部 105 条)/ .q2c(11 条) | 逐搏手工标记 P/QRS/T/U 边界;第二遍修订 | 心脏病专家(标注者 1、2) | 本数据集的核心金标准;经审核消除粗差,精确位置由专家判断 |
| 人工波形边界(草稿) | .qt1 / .qt2(11 条) | 第一遍手工标记(" | " 符号) | 同上 |
| 参考搏动标注 | .atr(81 条)/ .man | 继承自源数据库的搏动类型标注(N/V/A 等) | 源数据库标注流程 | 搏动筛选依据;24 条猝死记录无 .atr |
| QRS fiducial 点 | .q1c/.q2c 内 N 标记 | 自动 QRS 检测器给出(通常 R 峰) | ARISTOTLE 检测器 | 波形边界的对齐锚点 |
| 自动波形边界 | .pu / .pu0 / .pu1 | ecgpuwave(微分阈值法)全自动描记,全部搏动 | 算法输出 | 非金标准——已知含错误,仅宜作弱标签(见 §6.5 坑点 1) |
标注协议关键细节:仅标注每条记录最后 5 分钟内的搏动(前 ≥10 分钟留给算法自适应);主导形态连续标注 30 搏(支持 alternans 等逐搏变异研究);存在显著形态变异时,每种非主导形态最多再标 20 搏;T 波标注仅含 peak 与 offset(无 onset);U 波如存在则标 peak 与 offset。
§3 数据集规格
§3.0 版本抉择矩阵
QTDB 只有 v1.0.0 一个版本(1999 年冻结至今),真正的选型问题是"描记任务该用 QTDB 还是别的库"。30 秒选型:
| 你的需求 | 推荐数据集 | 大小 | 理由 |
|---|---|---|---|
| 评测/对比波形描记算法,须与 1997-2025 年文献可比 | QTDB v1.0.0 | 83 MB | 唯一公开的专家逐搏边界金标准 + 双人标注子集 + 三十年可比文献 |
| 12 导联逐搏描记、更大标注密度 | LUDB | 约 50 MB | 200 条 10 秒 12 导联 500 Hz,每搏均有标注;但无 U 波、无双标注者、无长时程形态演变 |
| 心律失常分类(非描记) | MIT-BIH Arrhythmia | 约 100 MB | 48 条全搏动类型标注,EC57 评测标准 |
| 大规模诊断级预训练 | PTB-XL | 约 2 GB | 21,837 条 12 导联,报告级标签;无边界标注 |
| QRS 检测器鲁棒性压测(运动/噪声) | NSTDB + MITDB 混合 | 约 150 MB | QTDB 刻意排除了噪声段,不适合噪声鲁棒性结论 |
一句话结论:凡涉及"P/QRS/T 的起止点在哪"的评测,QTDB 是绕不开的标准答案;其余任务按需另选。
§3.1 模态详细说明
QTDB 的模态为双导联 ECG 数字信号 + 结构化波形边界标注,两者同等重要:
- 信号层:每条记录两个导联,250 Hz、15 分钟(225,000 采样点/导联),WFDB format 212 十二位打包存储(.dat 约 659 KB/条)。导联轴因来源库而异(Holter 常用修正肢导/胸导组合),具体见各 .hea 文件。源采样率非 250 Hz 的记录(如 MITDB 的 360 Hz)经 WFDB 软件包 xform 重采样统一。
- 标注层:每条记录最多 9 个二进制标注文件(后缀体系见 §3.5),覆盖"人工金标准(选定搏动)+ 自动弱标签(全部搏动)+ 源库搏动类型"三个层次。标注以 WFDB annotation 格式存储(sample 索引 + symbol + num + aux_note)。
- 文档层:doc/ 目录内置 Laguna 1997 论文完整 HTML 版(含构建方法与选样标准),RECORDS 列全部记录名,ANNOTATORS 列标注者,SHA256SUMS.txt 供完整性校验。
§3.2 样本量拆分
按来源数据库(Laguna 1997 Table 1,合计 105 条):
| 来源数据库 | 记录数 | 占比 | 临床形态侧重 |
|---|---|---|---|
| MIT-BIH Long Term ECG Database | 33 | 31.4% | 长时程 Holter 形态 |
| Sudden Death(BIDMC) | 24 | 22.9% | 猝死患者 + 匹配对照的极端电生理 |
| MIT-BIH Arrhythmia Database | 15 | 14.3% | 各类心律失常形态 |
| MIT-BIH Supraventricular Arrhythmia DB | 13 | 12.4% | 室上性心律失常形态 |
| MIT-BIH Normal Sinus Rhythm DB | 10 | 9.5% | 正常窦性心律 |
| MIT-BIH ST Change Database | 6 | 5.7% | 短暂 ST 压低/抬高事件 |
| ESC ST-T Database | 4 | 3.8% | 缺血性 ST-T 形态(Pisa 大学提供) |
| 合计 | 105 | 100% | — |
按标注层:
| 标注层 | 覆盖范围 | 搏动规模 |
|---|---|---|
| 人工金标准(.q1c) | 全部 105 条记录,最后 5 分钟,30-100 搏/条 | 3,622 搏(79 条 ≥30 搏) |
| 双人标注(.q2c) | 其中 11 条记录 | 约 400 搏(含于 3,622 之外独立计数) |
| 自动弱标签(.pu 系列) | 全部 105 条记录,全 15 分钟全部搏动 | 约 135,170 搏(Jimenez-Perez 2021 口径) |
§3.3 数据格式详情
| 文件类型 | 格式 | 单条大小 | 说明 |
|---|---|---|---|
| .hea | ASCII 文本 | 约 220 B | 头文件:记录名、导联数、采样率、采样点数、增益、ADC 分辨率、导联描述 |
| .dat | WFDB format 212 二进制 | 约 659 KB | 双导联信号,12-bit 打包(每 3 字节存 2 采样点);不可按 int16 直接 fread(见 §6.5 坑点 8) |
| .atr / .man | WFDB annotation 二进制 | 70 B - 2.2 KB | 源库参考搏动标注 / 选定搏动标注 |
| .q1c / .q2c | WFDB annotation 二进制 | 约 0.5-0.8 KB | 人工波形边界(第二遍,终稿) |
| .qt1 / .qt2 | WFDB annotation 二进制 | 约 0.4-0.6 KB | 人工波形边界(第一遍,草稿) |
| .pu / .pu0 / .pu1 | WFDB annotation 二进制 | 36-95 KB | ecgpuwave 自动边界(全搏动) |
§3.4 存储大小
| 形态 | 大小 | 备注 |
|---|---|---|
| ZIP 压缩包 | 83.1 MB | PhysioNet 官方整包 |
| 解压后 | 82.9 MB | 105 组记录文件 + doc/ + eval/ |
| 单条记录(.dat+.hea+全部标注) | 约 0.8 MB | 可只下载需要的记录(wfdb 支持远程按需读取) |
| AWS S3 | 同左 | s3://physionet-open/qtdb/1.0.0/,免签名访问 |
§3.5 标注方式(标注后缀体系总表)
QTDB 的标注文件后缀体系是理解本数据集的第一把钥匙(PhysioNet 官方定义):
| 后缀 | 内容 | 覆盖 | 标注者/算法 | 通过 |
|---|---|---|---|---|
| .hea | 头文件 | 每条必有 | — | — |
| .dat | 信号文件 | 每条必有 | — | — |
| .atr | 源库参考搏动标注 | 81 条(24 条猝死记录无) | 源库流程 | — |
| .man | 选定搏动参考标注 | 全部 | 源库流程 | — |
| .qt1 | 人工边界,标注者 1,第一遍 | 11 条 | 专家 1 | 草稿 |
| .qt2 | 人工边界,标注者 2,第一遍 | 11 条 | 专家 2 | 草稿 |
| .q1c | 人工边界,标注者 1,第二遍(终稿) | 全部 105 条 | 专家 1 | 金标准 |
| .q2c | 人工边界,标注者 2,第二遍(终稿) | 11 条 | 专家 2 | 金标准(双标注子集) |
| .pu | 自动边界(双导联合判) | 全部搏动 | ecgpuwave | 弱标签 |
| .pu0 | 自动边界(仅导联 0) | 全部搏动 | ecgpuwave | 弱标签 |
| .pu1 | 自动边界(仅导联 1) | 全部搏动 | ecgpuwave | 弱标签 |
标注符号语义(WFDB 标准):( = onset、) = offset、p = P 波峰、t = T 波峰、u = U 波峰、N = 搏动 fiducial;onset/offset 的 num 字段编码波型(0=P,1=QRS,2=T,3=U);.pu 系列中 num 编码 T 波形态(0=正常,1=倒置,2=仅向上,3=仅向下,4=双相负-正,5=双相正-负)。
标注产生流程:
源库记录 ──选样(避噪/避漂移)──> 105 条 15 分钟片段 ──xform──> 统一 250 Hz
│
├─> ARISTOTLE QRS 检测 + 搏动类型判定(N 搏动筛选)
├─> 心脏病专家手工描记(最后 5 分钟,30-100 搏/条)
│ 第一遍 (.qt1/.qt2) ──> 审核修订 ──> 第二遍终稿 (.q1c/.q2c)
└─> ecgpuwave 全自动描记(全部搏动)──> .pu/.pu0/.pu1
§3.6 标注者资质
| 维度 | 说明 |
|---|---|
| 标注者 | 心脏病专家(cardiologists);ANNOTATORS 文件列出标注者代码 |
| 双人标注子集 | 11 条记录由两位专家独立标注(.q1c 与 .q2c),用于观察者间变异性(inter-observer variability)研究 |
| 自身一致性 | 11 条记录同时保留第一遍(.qt1/.qt2)与第二遍(.q1c/.q2c),可研究观察者内变异性(intra-observer) |
| 质量控制 | 全部 3,622 搏标注经审核消除粗差(gross errors);精确位置由专家判断——官方明示未做亚搏动级强制对齐 |
| 一致性参考值 | 文献中专家间 T 波终点判定的 2σ 容差为 ±30.6 ms(CSE 标准);QT 测量专家间 RMS 差异约 6-10 ms(CinC 2006 挑战赛口径) |
§3.7 数据采集时间范围
源数据采集于 1979-1990 年(各源库采集期不同:MIT-BIH 系列 1979-1989,ESC ST-T 库 1980 年代末,猝死 Holter 为 BIDMC 1980 年代收集)。QTDB 于 1997 年构建完成,1999-11-16 发布,此后无任何更新。
§3.8 地理覆盖
信号源全部来自美国波士顿 Beth Israel Deaconess Medical Center 的既有数据库(ESC ST-T 库除外,由意大利 Pisa 大学 Carlo Marchesi 教授团队提供,共 4 条)。标注工作由萨拉戈萨大学(西班牙)与 MIT/BIDMC 团队共同完成。单地域、单设备时代特征明显——这是泛化性讨论的重要背景(§7.3)。
§3.9 采集设备规格
| 项目 | 规格 | 说明 |
|---|---|---|
| 原始采集设备 | 各源库 Holter/床旁记录系统(1979-1990 年代) | QTDB 未逐记录文档化设备型号 |
| 发布采样率 | 250 Hz(全库统一) | 源库 360 Hz(MITDB)、128 Hz(LTSTDB 部分)等经 WFDB xform 重采样 |
| 量化精度 | 12-bit(format 212 打包) | .hea 中给出各导联 gain(通常 200 adu/mV)与 baseline |
| 时长 | 15 分钟/条(225,000 采样点/导联) | 统一长度 |
| 导联 | 2 导联 | 轴配置随源库而异,见各 .hea 描述行 |
§3.10 深度溯源链
| 环节 | 系统/方法 | 关键转换 |
|---|---|---|
| 1. 原始采集 | BIDMC 及合作方 Holter/床旁 ECG 系统(1979-1990) | 七个独立数据库各自完成数字化(采样率 128-360 Hz 不等) |
| 2. 源库建库 | MIT-BIH 系列(MIT/BIDMC)、ESC ST-T(Pisa 大学) | 各库独立完成搏动类型标注(即 QTDB 继承的 .atr) |
| 3. 选样与重采样 | Laguna/Mark/Moody/Goldberger 团队(1997) | 按"形态多样 + 信号干净"标准选 105 段 15 分钟片段;xform 统一 250 Hz |
| 4. 专家标注 | 心脏病专家双人协议 | 最后 5 分钟逐搏描记;第一遍草稿→审核→第二遍终稿;11 条双标注 |
| 5. 自动描记 | ecgpuwave(WFDB 软件包) | 全搏动自动边界,生成 .pu/.pu0/.pu1 弱标签 |
| 6. 公开发布 | PhysioNet(1999-11-16) | v1.0.0 冻结;2015 年分配 DOI 10.13026/C24K53;ODC-BY 1.0 |
§4 数据结构详解
§4.0 目录结构预览
qtdb/
├── RECORDS # 105 个记录名清单(sel30, sel31, ..., sel820, sel873)
├── ANNOTATORS # 标注者代码清单(525 B)
├── SHA256SUMS.txt # 全文件校验和
├── doc/ # Laguna 1997 论文完整 HTML 版(构建方法权威文档)
│ ├── index.shtml # 摘要与入口
│ ├── node3.html # The Records(来源构成 Table 1)
│ └── node4.html # Manual Annotations(标注协议)
├── eval/ # 评测辅助文件
├── sel100.hea # ┐ 一条记录 = 1 个头文件 + 1 个信号文件 + 最多 9 个标注文件
├── sel100.dat # │ 双导联信号(250 Hz × 900 s,format 212,约 659 KB)
├── sel100.atr # │ 源库参考搏动标注(猝死记录无此文件)
├── sel100.man # │ 选定搏动参考标注
├── sel100.q1c # │ 人工边界终稿(标注者 1)← 核心金标准
├── sel100.q2c # │ 人工边界终稿(标注者 2,仅 11 条记录有)
├── sel100.qt1 # │ 人工边界草稿(标注者 1,仅 11 条记录有)
├── sel100.qt2 # │ 人工边界草稿(标注者 2,仅 11 条记录有)
├── sel100.pu # │ 自动边界(双导联,全搏动,约 95 KB)
├── sel100.pu0 # │ 自动边界(仅导联 0)
├── sel100.pu1 # │ 自动边界(仅导联 1)
├── sel101.* ... sel873.* # 其余 104 条记录同构
§4.1 DAIMS 标准化字段描述表
A. 头文件(.hea,ASCII)
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| record_name | string | 记录名(第一行首字段) | “sel100” | 主键 | 无 | 不允许缺失 | sel30-sel873 共 105 个 |
| n_sig | int | 导联数 | 2 | 信号维度 | 无 | 不允许缺失 | 恒为 2 |
| fs | float | 采样率(Hz) | 250 | 时间轴换算 | 源库重采样引入 ≤1 采样点相位差 | 不允许缺失 | 恒为 250 |
| n_samples | int | 采样点数/导联 | 225000 | 时长换算(=900 s) | 无 | 不允许缺失 | 恒为 225,000 |
| format | int | WFDB 存储格式 | 212 | 解码方式选择 | 无 | 不允许缺失 | 212 |
| gain | float | 增益(adu/mV) | 200 | 幅值物理单位换算 | 源库增益不完全一致 | 见各记录 | 通常 200 |
| baseline/adc_zero | int | ADC 零点 | 1024 | 幅值偏移校正 | 无 | 见各记录 | 通常 1024 |
B. 标注记录(WFDB annotation,.q1c/.q2c/.pu 系列通用结构)
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| sample | int | 标注点采样索引 | 168842 | 分割标签的时间锚点 | 专家判定 ±数采样点(CSE 容差内) | 不允许缺失 | 0-224,999 |
| symbol | string | 标注符号 | “(” | 语义解码(见下) | 无 | 不允许缺失 | ( ) p t u N 等 |
| num | int | 波型/形态编码 | 2 | onset/offset 归属判别 | .pu 系列为 T 波形态码,语义不同 | T 波 onset 缺失(协议性) | 0-3(波型)/ 0-5(T 形态) |
| chan | int | 导联通道 | 0 | 多导联归属 | 人工标注通常 chan=0(双导联合判) | 无 | 0-1 |
| aux_note | string | 附加注释 | “” | 节律/ST 事件文本(部分记录) | 自由文本 | 多数为空 | 文本 |
C. 标注符号语义表(本数据集解码核心)
| symbol | 含义 | num 语义 | 备注 |
|---|---|---|---|
( |
波 onset | 0=P, 1=QRS, 2=T, 3=U | T 波无 onset 标注(协议未标) |
) |
波 offset | 同上 | T 波终点即 Toff |
p |
P 波峰 | — | |
t |
T 波峰 | — | |
u |
U 波峰 | — | U 波标注稀少 |
N |
搏动 fiducial(QRS,通常 R 峰) | — | 由自动检测器给出 |
§4.2 标签分布统计
| 统计维度 | 数值 | 说明 |
|---|---|---|
| 人工标注总搏动数 | 3,622 | .q1c(全部记录)口径 |
| 每条记录人工搏动 | 30-100(中位约 30-50) | 79/105 条 ≥30 搏 |
| 双标注者记录 | 11 / 105 | 其余 94 条单标注者 |
| 自动标注搏动(.pu) | 约 135,170 | 全 15 分钟全搏动(Jimenez-Perez 2021 使用口径) |
| P 波标注 | 仅存在于窦性搏动 | 房颤/交界性心律记录无 P 波标注 |
| T 波标注 | 每搏 peak + offset(无 onset) | 协议性缺失,见 §6.5 坑点 7 |
| U 波标注 | 稀少(仅部分记录存在) | 低振幅,多数搏动不可辨识 |
| 主导 vs 非主导形态 | 30 连续主导搏动 + ≤20 非主导形态搏动 | 非主导形态样本量小 |
§4.3 关键字段描述性统计
- 信号总采样点:105 × 225,000 × 2 = 4,725 万采样点(约 26.25 小时双导联等效时长)。
- 人工标注密度:3,622 搏 / 约 11.2 万总搏动 ≈ 3.2% 的搏动有金标准。
- 标注时间窗:全部集中在每条记录的 600-900 秒段;0-600 秒段仅有自动标注。
- 低质量标注使用率:Jimenez-Perez 2021 剔除 4 条问题记录(sel232/sel233/sel36 标注不全、sel35 唯一房扑记录)后,可用 3,246 高质量搏动 + 135,170 低质量搏动。
- 心搏间隔分布:因选样排除噪声段,记录内心率相对偏低(官方论文自述)。
§4.4 数据层级关系
QTDB(105 条记录)
└─ record(sel100 …;.hea 元数据 + .dat 双导联信号)
├─ beats(全搏动,约 1,070 搏/条;.atr/.man 搏动类型)
│ ├─ 人工描记搏动(最后 5 分钟,30-100 搏;.q1c/.q2c)
│ │ └─ fiducials(每搏 6-10 个标注点:P( p P) QRS( N QRS) T t T) [U u U)])
│ └─ 自动描记搏动(全 15 分钟全部搏动;.pu/.pu0/.pu1)
└─ rhythm/ST 事件(部分记录 .atr 的 aux_note 文本)
- 主键链:record_name → (sample index, symbol);无患者级 ID——QTDB 不发布患者身份与人口学信息,同一患者是否贡献多条记录不可考证。
- 高频踩坑:.q1c 的 sample 索引全部 >150,000(即最后 5 分钟);在前 10 分钟查找人工标注必然为空(见 §6.5 坑点 2)。
§4.5 缺失值情况与信息性缺失编码
| 缺失类型 | 字段/层 | 缺失原因 | 信息性缺失编码 | 对 AI 的影响 |
|---|---|---|---|---|
| 协议性缺失 | T 波 onset | 标注协议未要求(T 波起点公认难判) | 全部 T 波无 onset | 训练分割模型时 T 段左边界需以 P 段/等电位段推断或仅评测 Tpeak/Toff |
| 协议性缺失 | 前 10 分钟人工标注 | 协议仅标最后 5 分钟 | 前 600 s 无 .q1c 点 | 误用会产生"前半段无标签"假象;可用 .pu 弱标签填补 |
| 结构性缺失 | U 波标注 | U 波多数搏动不可辨识 | 缺失 = U 波不存在/不可见 | U 波检测研究样本量不足 |
| 结构性缺失 | .atr(24 条猝死记录) | 源库无参考搏动标注 | 文件不存在 | 猝死记录的搏动类型需自行检测 |
| 结构性缺失 | P 波标注(部分搏动) | 房颤/交界性心律无 P 波 | 缺失 = 心律性质 | 可作为心律分类的隐含标签 |
| 元数据缺失 | 年龄/性别/患者 ID | 发布时未提供 | — | 无法做人口学公平性分析 |
§5 数据划分与使用建议
§5.1 官方数据划分
QTDB 官方不提供 train/validation/test 划分。 经典文献的三种惯用做法:
- 全库留作测试集(经典信号处理文献主流):算法为规则/滤波器设计、无训练需求,全部 105 条直接评测,报告 m±s 对照 CSE 容差(Martínez 2004 即此模式)。
- 记录级 K 折交叉验证(深度学习文献主流):按记录(而非搏动)分折。Peimankar 2021(DENS-ECG)用分层 5 折;Jimenez-Perez 2021 用随机记录级 5 折。
- 固定记录划分(可复现性最佳):自行固定 train/val/test 记录清单并随论文公开。
§5.2 推荐划分策略
- 必须按记录(record)划分,严禁按搏动(beat)随机划分——同一记录的 30 个连续标注搏动形态高度相似,搏动级随机划分必然泄漏(见 §6.5 坑点 3)。
- 按来源数据库分层:7 个来源库(MITDB/LTSTDB/猝死等)构成天然分层轴;更严格的做法是留一来源库验证(leave-one-source-out),评估跨库泛化。
- 双标注者记录(11 条)建议保留在测试集:它们同时提供金标准与噪声标尺。
- 报告时注明使用的标注集(.q1c vs .q2c vs 两者合并)与评测容差窗(±150 ms 匹配窗为领域惯例)。
import numpy as np
records = [r.strip() for r in open("RECORDS")]
rng = np.random.default_rng(42)
perm = rng.permutation(records) # 记录级打乱
test = set(perm[:21]) # 21 条作测试(20%)
train = set(perm[21:])
assert not (train & test) # 记录级零重叠验证
§5.3 数据泄漏风险防御
| # | 泄漏模式 | 严重程度 | 防御措施 |
|---|---|---|---|
| 1 | 按搏动随机划分(同记录 30 个连续搏动形态雷同) | 高 | GroupKFold(groups=record_name) |
| 2 | 用 .pu 自动标注预训练后,在含同一记录 .q1c 的测试集上评测且未声明 | 中 | 预训练仅使用 train 记录的 .pu;或在论文中声明全库弱标签预训练协议 |
| 3 | 波形形态模板从测试记录提取(如 per-record 自适应阈值在前 10 分钟学习后用于该记录评测) | 中 | 这正是数据集"前 10 分钟供学习"的设计意图——允许但须在方法学中声明,且不得用最后 5 分钟信号调参 |
| 4 | 双标注者记录混入训练(.q1c 训练、.q2c 测试) | 中 | 按记录划分后,该记录全部标注版本归属同一侧 |
§5.4 交叉验证建议
- 标准:记录级 5 折交叉验证(约 21 条/折),按来源库分层抽样。
- 报告均值 ± 折间标准差;小样本(约 700 人工搏动/折)下折间方差大,单次划分结论不可靠。
- 双标注者子集单独报告 inter-observer 参照线,模型误差与之对照才有临床意义。
§5.5 外部验证
QTDB 训练/调优后的描记模型,标准外部验证路径:LUDB(12 导联 500 Hz,最直接的同类库)、MIT-BIH Arrhythmia(仅 QRS 层可验证)、PTB-XL / 自采 Holter(域外泛化)。Peimankar 2021 的范式值得复用:QTDB 训练的 DENS-ECG 在完全未见的 MITDB 上 QRS 检测 Se 99.61%、P+ 99.52%。
§6 AI 就绪指南
§6.0 云端快速启动
零门槛在线预览:PhysioNet 内置 LightWAVE 波形浏览器,打开 https://physionet.org/lightwave/?db=qtdb/1.0.0 即可在线查看任意记录的信号与标注叠加(.q1c、.pu 可切换显示),无需下载即可直观理解标注体系。
免下载远程读取:wfdb-python 支持直接从 PhysioNet 流式读取单条记录——
wfdb.rdrecord("sel100", pn_dir="qtdb")一行代码拿到信号,全库 83 MB 也可 1 分钟下完。数据集体积小,任何 Colab 免费实例均可完成全流程。
§6.1 快速上手
# ========================================
# QT Database 快速上手 — wfdb-python 版
# 环境要求: pip install wfdb numpy matplotlib
#
# 目录结构预期(本地版):
# ./qtdb/
# ├── RECORDS
# ├── sel100.hea / sel100.dat / sel100.q1c / sel100.pu ...
# └── ...(共 105 组)
# 远程版无需目录:pn_dir="qtdb" 直接从 PhysioNet 流式读取
# ========================================
import wfdb
import numpy as np
# 1) 读取信号(远程流式;本地则传 sampto 等参数 + 路径)
rec = wfdb.rdrecord("sel100", pn_dir="qtdb", sampfrom=150000, sampto=225000)
print(rec.sig_name, rec.fs) # 双导联名, 250 Hz
signal = rec.p_signal # shape (75000, 2),单位 mV(已按增益换算)
# 2) 读取人工金标准标注(.q1c:第二遍终稿)
ann = wfdb.rdann("sel100", extension="q1c", pn_dir="qtdb",
sampfrom=150000, sampto=225000)
for s, sym, num in zip(ann.sample[:8], ann.symbol[:8], ann.num[:8]):
print(f"sample={s:>7d} t={s/250:6.1f}s symbol={sym} num={num}")
# 典型输出:'(' num=1 (QRS onset), 'N' (fiducial), ')' num=1 (QRS offset),
# 't' (T peak), ')' num=2 (T offset), '(' num=0 (P onset), 'p', ...
# 3) 提取 QT 间期序列(QRS onset -> T offset,单位 ms)
qts, cur_qrs_on = [], None
for s, sym, num in zip(ann.sample, ann.symbol, ann.num):
if sym == "(" and num == 1:
cur_qrs_on = s
elif sym == ")" and num == 2 and cur_qrs_on is not None:
qts.append((s - cur_qrs_on) / 250 * 1000)
cur_qrs_on = None
print(f"sel100 QT 间期: n={len(qts)}, mean={np.mean(qts):.0f}±{np.std(qts):.0f} ms")
# 4) 双标注者一致性(仅 11 条记录有 .q2c)
ann2 = wfdb.rdann("sel100", extension="q2c", pn_dir="qtdb",
sampfrom=150000, sampto=225000)
§6.2 数据获取流程
| 获取方式 | 链接/命令 | 大小 | 流程 |
|---|---|---|---|
| ZIP 整包 | https://physionet.org/files/qtdb/1.0.0/qtdb-1.0.0.zip | 83.1 MB | 浏览器直接下载,无需注册 |
| wget 递归 | wget -r -N -c -np https://physionet.org/files/qtdb/1.0.0/ |
82.9 MB | 官方推荐命令 |
| AWS S3 | aws s3 sync --no-sign-request s3://physionet-open/qtdb/1.0.0/ ./qtdb |
同左 | 免签名公开桶 |
| wfdb 流式 | wfdb.rdrecord("sel100", pn_dir="qtdb") |
按需 | 逐条远程读取,适合原型 |
| torch_ecg | from torch_ecg.databases import QTDB |
自动下载 | PyTorch 生态封装,含标注解析 |
许可义务(ODC-BY 1.0):可自由使用、修改、再发布(含商业场景),但必须署名——PhysioNet 要求三件套引用(Laguna 1997 论文 + 数据集 DOI + PhysioNet 平台,见 §9)。与 MIMIC 系列不同,QTDB 不需要 CITI 培训与 DUA。
§6.3 预处理 Pipeline
<details>
<summary><b>点击展开完整的 4 步预处理代码(搏动分割 → 逐采样点分割标签)</b></summary>
# 步骤 1:读取信号与金标准,截取标注窗(最后 5 分钟)
import wfdb, numpy as np
FS = 250
WIN_START = 150000 # 600 s × 250 Hz,标注窗起点
rec = wfdb.rdrecord("sel100", pn_dir="qtdb", sampfrom=WIN_START)
ann = wfdb.rdann("sel100", "q1c", pn_dir="qtdb", sampfrom=WIN_START)
sig = rec.p_signal # (N, 2) mV
pos = ann.sample - WIN_START # 相对索引
# 步骤 2:标注点 → 逐采样点 4 类分割掩码(0=背景, 1=P, 2=QRS, 3=T)
# 将 (onset, offset) 配对填段;peak 点顺带收集用于回归评测
mask = np.zeros((len(sig), 2), dtype=np.int8)
WAVE_NUM2CLS = {0: 1, 1: 2, 2: 3} # num: P/QRS/T;U 波(3)按需并入或忽略
stack = {}
for s, sym, num in zip(pos, ann.symbol, ann.num):
if sym == "(":
stack[num] = s
elif sym == ")" and num in stack:
cls = WAVE_NUM2CLS.get(num)
if cls is not None:
mask[stack.pop(num):s + 1, :] = cls
# 步骤 3:按搏动切窗(QRS fiducial 'N' 前后各取 200 ms / 500 ms)
beats = [s for s, sym in zip(pos, ann.symbol) if sym == "N"]
PRE, POST = int(0.2 * FS), int(0.5 * FS) # 50 / 125 采样点
X, Y = [], []
for b in beats:
if b - PRE < 0 or b + POST > len(sig):
continue
X.append(sig[b - PRE:b + POST]) # (175, 2)
Y.append(mask[b - PRE:b + POST]) # (175, 2)
X, Y = np.stack(X), np.stack(Y)
# 步骤 4:轻量滤波(描记任务禁忌强滤波,见坑点 7)
from scipy.signal import butter, filtfilt
b, a = butter(2, [0.5 / (FS / 2), 40 / (FS / 2)], btype="band")
Xf = filtfilt(b, a, X, axis=1) # 零相位,避免边界移位
print(Xf.shape, Y.shape) # (n_beats, 175, 2)
</details>
成熟替代方案:torch_ecg 的 QTDB 类(内置标注解析与已知问题处理)、NeuroKit2 ecg_delineate()(DWT/peak/CWT 三法对照)、ECG-Kit(MATLAB,内置挑战赛获奖 wavedet_3D)。
§6.4 框架加载
import torch
from torch.utils.data import Dataset, DataLoader
class BeatSegDataset(Dataset):
"""QTDB 搏动级分割数据集。X: (N, 175, 2) 信号, Y: (N, 175, 2) 逐点类别。"""
def __init__(self, X, Y):
self.X = torch.FloatTensor(X).permute(0, 2, 1) # (N, C=2, L=175)
self.Y = torch.LongTensor(Y[..., 0]) # 以导联 0 标签为例
def __len__(self):
return len(self.Y)
def __getitem__(self, i):
return self.X[i], self.Y[i]
# 记录级划分(防泄漏,见 §5.2)
train_ds = BeatSegDataset(X_train, Y_train)
loader = DataLoader(train_ds, batch_size=32, shuffle=True)
# torch_ecg 生态一行式加载(自动处理 WFDB 解析与已知问题)
from torch_ecg.databases import QTDB
db = QTDB("./qtdb", verbose=1)
db.load_data(leads=[0], sampfrom=150000, sampto=225000)
§6.5 常见坑点
⚠️ 坑点 1:.pu/.pu0/.pu1 是机器标注,不是人工金标准(分类:标签理解)
问题:.pu 系列文件由 ecgpuwave(微分阈值法)全自动生成,覆盖全部搏动,看似"更全的标注"。多项研究明确指出其含系统性错误,Brno 大学 P 波检测研究直接判定"该标注集不能用于高质量研究"。
症状:用 .pu 当真值评测,自家算法误差被高估 2-3 倍;用 .pu 当训练标签而不加鲁棒处理,模型学到 ecgpuwave 的阈值风格而非专家判断。
解决:金标准只用 .q1c/.q2c;.pu 仅作弱标签——配合标签平滑、半监督预训练(Jimenez-Perez 2021 的 mixed-quality 策略:.pu 预训练 + .q1c 微调)或噪声鲁棒损失;评测报告必须声明使用的标注集。
参考:PhysioNet QTDB 文件后缀表;Jimenez-Perez et al. 2021, Scientific Reports 11:524。
⚠️ 坑点 2:人工标注只存在于每条记录的最后 5 分钟(分类:评估误用)
问题:标注协议刻意只描记 600-900 秒段,前 10 分钟留给算法自适应学习。在 0-600 秒段检索 .q1c 标注会得到空集。
症状:解析代码"跑通但零标注";按全记录均匀采样训练样本时,前半段样本被误标为背景。
解决:读取时显式限定
sampfrom=150000(600 s × 250 Hz);需要全记录训练信号时,前 10 分钟只能配 .pu 弱标签或无标签(自监督);评测一律在 600 s 之后进行。参考:Laguna 1997 论文 “Manual Annotations” 一节(doc/node4.html)。
⚠️ 坑点 3:搏动级随机划分导致记录内泄漏(分类:数据泄漏)
问题:每条记录的 30 个连续人工标注搏动形态几乎一致(协议要求连续标注主导形态以研究逐搏变异)。按搏动随机划分会把同一记录的相邻搏动同时放进 train 和 test。
症状:F1 虚高 3-8 个百分点;换到 LUDB 等外部库性能断崖式下跌。
解决:始终记录级划分(GroupKFold,group=record_name);论文中声明划分粒度;与文献比较时核对其划分口径(Peimankar 2021 为记录级分层 5 折)。
参考:Joung et al. 2023(arXiv:2304.06237)对划分协议的讨论。
⚠️ 坑点 4:选样偏倚——信号过干净、心率偏低(分类:偏倚陷阱)
问题:官方选样标准明确排除显著基线漂移与伪差段,副作用是记录内心率相对偏低(高心率常伴噪声被淘汰)。Joung et al. 2023 证实:在 QTDB/LUDB 上 F1 >99% 的模型,在心动过速等欠代表心律失常上性能显著下降。
症状:QTDB 上 T 波终点误差 8 ms,换真实 Holter 数据变 30 ms;心动过速段 T-P 融合处描记崩溃。
解决:论文中将"QTDB 结果"限定为"清洁、低至中心率条件";鲁棒性结论必须在噪声库(NSTDB)或真实 Holter 上补测;训练时主动叠加基线漂移/工频噪声增强。
参考:Laguna 1997(选样标准自述);Joung et al. 2023。
⚠️ 坑点 5:只有"正常"搏动有人工边界——病理搏动无真值(分类:标签理解)
问题:标注协议仅描记 ARISTOTLE 判为 normal 且前后均为 normal 的搏动。室早(V)、房扑等病理搏动没有任何专家边界标注;sel35 是全库唯一房扑记录,Jimenez-Perez 2021 因此直接剔除它。
症状:病理搏动段模型输出无法评测;用 QTDB 训练的模型在室早搏动的 T 波终点上表现未知却被默认"已验证"。
解决:病理搏动评测需另选 LUDB(含各类心律失常逐搏标注)或自标数据;在 QTDB 上做心律分类辅助任务时,可用"无 P 波标注"作为房性心律的隐含标签;论文中明确标注适用范围。
参考:Laguna 1997(beat selection criteria);Jimenez-Perez et al. 2021 Materials 一节。
⚠️ 坑点 6:QTDB ≠ PhysioNet/CinC Challenge 2006 数据(分类:评估误用)
问题:2006 年著名的 QT 测量挑战赛(41 名参与者、最佳全自动 16.34 ms)使用的是 PTB Diagnostic ECG Database 的 549 条记录,不是 QTDB。中文社区与部分综述常将二者混为一谈。
症状:引用"QTDB 挑战赛成绩"在审稿中被质疑;在 QTDB 上复现不出 6.67 ms 的人工金标准一致性。
解决:分清三个概念——QTDB(本数据集,描记金标准)、CinC 2006 Challenge(PTB 库,QT 测量精度竞赛)、CSE 数据库(容差标准来源,不公开)。QTDB 的正确对标物是 Martínez 2004 的误差统计与双人标注者差异。
参考:Moody, Koch, Steinhoff. CinC 33:313-316 (2006);physionet.org/challenge/2006/。
⚠️ 坑点 7:T 波无 onset、U 波稀少、num 字段语义随文件类型变化(分类:预处理陷阱)
问题:三个解析层陷阱叠加——(1) 人工协议只标 T 波 peak 与 offset,无 T onset,直接训练"四段分割"会在 T 左边界处标签缺失;(2) U 波标注仅零星存在;(3) num 字段在 .q1c 中编码波型(0-3),在 .pu 系列中编码 T 波形态(0-5),同一字段两套语义。
症状:T 段掩码左半边为空、模型学会"T 段从峰点开始";读 .pu 文件把 T 波形态码当波型码,类别全错。
解决:分割标签按 (onset, offset) 配对生成而非按点映射;T 波左边界以 QRS offset 后等电位段自然过渡(mask 中 T 段从上一
)之后开始或仅评测 Tpeak/Toff);解析时按文件后缀分别解释 num。参考:torch_ecg QTDB 文档(num 语义与已知问题清单);WFDB annotation 格式规范。
⚠️ 坑点 8:format 212 十二位打包与 250 Hz 重采样假设(分类:工程陷阱)
问题:.dat 为 WFDB format 212——每 3 字节存 2 个 12-bit 采样点,按 int16 直接 fread 会得到乱码;同时全库统一 250 Hz 是重采样结果(MITDB 源为 360 Hz),与其他库做 RR 对齐或采样率自适应实验时不能假设"原始即 250 Hz"。
症状:信号幅值溢出/波形呈毛刺噪声;跨库联合训练时隐含的 1.44 倍时间轴错位。
解决:一律经 wfdb 官方库读取(
wfdb.rdrecord自动处理 212 解码与增益);跨库实验统一重采样到目标频率(深度学习模型常用 250 或 500 Hz)并在方法学注明;不要对同一记录混用"原始采样率"与 250 Hz 两种假设。参考:WFDB 软件包文档(format 212);Laguna 1997(xform 转换说明)。
版本提示:QTDB 自 1999-11-16 v1.0.0 起永久冻结,无版本歧义;但论文提到的 .ari 文件(ARISTOTLE 自动 QRS 标注)在发布包中不存在,引用旧文档时注意。
§6.6 数据增强
| ✅ 安全增强 | ❌ 危险增强(禁止) |
|---|---|
| 叠加合成基线漂移(0.05-0.5 Hz 正弦/呼吸样曲线) | 时间轴随机拉伸/压缩(直接改变 QT/PR 时限真值) |
| 叠加 50/60 Hz 工频噪声与肌电样宽带噪声 | 强低通/平滑滤波(T 波终点与 P 波起点会被移位,污染标签) |
| 幅值缩放(±20%)与极性翻转(需同步翻转 T 形态先验) | 搏动片段随机时移超过标注容差窗(±数采样点可接受,>10 ms 不可) |
| 随机导联丢弃(训练单导联鲁棒性) | Mixup 线性叠加两条 ECG(产生生理上不可能的叠加波形) |
描记任务的铁律:增强不能移动边界——任何改变信号时频局部化的操作(强滤波、时间扭曲)都会让金标准标注失效。Jimenez-Perez 2021 的 ECG 定制增强(基线漂移 + 工频噪声)是该原则下的标准实践。
§6.7 模型推荐
| 任务 | 推荐方案 | 关键配置 | 预期性能(QTDB 口径) |
|---|---|---|---|
| 快速基线 | ecgpuwave(WFDB 自带) / NeuroKit2 DWT | 无需训练 | 误差统计即 .pu 与 .q1c 之差 |
| 经典 SOTA | Martínez 小波描记器(WTMM,多尺度奇异点) | 2^1-2^5 尺度,单导联 | 平均误差 <1 采样点;s 在 CSE 容差内 |
| 深度学习主流 | 1D U-Net(分割式描记) | 搏动窗 175-500 点,4 类逐点分类 | QRS F1 >99.5%,T F1 ≈99%,P F1 ≈98% |
| 实时/嵌入式 | DENS-ECG(CNN+LSTM 轻量结构) | 分层 5 折,onset/peak/offset 三任务头 | Se 97.95% / precision 95.68% |
| 弱标签预训练 | mixed-quality U-Net | .pu 预训练 → .q1c 微调 + Spatial Dropout | recall 99.94%(分割层口径) |
§6.8 计算资源需求
| 硬件 | 最小配置 | 推荐配置 |
|---|---|---|
| 磁盘 | 200 MB | 1 GB(含中间特征) |
| 内存 | 4 GB | 16 GB(全库搏动切窗入内存) |
| GPU | 不需要(数据集仅 83 MB,CPU 可训 1D U-Net) | 1 × 8 GB(多折并行/大 batch) |
| 训练时间 | 单折 1D U-Net 约 10-30 分钟(CPU) | 5 折全流程约 1 小时(GPU) |
§6.9 评估指标
import numpy as np
def delineation_errors(ref_samples, pred_samples, fs=250, tol=0.150):
"""经典描记评测:±150 ms 匹配窗内一对一配对,返回误差均值±标准差(ms)。
ref/pred 为同一类标注点(如全部 T offset)的采样索引数组。"""
matched = []
used = set()
for r in ref_samples:
cand = [p for p in pred_samples
if abs(p - r) <= tol * fs and p not in used]
if cand:
p = min(cand, key=lambda p: abs(p - r))
used.add(p)
matched.append((p - r) / fs * 1000) # ms
err = np.array(matched)
se = len(matched) / max(len(ref_samples), 1) # 检出率
return err.mean(), err.std(ddof=1), se
CSE_2SIGMA = {"P_on": 10.2, "P_off": 12.7, "QRS_on": 6.5,
"QRS_off": 11.6, "T_off": 30.6} # CSE 医生间 2σ 容差(ms)
# 判定标准:|mean| 应接近 0(< 1 采样间隔 = 4 ms),std 应 ≤ CSE_2SIGMA
社区共识:描记质量以 m ± s(误差均值 ± 标准差,ms) 报告并对照 CSE 2σ 容差;检出层以 Se / P+ / F1 报告(±150 ms 匹配窗);分割层(深度学习)以逐点 IoU/Dice 辅助报告;QT 间期层面报告 RMS 误差(参照 CinC 2006:人工 6.67 ms / 自动 16.34 ms 的历史标尺)。
§6.10 MLOps 笔记
- 版本锁定:引用 “QT Database v1.0.0”(DOI: 10.13026/C24K53);该库 1999 年冻结,不存在版本漂移,但 PhysioNet 页面 2015 年后才有 DOI——旧文献无 DOI 属正常。
- 引用三件套:Laguna 1997 论文 + 数据集 DOI + Goldberger 2000 PhysioNet 平台,ODC-BY 1.0 署名义务的完整履行方式(见 §9)。
- 标注集声明:任何结果必须声明金标准为 .q1c(或 .q2c)、是否含 11 条双标注记录、评测容差窗——这三项是结果可比性的最小信息集。
- 远程读取缓存:wfdb 流式读取在 CI 中建议落盘缓存,PhysioNet 对大流量 IP 有限速策略。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 选样偏倚(信号质量) | 刻意排除基线漂移与伪差段,信号偏干净 | 高 | 鲁棒性结论须在 NSTDB/真实 Holter 补测 |
| 选样偏倚(心率) | 排除噪声的连带效应:记录内心率相对偏低(官方自述) | 中高 | 心动过速场景用 LUDB/自采数据验证 |
| 搏动类型偏倚 | 人工标注仅覆盖"正常"搏动;病理搏动无边界真值 | 高 | 病理搏动评测另选 LUDB;声明适用范围 |
| 单标注者偏倚 | 94/105 条记录仅一位专家标注,个体读片风格进入金标准 | 中 | 以 11 条双标注记录估计标注者噪声下限;评测时报告 inter-observer 参照 |
| 来源构成偏倚 | Long Term(33 条)与猝死(24 条)两库占 55%,ESC ST-T 仅 4 条 | 中 | 按来源库分层评估;留一来源库验证 |
| 时代偏倚 | 1979-1990 年采集设备与人群,250 Hz 重采样 | 中 | 与现代 500 Hz 设备数据联合验证 |
| 导联轴偏倚 | 双导联且轴配置随源库而异,非标准 12 导联 | 中 | 12 导联结论迁移至 LUDB/PTB-XL 验证 |
§7.2 标注质量评估
| 标注类型 | 可靠性 | 一致性 | 局限性 |
|---|---|---|---|
| 人工边界 .q1c(终稿) | 专家级,经审核消除粗差 | 双人子集可量化:T 波终点 2σ ≈ 30 ms(CSE 参照) | 单人标注为主;T 无 onset;仅正常搏动;仅最后 5 分钟 |
| 人工边界 .qt1/.qt2(草稿) | 同标注者第一遍 | 与 .q1c/.q2c 差值反映观察者内变异 | 仅 11 条记录 |
| 参考搏动 .atr/.man | 继承源库标注流程 | 各源库协议不一 | 24 条猝死记录缺失 |
| 自动边界 .pu 系列 | 不可作金标准(已知系统性错误) | 与 .q1c 的差异即 ecgpuwave 误差 | 仅宜作弱标签;T 形态 num 码语义独特 |
| QRS fiducial(N 点) | 自动检测器给出 | 高(R 峰定位相对容易) | 非人工确认 |
§7.3 泛化性讨论
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 清洁双导联 → 真实 Holter(噪声/运动伪差) | 高 | QTDB 选样排除噪声段;Joung 2023 证实心律失常段性能下降 |
| 低至中心率 → 心动过速(T-P 融合) | 高 | 官方自述心率偏低;Joung 2023:基准强模型在心动过速上明显变差 |
| 正常搏动 → 室早/房扑等病理搏动 | 高 | 无病理搏动人工真值;sel35 唯一房扑记录被多篇研究剔除 |
| 250 Hz 重采样信号 → 500 Hz 原生设备 | 中 | 重采样插值平滑高频细节;LUDB(500 Hz)上需重训或重采样 |
| QTDB 训练 → LUDB(12 导联) | 中 | Moskalenko 2020 自适应采样率设计可部分缓解;导联轴差异仍在 |
| 1990 年代人群 → 当代人群 | 低-中 | 心脏电生理测量学的跨时代漂移较小,但设备与人群结构已变 |
§7.4 伦理考量
- 24 条记录来自猝死患者在死亡过程中的 Holter 记录——数据本身即生命终点的记录,研究者应以相称的严肃态度使用;论文写作中避免猎奇化表述。
- 数据发布前已去标识化,无患者身份、日期与临床元数据;不可尝试从信号反推身份或与源库记录交叉重识别。
- ODC-BY 1.0 的署名义务是硬性合规要求:使用、修改、再发布均须按 §9 三件套引用。
- 无人口学元数据意味着无法进行公平性审计——在公平性敏感的临床研究中使用 QTDB 训练的模型,须在外部数据集上补充亚群评估。
§7.5 公平性评估
QTDB 不发布年龄、性别、种族字段,患者级公平性分析在库内不可行。可执行的替代是记录来源级公平性/稳健性分析:
import pandas as pd
# 按来源数据库分层的误差分析(公平性的可行替代:亚群稳健性)
rows = []
for rec_name, source_db, terr_std in results: # 逐记录 T_off 误差标准差
rows.append({"record": rec_name, "source": source_db, "t_off_std_ms": terr_std})
df = pd.DataFrame(rows)
print(df.groupby("source")["t_off_std_ms"].agg(["count", "mean", "max"]))
# 典型发现:猝死/LTSTDB 来源记录误差高于 NSRDB——形态复杂度差异而非人口学
已知差异(文献口径):缺血性 ST-T 形态与双相 T 波记录的 T 终点误差显著高于正常窦律记录(Martínez 2004 分形态统计);猝死来源记录的长 QT 与形态变异放大误差尾部。
§7.6 数据漂移提示
- 库内即存在来源间分布漂移:7 个源库设备、人群、采样率不同,统一 250 Hz 并未统一导联轴与噪声谱——按来源库分层评估应作为常规步骤。
- 部署到当代设备时注意:现代 Holter/穿戴设备多为 128-512 Hz 原生采样、单导联、干电极噪声谱——与 QTDB 的湿电极双导联分布差异明显。
- QTDB 无时间维元数据,不可做纵向漂移分析;其 1999 年冻结状态反而保证了基准的永久可比性。
§7.7 DAIMS 24 项数据就绪度评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 数据为宽格式(每行一个样本/事件) | ✅ | WFDB 记录结构:采样点 × 导联矩阵 + 标注点序列 |
| 2 | 有唯一标识符列 | ✅ | record_name + sample 索引构成完整主键链 |
| 3 | 无 Unicode 或特殊字符问题 | ✅ | 信号二进制、头文件 ASCII、标注符号为标准 WFDB 字符集 |
| 4 | 无重复行 | ✅ | 标注点经审核;.pu 自动标注偶见零宽波段属算法产物而非重复 |
| 5 | 缺失值已识别并编码 | ⚠️ | T onset/U 波/前 10 分钟为协议性缺失,官方文档有说明但无显式编码表(本页 §4.5 补齐) |
| 6 | 标签列被明确标识 | ✅ | .q1c/.q2c 为明确金标准,后缀语义官方定义 |
| 7 | 已对罕见类别(<3%)进行分组 | ❌ | U 波与非主导形态标注稀少,官方未做合并或加权处理 |
| 8 | 偏倚评估已完成 | ✅ | §7.1 七类偏倚(含官方自述的心率偏倚) |
| 9 | 有完整的数据字典 | ✅ | doc/ 内置论文全文 + 后缀表 + ANNOTATORS/RECORDS |
| 10 | 对"信息性缺失"有明确编码解释 | ⚠️ | 官方未按 MAR/MNAR 框架文档化(本页 §4.5 补齐) |
| 11 | 数据采集设备和设置已记录 | ⚠️ | 采样率/格式/增益完整记录;原始采集设备型号未逐记录文档化 |
| 12 | 已移除完全共线性变量 | ❌ | 原始信号发布,不适用且未执行 |
| 13 | 对编码的映射标准已说明 | ✅ | WFDB annotation 符号与 num 语义官方文档化 |
| 14 | 对时间戳的处理已明确说明 | ✅ | 统一 250 Hz、标注窗(最后 5 分钟)、xform 重采样方法均有文档 |
| 15 | 训练/验证/测试划分建议已给出 | ❌ | 官方无划分;社区记录级 5 折为事实标准(§5.1) |
| 16 | 数据泄漏风险已被讨论 | ✅ | §5.3 四种泄漏模式(搏动级划分、弱标签、自适应、双标注) |
| 17 | 标签分布已被分析 | ⚠️ | 官方未发布逐类标注点统计(本页 §4.2 汇总文献口径) |
| 18 | 选择性测量偏倚已被讨论 | ✅ | 选样标准→低心率/干净信号偏倚(官方自述 + Joung 2023 实证) |
| 19 | 外部验证建议已给出 | ✅ | §5.5 LUDB / MITDB / PTB-XL 路径 |
| 20 | 数据更新和版本信息已记录 | ✅ | v1.0.0 单版冻结 + SHA256 校验和 + DOI |
| 21 | 最小必要预处理脚本已提供 | ⚠️ | 无官方脚本;wfdb-python/torch_ecg 社区生态成熟补位 |
| 22 | 合规使用要求已明确 | ✅ | ODC-BY 1.0 + 官方引用要求页面明示 |
| 23 | 多模态对齐方法已说明 | ⚠️ | 双导联与标注点 sample 对齐机制明确;与源库记录的映射关系仅记录名层面可追溯 |
| 24 | 去标识化方法已被记录 | ⚠️ | 已去标识(无 ID/日期/元数据),但脱敏流程细节未公开 |
DAIMS 评分:17.5 / 24
评分解读:良好——作为 1990 年代构建的测量学基准,其标注协议文档化与开放程度远超同时代水平;扣分集中在小样本时代的结构性局限。
对你意味着什么:QTDB 的 14 个 ✅ 项集中在格式规范与评测基础设施——WFDB 标准、完整后缀语义、官方论文内置、SHA256 校验、永久冻结,这让它成为"拿来就能评测"的标杆。需要使用者自行补位的三件事:(1) 划分——官方无 split,请直接采用记录级 5 折并随论文公开记录清单;(2) 弱标签治理——.pu 系列绝不能当真值,采用半监督或噪声鲁棒策略(§6.5 坑点 1);(3) 适用范围声明——清洁信号、正常搏动、低至中心率的结论边界必须写进论文(坑点 4/5)。按此三件套执行,QTDB 仍是 2026 年描记算法论文最无可争议的评测台。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部测试集变化 | 关键发现 |
|---|---|---|---|---|---|
| MIT-BIH Arrhythmia(未见数据) | MIT/BIDMC | QRS 检测(DENS-ECG 迁移) | Se 99.61% / P+ 99.52% | 相对 QTDB 内 QRS 检出几乎无损 | QRS 层特征跨库高度可迁移;描记层未测 |
| LUDB(12 导联 500 Hz) | Lobachevsky 大学 | P/QRS/T 逐搏描记 | F1:QRS >99.9%、T ≈99.5%、P ≈97.8% | 与 QTDB 内相当(不同评测口径) | Moskalenko 2020 证实分割范式跨库有效;导联数与采样率适配是主要工程成本 |
| CSE Database | 欧共体心电图标准化项目 | 描记误差统计(Martínez 2004) | m < 1 采样点,s 在 CSE 容差内 | 与 QTDB 结果一致 | 小波描记器在四个标准库间结论稳定——经典方法泛化性的标杆研究 |
| 心律失常场景(心动过速等) | Joung 2023 自建多源评测 | 心律失常段描记 | 性能显著下降(定性) | 明显下降 | QTDB/LUDB 双库训练的模型在欠代表心律失常上失效,证明低心率偏倚的实际后果 |
QTDB 在 2026 年还值得用吗? 值得——且无可替代。它仍是唯一公开的专家逐搏边界金标准,三十年文献的可比性锚点。但它的正确用法已经清晰:评测台(record-level 划分 + .q1c 金标准 + CSE 容差对照),而非训练场(3,622 搏对深度模型只是起点,须配合 .pu 弱标签或外部数据)。LUDB 值得联合使用以覆盖 12 导联与病理搏动。
§8 基准性能与生态
§8.1 排行榜
QTDB 无官方维护的排行榜,本节汇总文献中在 QTDB 金标准上报告结果的代表性工作。注意口径差异:经典方法报告描记误差 m±s(对照 CSE 容差),深度学习方法多报告检出 F1/Se/P+,两者不可直接比较。
可比组 A:经典描记方法(误差统计口径,全部 105 条或明确子集评测)
| 排名 | 方法 | 性能指标 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | Martínez 小波描记器(WTMM) | 平均误差 <1 采样点(<4 ms);各边界 s 均在 CSE 2σ 容差内;T 波终点显著优于既往算法 | 2004 | 二次样条小波多尺度奇异点分析,单导联 | Martínez JP, Almeida R, Olmos S, Rocha AP, Laguna P. “A wavelet-based ECG delineator: evaluation on standard databases.” IEEE TBME 51(4):570-581. DOI: 10.1109/TBME.2003.821031 | 无官方开源(ECG-Kit wavedet 为同族实现) |
| 2 | ecgpuwave(数据集内置自动标注) | 即 .pu 与 .q1c 之差的误差分布(弱标签基线) | 1997 | 微分阈值法 | Laguna P et al. Computers in Cardiology 24:673-676 (1997) | WFDB 软件包内置 |
| 3 | Laguna 1994 多导联检测器 | 早期基准(CSE 验证体系) | 1994 | 多导联联合判据 | Laguna P, Jané R, Caminal P. Computers and Biomedical Research 27(1):45-60 | — |
可比组 B:深度学习方法(检出/分割口径;划分协议各异,数值间不可直接比较)
| 方法 | 性能指标 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|
| DENS-ECG | Se 97.95% / precision 95.68%(分层 5 折);QRS 迁移 MITDB Se 99.61% | 2021 | CNN+LSTM,onset/peak/offset 三任务头,实时设计 | Peimankar A, Puthusserypady S. “DENS-ECG: A deep learning approach for ECG signal delineation.” Expert Systems with Applications 165:113911 | 作者开源(论文链接) |
| Moskalenko U-Net | P/T/QRS F1 ≥97.8%/99.5%/99.9%(QTDB+LUDB 评测) | 2020 | UNet 类全卷积,采样率自适应,少参数 | Moskalenko V, Zolotykh N, Osipov G. “Deep Learning for ECG Segmentation.” arXiv:2001.04689 | https://github.com/terilization/ecg_segmentation(社区常用实现) |
| Mixed-quality U-Net(ECGDelNet) | recall 99.94%(分割层);与经典小波法误差统计相当 | 2021 | 1D U-Net + .pu 弱标签半监督预训练 + ECG 定制增强 | Jimenez-Perez G, Alcaine A, Camara O. “Delineation of the electrocardiogram with a mixed-quality-annotations dataset using convolutional neural networks.” Scientific Reports 11:524 | https://github.com/guillermo-jimenez/ECGDelNet |
| Joung et al. 心律失常鲁棒性研究 | QTDB/LUDB 上 QRS/T F1 >99%、P >97%;心动过速段显著下降 | 2023 | U-Net 分割 + 后处理边界提取;心律失常分层分析 | Joung C, Kim M, et al. “Deep Learning based ECG Segmentation for Delineation of Diverse Arrhythmias.” arXiv:2304.06237 | — |
不可比性警示:组 B 各论文的划分粒度(记录级 vs 搏动级)、标注集(.q1c 是否含双标注记录)、匹配容差窗(±150 ms vs 其他)各不相同,绝对数值不可横向比较。复现任何一行前,先核对该论文的三项协议(见 §6.10 标注集声明)。
§8.2 SOTA 总结与选型建议
| 如果你… | 推荐方案 | 为什么 |
|---|---|---|
| 写描记算法论文、需与三十年文献可比 | 全库评测 + m±s 对照 CSE 容差(组 A 口径) | 唯一被审稿人普遍接受的经典口径 |
| 训练深度学习分割模型 | 记录级 5 折 + .pu 预训练 + .q1c 微调 | Jimenez-Perez 2021 验证的最优小样本策略 |
| 需要实时/嵌入式部署 | DENS-ECG 结构 | 为该目标专门设计,参数量小 |
| 验证跨库泛化 | QTDB 训练 → LUDB / MITDB 外部验证 | §7.8 已有成功先例与失败教训 |
| 研究标注噪声 | 11 条双标注记录(.q1c vs .q2c) | 唯一公开的专家间差异标尺 |
§8.3 官方评测协议
无官方协议。社区事实标准(Martínez 2004 体系):全部 105 条记录(或声明的子集);以 .q1c 为参照;逐类标注点(Pon/Poff/QRSon/QRSoff/Tpeak/Toff)在 ±150 ms 匹配窗内配对;报告误差均值 m 与标准差 s(ms);判定标准为 |m| 接近 0 且 s ≤ CSE 2σ 容差(P-on 10.2 / P-off 12.7 / QRS-on 6.5 / QRS-off 11.6 / T-off 30.6 ms)。深度学习文献另需声明划分粒度与标注集。
§8.4 相关数据集
| 数据集 | 关系 | 说明 |
|---|---|---|
| LUDB(Lobachevsky University Database) | 现代同类 | 200 条 10 秒 12 导联 500 Hz,每搏人工描记;Kalyakulina et al. 2020, IEEE Access |
| MIT-BIH Arrhythmia Database | 部分来源 + 互补 | QTDB 15 条记录的来源库;搏动类型分类金标准(无边界标注) |
| European ST-T Database | 来源库 | 4 条记录来源;缺血 ST 事件标注 |
| CSE Database | 标准参照 | 容差标准(2σ)来源;不公开,几乎不可得 |
| PTB Diagnostic ECG Database | 易混淆对象 | CinC 2006 QT 挑战赛实际使用数据(549 条) |
| PTB-XL | 大规模补充 | 21,837 条 12 导联诊断级标注,无边界标注 |
| NSTDB(Noise Stress Test DB) | 互补 | 噪声鲁棒性压测;弥补 QTDB"过干净"的缺口 |
§8.5 关键论文 Top 10
- Laguna P, Mark RG, Goldberger AL, Moody GB (1997), Computers in Cardiology 24:673-676. “A Database for Evaluation of Algorithms for Measurement of QT and Other Waveform Intervals in the ECG.” — 数据集本体,权威引用入口。DOI: 10.1109/CIC.1997.648140
- Martínez JP, Almeida R, Olmos S, Rocha AP, Laguna P (2004), IEEE TBME 51(4):570-581. “A wavelet-based ECG delineator: evaluation on standard databases.” — 领域被引最高方法学论文(2,300+ 引用),小波描记器与 CSE 容差对照范式。DOI: 10.1109/TBME.2003.821031
- Peimankar A, Puthusserypady S (2021), Expert Systems with Applications 165:113911. DENS-ECG——深度学习描记的主流结构参考。
- Jimenez-Perez G, Alcaine A, Camara O (2021), Scientific Reports 11:524. 混合质量标注 1D U-Net——弱标签利用的范式论文。
- Moskalenko V, Zolotykh N, Osipov G (2020), arXiv:2001.04689. UNet 描记 + 采样率自适应;QTDB/LUDB 双库评测。
- Joung C et al. (2023), arXiv:2304.06237. 心律失常对描记模型的挑战——揭示 QTDB 低心率偏倚后果的关键实证。
- Moody GB, Koch H, Steinhoff U (2006), Computers in Cardiology 33:313-316. CinC 2006 QT 测量挑战赛(PTB 库)——QT 测量精度的人工/自动标尺。
- Laguna P, Jané R, Caminal P (1994), Computers and Biomedical Research 27(1):45-60. CSE 验证体系——QTDB 方法学的直接前史。
- Baumert M et al. (2016), Europace 18(6):925-944. “QT interval variability in body surface ECG” 立场声明——QT 测量的临床与标准化语境。
- Goldberger AL et al. (2000), Circulation 101(23):e215-e220. PhysioNet 平台论文——DUA/ODC 要求的平台引用。
§8.6 社区活跃度
| 维度 | 数据 |
|---|---|
| Google Scholar 引用(Laguna 1997) | 930+(截至 2026-09,作者主页快照) |
| Martínez 2004 小波描记器引用 | 2,300+(截至 2026-09,作者主页快照) |
| PhysioNet 项目页浏览 | 347 独立注册用户浏览(页面口径,截至 2026-09) |
| 工具链集成 | wfdb-python、torch_ecg、NeuroKit2、ECG-Kit 均内置 QTDB 支持 |
| 教学采用 | 生物医学信号处理课程标准实验数据(WFDB 教程默认示例库之一) |
| 领域地位 | ECG 波形描记(delineation)评测的全球事实标准,1997 年至今 |
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/Fork(截至 2026-09,约) | 为什么值得关注 |
|---|---|---|---|---|
| WFDB 软件包 / wfdb-python | 官方工具 | https://github.com/MIT-LCP/wfdb-python | 400+ / 150+ | 读写 .dat/.q1c 的唯一权威实现;内置 ecgpuwave 同族工具链 |
| torch_ecg(DeepPSP) | 工具库 | https://github.com/DeepPSP/torch_ecg | 500+ / 100+ | 内置 QTDB 数据类,文档含 num 语义与已知问题清单 |
| ECGDelNet | 模型代码 | https://github.com/guillermo-jimenez/ECGDelNet | 活跃 | Jimenez-Perez 2021 官方实现,弱标签训练范式可直接复用 |
| NeuroKit2 | 工具库 | https://github.com/neuropsychology/NeuroKit | 1,400+ / 300+ | ecg_delineate 三法(DWT/peak/CWT)对照,教学与快速原型首选 |
| ECG-Kit(MATLAB) | 工具库 | https://github.com/marianux/ecg-kit | 200+ / 80+ | 内置 CinC 2006 获奖 wavedet_3D 描记器 |
| PhysioNet LightWAVE | 在线工具 | https://physionet.org/lightwave/?db=qtdb/1.0.0 | — | 浏览器内可视化信号与标注叠加,零安装理解标注体系 |
§9 相关资源与引用
官方资源
- 数据集主页:https://physionet.org/content/qtdb/1.0.0/
- 文件直下(wget):https://physionet.org/files/qtdb/1.0.0/
- 在线可视化(LightWAVE):https://physionet.org/lightwave/?db=qtdb/1.0.0
- 内置论文文档(构建方法权威说明):https://physionet.org/content/qtdb/1.0.0/doc/
- AWS 开放桶:s3://physionet-open/qtdb/1.0.0/
- 许可证:Open Data Commons Attribution License v1.0(ODC-BY 1.0)
BibTeX 引用(三件套,ODC-BY 署名义务的完整履行)
% 1) 数据集论文(期刊引用首选)
@inproceedings{laguna1997qtdatabase,
title={A Database for Evaluation of Algorithms for Measurement of QT
and Other Waveform Intervals in the ECG},
author={Laguna, Pablo and Mark, Roger G. and Goldberger, Ary and Moody, George B.},
booktitle={Computers in Cardiology 1997},
volume={24},
pages={673--676},
year={1997},
doi={10.1109/CIC.1997.648140}
}
% 2) 数据集本体(PhysioNet 版本引用)
@misc{qtdb-physionet-1.0.0,
author={Mark, Roger and Moody, George},
title={{QT Database}},
howpublished={PhysioNet},
year={1999},
note={Version 1.0.0},
doi={10.13026/C24K53}
}
% 3) PhysioNet 平台(官方要求同时引用)
@article{goldberger2000physionet,
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}
}
许多论文漏引第 2、3 条——这不符合 ODC-BY 署名义务。投稿前请逐项核对。
教程与学习资源
- wfdb-python 官方文档(含 QTDB 读取示例):https://wfdb.readthedocs.io/
- torch_ecg QTDB 数据类文档(后缀语义与已知问题最完整的中文社区参考资料之一):https://torch-ecg.readthedocs.io/
- NeuroKit2 ECG delineate 教程:https://neuropsychology.github.io/NeuroKit/functions/ecg.html
- PhysioNet WFDB 软件包文档(format 212、annotation 格式规范):https://physionet.org/physiotools/wag/
原始论文
- Laguna P, Mark RG, Goldberger AL, Moody GB (1997). “A Database for Evaluation of Algorithms for Measurement of QT and Other Waveform Intervals in the ECG.” Computers in Cardiology 24:673-676. DOI: 10.1109/CIC.1997.648140.
- Martínez JP, Almeida R, Olmos S, Rocha AP, Laguna P (2004). “A wavelet-based ECG delineator: evaluation on standard databases.” IEEE Transactions on Biomedical Engineering 51(4):570-581. DOI: 10.1109/TBME.2003.821031. PMID: 15072211.
- Moody GB, Koch H, Steinhoff U (2006). “The PhysioNet/Computers in Cardiology Challenge 2006: QT Interval Measurement.” Computers in Cardiology 33:313-316.
- Laguna P, Jané R, Caminal P (1994). “Automatic detection of wave boundaries in multilead ECG signals: Validation with the CSE database.” Computers and Biomedical Research 27(1):45-60.
- Goldberger AL et al. (2000). “PhysioBank, PhysioToolkit, and PhysioNet.” Circulation 101(23):e215-e220.
§10 AI 使用声明卡
§10.1 AI 模型使用
| AI 模型 | 版本 | 用途 |
|---|---|---|
| deep-model(WorkBuddy) | 2026-09 | 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建 |
| WebSearch(多源检索) | 2026-09-05 | 6 组检索:PhysioNet 官方页面、标注后缀体系、Laguna 1997 引用快照、Martínez 2004 性能、CinC 2006 挑战赛、深度学习基准交叉验证 |
§10.2 AI 参与范围
AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。
AI 在本页面的工作中负责:(1) 从 PhysioNet 官方页面、Laguna 1997 原始论文、Martínez 2004、CinC 2006 挑战赛档案与社区工具文档中整理结构化信息;(2) 生成 §6 的 Python 代码示例;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph。
§10.3 输入来源
- Laguna P, Mark RG, Goldberger AL, Moody GB (1997), Computers in Cardiology 24:673-676 — QTDB 原始论文(DOI: 10.1109/CIC.1997.648140)
- PhysioNet QTDB v1.0.0 官方页面(文件后缀表、license、大小、DOI)
- QTDB 内置文档 doc/node3.html(来源构成 Table 1)与 doc/node4.html(标注协议、3,622 搏、双人标注子集)
- PhysioNet 旧版归档页(文件清单与校验信息)
- Martínez JP et al. (2004), IEEE TBME 51(4):570-581(DOI: 10.1109/TBME.2003.821031;PMID: 15072211)
- Moody GB, Koch H, Steinhoff U (2006), CinC 33:313-316 + physionet.org/challenge/2006/ 挑战赛档案
- Peimankar A, Puthusserypady S (2021), Expert Systems with Applications 165:113911(DENS-ECG)
- Jimenez-Perez G et al. (2021), Scientific Reports 11:524(PMC7806759;3,246 高质量 + 135,170 低质量搏动口径)
- Moskalenko V et al. (2020), arXiv:2001.04689
- Joung C et al. (2023), arXiv:2304.06237(心律失常鲁棒性实证)
- torch_ecg QTDB 数据类文档(num 字段语义、.ari 缺失、T/U onset 缺失等已知问题)
- Brno University of Technology 学位论文(79/105 条 ≥30 搏人工标注、自动标注不可用结论)
- Pablo Laguna Google Scholar 作者主页(引用数快照,截至 2026-09)
- Baumert M et al. (2016), Europace 18(6):925-944(QT 变异性立场声明)
- Goldberger AL et al. (2000), Circulation 101(23):e215-e220(PhysioNet 平台)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(QT 临床意义、编码映射、金标准) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §3 数据集规格(105 条构成、后缀体系) | 千方病案医学编辑部 | 与 PhysioNet 官方页面及内置 doc 交叉比对 | ✅ 已验证 |
| §4 数据结构(标注符号、num 语义、层级) | 千方病案医学编辑部 | 与 torch_ecg 文档及 WFDB 规范交叉比对 | ✅ 已验证 |
| §5 数据划分策略 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §6 代码示例与坑点 | 千方病案医学编辑部 | 逻辑审查 + 与 wfdb/torch_ecg 文档比对 | ✅ 已通过 |
| §7 质量评估与 DAIMS 评分 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §8 排行榜与引用数表述 | 千方病案医学编辑部 | 与原文及 Scholar 快照交叉比对 | ✅ 已验证 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema v3.9 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§6.0-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.5 公平性评估代码、§7.7 DAIMS 评估表与评分、§8.7 生态快照、§C JSON-LD。
§10.6 最后审核
最后一次人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
