磁铁开着,扫描没开 — MHD 效应心电库

23 人 43 条 / 1T 至 7T / 12 导与 3 导 1024 Hz

来源 https://physionet.org/content/mhd-effect-ecg-mri/1.0.0/发布时间: 2026-10-28最后更新: 2026-10-28 阅读 12
磁铁开着,扫描没开 — MHD 效应心电库

信息速览

数据集名称磁铁开着,扫描没开 — MHD 效应心电库
数据类型时序信号,波形,人工标注,元数据
规模23 名受试者 / 43 条记录(清单口径 53 行)
接入方式https://physionet.org/content/mhd-effect-ecg-mri/1.0.0/
AI 就绪度

这份库记录的是磁铁怎样改写心电。它由马格德堡奥托·冯·格里克大学的 Johannes W. Krug Passand 在 2011 至 2017 年间采集,2021 年 5 月 18 日以 1.0.0 版托管到 PhysioNet,收录 23 名健康受试者在 1T、3T、7T 三档场强的磁共振扫描仪孔径内的 12 导与 3 导心电,官方口径为 43 条记录、合计 203 分钟。

名字里的 MHD 指磁流体动力学(magnetohydrodynamic),不是成像序列,也不是设备型号。血液里的电解质随心跳在血管中流动,在强静磁场中受洛伦兹力偏转,正负离子在管壁两侧堆积形成霍尔电压;这个电压叠加在心电上,把 P 波、ST 段、T 波的细节抹平。库里的每一条波形都带着这层叠加。

它的关键取舍在于:采集时扫描仪不成像,只有静磁场,没有梯度切换,也没有射频发射。于是 MHD 成了唯一的干扰项,可以被单独观察、单独建模。想找「心电与 MRI 图像同步」的多模态数据,这里没有图像;想要一条能被物理量解释的对照波形,这是公开资源里少有的选择。一屏速览见下表。

维度 内容
官方全名 Influence of the MHD effect on 12-lead and 3-lead ECGs recorded in 1T to 7T MRI scanners
中文名 MHD 效应对 1T 至 7T 磁共振扫描仪中所录 12 导与 3 导心电的影响
缩写拆解 MHD = magnetohydrodynamic,磁流体动力学;不是成像序列或设备代号
托管平台 PhysioNet,Open Access 栏目
作者 Johannes W. Krug Passand(单一作者,通讯与数据整理同一人)
机构 Otto-von-Guericke University Magdeburg,德国马格德堡
版本 1.0.0,2021 年 5 月 18 日发布,至今无新版
DOI 10.13026/05td-jn37(最新版别名 10.13026/7fxy-3653)
许可 Open Data Commons Attribution License v1.0
受试者 23 名,学生与大学雇员,平均 27.1 岁
记录数 正文口径 43 条,RECORDS 清单口径 53 行
场强 1T、3T、7T 三档,分别对应三台不同扫描仪
导联 12 导(诊断级)与 3 导(简化爱因托芬三角)两种
采样率 全库统一 1024 Hz
精度 12 导记录 12 位、3 导记录 24 位
总时长 203 分钟
整包体积 未压缩 279.8 MB,ZIP 265.3 MB
注释 仅 QRS 波位置,手工标注,不区分正常与异位
引用论文 Krug、Schmidt、Rose、Friebe,Computing in Cardiology 2017

§1 它要解决的具体麻烦

1.1 一台不扫描的磁共振,反而是更干净的实验台

在真实的磁共振检查中,心电上叠着三种性质完全不同的干扰。第一种是静磁场与血流作用产生的 MHD 电压,它跟心跳同步、频率落在心电自身的频带里,用滤波分不开。第二种是梯度线圈切换带来的感应电压,幅度大、形态像方波台阶,与序列时序严格对齐。第三种是射频发射引起的共模干扰与整流效应,表现为高频毛刺与基线跳变。

三者叠在一起时,想把其中任何一项分离出来都近乎无解,因为它们的时序互相纠缠,谁也无法单独作为自变量。这份库的做法是把后两种彻底拿掉:受试者躺在孔径里,机器不上序列,梯度不切换,射频不发射。剩下的只有一块始终开着的磁铁。

这个取舍牺牲了临床真实性,换来了物理可辨识性。真实检查中病人身上的心电是三种干扰的混合物,而这里只有一种纯的。研究者在这样的数据上做出的分离算法,最终仍要回到真实检查中去验证,但至少第一步的因果归因是干净的:波形变形只可能来自静磁场。

代价也很明确。因为不成像,这份数据无法回答「梯度切换时心电长什么样」,也无法回答「序列参数如何影响伪迹幅度」。它把问题切开,只保留其中一块。使用前必须清楚自己关心的是哪一块。

1.2 三条常见的错误期待

第一条,期待它是一份影像与心电配对的多模态数据。 这个名字里同时出现 MRI 与 ECG,最自然的联想是「扫描的同时记录心电」,也就是心脏磁共振门控那一类场景。实际情况相反:采集时没有任何成像发生。库里没有 DICOM,没有 NIfTI,没有一张切片。它记录的是「人在磁体里、机器待机」这一状态下的心电。把它当多模态数据去找图像,会一无所获。

第二条,期待它能训练心律失常分类器。 受试者是自报健康的学生与雇员,头文件里逐条写着无已知心脏病。注释只有 QRS 波的位置,官方明确说明不区分正常节律下的 QRS 与节律受扰(例如异位搏动)时的 QRS。全库没有节律标签、没有形态标签、没有诊断标签。它支撑的是检测与分离,不是分类。

第三条,期待舱外参考心电是「同一时刻的干净版本」。 官方为多数受试者补录了舱外心电,用来当参考。这条参考记录与舱内记录不是同时采集的,中间隔着受试者进出孔径、摆位、设备切换的几分钟。官方在方法里写明,这建立在「健康受试者心电平稳」的假设上。假设成立时它很好用,假设不成立时它就是误差来源。把它当成理想的干净信号,是这份数据最容易被误用的一处。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
研究静磁场对心电形态的影响 三种场强、同一套记录流程、逐条可比的波形 够,这是设计目标
开发 MHD 与心电的分离算法 舱内受污染记录加舱外参考记录 够,但参考不同刻,需自建对齐
评测 QRS 检测器在强干扰下的鲁棒性 全部记录带手工 QRS 标注,含明显变形段 够,这是它的第二主业
训练心律失常分类模型 健康受试者,无节律标签,无诊断标签 不够,结构上做不到
做影像与心电的配对学习 无任何图像 不够,一条都没有
研究梯度场或射频场对心电的影响 采集时这两项被刻意关闭 不够,需要另找数据
评估老年或患病人群的 MHD 表现 平均 27 岁的健康青年 不够,人群被封死
做跨设备、跨场强的迁移研究 三台扫描仪、两种记录仪 部分够,1T 只有一人
教学演示磁场如何扭曲波形 同一人不同体位、不同场强的并排记录 够,差异肉眼可辨

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
你在做磁共振监护,发现心电波形在孔径内变形,怀疑是设备故障 提供同型号记录仪在 1T 至 7T 下的正常变形样本,可判断变形是否属于物理必然 先比对同场强的记录,确认变形幅度是否落在物理预期内
你在写心电去噪算法,苦于没有「干扰已知来源」的验证集 干扰项只有 MHD 一种,因果归因清楚 用舱外记录当参考,跑你的算法,再看不同场强上的残差变化
你在做心脏磁共振的门控,QRS 检测在 3T 上频繁误触发 提供被 MHD 抬高的真实波形与手工 QRS 位置 用它的标注当金标准,测你的检测器在各场强上的召回
你想把 MHD 反过来当血流信号用 场强与体位是显式变量,可观察叠加项随场强的变化 固定受试者与体位,比较 1T、3T、7T 三档的叠加幅度
你在评审一篇声称「滤波可完全去除 MHD」的论文 提供原始波形,可直接查看 ST 段在滤波后的残留 取一段强变形记录,复现对方的滤波链,目视检查 ST 段
你在教学,需要一份能讲清洛伦兹力的医学数据 三种场强、两种体位、同一套流程,物理直觉强 取同一人在 1T 俯卧与仰卧的两条记录并排画图
你的团队要接入 WFDB 生态,需要一个小数据集练手 53 个文件、格式标准、许可宽松 用它把读数据、读注释、画图三段流程跑通

1.5 一句话判断

它是一份物理实验记录,不是一份临床队列:用一块始终开着的磁铁,把「磁场如何改写心电」从教科书的示意图变成两百多分钟可以反复读取的波形。

1.6 不适合谁:四条边界

不适合做临床人群研究。 二十三名受试者全部自报健康,平均二十七岁,头文件逐条写明无已知心脏病。MHD 幅度与血流速度、血管几何、心输出量相关,而这些量在老年人、心衰患者、心律失常患者身上与健康青年差别很大。官方自己在使用说明里写明,这份数据不适合研究心律失常或其他心血管疾病期间的 MHD 效应。

