五台设备同时测十三人 — 五设备同步生理库

13 名健康受试者 / 5 台设备同步 / 42413 条 R 峰标注

来源 https://physionet.org/content/simultaneous-measurements/1.0.2/发布时间: 2026-10-29最后更新: 2026-10-29 阅读 3
五台设备同时测十三人 — 五设备同步生理库

信息速览

数据集名称五台设备同时测十三人 — 五设备同步生理库
数据类型时序信号,波形,加速度,人工标注,多设备同步
规模13 名健康受试者 / 7 女 6 男
接入方式https://physionet.org/content/simultaneous-measurements/1.0.2/
AI 就绪度

一台手环在跑步时报出的心率,和一台心电贴片在同一时刻报出的心率,经常不是同一个数。差别可能来自算法——峰值检测的阈值、RR 序列的平滑窗口、丢搏后的插值策略;也可能来自物理层——电极材质、贴放位置、导线在摆臂时的牵拉。麻烦在于,如果没有第三台设备同时测着同一个人,你永远分不清差异出在哪一层。而可穿戴设备 validation 研究里最常见的做法恰恰是"先用 A 设备测一遍,再换 B 设备测一遍",两次之间隔着换衣服、重新贴电极、体位变化与几分钟的时间差,任何不一致都可以被合理地归因到受试者状态上去。

2017 年 12 月,德国多特蒙德工业大学的莱布尼茨劳动研究所里,13 名健康志愿者被同时挂上五台设备:三台临床认证设备 NeXus-10 MKII、eMotion Faros 360°、SOMNOtouch NIBP,加两台消费级产品 Hexoskin Hx1 与 Polar RS800 Multi。他们站上跑步机,依次完成五分钟静立基线、五分钟以 1.2 m/s 平地步行、五分钟站立不动的听觉 2-back 认知任务、五分钟 15% 坡度上坡行走。五台设备全程同时开着,记录同一颗心脏、同一段呼吸、同一次摆臂。

它的价值不在规模——13 个人、四段五分钟、处理后数据合计 427.80 分钟。价值全在"同步"两个字带来的对照能力:同一时刻的五路心电可以直接比形态,同一时刻的三轴加速度可以直接解释某一路信号为什么脏,8000 Hz 的 NeXus 通道可以给 256 Hz 的通道当 R 峰基准。它回答的不是"哪个设备准",而是"在什么条件下、以什么口径、准到什么程度"。一屏速览见下表。

维度 内容
全名 Simultaneous physiological measurements with five devices at different cognitive and physical loads
发布方 PhysioNet(数据由德国格赖夫斯瓦尔德大学、多特蒙德工业大学劳动研究所、耶拿大学医院团队贡献)
首次发布 2020 年 6 月 16 日,版本 1.0.0
最近改动 2023 年 1 月 18 日,版本 1.0.2,补充并引用原始论文
采集时间地点 2017 年 12 月,德国多特蒙德工业大学莱布尼茨劳动研究所
受试者数 13 名健康成年人,7 女 6 男
设备数 5 台:NeXus-10 MKII / eMotion Faros 360° / SOMNOtouch NIBP / Hexoskin Hx1 / Polar RS800 Multi
实验相位 4 段各 5 分钟:静立基线 / 平地步行 1.2 m/s / 听觉 2-back 认知 / 上坡步行 15% 坡度 1.2 m/s
原始信号 心电、光电容积描记、加速度、血氧饱和度、呼吸、呼吸率、心率、心率变异性、RR 间期、活动量、体位、踏板频率
原始采样率 1 Hz 到 8000 Hz 之间(各设备各通道不同,存于 EDF 头内)
处理后规格 每条记录 46 条信号,统一重采样到 256 Hz
处理后总时长 427.80 分钟,单条 29.18 分钟到 39.62 分钟
标注规模 42413 条 R 峰参考标注,单条 2377 到 4256 条
标注方式 人工逐条审阅对齐后的心电生成 R 峰参考;相位起点由 Faros 触发标记人工校正
文件格式 原始:EDF+C 与 Polar .hrm;处理后:WFDB(.dat / .hea / .atr / .aux)
体量 未压缩 1.7 GB,ZIP 压缩包 771.4 MB
许可 Creative Commons Attribution 4.0 International(CC BY 4.0),开放访问无需注册
典型用途 可穿戴心电一致性比对、噪声下的心搏检测、低采样率 R 峰校正、设备间心率与 HRV 差异、从心电或光电容积间接估呼吸

§1 它要解决的具体麻烦

1.1 可穿戴验证里那道过不去的归因墙

可穿戴设备的精度研究有一个结构性缺陷:自变量和因变量缠在一起。你想知道"设备 B 的心率算法在运动条件下差多少",做法通常是让受试者戴着 B 运动,同时用一台金标准设备做对照。但"运动条件下"这件事本身会同时劣化两端的信号——金标准设备的电极也在被牵拉,受试者的心律本身也在变。于是观测到的误差是三部分之和:B 的算法误差、B 的物理层误差、以及运动本身带来的生理波动。三者不可分。

要拆开这三者,唯一办法是让多台设备在同一时刻、同一体位、同一生理状态下测同一个人,并且让它们共享一个时间基准。这时某台设备出现偏差,就可以问:其它四台有没有同时出现?如果五台里只有一台偏了,问题在这台的算法或电极;如果五台一起偏,问题是生理或运动伪迹;如果五台偏的方式各不相同,那才是设备间一致性问题。

这个库就是为这件事造的。它的实验设计里最要紧的一句不是"五个设备",而是"同时"(simultaneously)。官方摘要明确把"in contrast to other studies, were recorded simultaneously"当作它的核心卖点。

1.2 四条常见的错误期待

第一条,期待它是"可穿戴设备的排行榜"。13 个人、四段五分钟,样本量只够做方法学对照和方法验证,不够给任何一款产品下排名结论。官方论文给的是形态学噪声信号比与 Smith-Waterman 比对的方法学框架,不是产品评测报告。

第二条,期待它是"临床级的心电数据库"。三台设备有临床认证,两台是消费级,受试者全是健康年轻人,实验里没有任何病理事件。它不能用来训练心律失常分类器,也不能做疾病预测。

第三条,期待处理后数据里还留着 8000 Hz。NeXus 从 x004 起确实把采样率提到了 8000 Hz,但那是原始 EDF 里的事。处理后的 .dat 全部非线性重采样到 256 Hz,8000 Hz 只在 raw_data 里存在。要拿高采样率当 R 峰基准,必须回原始文件。

第四条,期待五台设备的心电都是同一个导联配置。官方说 NeXus、SOMNOtouch、Faros、Hexoskin 测的都是标准三导联心电,但电极材质不同——Hexoskin 用纺织电极,其余用标准 Ag/AgCl 电极;Polar 不用电极测心电,而是用导电橡胶扁平电极的胸带识别心搏,输出 RR 间期。五路"心电"在物理上并不等价。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
设备间心电形态一致性比对 同一时刻四路滤波心电加一路 Polar RR 指示信号 够,这是设计目标
噪声下的心搏检测算法评测 四段负荷从静立到上坡,配三轴加速度 够,且噪声来源可追溯到加速度通道
低采样率 R 峰位置校正 8000 Hz NeXus 原始通道可作基准 够,但要回 raw_data
设备间心率与 HRV 差异 Faros / SOT / Hexoskin / Polar 各自的心率与 HRV 通道 够,注意各设备 HRV 的定义口径不同
从光电容积或心电间接估呼吸 Hexoskin 主动测呼吸(胸腹两路)作参考,SOT 有光电容积 够做方法学探索
日常活动长时程可穿戴分析 四段五分钟,实验室跑步机 不够,没有自由生活场景
心律失常检测训练 全部健康受试者 不够,无病理事件
疾病预测或预后建模 无随访、无结局、无检验值 不够,也不在设计范围内
大规模深度学习训练 13 人 / 427.80 分钟 不够,一两个 epoch 就能记全

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

