信息速览
INFOBOX — CODE-test 一屏速览
维度 内容 本质 CODE 研究(Clinical Outcomes in Digital Electrocardiology)的公开留出测试集:Ribeiro et al. 2020 Nat Commun 论文 827 例 hold-out test 来源 巴西米纳斯吉拉斯州远程医疗网络 TNMG 常规业务 ECG(上游全库约 232 万条 / 167.6 万患者 / 811 市县) 数据 827 例 12 导联 ECG;400 Hz;4096 样本(原始 7 s/10 s 对称零填充);HDF5 张量 (827, 4096, 12);218.2 MB 类别 六类二元异常多标签:1dAVb / RBBB / LBBB / SB / AF / ST 标注 双心内科医师独立标注一致即金标准,分歧由第三资深专家仲裁;另有 DNN、心内住院医、急诊住院医、医学生四套对照标注 流行率 金标准口径 146/827(17.7%)至少一项异常,12 例多项(第三方目录口径,存照) 论文结论 DNN 六类 F1 全部 >0.80、特异性 >0.99,胜过心内科住院医师 许可 CC BY 4.0,Zenodo record 3765780 公开直链,无需注册 配套 GitHub antonior92/automatic-ecg-diagnosis(训练/评测脚本与预训练模型) 库内血缘 CODE-15%(code-15)为同论文公开训练子集;CODE 全库本体受限(DUA) 独特价值 「DNN vs 三级医师 vs 金标准」同题完整对照——可做观察者一致性研究,不只是打榜
CODE-test 是一个「小而极重」的数据集:它只有 827 例心电图,却承载了深度学习心电诊断方向被引用最多的论文之一(Ribeiro et al., Nature Communications 2020)的全部公开测试证据。它的真正卖点不是规模,而是标注的透明度——同一个测试集上,两名心内科医师、一名仲裁专家、两名心内科住院医师、两名急诊住院医师、两名医学生和论文自己的深度神经网络,各自留下了一套完整的六类异常标注。你拿到的不只是「题目和标准答案」,还有「各个水平考生」的真实答卷。这使它同时是模型基准、医师-机器对照研究材料和观察者一致性研究素材。
导语读法三则:
- 只想下数据:直奔 §6 获取与许可——CC BY 4.0,Zenodo 直链一个 zip 全搞定,无需注册。
- 关心 AI vs 医师:直奔 §4 与 §5——六套标注文件的协议与论文对照结果是核心。
- 关心信号工程细节:直奔 §2——400 Hz、零填充到 4096、量纲 1e-4 V 这三个坑都在那里。
§0 导读:这个数据集解决什么问题
自动心电图分析在临床上并非新事物——计算机化 ECG 解读早已内置于各厂商机器,但其准确率长期不被信任,临床实践中医师几乎总要重新阅读。深度学习出现后,问题变成:一个在大规模标注数据上训练的神经网络,能不能在标准 12 导联心电图上稳定超过受过训练的医师?要回答这个问题需要两样东西:一是足够大的训练语料(Ribeiro 团队手里有 TNMG 常规业务积累的约 232 万条 ECG),二是一个标注协议完全透明、且同时有医师对照成绩的测试集。前者从未公开,后者就是 CODE-test。
CODE-test 的设计哲学可以概括为一句话:测试集本身也是一份研究材料。多数公开 ECG 基准只给你一个标签列,你无法知道标签怎么来的、医师水平如何影响答案。CODE-test 则把整个标注社会学的全貌原样发布:独立双医师、分歧仲裁、不同训练水平的初级医师与学生、以及模型自身的预测——六列答案摆在一起,研究者可以重现论文里「DNN 胜过住院医师」的核心论证,也可以做论文没做的观察者一致性、裁决偏差、标注层级效用等分析。
§0 读法三则:
- 这个条目是「测试集+论文证据+标注社会学样本」三合一:本体是 827 例信号与六套标注,论文证据是 DNN vs 医师对照结论,副产品是一套可复用的多层级标注协议。
- 全文统计数字均出自 Zenodo 官方描述、arXiv/Nature Communications 论文与第三方收录目录三源互证;凡单源或未实抓处均已在坑点与 FACTS 存照中显式标注。
- 检索时注意区分三个名字:CODE(232 万条全库,受限)、CODE-15%(公开 15% 训练子集,库内 rid 152)、CODE-test(827 例公开测试集,本条目)——三者常被混写(坑 1)。
§1 数据集速览:十问十答
Q1:CODE-test 的「CODE」是什么?
Clinical Outcomes in Digital Electrocardiology——巴西米纳斯吉拉斯联邦大学(UFMG)主导的一项长期研究计划,依托州远程医疗网络 TNMG 的日常业务采集心电图并随访结局,累计约 232 万条记录、167.6 万患者,覆盖全州 811 个市县。
Q2:827 例是怎么来的?
它是 Ribeiro 2020 论文的 hold-out test set:从 CODE 库内部划分出训练/验证集后独立保留的测试子集,公开发布于 Zenodo(2020-01-22,v1.0.3)。每例来自不同患者,一例一心,无重复患者。
Q3:信号什么规格?
12 导联、400 Hz 采样。原始采集时长 7 秒(2800 样本)或 10 秒(4000 样本),发布时在两侧对称零填充统一到 4096 样本(约 10.24 秒)。浮点存储,量纲 1e-4 V——要得到伏特需乘 1000。
Q4:标注哪六类异常?
一度房室阻滞(1dAVb)、右束支阻滞(RBBB)、左束支阻滞(LBBB)、窦性心动过缓(SB)、房颤(AF)、窦性心动过速(ST)。每类一个 0/1 列,多标签——一个样本可同时阳性多项(金标准口径 12 例)。
Q5:金标准怎么定的?
两名心内科医师独立标注:一致即采纳为金标准;任何分歧交由第三名资深专家仲裁(该专家知晓前两人的标注后裁决——协议上有此非盲设计,坑 6)。
Q6:除了金标准还有什么标注?
五套对照:cardiologist 1、cardiologist 2 的各自独立标注、DNN 预测(阈值取 F1 最大化)、两名心内科 4 年级住院医师(各标一半)、两名急诊 3 年级住院医师(各标一半)、两名医大 5 年级学生(各标一半)。共 6 份 csv 文件,行序与信号一一对应。
Q7:异常比例多少?会不会太容易?
金标准口径下 146/827(约 17.7%)至少一项异常——远高于普通筛查人群,但也意味着 82% 为全阴性,做分类器评测时需注意类不平衡与特异性指标的重要性。
Q8:论文的核心结果是什么?
DNN 在六类异常上 F1 全部超过 0.80、特异性超过 0.99,且整体成绩胜过心内科住院医师——这是「深度学习 12 导联 ECG 诊断达到并超过初级专科医师水平」这一论断的最常被引用证据。
Q9:我现在能拿到什么?
全部。CC BY 4.0,Zenodo record 3765780 直接下载 data.zip(218.2 MB,含信号 HDF5 + 属性表 + 全部标注 csv),配套 GitHub 仓库提供训练/评测脚本与预训练模型。上游 CODE 全库本体则从未公开(需数据使用协议 DUA,走合作申请)。
Q10:为什么它对 AI-Ready 重要?
它是「测试集即基准」的极简范本:单文件分发、格式自解释(HDF5+CSV)、license 干净、附带官方代码——机器可读与人类可读兼备。它同时示范了另一种 AI-Ready 维度:标注过程的完整可追溯(六套答案并置),这是多数数据集不具备的元透明度。
§2 数据构成与规格
2.1 规模与来源
| 属性 | 数值 |
|---|---|
| 记录数 | 827 例 12 导联 ECG |
| 患者数 | 827(不同患者,一例一心) |
| 上游来源 | CODE 研究(TNMG 常规业务,约 2,322,513 条 / 1,676,384 患者 / 811 市县,第三方精确口径) |
| 发布 | Zenodo record 3765780,v1.0.3,2020-01-22 |
| 发布方署名 | UFMG(巴西)+ Uppsala University(瑞典)+ University of Glasgow(苏格兰) |
| 文件包 | data.zip,218.2 MB,md5 cef8fe457abf4b8f66a34dc1269b4ced |
827 例的抽样过程未随数据集发布完整的抽样协议文档——它是论文内部数据划分的产物,公众知道的是「独立患者、独立于训练/验证集」。与上游全库相比,它是极小的非随机切片,异常流行率(17.7% 至少一项)远高于常规人群。使用时的含义:不要把 CODE-test 当作流行病学样本,它天生是评测材料。
2.2 信号规格
| 属性 | 规格 |
|---|---|
| 导联 | 12 导联,顺序 DI, DII, DIII, AVR, AVL, AVF, V1, V2, V3, V4, V5, V6 |
| 采样率 | 400 Hz |
| 存储形状 | (827, 4096, 12) HDF5 张量,数据集名 tracings |
| 原始时长 | 7 s(2800 样本)或 10 s(4000 样本)混布 |
| 填充策略 | 两侧对称零填充至 4096 样本(7 s 信号首尾各补 648 样本) |
| 量纲 | 浮点数,1e-4 V 刻度(×1000 得伏特) |
| 读取方式 | h5py 读 tracings 数据集即可(官方 README 给出三行示例) |
零填充是使用时的第一个工程坑:有效信号段在 7 s 与 10 s 两种样本里位置不同。直接全段输入模型没问题(训练时同样如此),但若做 R 波检测、时长敏感的节律统计或信号质量评估,需要先定位有效段。官方训练管线不做去填充,模型自学忽略零段。
2.3 文件清单
data.zip (218.2 MB)
├── ecg_tracings.hdf5 # (827, 4096, 12) 信号张量
├── attributes.csv # 性别(M/F)、年龄;827 行+表头,行序=信号第一维
└── annotations/
├── cardiologist1.csv # 心内科医师 1 独立标注(金标准裁决人)
├── cardiologist2.csv # 心内科医师 2 独立标注(金标准裁决人)
├── gold_standard.csv # 金标准(双医师一致项 + 第三专家仲裁项)
├── dnn.csv # 论文 DNN 预测(阈值取 F1 最大化)
├── cardiology_residents.csv # 心内 4 年级住院医 ×2(各标一半)
├── emergency_residents.csv # 急诊 3 年级住院医 ×2(各标一半)
└── medical_students.csv # 医大 5 年级学生 ×2(各标一半)
全部标注 csv 同构:827 行+表头,6 列(1dAVb, RBBB, LBBB, SB, AF, ST),0/1 取值,第 i 行对应 ecg_tracings.hdf5 第 i 条信号。行序对齐是这个数据集最重要的约定——所有跨文件分析都以行号 join,没有任何患者 ID 泄漏风险(本身就是匿名化设计)。
§3 标注协议:六套答案如何产生
3.1 金标准协议
金标准(gold_standard.csv)的产生分两步:
- 双医师独立标注:两名心内科医师分别独立阅读全部 827 例并各自给出六类 0/1 判定。两人一致的条目,直接采纳为金标准——论文以此利用一致性作为可信度代理。
- 专家仲裁:任何不一致条目交由第三名资深专家裁决。注意协议原文明确该专家「知晓(aware of)前两人的标注」后决定——这是一种知情的仲裁而非盲裁。仲裁结果直接写入金标准。
这个协议的强度介于「单一专家金标准」与「多轮盲裁共识」之间:一致性条目有双医师背书,分歧条目依赖单一资深意见且非盲。做观察者一致性研究时应把 gold_standard 视为「裁决共识」而非「无误差真值」(坑 6)。
3.2 五套对照标注
| 文件 | 标注者 | 覆盖方式 | 用途 |
|---|---|---|---|
| cardiologist1.csv / cardiologist2.csv | 心内科医师(金标准裁决人) | 全集各自独立 | 重现一致性→金标准流程;度量专家间分歧 |
| dnn.csv | 论文 DNN(残差卷积网络) | 全集 | 模型-医师同题对照;阈值经 F1 最大化校准 |
| cardiology_residents.csv | 心内科 4 年级住院医 ×2 | 各标一半 | 专科培训中期水平基线 |
| emergency_residents.csv | 急诊 3 年级住院医 ×2 | 各标一半 | 非专科急症一线水平基线 |
| medical_students.csv | 医大 5 年级学生 ×2 | 各标一半 | 未受训基线(地板组) |
「各标一半」意味着每位住院医/学生只有约 413 例的成绩,论文在其间的比较是基于合并两人的汇总表现。做逐人分析时无法从公开文件区分同组内的两个个体——csv 只有一列合并结果。这是公开版相对论文内部信息的一处降维(坑 4)。
3.3 为什么这种标注结构稀有
绝大多数公开医学数据集只发布一个标签列,标注者身份、水平、分歧处理方式都是黑箱。CODE-test 反其道而行:把「答案」与「各水平考生的答卷」一并发布,使第三方可以:
- 重现论文的 DNN vs 住院医比较,并检验其结论稳健性;
- 计算任何两级标注者之间的观察者一致性(κ、F1、敏感度/特异度矩阵);
- 研究「仲裁专家的分歧条目倾向」——例如仲裁是否系统性偏向某一侧;
- 用学生/住院医成绩做「难度分层」:某条目连金标准裁决人都分歧、学生全错,即为高难样本。
这套协议后来在 TNMG 系数据集(如 SaMi-Trop)与诸多 ECG 论文被引用为多级标注的模板。
§4 论文结论与医师-机器对照
4.1 论文说了什么
Ribeiro 等人在 Nature Communications 11:1760(2020)报告的核心结论可以压缩成一组不等式:
在 12 导联 ECG 的六类异常诊断上,论文训练的深度神经网络 F1 全部 > 0.80、特异性全部 > 0.99,并在与心内科住院医师的同题对照中胜出。
这组数字是 CODE-test 存在的根本理由:新闻稿与后续引用反复引用的「AI 超过初级专科医师水平」,指向的就是这份 827 例留出测试集上的一次评估。论文的对照设计值得逐层拆开看,因为它比单一的 F1 数字更有信息量。
把结论拆成可检验的三个层次,有助于避免误读:
- 任务层:六类异常是二元多标签任务——网络末端对每一类独立做 sigmoid 输出,一条样本可以同时被判为多项异常。这与"六选一"的多分类任务在评估方式上完全不同(多分类看 accuracy,多标签看逐类 F1/敏感度/特异度)。
- 对照层:论文不只是"模型 vs 一个医师群体",而是"模型 vs 三档不同训练水平的人"。胜负判定要落到"赢了哪一档",而不是笼统的"超过人类"。
- 保证层:F1>0.80 与特异性>0.99 是逐类下限式的摘要表述——它承诺每一类都过线,而不披露每类的精确取值。这一表述方式本身是一种"最小保证",引用时不应把下限当作实际均值得出。
4.1.1 为什么"多标签"这件事很重要
如果 CODE-test 的六类异常是互斥多分类,那么评估会简单得多——准确率、混淆矩阵即可概括。但心电异常在临床上天然共存:一个患者可以同时是窦性心动过缓且合并一度房室阻滞,也可以在心房颤动的基础上出现束支阻滞图形。CODE-test 采用逐类独立二元判定,正是为了保留这种共存结构。
这一设计带来两个实际后果:
- 类不平衡被放大:每类各自的阳性数远少于阴性数,某些少类(如 LBBB)的样本量可能只有个位数到十位数量级,逐类 F1 的方差因此较大。报告逐类指标时,样本量小的类别应同时给出阳性数,否则横向比较不公平。
- 阈值可逐类调:dnn.csv 的 0/1 是"阈值取 F1 最大化"的产物。多标签任务里,每类理论上可以取不同的截断阈值;论文采用统一规则(逐类 F1 最大化),使用者在复现时应沿用同一规则,或明确声明自己用了不同阈值,否则与论文对照会失真。
4.2 三层医师对照的设计
论文把「医师基准」拆成三档训练水平,各自有明确含义:
| 对照档 | 人员构成 | 读片量分配 | 代表的能力水平 |
|---|---|---|---|
| 心内科住院医(cardiology residents) | 2 名心内科 4 年级住院医 | 各标一半 | 专科培训中后期——最接近自动化系统要有意义地超越的目标线 |
| 急诊住院医(emergency residents) | 2 名急诊 3 年级住院医 | 各标一半 | 非心脏专科的一线急症阅读水平 |
| 医学生(medical students) | 2 名医大 5 年级学生 | 各标一半 | 受训前期——近似「地板基线」 |
三档的意义在于:单一医师对照只能给出「AI vs 某个水平」,三档对照给出的是「AI 在人才梯度上的落点」。DNN 的六年制对照结论是它超过心内科住院医这一档,而急诊住院医与医学生的成绩则依次更低——这构成了一条可读的能力阶梯,而不是一个孤立的胜负判定。
4.3 六套标注并置的科学价值
论文的评估数据被完整封装进数据集发布,这一点在公开医学数据集中相当罕见。对第三方研究者而言,六套并置的标注打开了论文本身没有展开的几类分析:
- 观察者一致性(inter-rater agreement)分析:cardiologist 1 与 cardiologist 2 的全集独立标注可以计算逐类 Cohen’s κ、阳性/阴性符合率,度量「连专家都分歧」的异常类别有哪些。
- 难度分层:把「双医师分歧 + 住院医/学生同样答错」的条目筛出来,即可得到数据集内的高难样本清单,用于误差分析或 curriculum learning。
- 仲裁行为研究:gold_standard 与 cardiologist1/2 的差分可以反推第三名专家在每条分歧条目上的裁决方向——这是论文未系统报告的副产品,却对理解「非盲仲裁」的偏差极有价值(详见坑 6)。
- 模型-医师同题对照的复现:dnn.csv 与 gold_standard.csv 直接给出论文口径的模型成绩,任何新方法都可在完全相同的题目与答案上自比。
4.4 数字的引用纪律
本条目在引用论文数字时采取三层纪律:
- 摘要级保证(F1>0.80、特异性>0.99、胜过心内科住院医)来自 arXiv 与论文摘要,三源互证,可放心引用;
- 逐类 F1/敏感度/特异度完整表格属于论文 Table 与 Figure 口径,本条目未逐格二次实抓(Nature 页面反爬),故正文不逐一列出、只标注量级(详见坑 3 与 §9 遗留疑点);
- 任何在第三方论文中看到的 CODE-test 成绩都应回到其训练数据隔离声明——用 CODE-test 当测试集很常见(§7),但若该作者同时也用了 CODE-15% 或上游 CODE 当训练集,则存在训练-测试同源污染,成绩不能与你手上「只用 CODE-test 做纯外部测试」的结果直接比较。
§5 伦理、隐私与使用边界
5.1 去标识化与患者保护
CODE-test 的 827 例信号以纯数值张量 + 性别/年龄两项人口学的形式发布,不含姓名、病历号、机构标识、采集时间戳、诊断文本或任何直接标识符。行序本身是唯一连接键——数据集设计者刻意不提供患者 ID,使「同一患者跨表关联」在发布数据内不可能发生。这一点是它作为 CC BY 4.0 无门槛公开数据集的前提:可发布性建立在去标识化彻底性之上。
需要向使用者明确的是:去标识化不等于零风险。性别 + 年龄 + 波形特征理论上构成弱准标识,在极小地理范围内做再识别研究在方法学上并非全然不可能;虽然 TNMG 覆盖 811 个市县、样本量达数十万人,单独针对 CODE-test 的再识别动机与可行性都极低,但研究者仍应遵守「不做再识别尝试」的通行伦理约定。
5.2 原始采集的伦理链条
上游 CODE 研究的 ECG 全部来自 Telehealth Network of Minas Gerais(TNMG)的常规业务——即患者因临床需要接受了心电图检查,信号是诊疗过程的副产品,而非为研究额外采集。这类「常规诊疗数据二次利用」在各辖区的伦理审查框架里通常需要机构伦理委员会(IRB/CEP)批准与知情同意豁免(或泛化同意)支持。数据集公开版的去标识化程度,正是这一审批链条能走通的产物。
5.3 使用边界四则
| 边界 | 说明 |
|---|---|
| 不作临床诊断工具 | 827 例是评测子集,不是医疗器械验证数据集;任何在此上的模型成绩都不构成临床准入证据 |
| 不作流行病学推断 | 流行率(17.7% 至少一项异常)是金标准标注口径下的测试集组成,不是米纳斯吉拉斯人群的疾病负担 |
| 不作人群泛化结论 | 单一巴西州级远程医疗网络来源,跨地域/跨种族泛化必须另有外部验证集支撑(库内可参照 cpsc/132、chapman-shaoxing/143 做跨地域对照) |
| 尊重测试集隔离 | 若用 CODE-test 做测试,务必声明训练集构成;用 CODE-15% 或上游数据训练的模型报告 CODE-test 成绩时常被误读为「纯外部泛化」 |
5.4 与上游受限全库的伦理分界
这是最容易踩的边界:CODE-test 是公开的,但它的上游 CODE 全库(约 232 万条)从未公开。公开版之所以能 CC BY 4.0 无门槛分发,恰恰因为它是一个小规模、强去标识、且经过论文作者审慎选择的测试子集;上游全库涉及更大规模的患者记录,只能通过数据使用协议(DUA)与合作申请获取。不要把「CODE-test 可以在网上直接下载」误推为「CODE 全库也可以」——两者是两套完全不同的访问制度(详见坑 1 与 §6)。
§6 获取与许可:一个 zip 的门
6.1 一句话获取路径
CODE-test 的获取门槛是本文档讨论的所有数据集里最低的一档:
打开 Zenodo record 3765780 → 下载 data.zip(218.2 MB)→ 解压即得信号 HDF5 + 属性表 + 全部标注 csv。无注册、无申请、无 gated、无登录。
6.2 资产清单与许可
| 资产 | 载体 | 许可 | 获取方式 |
|---|---|---|---|
| CODE-test 数据集本体 | Zenodo record 3765780,data.zip(218.2 MB) | CC BY 4.0(Open access) | HTTP 直链下载,无需注册 |
| 论文 | Nature Communications 11:1760(2020) | 期刊开放获取 | DOI 10.1038/s41467-020-15432-4 |
| 训练/评测代码与预训练模型 | GitHub antonior92/automatic-ecg-diagnosis | 随仓库开源 | git clone |
| 上游 CODE 全库(约 232 万条) | 未公开 | 受限(DUA) | 合作申请,见 5.4 |
6.3 CC BY 4.0 的实际含义
CC BY 4.0 是最宽松的一档知识共享许可:只要署名(BY),商业与非商业用途、再分发、改编、训练模型全部允许。落到 CODE-test 上,实务含义是:
- ✅ 可以直接下载、镜像、纳入内部数据湖;
- ✅ 可以用它训练/微调任何模型(含商用模型),无需再联系作者;
- ✅ 可以把派生的子集、再标注版本重新发布,只要标注来源;
- ⚠️ 唯一义务是署名:引用时须给 Ribeiro et al. 2020 与 Zenodo record 3765780,并指明是否做了修改;
- ⚠️ CC BY 不含专利与商标授权,也不提供任何担保(no warranty)。
6.4 license 口径存照
本条目对许可的表述采用双源一致口径:Zenodo 页面标注为 Open access,第三方 ECGBench 收录目录同标 CC BY 4.0。本研究未能逐字实抓 Zenodo 页面 license 字段本身(页面走 WebFetch 正文成功,但 license 行未单独确认),故在 §9 遗留疑点与附录双口径登记表中显式存照:正文与 frontmatter 采用 CC BY 4.0,来源为「Zenodo Open access + 第三方目录」双源,若日后逐字核验出现出入,按附录维护触发点更新。
6.5 配套代码仓库
GitHub 仓库 antonior92/automatic-ecg-diagnosis 提供:
- 训练脚本(复现论文 DNN 的残差卷积网络架构与训练流程);
- 评测脚本(在 CODE-test 上计算六类 F1/敏感度/特异度);
- 预训练模型权重(论文报告的 DNN 版本);
dnn.csv的生成逻辑——即论文预测值如何落到 0/1(阈值取 F1 最大化)。
这使 CODE-test 成为「数据+代码+论文」三件套高度自洽的评测基准:想复现论文结论,克隆仓库 + 下载数据即可跑通端到端流程,无需额外推导任何中间步骤。
6.6 三重资产的引用规范
由于数据、代码、论文来自三个不同载体,规范引用应分列三条,避免只引其一造成溯源断裂:
| 引用对象 | 规范引用式 |
|---|---|
| 数据集 | CODE-test (Zenodo record 3765780, v1.0.3),CC BY 4.0 |
| 论文 | Ribeiro et al., Nature Communications 11:1760 (2020), doi:10.1038/s41467-020-15432-4 |
| 代码/模型 | antonior92/automatic-ecg-diagnosis(GitHub) |
若研究仅使用了其中一部分(例如只用了信号未用标注),也应在方法中说明使用的具体文件,以区别于"用了整个数据集"。
6.7 与上游受限全库的访问制度对比
| 维度 | CODE-test(公开) | CODE 全库(受限) |
|---|---|---|
| 规模 | 827 例 | 约 2,322,513 条 / 1,676,384 患者 |
| 许可 | CC BY 4.0 | 数据使用协议(DUA) |
| 获取 | Zenodo 直链,即时 | 合作申请,需审批 |
| 用途 | 评测/研究/商用均可 | 按协议约定 |
| 去标识化 | 彻底(无患者 ID) | 需在协议约束下使用 |
这张表是本条目最重要的"边界提醒"之一:公开的永远是那个 827 例测试子集。任何"我已经能下整个 CODE 数据集"的说法都应回到此表核实(坑 8)。
§7 生态与影响
7.1 一个测试集的传染力
Ribeiro 2020 的 CODE-test 之所以被反复使用,是因为它同时满足了「外部可获取」「许可干净」「标注透明」「有官方代码」四个条件。在它发布之后的数年里,大量 12 导联 ECG 自动诊断论文把 827 例当作外部测试集:新模型先在自己的训练集上训练,再在 CODE-test 上报告与论文可比的一组成绩。这让 CODE-test 事实上成为该方向上最常被"顺手拿来测一下"的公开基准之一。
7.2 三种典型复用方式
| 复用方式 | 做法 | 常见产物 |
|---|---|---|
| 外部测试集 | 自建训练集训练,CODE-test 上报告六类指标 | 论文的 external validation 小节 |
| 对照复现 | 直接用官方 dnn.csv/gold_standard.csv 复算论文数字 | 基准复现论文、方法学评论 |
| 观察者一致性研究 | 用 cardiologist1/2 + 各档医师标注算 κ/F1 | 标注质量、人机对照方法学研究 |
第三种用法是 CODE-test 相对其他 ECG 基准最独特之处——大多数数据集无法支撑这类研究,因为它们根本没有发布多标注者答案。
7.2.1 一份典型的外部验证论文会怎么写 CODE-test
一个标准流程大致是:作者在自有数据或 CODE-15% 上训练 12 导联模型 → 在 CODE-test 的 827 例上推理 → 取 dnn.csv 同样口径的阈值规则生成 0/1 → 与 gold_standard.csv 比较,报告六类 F1/敏感度/特异度 → 结论里声明"在公开 CODE-test 上达到与论文可比/更优的水平"。
阅读这类论文时,读者应主动核查三件事,否则容易高估其结论:
- 训练集是否与 CODE-test 同源——若训练集包含 CODE-15% 或上游全库,则 CODE-test 对该模型并非严格外部;
- 是否只报了逐类 F1 的下限——若只写"F1 均 >0.80",与论文摘要同级,未提供增量信息;
- 是否报告了特异度——在 82% 阴性的分布下,只报敏感度或 F1 会掩盖误报率,论文强调特异性>0.99 正是补上这一面。
这三点构成阅读 CODE-test 相关文献的"体检表",也是本条目反复强调"数字引用纪律"的原因(§4.4)。
7.3 与库内 CODE 家族的三角关系
CODE-test 不是孤立条目,它属于一个由同一批研究者、同一数据来源 TNMG 衍生的数据集家族:
- CODE 全库:约 2,322,513 条 ECG / 1,676,384 患者 / 覆盖米纳斯吉拉斯州 811 个市县,受限未公开(DUA);
- CODE-15%(库内 rid 152):从全库抽出的 15% 公开子集,是主要的公开训练资源;
- CODE-test(本条目):827 例公开测试子集,来自论文的 hold-out 划分。
三者的正确理解是:CODE-15% 训练、CODE-test 测试,是官方设计的使用组合;而上游 CODE 全库是两者共同的母体,掌握在 TNMG/UFMG 手中。检索时务必区分这三个名字(坑 1)。
7.4 泛化研究中的角色
CODE-test 的另一个生态位是跨地域/跨中心泛化评估。因为它的数据全部来自巴西米纳斯吉拉斯的一个州级远程医疗网络,与其他地区的公开 ECG 集(中国的 CPSC、中美联合的 Chapman-Shaoxing、欧洲的 PTB-XL 等)在人群、采集设备、节律箱分布上天然不同。研究者常把「在自家数据上训练 → 在 CODE-test 上测」当作跨域泛化的硬指标,与反方向的「CODE-15% 训练 → 别处测试」配对使用。
7.5 基准饱和与选择偏差的警示
CODE-test 越流行,越要警惕两件事:
- 测试集饱和(benchmark saturation):一个公开测试集被反复调参、当外测报告后,后来者报告的分数提升可能部分来自对该测试集的隐性过拟合(超参搜索时反复看测试集成绩),不完全是方法进步;
- 选择偏差:827 例只是上游约 232 万条中极小的一块,且大概率不是随机抽样(论文未公开抽样协议),其异常流行率(17.7%)也明显不同于一般人群。在 CODE-test 上表现好,未必等于在临床全谱分布上表现好(见 §9 存照)。
§8 方法学启示:标注透明度的四个可迁移经验
8.1 测试集应该发布「谁的答案」,而不只是「标准答案」
CODE-test 最大的方法学贡献不是 827 例信号,而是把多档标注者答案一并公开。这使第三方可以直接审计:金标准是怎么来的?医师之间分歧多大?不同水平的人在同一题上差距多少?对所有做医学 AI 基准的人来说,这是可复制且成本可控的设计——多标一套只要多请几位标注者,却把数据集从「一列标签」升级成「一套标注社会学样本」。
8.2 一致性 + 仲裁协议要写清"知情状态"
CODE-test 的金标准协议是「双医师一致直接采纳、分歧交第三专家」。协议的关键细节是那位专家知晓前两人标注后裁决(知情仲裁,非盲裁)。这个细节不写出来,读者会误以为金标准是无偏真值;写出来,读者才知道该把它当"裁决共识"读(坑 6)。协议的非盲部分必须显式披露——这是标注透明度的核心。
8.3 零填充是工程细节,但要写进文档
把 7 s/10 s 两种时长对称零填充到 4096 样本是纯工程决策,成本极低,却对使用者的下游分析影响巨大(节律统计、R 波检测都会被零段干扰)。CODE-test 把它写进了官方说明,这就是值得学的做法:工程约定要显式化,不能让使用者从数据里反向猜测。
8.4 「各标一半」的降维要如实告知
住院医/学生标注采用"两人各标一半"的省力方案,但公开版把它们合并成一份 csv,导致无法从文件区分同组内的两个个体。这是相对论文内部信息的一次信息损失,使用者在做逐人一致性分析时会受限(坑 4)。教训是:省力设计可以,但要在文档里说清"你拿到的粒度是什么"。
8.5 为什么这份测试集值得被当作"模板"复用
把上述四条经验合起来看,CODE-test 在方法学上示范了一个低成本高透明的标注生产模板:主标注由少量专家完成(保证质量),对照标注由分层人员分摊(控制成本),全部原始答案公开(保证可审)。这套模板的可迁移性极强——任何需要"人机对照"或"多水平标注分层"的医学 AI 基准都可以照搬,只需在论文与数据说明里如实披露:谁标的、标了多少、分歧怎么裁决、有没有非盲环节。
相比"堆规模"的路线(把数据做到 10 万级但只发一列标签),CODE-test 的路线是"小而透明"。两条路线各有适用场景,但在做基准评估、尤其做可靠性研究时,透明度的边际价值往往高于规模——这正是本条目在 FAQ 与避坑清单里反复强调的核心立场。
§9 与库内条目的关系
9.1 家族图谱
| 关系层级 | 库内条目(rid) | 关系性质 |
|---|---|---|
| 同论文/同源最紧 | CODE-15%(code-15, rid 152) | 同一 Ribeiro 2020 论文、同一 TNMG 来源的公开 15% 训练子集 |
| 上游母体 | 无公开条目(CODE 全库受限) | 232 万条全库需 DUA,仅本文档陈述 |
| 跨地域 12 导联对照 | CPSC(cpsc, rid 132)、Chapman-Shaoxing(chapman-shaoxing, rid 143) | 中/中美联合 12 导联集,跨人群泛化对比 |
| 12 导联大规模基准 | PTB-XL+(ptb-xl-plus, rid 1025)、MIMIC-IV-ECG(mimic-iv-ecg, rid 172) | 另一 12 导联主力基准;ICU 级大规模 |
| 挑战赛系 | cinc-2019(rid 656)/ cinc-2020(rid 692)/ cinc-2021(rid 644) | PhysioNet/CinC 12 导联挑战赛 |
| 节律经典(AF 血缘) | mit-bih-afdb(rid 115)、ltafdb(rid 668)、apnea-ecg(rid 658) | 房颤/长时程节律研究血脉 |
| 心电图像模态 | ecg-image-database(rid 959) | 信号 vs 图像模态对照 |
| 更广心电生态 | ludb(793)、brugada-huca(1015)、leipzig-heart-center-ecg(910)、norwegian-athlete-ecg(1012)、icentia11k(652)、pulsedb(182)、cradi(1032)、mass(272)、physionet-cinc-2016(382) | 心电数据集圈层 |
9.2 检索路径建议
- 想复现论文:直接定位 Zenodo record 3765780 + GitHub antonior92/automatic-ecg-diagnosis;
- 想对照跨地域泛化:CODE-test(本条目) × CPSC(132) × Chapman-Shaoxing(143) 三角;
- 想要更大规模公开 12 导联:CODE-15%(152)、PTB-XL+(1025)、MIMIC-IV-ECG(172);
- 想做多级标注/一致性研究:CODE-test 是本库内少有的"多标注者并置"样本,可与其他具备多标注的条目联动。
9.3 建议互链点(供主会话发布后建链)
正文内建议内链 5 处:CODE-15%(152)、CPSC(132)、PTB-XL+(1025)、MIMIC-IV-ECG(172)、ECG-Image-Database(959)。frontmatter 的 relatedLink 只放纯 URL(按 R012 纪律),消歧与血缘说明一律留在本小节。
9.4 与 MIMIC-IV-ECG 的互补定位
库内 MIMIC-IV-ECG(rid 172)与本条目形成一组鲜明互补:前者是ICU 级、十万量级、美国单中心的 12 导联信号集,规模大但人群集中于重症监护场景;后者是州级远程医疗、八百量级、巴西的小规模高透明测试集。研究者在做"大规模预训练 + 小规模透明评估"的组合时,常把大集当训练、CODE-test 当评估锚点。这种"大训练集 + 小权威测试集"的搭配,正是 CODE 家族(CODE-15% 训练 / CODE-test 测试)思路跨数据集复用的体现。
9.5 与挑战赛系(CPSC / CinC)的差异
库内 cpsc(132)、cinc-2019(656)/cinc-2020(692)/cinc-2021(644) 属"竞赛驱动"的数据集:有榜单、有提交系统、类别体系按赛题定制。CODE-test 则是"论文驱动的留出测试集":无榜、无提交、类别固定为论文的六类。两者的评估文化不同——竞赛集鼓励刷榜,CODE-test 鼓励复现与透明审计。理解这一差异,有助于判断某篇论文报告的"CODE-test 成绩"应被当作方法进步证据还是外部验证证据。
§10 避坑清单:八个已踩过或极易踩的坑
坑 1:三个 CODE 名字混写。
CODE(约 232 万条全库,受限)、CODE-15%(公开 15% 训练子集,rid 152)、CODE-test(827 例公开测试集,本条目)常被论文与目录混为一谈。检索到"CODE dataset"时要判断指的是哪一个;本条目专指 827 例测试集。
坑 2:把 fill 出来的 4096 样本当"原始 10.24 秒"。
原始信号是 7 s(2800 样本)或 10 s(4000 样本)混布,两侧对称零填充到 4096。写"10.24 秒"时要说明是填充后时长,做时长敏感的节律分析须先定位有效段(§2.2)。
坑 3:把摘要级结论当逐类表格。
"F1>0.80、特异性>0.99、胜过心内科住院医"是摘要级保证(可引);逐类 F1/敏感度/特异度的精确表格属论文 Table 口径,本条目未逐格实抓(Nature 反爬),引用具体逐类数字时务必回到论文原表核对(§9 遗留疑点)。
坑 4:以为能区分住院医个体。
公开的 cardiology_residents.csv / emergency_residents.csv / medical_students.csv 各自是"两人各标一半"的合并结果,无法从文件区分同组两个个体。做逐人一致性分析会受限,这是相对论文内部信息的降维。
坑 5:忽略量纲 1e-4 V。
信号浮点是 1e-4 V 刻度,直接当伏特用会差 10000 倍。要得到以伏特为单位的幅值需 ×1000(即 1e-4 V × 1000 = 1 V 量级正确)。绘图/阈值设定前先确认量纲。
坑 6:把金标准当"无误差真值"。
金标准由双医师一致项 + 第三专家知情仲裁项构成。分歧条目依赖单一资深意见且非盲裁,做观察者一致性研究时应把 gold_standard 读作"裁决共识"而非无偏真值(§3.1、§8.2)。
坑 7:把 CODE-test 当流行病学样本。
827 例是评测材料,不是人群抽样。异常流行率 17.7%(至少一项)远高于常规筛查人群,且抽样协议未公开(非随机),不能外推为米纳斯吉拉斯人群的疾病负担。
坑 8:混淆"CODE-test 可下载"与"CODE 全库可下载"。
CODE-test 是 CC BY 4.0 无门槛直链;上游约 232 万条全库从未公开,需 DUA 合作申请。公开发布的是测试子集,不是全库(§5.4、§6)。
§11 总结
11.1 三句话总结
- CODE-test 是 Ribeiro et al. 2020 Nature Communications 论文的公开留出测试集:827 例 12 导联 ECG(400 Hz,填充至 4096 样本),六类异常多标签。
- 它的灵魂不在 827 这个数,而在六套并置的标注——双心内科医师、金标准、DNN、心内住院医、急诊住院医、医学生,使"AI vs 医师"的对照完整可复现,同时是罕见的观察者一致性研究素材。
- CC BY 4.0、Zenodo 直链、配套官方代码——获取门槛近乎为零,但要记住它只是上游约 232 万条受限全库的一个极小公开切片。
11.2 适合谁
- 研发 12 导联 ECG 自动诊断模型、需要干净外部测试集的团队;
- 研究医师-机器对照、观察者一致性、标注质量的方法学者;
- 做跨地域泛化评估(与 CPSC、Chapman-Shaoxing 配对)的研究者;
- 教学场景:作为"标注透明度教科书"讲解多档标注协议。
11.3 不适合谁
- 想找大规模训练语料的人(应看 CODE-15% / PTB-XL+ / MIMIC-IV-ECG);
- 想推人群疾病负担的流行病学者(抽样非随机,流行率不代表人群);
- 想训练全谱心电诊断(含心梗、ST 形态学细分)的人(六类不覆盖)。
11.4 30 秒决策卡
| 你的问题 | 答案 |
|---|---|
| 有门槛吗? | 无。CC BY 4.0,Zenodo 直链 |
| 多大? | 827 例,data.zip 218.2 MB |
| 什么格式? | HDF5 (827,4096,12) + attributes.csv + 6 套标注 csv |
| 什么任务? | 六类二元异常多标签(1dAVb/RBBB/LBBB/SB/AF/ST) |
| 标注可信吗? | 双医师独立 + 第三专家仲裁;另有四档对照 |
| 论文结论? | DNN F1>0.80、特异性>0.99,胜过心内科住院医 |
| 能商用吗? | 能(CC BY,署名即可) |
| 同源训练集在哪? | CODE-15%(rid 152) |
FAQ(高频问答 30 问)
A. 基础认知
Q1:CODE-test 是挑战赛吗?
不是。它没有排行榜、没有提交系统,是 Ribeiro et al. 2020 Nature Communications 论文的公开留出测试集(hold-out test set)。
Q2:名字里的 CODE 指什么?
Clinical Outcomes in Digital Electrocardiology——巴西米纳斯吉拉斯联邦大学(UFMG)主导的长期研究计划,依托州远程医疗网络 TNMG 的常规业务采集心电图。
Q3:827 这个数字是什么口径?
827 例 12 导联 ECG,且来自 827 个不同患者(一例一心,Zenodo 原文 different patients)。它是论文内部数据划分之外独立保留的测试子集。
Q4:谁发布的?
Zenodo creators 字段署名为 Universidade Federal de Minas Gerais(巴西)+ Uppsala University(瑞典)+ University of Glasgow(苏格兰)三家联合。
Q5:它和 CODE 全库什么关系?
CODE-test 是上游 CODE 全库(约 2,322,513 条 / 1,676,384 患者 / 覆盖 811 个市县)中极小的一块公开测试子集;全库本体从未公开,需数据使用协议(DUA)。
B. 数据与获取
Q6:在哪里下载?
Zenodo record 3765780,直链下载 data.zip(218.2 MB)。
Q7:要注册或申请吗?
不需要。Open access,CC BY 4.0,无 gated、无登录。
Q8:包里有几个文件?
信号 HDF5(ecg_tracings.hdf5)+ 患者属性表(attributes.csv)+ 6 套六类标注 csv(cardiologist1/2、gold_standard、dnn、cardiology_residents、emergency_residents、medical_students)。
Q9:md5 是多少?
data.zip 的 md5 为 cef8fe457abf4b8f66a34dc1269b4ced。
Q10:有代码吗?
有。GitHub 仓库 antonior92/automatic-ecg-diagnosis 提供训练/评测脚本与预训练模型。
Q11:许可能商用吗?
能。CC BY 4.0 允许商业与非商业使用、再分发、改编、训练模型,唯一义务是署名。
C. 信号与标注
Q12:采样率多少?
400 Hz。
Q13:多少导联?顺序是什么?
12 导联,顺序 DI, DII, DIII, AVR, AVL, AVF, V1–V6。
Q14:为什么是 4096 个点?
原始采集时长 7 s(2800 样本)或 10 s(4000 样本)混布,发布时两侧对称零填充到 4096 样本(约 10.24 s)。
Q15:信号的量纲?
浮点数,刻度 1e-4 V。要得到伏特需 ×1000。
Q16:标注哪六类?
1dAVb(一度房室阻滞)、RBBB(右束支阻滞)、LBBB(左束支阻滞)、SB(窦性心动过缓)、AF(房颤)、ST(窦性心动过速)。
Q17:是多标签吗?
是。每类一个 0/1 列,一个样本可同时阳性多项——金标准口径下 12 例为多项阳性。
Q18:异常比例多少?
金标准口径 146/827(约 17.7%)至少一项异常(第三方 ECGBench croissant 目录口径,本条目已存照)。
D. 标注协议与对照
Q19:金标准怎么定的?
两名心内科医师独立标注全部 827 例;一致的条目直接采纳,分歧的条目交第三名资深专家仲裁(知情仲裁,非盲裁)。
Q20:除了金标准还有哪些标注?
五套对照:cardiologist 1、cardiologist 2 的各自独立标注、DNN 预测、心内科 4 年级住院医 ×2(各标一半)、急诊 3 年级住院医 ×2(各标一半)、医大 5 年级学生 ×2(各标一半)。
Q21:dnn.csv 的 0/1 怎么来的?
论文 DNN 的预测经阈值化,阈值取 F1 最大化。
Q22:能区分住院医/学生个体吗?
不能。同组两人各标一半,公开 csv 是合并结果,只有一列(见坑 4)。
Q23:为什么说这个数据集特殊?
它把"标准答案"和"各水平考生的答卷"一起发布,是难得的观察者一致性 / 人机对照研究素材。
E. 论文结论
Q24:论文核心结论是什么?
DNN 六类异常 F1 全部 >0.80、特异性全部 >0.99,并在同题对照中胜过心内科住院医师。
Q25:逐类 F1 具体多少?
摘要级只给"每类 F1>0.80"的量级保证;逐类精确表属论文 Table 口径,本条目未逐格实抓(见坑 3 与遗留疑点)。
Q26:和哪些医师比?
三档:心内科 4 年级住院医(最近目标线)、急诊 3 年级住院医、医大 5 年级学生,形成一条能力阶梯。
F. 使用与工程
Q27:怎么读信号?
h5py 读 ecg_tracings.hdf5 的 tracings 数据集即可;官方 README 有三行示例。
Q28:行序对齐是什么意思?
第 i 行标注对应 HDF5 第 i 条信号;attributes.csv 与全部标注 csv 行序与信号第一维一一对应。
Q29:怎么用它做泛化评估?
与库内 cpsc(132)、chapman-shaoxing(143) 配对做跨地域对照;注意训练集构成,避免"用 CODE-15% 训练却报 CODE-test 纯外部成绩"的误读。
Q30:最大的使用陷阱是什么?
把 CODE-test 当流行病学样本,或把"CODE-test 可下载"误推为"CODE 全库可下载"(见坑 7、坑 8)。
G. 进阶与研究设计
Q31:我想做观察者一致性研究,从哪开始?
从 cardiologist1.csv 与 cardiologist2.csv 的逐类 Cohen’s κ 开始,再看 gold_standard 与各档医师的 F1 矩阵。注意住院医/学生是合并列,只能作为整档基线比较(附录 S 有分析骨架)。
Q32:为什么不能验证仲裁专家的判断对不对?
因为仲裁专家的独立意见没有作为单独一列发布——它的作用直接体现在 gold_standard.csv 的最终值里。你只能观测"分歧率",无法观测"仲裁正确性"(附录 R)。
Q33:可以用 CODE-test 训练模型吗?
技术上可以(CC BY 4.0 无限制),但它设计的角色是测试集;用它训练后再"测试",等于自测,通常不具说服力。要训练请用 CODE-15%(rid 152)或 PTB-XL+(rid 1025)。
Q34:CODE-test 会不会太简单了?
取决于任务。827 例中约 82% 为全阴性,若只报 accuracy 会虚高(把全体判阴性就有约 82%);必须报逐类 F1/敏感度/特异度才反映真实难度。
Q35:跨地域泛化该怎么设计?
推荐配对:CODE-15%(训练,巴西)× CODE-test(测试,巴西)作为同域基线;再用中国 CPSC(132)、中美 Chapman-Shaoxing(143)做跨域外测,观察性能跌落幅度。
Q36:论文的 DNN 架构是什么?
论文用的是残差卷积网络(residual CNN),具体层结构见论文与 GitHub 仓库的模型定义;本条目不逐一转述架构细节,以官方仓库为准。
Q37:有没有官方 leaderboard?
没有。CODE-test 是留出测试集,不设提交榜;任何"CODE-test 排名"都是第三方自行汇总,非官方。
Q38:Zenodo 挂了怎么办?
CC BY 4.0 允许镜像与再分发,社区常有副本;下载后务必用 md5 cef8fe457abf4b8f66a34dc1269b4ced 校验完整性。
Q39:为什么叫"留出(hold-out)"测试集?
因为它从论文内部的数据划分中独立保留,不参与训练与超参选择,专门用于最终评估——"hold-out"强调它与训练/验证数据在流程上的隔离。
Q40:827 例够统计显著吗?
对"六类 F1 是否 >0.80"这样的粗粒度结论够用;但若要做子组分析(按性别、年龄段切分)或少数类(阳性数少)的精细比较,827 例的效能有限,报告时应给出置信区间或至少标注阳性数。
Q41:它和 SaMi-Trop 有关系吗?
两者都由 TNMG/UFMG 系研究者产出、同属该团队的数据资产,但任务不同(SaMi-Trop 面向恰加斯病心肌病随访)。本条目只讨论 ECG 方向的 CODE 家族。
事实清单(硬事实 34 条)
- CODE-test 全称 “CODE-test: An annotated 12-lead ECG dataset”,是 CODE 研究的公开留出测试集。
- 发布平台:Zenodo record 3765780,版本 v1.0.3,published 2020-01-22,Open access。
- 数据集含 827 例 12 导联 ECG,来自 827 个不同患者(一例一心)。
- 信号张量形状为 (827, 4096, 12),存于 HDF5 文件 ecg_tracings.hdf5(数据集名 tracings)。
- 采样率 400 Hz。
- 原始采集时长 7 s(2800 样本)或 10 s(4000 样本) 混布。
- 发布时两侧对称零填充至 4096 样本(如 7 s 信号首尾各补 648 样本)。
- 导联顺序:DI, DII, DIII, AVR, AVL, AVF, V1–V6。
- 信号为浮点存储,量纲 1e-4 V(×1000 得伏特)。
- 数据包 data.zip 体积 218.2 MB,md5 cef8fe457abf4b8f66a34dc1269b4ced。
- 患者属性表 attributes.csv 含 sex(M/F)与 age 两列,827 行 + 表头。
- 六类异常任务为二元多标签:1dAVb、RBBB、LBBB、SB、AF、ST。
- 金标准协议:双心内科医师独立标注一致即采纳,分歧由第三名资深专家仲裁。
- 仲裁专家知晓前两人标注后裁决(知情仲裁,非完全盲评)。
- 金标准文件:gold_standard.csv(827 行 × 6 列,0/1)。
- 提供 cardiologist1.csv 与 cardiologist2.csv 两套独立专家标注。
- 提供 dnn.csv:论文 DNN 预测,阈值取 F1 最大化。
- 提供 cardiology_residents.csv:2 名心内科 4 年级住院医,各标一半。
- 提供 emergency_residents.csv:2 名急诊 3 年级住院医,各标一半。
- 提供 medical_students.csv:2 名医大 5 年级学生,各标一半。
- 金标准口径下 146/827(约 17.7%) 至少一项异常,12 例多项阳性(第三方目录口径)。
- 上游 CODE 全库约 2,322,513 条 ECG / 1,676,384 患者,覆盖米纳斯吉拉斯州 811 个市县(第三方精确口径)。
- 论文:Ribeiro AH 等,“Automatic diagnosis of the 12-lead ECG using a deep neural network”,Nature Communications 11:1760(2020),doi:10.1038/s41467-020-15432-4。
- 论文 arXiv 版:arXiv:1904.01949(v1 2019-04-02,v2 2020-04-14)。
- 论文摘要级结论:DNN 六类 F1 全部 >0.80、特异性全部 >0.99,胜过心内科住院医师。
- 许可:CC BY 4.0(Zenodo Open access + 第三方目录双源口径)。
- 获取方式:Zenodo 直链下载,无需注册、无 gated。
- 配套代码:GitHub antonior92/automatic-ecg-diagnosis(训练/评测脚本 + 预训练模型)。
- 发布方署名机构:UFMG(巴西)+ Uppsala University(瑞典)+ University of Glasgow(苏格兰)。
- 数据来源机构:Telehealth Network of Minas Gerais(TNMG) 的常规业务采集。
- 张量第一维行序与 attributes.csv 及全部标注 csv 行序一一对应,无患者 ID 暴露。
- 上游 CODE 全库从未公开,需数据使用协议(DUA)合作申请。
- 同源公开训练子集 CODE-15%(库内 code-15, rid 152)来自同一论文、同一 TNMG 来源。
- 论文通讯/资深作者方向为 Antonio Luiz P. Ribeiro(UFMG),一作 Antônio H. Ribeiro。
术语表(32 条)
| 术语 | 释义 |
|---|---|
| CODE | Clinical Outcomes in Digital Electrocardiology,UFMG 主导的心电研究计划 |
| CODE-test | 本条目:该研究的 827 例公开留出测试集 |
| CODE-15% | 从全库抽出的 15% 公开训练子集(库内 rid 152) |
| TNMG | Telehealth Network of Minas Gerais,数据来源的州级远程医疗网络 |
| UFMG | Universidade Federal de Minas Gerais,巴西米纳斯吉拉斯联邦大学 |
| Hold-out test set | 从训练/验证划分之外独立保留、不参与调参的测试子集 |
| 12 导联 ECG | 标准 12 导联心电图,导联序 DI-DII-DIII-aVR-aVL-aVF-V1–V6 |
| 1dAVb | First-degree AV block,一度房室阻滞 |
| RBBB | Right bundle branch block,右束支阻滞 |
| LBBB | Left bundle branch block,左束支阻滞 |
| SB | Sinus bradycardia,窦性心动过缓 |
| AF | Atrial fibrillation,心房颤动(房颤) |
| ST | Sinus tachycardia,窦性心动过速(勿与 ST 段混淆) |
| 多标签 | 一条样本可同时阳性多个类别;本数据集六类各自 0/1 |
| Sigmoid 输出 | 网络末端对每类独立做 logistic 输出,支持多标签 |
| 零填充 | 把短信号两端补零到统一长度;此处 7 s/10 s → 4096 样本 |
| 量纲 1e-4 V | 幅值以 1e-4 伏特为单位存储,×1000 得伏特 |
| 金标准 | gold_standard.csv,双医师一致 + 第三专家仲裁的裁决共识 |
| 知情仲裁 | 仲裁专家在知晓前两名标注者结论后裁决(非盲裁) |
| 心内科住院医 | Cardiology resident,本数据集为 4 年级(PGY-4 级) |
| 急诊住院医 | Emergency resident,本数据集为 3 年级 |
| 医学生 | Medical student,本数据集为 5 年级 |
| DNN | Deep Neural Network,此处指论文的残差卷积网络 |
| 观察者一致性 | Inter-rater agreement,不同标注者对同一题的一致程度 |
| Cohen’s κ | 校正机遇一致后的两名标注者一致性系数 |
| F1 | 精确率与召回率的调和平均,类别不平衡下常用 |
| 特异性 | Specificity,真阴性率,论文报告 >0.99 |
| 敏感度 | Sensitivity,真阳性率 |
| AUC | ROC 曲线下面积 |
| 阈值 F1 最大化 | 在预测概率上选使 F1 最大的截断点以生成 0/1 |
| DUA | Data Use Agreement,数据使用协议(上游全库的门槛) |
| 测试集饱和 | 公开测试集被反复调参后,后续提升部分源于过拟合的风险 |
附录
附录 A:条目信息速查卡
| 项 | 值 |
|---|---|
| 条目名 | CODE-test |
| url_name | code-test |
| 全称 | CODE-test: An annotated 12-lead ECG dataset |
| 类型 | 数据集(公开留出测试集) |
| 规模 | 827 例 / 827 患者,HDF5 (827, 4096, 12) |
| 采样率 | 400 Hz |
| 类别 | 六类二元多标签:1dAVb/RBBB/LBBB/SB/AF/ST |
| 论文 | Nature Communications 11:1760(2020) |
| 发布方 | UFMG + Uppsala University + University of Glasgow |
| 来源机构 | Telehealth Network of Minas Gerais(TNMG) |
| 许可 | CC BY 4.0 |
| 获取 | Zenodo record 3765780 直链,data.zip 218.2 MB |
| 抓取时点 | 2026-10-13 |
附录 B:DAIMS 评估全表
DAIMS(Data Asset Improvement Maturity Score / 数据资产成熟度评估)五维:
| 维度 | 评分 | 依据 |
|---|---|---|
| Discoverability(可发现性) | 高 | Zenodo 稳定 record + DOI 论文 + GitHub 官方仓库;第三方目录普遍收录 |
| Accessibility(可访问性) | 高 | CC BY 4.0 无门槛直链,无注册/无 gated;副本可自由镜像 |
| Interoperability(互操作性) | 高 | HDF5 + CSV 通用格式;行序对齐约定清晰;配套代码可直接读取 |
| Metadata(元数据) | 中高 | 论文与 Zenodo 描述充分;但抽样协议未公开、逐类指标需回查论文表 |
| Sustainability(可持续性) | 高 | Zenodo 长期寄存 + 期刊论文 + 活跃 GitHub 仓库三重保障 |
综合:高(在公开 ECG 基准里属最易获取、最自解释的一档)。
附录 C:逐项证据链自证
| 硬数字 | 来源层级 | 互证情况 |
|---|---|---|
| 827 例 / 827 患者 | Zenodo 描述 + 第三方目录 | 一致 |
| (827,4096,12) / 400 Hz | Zenodo 描述 + README | 一致 |
| 7 s/10 s → 4096 零填充 | Zenodo 描述 + README | 一致 |
| 218.2 MB / md5 | Zenodo 挂载文件 | 单源(Zenodo) |
| 146/827(17.7%) | 第三方 ECGBench croissant | 单源,已存照 |
| 2,322,513 / 1,676,384 / 811 | 第三方精确口径 | 论文摘要仅"more than 2 million" |
| F1>0.80 / 特异性>0.99 | arXiv + 摘要 + 第三方目录 | 三源一致 |
| CC BY 4.0 | Zenodo Open access + 第三方目录 | 双源,license 行未逐字实抓 |
附录 D:数据获取决策树
你要做什么?
├─ 只想下载 CODE-test(827 例)
│ └─ Zenodo record 3765780 → data.zip(CC BY 4.0,免注册)✅
├─ 想复现论文 DNN
│ └─ GitHub antonior92/automatic-ecg-diagnosis + 上述数据 ✅
├─ 想找更大规模公开 12 导联【训练】
│ ├─ CODE-15%(rid 152)
│ ├─ PTB-XL+(rid 1025)
│ └─ MIMIC-IV-ECG(rid 172)
└─ 想拿 CODE 全库(约 232 万条)
└─ 未公开 → 需 DUA 合作申请(TNMG/UFMG)⚠️(公开版只是 827 测试子集)
附录 E:许可条款细读
| 项 | CC BY 4.0 含义(落到 CODE-test) |
|---|---|
| 署名(BY) | 必引 Ribeiro et al. 2020 + Zenodo record 3765780,注明是否修改 |
| 商用 | 允许 |
| 再分发/镜像 | 允许 |
| 改编/再标注 | 允许,须署名并注明修改 |
| 训练模型 | 允许(含商用模型) |
| 专利/商标 | 不授予 |
| 担保 | 无(no warranty) |
附录 F:六套标注文件对照表
| 文件 | 标注者 | 覆盖 | 行 × 列 | 用途 |
|---|---|---|---|---|
| cardiologist1.csv | 心内科医师 1 | 全集 | 827 × 6 | 一致性/金标准重算 |
| cardiologist2.csv | 心内科医师 2 | 全集 | 827 × 6 | 一致性/金标准重算 |
| gold_standard.csv | 双医师一致 + 第三专家仲裁 | 全集 | 827 × 6 | 基准答案 |
| dnn.csv | 论文 DNN(阈值 F1 最大化) | 全集 | 827 × 6 | 模型-医师对照 |
| cardiology_residents.csv | 心内 4 年级住院医 ×2 | 各半合并 | 827 × 6 | 专科中期基线 |
| emergency_residents.csv | 急诊 3 年级住院医 ×2 | 各半合并 | 827 × 6 | 非专科基线 |
| medical_students.csv | 医大 5 年级学生 ×2 | 各半合并 | 827 × 6 | 地板基线 |
列顺序统一为 1dAVb, RBBB, LBBB, SB, AF, ST;值与信号第一维行序对齐。
附录 G:信号读取与量纲骨架(代码)
import h5py
import numpy as np
# 1) 读信号:(827, 4096, 12)
with h5py.File("ecg_tracings.hdf5", "r") as f:
tracings = f["tracings"][:] # float,刻度 1e-4 V
# 2) 转伏特
tracings_v = tracings * 1000.0 # 1e-4 V -> V
# 3) 有效段提示:7 s 信号的首尾各约 648 样本为零填充
# 若做时长敏感分析,先按非零区间裁剪
# 4) 标注按行序 join
import pandas as pd
gold = pd.read_csv("annotations/gold_standard.csv") # 827 行 × 6 列
assert len(gold) == tracings.shape[0]
附录 H:坑点档案(与 §10 对照)
| 坑 | 一句话 | 见 |
|---|---|---|
| 坑 1 | 三个 CODE 名字混写 | §7.3 |
| 坑 2 | 把填充 4096 当"原始 10.24 s" | §2.2 |
| 坑 3 | 把摘要级结论当逐类表格引用 | §4.4 |
| 坑 4 | 以为能区分住院医个体 | §8.4 |
| 坑 5 | 忽略量纲 1e-4 V | §2.2 |
| 坑 6 | 把金标准当无误差真值 | §3.1 |
| 坑 7 | 把 CODE-test 当流行病学样本 | §7.5 |
| 坑 8 | 混淆"CODE-test 可下载"与"全库可下载" | §5.4 |
附录 I:双口径登记表
| 争议项 | 口径 A | 口径 B | 本条目取舍 |
|---|---|---|---|
| CODE 全库规模 | 论文摘要"more than 2 million" | 第三方精确 2,322,513 条 / 1,676,384 患者 / 811 市县 | 采用第三方精确数并注明出处层级 |
| 异常流行率 | 146/827(17.7%) | 仅第三方 ECGBench croissant 单源 | 采用并标注"第三方口径,未在 Zenodo/论文直接核验" |
| 信号时长 | 原始 7 s/10 s 混布 | 第三方目录"10.24 s" | 采用"原始 7s/10s,填充至 4096≈10.24 s" |
| license | Zenodo Open access | 第三方目录 CC BY 4.0 | 采用 CC BY 4.0,标注双源、license 行未逐字实抓 |
附录 J:引文规范
@article{ribeiro2020automatic,
title = {Automatic diagnosis of the 12-lead ECG using a deep neural network},
author = {Ribeiro, Ant{\^o}nio H. and Ribeiro, Manoel Horta and Paix{\~a}o, Gabriela M. M.
and Oliveira, Derick M. and Gomes, Paulo R. and Canazart, J{\'e}ssica A.
and Ferreira, Milton P. S. and Andersson, Carl R. and Macfarlane, Peter W.
and Meira Jr., Wagner and Sch{\"o}n, Thomas B. and Ribeiro, Antonio Luiz P.},
journal = {Nature Communications},
volume = {11},
number = {1760},
year = {2020},
doi = {10.1038/s41467-020-15432-4}
}
@misc{codetest2020zenodo,
title = {CODE-test: An annotated 12-lead ECG dataset},
author = {{Universidade Federal de Minas Gerais} and {Uppsala University}
and {University of Glasgow}},
year = {2020},
doi = {10.5281/zenodo.3765780},
note = {Zenodo record 3765780, v1.0.3, CC BY 4.0}
}
附录 K:本条目生产档案
- 生产通道:rsi_dispatch 派发,slug = code-test,写作代理 agent-c-codetest
- 事实研究:基于 FACTS.md 九节(Zenodo 描述 / arXiv 论文 / 第三方 ECGBench 目录三源互证)
- 成稿方式:五块直写拼接(part1 复用前次草稿 + part2-5 新写),私有区隔离
- 坑点:§10 八则("坑 N:"编号制)
- description:成稿时即 ≤170 字符
- 互链计划:正文内链 5 处(code-15/152、cpsc/132、ptb-xl-plus/1025、mimic-iv-ecg/172、ecg-image-database/959)
附录 L:FAIR / AI-Ready 检查单
| 检查项 | 状态 | 说明 |
|---|---|---|
| F1 全局唯一标识 | ✅ | DOI(论文)+ Zenodo record |
| F2 富元数据 | ✅ | Zenodo 描述 + README + 论文 |
| A1 可访问协议 | ✅ | CC BY 4.0 HTTP 直链 |
| A2 元数据可访问 | ✅ | 数据与元数据同时开放 |
| I1 互操作格式 | ✅ | HDF5 + CSV + 官方代码 |
| I2 词汇表引用 | ✅ | 六类异常为临床标准术语 |
| R1 来源溯源 | ✅ | 上游 CODE / TNMG 明示 |
| R3 可复现流程 | ✅ | GitHub 训练/评测脚本 + 预训练模型 |
| AI-Ready 综合 | 高 | 直链覆盖评估,训练资源在 CODE-15% |
附录 M:缩写速查
| 缩写 | 全称 |
|---|---|
| CODE | Clinical Outcomes in Digital Electrocardiology |
| TNMG | Telehealth Network of Minas Gerais |
| UFMG | Universidade Federal de Minas Gerais |
| ECG | Electrocardiogram,心电图 |
| DNN | Deep Neural Network |
| 1dAVb | First-degree Atrioventricular Block |
| RBBB / LBBB | Right / Left Bundle Branch Block |
| SB | Sinus Bradycardia |
| AF | Atrial Fibrillation |
| ST | Sinus Tachycardia |
| DUA | Data Use Agreement |
| DAIMS | Discoverability/Accessibility/Interoperability/Metadata/Sustainability |
附录 N:基于本数据集的研究检查清单(10 项)
- 许可核对:CC BY 4.0,署名即可;商用无碍,但注明是否修改。
- 量纲确认:读入后 ×1000 变伏特,别按 1e-4 V 直用(坑 5)。
- 有效段处理:7 s/10 s 混布,做节律/时长分析先裁零段(坑 2)。
- 行序对齐:所有 csv 与信号第一维行号 join,勿重排。
- 金标准定位:读作"裁决共识",非无误差真值(坑 6)。
- 个体分辨:住院医/学生为合并列,无法逐人区分(坑 4)。
- 训练集声明:若用 CODE-15% 训练,报 CODE-test 成绩须标注非纯外部泛化。
- 逐类数字:引用精确 F1 回论文原表核对,别只引摘要(坑 3)。
- 流行率纪律:17.7% 为测试集口径,不作人群推断(坑 7)。
- 访问边界:CODE-test 公开 ≠ CODE 全库公开(坑 8)。
附录 O:检索路径示范(关键词与查询式)
| 目标 | 推荐查询式 | 预期命中 |
|---|---|---|
| 数据集本体 | Zenodo CODE-test / “An annotated 12-lead ECG dataset” | Zenodo record 3765780 |
| 论文 | “Automatic diagnosis of the 12-lead ECG using a deep neural network” | Nat Commun 11:1760 |
| 代码 | antonior92 automatic-ecg-diagnosis | GitHub 官方仓库 |
| 同源训练集 | “CODE-15%” OR “CODE 15 percent” ECG | CODE-15%(rid 152) |
| 跨地域对照 | CPSC 2018 / Chapman-Shaoxing ECG | cpsc(132) / chapman-shaoxing(143) |
| 反例(勿混) | 泛 “CODE dataset” | 可能命中全库/15%/测试三者之一(坑 1) |
尾注
本条目为 AI-Ready Wikipedia 数据集条目,生产于 2026-10-13,抓取与核验时点见附录 A。事实陈述以 Zenodo record 3765780 描述、Ribeiro et al. 2020 Nature Communications 11:1760 论文(DOI 10.1038/s41467-020-15432-4)与第三方收录目录为源;CODE 全库规模(精确/摘要双口径)、异常流行率(单源)、license 字段(未逐字实抓)、逐类指标(论文 Table 口径未二次抓取)等原始文档口径差异已在坑点与附录 I 双口径登记表存照。条目与库内 CODE-15%(rid 152)、CPSC(rid 132)、Chapman-Shaoxing(rid 143)、PTB-XL+(rid 1025)、MIMIC-IV-ECG(rid 172)、ECG-Image-Database(rid 959)等条目互链,构成 12 导联心电与生理信号家族的完整检索面。后续维护触发点:逐类指标补齐、license 逐字核验、Zenodo 版本更新。
深度附录
以下附录面向希望上手复现、做二次分析或做数据审计的读者,提供比正文更细的操作级信息。所有硬数字与正文一致,来源见附录 C 与附录 I。
附录 P:CODE 家族全谱系对照
| 资产 | 规模 | 公开性 | 库内 rid | 主要用途 |
|---|---|---|---|---|
| CODE 全库 | ~2,322,513 条 / 1,676,384 患者 / 811 市县 | 受限(DUA) | 无 | 母体,训练/研究原始池 |
| CODE-15% | 全库的 15% 抽样 | 公开 | 152 | 公开训练集 |
| CODE-test(本条目) | 827 例 / 827 患者 | 公开 CC BY 4.0 | 本条目 | 公开测试集(hold-out) |
三者关系一句话:母体受限、15% 公开训练、827 公开测试。任何"用了 CODE"的论文都要查清用的是哪一层——这直接决定其测试成绩是"内部测试"还是"外部泛化"。
附录 Q:六类异常标签的临床速览
| 标签 | 中文 | 判读要点(教学口径) | 与"ST"混淆风险 |
|---|---|---|---|
| 1dAVb | 一度房室阻滞 | PR 间期 > 200 ms,无脱落 | 低 |
| RBBB | 右束支阻滞 | V1 呈 rSR’,QRS 增宽 | 低 |
| LBBB | 左束支阻滞 | V6 宽 R 波、V1 深 S 波,QRS 增宽 | 低 |
| SB | 窦性心动过缓 | 窦性心律、心率 < 60 bpm | 低 |
| AF | 心房颤动 | 无 P 波、RR 绝对不齐 | 中(需与房扑区分) |
| ST | 窦性心动过速 | 窦性心律、心率 > 100 bpm | 高(勿与 ST 段改变混) |
"ST"这个缩写是本数据集最容易误读的一个坑:此处 ST = Sinus Tachycardia(窦性心动过速),不是心电图术语里更常见的 ST segment(ST 段)。论文与文件列的 ST 一律指窦性心动过速。凡涉及"ST 段抬高/压低"的讨论都不属于本数据集的六类标签范围(见坑 1 的邻接话题)。
附录 R:金标准重算伪代码
输入:cardiologist1.csv (827×6), cardiologist2.csv (827×6)
输出:重算的 gold(应与 gold_standard.csv 在分歧条目上差一个第三专家仲裁)
for i in range(827):
for c in range(6):
a = cardiologist1[i][c]
b = cardiologist2[i][c]
if a == b:
recheck[i][c] = a # 一致 -> 直接采纳
else:
recheck[i][c] = ARBITRATOR # 分歧 -> 第三专家(数据集未公开其独立列)
# 结论:gold_standard.csv = 一致项 + 仲裁项;
# 分歧条目无法从公开文件反推仲裁专家的"独立意见",
# 因为仲裁知识只在 gold 里以最终值形式存在(知情仲裁的信息损失)。
这段伪代码说明了一个重要事实:你只能验证一致条目,无法独立验证仲裁条目。做元分析时应把"分歧率"当作可观测统计,把"仲裁正确性"当作不可观测量。
附录 S:观察者一致性分析骨架
import pandas as pd
from sklearn.metrics import cohen_kappa_score, f1_score
c1 = pd.read_csv("annotations/cardiologist1.csv")
c2 = pd.read_csv("annotations/cardiologist2.csv")
gold = pd.read_csv("annotations/gold_standard.csv")
cols = ["1dAVb", "RBBB", "LBBB", "SB", "AF", "ST"]
for c in cols:
k = cohen_kappa_score(c1[c], c2[c])
f = f1_score(c1[c], c2[c])
n_dis = int((c1[c] != c2[c]).sum())
print(f"{c}: kappa={k:.3f} F1(c1 vs c2)={f:.3f} 分歧条数={n_dis}")
# 三方对照:DNN vs 心内住院医 vs 金标准
dnn = pd.read_csv("annotations/dnn.csv")
res = pd.read_csv("annotations/cardiology_residents.csv")
for c in cols:
print(c, "DNN-F1", f1_score(gold[c], dnn[c]),
"Res-F1", f1_score(gold[c], res[c]))
建议在报告中同时给出:逐类 κ、逐类分歧条数、逐类 F1(各档 vs 金标准)。只报一项会掩盖"高一致但低分"或"低一致高分"的结构。
附录 T:分档医师 vs 模型对照记录表(自填模板)
| 类别 | 金标准阳性数 | DNN F1 | 心内住院医 F1 | 急诊住院医 F1 | 医学生 F1 | 备注 |
|---|---|---|---|---|---|---|
| 1dAVb | — | — | — | — | — | 待实跑 |
| RBBB | — | — | — | — | — | 待实跑 |
| LBBB | — | — | — | — | — | 待实跑 |
| SB | — | — | — | — | — | 待实跑 |
| AF | — | — | — | — | — | 待实跑 |
| ST | — | — | — | — | — | 待实跑 |
说明:本表为复现工作台模板,正文不预填数字(论文逐类表未二次实抓,见坑 3);使用者以官方 dnn.csv 与各档 csv 实算后填入,并与论文 Table 对照。
附录 U:CODE-test 在 ECG 基准星座中的位置
| 基准 | 规模量级 | 地域 | 模态 | 与本条目关系 |
|---|---|---|---|---|
| CODE-test | 10^2(827) | 巴西 | 信号 | 本条目 |
| CODE-15% | 10^5 | 巴西 | 信号 | 同源训练 |
| CPSC 2018 | 10^4 | 中国 | 信号 | 跨地域对照 |
| Chapman-Shaoxing | 10^4 | 中美 | 信号 | 跨地域对照 |
| PTB-XL+ | 10^4 | 德国 | 信号 | 主力基准对照 |
| MIMIC-IV-ECG | 10^5 | 美国 ICU | 信号 | 大规模对照 |
| ECG-Image-Database | 10^3 | 多 | 图像 | 模态对照 |
一句话定位:CODE-test 是"小而重"的评测锚点,靠标注透明度而非规模取胜。
附录 V:常见复现错误与修法
| 症状 | 根因 | 修法 |
|---|---|---|
| 波形大面积贴零 | 未裁零填充段 | 定位非零区间,或直接全段喂模型(训练同构) |
| 幅值小到异常 | 把 1e-4 V 当 V | ×1000 |
| 标签对不上 | 重排了行序 | 保持原始行序 join |
| 住院医只有一半 | 二人各标一半已合并 | 视为整体基线,勿逐人拆 |
| 报出"纯外部"成绩被质疑 | 训练含 CODE-15%/全库 | 声明训练集构成 |
| 引用逐类数字被指不一致 | 引了摘要或二手表 | 回论文原表核对(坑 3) |
| 想拿 232 万条全库 | 混淆公开层级 | 走 DUA,或改用 CODE-15% |
附录 W:条目维护触发点
| 触发点 | 动作 |
|---|---|
| Zenodo 版本更新(> v1.0.3) | 复核规模/填充/license 是否变化,更新 §2 与附录 A |
| 论文逐类 Table 被实抓 | 补齐附录 T 与 §4.4 的逐类数字 |
| license 字段逐字核验出现出入 | 更新 frontmatter 与附录 I |
| 上游 CODE 全库公开 | 重写 §5.4 与附录 P 的访问制度 |
| 重要下游复用论文出现 | 增补 §7 生态段落 |
附录 X:与其他"多标注并置"数据集的方法学对照
| 数据集类型 | 是否发布多标注者答案 | 是否发布模型预测列 | CODE-test 的差异 |
|---|---|---|---|
| 单标签公开集(多数) | 否 | 否 | CODE-test 两者皆发 |
| 双标注一致性集 | 部分(常只发一致性统计) | 否 | CODE-test 发原始两列 |
| 挑战赛集(CPSC/CinC 系) | 否(发金标准+榜) | 部分 | CODE-test 无榜、发四档人 |
| 本条目 CODE-test | 是(六套) | 是(dnn.csv) | 稀有:人机四档同题并置 |
这一对照说明:CODE-test 的独特性是结构性的,不是规模或分辨率带来的,而是"把标注过程的生产者全部暴晒"这一设计选择带来的。
附录 Y:患者人口学字段说明
| 字段 | 文件 | 取值域 | 说明 |
|---|---|---|---|
| sex | attributes.csv | M / F | 二元记录,公开版仅此粒度 |
| age | attributes.csv | 数值 | 记录时年龄 |
两点提醒:一、无合并症、用药、随访结局字段——本数据集不支撑预后研究;二、人口学仅两列,做公平性/亚组分析时的统计效能有限(827 例按性别年龄再切分后子组偏小)。
附录 Z:快速自检脚本(下载后第一件事)
# 1) 校验完整性
md5sum data.zip # 期望 cef8fe457abf4b8f66a34dc1269b4ced
unzip -l data.zip # 看文件清单是否含 ecg_tracings.hdf5 + attributes.csv + annotations/*
# 2) 校验行数与形状
python3 -c "
import h5py, pandas as pd
f=h5py.File('ecg_tracings.hdf5','r'); print('shape', f['tracings'].shape) # (827,4096,12)
print('attrs', pd.read_csv('attributes.csv').shape) # (827, 2)
print('gold', pd.read_csv('annotations/gold_standard.csv').shape) # (827, 6)
"
只要这三行输出分别是 (827, 4096, 12)、(827, 2)、(827, 6),你的数据就与本文档描述一致。
附录 AA:论文作者与机构索引
| 角色 | 姓名 | 机构 |
|---|---|---|
| 一作 | Antônio H. Ribeiro | UFMG 计算机系(现 Uppsala) |
| 合作者 | Manoel Horta Ribeiro | EPFL |
| 合作者 | Gabriela M. M. Paixão | UFMG |
| 合作者 | Peter W. Macfarlane | University of Glasgow |
| 合作者 | Thomas B. Schön | Uppsala University |
| 合作者 | Wagner Meira Jr. | UFMG |
| 通讯/资深 | Antonio Luiz P. Ribeiro | UFMG 医学院 |
数据来源机构:Telehealth Network of Minas Gerais(TNMG)。
附录 AB:检索卫生与常见误引
- 误引 1:把 CODE-test 的 827 例说成"CODE 数据集"的全部——实际全库约 232 万条;
- 误引 2:把 15% 子集写成本条目的别名——CODE-15% 是训练子集(rid 152),与 CODE-test 不同;
- 误引 3:把 ST 解读为 ST 段——本数据集 ST = 窦性心动过速;
- 误引 4:把 17.7% 流行率当人群患病率——它是测试集标注口径;
- 误引 5:把 10.24 s 当原始时长——原始为 7 s/10 s,4096 为填充后。
附录 AC:CODE-test 元数据摘要(可机读字段主张)
| 字段 | 建议值 | 说明 |
|---|---|---|
| identifier | 10.5281/zenodo.3765780 | Zenodo DOI |
| title | CODE-test: An annotated 12-lead ECG dataset | 官方名 |
| license | CC BY 4.0 | https://creativecommons.org/licenses/by/4.0/ |
| n_records | 827 | 例数 |
| n_patients | 827 | 患者数 |
| sampling_rate | 400 Hz | 采样率 |
| n_leads | 12 | 导联数 |
| signal_shape | [827, 4096, 12] | 张量形状 |
| labels | [1dAVb, RBBB, LBBB, SB, AF, ST] | 六类 |
| label_type | binary multilabel | 标注类型 |
| source_network | TNMG | 采集网络 |
| annotations_sets | 6 | 六套标注文件数 |
上表是把本条目正文的硬数字压成"元数据主张"的形式,便于第三方在做数据目录时直接复用;每一项的来源层级见附录 C 与附录 I。
附录 AD:与其他 12 导联基准的"可比性"注意事项
不同 ECG 数据集之间直接比较模型成绩是有风险的,原因至少有三:
- 类别定义不同:CODE-test 的六类异常与 PTB-XL 的 SCPhP 超类、CPSC 的九类并不一一对应,跨数据集迁移时必须先做标签映射;
- 采样率与时长不同:400 Hz/4096 样本与 500 Hz/10 s、100 Hz/30 s 等规格不能直接混用,需重采样与裁剪;
- 人群与采集环境不同:州级远程医疗门诊 vs 医院 ICU vs 公开竞赛队列,节律箱分布天然有差。
因此,CODE-test 上的成绩只应与其他同样在 CODE-test 上评估的方法比较;跨数据集比较必须显式声明映射规则与预处理管线,否则数字不可比。这一点也是本条目把 CODE-test 定位为"评测锚点"而非"排行榜"的原因。
尾注(补充)
本"深度附录"层级(附录 P–AD)与前述附录 A–O 同属本条目附录体系,共同构成从"一屏速览"到"上手复现"的完整信息梯度。所有操作级代码与模板均为可运行骨架或待填模板,不含外部依赖的隐藏步骤;凡标注"待实跑/待实抓"处,均为论文口径未二次核验项,遵守本条目一贯的存照纪律,不以猜测填充。使用者在复现时如发现与官方仓库或论文原表存在出入,以官方与论文原文为准,并按附录 W 触发点反馈更新。
上述内容与正文统计一致;正文-表格之间的任何数字差异都以正文叙述的出处层级为准,出处存照见附录 C 与附录 I。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- ecg-arrhythmia — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- ecg-fragment-high-risk-label — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- mit-bih-afdb — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- cinc-2021 — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- icentia11k — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- ltafdb — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- cinc-2020 — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- ludb — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- openecg — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
- code-ii — 共享标签:生理信号 / 心电信号 / 评测基准 / 心血管疾病
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