不适合当作影像数据的替代或补充。 全库没有一张图像。任何需要影像与生理信号配对的任务,都必须另找数据源。名字里的 MRI 指的是采集环境,不是采集内容。

不适合研究梯度场与射频场的干扰。 官方在方法里明确,采集在无梯度切换、无射频发射的条件下完成,目的正是让心电只受 MHD 影响。想要序列相关的伪迹,得找真实扫描中同步记录的数据。

不适合作为深度学习的主训练集。 四十三条记录、二十三个人,样本量低于任何现代网络的参数规模。它可以做验证集、做消融、做失败案例分析,但不能承担训练。用它训练出来的模型,学到的是这二十三个人的胸廓形状与电极位置习惯。

§2 数据构成与规格

2.1 一个扁平目录,文件名承担全部索引

解开整包后是一个没有子目录的文件夹。所有记录平铺在同一层,加上四个说明文件。文件名是唯一的索引:ECGMRI 前缀加场强加两位受试者序号加体位码,个别记录再带一个分段数字。ECGMRI3T04Ff 读作 3T 档、第四号受试者、脚先入位;ECGMRI3T04Out 是同一个人同一台机器在舱外录的参考心电。

这种做法在 PhysioNet 的小型库里很常见。优点是无需任何数据字典就能猜到结构,缺点是所有筛选都要写字符串解析,且一旦命名规则有例外,解析器就会出错。这份库确实有一处例外:ECGMRI3T09Ff 被拆成了 Ff1、Ff2、Ff3 三个文件,是同一次采集的三段连续记录,官方未说明拆分原因与段间是否连续。

层级 命名或文件 取值与说明
根目录 无子目录 全部平铺,记录与说明文件混放
记录头文件 <记录名>.hea 每条一个,文本,含通道描述与注释块
记录数据体 <记录名>.dat 每条一个,二进制,16 位整型交错存放
注释文件 <记录名>.qrs 每条一个,二进制,QRS 采样点序号
记录清单 RECORDS 1 个,每行一条记录名,无扩展名
注释类型声明 ANNOTATORS 1 个,内容为 qrs 加一行说明
许可全文 LICENSE.txt 1 个,ODC-BY 1.0 正文
说明文档 README 1 个,与官网正文基本同源
校验清单 SHA256SUMS.txt 1 个,逐文件校验和

1T 档只用 Pro 与 Sup 两种体位,这与那台扫描仪的特殊构造有关。官方说明,1T 使用的是一台已停产的开放式扫描仪,B0 方向垂直、从背侧指向腹侧;而其余扫描仪的 B0 方向水平、从头指向脚。磁场方向不同,MHD 叠加项的极性也不同,所以 1T 上刻意用俯卧与仰卧两种体位去反转这个极性。

2.2 字段与记录的完整字典

这个库没有结构化字段表,信息分三处存放:文件名里的编码、头文件里每条通道的参数行、头文件末尾的注释块。下表把三处合并列出。

信息项 存放位置 取值或范围 是否每条都有
记录名 文件名 ECGMRI 加场强加序号加体位码 是
场强 文件名与注释块 1T、3T、7T 是
受试者序号 文件名 各档位序列内独立编号 是
体位码 文件名 Hf、Ff、Pro、Sup、Out 是
分段序号 文件名 仅 3T09Ff 有 1、2、3 否
通道数 头文件首行第二列 12 或 3 是
采样率 头文件首行第三列 恒为 1024 是
采样点数 头文件首行第四列 逐条不同,数千至三十万 是
存储格式 通道行第二列 16,即 16 位整型 是
增益 通道行第三列 逐通道不同,单位每毫伏 是
ADC 零点 通道行第四列 0 是
初始值 通道行第五列 逐通道不同 是
校验和 通道行第六列 逐通道不同 是
块大小 通道行第七列 0 是
信号名 通道行末列 I 至 V6,或 I、II、III 是
扫描仪型号 注释块 Philips Panorama HFO、Siemens Magnetom Skyra、Siemens Magnetom 7T 是
B0 方向 注释块 Vertical 或 Horizontal 是
记录仪型号 注释块 Getemed CM 3000 或 MIPM Tesla M3 是
ADC 位宽 注释块 12 或 24 是
输入量程 注释块 正负 6 mV 或正负 2.4 mV 是
模拟带宽 官网方法段 0.05 至 100 Hz 仅 12 导记录
导联配置 注释块 诊断级 12 导,或简化爱因托芬三角 是
性别 注释块 Male 或 Female 是
年龄 注释块 整数年 是
体重 注释块 千克 是
身高 注释块 厘米 是
孔径内体位 注释块 Outside、Prone、Supine、Head first、Feet first 是
呼吸方式 注释块 自主呼吸,或屏气(部分记录) 是
QRS 注释 .qrs 文件 采样点序号,无类型细分 是
采集日期 无 仅知 2011 至 2017 年 否
跨档位受试者对应 无 无对照表 否
诊断与用药 无 只有「无已知心脏病」一句 否

注意通道行里的初始值与校验和逐通道不同,它们是 WFDB 的解码起点与数据校验字段,与受试者或设备无关。把这两个数字误当成受试者编号,是解析时最常见的错。另一个易错点是增益:12 导记录的增益在一万上下,3 导记录在两千到两万六千之间浮动,逐通道并不相同,比较幅度前必须先按增益换算。

2.3 一条记录的完整解剖

取 ECGMRI1T01Pro 作解剖对象。它是全库唯一的 1T 档、唯一的俯卧记录,也是全库偏短的记录之一。名字可以逐段拆开:ECGMRI 是数据集前缀,1T 是场强,01 是受试者序号,Pro 是俯卧头先入。

#-- 只取头文件,不解码二进制
curl -s https://physionet.org/files/mhd-effect-ecg-mri/1.0.0/ECGMRI1T01Pro.hea

输出第一行是 ECGMRI1T01Pro 12 1024 40000,四个字段依次是记录名、通道数十二、采样率一千零二十四、采样点四万。四万点除以一千零二十四,约三十九秒,是这份库里较短的记录。

接下来十二行是通道描述,每行格式一致:数据文件名、存储格式、增益、ADC 分辨率、ADC 零点、初始值、校验和、块大小、信号名。信号名依次是 I、II、III、aVR、aVL、aVF、V1 到 V6,即标准诊断级十二导顺序。

末尾是注释块,用 #* 起一个小标题,用 #-- 起一个字段。这台机器是 Philips Panorama HFO,B0 垂直,受试者男性二十七岁、七十五公斤、一百九十厘米,俯卧,自主呼吸,用 Getemed CM 3000 记录,十二位精度。

import wfdb

base = "https://physionet.org/files/mhd-effect-ecg-mri/1.0.0"
rec = wfdb.rdrecord(f"{base}/ECGMRI1T01Pro")
print(rec.record_name, rec.fs, rec.sig_len, rec.n_sig)
print(rec.sig_name)
print(rec.p_signal.shape)
print(rec.comments[:14])

读进来以后,p_signal 的形状是一行四万列十二,单位已经按增益换算成毫伏。comments 是注释块按行拆开后的字符串列表,前面带 #* 与 #-- 原始标记,需要自己切分。这是这份库在解析上最费手的一步:元信息不是结构化字段,而是半结构化的文本行。

import wfdb

base = "https://physionet.org/files/mhd-effect-ecg-mri/1.0.0"
ann = wfdb.rdann(f"{base}/ECGMRI1T01Pro", "qrs")
print(ann.sample[:8])
print(len(ann.sample), ann.symbol[:5])

rdann 读出的 sample 是 QRS 波在采样点上的位置,symbol 全部是同一个类型码,因为 ANNOTATORS 文件里只声明了一种注释。用采样点除以一千零二十四就得到秒数,这是把注释与波形对齐的唯一途径,官方不提供逐拍的心率或 RR 间期。

解剖项 ECGMRI1T01Pro 的值 含义
场强 1T 全库唯一的低场档
受试者序号 01 1T 序列内的第一号
体位 俯卧,头先入 与另两条 Out、Sup 同人同批
通道数 12 诊断级十二导
采样率 1024 Hz 与全库一致
采样点数 40000 约三十九秒
记录仪 Getemed CM 3000 12 导 Holter
ADC 位宽 12 位 量程正负 6 mV
模拟带宽 0.05 至 100 Hz 硬件层面已限带
扫描仪 Philips Panorama HFO 开放式,已停产
B0 方向 垂直,背侧指向腹侧 与其余水平场的机器相反
受试者 男,27 岁,75 公斤,190 厘米 无已知心脏病
QRS 注释 有,手工 不区分正常与异位
参考记录 有,ECGMRI1T01Out 舱外,不同刻

2.4 三档场强的分布

场强是这份库的核心自变量,但三档的样本量极不均衡。1T 档只有一名受试者的三条记录,3T 档占了绝大多数,7T 档五名受试者各三条。按官方口径的四十三条与清单口径的五十三行分别统计,两个总数不同,但各档的构成一致。