你的处境 它能帮你什么 下一步该做什么
你在做腕式光电容积心率算法,想知道运动伪迹下掉多少 同一时刻有心电作真值、有加速度作协变量、有四段强度递进的负荷 按相位分段评估,别把静立段与步行段混在一起报一个数
你在校一台新设备的 RR 间期输出 五台同步,可用人工 R 峰参考标注作共同基准 用 .atr 作参照,注意 .atr 建在 256 Hz 对齐信号上
你想证明自己的 R 峰校正方法对低采样率有效 NeXus 原始 8000 Hz 与处理后 256 Hz 属同一次记录 从 raw_data 取 8000 Hz,与 generated_data 的 256 Hz 对齐后比较
你在做呼吸率估计,缺带呼吸真值的运动数据 Hexoskin 胸腹两路呼吸加呼吸率质量标记 用 breathing_rate_quality 先筛掉质量差的时段
你要写方法学论文,需要一个公开可复现的对照集 CC BY 4.0、DOI 稳定、有 SHA256SUMS 校验 引用 DOI 10.13026/wce5-fj54 与原始论文
你在选型采购,想知道买哪款 — 不适合,13 人不足以支撑产品排名

1.5 一句话判断

它不是"更大的可穿戴数据集",而是"唯一能把设备差异和运动伪迹分开的那把尺子"。作为五设备同步生理库,它的全部价值都压在同一时刻五路信号互为对照这件事上——正因为有这个对照,误差才第一次有了归因的可能。

1.6 不适合谁:四条边界

不适合做产品横向评测。 13 名健康受试者、单一实验室、单一跑步机、四段固定负荷。任何"某品牌更准"的结论在这个样本量上都是过度解读。

不适合做临床算法训练。 没有病人、没有病理事件、没有用药信息、没有结局变量。想做心电诊断相关的事,这个库帮不上忙。

不适合做自由生活场景研究。 全程在跑步机上,姿势、速度、坡度都是脚本化的。真实生活里的转身、上下楼、拿杯子、睡眠翻身都不在里面。

不适合只用 generated_data 就下结论。 处理后数据已经过对齐、非线性重采样、滤波与 z 分数归一,前四路心电的头文件单位字段是空的。任何涉及绝对幅度、绝对时间间隔、原始采样率的结论,都必须回 raw_data 复核。

§2 数据构成与规格

2.1 两套数据、两层抽象

库分两个目录,理解这两者的关系是使用的前提。

raw_data 是五台设备各自的原始导出,未经对齐。SOMNOtouch、NeXus、Faros、Hexoskin 各出一份 EDF+C 文件,用 edf-anonymize 做过匿名化,包含静立期之前数分钟的完整记录;Polar 出一份设备私有的 .hrm 文件,内容是 RR 间期(毫秒)。文件名规则是 x001 到 x013 的受试者编号加设备后缀 FAROS、NEXUS、SOT、HX、POLAR,例如 x004_NEXUS.edf、x004_POLAR.hrm。

generated_data 是把五份原始文件合并之后的产物。官方说明了处理链:按 Vollmer 等人 2019 年发表的方法做时间对齐(用静息期的心搏在五台设备间找相似模式),再把不正确、不稳定的采样率通过非线性重采样统一到 256 Hz 的目标采样率;Polar 的 RR 间期被转成指示函数并经过同样的同步步骤,因此 Polar 的信息在合并文件里表现为一条独立信号。随后人工逐条审阅对齐后的全部心电,生成 R 峰参考标注。Faros 的触发按钮时间戳经过人工检查,并结合运动传感器与心率上升沿重新定位四个实验相位的起点。

两层的关系可以这么记:raw_data 保真但不对齐,generated_data 对齐但不保真。

维度 raw_data generated_data
文件数 每受试者 5 个,合计 65 个 每受试者 4 个,合计 52 个
格式 EDF+C(4 台)、Polar .hrm(1 台) WFDB:.dat / .hea / .atr / .aux
时间对齐 否,各设备独立时钟与起点 是,统一到同一时间轴
采样率 各通道不同,1 Hz 到 8000 Hz 统一 256 Hz
记录范围 含静立期之前数分钟的完整记录 裁剪后的分析区段
单位保真 保留 EDF 内的物理单位 前四路心电已 z 分数归一,单位字段为空
典型体积 单个 EDF 2.3 MB 到 80.6 MB,.hrm 13.2 KB 到 28.5 KB .dat 39.3 MB 到 53.4 MB,.hea 3.1 KB

2.2 五台设备的角色分工

设备 厂商与国别 定位 电极与测量方式 在合并文件中的前缀
NeXus-10 MKII Mind Media B.V.,荷兰 临床认证 标准 Ag/AgCl 电极,三导联心电 NEXUS
eMotion Faros 360° Mega Electronics Ltd.,芬兰 临床认证 标准 Ag/AgCl 电极,三导联心电 FAROS
SOMNOtouch NIBP SOMNOmedics GmbH,德国 临床认证 标准 Ag/AgCl 电极,三导联心电 SOT
Hexoskin Hx1 Carré Technologies Inc.,加拿大 消费级 纺织电极,三导联心电 HEXOSKIN
Polar RS800 Multi Polar Electro Oy,芬兰 消费级 导电橡胶扁平电极胸带,识别心搏输出 RR 间期 POLAR

官方在方法部分特意点明了电极差异:只有 Hexoskin 用纺织电极,其余三台测心电的用标准 Ag/AgCl 电极;Polar 不输出波形,只输出已识别心搏的 RR 间期。这个差异是后面所有"设备间不一致"研究的物理基础——同一次心搏,四路是电压随时间的波形,一路是已经过厂商内部算法处理的间期序列,两者不在同一个证据层级上。

原始 EDF 内各设备记录的通道(官方列出的通道名保留原文拼写):

设备 原始 EDF 内通道
NeXus-10 MKII 心电 Sensor-B:EEG / Sensor-B:EKG、心率变异性 [B] HRV Amp.、EDF Annotations
eMotion Faros 360° 心电 ECG、三轴加速度 Accelerometer_X/Y/Z、按钮标记 Marker、心率变异性 HRV、设备内部温度 DEV_Temperature
SOMNOtouch NIBP 电池 Akku、心电 EKG / EKG 1 / EKG2 / EKG 3 / aVL / aVR / aVF、血氧 SpO2、光电容积 Pleth、活动与加速度 Aktivitt、体位 Krperlage、脉搏 Puls、EDF Annotations
Hexoskin Hx1 心电 4113:ECG_I、心率 19:heart_rate、呼吸率 33:breathing_rat、呼吸 4129:resp_thorac / 4130:resp_abdomi、活动 49:activity、三轴加速度 4145:accel_X / 4146:accel_Y / 4147:accel_Z、踏板频率 53:cadence、EDF Annotations
Polar RS800 Multi RR 间期(毫秒),存于设备私有 .hrm 文件

官方还留了一条容易踩坑的注记:x001 到 x003 三份 NeXus EDF 里,心电通道名叫 Sensor-B:EEG(标成了脑电),是实验过程中纠正过来的;同时 x004 到 x013 的采样率从 256 Hz 提高到 8000 Hz。所以这三份文件既不能靠通道名检索心电,也没有高采样率。

2.3 四个实验相位:一段脚本化的负荷阶梯

顺序 相位 时长 条件 生理含义
1 静立基线(Rest) 5 分钟 直立站在跑步机上不动 静息基线,运动伪迹最小
2 平地步行(Walking) 5 分钟 跑步机 1.2 m/s 稳态有氧负荷,周期性步态伪迹
3 听觉 2-back(2-Back) 5 分钟 站立不动完成听觉 n-back 任务 认知负荷,运动伪迹回到静息水平
4 上坡步行(Running) 5 分钟 跑步机 15% 坡度、1.2 m/s 更高负荷,伪迹与心率同时上升

