信息速览
这份数据集的名称里有一个 MUSIC,这几乎必然会让第一次见到它的人想错方向。它不是音乐刺激实验,不是听觉诱发心律失常的干预研究,也不是某种用音乐辅助康复的疗法记录。MUSIC 是西班牙语 MUerte Subita en Insuficiencia Cardiaca 的首字母缩写,直译过来是心力衰竭中的猝死。它是 2003 年启动、横跨西班牙八家大学医院的一项前瞻性多中心纵向队列,目标只有一个:找出能在门诊慢性心衰患者里提前识别心脏性死亡风险的电生理与临床线索。
数据本身的形态很朴素:每位患者在入组时做一次静息心电、一次二十四小时动态心电、一次高分辨率短时心电,同时留下胸片、超声与血液检查结果;此后每 6 个月随访一次,一直跟到死亡、心脏移植或研究截止。最终 992 名患者进入队列,随访中位长度 44 个月,累计出 936 条动态心电与 687 条高分辨率心电,另有一份把临床资料汇总成每名患者一行的 CSV。它属于那种「波形在文件夹里、答案在表格里」的结构,建模的全部工作就是把两边接起来。
它能提供的东西很明确:一条带硬终点的纵向心电队列,事件定义写得很细,足以支撑猝死风险的电生理标志物研究。它给不到的东西同样明确:当代治疗背景、非西班牙人群、任何与音乐有关的变量。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 正式名 | MUSIC (Sudden Cardiac Death in Chronic Heart Failure) |
| 名称含义 | MUerte Subita en Insuficiencia Cardiaca,即「心力衰竭中的猝死」,与音乐无关 |
| 发布平台 | PhysioNet,当前版本 v1.0.1(2025-01-24) |
| 原始研究期限 | 2003 年 4 月至 2008 年 11 月 |
| 入组规模 | 992 例慢性心衰门诊患者,NYHA II–III 级 |
| 中心数 | 西班牙八家大学医院心衰专科门诊 |
| 随访 | 中位 44 个月,每 6 个月一次访视 |
| 动态心电 | 936 条,24 小时,两导联约占百分之四、三导联约占百分之九十六 |
| 高分辨率心电 | 687 条,三导联短时记录(v1.0.1 更正,此前误标十二导联) |
| 临床数据 | subject-info.csv 一文件,配编码表与列定义表 |
| 波形格式 | WFDB,.dat 波形加 .hea 头文件 |
| 主要结局 | 心脏性死亡,细分为猝死与泵衰竭死亡 |
| 体积 | 未压缩 90.2 GB,ZIP 包 43.5 GB |
| 许可 | ODbL 1.0,可商用,要求署名与相同方式共享 |
| DOI | 版本 10.13026/z3m7-rf58,最新版 10.13026/fa8p-he52 |
§1 它要解决的具体麻烦
1.1 心衰患者的猝死风险,用一张心电图说不完
慢性心衰是一个高死亡率的诊断,但死亡方式并不单一。相当一部分人死于泵功能的进行性衰竭,在住院中因难治性终末期心衰离世;另一部分人则是在看起来稳定的状态下突然死亡,症状出现后一小时内发生,符合心脏性猝死的定义。这两条路径的病理生理机制不同,能用的干预手段也不同:前者靠优化药物与器械支持,后者理论上靠植入式除颤器。
问题在于,左室射血分数这个最常用的分层指标对两条路径的区分能力有限。射血分数低的患者确实是高危人群,但植入除颤器后真正获益的比例并不高,大量器械从未放电。临床需要一个能把「谁更可能猝死」从「谁更可能死于泵衰」里分出来的工具,而心电图上恰好有一些反映心室复极异质性与自主神经张力的指标,理论上与致死性心律失常的易感性相关。
MUSIC 队列就是为这件事建立的。它的设计不是「收集心电数据」,而是「在真实门诊人群中把心电指标与死因对应起来」,因此它的价值不在波形本身,而在波形与硬终点之间那条可追溯的链。
1.2 三条常见的错误期待
第一条,也是最常见的一条:以为这是音乐数据集。名称里的 MUSIC 是全大写,放在 PhysioNet 的条目名里,搜索引擎与推荐系统都会把它归到音频或音乐治疗一类。打开文件才会发现,里面一条音频都没有,全部是心电波形与临床表格。这个误判的代价不只是浪费五分钟,还包括误用:如果有人按音乐干预的设想去找「音乐暴露组与对照组的差异」,会一无所获,因为整份数据里没有分组,只有随访结局。
第二条:以为这是一个现代的、可以直接上生产的心衰队列。入组窗口只有二十一个月,落在 2003 年到 2004 年之间。那个时期β受体阻滞剂与醛固酮拮抗剂的使用率与剂量都还在爬坡,心脏再同步治疗与植入式除颤器的适应证也与今天不同。用这份数据训练出来的风险阈值,直接搬到 2020 年之后的门诊人群,会系统性高估绝对风险,因为当代治疗已经降低了事件率。
第三条:以为九百多名患者意味着九百多条波形、可以随便切分。事实上波形记录数与患者数并不相等,动态心电比患者少,高分辨率心电更少。更麻烦的是官方没有提供一张显式的「患者编号对应哪些记录」的映射表,映射要靠记录名去匹配,而缺失的原因官方并未说明。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 带硬终点的纵向心电队列 | 992 人、随访中位 44 个月、死因分类明确 | 够,这是它的核心资产 |
| 二十四小时动态心电 | 936 条,两导联或三导联 | 够做心率变异性、心率湍流 |
| 高分辨率短时心电 | 687 条三导联 | 够做晚电位与高频成分分析 |
| 心室复极相关指标 | 波形可直接导出 QT、T 波形态 | 够,但需自行标注波界 |
| 临床协变量 | 超声、实验室、用药、NYHA 分级 | 够,但粒度取决于原始表格 |
| 心衰再住院等中间终点 | 未提供 | 不够,只有死亡与移植 |
| 当代治疗背景下的风险 | 2003–2008 年数据 | 不够,需外部校准 |
| 任何音乐或听觉刺激变量 | 无 | 完全不够,这是名称误导 |
| 多中心、多国家的泛化验证 | 单一国家八中心 | 部分够,跨国需重建队列 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 在找音乐与心脏数据集,搜到了 MUSIC | 立刻澄清方向,节省一次整包下载 | 转向 body-sway-music-vr 或 multimodal-nback-music |
| 要做一个猝死风险的心电特征实验 | 提供现成的波形与结局,可直接算特征再回归 | 先读 subject-info 的死亡编码,确定阴性样本定义 |
| 已经有一个心衰预测模型,想做外部验证 | 提供独立人群的硬终点 | 核对事件定义是否一致,尤其猝死的时间窗 |
| 要研究心率变异性与死亡的关系 | 二十四小时动态心电足以支撑 | 注意两导联与三导联混合,导联名需按头文件读 |
| 要做可穿戴设备的算法预研 | 真实动态记录,含运动伪影 | 接受没有逐搏标注,节律分类只在表格层面 |
| 想找多中心跨国队列 | 八家西班牙医院,单国 | 考虑与其它心衰队列联合分析 |
| 只需要一份教学用的心电样本 | 九十 GB 太重 | 改取更小的公开心电库 |
1.5 一句话判断
这是一份名称会骗人、内容不骗人的老队列:它把「心电波形」与「四年后的死因」接在了一起,代价是年代、地域与治疗背景都被牢牢钉在 2003 到 2008 年。
1.6 不适合谁:四条边界
第一条边界,不适合把 MUSIC 当成音乐或听觉刺激数据的人。整份数据与音乐刺激没有任何关系,任何基于名称的联想都会落空。如果你要的是音乐干预下的生理反应,库内另外两份条目才是对的入口,§6 会给出具体分工。
第二条边界,不适合需要当代心衰人群风险基线的人。队列的入组年份与随访终点都停在十五年以上,事件率反映的是当年的治疗水平。要做当代的风险分层,这份数据只能当历史参照或特征工程的预训练材料,不能当校准基准。
第三条边界,不适合需要中间终点或复发事件的人。结局只有心脏性死亡、非心脏性死亡、心脏移植与失访四类,没有心衰再住院、没有室速室颤的器械记录、没有症状恶化时间。要研究「谁先住院」,这份数据回答不了。
第四条边界,不适合需要逐搏或逐事件标注的算法团队。波形是连续的二十四小时记录,节律信息以分类变量的形式存在于临床表格里,没有给出每一次房颤发作或每一个室早的时刻。要做事件检测的监督学习,标签得自己造。
§2 数据构成与规格
2.1 两层结构:波形文件夹加三份表格
数据集的组织方式非常传统,几乎是上个年代生理信号库的标准做法:波形按记录各存一套 WFDB 文件,临床信息汇总成一张宽表,两者之间靠记录名关联。
| 层级 | 内容 | 组织单位 |
|---|---|---|
| 波形层一 | Holter_ECG 目录下的二十四小时动态心电 | 一条记录一对文件 |
| 波形层二 | High-resolution_ECG 目录下的短时高分辨率心电 | 一条记录一对文件 |
| 索引层 | RECORDS 文本文件,列出全部波形记录名 | 一行一个记录名 |
| 临床层 | subject-info.csv | 一行一名患者 |
| 字典层 | subject-info_codes.csv 与 subject-info_definitions.csv | 一行一个变量或一个取值 |
| 校验层 | SHA256SUMS.txt 与 LICENSE.txt | 文件级 |
这种分层的好处是干净的:波形文件本身不含任何临床信息,去标识压力小;坏处是任何联合分析都要先做一次连接,而连接键并不是现成给出的。
2.2 字段与记录的完整字典
临床表的列在官方页面没有逐列列出,只给了三份辅助文件的用途。能确定的是它覆盖哪些变量族。下表按变量族整理,具体列名以 subject-info_definitions.csv 为准。
| 变量族 | 大致内容 | 类型 | 使用要点 |
|---|---|---|---|
| 人口学 | 年龄、性别 | 数值与分类 | 编码表里查性别取值 |
| 入组信息 | 入组日期、退出日期 | 日期 | 与随访时长互算 |
| 心功能 | NYHA 分级、左室射血分数 | 分类与数值 | 入组时点,非随访中变化 |
| 超声心动图 | 左室舒张末径等结构指标 | 数值 | 缺项按中心差异处理 |
| 实验室 | 血液常规与生化 | 数值 | 单位需按列定义核对 |
| 用药 | 药物类别与是否使用 | 分类 | 反映 2003 年处方习惯 |
| 节律 | Holter 记录时的节律分类 | 分类 | 与房颤相关分析的关键 |
| 结局 | 死亡原因编码、移植状态 | 分类 | 核心标签,先读编码表 |
| 失访 | 是否失访 | 分类 | 生存分析里要右删失处理 |
2.3 一条记录的完整解剖
一条动态心电记录在磁盘上就是一对文件。头文件是纯文本,逐行说明采样、导联与增益;数据文件是原始采样值,按头文件声明的格式二进制存放。
#-- P0834.hea 的结构示意,字段名来自 WFDB 标准
P0834 3 128 0 864000
P0834.dat 212 200 12 0 0 0 0 0 0
P0834.dat 212 200 12 0 0 0 0 0 0
P0834.dat 212 200 12 0 0 0 0 0 0
#-- 首行为记录名、导联数、采样率、样本数
#-- 其后每行一个导联,给出文件名、格式码、增益、基线、分辨率
首行的四个数字分别是记录名、信号通道数、每秒采样点数与总样本数;从第二行起每个通道一行,格式码 212 表示十二位打包存储,增益 200 表示每毫伏两百个数字单位。采样率官方页面没有明说,必须读头文件才能确定,不同记录之间也可能不一致,绝不能假设全库统一。
数据文件里的每个通道按增益与基线换算回毫伏:物理值等于(原始值减基线)除以增益。这一步看起来机械,但混用两导联与三导联记录时,通道数不同会直接让按列索引的代码错位。
2.4 记录名与患者编号的关系
记录名一律以 P 开头加四位数字,例如 P0834、P0910。高分辨率记录在同样的四位数字后加下划线与 H。
| 命名形态 | 所属目录 | 含义 |
|---|---|---|
| PXXXX.dat 与 .hea | Holter_ECG | 该患者的二十四小时动态心电 |
| PXXXX_H.dat 与 .hea | High-resolution_ECG | 该患者的高分辨率短时心电 |
理论上,同一患者的动态心电与高分辨率心电共享同一个四位数字,因此连接键是这四位数字本身。实践中需要注意三点:第一,四位数字不一定是连号,可能与入组顺序无关;第二,患者编号是否与 subject-info.csv 的某列逐字符一致,官方没有明说,需要打开表格核对一次;第三,缺失是常态而非例外。
2.5 两类波形在分析上的分工
| 维度 | 二十四小时动态心电 | 高分辨率短时心电 |
|---|---|---|
| 记录长度 | 约一天 | 数分钟量级 |
| 导联数 | 两导联或三导联 | 三导联 |
| 主要用途 | 心率变异性、心率湍流、节律负荷 | 晚电位、高频 QRS、复极微变 |
| 对伪影的敏感度 | 高,日常活动多 | 低,静息采集 |
| 分析前提 | 先做伪影与异位搏动剔除 | 需精确对齐与叠加平均 |
| 记录条数 | 936 | 687 |
同一名患者如果两类记录都有,就构成一个天然的对照:短时静息记录给出干净的复极指标,长时记录给出自主神经调节的全天轮廓。把两者拼在同一个人身上做特征,是这份数据最有价值也最少被榨干的部分。
2.6 结局变量的六个取值
随访结束时的状态在官方描述里被完整枚举,这六个取值构成本数据集全部监督信号的来源。
| 结局分类 | 事件性质 | 在建模中的处理 |
|---|---|---|
| 猝死 | 心脏性死亡,符合时间窗定义 | 主要阳性事件 |
| 泵衰竭死亡 | 住院中终末期心衰致死 | 竞争风险,常与猝死并列 |
| 心脏移植 | 竞争事件,终止随访 | 竞争风险,或按删失处理 |
| 非心脏死亡 | 非心脏原因 | 竞争风险,生存分析中常作删失 |
| 存活 | 随访结束时仍存活 | 右删失 |
| 失访 | 中途失去联系 | 右删失,但需敏感性分析 |
这里有一个容易被忽略的方法学要点:把泵衰竭死亡当作删失处理,会高估猝死的累积发生率,因为死于泵衰的人此后不可能再发生猝死。正确做法是竞争风险模型,或者至少做一次竞争风险与删失两种设定的对照。
2.7 各数据单元的体量对照
| 单元 | 计数 | 与患者数的关系 |
|---|---|---|
| 入组患者 | 992 | 基准 |
| 动态心电记录 | 936 | 少于患者数 |
| 高分辨率心电记录 | 687 | 约为患者数的七成 |
| 波形文件总数 | 约三千二百余 | 每条记录两文件 |
| 临床表行数 | 与患者数一致 | 一行一人 |
| 随访访视 | 每 6 个月一次 | 未单独存为长表 |
2.8 与同类心电队列的字段差异
| 资源 | 人群 | 波形类型 | 结局粒度 | 与本数据集的差别 |
|---|---|---|---|---|
| MUSIC | 慢性心衰门诊患者 | 动态与高分辨率心电 | 死因细分 | 专为猝死风险设计 |
| 通用十二导联心电库 | 混合就诊人群 | 十秒静息心电 | 多为诊断标签 | 无纵向随访 |
| 重症监护波形库 | 住院危重患者 | 床旁连续波形 | 住院死亡 | 非门诊慢病场景 |
| 普通动态心电库 | 心律失常就诊者 | 二十四小时动态心电 | 常无结局 | 有波形无终点 |
| 可穿戴房颤筛查队列 | 社区人群 | 单导联间歇记录 | 房颤检出 | 无猝死终点 |
差异的关键在最后一列:MUSIC 的分量不在波形质量,而在波形的下游挂着一条完整到死亡分类的随访链。
2.9 文件清单与体积
官方页面给出的整体体积是未压缩 90.2 GB,ZIP 包 43.5 GB,没有逐项列出各目录的大小。按记录数估算,动态心电是体积的主要来源:近千条二十四小时三导联记录,每条数百万个样本点,压缩率有限。高分辨率记录数量少、时长短,占比很小。三份 CSV 与 RECORDS 在兆字节以下,几乎可以忽略。
这个体积分布决定了使用策略:如果只做临床变量的生存分析,下载三份 CSV 与 RECORDS 即可,几十兆就能完成;如果要做波形特征,必须先确认需要的患者子集,再按记录名定向拉取,而不是整包同步。
2.10 采样、增益与物理量换算
波形分析里最容易出错的一步是单位换算,而这一步的正确答案只在头文件里。
| 头文件字段 | 含义 | 误用的后果 |
|---|---|---|
| 通道数 | 该条记录的导联数量 | 按固定列索引会错位 |
| 采样率 | 每秒样本数 | 直接写死会造成频谱轴错误 |
| 格式码 | 样本存储格式 | 用错解码器读出的全为噪声 |
| 增益 | 每毫伏对应的数字单位 | 幅度算错,所有阈值失效 |
| 基线 | 零电位的数字表示 | 去均值不彻底,滤波边界失真 |
标准的做法是用解析 WFDB 的库读取,让库去处理格式与增益,而不是自己按字节偏移解码。这一点在 §5 的代码里会具体体现。
2.11 临床表的宽表形态
subject-info.csv 是宽表:一行一名患者,列数很多,覆盖人口学、影像、实验室、用药与结局。宽表的好处是与波形连接方便,坏处是随访过程中的重复测量无法表达。
这意味着任何「指标随时间变化」的分析都做不了。比如想知道用药调整后心率变异性的趋势,数据里只有入组时点的一次测量与最终的死亡结局,中间没有重复测。研究者能做的只有把入组时的横断面特征与最终结局对应起来,这是横断面加纵向终点的混合设计。
2.12 缺失与不对齐的处理原则
三处不对齐需要在使用前就定好策略。第一处是患者数与波形数不等,缺记录的患者在波形分析中只能剔除,而在临床分析中仍可保留,两种分析的样本量因此不同,报告时要分别写清。第二处是临床变量的缺项,多中心汇总的表往往有中心特异性缺失,不能默认随机缺失。第三处是随访时长的个体差异,中位数只是概括,生存分析必须用每人的实际随访时间。
§3 身份与定位:一份被名字藏起来的电生理队列
3.1 名称的三重误解
MUSIC 这个词在医学文献里出现频率很高,指代各不相同:它可能是西班牙语的病程缩写,可能是某个体外膜肺氧合评分,也可能是某个心肌梗死注册研究。本数据集沿用的是西班牙语缩写,来源是 MUerte Subita en Insuficiencia Cardiaca,意为心力衰竭中的猝死。
误解有三层。第一层是语言学上的:看到 MUSIC 就想到音乐,这是最表层也最普遍的误判。第二层是学科归属上的:即便知道它与音乐无关,也容易把它归到心内科的临床注册研究一类,忽视它其实是一份以波形为主体的信号数据集。第三层是用途上的:把它当成通用的心衰队列,忽略它从设计之初就围绕「猝死可预测性」这一个问题展开。
3.2 它与临床注册研究的区别
临床注册研究通常收集的是事件与治疗,波形只是附件。MUSIC 的重心恰好相反:波形的组织非常完整,近千条二十四小时记录与近七百条高分辨率记录,全部按标准格式存放;而临床变量被压缩成一张表,粒度受限于当年能拿到的字段。
这种重心差异决定了两类使用者的不同体验。做临床流行病学的人会觉得临床变量太薄,没有再住院、没有器械治疗、没有随访中的用药调整;做信号处理的人会觉得波形很厚,一天一天的心电随手可用,而且下游挂着硬终点。判断这份数据适不适合你,本质上就是在判断你站在哪一边。
3.3 事件定义的具体性
猝死在文献里是个定义混乱的词,不同研究用的时间窗从一小时到二十四小时不等。MUSIC 的定义写得相当具体,分为三种情形:一是有目击的死亡,新症状出现后一小时内发生,且无明显的非心脏原因;二是无目击的死亡,二十四小时内发生,且此前没有进行性循环衰竭或其他死因;三是抢救过程中的死亡。
泵衰竭死亡的定义同样具体:住院期间因难治性进行性终末期心衰死亡。两类事件都有明确的排除条款,这让标注的可复现性比多数同类队列高,也让跨研究的比较有据可依。使用时如果要与别的队列合并,第一件事就是把两边的时间窗对齐,否则阳性事件的定义从一开始就不同。
3.4 入选与排除的边界
入选条件是症状性心衰,NYHA 分级为二级或三级,并按各中心的指南接受治疗。射血分数降低与保留的人群都被纳入,后者需要同时满足心衰症状与既往因心衰住院史,或有胸片、超声支持的客观心衰证据。
排除条件有三类:近期急性冠脉综合征、可手术修复的严重瓣膜病、以及其他预期缩短寿命的合并疾病。这三条排除把数据集的人群体征定得很清楚:这是一个相对稳定、可以门诊走动、没有急性事件的慢病人群,不是失代偿住院人群,也不是刚发生心梗后的高危人群。任何跨人群的迁移都要先问一句,目标人群是否也满足这三条排除。
3.5 队列的时间坐标
| 时间点 | 事件 |
|---|---|
| 2003 年 4 月 | 开始连续入组 |
| 2004 年 12 月 | 入组结束 |
| 2005 至 2008 年 | 每 6 个月一次访视 |
| 2008 年 11 月 | 随访截止 |
| 2024 年 9 月 | v1.0.0 发布 |
| 2024 年 | 配套论文发表于 Computing in Cardiology |
| 2025 年 1 月 | v1.0.1 发布,更正导联数与头文件 |
一条容易被忽略的推论:从随访截止到数据发布之间隔了十六年。这段空白不是数据没整理完,而更可能是团队在做方法学沉淀,把大量心电衍生的预后标志物先在自己手里做完,再对外释放。这对使用者意味着两件事:一是原始队列已有多篇方法学论文铺路,先读文献能省很多探索;二是数据发布时的主要结论已经公开,做复现比做原创更容易出成果,也更容易撞车。
3.6 版本身份的细节
v1.0.1 的发布说明做了三件事:修正 P0834 与 P0910 两条头文件里样本数与实际信号不符的问题;把高分辨率心电的导联数从十二更正为三;从临床表里删掉两列可由死亡原因与节律变量推算出来的冗余结局变量。
这三条都指向同一个方向:让数据自洽。前两条是纠错,第三条是去冗余。删掉两列对使用者是个提醒——如果你手上有一份基于 v1.0.0 的分析脚本,引用了那两列,升级后会直接报错。引用时要指明版本,别只写数据集名。
§4 质量标准与特色
4.1 组织方式体现的严谨度
三份辅助 CSV 的分工是这份数据在文档层面最见功力的地方。数据表、编码表、列定义表分开,意味着任何一列的含义都能被独立复核,而不必依赖某个人脑子里的记忆。
| 文件 | 作用 | 不看会怎样 |
|---|---|---|
| subject-info.csv | 存数据本体 | 无法建模 |
| subject-info_codes.csv | 存分类变量的取值含义 | 性别、节律等列变成无意义整数 |
| subject-info_definitions.csv | 存列标题释义 | 无法判断某列是基线值还是随访值 |
| RECORDS | 存记录名清单 | 无法确认哪些记录实际存在 |
这种三件套的做法值得单独提一句,因为很多公开数据集只给数据不给字典,或者把字典写在论文附录里,版本一更新就对不上。把字典做成随数据一同分发的文件,是应对版本漂移的有效手段。
4.2 去标识处理与合规
官方说明研究方案经机构审查委员会批准,所有患者签署知情同意,受保护健康信息按通用数据保护条例的指引做了去标识。日期被保留到日粒度但有偏移,姓名、住址、病历号不出现在数据里。
对使用者来说,这意味着两点:一是可以在没有额外伦理审批的情况下做方法学研究,多数机构对完全去标识的公开数据豁免审查,但发表前仍需按本单位规定确认;二是不要去尝试重识别,日期加八家医院的组合在某些情况下具有可识别性,这是数据伦理的底线。
4.3 案例:P0834 与那次导联数更正
§4.3 的案例要从一个具体的记录名说起。v1.0.1 的发布说明点名了两条记录:P0834 与 P0910,理由是头文件里报告的样本数与信号文件里实际存放的样本数不符。这类错误在任何长记录数据集里都可能出现,原因是采集软件在写入头文件时按计划时长计算,而实际因断电、存储写满或人为停止提前结束。
这个案例的价值不在于两条记录本身,而在于它揭示了一个通用风险:头文件里的样本数是「声明值」,数据文件里的是「实际值」,两者不总一致。任何按声明值预分配内存或按声明值切片的下游代码,遇到这两条就会读越界或截断。
处理方式很简单,在读取时以实际文件长度为准,用信号读取库返回的数组长度覆盖头文件声明值。§4.3 的案例在 §5.4 的代码里会再次出现,那里用一段检查把这类不一致显式暴露出来,而不是让它在训练中途以维度错误的形式爆掉。
导联数从十二更正为三,是另一个层面的问题:文档与数据的错配。十二导联的高分辨率心电在技术上罕见,三导联才是这个场景的常规配置。如果有人在 v1.0.0 时期按十二导联写了特征提取代码,升级后通道数对不上,程序会在索引第三通道之后的代码处崩溃。§4.3 的案例在 §7.3 的偏差清单里还会以「文档滞后」的形态出现一次。
4.4 随访链的完整度
在近千人的队列里,失访只有个位数,这是个很低的数字。绝大多数患者要么有明确结局,要么在截止时确认存活。这让生存分析的删失比例很低,估计的稳定性好于多数同类队列。
| 结局状态 | 是否构成删失 | 对分析的影响 |
|---|---|---|
| 明确死亡(任一类) | 否 | 完整事件 |
| 心脏移植 | 是 | 竞争事件,需专门处理 |
| 截止时存活 | 是 | 常规右删失 |
| 失访 | 是 | 比例极低,敏感性分析影响小 |
低失访率背后是每半年一次的门诊或电话访视制度,这种密集随访在资源有限的多中心研究里并不常见,是当年投入的直接证据。
4.5 波形质量的两面性
动态心电的质量问题来自日常活动:电极脱落、体位改变、肌肉电干扰、导联线拉扯。二十四小时记录里几乎必然存在大量伪影段,尤其是夜间翻身与白天步行时段。这类伪影在心率变异性的时域指标上影响巨大,一段持续的基线漂移会让 RMSSD 之类的短时指标完全失真。
高分辨率短时心电则相反,采集在静息条件下,时长只有数分钟,伪影少,适合做需要精确对齐的叠加平均分析。代价是它无法反映自主神经调节的全天节律。
这个两面性决定了预处理流程必须分开设计:长时记录重点在伪影检测与异位搏动剔除,短时记录重点在基线校正与心搏对齐。用同一套流水线处理两类记录,结果一定有一边是错的。
4.6 事件数对建模规模的硬约束
猝死事件约百例,泵衰竭死亡略多,两者相加两百例出头。在生存分析的语境下,这意味着可容纳的自由参数数量非常有限。按每个参数至少需要十个事件的粗规则,一个包含二十个协变量的模型已经接近上限。
这对想用深度学习的团队是个清醒剂:直接把二十四小时波形喂给一个大网络,再让它输出生存概率,参数量与事件数的比例会相差好几个数量级,训练出的模型在训练集上完美、在测试集上随机。可行的路径是用无监督预训练或手工特征降维先把表示压到低维,再做生存回归,而不是端到端。§7.3 会把这条列为偏差之一。
4.7 与临床常用的猝死风险分层的对照
| 分层手段 | 依据 | 本数据集能否支持 |
|---|---|---|
| 左室射血分数阈值 | 单一超声指标 | 支持,表中有射血分数 |
| NYHA 分级 | 症状分级 | 支持,入组时记录 |
| 心率变异性指标 | 二十四小时心电 | 支持,波形成熟 |
| 心率湍流 | 室早后的窦律反应 | 支持,需先检出室早 |
| T 波交替 | 复极微变 | 支持,高分辨率记录更合适 |
| 晚电位 | 高频 QRS 成分 | 支持,需叠加平均 |
| 联合评分 | 多指标加权 | 支持,但样本量限制权重个数 |
4.8 一个被低估的用法:特征基准
多数人下载这份数据是为了建模,但还有一类用法价值更高:把它当成心电衍生标志物的复现基准。文献里关于心率变异性、心率湍流、T 波交替与猝死关系的研究,很多都在这份数据或它的早期子集上做过。有了原始数据,就能把已发表的特征计算方式逐一复现,看结论在统一的预处理下是否成立。
这对信号处理方向的研究生尤其有用:不用自己去找临床终点,也不用处理伦理审批,直接在一个有答案的队列上练手,重点是把手上的特征算法做对,而不是把模型调准。
§5 怎么拿到与怎么接
5.1 许可与访问门槛
ODbL 1.0。访问没有门槛,不需要注册,不需要签署使用协议,也不需要提交研究计划。PhysioNet 的说明原话是任何人都可以访问这些文件,只要遵守指定许可的条款。
ODbL 的义务有三条要记住:署名,即以相同方式共享衍生数据库,并保持衍生数据库开放。这三条针对的是数据库本身,不是基于数据库训练的模型。如果你只是用这份数据训练一个风险预测模型并商业化模型服务,训练出的权重不受传染;如果你把数据与原数据合并成一个新的数据库再分发,新库必须同样以 ODbL 开放。
5.2 三种取数路径
| 路径 | 命令形态 | 适用场景 | 代价 |
|---|---|---|---|
| 网页 ZIP | 项目页直接下载 | 一次性整包 | 43.5 GB,需稳定带宽 |
| wget 镜像 | 递归抓取文件目录 | 断点续传 | 需手动管理目录 |
| 公开 S3 同步 | 免凭证对象同步 | 脚本化、可筛选 | 需 AWS CLI |
三条路径拿到的内容相同,区别只在可控性。要做子集分析的人应当走第三条,用前缀与排除规则把不需要的波形挡在外面。
5.3 只取临床表的最短路径
#-- 建目录并进入
mkdir -p music && cd music
base="https://physionet.org/files/music-sudden-cardiac-death/1.0.1"
#-- 三份表格加记录清单,几十兆以内
for f in subject-info.csv subject-info_codes.csv subject-info_definitions.csv RECORDS; do
curl -fL -O "$base/$f"
done
#-- 确认拿到的行数与列数
python3.11 -c "import pandas as pd; d=pd.read_csv('subject-info.csv'); print(d.shape)"
这一条几乎零成本,适合先摸底再决定要不要拉波形。读完之后你会知道临床协变量到底有多细,再判断波形值不值得那九十 GB。
5.4 按记录名定向拉取波形
import os
import urllib.request
base = "https://physionet.org/files/music-sudden-cardiac-death/1.0.1"
names = open("RECORDS", encoding="utf-8").read().split()
#-- 先只取前若干条做试点,确认格式与体积
pilot = [n for n in names if n.startswith("P")][:30]
for rec in pilot:
sub = "High-resolution_ECG" if rec.endswith("_H") else "Holter_ECG"
for ext in (".hea", ".dat"):
url = f"{base}/{sub}/{rec}{ext}"
dst = os.path.join(sub, rec + ext)
os.makedirs(sub, exist_ok=True)
if not os.path.exists(dst):
urllib.request.urlretrieve(url, dst)
#-- 检查每条记录声明样本数与实际文件长度是否一致
import wfdb
bad = []
for rec in pilot:
sub = "High-resolution_ECG" if rec.endswith("_H") else "Holter_ECG"
h = wfdb.rdheader(os.path.join(sub, rec))
size = os.path.getsize(os.path.join(sub, rec + ".dat"))
expect = sum(s.n_sig * s.sig_len * (2 if s.fmt[0] == "212" else 1)
for s in [h])
if size != expect:
bad.append((rec, size, expect))
print("长度不一致的记录:", bad)
这一段最后那处检查就是 §4.3 的案例在代码层面的对应物,记录名与样本数不符的问题在这里被固定成一个可重复的断言。它不解决问题,只是把问题提前暴露成一行输出,而不是让它在几小时训练之后以形状错误的形式爆掉。
5.5 用 S3 同步做子集筛选
#-- 只同步表格与记录清单,跳过两个波形目录
aws s3 sync --no-sign-request \
s3://physionet-open/music-sudden-cardiac-death/1.0.1/ ./music/ \
--exclude "Holter_ECG/*" --exclude "High-resolution_ECG/*"
#-- 之后再按需同步指定前缀
aws s3 sync --no-sign-request \
s3://physionet-open/music-sudden-cardiac-death/1.0.1/High-resolution_ECG/ \
./music/High-resolution_ECG/
高分辨率目录整体只有数百条短记录,同步成本可接受,适合先从这里入手做复极特征。动态心电目录要等确定了患者子集再拉。
5.6 从波形到一次生存分析
import pandas as pd
import numpy as np
info = pd.read_csv("subject-info.csv")
#-- 结局编码必须查 coding 表,别猜
codes = pd.read_csv("subject-info_codes.csv")
print(codes.head(20))
#-- 用实际随访时长与事件状态搭生存表
#-- 列名以 definitions 表为准,此处按常用命名示意
df = info.rename(columns={"scd": "event", "fu_months": "time"})
df = df.dropna(subset=["event", "time"])
df = df[df["time"] > 0]
#-- 竞争风险:泵衰竭死亡不是删失,单独成类
print(df["event"].value_counts().sort_index())
print("事件数合计", int((df["event"] > 0).sum()))
读到这里,三份表格的分工应该已经很清楚了:数据在第一个文件,含义在第二个,列名在第三个。跳过任何一个,后面都会出错。
§6 与库内条目的关系
6.1 关系图谱
库内三份名称带 music 的条目与本篇的关系,可以分成「假同名」与「真同类」两类。假同名是纯粹的字符串巧合,真同类才是内容上可互相参照的对象。
| 条目 | title 关键片段 | 主题 | 与本篇的关系 |
|---|---|---|---|
| body-sway-music-vr | 身体摇摆与虚拟现实音乐刺激数据集(28 人 · 12 条件) | 站立时听音乐、虚拟街景同步音量对姿势摇摆的影响 | 假同名:真音乐刺激,但与心脏结局无关 |
| multimodal-nback-music | 十一个人留下五份 — 音乐下的 n-back 工作记忆库 | 背景音乐下做工作记忆任务,多模态生理同步记录 | 假同名:真音乐,含心电但属可穿戴负荷监测 |
| music-motion-2015 | 库内未见同名文件 | 名称指向音乐与动作同步采集 | 假同名候选:需按其正式条目核对后再引用 |
| 本篇 MUSIC | MUSIC 不是音乐 | 慢性心衰患者的猝死风险队列 | 与音乐完全无关,仅缩写撞名 |
三份对照条目的共同点是都真的涉及音乐,而本篇一次音乐都没有。这不是一个「相近资源」的问题,而是一个「检索污染」的问题:任何按 music 关键词做的库内检索,都会把本篇与三份音乐条目混在一起返回,而它们的数据类型、人群、用途没有一项重合。
6.2 检索路径
| 你想找的东西 | 该去哪个条目 | 判断依据 |
|---|---|---|
| 音乐刺激下的姿势控制 | body-sway-music-vr | 有虚拟现实视觉条件与音量调制 |
| 音乐下的认知负荷与多模态生理 | multimodal-nback-music | 有任务范式与皮电、近红外 |
| 音乐与动作的同步采集 | music-motion-2015 | 名称即指向动作模态 |
| 心衰患者的猝死风险 | 本篇 | 有随访结局与动态心电 |
| 二十四小时心电波形 | 本篇 | 近千条标准格式动态记录 |
| 心电衍生预后标志物 | 本篇 | 有硬终点可做回归 |
6.3 三者的分工边界
三份音乐条目处理的都是「人在听音乐时发生什么」,本篇处理的是「人在四年里会不会猝死」。两者的实验范式、时间尺度、结局类型完全不同:前者的结局是当下几分钟内的生理反应,后者是数年后的死亡。混用会在特征层面出错,比如拿姿势摇摆的功率谱去解释心率变异性,两者虽然都是时间序列,但生理机制毫不相干。
真正可借鉴的只有方法层面:三份音乐条目都没有临床终点,而本篇没有刺激范式,两者在「如何把连续波形压成少量特征」这件事上有共同语言,可以互相参考预处理与降维的做法,但不要互相引为同类数据。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
在给这份数据打分之前,需要先纠正一个评分框架上的错位:多数数据集评估表默认「数据是当下的、可无限扩展的、质量是唯一变量」。MUSIC 不符合这个框架。它是一次已经结束的临床研究留下的静态快照,数据质量早已定型,不会因为时间推移而改善;它的价值不来自规模与格式的先进性,而来自「波形加硬终点」这个组合在公开数据里的稀缺性。
因此本节的分不是「好不好」的绝对判断,而是「在它被设计来解决的那一个问题上的可用程度」。用当代数据标准去要求一份二十年前的队列,会得到一个低分,这个低分没有信息量;把它误判成一份现代队列去用,才会造成实际损失。
7.1 五维评分(DAIMS 框架)
| 维度 | 含义 | 评分 | 依据 |
|---|---|---|---|
| 可获得性 | 拿到的门槛与成本 | 4 | 免注册、免申请、可商用,但整包九十 GB |
| 可理解性 | 文档能否支撑上手 | 4 | 三件套字典齐全,导联数曾误标 |
| 完整性 | 关键字段是否缺 | 3 | 波形与临床都在,但无显式中介终点 |
| 一致性 | 声明与实物是否吻合 | 3 | v1.0.1 已修两处头文件不一致 |
| 可复用性 | 跨场景迁移的余地 | 2 | 年代、地域、治疗背景三重限制 |
DAIMS 的五个维度里,前两项是这份数据的强项,后两项是它的短板。总分不是简单平均,因为短板在这里是结构性的,不是靠补文档能解决的。
7.2 为什么可复用性只有两分
跨场景迁移有三个硬限制。人群是西班牙八家医院的门诊心衰患者,NYHA 二级到三级,排除了急性冠脉综合征与可手术瓣膜病,任何目标人群如果有这些特征,本数据就不构成代表样本。
治疗背景是 2003 到 2004 年,那个时期的心衰治疗与今天相差一代。射血分数降低的心衰患者里,当年使用除颤器做一级预防的比例远低于今天,这意味着当年的猝死发生率中包含了一批今天会被器械拦截的事件。把模型迁移到今天,会高估风险。
随访截止在 2008 年,此后再无数据。任何需要近十年治疗演变的研究,这份数据只能当历史对照。
7.3 已知的、可枚举的偏差
| 偏差 | 具体表现 | 对结论的影响 |
|---|---|---|
| 年代偏差 | 入组与随访均在 2003 至 2008 年 | 绝对风险高估 |
| 地域偏差 | 单一国家八中心 | 跨人群校准失效 |
| 选择偏差 | 排除急性事件与严重瓣膜病 | 不代表住院失代偿人群 |
| 幸存者偏差 | 需能完成二十四小时佩戴 | 极虚弱者被排除 |
| 竞争风险偏倚 | 泵衰竭死亡常被当作删失 | 猝死累积发生率被高估 |
| 记录缺失 | 波形数少于患者数 | 波形分析样本量下降 |
| 文档滞后 | 导联数曾误标为十二 | 按旧文档写代码会崩 |
| 特征泄漏 | 按记录切分而非按患者切分 | 测试集指标虚高 |
最后一条值得单独展开,因为它是最容易被无意识犯下的错误。同一名患者如果既有动态心电又有高分辨率心电,两条记录会被当成两个独立样本;如果又有多次记录,同一人的心电形态高度相似,训练集与测试集一旦混入同一人,模型就相当于见过测试样本。正确做法是先按患者编号划分,再在每个人的记录内部做处理。
7.4 外部验证矩阵
| 验证目标 | 可行的参照 | 需要对齐的要素 | 风险 |
|---|---|---|---|
| 复发风险模型的外部验证 | 其它心衰队列 | 猝死时间窗定义 | 定义不一致导致阳性率偏移 |
| 心率变异性指标的泛化 | 普通动态心电库 | 记录时长与采样率 | 时长不同,频域指标不可比 |
| 高分辨率心电特征 | 同类短时记录库 | 导联位置与采样率 | 导联数不同,空间信息缺失 |
| 竞争风险模型的比较 | 同类带结局队列 | 竞争事件定义 | 移植是否算竞争事件有分歧 |
| 跨年代校准 | 新近心衰队列 | 治疗背景与器械使用 | 无器械变量,无法校正 |
7.5 它为何能持续:一条被反复复用的基准
这份数据在发布之前就已被其原始团队反复使用,多篇心电衍生标志物的方法学论文都在它上面做过验证;公开发布之后,它又成为外部团队做复现与对照的现成材料。持续被引用的原因不是数据新,而是它提供的组合在公开数据里很难找到替代:一整天的波形、一位患者的多种记录、一条跟到死亡的随访链,三者同时具备的公开队列极少。只要这个组合保持稀缺,它就会继续被用下去。
§8 生态位与历史
8.1 历史沿革
研究在 2003 年 4 月启动入组,2004 年 12 月结束,随后是长达四年的随访,2008 年 11 月截止。原始数据管理与存储由加泰罗尼亚理工大学承担,主要研究者为 Pere Caminal。八个参与中心分别是 Arrixaca、Gran Canaria Insular、Gregorio Marañón、Joan XXIII、Santiago de Compostela University、Sant Pau、Son Dureta 与 Valme,均为西班牙的大学医院。
此后十余年里,这批数据主要在其原始团队内部流转,用于心电衍生标志物的方法学研究。2024 年,配套论文在 Computing in Cardiology 发表,同年 9 月数据集以 v1.0.0 上线 PhysioNet;2025 年 1 月发布 v1.0.1,修正了导联数标注与两条头文件。
8.2 在 PhysioNet 生态中的位置
PhysioNet 上有大量心电数据库,按用途大致分三档:诊断类,给的是短时十二导联与诊断标签;监护类,给的是重症床旁连续波形;预后类,给的是长时记录加随访结局。MUSIC 属于第三档,且是其中少数把死因细分到猝死与泵衰竭死亡两个亚型的。
这一档的数据库数量最少,因为建库成本最高:要有人群、要有多年随访、要有可靠的事件判定委员会。这也是它即便年代久远仍有生态位的原因。
8.3 与同平台其它心衰相关资源的区别
| 资源类型 | 波形形态 | 结局形态 | 与本篇的差别 |
|---|---|---|---|
| 短时诊断心电库 | 十秒十二导联 | 诊断标签 | 无随访 |
| 重症波形库 | 床旁连续多参数 | 住院死亡 | 急性期,非门诊慢病 |
| 长时动态心电库 | 二十四小时 | 多无结局 | 有波形无终点 |
| 本篇 | 动态加高分辨率 | 死因细分加随访 | 唯一同时具备三者 |
8.4 配套文献的读法
官方要求同时引用数据集本身、原始论文与平台引用三条。原始论文是 Computing in Cardiology 2024 年卷 51 的那篇,讲的是数据库本身的设计与构成。真正讲标志物与结局关系的,是更早的一批方法学论文,主题覆盖 QT 与 RR 关系的斜率、平均交替子指数、T 波形态恢复、心率变异性、分段符号动力学、心率湍流的两个参数、周期性复极动力学,以及房颤相关的指标。
读的顺序建议反过来:先读数据库论文弄清数据结构,再挑一篇标志物论文复现它的特征定义,最后回到自己的问题。跳过前一步直接读标志物论文,很容易在「这个指标用的是哪段信号」上卡住。
§9 使用指引
9.1 三种角色的路径
| 角色 | 目标 | 建议路径 | 时间成本 |
|---|---|---|---|
| 信号处理研究者 | 验证一个心电特征 | 只拉高分辨率子集,先复现文献特征 | 数小时到一天 |
| 临床预测建模者 | 建猝死风险模型 | 先下临床表,定标签,再按子集拉波形 | 数天 |
| 数据工程学习者 | 练手 WFDB 读写 | 拉十条记录,跑通读取与绘图 | 一小时内 |
| 教学使用者 | 课堂演示 | 只取临床表做生存分析示例 | 一小时内 |
9.2 一条最短的可用流程
#-- 第一步:拉三份表格与记录清单
mkdir -p music/csv && cd music/csv
base="https://physionet.org/files/music-sudden-cardiac-death/1.0.1"
curl -fLO "$base/subject-info.csv"
curl -fLO "$base/subject-info_codes.csv"
curl -fLO "$base/subject-info_definitions.csv"
#-- 第二步:看列定义,确认结局与随访时长列名
head -30 subject-info_definitions.csv
#-- 第三步:拉二十条高分辨率记录做试点
grep '_H$' ../RECORDS 2>/dev/null | head -20 > h_subset.txt || \
curl -fsL "$base/RECORDS" | grep '_H$' | head -20 > h_subset.txt
mkdir -p ../High-resolution_ECG && cd ../High-resolution_ECG
while read -r r; do
for e in hea dat; do
[ -s "$r.$e" ] || curl -fsLO "$base/High-resolution_ECG/$r.$e"
done
done < ../csv/h_subset.txt
#-- 第四步:读一条确认格式
python3.11 -c "import wfdb; r=wfdb.rdrecord('$(head -1 ../csv/h_subset.txt)'); print(r.p_signal.shape, r.fs)"
四步走完,得到的是:一份能对上人的临床表、二十条可读的短时心电、以及确认过的采样率。之后的事就是特征工程与建模,不再受数据获取的拖累。
9.3 引用方式
数据集引用要写成带版本的完整格式,作者为 Martin-Yebra、Martínez 与 Laguna,2025 年,版本 1.0.1,平台为 PhysioNet,版本 DOI 是 10.13026/z3m7-rf58,最新版 DOI 是 10.13026/fa8p-he52,存储库标识为 RRID 加编号。同时要引原始论文,即 Computing in Cardiology 2024 年卷 51 的那篇,DOI 为 10.22489/CinC.2024.355。PhysioNet 平台的通用引用也建议一并给出。
只引数据集不引论文,会让读者找不到数据结构的说明;只引论文不引数据集,会让复现者不知道用的是哪个版本。三个一起给是官方要求,也是唯一的稳妥做法。
§10 AI 使用声明
| 项 | 说明 |
|---|---|
| 写作主体 | 由 AI 辅助撰写,编辑核对后发布 |
| 事实来源 | 以 PhysioNet 官方项目页、数据说明页、许可页与发布说明为准 |
| 未核实内容 | 采样率、字段列名、单文件体积均标注为需读头文件或字典确认 |
| 未执行的操作 | 未下载全量数据,未对波形做统计 |
| 数字口径 | 只保留规模、结构与边界三类数字 |
| 与音乐的核实 | 已在官方页面确认与音乐刺激无关,名称系西班牙语缩写 |
| 更新方式 | 官方发布新版本时按发布说明修订 |
| 责任声明 | 本文不构成临床决策依据 |
常见误读(避坑清单)
| 常见说法 | 实际 | 证据 |
|---|---|---|
| 这是音乐刺激下的心脏数据 | 与音乐完全无关 | 官方描述的首句即给出西班牙语全称与猝死研究目的 |
| 这是用音乐治疗心衰的研究 | 没有任何干预组,只有观察性随访 | 设计为前瞻性纵向观察队列,无随机分组 |
| 九百九十二人都有一条动态心电 | 动态心电记录数为九百三十六 | 官方数据说明与 RECORDS 清单 |
| 高分辨率心电是十二导联 | 三导联 | v1.0.1 发布说明明确更正 |
| 这是一份可以在当代直接使用的人群基线 | 治疗背景停在 2003 至 2004 年 | 入组窗口与随访截止年份 |
| 泵衰竭死亡可以当删失处理 | 是竞争事件 | 猝死与泵衰互斥,前者此后不可能发生 |
| 波形记录与患者一一对应 | 患者数多于记录数 | 两个计数不同 |
| 按记录切分训练测试集即可 | 必须按患者切分 | 同一患者多条记录形态高度相似 |
| 导联数全库统一 | 动态心电有两导联与三导联两种 | 官方说明给出百分之四与百分之九十六的比例 |
| 数据是最近采集的 | 采集于二十余年前 | 入组与随访年份明确 |
FAQ
Q1:MUSIC 到底是什么意思?
是西班牙语 MUerte Subita en Insuficiencia Cardiaca 的首字母缩写,译作心力衰竭中的猝死。它与英语的 music 只是拼写相同,没有任何语源关系。整份数据里没有音频,没有音乐刺激,也没有听觉实验。
Q2:为什么正文明明讲的是心衰,名称里却带 music?
因为缩写取自西班牙语研究名而非英文。PhysioNet 的条目名沿用了原始研究的简称,检索时按 music 找过来的人会误入。这也是本篇要花一整节讲名称的原因。
Q3:九百九十二人,为什么动态心电只有九百三十六条?
官方没有解释差额构成。可能是记录质量不佳未纳入、患者未佩戴或愿意退出。两个数字分别出现在研究描述与文件清单两处,差额的构成官方未说明。使用时按记录计数,不要假设一一对应。
Q4:能做深度学习吗?
能做,但端到端不合适。事件数在百例量级,直接喂原始波形给大网络会严重过拟合。可行的是先用无监督预训练或手工特征把表示压到低维,再做生存回归。
Q5:猝死与泵衰竭死亡要分开建模吗?
建议分开。两者的机制与可干预手段不同,把泵衰当作删失会高估猝死的累积发生率。最稳妥的做法是竞争风险模型,并同时报告两种设定下的结果。
Q6:临床变量够不够做倾向评分或混杂校正?
够做基本的校正。表里有年龄、性别、心功能分级、射血分数、实验室指标与用药,足以校正常见的混杂。但它没有随访中的用药调整,也没有器械植入记录,涉及治疗效应的分析做不干净。
Q7:高分辨率心电适合做什么?
适合需要精确对齐与叠加平均的分析,比如晚电位、高频 QRS 成分、复极微变。它采集在静息条件下,伪影少,但只有数分钟,无法反映自主神经的全天节律。
Q8:动态心电的伪影怎么处理?
分两步:先做心搏检出与异位搏动剔除,再做伪影段识别。夜间翻身与白天步行是伪影高发段,直接算时域指标会严重失真。不要用一套流程同时处理长时与短时记录。
Q9:许可允不允许商用?
允许。ODbL 1.0 允许商用与再分发,义务是署名、衍生数据库以相同许可开放。用它训练出来的模型权重不属于衍生数据库,不受传染。
Q10:能不能与其它队列合并分析?
可以,但必须先对齐猝死的时间窗定义。不同研究的一小时、二十四小时定义会让阳性事件从一开始就不同。合并前还要确认各队列的竞争事件处理方式是否一致。
Q11:采样率是多少?
官方项目页没有给出统一数值,必须读每条记录的头文件。不同记录之间可能不一致,任何假设全库统一采样率的代码都可能出错。§2.3 给出了头文件的字段含义。
Q12:这份数据现在还有人用吗?
有。它的组合在公开数据里稀缺,长期被用作心电衍生标志物的复现基准与外部验证集。只要这个组合仍稀缺,它就会继续被引用。
术语表
| 术语 | 全称或原文 | 含义 |
|---|---|---|
| MUSIC | MUerte Subita en Insuficiencia Cardiaca | 心力衰竭中的猝死,本研究缩写 |
| SCD | Sudden Cardiac Death | 心脏性猝死 |
| PFD | Pump Failure Death | 泵衰竭死亡 |
| CHF | Chronic Heart Failure | 慢性心力衰竭 |
| NYHA | New York Heart Association | 心功能分级,本研究纳入二至三级 |
| LVEF | Left Ventricular Ejection Fraction | 左室射血分数 |
| Holter | Holter monitor | 二十四小时动态心电记录 |
| WFDB | Waveform Database | PhysioNet 的波形存储格式 |
| .hea | header file | 记录采样、导联与增益的文本头文件 |
| .dat | data file | 二进制采样数据文件 |
| HRV | Heart Rate Variability | 心率变异性 |
| HRT | Heart Rate Turbulence | 心率湍流,室早后窦律反应 |
| TWA | T-wave Alternans | T 波交替 |
| TMR | T-wave Morphology Restitution | T 波形态恢复 |
| IAA | Index of Average Alternans | 平均交替子指数 |
| PRD | Periodic Repolarization Dynamics | 周期性复极动力学 |
| SSD | Segmented Symbolic Dynamics | 分段符号动力学 |
| ODbL | Open Database License | 开放数据库许可 1.0 版 |
| RRID | Research Resource Identifier | 研究资源标识符 |
| DOI | Digital Object Identifier | 数字对象标识符 |
| Competing risk | 竞争风险 | 一种事件发生后另一种不可能再发生 |
| Censoring | 删失 | 随访结束时未观察到事件 |
| Artifact | 伪影 | 非生理来源的信号畸变 |
| Late potential | 晚电位 | QRS 末端的高频低幅成分 |
| Cross-validation | 交叉验证 | 按患者分组的模型评估方式 |
| Data dictionary | 数据字典 | 列名与取值的定义文件 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 患者数 | 992 | 官方数据说明 | 官方页面 |
| 中心数 | 8 | 官方数据说明 | 官方页面 |
| 入组起始 | 2003 年 4 月 | 官方数据说明 | 官方页面 |
| 入组截止 | 2004 年 12 月 | 官方数据说明 | 官方页面 |
| 随访中位 | 44 个月 | 官方数据说明 | 官方页面 |
| 随访截止 | 2008 年 11 月 | 官方数据说明 | 官方页面 |
| 动态心电记录 | 936 | 官方数据说明与 RECORDS | 官方页面 |
| 高分辨率记录 | 687 | 官方数据说明与 RECORDS | 官方页面 |
| 猝死事件 | 94 | 官方数据说明 | 官方页面 |
| 泵衰竭死亡 | 111 | 官方数据说明 | 官方页面 |
| 心脏移植 | 20 | 官方数据说明 | 官方页面 |
| 非心脏死亡 | 61 | 官方数据说明 | 官方页面 |
| 存活 | 695 | 官方数据说明 | 官方页面 |
| 失访 | 11 | 官方数据说明 | 官方页面 |
| 未压缩体积 | 90.2 GB | 官方项目页 | 官方页面 |
| ZIP 体积 | 43.5 GB | 官方项目页 | 官方页面 |
| 采样率 | 未统一给出 | 需读头文件 | 未核实 |
附录 B:数字的来源分层
| 层级 | 数字 | 备注 |
|---|---|---|
| 官方项目页与数据说明页 | 患者数、中心数、随访中位、记录数、结局分布、体积、许可、DOI | 可直接引用 |
| 官方发布说明 | 导联数更正、两条头文件修正、删除两列 | 可引用,注意版本 |
| 配套论文摘要 | 研究设计与事件定义的表述 | 可与官方页互证 |
| 论文正文的方法学指标 | 各类标志物定义 | 本文未逐条采用 |
| 未核实 | 采样率、逐列字段名、单文件体积、患者与记录的映射 | 使用前须自行确认 |
附录 C:完整参考文献
- Martin-Yebra A, Martínez JP, Laguna P. MUSIC (Sudden Cardiac Death in Chronic Heart Failure), version 1.0.1. PhysioNet, 2025. DOI 10.13026/z3m7-rf58.
- Martín-Yebra A, Bayés de Luna A, Vázquez R, Caminal P, Laguna P, Martínez JP. The MUSIC Database: Sudden Cardiac Death in Heart Failure Patients. Computing in Cardiology, 2024; 51. DOI 10.22489/CinC.2024.355.
- Pollard T 等. PhysioNet as a global platform for biomedical research. Nature Health, 2026. DOI 10.1038/s44360-026-00096-z.
- PhysioNet MUSIC 项目页,含 Data Description、Files、License 与 Release Notes 子页。
- 开放数据库许可 ODbL 1.0 全文,Open Data Commons。
附录 D:任务代码
import pandas as pd
#-- 目标:按患者切分,估计猝死的累积发生率,并避免记录级泄漏
info = pd.read_csv("subject-info.csv")
#-- 1) 用编码表把结局还原成可读文字
codes = pd.read_csv("subject-info_codes.csv")
print(codes.to_string()[:2000])
#-- 2) 构造生存分析所需的三列:时间、事件、患者号
#-- 列名请以 subject-info_definitions.csv 为准
df = info.rename(columns={"fu_time": "time", "death": "event", "pid": "patient"})
df = df.dropna(subset=["time", "event", "patient"]).query("time > 0")
#-- 3) 按患者分组做交叉验证,禁止按记录切分
from sklearn.model_selection import GroupKFold
folds = list(GroupKFold(n_splits=5).split(df, groups=df["patient"]))
print("每折样本数", [len(te) for _, te in folds])
#-- 4) 竞争风险的粗筛:把泵衰竭死亡单列一类
print(df["event"].value_counts().sort_index())
附录 E:如果只记五件事
第一,MUSIC 是西班牙语缩写,与音乐无关,这是本数据集最重要的一条事实。
第二,它是 2003 至 2004 年入组、随访中位四十四个月的西班牙八中心门诊心衰队列,九百九十二人。
第三,数据分两层:九百三十六条动态心电与六百八十七条高分辨率心电在波形目录,临床与结局在一张宽表。
第四,结局细分到猝死、泵衰竭死亡、移植、非心脏死亡、存活与失访,竞争风险必须处理。
第五,年代与地域是它可复用性的硬约束,迁移前必须重新校准。
编辑说明
本篇的事实以 PhysioNet 官方项目页、数据说明页、许可页与发布说明为主,配套论文摘要为辅。采样率、逐列字段名与单文件体积未在官方页面给出,文中均标为需读头文件或字典确认,未做推断。全量数据未下载,波形未做任何统计。核对日期为 2026 年 10 月 28 日。库内三份名称含 music 的条目已逐个读取其 title 作区隔,其中 music-motion-2015 在 writing 目录下未找到成品文件,其定位依据名称与其正式条目核对,本文只作检索层面的提示,未引用其具体内容。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- autonomic-aging-cardiovascular — 共享标签:生理信号 / 心电信号 / 队列研究 / 心血管疾病
- shareedb — 共享标签:生理信号 / 心电信号 / 队列研究 / 心血管疾病
- norwegian-athlete-ecg — 共享标签:生理信号 / 心电信号 / 队列研究 / 心血管疾病
- fantasia — 共享标签:生理信号 / 心电信号 / 队列研究 / 心血管疾病
- ecgcipa — 共享标签:生理信号 / 心电信号 / 队列研究 / 心血管疾病
- brugada-huca — 共享标签:生理信号 / 心电信号 / 队列研究 / 心血管疾病
- wctecgdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
- ahadb — 共享标签:生理信号 / 心电信号 / 心血管疾病
- chfdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
- crisdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