场强 扫描仪 记录数(清单) 体位组合
1T Philips Panorama HFO 3 Out、Pro、Sup
3T Siemens Magnetom Skyra 35 Out、Ff、Hf,后段仅 Ff
7T Siemens Magnetom 7T 15 Out、Ff、Hf 各一组
合计 三台机器,两种 B0 方向 53 五种体位码

这里有一处需要留意的结构特征:三个档位的受试者序号各自独立编号,1T 有 01 号,3T 也有 01 号,7T 还有 01 号。官方给出的受试者总数是二十三名,而编号位加起来有二十九个。两者不等,说明跨档位存在同一人重复出现,但官方没有提供跨档位的对应表。

因此在做跨场强比较时,不能假设 1T01、3T01、7T01 是同一个人。头文件里的性别、年龄、体重、身高可以作线索,但官方从未声明这套对应关系,任何基于编号字符串的配对都是研究者自己的推断。

档位 \ 体位 Out Ff Hf Pro Sup 小计
1T 1 0 0 1 1 3
3T 4 24 7 0 0 35
7T 5 5 5 0 0 15
合计 10 29 12 1 1 53

这张表暴露了两个结构事实。第一,舱外参考记录只有十条,而官方文字写「多数受试者有舱外参考心电」,二十三名受试者与十条参考记录之间存在缺口,缺口构成官方未说明。第二,十二导记录集中在 1T、3T 前段与 7T 全部,3T 后段(十号以后)改用三导无线监护仪,因此想做「同一导联体系跨场强」的比较,只有在带 12 导的那部分记录上才成立。

2.5 与同类资源的字段差异

PhysioNet 上的心电库大多以「病人—心搏—诊断」为组织轴,这份库的组织轴是「场强—体位」。两者的字段设计因此完全不同:前者需要诊断编码、心搏分类、用药记录,后者需要扫描仪型号、B0 方向、孔径位置。

维度 本库 与常规临床心电库的差异
组织轴 场强与体位 常规库按病人与心搏组织,本库的对照单位是物理条件
受试者规模 23 人 常规库数百至数万人,本库不做人群推断
每条记录时长 数十秒至数分钟 常规库十秒居多,本库可看慢变化,不做长时节律
通道数 12 或 3 与常规库的 12 导或 2 导无本质差异
采样率 1024 Hz 常规库 100 至 500 Hz 居多,本库偏高,适合看高频细节
精度 12 位或 24 位 常规库 16 位居多,本库三导更细、量程更窄
诊断标签 无 常规库有,本库做不了分类
心搏标签 有,仅位置 常规库含类型,本库只能检测,不能分型
环境元信息 扫描仪、场强、B0 方向、体位 常规库通常没有,这是本库的核心价值
参考信号 舱外同人记录 常规库通常没有,本库提供了对照的可能
影像 无 与常规库一致,都无影像

这份对照说明一件事:这份库的价值不在波形本身有多特别,而在波形旁边的那些字段。同样一段十二导心电,如果不知道它是在 7T 孔径里、头先入、仰卧、不开序列的条件下录的,它就只是一段被噪声污染的心电;知道这些之后,它才成为一个可以被物理解释的观测。字段即数据,在这份库上体现得最彻底。

§3 它是谁的数据:一篇会议论文的配套

3.1 作者、机构与出处

这份库是单作者作品。Johannes W. Krug Passand 在奥托·冯·格里克大学(Otto-von-Guericke University Magdeburg,简称 OVGU)完成全部采集与整理,PhysioNet 页面上他既是作者也是通讯联系人。机构位于德国萨克森-安哈尔特州马格德堡,采集使用的三台扫描仪分别属于该校与大学附属医院。

官方的引用要求有两层:引用数据集本身,同时引用 2017 年 Computing in Cardiology 会议上的原始论文,作者为 Krug、Schmidt、Rose、Friebe 四人,标题是「A database of electrocardiogram signals acquired in different magnetic resonance imaging scanners」,页码 1 至 4。会议论文与数据集相隔四年,说明数据先以论文形式公开方法,之后才整理成标准格式托管。

资助编号在官方致谢里写全了:联邦教研部的 03IP710、03IPT7100X、03FO16101A,与联邦经济部的 KF3172301JL3。这类编号对使用者没有直接用途,但它说明采集横跨多年、多项目,也解释了为什么同一个库里的设备与场强会如此分散——数据不是一次性设计好的实验,而是多个项目累积的产物。

3.2 时间线

从参考文献可以还原出一条清晰的技术路线:先发现现象,再做滤波,再做门控,最后回到数据本身。这条路线解释了库里为什么会有舱外参考记录,也解释了为什么注释只标 QRS。

年份 事件 与本库的关系
2011 首次在 Computing in Cardiology 报告不同扫描仪构型下的 MHD 失真 采集起点,1T 数据来自这一时期
2012 用独立成分分析从十二导心电中滤除 MHD 首次把参考记录引入方法
2013 讨论超高场心脏磁共振中向量心电门控的局限 场强上探到 7T 的动因
2014 提出基于高阶统计量的实时 QRS 检测器 注释只标 QRS 的动因
2015 作者完成博士论文,主题是高场磁共振中的心脏门控与监护 数据整理的理论框架
2016 提出基于积分方差的实时 QRS 检测 同上
2017 发表本库的数据论文 数据首次以数据库形式描述
2021 以 1.0.0 版托管到 PhysioNet 公开可检索的起点

这条时间线上有一个值得注意的空白:2017 年论文发表到 2021 年正式托管,中间隔了四年。对于一份体量不到三百兆的数据,四年的整理期偏长,官方没有解释原因。可以确认的是,托管版本的文件修改时间集中在 2021 年 2 月,校验清单更新于 2021 年 5 月,与发布日吻合。

3.3 两台记录仪,两套物理规格

库里的记录来自两种完全不同的硬件,这是很多使用者第一次接触时容易忽略的差异。十二导记录用的是一台 Holter,三导记录用的是一台磁共振条件兼容的无线监护仪。两者的位宽、量程、带宽都不同,直接混在一起比较幅度会出错。

项目 12 导记录仪 3 导记录仪
型号 Getemed CardioMem 3000(头文件写作 CM 3000) MIPM Tesla M3
类型 有线 Holter 无线,磁共振条件兼容
导联 诊断级 12 导 简化爱因托芬三角,3 导
采样率 1024 Hz 1024 Hz
ADC 位宽 12 位 24 位
输入量程 正负 6 mV 正负 2.4 mV
模拟带宽 0.05 至 100 Hz 官方未标注
通道顺序 I、II、III、aVR、aVL、aVF、V1 至 V6 I、II、III
典型增益 四千至一万四每毫伏 七千至两万六每毫伏

两套硬件的取向不同。Holter 追求诊断级保真,带宽下限压到 0.05 Hz,为的是不丢 ST 段的低频成分;位宽只有 12 位,但量程宽到正负 6 mV,足以容纳 MHD 造成的大幅抬升。无线监护仪走的是另一条路:24 位位宽给出极细的量化台阶,但量程只有正负 2.4 mV,是前者的四成。

这个差异带来一个实际后果:在场强较高、MHD 叠加幅度较大的记录上,三导设备更接近量程边界。官方没有报告削顶情况,也没有给出逐条的幅度统计,因此使用者若要比较不同记录仪的幅度,应当先检查原始整数是否贴近满量程,再决定是否可用。这是结构性提醒,不是对数据的指控。

3.4 受试者是谁

二十三名受试者全部是志愿者,来源是马格德堡大学的学生与雇员。官方给出了三项均值与标准差:年龄 27.1 加减 3.2 岁、体重 73.8 加减 13.1 公斤、身高 181.7 加减 10.5 厘米,但明确说明不提供逐人的招募条件。这批人的共同点是年轻、健康、体型偏高大。

平均身高一百八十一厘米这一点值得单独说。MHD 幅度与胸廓几何、主动脉长度、血流速度都相关,一副较高的身躯意味着较长的血管路径与较大的血容量。这份库的人群在体型上偏向高瘦青年,往一般人群外推时,叠加项的绝对幅度可能系统性偏高。官方没有讨论这一点。

性别构成是一个缺口。官方正文没有给出男女比例,只在头文件中逐条记录。这意味着想按性别分层分析的研究者,必须自己解析注释块并汇总,而这一步得到的数字是研究者派生的,不是官方口径。

3.5 与库内其它心电资源的定位差异

同样是 PhysioNet 上的心电数据,不同库回答的问题完全不同。把它们放在一起看,能更清楚地看出这份库的位置。

库 组织轴 主要用途与本库的关系
本库 场强与体位 MHD 分离与强干扰下的 QRS 检测;唯一以静磁场为自变量
心律失常库 心搏与节律 分类、检测、节律分析;本库缺的标签它有
可穿戴伪迹库 活动与电极位置 运动伪迹去除;干扰类型不同,方法可借鉴
长时动态心电库 时间与日常活动 长时节律统计;本库不做长时
新生儿心电库 年龄与出生状态 儿科心电分析;本库无儿科
重症监护心电库 病房与病程 监护报警与事件检测;本库无病程
挑战赛心电库 任务与评分 基准评测;本库无官方划分