相位起点的标记存在 .aux 文件里,来自 Faros 的按钮触发并经过人工校正。官方给出的用法示例读出的注释形如 FAROS_Marker/Rest、FAROS_Marker/Walking、Manual/Walking、FAROS_Marker/2-Back、Manual/Running——带 FAROS_Marker/ 前缀的是设备触发,带 Manual/ 前缀的是人工修订,两者并存时以 Manual/ 为准。注意第三相位的官方标记写作 2-Back,第四相位在标记里写作 Running 而在正文里描述为上坡步行,检索时要两个名字都认。

设计上的巧妙之处在第二与第三相位的对照:两者的运动强度一高一低,但认知负荷一低一高。如果想分离"运动伪迹"与"认知应激"对某路信号的影响,这两段是唯一的抓手。

2.4 合并记录的信号字典

处理后的一条记录声明 46 条信号、256 Hz。x001 与 x004 的头文件都给出这一规格。信号名采用"设备前缀 / 通道名"的写法,前缀即来源设备,因此不看文档也能知道每一路出自哪台。

设备前缀 信号条数 代表通道 单位(头文件字段)
SOT(SOMNOtouch) 15 EKG_filtered、EKG / EKG 1 / EKG2 / EKG 3 / aVL / aVR / aVF、SpO2、Pleth、Puls、Aktivitt、Krperlage、Akku 心电微伏、血氧百分比、加速度毫克、体位(position)、脉搏 bpm、电池毫伏
HEXOSKIN 18 ECG_I_filtered、ECG_I、heart_rate、breathing_rate、respiration_thoracic / respiration_abdominal、minute_ventilation、tidal_volume、cadence、activity、acceleration_X/Y/Z、heart_rate_quality、breathing_rate_quality 心率 bpm、呼吸率、潮气量、踏板频率等,部分通道单位字段为空
FAROS 8 ECG_filtered、ECG、Accelerometer_X/Y/Z、HRV、Marker、DEV_Temperature 心电微伏、加速度毫克、HRV 毫秒、温度摄氏度
NEXUS 4 Sensor-B:EEG_filtered、Sensor-B:EKG、[B] HRV Amp.、EDF Annotations 心电微伏、HRV 幅值微伏
POLAR 1 RR_filtered 单位字段为空(已转为指示函数)

三条结构性的观察值得单独指出。

其一,文件里前四路是四台设备的预处理心电(SOT、FAROS、NEXUS、HEXOSKIN),官方明确说这四路经过了裁剪滑动平均滤波与 z 分数归一化。这解释了为什么它们的头文件单位字段是空的——它们已经不是物理量,而是无量纲的归一波形。想做幅度相关的分析,请用各自的原始通道(如 SOT/EKG、FAROS/ECG、NEXUS/Sensor-B:EKG、HEXOSKIN/ECG_I),它们的单位字段写着微伏。

其二,Polar 只有一条信号 RR_filtered,因为 Polar 本来就不输出波形。它经过与其余通道相同的同步步骤后变成指示函数。这意味着"用五台设备比心电形态"这句话在实践中只能四台参与,Polar 用来比间期。

其三,SOMNOtouch 的部分通道名丢了德文变音符号,写作 Aktivitt(应为 Aktivität)、Krperlage(应为 Körperlage)。这是 EDF 通道名在跨编码传递时的常见损伤,检索时不要按正确拼写去找。

2.5 一条记录的完整解剖

以 x004 为例。头文件第一行是 x004 46 256 468928:记录名 x004,46 条信号,256 Hz,共 468928 个采样点。468928 ÷ 256 = 1831.75 秒,约 30.5 分钟。x001 的同一行是 x001 46 256 575104,即 2246.5 秒,约 37.4 分钟。两条记录长度不同,是因为原始记录长度不同,处理后只做对齐与裁剪,不补齐到统一长度。

信号行的通用格式为"文件名 格式 增益(基线)/单位 位分辨率 块大小 ADC 零值 初始值 校验和 信号名"。以 x004 的第一路为例:

x004.dat 16 1184.0668(-15717)/ 0 0 -15356 26334 0 SOT/EKG_filtered

从右往左读:信号名 SOT/EKG_filtered;块大小 0(由工具自动按 46 条 16 位信号算帧长);校验和 26334;初始值 -15356;ADC 零值 0;块大小 0;位分辨率 0;单位为空(因为已归一);基线 -15717;增益 1184.0668;存储格式 16(16 位带符号整数);信号文件 x004.dat。

增益逐通道不同,且原始通道与滤波通道的量级差别很大。x004 里 SOT/EKG 的增益是 10.9661(微伏),而 SOT/EKG_filtered 是 1184.0668(无量纲)。这说明"直接把整数喂进模型"在这里是错的——不同列的整数根本不在同一量纲上。正确做法是按头文件换算成物理量,或至少明确知道自己用的是归一通道还是原始通道。

读取一条记录的最小代码:

import wfdb

#-- 远程直读,无需先下载;pn_dir 指向 PhysioNet 上的库名与版本目录
rec = wfdb.rdrecord('x004', pn_dir='simultaneous-measurements/1.0.2/generated_data')
ann = wfdb.rdann('x004', 'atr', pn_dir='simultaneous-measurements/1.0.2/generated_data')

print(rec.fs, rec.sig_len, len(rec.sig_name))   #-- 256 468928 46
print(rec.sig_name[:6])                          #-- 前六条信号名,前四路为滤波心电
print(ann.sample[:5], ann.symbol[:5])            #-- R 峰位置与类型

#-- 按相位切段:先读 aux 拿到四段起点
aux = wfdb.rdann('x004', 'aux', pn_dir='simultaneous-measurements/1.0.2/generated_data')
for t, c in zip(aux.sample, aux.aux_note):
    print(t, t / rec.fs, c)

rec.p_signal 是按增益与基线换算过的浮点物理值;rec.d_signal 是原始整数。ann.sample 是采样点序号,除以 256 得秒数。aux.aux_note 里装的就是相位名,例如 FAROS_Marker/Rest、Manual/Walking。

2.6 与同类资源的字段差异

维度 本库 MIT-BIH 心律失常库 日常活动光电容积类库
核心价值 多设备同一时刻互为对照 心搏类型的标准基准 自由生活场景下的信号
受试者 13 名健康人 住院与门诊混合人群 一般为健康志愿者
心电通道来源 4 台设备各一路 2 通道 通常无心电信道
是否同时多设备 是,5 台 否 通常 1 到 2 台
加速度 3 台设备各三轴 无 一般有
呼吸真值 Hexoskin 胸腹两路 无 少数有
标注对象 R 峰位置 心搏位置与类型 多为参考心率
场景 实验室跑步机脚本化 临床静息 日常自由活动

差异的核心在于:别的库在比"信号与标签",这个库在比"信号与信号"。它天然不是一个分类基准,而是一个一致性基准。

这句话还有一层实操含义。用分类基准类的数据时,你的工作流是"取信号、取标签、训练、报分";用一致性基准类的数据时,工作流变成"定时间窗、取多路同源信号、定义比对口径、报告差异的构成"。后者没有现成的评测脚本,因为差异的口径要自己定:是比 R 峰位置的绝对偏差,还是比 RR 间期序列的局部比对得分,还是比形态学噪声信号比。官方原始论文选了后两种,并各自给出了定义。你完全可以选别的口径,但必须在论文里写清楚,否则结果无法与任何既有工作比较。

§3 它是谁的数据

3.1 贡献者与机构

五位作者分属四个机构,分工在官方背景段里写得很清楚。

作者 机构 角色
Dominic Bläsing 德国格赖夫斯瓦尔德大学心理研究所 主要研究者,与 Reiser 共同设计实验方案
Julian Elias Reiser 多特蒙德工业大学莱布尼茨劳动研究所(IfADo) 共同设计实验方案,提供实验场地
Marcus Vollmer 格赖夫斯瓦尔德大学医学院生物信息学研究所;DZHK 格赖夫斯瓦尔德站点 负责数据处理
Maria Nisser 耶拿大学医院 作者
Anja Buder 耶拿大学医院物理治疗研究所 作者

这是一支典型的"人体工效学加生物信息学"组合:实验设计的know-how 来自劳动研究所与心理研究所,信号处理的 know-how 来自生物信息学研究所。这解释了库的两个特征——实验相位设计得非常规整(这正是工效学实验的传统),而预处理链写得非常工程化(对齐、非线性重采样、指示函数变换,都指向信号处理方法学)。

经费来自德国联邦教育与研究部的 Montexas4.0 项目(编号 02L15A261,资助 Bläsing),以及德国心血管研究中心 DZHK 格赖夫斯瓦尔德站点的差旅资助(资助 Vollmer)。

3.2 时间线

时间 事件
2017 年 11 月 30 日 格赖夫斯瓦尔德大学伦理委员会批准(编号 BB 171/17)
2017 年 12 月 13 名受试者在多特蒙德完成采集
2019 年 对齐方法发表(Vollmer 等人,Computing in Cardiology)
2020 年 4 月 文件与 RECORDS、ANNOTATORS、传感器布置图写入平台
2020 年 6 月 16 日 版本 1.0.0 发布
2022 年 原始论文发表(Bläsing 等人,PLoS ONE)
2022 年 7 月 20 日 版本 1.0.1,修正 Hexoskin 通道量纲并补充伦理声明
2023 年 1 月 18 日 版本 1.0.2,补充并引用原始论文

注意一个时间错位:采集在 2017 年底,首版发布在 2020 年 6 月,而 2019 年的对齐方法论文与 2022 年的原始论文都早于或晚于发布节点。这三条时间线交叉说明数据是"边处理边发布"的,而不是一次性交付。

3.3 采集场景:一个刻意做薄的实验

实验环境控制得很紧。同一台跑步机、同一个实验室、同一套设备佩戴顺序、四段固定时长与固定参数。受试者全部健康成年人,7 女 6 男,签署书面知情同意,实验遵循赫尔辛基宣言。

“刻意做薄"是褒义。多设备同步采集的混杂因素本来就多,如果再叠加不同场地、不同操作者、不同佩戴顺序,数据就彻底没法用了。把场景压到最薄,换取的是设备间差异的可辨识度。代价是外部效度:这套数据能告诉你的东西,严格限定在"实验室跑步机上的健康年轻人”。

薄还体现在负荷的设计上。四段相位不是随意挑的,而是构成一个二乘二结构的变体:静立与步行构成运动强度的低高两档,步行与 2-back 构成认知负荷的低高两档。于是"运动伪迹"与"认知应激"两种效应可以在同一批人身上被部分分离——如果某路信号的误差只在步行段变大而 2-back 段不变,那是运动伪迹;如果只在 2-back 段变化,那是认知应激;如果两段都变,可能是心率水平本身的作用。这类归因在单设备数据里做不到,因为缺少同一时刻的参照。

3.4 数据来源的三个层次

第一层是设备厂商的导出格式。EDF+C 是欧洲数据格式带注释的变体,.hrm 是 Polar 私有格式。这一层还没有"数据集",只有五份互不相干的文件。

第二层是匿名化与对齐。edf-anonymize 抹掉了可识别信息,Polar 文件的日期字段被置为 2001-01-01、起始时间置为零点,只保留时长与 RR 序列。对齐与非线性重采样把五份文件拉到同一时间轴,这一步的处理细节写在 2019 年的方法论文里。

第三层是人工标注。R 峰参考标注是人工逐条审阅对齐后的全部心电视图生成的,不是某一台设备的算法输出——这一点很关键,它意味着标注在原则上不偏向任何一台设备。相位起点标记来自 Faros 按钮,但经过人工结合运动传感器与心率上升沿重新定位,因此同时保留了原始与修订两套标记。

§4 它最独特的东西

4.1 "同时"这两个字为什么稀缺

多设备生理数据集并不罕见,罕见的是真的同时测。绝大多数公开资源是"多设备、不同时"——每台设备各测一段,或者同一次实验里设备分批佩戴。这类数据无法支撑设备间一致性研究,因为不同时间点的生理状态本身就在变。

要做到真同步,需要解决三件麻烦事:物理上,五套电极要贴在一个人身上互不干扰,还要找得到各自的位置;时间上,五台设备各有各的时钟与起点,必须建立共同时间轴;采样上,各设备采样率从 1 Hz 到 8000 Hz 不等,且部分设备的采样率并不稳定。官方提到的"校正不正确、不稳定的采样频率"这一句,指向的正是第三件——有些设备标称采样率和实际采样率有偏差,需要非线性重采样修正。

层次 不同步的数据集 本库
时间对齐 靠实验记录或事后估计 心搏模式匹配加非线性重采样,对齐到 256 Hz
生理状态 两次测量间受试者状态已变 同一时刻,状态共享
运动伪迹 无法判定是否同时发生 三轴加速度给出同时记录
真值 需要额外金标准设备 四路心电互为交叉验证,外加人工 R 峰参考

4.2 五个官方给出的用法,以及它们的含金量

官方在使用背景里列了四类用法,逐条看它们分别需要什么。

在噪声信号上研究心搏检测与分割。 这是最直接的用法:四段负荷从静立递进到上坡,加速度通道给出了伪迹的独立测量,而人工 R 峰参考标注是建立在全部可用信号基础上的可靠真值。含金量最高,因为它同时解决了"真值"和"噪声解释"两件事。

比较各设备的心率、HRV 与加速度测量。 可行,但要注意口径。各设备的 HRV 通道含义不同——Faros 的 HRV 单位是毫秒,NeXus 的 [B] HRV Amp. 单位是微伏,Hexoskin 与 SOT 给的是心率而不是 HRV 序列。把它们当成同一指标直接比,是错的。正确做法是从 RR 序列重算指标,或明确写出各设备 HRV 的定义。

研究低采样率心电的 R 峰位置校正。 这是本库最独家的用法:NeXus 从 x004 起以 8000 Hz 采样,可以给 256 Hz 通道当 R 峰基准。但如前所述,8000 Hz 只在 raw_data 里,需要自己把原始 EDF 与处理后 .dat 对齐。官方明确给了这句话:“NeXus-10 MKII ECG sensor sampled at 8000 Hz can serve as the ground truth for R peak annotations.”

研究呼吸与光电容积、心电、加速度的相互作用。 Hexoskin 主动测呼吸(胸腹两路加呼吸率与潮气量),SOT 有光电容积,四路心电可用。可以做"从光电容积或心电间接估呼吸"的方法学验证,用 Hexoskin 作参考。注意 heart_rate_quality 与 breathing_rate_quality 两个质量通道要先看。

4.3 案例:一条记录里能看到什么

以 x004 为例走一遍,可以看清数据到底长什么样。

观察项 值 说明
记录名 x004 第 4 号受试者
信号条数 46 五台设备合并后的总通道数
统一采样率 256 Hz 处理后的目标采样率
采样点数 468928 约 1831.75 秒
前四路 SOT / FAROS / NEXUS / HEXOSKIN 的滤波心电 已归一,单位字段为空
第五路 POLAR/RR_filtered Polar 的 RR 指示函数
心电原始通道 SOT/EKG、FAROS/ECG、NEXUS/Sensor-B:EKG、HEXOSKIN/ECG_I 单位微伏,可从这里取物理量
相位标记 .aux 内 5 条注释 如 FAROS_Marker/Rest、Manual/Walking
加速度 FAROS 三轴、HEXOSKIN 三轴、SOT Aktivitt 三套独立测量
呼吸 HEXOSKIN 胸腹两路加呼吸率、潮气量、分钟通气量 主动测量,可作参考真值

一条记录里同时装着四路心电、一路间期序列、三套加速度、一路主动呼吸、光电容积、血氧、体温、体位与踏板频率,全部对齐在同一时间轴上。这就是它的全部吸引力——不是某一条通道多好,而是这些通道凑在一块,且每一条都能追溯到具体是哪台设备。

4.4 标注的粒度:R 峰清楚,其余靠推