这张表里最要紧的是第一行与第二行的对比。心律失常库能给你标签,给不了物理条件;本库能给你物理条件,给不了标签。两者不是替代关系,而是上下游关系:在本库上开发出的抗干扰检测器,最终要在有标签的临床库上验证检出率。

§4 它最独特的东西:把磁场当自变量

4.1 为什么「同一人 × 多场强 × 多体位」比「多导联」更稀缺

心电数据库绝大多数以「人」为自变量:不同病人、不同疾病、不同年龄。以「物理环境」为自变量的库极少,因为构造它需要一台可以调场强的磁共振、一套能在孔径内工作的记录设备、以及愿意躺在里面的健康志愿者。三者缺一,数据就采不成。

这份库恰好三样都有。同一套流程在 1T、3T、7T 三台机器上重复,同一名受试者可以在俯卧与仰卧之间切换,同一台记录仪跟着人进出孔径。于是场强、体位、设备三个变量被分开控制,任意固定两个都能观察第三个的效应。

变量 取值 控制方式与可观察的效应
场强 1T、3T、7T 换扫描仪,看叠加幅度随场强的增长
B0 方向 垂直、水平 换扫描仪,看叠加项的极性反转
体位 俯卧、仰卧、头先入、脚先入 换摆位,改变血流与磁场的夹角
呼吸 自主、屏气 下指令,看呼吸调制是否叠加
设备 12 导 Holter、3 导监护仪 换记录仪,看带宽与量程的影响
位置 舱内、舱外 移出孔径,得到有无 MHD 的对照

六个变量里,场强与 B0 方向是这份库独有的一对。其他心电库可以控制体位(躺与坐),可以控制设备,但几乎不可能控制场强。这也是为什么这份库在讨论 MHD 的论文里被反复引用:它是少数能把「场强翻倍,叠加项怎样变」这件事直接摊开看的公开数据。

4.2 案例:ECGMRI7T02 的三条记录

取 7T 档第二号受试者的一组三条记录作为贯穿案例。同一个人、同一台 Siemens Magnetom 7T、同一次进舱流程,分别在舱外、头先入、脚先入三个条件下各录一段十二导心电。头文件显示受试者为男性、二十五岁、七十公斤、一百七十六厘米,三段都是自主呼吸。

记录 体位 采样点数 折合时长 作用
ECGMRI7T02Out 舱外 300,000 约四分五十三秒 唯一不含 MHD 的参考
ECGMRI7T02Hf 头先入,仰卧 200,001 约三分十五秒 血流方向与 B0 同向为主
ECGMRI7T02Ff 脚先入,仰卧 280,001 约四分三十三秒 血流方向与 B0 反向为主

这三条记录的价值在于它们构成一个完整的三点对照:一条没有磁场,两条有磁场且磁场相对于人体的方向相反。头先入与脚先入的区别不只是躺的方向,而是心脏到磁体中心的相对位置、以及升主动脉血流与 B0 的夹角同时被翻转。官方在方法里正是用这一点来解释 1T 档为什么要俯卧与仰卧各录一次。

把三条并排画出来,通常能看到两类差异。第一类是整体的基线抬升或压低,幅度与场强和体位相关,形态随心动周期起伏,是典型的 MHD 叠加。第二类是 QRS 波本身的形态改变,尤其在 V1 至 V3 上,R 波与 S 波的相对高度会变。前者影响 ST 段的判读,后者影响 QRS 检测器的阈值设定。

需要提醒的是,这三条记录并非严格同步。舱外那条是在进入孔径之前或之后录的,中间隔着摆位与设备切换。若要做逐拍相减,必须先把三条记录按心率对齐,并对齐过程本身的误差有估计。§4.2 的案例在后面的评测协议与偏差讨论里还会用到。

4.3 体位如何改写 MHD 极性

MHD 叠加项的符号取决于三个矢量的相对关系:血流方向、磁场方向、以及电极导联轴的方向。三者中任意一个反转,叠加项就可能整体反号。这份库用体位来制造这种反转。

1T 那台开放式扫描仪的 B0 是垂直的,从背侧指向腹侧。受试者俯卧时,心脏的背侧朝上靠近磁体,血流方向与磁场的夹角是一个值;翻成仰卧后,胸侧朝上,夹角变成补角,叠加项的极性随之翻转。官方在方法里明确写到,1T 之所以只用俯卧与仰卧两种体位,正是为了反转 MHD 效应。

3T 与 7T 是水平场的圆筒机,B0 从头指向脚或反向。此时改变体位的方式不是翻身,而是换进入方向:头先入时心脏位于孔径较深处,脚先入时心脏靠近孔径出口。血流的主要分量与 B0 的夹角在这两种摆位下发生改变,叠加项的形态也随之改变。

档位 B0 方向与制造反转的方式 记录数
1T 垂直,背到腹;俯卧与仰卧互换 3
3T 水平;头先入与脚先入互换 35
7T 水平;头先入与脚先入互换 15

这种设计有一个隐含前提:受试者在两种体位下的血流状态可比。实际上从仰卧翻到俯卧,胸腔受压、回心血量、心率都可能变化,官方没有对这一点做校正,也没有报告体位切换前后的心率。因此「极性反转」这个解释在物理上成立,在生理上仍混有体位本身的效应。这是使用这份库做定量反演时最需要小心的地方。

4.4 它支撑的四类实验

从官方使用说明与参考文献看,这份库被设计来支撑四类工作。这四类工作的门槛与所需记录不同,可以按需取子集。

实验类型 需要的记录 评价指标 官方是否给了基线
MHD 与心电分离 舱内记录加舱外参考 分离后 ST 段形态恢复程度 无,需自建
强干扰下的 QRS 检测 全部记录 检测召回与误检率 有手工标注
心脏门控触发 高场记录 触发时刻与真实 R 波偏差 有手工标注
MHD 作为血流代理 多场强同人记录 叠加幅度与场强的相关性 无,需自建

第一类与第四类是这份库真正的独门用途,也是它被引用的主因。第二类与第三类有替代品——任何带 QRS 标注的心电库都能做检测评测,只是本库的干扰更极端。选择本库做检测,图的是「难」,不是「全」。

第四类的思路值得展开。既然叠加项与血流速度成正比、与场强成正比,那么在同一受试者身上给定场强,叠加项就携带了血流的信息;反过来,若能测得叠加项,就能估计每搏输出量一类的量。这是把干扰变成信号的路子,官方在摘要里点了这一句,但没有提供任何验证。走这条路的人需要自己找金标准,本库只提供输入。

4.5 边界条件:什么时候它不再适用

有四类情形会让这份库直接失效。

第一类是心率剧烈变化。全库的参考记录都建立在「健康受试者心电平稳」的假设上,受试者静卧、自主呼吸、无心律失常。一旦心率在舱内外两段之间漂移超过几个百分点,逐拍对齐就会失真,MHD 幅度估计随之偏掉。

第二类是低场强。1T 只有一名受试者的三条记录,其中舱内两条分属俯卧与仰卧。想在 1T 上做体位对照,样本只有一个人一对记录,任何统计结论都不成立。

第三类是女性与老年人群。官方没有给出性别构成,平均年龄二十七岁。MHD 与胸廓几何、血容量相关,这两条在女性与老年人身上与健康青年不同,本库无法覆盖。

第四类是成像状态下的心电。这份库刻意关闭了梯度与射频,因此它不能回答「真实扫描时心电是什么样」。真实检查中的干扰是复合的,把本库上训练出的分离模型直接搬到扫描现场,会遇到训练分布里根本不存在的干扰类型。

§5 怎么拿到:从递归抓取到可训练的数组

5.1 目录与体积

整包未压缩 279.8 MB,压缩后 265.3 MB。这个比例说明数据本身已经是紧凑的二进制,压缩收益很小。按二百零三分钟、十二导、一千零二十四赫兹、每点两字节估算,全十二导的理论占用约二百九十九兆,与官方数字同量级;实际偏小,是因为后段有三导记录,占用只有十二导的四分之一。

体积小是这份库的一个实用优点。两百多兆的数据可以整体放进笔记本,反复切窗、反复重采样都不需要外接盘。相比动辄几十上百吉字节的监护库,它更适合做方法原型的第一轮验证。

5.2 两条取数路径

官方给了三种取法:网页上的 ZIP 下载、递归抓取、以及公开对象存储同步。三者内容一致,都不需要登录。

#-- 方式一:递归抓取整个版本目录,保留相对路径
mkdir -p /data/mhd && cd /data/mhd
wget -r -N -c -np https://physionet.org/files/mhd-effect-ecg-mri/1.0.0/
#-- 方式二:从公开桶同步,适合脚本化重跑
aws s3 sync --no-sign-request \
  s3://physionet-open/mhd-effect-ecg-mri/1.0.0/ /data/mhd/

两条路径的结果相同。递归抓取会多出一层以域名命名的目录,写脚本时要留意路径前缀;对象存储同步则直接落到目标目录。若只需要元信息,可以单独取清单与说明文件,几秒钟就能完成。

#-- 只要清单和说明,先看清结构再决定是否全量下载
base=https://physionet.org/files/mhd-effect-ecg-mri/1.0.0
curl -s "$base/RECORDS" -o RECORDS
curl -s "$base/README" -o README
wc -l RECORDS

5.3 建索引:把文件名拆成一张表

文件名是唯一的索引,所以第一步永远是字符串解析。规则很规整:前缀、场强、两位序号、体位码,个别记录多一位分段数字。写成正则一次拆完,比逐条手工判断可靠。

import re
from pathlib import Path

pat = re.compile(r"^ECGMRI(\d)T(\d{2})(Hf|Ff|Pro|Sup|Out)(\d?)$")
rows = []
for line in Path("/data/mhd/RECORDS").read_text().split():
    m = pat.match(line)
    if not m:
        continue
    field, subj, pos, seg = m.groups()
    rows.append({"name": line, "tesla": int(field),
                 "subject": int(subj), "position": pos, "seg": seg})

print(len(rows))
print(rows[0])
print(sorted({r["position"] for r in rows}))

解析结果可以直接转成 DataFrame 做分组。要注意两点:场强那一档是单个数字,1T、3T、7T 都能匹配;分段数字可能为空,取值时要按空字符串处理,不要当成零。

5.4 解析注释块:元信息藏在文本行里

通道参数在头文件正文,受试者与设备信息在注释块。WFDB 把注释块原样收进 comments,需要自己按 #-- 切开。这一步做完,才能按性别、年龄、场强做分组。

import wfdb

base = "https://physionet.org/files/mhd-effect-ecg-mri/1.0.0"
rec = wfdb.rdrecord(f"{base}/ECGMRI7T02Hf", physical=False)

meta = {}
for line in rec.comments:
    s = line.strip().lstrip("#").strip()
    if s.startswith("-"):
        s = s.lstrip("-").strip()
    if ":" in s:
        k, v = s.split(":", 1)
        meta[k.strip()] = v.strip()

for k in ("Magnetic field strength", "MR scanner",
          "Orientation of the static magnetic field (B0)",
          "ECG recorder", "ADC resolution", "Positon in the scanner"):
    print(k, "=", meta.get(k))

这段代码有两处需要适应实际文本。字段名偶尔带拼写问题,例如体位那一行写的是 Positon,少一个字母,按键名取值会拿不到。注释行开头有时是 #--,有时是 #*,切割时要先剥掉所有井号与前导连字符,再按第一个冒号拆分。

5.5 按场强分组的评测协议

拿到数据后最常见的问题是「怎么分组才公平」。这份库的天然分组是场强与体位,评测协议应当围绕这两个维度设计,而不是随机切分记录。

import numpy as np
import wfdb

base = "https://physionet.org/files/mhd-effect-ecg-mri/1.0.0"

def load(name):
    rec = wfdb.rdrecord(f"{base}/{name}")
    ann = wfdb.rdann(f"{base}/{name}", "qrs")
    return rec.p_signal, ann.sample

def bandpower(x, fs=1024, lo=0.5, hi=40.0):
    f = np.fft.rfftfreq(len(x), 1 / fs)
    p = np.abs(np.fft.rfft(x - x.mean())) ** 2
    return float(p[(f >= lo) & (f <= hi)].sum())

groups = {
    "7T_out": "ECGMRI7T02Out",
    "7T_hf": "ECGMRI7T02Hf",
    "7T_ff": "ECGMRI7T02Ff",
}
for tag, name in groups.items():
    x, qrs = load(name)
    lead = x[:, 1]
    print(tag, len(lead), len(qrs), round(bandpower(lead), 1))

协议的关键不是算法,而是分组口径。以 §4.2 的案例为例,三条记录同人同机,唯一变化的是体位与有无磁场,因此它们构成一个受控对照;若把不同受试者的记录混在一组做平均,场强效应就会被个体差异淹没。建议按「同一人同一档位」成组,组内比体位,组间比场强。

分组方式 控制住的变量 未控制的变量 适用问题
同人同档位,比体位 人、场强、设备 体位带来的生理变化 极性反转是否成立
同人同体位,比场强 人、体位 扫描仪型号 幅度随场强的增长
同档位,比人 场强、设备 个体差异 个体间离散度
同人,比舱内舱外 人、设备 时间差 有无 MHD 的差异
全部混在一起 无 全部 只适合做总体描述

5.6 六个最容易出错的地方

易错点 具体表现 正确做法
把编号当身份 以为 3T02 与 7T02 是同一人 官方无对应表,只能按头文件推断
混用两种导联体系 把三导记录的 I、II、III 当十二导的前三导 两者增益、量程、导联配置都不同
忘记按增益换算 直接比较原始整数的幅度 先除增益得毫伏,再比较
把注释当秒数 用采样点序号当时刻 除以 1024 才是秒
忽略分段记录 把 3T09Ff1 到 Ff3 当三条独立记录 它们是同一次采集的三段
全量当训练集 用四十几条记录训练网络 只能做验证、消融与失败分析

这六条里有三条与元信息解析有关,两条与物理量换算有关,一条与实验设计有关。它们的共同点是:只要事先读一遍 README 与一条头文件的完整内容,就都能避免。

§6 与库内资源的关系

6.1 关系图谱

这份库在心电类资源里处于「环境变量」这一格。它与按疾病组织、按活动组织、按设备组织的库都不同,彼此之间是互补而非竞争。

关联类型 库内资源 关联点 使用方式
同类干扰研究 可穿戴运动伪迹库 都是「信号加已知来源干扰」 方法互借,干扰物理不同
下游标签来源 心律失常分类库 本库无标签,那边有 本库调算法,那边验效果
同平台同规范 各 PhysioNet 心电库 都是 WFDB 格式 读数据的代码可直接复用
上游场景 心脏磁共振相关资源 门控是共同的应用背景 本库解释门控为何失效
设备侧关联 可穿戴与监护设备资源 都关心孔径内的设备兼容 本库提供兼容设备的真实波形
方法侧关联 心电去噪与分离资源 都做成分分离 本库的参考记录可做监督信号

最容易建立的连接是第二行。本库的注释只有 QRS 位置,无法评估分类性能;但一个在本库上抗住了 MHD 的检测器,可以拿到有心律失常标签的库上去测检出率。这条链路把「物理真实性」与「标签完备性」分开获取,是使用本库最经济的做法。

6.2 检索路径

在站内找相关资源时,四个入口最有效:按信号类型(心电信号)、按应用场景(磁共振、门控、监护)、按数据形态(波形、时序信号、手工标注)、按干扰类型(伪迹、基线漂移)。前三个入口能把它带出来,第四个入口能带出与它方法同源的去噪条目。

按「场强」检索在多数平台上不会命中,因为场强不是通用分类词。这是这份库的一个检索劣势:它的核心变量没有对应的标签,只能靠「MRI」这个宽标签带出来。换句话说,它最独特的属性恰恰是最难被检索到的属性。

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

在给这份库打分之前,必须先校正一个常见的错位:把它当成「样本太少的临床数据集」来评价。这个判断本身是误判。它的目标不是估计人群分布,而是提供一个物理变量被单独隔离的观测集。按后者衡量,二十三个人不是缺陷,因为个体差异在这个设计里是噪声;两三百兆的体积不是寒酸,因为物理对照只需要少量高质量记录。

校正之后的评价标准应该换成三条:物理变量是否真的被隔离、对照是否真的成对、规格是否真的统一。这份库在三条上都站得住:梯度与射频确实被关闭,舱内与舱外确实成对,采样率与格式全库一致。它站不住的是另一组问题:能否外推到病人、能否支撑监督学习、能否代表真实扫描场景。把这两组问题分开,评价才不至于错位。

还有一层校正关于数字本身。官方正文写四十三条记录,清单列出五十三行,两个数字相差十条;官方文字说多数受试者有舱外参考,清单里却只有十条舱外记录。这两处不一致都不影响数据的物理有效性,但会影响任何「按记录数」做统计的结论,引用时必须标明口径。

7.1 五维评分

按千方医数集的框架,对数据集的评价分成规模、结构、注释、边界、可用性五个维度。这一框架与 DAIMS(Data and AI Management Standards)的分层思路一致:先看数据本身,再看治理条件与使用限制,而不是只看体量。

维度 分值(五分制) 依据与说明
规模 2 23 人、43 条、203 分钟;物理对照够用,统计推断不足
结构 5 三档场强、五种体位、两种导联、全库 1024 Hz;设计干净
注释 2 仅 QRS 位置,手工,无类型细分;检测可用,分类不可用
边界 3 许可宽松,适用面窄;官方自己写清了不适用场景
可用性 5 280 MB、WFDB 标准、三条取数路径;半小时能跑通

五项的权重完全取决于用途。做 MHD 分离方法研究时,结构与可用性的权重最高,总分可观;做人群层面的心电分析时,规模与注释的权重最高,总分立刻跌到很低。任何单一综合分都不应脱离用途被引用。

7.2 注释的真实覆盖范围