ANNOTATORS 文件只有两行,把标注的角色定义得很干净:

扩展名 官方定义 内容
atr manually revised consensus beat annotations 人工修订的一致性心搏标注,共 42413 条
aux faros markers and manually revised markers for the start of each experimental phase Faros 按钮标记与人工修订的相位起点

也就是说,库里只有两类人工标注:R 峰位置,和四个相位的起点。没有心搏类型标注,没有节律标注,没有噪声段标注,没有逐通道质量标注(设备自带的质量通道除外)。

想要"运动段的噪声强度"这类标签,得自己从加速度通道或信号本身构造;想要"这一段是不是上坡",可以直接从 .aux 拿;想要"这次心搏是不是异常",这个库给不了——受试者全是健康人。

标注总量 42413 条,单条记录 2377 到 4256 条。这是官方直接给出的规模数字,也是这个库唯一可以放心引用的标注类统计量。

4.5 边界条件:什么情况下它不再适用

一旦离开跑步机就失效。 所有结论的外推范围止于实验室跑步机上的健康成年人。

一旦要求绝对精度就失效。 处理后数据经过非线性重采样与滤波,前四路心电已 z 分数归一。涉及绝对幅度与精确时间间隔的问题必须回原始数据。

一旦要求病理多样性就失效。 13 名健康受试者,没有一例病理事件。

一旦要求大样本就失效。 42413 条心搏听起来不少,但来自 13 个人,个体间方差远大于设备间方差的风险很高。任何统计推断都必须以受试者为随机效应单位,而不是以心搏为单位。

§5 怎么拿到

5.1 目录结构

simultaneous-measurements/1.0.2/
├── ANNOTATORS            136 B    2020-04-21   #-- 两个注释文件的角色定义
├── LICENSE.txt           14.5 KB  2023-01-18   #-- CC BY 4.0 全文
├── README.md             1.9 KB   2020-04-09   #-- 实验与设备速览
├── RECORDS               1.7 KB   2020-04-22   #-- 13 条处理后记录 + 65 个原始文件
├── SHA256SUMS.txt        10.5 KB  2023-01-18   #-- 全量校验和
├── sensor_placement.png  75.6 KB  2020-04-14   #-- 传感器佩戴位置示意图
├── raw_data/                                   #-- 65 个文件:13 人 × 5 设备
│   ├── x001_FAROS.edf / x001_HX.edf / x001_NEXUS.edf / x001_SOT.edf
│   ├── x001_POLAR.hrm
│   └── ... 直至 x013
└── generated_data/                             #-- 52 个文件:13 人 × 4 类
    ├── x001.dat (50.5 MB) / x001.hea (3.1 KB)
    ├── x001.atr (7.7 KB)  / x001.aux (174 B)
    └── ... 直至 x013

RECORDS 同时列出两类记录:13 条 generated_data/x001 形式的处理后记录,和 65 个 raw_data/x001_FAROS.edf 形式的原始文件。用 wfdb 批量遍历时要注意它是混合清单,不能假定每一行都是一个 WFDB 记录。

根目录的 sensor_placement.png 是传感器佩戴位置示意图,做多设备电极布置复现时值得先看一眼。

5.2 批量下载

官方给出四条下载路径。全量未压缩 1.7 GB,ZIP 压缩包 771.4 MB。

#-- 方式一:PhysioNet Python 包(推荐,可只取子目录)
physionet download simultaneous-measurements --version 1.0.2

#-- 方式二:wget 递归
wget -r -N -c -np https://physionet.org/files/simultaneous-measurements/1.0.2/

#-- 方式三:AWS 命令行(免签名,适合云端直取)
aws s3 sync --no-sign-request s3://physionet-open/simultaneous-measurements/1.0.2/ DESTINATION

#-- 方式四:只取处理后数据,用 -I 限定扩展名,体积可降一个量级
wget -r -N -c -np -A "*.hea,*.atr,*.aux" \
     https://physionet.org/files/simultaneous-measurements/1.0.2/generated_data/

第四种方式值得强调:.hea 3.1 KB、.atr 4.7 到 8.3 KB、.aux 168 到 276 B,13 人加起来远小于 1 MB。做相位分析或标注统计时完全不需要下 .dat。

5.3 流式读取与只取片段

.dat 单文件 39.3 到 53.4 MB,本地跑实验可以直接全读;远程跑则应按区间读。

import wfdb
import numpy as np

base = 'simultaneous-measurements/1.0.2/generated_data'

#-- 先读头文件,不下载信号本体
hdr = wfdb.rdheader('x004', pn_dir=base)
name_to_idx = {n: i for i, n in enumerate(hdr.sig_name)}
print(hdr.fs, hdr.sig_len, len(hdr.sig_name))

#-- 只取第 300 到 360 秒,四路原始心电(非滤波通道)
want = ['SOT/EKG', 'FAROS/ECG', 'NEXUS/Sensor-B:EKG', 'HEXOSKIN/ECG_I']
cols = [name_to_idx[n] for n in want]
lo, hi = 300 * hdr.fs, 360 * hdr.fs
rec = wfdb.rdrecord('x004', pn_dir=base, channels=cols,
                    sampfrom=lo, sampto=hi, physical=True)
print(rec.p_signal.shape, rec.units)      #-- 单位应为微伏

physical=True 让 wfdb 按增益与基线换算出物理量。若省略,拿到的是 16 位整数,各通道量纲不可比。

5.4 转成通用表结构

合并记录是 46 列宽表,转成长表或直接转 DataFrame 都可以,但要保留设备前缀。

import wfdb
import pandas as pd

base = 'simultaneous-measurements/1.0.2/generated_data'
rec = wfdb.rdrecord('x004', pn_dir=base, physical=True)

df = pd.DataFrame(rec.p_signal, columns=rec.sig_name)
df.insert(0, 't_sec', np.arange(rec.sig_len) / rec.fs)

#-- 按设备前缀分组,便于批量处理
dev = pd.Series(rec.sig_name, name='signal').str.split('/').str[0].rename('device')
print(pd.concat([dev, pd.Series(rec.units, name='unit')], axis=1).to_string())

#-- 只落盘需要的列,46 列全写会非常大
df[['t_sec'] + list(df.columns[df.columns.str.startswith('FAROS/')])] \
    .to_parquet('x004_faros.parquet', index=False)

转成表是有损操作:头文件里的增益、基线、单位、ADC 零值会被压进列头或丢失。如果后续还要回到原始语义,务必同时保留 .hea。

5.5 相位标记与 R 峰标注的读取

.aux 里同时有设备触发与人工修订两套标记,aux_note 字段给出名字。

import wfdb

base = 'simultaneous-measurements/1.0.2/generated_data'
rec = wfdb.rdrecord('x004', pn_dir=base)
ann = wfdb.rdann('x004', 'atr', pn_dir=base)
aux = wfdb.rdann('x004', 'aux', pn_dir=base)

#-- 相位起点:优先取 Manual/ 前缀
phases = {}
for t, note in zip(aux.sample, aux.aux_note):
    tag = note.split('/')[-1]
    if note.startswith('Manual/') or tag not in phases:
        phases[tag] = t
print({k: round(v / rec.fs, 2) for k, v in sorted(phases.items(), key=lambda x: x[1])})

#-- R 峰:ann.sample 为采样点,符号为心搏类型
print(ann.ann_len, ann.sample[:5], ann.symbol[:5])

.atr 的 ann_len 就是这条记录的心搏标注条数,13 条加起来是官方给出的 42413 条。注意标注建在 256 Hz 的对齐信号上,因此其时间分辨率上限就是 256 Hz 的采样间隔,用来评估亚采样级精度会碰到天花板。

5.6 五个最容易出错的地方