全库的注释只有一个来源:.qrs 文件里的 QRS 采样点。ANNOTATORS 文件仅一行,声明注释类型为 qrs,含义是 QRS 波群。没有第二种注释,没有区间标注,没有质量评级。

注释项 是否存在 覆盖范围 能否支撑监督学习
QRS 位置 是,手工 全部记录 可做检测评测
心搏类型 否 零 不能做分型
节律标签 否 零 不能做节律分类
伪迹区间 否 零 不能做伪迹检测训练
信号质量评分 否 零 不能做质量回归
呼吸相位 否 零 不能做呼吸校正
体位与场强 是,来自文件名与头文件 全部记录 可做条件分组
受试者人口学 是,来自注释块 全部记录 可做协变量分析

能支撑监督学习的目标只有两个:QRS 检测,以及以场强或体位为条件的回归。前者有手工金标准,后者有可靠标签但样本极少。除此之外的一切监督任务,都需要研究者自己造标签,而造出来的标签不属于官方口径。

值得注意的是「不区分正常与异位」这一句。官方的意思是:标注者只标了 QRS 出现的位置,没有判断这个搏动是窦性还是异位。对检测任务而言这没有影响,因为检测器只关心「有没有」;对任何涉及节律形态的分析而言,这一句就是明确的禁区。

7.3 已知的、可枚举的偏差

偏差在这份库里不是统计意义上的抽样偏差,而是设计上的结构性偏置。下表按可校正性排列。

偏差项 具体表现与影响 可否从数据内校正
人群偏差 健康青年,平均 27 岁,无法外推到老年与病人 不可校正
体型偏差 平均身高 181 厘米,叠加幅度可能系统性偏高 不可校正
场强偏差 1T 仅 1 人 3 条,低场对照几乎无法成立 不可校正
设备偏差 3T 后段改用 3 导,跨场强比较的导联体系不一致 可部分校正,取子集
时间偏差 参考记录与舱内记录不同刻,逐拍相减含时间差误差 可部分校正,需对齐
状态偏差 静卧、自主呼吸、无负荷,无运动与药物负荷 不可校正
场景偏差 不开梯度与射频,不代表真实扫描 不可校正
编号偏差 各档独立编号、无对应表,跨场强同人配对不可靠 需自行推断

八项偏差里只有两项可以从数据内部部分校正。这个比例说明它的适用范围不是「有多大偏差」,而是「偏差封死了哪类问题」。人群、体型、场强、场景这四项,无论用什么统计技巧都无法从本库得到答案。

§4.2 的案例在这里提供一个具体化的提醒。那三条记录看起来构成完美的受控对照:同人、同机、同一天。但舱外那条与舱内两条之间隔着摆位时间,心率若有漂移,逐拍相减就会把漂移当成 MHD。这个误差不是数据错误,而是设计上的必然,任何使用它的人都必须自己处理。

7.4 外部验证矩阵

外部验证指的是用本库之外的资源检验在本库上得到的结论。对一份物理实验性质的数据,这一步尤其重要,因为物理规律应当可迁移,而算法往往不可迁移。

验证方向 可用外部资源与验证方式 预期结果
MHD 幅度与场强的关系 其他高场磁共振心电记录;比同体位不同场强的叠加斜率 若一致则物理模型成立
分离算法的有效性 有 QRS 标签的临床心电库;本库调参,外部测检出率 通常下降,反映过拟合
参考记录的可替代性 同人不同时刻的静息心电;两段互做参考 差异即时间差误差的量级
三导与十二导的一致性 同步双设备记录;比较共用导联的形态 官方未提供,属空白
病人群体的 MHD 表现 监护病房的磁共振兼容记录;比较幅度分布 本库可能低估
滤波对 ST 段的影响 有 ST 改变标注的库;比较滤波前后判读一致性 本库可作干扰源

第一行与第五行是这份库最需要外部验证的两处。场强与幅度的关系是它的核心卖点,但只有一个作者、一套设备、二十三个人支撑;病人群体的表现是它最大的空白,而恰恰是临床应用最关心的。§4.2 的案例可以作为这条验证链的起点:先用三条同人记录确认体位效应,再去外部数据上看这个效应是否还在。

7.5 它为何能持续:一份物理对照不需要更新

一份 2021 年发布、至今仍是 1.0.0 版、浏览量三百余次的小库,为什么不会被清理,也不会被替代?答案在它的不可复制性。要复制它,需要一台 7T、一台 3T、一台已停产的 1T 开放式扫描仪,一套磁共振条件兼容的记录设备,二十三名愿意躺在孔径里的志愿者,以及跨越六年的采集窗口。这不是一个实验室一个季度能完成的事。

第二层原因是它的物理有效性不随时间衰减。临床数据库会过时,因为诊疗指南变了、设备换代了、人群结构变了;物理对照不会过时,因为洛伦兹力今天和 2011 年是同一个公式。一份 2011 年录的 7T 心电,在 2026 年仍然是 7T 心电。

第三层原因是它填的是一个窄口。做 MHD 分离的人不多,但每一个做的人都绕不开它。窄口的好处是竞争者少,坏处是使用者少;对一份托管在公共平台、体量不到三百兆的数据而言,维护成本几乎为零,窄口足以让它长期在架。

§8 生态位与历史

8.1 历史沿革

MHD 效应不是新发现。1996 年就有理论工作分析磁场与主动脉血流的相互作用,算出管壁电位差随场强与流速增长的量级。真正把这件事变成工程问题的,是磁共振从 1.5T 走向 3T、再到 7T 的过程:场强翻倍,叠加项随之翻倍,原本可以忽略的变形变成了门控失败的直接原因。

这份库的采集窗口正好覆盖了这段升级期。2011 年首次报告不同扫描仪构型下的 MHD 失真时,3T 刚开始普及,7T 还在少数研究中心;到 2017 年数据论文发表时,7T 已有商用机型。库里同时保留 1T 开放式、3T 圆筒式与 7T 超高场三种构型,等于把这段设备演进压缩进了一份数据。

官方背景段提到的介入磁共振场景值得单独说明。提升磁共振期间心电诊断价值的目标,对重症患者与磁共振引导介入尤其重要。这类场景下病人不能离开磁体,心电必须在线判读,MHD 就成了必须被扣除的项。本库虽然不是为介入采集的,但它提供的对照仍是这类工作最接近的公开材料。

8.2 与后续研究的关系

从官方参考文献看,这份数据在发表前后被用于六个方向的工作:MHD 失真建模、独立成分分析分离、向量心电门控、实时 QRS 检测、循环平稳分析、介入磁共振监护。作者本人在其中占了五篇,这说明它是一个「自用型」数据集:先在自己的方法研究里反复使用,成熟后才公开。

其中循环平稳分析是一个容易被忽略的方向。它把信号看成统计特性随时间周期性变化的过程,心电与 MHD 虽然频带重叠,但循环频率不同,因此可以在循环谱上分开。这类方法需要的正是「两种成分叠加、且知道各自来源」的数据,本库的舱内舱外配对恰好满足。

8.3 生态位:标尺而不是样本

用一句话概括它的位置:它是标尺,不是样本。样本用来估计总体,标尺用来校准仪器。没有人在标尺上做统计推断,但每个实验室都需要一把。

这个定位解释了它的全部特征。二十三个人是特性,因为标尺不需要代表性;三档场强是必需,因为标尺要有刻度;不开成像是特性,因为标尺要排除无关变量;体量小是特性,因为标尺要能随手取用。

标尺这个比喻还能解释另一个现象:它的引用多集中在方法类论文的「数据」一节,而不是结果一节。作者引用它,通常是为了说明「我们用的是公开的、场强已知的真实波形」,而不是为了报告一个统计量。这与样本型资源的引用方式完全不同。

8.4 谁在用它,用来做什么

官方页面显示的累计浏览量为三百五十余次,在 PhysioNet 上属于偏低。低浏览不等于低价值,只说明它面向的是一个窄口。

使用者类型 典型用途 从中获得的东西与主要障碍
信号处理研究者 分离与滤波方法验证 干扰来源已知的真实波形;无官方基线算法
磁共振工程师 评估孔径内监护可行性 不同场强的变形样本;设备型号偏老
门控算法开发者 测试触发鲁棒性 手工 QRS 标注;无失败案例标注
临床工程师 解释监护异常 判断变形是否属于物理必然;无病人数据
教师 讲解洛伦兹力的医学后果 三档场强的直观对照;需自备讲解材料
学生 练习 WFDB 与信号处理 结构规整的小数据集;文档偏简

第四行值得展开。临床上遇到磁共振期间心电报警频繁,第一反应常是设备故障。知道 MHD 的物理机制之后,判断标准就变了:在场强内出现与心动周期同步的基线起伏,属于物理必然,不是故障。这份库提供的就是这种判断的参照系。

§9 使用指引

9.1 三种角色的路径

不同角色从这份库得到的东西不同,最短路径也不同。

角色 目标 三步路径
算法研究者 验证分离或检测方法 取 7T 一组三条跑通读数据,按场强与体位分组做对照,再到有标签的库上复核
设备工程师 评估孔径内监护方案 读两台记录仪的规格差异,比较同场强下两种导联体系,对照自家设备的量程与带宽
教学与学习 建立物理直觉 取同一人俯卧与仰卧两条并排画图,比较基线起伏方向,讲清洛伦兹力与霍尔电压

三条路径的共同起点都是「取一组同人记录」。单条记录只能看到变形,看不出变形的来源;只有成组对照,才能把场强与体位的作用分开。

9.2 一条最短的可用流程

从零到出一张对照图,最短的流程是四步:取清单、按组读入、画三条并排、标注 QRS 位置。

import numpy as np
import wfdb
import matplotlib.pyplot as plt

base = "https://physionet.org/files/mhd-effect-ecg-mri/1.0.0"
names = ["ECGMRI7T02Out", "ECGMRI7T02Hf", "ECGMRI7T02Ff"]

fig, axes = plt.subplots(3, 1, figsize=(10, 6), sharex=False)
for ax, name in zip(axes, names):
    rec = wfdb.rdrecord(f"{base}/{name}")
    ann = wfdb.rdann(f"{base}/{name}", "qrs")
    lead = rec.p_signal[:, 1]
    t = np.arange(len(lead)) / rec.fs
    ax.plot(t, lead, lw=0.6)
    keep = ann.sample[ann.sample < len(lead)]
    ax.plot(keep / rec.fs, lead[keep], "r.", ms=4)
    ax.set_title(name)
    ax.set_ylabel("mV")

axes[-1].set_xlabel("seconds")
fig.tight_layout()
fig.savefig("/tmp/mhd_7t02.png", dpi=150)
print("saved", fig.get_size_inches())

这段代码用的是第二条导联。选它是因为它在十二导体系里对应 II 导,R 波最明显,肉眼容易判断 QRS 位置是否与标注对齐。三条记录的横轴各自从零开始,长度不同,因此不要用共享横轴,否则短的那条会被拉长。

9.3 引用方式

官方要求两层引用:数据集本身,以及 2017 年的会议论文。BibTeX 可以直接照抄页面提供的题录,把版本号写进去,避免后续版本变化导致指向不明。

@article{PhysioNet-mhd-effect-ecg-mri-1.0.0,
  author  = {{Krug Passand}, Johannes W},
  title   = {{Influence of the MHD effect on 12-lead and 3-lead ECGs
             recorded in 1T to 7T MRI scanners}},
  journal = {{PhysioNet}},
  year    = {2021},
  month   = may,
  note    = {Version 1.0.0},
  doi     = {10.13026/05td-jn37}
}

@inproceedings{krug2017database,
  author    = {Krug, J. W. and Schmidt, M. and Rose, G. and Friebe, M.},
  title     = {A database of electrocardiogram signals acquired in
               different magnetic resonance imaging scanners},
  booktitle = {Computing in Cardiology},
  year      = {2017},
  pages     = {1--4}
}

若期刊要求标注许可,写明 Open Data Commons Attribution License v1.0,并说明对数据做了何种变换。许可要求署名,不要求同许可传播,这一点比不少医学数据集的限制更宽。

9.4 复现一份最小报告的四步检查

步骤 检查项 通过标准 常见失败
取数 清单行数与文件数一致 每条记录三个文件齐全 漏下 .qrs,只剩波形
解析 场强、体位、通道数正确 与头文件逐条对得上 正则漏掉分段数字
换算 幅度单位为毫伏 与原始整数除增益一致 直接比较原始整数
成组 同人同档位成组 组内仅体位不同 把不同人混成一组

四步里第三步最容易被跳过,因为它不影响画图,只影响结论。原始整数的量级在几千到几万之间,不同记录的增益又不同,直接比较会得出「某条记录幅度是另一条的三倍」这类错误结论。

§10 AI 使用声明

项目 声明
文本生成 本文由 AI 辅助撰写,结构与事实由编辑把关
数字来源 规模、结构、边界三类数字取自官方项目页、README、RECORDS 与头文件原文
文件核验 取回了 RECORDS、README、ANNOTATORS 与五条记录的头文件全文
头文件核验 逐行读取了 1T、3T、7T 各一条十二导记录与一条三导记录的头文件
未核验内容 未下载信号数据体做逐条统计,采样点数与时长以头文件声明为准
论文信息 只引用官方页面列出的会议论文题录,未取全文
差异披露 官方正文四十三条与清单五十三行、以及「多数受试者有参考记录」与十条舱外记录,均按两口径并列
图像 无配图;封面为生成式提示词,不含真实波形
免责 本文不构成临床建议;使用数据须遵守 ODC-BY 1.0 的署名要求

常见误读(避坑清单)

常见说法 实际 证据
这是心电与 MRI 同步记录的多模态数据 采集时不成像,全库无图像 官方方法段写明无梯度切换与射频发射
MHD 是某种成像序列的缩写 MHD 指磁流体动力学效应 官方摘要首句
库里有 43 条记录 正文写 43 条,清单列 53 行 项目页与 RECORDS 文件
每个受试者都有舱外参考心电 清单中舱外记录只有 10 条 RECORDS 逐行统计
三导记录就是十二导的前三个导联 三导是简化爱因托芬三角,另一台设备 头文件 ECG lead configuration 字段
注释包含心搏类型 只标 QRS 位置,不区分正常与异位 官方数据描述段与 ANNOTATORS
库里有 1.5T 数据 清单只有 1T、3T、7T;README 顺带提到 1.5T,但无对应记录 摘要、方法段与 RECORDS
同一编号在不同场强是同一个人 各档独立编号,官方无对应表 头文件人口学字段互不一致
可以直接拿来做深度学习训练 23 人 43 条,规模远低于训练需求 官方规模描述
参考心电与舱内记录是同一时刻 不同时刻,依赖平稳性假设 官方背景段

FAQ

Q1:这个数据集里的 MHD 到底是什么?
磁流体动力学(magnetohydrodynamic)效应的缩写。血液中的电解质在强静磁场里流动,受洛伦兹力偏转,在血管壁两侧形成电位差,叠加到心电信号上。它不是成像序列,也不是设备型号,而是一种物理现象。

Q2:它有 MRI 图像吗?能拿来做影像与心电的配对吗?
没有。采集时扫描仪只提供静磁场,不开启梯度与射频,因此一张图像都没有。任何需要影像与生理信号配对的任务都不能用它。

Q3:为什么采集时要不扫描?这不是失真了吗?
恰恰相反,不扫描是为了去掉另外两种干扰。真实扫描中心电上叠着梯度感应电压与射频干扰,三者混在一起无法归因;关掉成像后只剩 MHD 一种,因果关系才干净。代价是它不能代表真实扫描场景。

Q4:到底有多少条记录,43 还是 53?
官方正文与摘要写 43 条,RECORDS 清单逐行列名为 53 行。两个数字都出自官方,差额构成官方未说明。做统计时建议注明所用口径,做方法研究时影响不大。

Q5:舱外参考心电能不能直接当干净信号做逐拍相减?
官方设计允许这种用法,前提是信号平稳。参考记录与舱内记录不同时刻,中间隔着摆位与设备切换,心率与呼吸相位都可能漂移。直接相减会把心动周期的差异误当成 MHD 幅度,建议先做心率对齐并估计残差。

Q6:采样率和精度是多少?两种记录仪有什么区别?
全库 1024 Hz。十二导记录用十二位 ADC、正负六毫伏量程、0.05 至 100 赫兹模拟带宽;三导记录用二十四位 ADC、正负二点四毫伏量程,模拟带宽官方未标注。后者的量化更细但量程更窄。

Q7:能训练心律失常分类模型吗?
不能。受试者全部是无已知心脏病的健康青年,注释只有 QRS 位置,不区分正常搏动与异位搏动,也没有节律与诊断标签。它支撑检测与分离,不支撑分类。

Q8:1T 的数据为什么只有一个人?
官方没有解释。从方法描述看,1T 那台是已停产的开放式扫描仪,B0 垂直,与其余水平场机器不同,采集机会本就有限。使用时应把 1T 当作个案,而不是一个可统计的档位。

Q9:文件名的规则是什么?
ECGMRI 前缀加场强加两位受试者序号加体位码。体位码有五种:Hf 头先入、Ff 脚先入、Pro 俯卧、Sup 仰卧、Out 舱外。个别记录末尾多一位分段数字。

Q10:可以直接把它当训练集喂给网络吗?
不建议。二十三个人、四十几条记录,参数量稍大的模型会在一两轮内记住全部样本。它可以做验证集、消融实验与失败案例分析,训练应当另找大规模数据。

Q11:数据里有没有病人?
没有。全部是自愿参与的健康志愿者,来自马格德堡大学的学生与雇员,头文件逐条写明无已知心脏病。这一点在官方使用说明里被明确列为局限。

术语表