坑 现象 正确处理
把滤波心电当物理量 前四路信号单位字段为空,数值在正负几之间 要物理量就取 SOT/EKG、FAROS/ECG 等原始通道,单位为微伏
直接比各设备 HRV Faros 单位是毫秒,NeXus 是微伏,含义不同 从 RR 序列重算,或明确写出各设备定义
以为 8000 Hz 在 .dat 里 处理后统一 256 Hz 回 raw_data/x004_NEXUS.edf 及之后的 NeXus 文件
按通道名找心电 x001 到 x003 的 NeXus 通道名叫 Sensor-B:EEG 检索时同时匹配 EKG 与 EEG
把 13 人当 42413 个独立样本 心搏间高度相关 统计推断以受试者为随机效应单位

§6 与库内条目的关系

6.1 关系图谱

相关数据集 关系 分工判据
ppg-dalia 同为运动条件下的可穿戴光电容积,有加速度参考 要自由生活场景与更长时间,用 ppg-dalia;要多设备互比,用本库
mit-bih-arrhythmia 心搏标注的标准基准 要心搏类型与病理多样性,用 MIT-BIH;要设备一致性,用本库
wearable-exam-stress 同样关注可穿戴与心理应激 要应激场景的分析口径,看该库;要物理层对齐,用本库
consumer-grade-wearables 同为消费级可穿戴评测 要消费设备之间的横向对比,看该库
accelerometry-walk-climb-drive 同有三轴加速度与脚本化动作 要动作识别,看该库;要用加速度解释生理信号伪迹,用本库
wearable-device-dataset 同为多设备可穿戴数据 先看其设备构成与本库是否互补
ecg-capable-smartwatches 同为主题为心电可穿戴设备 要设备侧的心电能力评测,看该库
pulse-transit-time-ppg 同为光电容积派生指标 要脉搏波传导时间,看该库
treadmill-exercise-cardioresp 同为跑步机上的心肺数据 要运动生理的剂量反应关系,看该库
neuro-stress-resilience-hci 同为人因与应激的生理测量 要认知负荷与神经层面指标,看该库

6.2 检索路径

从"我想知道某台设备准不准"出发,路径是:先确认你要的是设备间一致性还是设备对真值的偏差。前者只有本库能答(多设备同步);后者需要带金标准的库。

从"我要训练一个心搏检测器"出发,路径是:本库能提供给你的只有 42413 条 R 峰位置与四路同步心电,作为小规模方法验证可以,作为训练集不够。去 MIT-BIH 心律失常库取数据与类型标签,再回本库做噪声条件下的外测。

从"我要做呼吸率估计"出发,路径是:本库有 Hexoskin 主动呼吸作参考,四段负荷提供了从静立到上坡的呼吸变化,是一个干净的方法学验证集。

6.3 与其它库的分工判据

判据 选本库 选其它
需要多设备同一时刻 是 否
需要病理事件 否 是
需要长时程自由生活 否 是
需要人工 R 峰真值 是(42413 条) 视库而定
需要心搏类型标注 否 是
需要高采样率心电 是(原始 8000 Hz) 多数库为 250 到 500 Hz
需要加速度解释伪迹 是(三套独立三轴) 部分库有单套

§7 质量评估与局限性

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

评价这个库不能用"数据量"这把尺子。13 人、427.80 分钟、42413 条标注,在任何以规模论英雄的排行榜上都会被判为小库。但它的设计目标从来不是规模,而是可归因性。用规模标准评价它,等于用载重评价一把游标卡尺。

7.1 五维评分

维度 评价 依据
时间对齐质量 强 有专门方法论文支撑,非线性重采样到统一 256 Hz
标注可靠性 强 R 峰为人工逐条审阅,且不偏向任一设备
场景控制 强 同一跑步机、同一顺序、四段固定参数
规模 弱 13 人、四段五分钟
人群多样性 弱 全部健康成年人,单一国家、单一实验室

五维里两强一强两弱,结论很清楚:方法学验证用它是合适的,统计推断与泛化研究用它是不合适的。

7.2 标注质量的两层

第一层:R 峰位置。 这是人工逐条审阅对齐后全部心电视图生成的,官方措辞是"manually screening the aligned ECG in its entirety",即完整通览而非抽样。可信度最高的一层。但它建在 256 Hz 的对齐信号上,所以位置精度受 256 Hz 采样间隔限制,不能用来评估亚采样级算法。

第二层:相位起点。 来自 Faros 按钮触发,经人工结合运动传感器与心率上升沿重新定位。两套标记并存,人工修订版更可靠,但修订的判据(运动传感器加心率上升沿)本身是间接的,不是视频或事件日志。

没有第三层。库里不存在心搏类型、节律、噪声段或逐通道质量的标注。设备自带的 heart_rate_quality、breathing_rate_quality 是设备固件输出的质量位,不是人工标注。

7.3 已知的、可枚举的偏差

设备层级偏差。 四路心电不是同一物理测量:Hexoskin 走纺织电极,其余走 Ag/AgCl;Polar 根本不是心电波形而是 RR 间期。把它们当成四台等价的心电仪来比,方法上就是错的。

预处理偏差。 前四路心电经过裁剪滑动平均滤波与 z 分数归一,抹掉了绝对幅度信息。任何依赖幅度的方法(如基于幅值的质量检测)都不能直接用这四路。

采样率偏差。 8000 Hz 只覆盖 x004 到 x013 的 NeXus。x001 到 x003 是 256 Hz,且通道名错标为 Sensor-B:EEG。前三条与后十条在 NeXus 这一路上不是同一种数据。

长度偏差。 处理后单条 29.18 到 39.62 分钟不等,来源长度不同(原始总长 2577.68 分钟,处理后 427.80 分钟)。做跨受试者对比时要注意每段相位的绝对时长是否一致。

版本偏差。 1.0.0 到 1.0.1 之间修正了 Hexoskin 通道的量纲(例如 heart_rate 改为 bpm),所有 .dat 与 .hea 都随之更新。引用 1.0.0 的旧结果可能与 1.0.2 的数值不可直接比较。

7.4 外部验证矩阵

用途 本库能否承担 说明
心搏检测算法的噪声鲁棒性测试 能 四段负荷加人工 R 峰真值
设备间 RR 一致性评估 能 这是原始论文的用法
低采样率 R 峰校正方法验证 能 需回原始 8000 Hz 通道
呼吸率间接估计验证 能 Hexoskin 主动呼吸作参考
心律失常分类训练 不能 无病理事件
人群层面的心率参考值 不能 13 人,非概率样本
产品性能排名 不能 样本量与场景都不支持

7.5 它为何能持续:稀缺的不是数据量,是那个组合

多设备同步这件事,做一次的成本远高于做五次单设备采集。要同时协调五套设备、找齐佩戴位置、保证互不干扰、事后还要做跨时钟对齐与非线性重采样,工程量按设备数超线性增长。而产出只有 13 个人。这笔账在任何以数据量为考核指标的项目里都算不过来。

所以这类数据的稀缺是结构性的,不是偶然的。它只在"有人真的需要回答设备间一致性问题"时才会被造出来——本库的造库动因是评估若干心电测量设备的功能、精度与可用性,这个动机决定了它的形态。也因此,短期内很难见到第二个同等设计的库。

§8 生态位与历史

8.1 版本沿革

版本 日期 改动
1.0.0 2020-06-16 首次发布,含 raw_data 与 generated_data
1.0.1 2022-07-20 修正 Hexoskin 通道量纲(如 heart_rate 改为 bpm),更新全部 .dat 与 .hea;补充伦理声明
1.0.2 2023-01-18 补充并引用原始论文

1.0.1 的量纲修正值得单独记一笔:它意味着 1.0.0 时代基于 Hexoskin 通道数值得到的结论,在新版本上不能复现。写论文时务必注明版本号。

8.2 与挑战赛的关系

这个库不是挑战赛数据,也没有被改造成挑战赛任务。它的两个技术构件——2019 年的对齐方法、2022 年的形态学噪声信号比与 Smith-Waterman RR 比对——都是方法学论文,而不是竞赛基准。这决定了它的生态位偏方法验证而非竞技。

8.3 生态位:方法学的对照台