术语 英文或缩写 含义
磁流体动力学效应 MHD effect 导电流体在磁场中运动产生电位差的现象
洛伦兹力 Lorentz force 运动电荷在磁场中受到的力
霍尔电压 Hall voltage 离子在管壁两侧堆积形成的电位差
B0 B0 field 扫描仪的主静磁场
场强 field strength 静磁场的磁通密度,单位特斯拉
梯度场 gradient field 成像时用于空间编码的快速切换磁场
射频场 RF field 成像时用于激发的交变磁场
孔径 bore 扫描仪圆筒内部受试者所处的空间
头先入 head first (Hf) 受试者头部先进入孔径
脚先入 feet first (Ff) 受试者足部先进入孔径
俯卧 prone (Pro) 面朝下躺
仰卧 supine (Sup) 面朝上躺
舱外 outside (Out) 不在孔径内,作为参考记录
参考心电 reference ECG 无磁场条件下记录的对照心电
十二导 12-lead 标准诊断级导联体系,含肢体导联与胸导联
简化爱因托芬三角 reduced Einthoven triangle 只保留 I、II、III 三导的简化体系
QRS 波群 QRS complex 心室除极对应的波形,检测器的主要目标
注释 annotation 标记在采样点上的事件,本库只有 QRS
WFDB Waveform Database PhysioNet 的信号与注释存储格式
增益 gain 每个数字单位对应的物理量,本库单位为每毫伏
量程 input range ADC 可接受的最大输入电压范围
位宽 resolution ADC 的位数,决定量化台阶
逐拍相减 beat-to-beat subtraction 用参考记录减舱内记录的分离思路
门控 gating 用 QRS 触发成像采集时序的技术
循环平稳 cyclostationary 统计特性随时间周期性变化的过程

附录 A:核心数字核对表

项目 值 来源与来源层级
记录数(正文口径) 43 项目页摘要与方法段,官方页面
记录数(清单口径) 53 RECORDS 逐行,官方文件
受试者数 23 项目页方法段,官方页面
总时长 203 分钟 项目页方法段,官方页面
场强档位 1T、3T、7T 摘要与方法段,官方页面
采样率 1024 Hz 数据描述段与头文件,官方页面
十二导位宽 12 位 头文件注释块,官方文件
三导位宽 24 位 头文件注释块,官方文件
十二导量程 正负 6 mV 头文件注释块,官方文件
三导量程 正负 2.4 mV 头文件注释块,官方文件
模拟带宽 0.05 至 100 Hz 项目页方法段,官方页面
平均年龄 27.1 加减 3.2 岁 项目页方法段,官方页面
平均身高 181.7 加减 10.5 厘米 项目页方法段,官方页面
采集年份 2011 至 2017 项目页方法段与致谢,官方页面
未压缩体积 279.8 MB 项目页文件区,官方页面
压缩包体积 265.3 MB 项目页文件区,官方页面
许可 ODC-BY 1.0 项目页许可区,官方页面
版本 1.0.0 项目页标题区,官方页面

附录 B:数字的来源分层

层级 定义与本篇用到的项 可信度
第一层 官方页面正文直接写明:人数、条数、时长、场强、采样率、许可 高,可直接引用
第二层 官方文件逐行统计可得:清单 53 行、舱外记录 10 条、各档位构成 中高,须注明清单口径
第三层 头文件原文读出:设备型号、量程、位宽、受试者人口学 高,仅覆盖已读记录
第四层 由头文件推算:单条时长、三导与十二导的比例 中,推算过程需披露
第五层 官方未说明:跨档位对应、性别构成、分段原因 低,只能标未核实

附录 C:完整参考文献

  • Krug, J. W., & Rose, G.(2011). Magnetohydrodynamic distortions of the ECG in different MR scanner configurations. Computing in Cardiology, 769–772.
  • Krug, J. W., Rose, G. H., Stucht, D., Clifford, G. D., & Oster, J.(2012). Filtering the magnetohydrodynamic effect from 12-lead ECG signals using independent component analysis. Computing in Cardiology, 589–592.
  • Krug, J. W., Rose, G., Stucht, D., Clifford, G., & Oster, J.(2013). Limitations of VCG based gating methods in ultra high field cardiac MRI. Journal of Cardiovascular Magnetic Resonance, 15(1), 1–2.
  • Krug, J. W., Rose, G., Clifford, G. D., & Oster, J.(2013). ECG-based gating in ultra high field cardiovascular magnetic resonance using an independent component analysis approach. Journal of Cardiovascular Magnetic Resonance, 15(1), 1–13.
  • Schmidt, M., Krug, J. W., Gierstorfer, A., & Rose, G.(2014). A real-time QRS detector based on higher-order statistics for ECG gated cardiac MRI. Computing in Cardiology, 733–736.
  • Krug, J. W.(2015). Improved cardiac gating and patient monitoring in high field magnetic resonance imaging by means of electrocardiogram signal processing(博士论文). Otto-von-Guericke University Magdeburg.
  • Schmidt, M., Krug, J. W., & Rose, G.(2016). Real-time QRS detection using integrated variance for ECG gated cardiac MRI. Current Directions in Biomedical Engineering, 2(1), 255–258.
  • Haritopoulos, M., Krug, J., Illanes, A., Friebe, M., & Nandi, A. K.(2017). Cyclostationary analysis of ECG signals acquired inside an ultra-high field MRI scanner. EUSIPCO, 1300–1304.
  • Krug, J. W., Schmidt, M., Rose, G., & Friebe, M.(2017). A database of electrocardiogram signals acquired in different magnetic resonance imaging scanners. Computing in Cardiology, 1–4.
  • Passand, J. K., & Rose, G.(2019). Progress of MRI-guided EP interventions is hampered by a lack of ECG-based patient monitoring. BIOSIGNALS, 201–208.
  • Kinouchi, Y., Yamaguchi, H., & Tenforde, T. S.(1996). Theoretical analysis of magnetic field interactions with aortic blood flow. Bioelectromagnetics, 17(1), 21–32.
  • Krug Passand, J. W.(2021). Influence of the MHD effect on 12-lead and 3-lead ECGs recorded in 1T to 7T MRI scanners(1.0.0 版). PhysioNet. DOI: 10.13026/05td-jn37.

附录 D:任务代码

下面这段代码把「按场强统计记录数」与「按体位统计」两件事一次做完,用于核对正文里的分布表。

import re
from collections import Counter
from pathlib import Path

base = "https://physionet.org/files/mhd-effect-ecg-mri/1.0.0"
raw = Path("/data/mhd/RECORDS").read_text().split()
pat = re.compile(r"^ECGMRI(\d)T(\d{2})(Hf|Ff|Pro|Sup|Out)(\d?)$")

by_field, by_pos, out_names = Counter(), Counter(), []
for name in raw:
    m = pat.match(name)
    if not m:
        continue
    field, subj, pos, seg = m.groups()
    by_field[field] += 1
    by_pos[pos] += 1
    if pos == "Out":
        out_names.append(name)

print("total", sum(by_field.values()))
print("by field", dict(sorted(by_field.items())))
print("by position", dict(by_pos.most_common()))
print("outside refs", len(out_names), out_names[:3])

subjects = {(f, s) for f, s, _, _ in
            (pat.match(n).groups() for n in raw if pat.match(n))}
print("subject-field slots", len(subjects))

输出的四个数字可以直接与 §2.4 的两张表对照。若 total 与官方正文的四十三对不上,不要急着认定代码有错,先确认清单本身就是五十三行——这正是两口径的来源。

附录 E:如果只记五件事

  1. MHD 指磁流体动力学效应,是血流在静磁场里产生的霍尔电压叠加到心电上,不是成像序列。
  2. 采集时扫描仪不成像,只有静磁场,全库没有任何 MRI 图像;这个取舍换来了干净的物理归因。
  3. 二十三名健康青年、三档场强、五种体位、两种导联体系,全库 1024 Hz,QRS 手工标注。
  4. 官方正文写四十三条、清单列五十三行,舱外参考记录十条,两处不一致都要注明口径。
  5. 它是标尺不是样本:适合验证分离与检测方法,不适合训练分类模型,也不代表真实扫描场景。

编辑说明

核对于 2026 年 10 月 28 日完成。核对方式是直接访问 PhysioNet 项目页与版本目录,取回 README、RECORDS、ANNOTATORS 与五条记录的头文件全文,逐行读取后交叉比对。未下载数据体做逐条统计,单条时长由头文件声明的采样点数除以采样率推算,比例结构由清单逐行归类得出。论文部分只引用官方页面列出的题录,未取会议论文全文,因此论文与数据之间的对应关系仅依据官方致谢与参考文献列表。未覆盖的内容包括:跨档位受试者的同一人对应、性别构成汇总、3T09Ff 拆成三段的原因、官方所称后续版本的计划。这些均标为未说明。两处官方内部不一致——四十三条对五十三行、多数受试者有参考记录对十条舱外记录——按并列口径呈现,不作孰对孰错的判断。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • wctecgdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • ahadb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • chfdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • crisdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • cudb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • ltdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • ltstdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • iafdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • mvtdb — 共享标签:生理信号 / 心电信号 / 心血管疾病
  • nsrdb — 共享标签:生理信号 / 心电信号 / 心血管疾病

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集