PhysioNet 上的生理信号库大致分三类:临床诊断库(给疾病标签,做预测建模)、挑战赛库(给任务与排行榜)、方法学资源库(给一个可复现的物理设定,验证方法)。本库属于第三类里的一个细分——多设备一致性方法学。

它在这个生态位上几乎没有替代。想做设备比对的人要么自己造数据(成本极高),要么用本库。

8.4 谁在用它,用来做什么

官方页面显示引用该项目的出版物为 29 篇。从引用主题看,覆盖可穿戴心电监测综述、心率变异性与心脏代谢疾病、资源受限设备上的应激监测、生物测量衣的指标级性能检验等方向。这些引用共同的特点是:把本库当作"多设备同步"这一物理设定的现成证据,而不是当作一个大规模训练语料。

项目浏览量(官方页面显示):当前版本 375 次,全部版本 498 次。这是一个典型的"小众但被反复回来取用"的访问曲线,符合方法学资源的特征。

§9 使用指引

9.1 三种角色的路径

角色 你该看什么 你该做什么
可穿戴算法工程师 §2.4 信号字典、§5.3 流式读取、§5.5 相位标记 按相位切段评估,用加速度作协变量,逐设备报告误差
生理信号方法研究者 §2.1 两层抽象、§4.2 官方四种用法、§5.2 只下小文件 先只用 .hea 与 .atr 验证思路,再决定是否下 .dat
人因与工效学研究者 §2.3 四相位设计、§3.3 采集场景 用第二与第三相位分离运动负荷与认知负荷

9.2 一条最短的可用流程

import wfdb
import numpy as np

base = 'simultaneous-measurements/1.0.2/generated_data'
sid  = 'x004'

#-- 第 1 步:只下头文件与标注,先确认结构
hdr = wfdb.rdheader(sid, pn_dir=base)
ann = wfdb.rdann(sid, 'atr', pn_dir=base)
aux = wfdb.rdann(sid, 'aux', pn_dir=base)

#-- 第 2 步:拿到相位边界与设备通道索引
idx = {n: i for i, n in enumerate(hdr.sig_name)}
ecg = [idx[n] for n in ['SOT/EKG', 'FAROS/ECG',
                        'NEXUS/Sensor-B:EKG', 'HEXOSKIN/ECG_I'] if n in idx]

#-- 第 3 步:只在相位内取数,避免把佩戴期与静立前期算进来
starts = sorted({int(t) for t, note in zip(aux.sample, aux.aux_note)
                 if note.startswith('Manual/')})
lo, hi = starts[0], starts[0] + 300 * hdr.fs

#-- 第 4 步:读物理量,按通道名分组,别混用滤波与原始
rec = wfdb.rdrecord(sid, pn_dir=base, channels=ecg,
                    sampfrom=lo, sampto=hi, physical=True)
rr = np.diff(ann.sample[(ann.sample >= lo) & (ann.sample < hi)]) / hdr.fs * 1000.0
print(rec.sig_name, rec.units, rr.size)

这条流程的四个要点:先读头文件不下信号;相位边界优先取 Manual/;只在相位区间内取数;读物理量而不是整数。做到这四点,基本不会踩到 §5.6 里那五个坑。

9.3 引用方式

引用对象 写法
数据集 Vollmer, M., Bläsing, D., Reiser, J. E., Nisser, M., & Buder, A. (2023). Simultaneous physiological measurements with five devices at different cognitive and physical loads (version 1.0.2). PhysioNet. RRID:SCR_007345. https://doi.org/10.13026/wce5-fj54
原始论文 Bläsing, D., Buder, A., Reiser, J. E., Nisser, M., Derlien, S., & Vollmer, M. (2022). ECG performance in simultaneous recordings of five wearable devices using a new morphological noise-to-signal index and Smith-Waterman-based RR interval comparisons. PLoS ONE, 17(10), e0274994.
方法论文 Vollmer, M., Bläsing, D., & Kaderali, L. (2019). Alignment of multi-sensored data: Adjustment of sampling frequencies and time shifts. In 2019 Computing in Cardiology (CinC). IEEE.
平台 PhysioNet 平台综述论文,按官方页面 Cite 按钮生成
许可 CC BY 4.0,署名即可,含商业使用

写论文时建议同时注明:使用的版本号、使用的是 raw_data 还是 generated_data、是否用到滤波心电通道、以及相位边界取的是设备标记还是人工修订标记。

§10 AI 使用声明

项目 声明
文本生成 本文由 AI 辅助撰写,编辑把关结构与事实
数字来源 规模、结构、边界三类数字来自 PhysioNet 官方页面与文件目录
文件核验 RECORDS、ANNOTATORS、x001.hea、x004.hea、x004.aux、generated_data 与 raw_data 目录清单经直接访问确认
不一致说明 官方正文描述第四相位为上坡步行,.aux 标记写作 Running;NeXus 通道名在 x001–x003 为 Sensor-B:EEG 而非 EKG,两处已在正文注明
论文信息 仅依据官方页面给出的题名、期刊、DOI 与卷期,未读全文
未核验内容 受试者具体年龄与体质参数、各原始 EDF 内通道的逐通道采样率清单、29 篇引用文献的具体结论、各相位内逐设备误差的量化结果
图像 无配图;封面为生成式提示词,不含真实生理波形
免责 本文不构成临床建议;数据使用须遵守 CC BY 4.0 署名要求

常见误读(避坑清单)

说法 实际 证据
「它是五台心电仪同时测」 四路心电波形加一路 Polar RR 间期序列 官方说明 Polar 用胸带识别心搏输出 RR 间期
「处理后数据是 8000 Hz」 处理后统一 256 Hz,8000 Hz 只在原始 EDF 头文件首行 x004 46 256 468928
「8000 Hz 覆盖全部 13 人」 仅 x004 到 x013 的 NeXus,x001 到 x003 为 256 Hz 官方 Notice 段
「五路心电可以直接比幅度」 前四路已 z 分数归一,单位字段为空 x004.hea 前四路单位字段为空
「各设备 HRV 是同一个指标」 Faros 单位是毫秒,NeXus 是微伏 x004.hea 的 FAROS/HRV 与 NEXUS/[B] HRV Amp. 两行
「它有心搏类型标注」 只有 R 峰位置与相位起点两类人工标注 ANNOTATORS 仅两行定义
「它可以训练心律失常分类器」 全部健康受试者,无病理事件 官方摘要写明 healthy subjects
「1.0.0 与 1.0.2 数值可直接比」 1.0.1 修正了 Hexoskin 通道量纲 官方 Release Notes
「按心搏数做统计推断没问题」 42413 条来自 13 人,个体差异远大于设备差异 受试者数与标注数之比
「它是自由生活场景数据」 全程实验室跑步机,四段脚本化负荷 官方 Methods 段
「NeXus 通道名都是 EKG」 x001 到 x003 名为 Sensor-B:EEG 官方 Notice 段与 x001.hea

FAQ

Q1:这个库到底"同步"在哪里?别的库不也是多设备吗?
差别在是否同一时刻。多数多设备资源是分批或分段采集,两次测量之间受试者的生理状态已经改变,观测到的差异无法归因。本库让五台设备在同一时刻测同一个人,差异因此只剩下设备本身与测量原理两类来源。实现上它做了三件事:传感器布置上让五套设备互不干扰,时间上用心搏模式匹配建立共同时间轴,采样上把 1 Hz 到 8000 Hz 的各通道非线性重采样到统一的 256 Hz。这三步的方法细节写在 2019 年的 Computing in Cardiology 论文里。

Q2:8000 Hz 的 NeXus 通道该怎么用?
它只在 raw_data 里存在,而且只覆盖 x004 到 x013。处理后的 .dat 已经统一重采样到 256 Hz,8000 Hz 的细节在那里已经丢失。想做低采样率 R 峰位置校正,正确做法是从 raw_data/x004_NEXUS.edf 这样的原始文件里取 8000 Hz 心电,与 generated_data 的 256 Hz 通道对齐,把前者当基准、后者当待校正对象。另外注意 x001 到 x003 的 NeXus 是 256 Hz,且通道名错标为 Sensor-B:EEG,检索时要两个名字都匹配。

Q3:为什么前四路心电的单位字段是空的?
因为它们是预处理通道。官方说明前四路经过了裁剪滑动平均滤波与 z 分数归一化,已经不是物理量,而是无量纲的归一波形,所以头文件里单位字段为空、增益值也明显偏大。如果你的方法依赖绝对幅度——比如基于振幅的信号质量检测、跨设备的幅度一致性比较——就不能用这四路,应该取各自的原始通道:SOT/EKG、FAROS/ECG、NEXUS/Sensor-B:EKG、HEXOSKIN/ECG_I,它们的单位字段写着微伏。

Q4:13 个人、42413 条标注,够不够做统计推断?
够做方法验证,不够做人群推断。标注条数听起来不少,但它们来自 13 名受试者,同一个人的心搏之间高度相关,把它们当成 42413 个独立样本会把置信区间算得虚窄。正确的做法是以受试者为随机效应单位,用混合效应模型或按受试者做交叉验证。同样道理,任何"某设备更准"的结论在这个样本量上都是过度解读——官方原始论文给出的也是方法学框架,而不是产品排名。

Q5:四个实验相位的边界从哪里拿,会不会不准?
从 .aux 文件拿,它同时保存了 Faros 触发按钮的原始标记和人工修订后的标记,形如 FAROS_Marker/Rest 与 Manual/Walking,两者并存时以 Manual/ 前缀的为准。人工修订的判据是结合运动传感器与心率上升沿重新定位,属于间接判据,不是视频或事件日志。另外官方正文把第四相位描述为上坡步行,而标记里写作 Running,检索时两个名字都要认。想避开这些麻烦,可以把相位边界当作软边界,在边界两侧各留一段缓冲再取数。

术语表

术语 解释
EDF / EDF+C 欧洲数据格式及其带注释变体,生理信号的通用存储格式
WFDB PhysioNet 使用的波形数据库格式,含头文件、信号、注释三类文件
.hea 纯文本头文件,声明采样率、信号条数、增益、基线、单位与信号名
.dat 二进制信号文件,多路信号按采样点交错存放
.atr 二进制注释文件,本库存人工 R 峰标注
.aux 辅助注释文件,本库存实验相位起点标记
.hrm Polar 设备私有的心率监测文件格式,本库存 RR 间期
R 峰 心电 QRS 波群的顶点,心搏检测与 RR 间期计算的基准点
RR 间期 相邻两次心搏 R 峰之间的时间间隔,心率与 HRV 的计算基础
HRV 心率变异性,RR 间期序列的变异程度,不同设备的定义口径不同
光电容积描记(PPG) 用光测量组织血容积变化的无创方法,腕式心率测量的原理
三轴加速度 三个正交方向上的加速度测量,用于刻画运动与伪迹
纺织电极 编织在衣物里的电极,与一次性 Ag/AgCl 凝胶电极的接触特性不同
Ag/AgCl 电极 氯化银电极,临床心电测量的标准一次性电极
2-back 任务 工作记忆范式,要求判断当前刺激与倒数第 n 个刺激是否相同
非线性重采样 当实际采样率不均匀或不稳定时,按时间轴重新插值到目标采样率
z 分数归一化 减均值除以标准差,结果无量纲,抹掉绝对幅度
指示函数 把离散事件序列转成随时间取 0 或 1 的信号,便于与其它通道对齐
Smith-Waterman 局部序列比对算法,原始论文用它比较 RR 间期序列
CC BY 4.0 知识共享署名许可,允许商用,条件仅为署名
PhysioNet 由 MIT 计算生理学实验室维护的生物医学信号数据平台

附录 A:核心数字核对表

项 值 来源
受试者数 13 官方页面摘要与方法段
性别构成 7 女 6 男 官方页面方法段
设备数 5 官方页面摘要与背景段
实验相位 4 段各 5 分钟 官方页面摘要与方法段
跑步机速度 1.2 m/s 官方页面方法段
上坡坡度 15% 官方页面方法段
原始采样率区间 1 Hz 到 8000 Hz 官方页面摘要
NeXus 高采样率覆盖范围 x004 到 x013,8000 Hz 官方页面 Data Description 的 Notice
处理后信号条数 46 x001.hea 与 x004.hea 首行
处理后采样率 256 Hz x001.hea 与 x004.hea 首行
x004 采样点数 468928 x004.hea 首行
x001 采样点数 575104 x001.hea 首行
处理后总时长 427.80 分钟 官方页面 Data Description
处理后单条时长 29.18 到 39.62 分钟 官方页面 Data Description
原始总时长 2577.68 分钟 官方页面 Data Description
原始各设备总时长 Faros 564.58’ / Hexoskin 526.60’ / NeXus 429.84’ / SOT 557.17’ / Polar 499.49’ 官方页面记录长度表
心搏标注总数 42413 官方页面 Data Description
单条标注数 2377 到 4256 官方页面 Data Description
文件总数 原始 65 个、处理后 52 个 RECORDS 清单
未压缩体积 1.7 GB 官方页面文件区
ZIP 体积 771.4 MB 官方页面文件区
伦理批准号 BB 171/17 官方页面伦理段与 README.md
版本日期 1.0.0 / 2020-06-16,1.0.1 / 2022-07-20,1.0.2 / 2023-01-18 官方页面版本列表
DOI(v1.0.2) 10.13026/wce5-fj54 官方页面 Discovery 区
许可 CC BY 4.0 官方页面 Access 区与 LICENSE.txt

附录 B:数字的来源分层

第一层:官方页面与官方文件。 受试者数、性别构成、设备清单、四相位设计、速度坡度、采样率区间、处理后总时长与单条时长、标注总数与单条范围、原始各设备记录长度、体量、许可、版本日期与 DOI。这些数字直接来自项目主页的摘要、方法、数据描述与文件区,以及 RECORDS、ANNOTATORS 两个清单文件。

第二层:直接访问文件得到的结构数字。 处理后信号的条数 46、统一采样率 256 Hz、x001 与 x004 的采样点数、前四路心电的单位字段为空、各通道的增益与单位、.aux 里的注释条数与名字、各文件的字节数与修改日期。这些来自 x001.hea、x004.hea、x004.aux 与两个目录的文件列表,属于结构而非统计。

第三层:论文题录。 原始论文与方法论文只取题名、期刊、卷期与 DOI,未读全文,因此正文里凡涉及两篇论文结论的地方都一律写成"它提供了什么方法"而不写"它得出了什么结果"。

第四层:未核实。 受试者的具体年龄与体质参数、各原始 EDF 内逐通道的采样率清单、各相位内逐设备的误差幅度、29 篇引用文献的具体结论。这些需要下载全量或通读全文才能得到,本文按要求只写规模、结构、边界三类数字。

附录 C:完整参考文献

编号 文献 链接 用途
1 Simultaneous physiological measurements with five devices at different cognitive and physical loads v1.0.2 https://physionet.org/content/simultaneous-measurements/1.0.2/ 全部规模、结构、边界数字的来源
2 该库的 PhysioNet 文件目录 https://physionet.org/files/simultaneous-measurements/1.0.2/ RECORDS、ANNOTATORS、头文件、目录清单
3 Bläsing 等人(2022),PLoS ONE 17(10) e0274994 https://doi.org/10.1371/journal.pone.0274994 原始论文,形态学噪声信号比与 Smith-Waterman 比对
4 Vollmer、Bläsing、Kaderali(2019),Computing in Cardiology https://doi.org/10.22489/cinc.2019.031 对齐与采样率调整方法
5 PhysioNet 平台综述(Nature Health) https://doi.org/10.1038/s44360-026-00096-z 托管模式与引用规范
6 MIT-BIH 心律失常库(对照) https://physionet.org/content/mitdb/ §2.6 与 §6.1 的对比

相关数据集导航

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

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

返回 AI-Ready 数据集