信息速览
把两枚光学传感器贴在同一根食指的相邻指节上,看起来像是把距离缩短后让问题变简单了;事实正相反。脉搏波跑过这段短距离只留下毫秒量级的相位差,传感器压力稍有变化、手指一动、波形脚点选法一换,想测的时间差就可能被伪迹盖住。常见 PPG 数据只给一个位置,常见血压数据又只给床旁监护波形,研究者很难把“同一搏动在两个近邻位置何时到达”与佩戴压力、动作和心电参考放在同一时间轴上检查。Pulse Transit Time PPG Dataset 恰好把这个困难原样保留下来:不是先替使用者算好一个漂亮的 PTT 标签,而是公开构成判断链的原始信号,让每一种相位定义都必须接受同步波形的检验。
这份 PTT-PPG 多传感器库来自悉尼大学。22 名健康成人以随机顺序完成静坐、原地步行和跑步,形成 66 段记录。左手食指远端与近端各放一枚 MAX30101,两个位置都采红光、红外和绿光;同一指夹还记录附着压力、温度、三轴加速度、三轴角速度,并并行记录 ECG。活动开始与结束处另有袖带血压、心率和 SpO2 数值。这样的组合很适合问“动作、夹持力和波长怎样改变短距离时差”,却不能直接回答“连续血压是多少”,因为血压不是逐搏波形,PPG 脉搏脚点也没有人工真值。
使用前还要先处理两个官方材料内部的冲突。其一,页面称有 19 路生理时间序列,但实际 WFDB 头文件列出 18 路波形;CSV 在这 18 路之外增加 peaks 注释列,另有 time。其二,方法段把 pleth_1/4 写作红外、pleth_2/5 写作红光,通道字典却正好对调。下文不替发布者猜哪一处正确,而是把冲突、可核验文件与稳妥用法分开写清。一屏速览如下。
| 维度 | 内容 |
|---|---|
| 官方名称 | Pulse Transit Time PPG Dataset |
| 发布方 | PhysioNet;数据采集方为悉尼大学 |
| 作者 | Philip Mehrgardt、Matloob Khushi、Simon Poon、Anusha Withana |
| 最新版本 | 1.1.0,2022 年 3 月 18 日发布 |
| 前一版本 | 1.0.0,2022 年 3 月 10 日发布 |
| 受试者 | 22 名健康成人;6 名女性;20–53 岁,官方给出的均值为 28.52 岁 |
| 活动 | 静坐、原地步行、跑步;顺序随机 |
| 记录规模 | 66 段,官方称覆盖超过 40000 次心搏 |
| 光学采集 | 左食指远端与近端两个位置,每处红光、红外、绿光各一路 |
| 同步模态 | ECG、2 路附着压力、3 路温度、三轴加速度、三轴角速度 |
| 发布通道 | WFDB 头文件为 18 路波形;CSV 另含 peaks,官网摘要统称 19 路 |
| 采样结构 | 发布波形共用 500 Hz 时间轴;官网另写压力原生 80 Hz、两路指夹温度原生 10 Hz |
| 数值元数据 | 性别、年龄/身高/体重档、活动前后血压、两设备心率与 SpO2 |
| 标注 | ECG R 峰,自动检测后人工核验;未提供 PPG 脚点或 PTT 真值 |
| 文件格式 | WFDB(.hea、.dat、.atr)与 CSV;根目录附清单、许可、校验和与设备图 |
| 总体积 | 官方文件页标示未压缩 2.9 GB |
| 许可与访问 | Open Data Commons Open Database License v1.0;开放访问,须遵守许可条款 |
| DOI | 版本 1.1.0:10.13026/jpan-6n92;最新版指向 DOI:10.13026/338y-cd69 |
| 典型用途 | 短距离 PTT、运动伪迹分析、佩戴压力影响、心率监测与多模态同步研究 |
§1 它要解决的具体麻烦
1.1 距离越短,对时钟与脚点越苛刻
脉搏传导时间(Pulse Transit Time,PTT)描述脉搏波在两个血管位置之间传播所需的时间。若两个位置相隔较远,两个波形的对应特征之间通常更容易留下可辨认的时间差;若位置都在同一根手指上,生理传播段缩短,待估时差进入毫秒量级。此时,问题不再只是“能不能看见脉搏”,而是“两个通道是不是在同一时钟下、脚点是不是由同一规则得到、传感器压力有没有改变波形形状”。
很多公开 PPG 资源适合心率或活动识别,却没有第二个近邻位置;很多 ECG+PPG 资源可以计算从 R 峰到外周脉搏的间隔,却把心脏电激动到射血开始的过程也包含在内。这里的双位置 PPG 允许直接比较近端与远端,理论上能把心脏射血前的延迟从两处 PPG 之差中抵消掉。它同时保留 ECG,使 ECG 到 PPG 的到达时间也能作为另一条参考链,但两类时间量不能混称。
| 时间量 | 起点 | 终点 | 包含什么 | 这份数据能否构造 |
|---|---|---|---|---|
| 指内 PTT | 近端 PPG 特征点 | 远端同波长 PPG 特征点 | 两个指节位置之间的传播与局部测量误差 | 能,但需自行定义 PPG 特征点 |
| 脉搏到达时间 | ECG R 峰 | 某一路 PPG 特征点 | 心电到射血的延迟加外周传播时间 | 能,R 峰已有注释,PPG 特征点需自取 |
| 脉搏波速度 | 一个位置的脉搏点 | 另一个位置的脉搏点 | 还需要两测点间距离 | 不能直接完成,发布元数据未给每次佩戴的数值距离 |
| 连续血压 | 连续参考压力波形 | 每个时刻或每一搏 | 动脉压随时间变化 | 不能,只有活动开始与结束处的袖带数值 |
1.2 信号同步不是“都有时间列”这么简单
短距离时差的可信度首先来自共同采集链。官方说明所有传感器接到 180 MHz ARM Cortex-M4 微控制器,并在 2 毫秒窗口内读取;发布的 WFDB 波形共享 500 Hz 记录轴。这个结构比事后把两台设备的文件按开始时刻拼接更适合做通道间延迟,因为它减少了独立时钟漂移的问题。
但“共同时间轴”不等于每个传感器原生采样率相同。官网把载荷传感器写为 80 Hz,把两路指夹温度写为 10 Hz,把 ECG 与惯性测量写为 500 Hz;MAX30101 的硬件配置段写 1000 Hz 多 LED 模式,而发布通道字典与 WFDB 文件表现为 500 Hz。官方没有交代每种低速或高速信号如何落到 500 Hz 发布网格,因此使用者可以依赖对齐后的文件轴,却不应把重复值、插值或抽取方式想当然地写进方法。
| 同步层次 | 官方能确认的事实 | 仍需谨慎的部分 |
|---|---|---|
| 设备连接 | 传感器连接同一微控制器 | 每种传感器的内部延迟未逐项给出 |
| 读取节拍 | 官方称在 2 毫秒窗口内读取全部传感器 | “窗口内”不等于所有 ADC 在完全同一瞬间采样 |
| 发布时间轴 | WFDB 示例头文件声明 500 Hz | 原生低速通道到发布网格的处理方法未说明 |
| CSV 时间 | 有经日期平移的 time 列 |
日期被平移,不能恢复真实日历时刻 |
| 事件参考 | ECG R 峰自动检测并人工核验 | PPG 到达点、波峰、波脚均未标注 |
1.3 它能给到的与给不到的
这份数据的强项是把影响 PPG 时序的旁证放在一起,而不是提供一个已经认证的临床终点。附着压力可用于判断夹得更紧时脉搏形态是否变化;加速度与角速度可帮助定位运动;温度可提示传感器与环境状态;双位置三波长可检查同一次脉搏在光路与位置改变后是否仍能稳定对齐。袖带血压、心率和 SpO2 则是活动边界处的数值锚点,不是连续监督。
| 研究问题 | 直接可用材料 | 关键缺口 | 判断 |
|---|---|---|---|
| 两个指节间的短距离 PTT | 两位置同步三波长 PPG | 没有 PPG 脚点真值 | 适合方法比较,不适合把自算结果称为官方标签 |
| ECG 到指端的到达时间 | ECG、R 峰注释、六路 PPG | 包含射血前延迟 | 可做,但名称应与双位置 PTT 分开 |
| 运动中心率 | ECG、R 峰、PPG、IMU、压力 | 13 号受试者步行 ECG 特别嘈杂 | 适合多模态稳健性研究 |
| 连续无袖带血压 | PPG、ECG、活动前后袖带值 | 无连续压力波形 | 不足以单独建立逐搏真值 |
| 佩戴压力补偿 | 两路载荷信号与两处 PPG | 压力通道为任意单位 | 可做相对变化与融合,不宜宣称绝对接触力 |
| 临床疾病识别 | 多模态波形 | 受试者为健康成人,无疾病标签 | 不适合诊断模型验证 |
| 光谱差异研究 | 红、红外、绿三波长双位置 PPG | 红光与红外编号在文档中冲突 | 需先核对硬件或联系作者 |
1.4 你的处境与它能帮到的事
| 你的处境 | 这份数据能提供什么 | 最先做的动作 |
|---|---|---|
| 已有单点 PPG 脚点检测器,想知道近距离时差是否稳定 | 同一搏动的近端与远端三波长波形 | 固定一种脚点定义,先在静坐段检查波形对应关系 |
| 正在做运动 PPG 去噪 | 跑步、原地步行、静坐及六轴惯性信号 | 先按受试者分组,避免同一人的三种活动跨集合 |
| 想融合夹持压力改善心率 | 两路载荷信号、PPG 与人工核验的 R 峰参考 | 保留原始压力单位,不把它换写成牛顿 |
| 想比较 ECG-PPG 与 PPG-PPG 两种延迟 | 同步 ECG、双位置 PPG 和 R 峰 | 分别命名两个间隔,避免把二者都写成 PTT |
| 要训练无袖带血压模型 | 活动前后收缩压与舒张压 | 只把数值当稀疏边界参考,并另找连续压力数据 |
| 要复现作者心率研究 | 同作者、同设备、多模态记录 | 引用关联论文,同时说明数据集发布版本 |
1.5 一句话判断
它不是“带有标准 PTT 答案的血压库”,而是一套让短距离时间差暴露在动作、夹持、温度、波长与心电参考面前的同步原始材料。
判断是否值得下载,可以看任务的监督目标。如果目标是开发波形脚点、通道对齐、运动鲁棒心率或多传感器融合,它提供了少见的实验组合;如果目标是用大量临床病例训练诊断模型,或用连续有创血压作逐搏金标准,它的受试者范围与标签结构都不匹配。
1.6 不适合谁:五条边界
不适合把 22 名健康成人外推到临床人群。 年龄范围为 20–53 岁,官网没有心血管疾病、用药、肤色、外周灌注异常或长期随访字段。健康志愿者在实验活动中的信号不能代替高血压、心律失常或血管病患者。
不适合把活动前后血压扩成连续标签。 每段只有开始与结束处的收缩压、舒张压。中间跑步或步行时血压怎样变化并未由参考设备连续记录,把端点复制到整段会制造并不存在的监督。
不适合把 R 峰当成 PTT 的完整真值。 R 峰是电事件参考,离血液真正射入动脉还有机电耦合过程。ECG 到 PPG 更接近脉搏到达时间;双 PPG 的相位差才针对两个外周位置之间的传播。
不适合默认波长编号无歧义。 红光与红外的通道映射在官网同页互相冲突。绿光通道没有这项冲突,但红与红外研究在解决映射前不应给出波长特异结论。
不适合把低速传感器发布列理解为 500 Hz 原生采样。 文件轴统一不改变载荷传感器 80 Hz、指夹温度 10 Hz 的硬件边界。模型若利用相邻样点的细小变化,需要先说明这些列如何重建到共同网格。
§2 数据构成与规格
2.1 一段记录有两套等价入口
每段记录以 sXX_activity 命名,例如 s1_run 表示 1 号受试者的跑步段。根目录存 WFDB 三件套:.hea 描述通道、增益、采样轴和元数据,.dat 存二进制波形,.atr 存 R 峰注释。csv/ 子目录提供同名 CSV,另有 subjects_info.csv 汇总数值字段。两套格式服务不同工作流:WFDB 体积更小、保留信号校准与注释语义;CSV 更直观,但单文件约为数十兆字节,整库文本体量明显更大。
| 层次 | 文件或路径 | 作用 | 使用注意 |
|---|---|---|---|
| 记录索引 | RECORDS |
列出 66 个 WFDB 记录名 | 以它为准遍历,不要手拼编号 |
| 波形头 | sXX_activity.hea |
通道数、500 Hz 轴、样点数、增益、单位、元数据 | 实际扩展名是 .hea |
| 波形体 | sXX_activity.dat |
18 路打包波形 | 需配合头文件解码 |
| 注释 | sXX_activity.atr |
ECG R 峰位置 | ANNOTATORS 定义为人工核验心搏注释 |
| 表格波形 | csv/sXX_activity.csv |
time、18 路波形与 peaks |
文本较大,peaks 是注释列 |
| 元数据表 | csv/subjects_info.csv |
活动、人口学档位、血压、心率、SpO2 | 每行按记录关联 |
| 设备图 | device_schematic.png |
双位置指夹与硬件示意 | 可核对布局,不能替代数值距离字段 |
| 完整性 | SHA256SUMS.txt |
文件哈希 | 下载后可校验损坏 |
| 权利文本 | LICENSE.txt |
ODbL 1.0 全文 | 再发布衍生数据库前应核对义务 |
2.2 十八路波形的字段字典
官网摘要说“19 channels”,但 s1_run.hea 第一行是 s1_run 18 500 245274,随后确有 18 行信号定义。CSV 首行则是 time,ecg,peaks,...,g_z:去掉时间后共有 19 个数据列,其中 peaks 是 R 峰指示,不是独立传感器波形。最稳妥的表达是“18 路发布波形,CSV 加一列峰标记”;引用官方摘要时再注明其 19 路口径。
| 字段族 | 字段 | 数量 | 单位/语义 | 官网给出的采样信息 |
|---|---|---|---|---|
| 心电 | ecg |
1 | WFDB 示例单位为 mV;设备描述为 3 导联 ECG 放大器 | 500 Hz |
| 远端 PPG | pleth_1、pleth_2、pleth_3 |
3 | 左食指远端掌侧,任意单位 | 发布字典写 500 Hz |
| 近端 PPG | pleth_4、pleth_5、pleth_6 |
3 | 左食指近端掌侧,任意单位 | 发布字典写 500 Hz |
| 附着压力 | lc_1、lc_2 |
2 | 两位置的载荷传感器输出,任意单位 | 硬件 80 Hz |
| 指夹温度 | temp_1、temp_2 |
2 | 两个 PPG 位置的温度,摄氏度 | 10 Hz |
| IMU 温度 | temp_3 |
1 | MPU-9250 内部温度,摄氏度 | 500 Hz |
| 加速度 | a_x、a_y、a_z |
3 | 三轴加速度,g | 500 Hz |
| 角速度 | g_x、g_y、g_z |
3 | 三轴角速度,度/秒 | 500 Hz |
| 峰标记 | peaks |
CSV 附加 1 列 | 1 为 R 峰,0 为非峰 | 对应 WFDB .atr,不是波形传感器 |
“3 导联 ECG”容易引起另一种误会。官网方法段描述采集硬件为 3 导联 ECG,但公开文件中只有一个名为 ecg 的时间序列,并没有三列独立导联。这里应把“3 导联”理解为硬件配置描述,把“一路公开 ECG 波形”理解为文件事实;没有额外文件证据时,不能凭硬件名称扩写成三路公开心电。
2.3 双位置三波长的映射冲突
两个位置的空间映射相对清楚:pleth_1 到 pleth_3 位于左食指远端指节掌侧,pleth_4 到 pleth_6 位于近端基部掌侧。波长映射却不一致。方法段与 README 把 pleth_1/4 对应红外、pleth_2/5 对应红光;数据描述段把 pleth_1/4 对应红光、pleth_2/5 对应红外。pleth_3/6 都对应绿光。
| 通道配对 | 位置关系 | 方法段/README | 通道字典 | 可否直接定论 |
|---|---|---|---|---|
pleth_1 与 pleth_4 |
远端与近端同编号 | 红外,标称 880 nm | 红光,标称 660 nm | 不可,官方材料冲突 |
pleth_2 与 pleth_5 |
远端与近端同编号 | 红光,标称 660 nm | 红外,标称 880 nm | 不可,官方材料冲突 |
pleth_3 与 pleth_6 |
远端与近端同编号 | 绿光,标称 537 nm | 绿光 | 可以按绿光配对使用 |
这项冲突不会妨碍把相同编号的远端与近端做“通道对”研究,也不会妨碍不区分红与红外的多通道融合;它会妨碍任何声称“红光比红外更早”或“某个波长更稳定”的结论。稳妥路径有三种:只对绿光作波长特异分析;把前两组命名为通道 A/B 而不写颜色;或从作者与硬件原始配置获得确认后再固定映射。
2.4 元数据与边界数值字典
subjects_info.csv 的字段不是逐样点标签,而是按记录保存的人口学档位与活动边界处的仪器读数。年龄、身高和体重按 5 为增量记录,这是去识别与分组边界;性别字段为 male/female;活动字段为 sit、walk、run。血压由 OMRON HEM-7322 记录,SpO2 由 iHealth Air Wireless Pulse Oximeter 记录,两台设备也分别贡献心率字段。
| 字段 | 含义 | 单位或取值 | 时间位置 |
|---|---|---|---|
record / filename |
记录名 | sXX_activity |
整段主键 |
activity |
活动 | sit、walk、run |
整段条件 |
gender |
性别 | male / female | 受试者属性 |
height |
身高档 | 厘米,按 5 递增 | 受试者属性 |
weight |
体重档 | 千克,按 5 递增 | 受试者属性 |
age |
年龄档 | 岁,按 5 递增 | 受试者属性 |
bp_sys_start / bp_sys_end |
收缩压 | mmHg | 活动开始/结束 |
bp_dia_start / bp_dia_end |
舒张压 | mmHg | 活动开始/结束 |
hr_1_start / hr_1_end |
OMRON 设备心率 | bpm | 活动开始/结束 |
hr_2_start / hr_2_end |
iHealth 设备心率 | bpm | 活动开始/结束 |
spo2_start / spo2_end |
外周血氧饱和度 | 百分数值 | 活动开始/结束 |
版本 1.1.0 的价值主要就在舒张压字段。发布说明明确指出,1.0.0 的 bp_dia_start 与 bp_dia_end 错误地包含了对应收缩压字段的重复值,1.1.0 修复了这个问题。只要研究涉及血压,就不应混用旧版;已经下载 1.0.0 的项目也应重新核对来源和缓存。
2.5 一条记录如何串起来
以 s1_run 为结构示例,头文件首行声明记录名、18 路信号、500 Hz 时间轴与样点数;下面 18 行分别给出 .dat 文件名、WFDB 编码、增益、基线、单位和通道名;末行用尖括号式键值保存活动与边界数值。对应 .atr 只承担 R 峰注释,CSV 则把同一事件展开为 peaks 的二元指示列。
| 位置 | 示例内容类型 | 解析结果 | 不应误读为 |
|---|---|---|---|
.hea 第 1 行 |
记录名、信号数、采样轴、样点数 | 文件级结构 | 受试者总时长统计 |
.hea 信号行 |
增益、基线、单位、通道名 | 数字值到物理量的换算规则 | 所有记录共用同一增益 |
.hea 注释行 |
活动、人口学档位、起止数值 | 记录元数据 | 逐样点连续标签 |
.atr |
R 峰事件位置 | ECG 参考点 | PPG 波脚或 PTT 标签 |
CSV time |
日期平移后的时间 | 段内对齐轴 | 真实采集日期 |
CSV peaks |
R 峰指示 | .atr 的表格表达 |
一路新的生理传感器 |
主键关系很简单:文件名前缀连接 .hea、.dat、.atr 与 CSV;前缀中的 sXX 连接同一人三种活动。任何训练/验证划分都应先提取 sXX,再按人分组。若把 s1_sit 放进训练、把 s1_run 放进测试,模型仍然见过同一人的血管、皮肤与佩戴特征,活动不同并不能消除身份泄漏。
2.6 硬件结构决定了信号能回答什么
| 硬件 | 官方配置 | 对应公开字段 | 研究含义 |
|---|---|---|---|
| 2 枚 MAX30101 | 红、红外、绿,多 LED 模式;LED 电流 18.8 mA、脉宽 215 微秒、ADC 范围 16384 | pleth_1–pleth_6 |
同波长双位置比较与多波长融合 |
| 2 枚 TAL221 100g 载荷单元 | 连接 24 位 HX711,硬件采样 80 Hz | lc_1、lc_2 |
夹持变化的旁证,单位未校准为绝对力 |
| 1 枚 MPU-9250 | 三轴加速度、三轴陀螺仪,500 Hz | a_*、g_*、temp_3 |
动作与惯性伪迹建模 |
| 1 个 AD8232 ECG 放大器 | 官网称 3 导联,500 Hz | ecg |
单路公开心电与 R 峰参考 |
| ARM Cortex-M4 | 180 MHz,全部传感器在 2 毫秒窗口读取 | 共同记录轴 | 通道间同步基础 |
| OMRON HEM-7322 | 袖带血压与心率 | bp_*、hr_1_* |
活动边界数值,不是连续波形 |
| iHealth Air | 脉搏血氧与心率 | spo2_*、hr_2_* |
活动边界数值 |
硬件表还揭示一个重要限制:两处 PPG 都在同一手指、同一指夹系统里。它非常适合研究局部短距离传播和佩戴因素,却不能自动代表腕到指、耳到指或心脏到脚趾等更长路径。不同路径包含不同血管段、不同反射与不同运动方式,模型输入字段相似也不意味着时间量可直接迁移。
§3 它是谁的数据
3.1 贡献者与机构
数据由 Philip Mehrgardt、Matloob Khushi、Simon Poon 与 Anusha Withana 共同署名,采集地点是悉尼大学,发布平台为 PhysioNet。官方致谢写明工作得到 University of Sydney Cardiovascular Initiative 资助,Anusha Withana 获澳大利亚研究委员会 Discovery Early Career Award(DE200100479)支持。数据集 DOI 与关联论文 DOI 分属两个对象:前者用于引用数据版本,后者用于引用利用该数据开展的心率监测研究。
| 对象 | 推荐识别信息 | 用在什么地方 |
|---|---|---|
| 数据集版本 | Mehrgardt 等,Pulse Transit Time PPG Dataset v1.1.0,DOI 10.13026/jpan-6n92 | 数据来源与版本引用 |
| 最新版入口 | DOI 10.13026/338y-cd69 | 希望随版本跳转时使用 |
| 关联论文 | Deep Learning Fused Wearable Pressure and PPG Data for Accurate Heart Rate Monitoring,DOI 10.1109/JSEN.2021.3123243 | 方法背景与既有用途引用 |
| 发布平台 | PhysioNet | 仓储、下载与标准平台引用 |
3.2 时间线:八天内完成一次关键修订
| 日期 | 事件 | 对使用的意义 |
|---|---|---|
| 2021 年 6 月 | README 标注由 Philip Mehrgardt 最后修改;目录中的主要波形文件也显示该时期 | 说明采集文件早于正式发布 |
| 2021 年 12 月 | 关联心率论文刊于 IEEE Sensors Journal | 展示压力与 PPG 融合的既有研究用途 |
| 2022 年 3 月 10 日 | 版本 1.0.0 发布 | 初始公开版本 |
| 2022 年 3 月 18 日 | 版本 1.1.0 发布 | 修复舒张压字段重复收缩压的问题 |
| 2022 年 3 月 23 日 | 目录中的 SHA256 校验清单时间晚于版本页发布日期 | 下载时应使用当前目录校验文件 |
README 文件标题仍写 Version 1.0.0,不能据此把整个下载目录误判为旧版。当前版本页、头文件修改日期与发布说明共同表明目录是 1.1.0;README 没有同步改标题,是文档遗留。涉及血压修订时应优先引用版本页 Release Notes,而不是 README 顶部的版本行。
3.3 采集对象与活动协议
22 名健康成人全部在悉尼大学参与采集,年龄范围为 20–53 岁,其中 6 名女性,官方给出的年龄均值是 28.52 岁。每人以随机顺序完成静坐、原地步行与跑步三项活动。这里的“walk”是 stationary walking,即原地步行,不是自由生活场景中的户外行走;“run”也只说明活动类别,官网没有给速度、坡度、持续时间或运动强度分级。
| 采集维度 | 官方明确内容 | 未明确内容 |
|---|---|---|
| 健康状态 | healthy subjects | 筛查项目、疾病排除细则、用药情况 |
| 年龄 | 20–53 岁,均值 28.52 岁 | 更细的人群构成只以 5 岁档发布 |
| 性别 | 6 名女性 | 官网未讨论性别自报流程 |
| 活动 | 静坐、原地步行、跑步 | 速度、阻力、阶段长度、休息间隔 |
| 顺序 | 三项活动随机排序 | 随机化方法与具体次序表 |
| 佩戴位置 | 左食指掌侧远端与近端 | 每人的精确测点距离 |
| 环境 | 悉尼大学采集 | 室温、光照、采集日期与时段 |
人口学字段按 5 岁、5 厘米、5 千克的增量记录,不应把这些档位当作精确测量值。日期也经过平移去识别,因此无法分析季节或一天中的真实时间效应。数据很适合受控活动对照,但不是自由生活纵向队列。
3.4 伦理与去识别边界
官方方法段写明悉尼大学 Human Research Ethics Committee 批准研究,编号为 2020/7059,所有参与者提供书面知情同意。版本页伦理小节另写“authors declare no ethics concerns”。两句话并不矛盾:前者给出研究审批与同意事实,后者是发布时的伦理声明。
| 保护措施 | 已公开做法 | 使用者仍需承担的责任 |
|---|---|---|
| 知情同意 | 所有参与者书面同意 | 不把开放许可等同于无限制的人体研究用途 |
| 伦理审批 | 悉尼大学 HREC 2020/7059 | 新研究按所在机构要求判断是否需审批 |
| 时间处理 | CSV 日期已平移 | 不尝试恢复真实日期或重识别个人 |
| 人口学粒度 | 年龄、身高、体重按 5 为增量 | 报告时保留档位语义,不伪装成精确值 |
| 数据许可 | ODbL 1.0 | 共享改编数据库时核对署名、同许可等义务 |
§4 它最独特的东西
4.1 同一根手指上的六路光学对照
多数可穿戴 PPG 数据把“传感器位置”固定成单点,再用加速度解释运动伪迹。这里把位置与波长都展开:远端三路、近端三路,同一搏动可以得到三组空间配对。这样不仅能比较某个算法是否找到脉搏,还能检查它找出的特征点在两个位置间是否保持生理顺序、在三个波长间是否保持一致。
| 对照轴 | 可以固定什么 | 可以改变什么 | 能检验的失败模式 |
|---|---|---|---|
| 同波长、换位置 | 受试者、活动、时钟、近似光谱 | 远端与近端 | 时间差方向颠倒、局部压力改变形态 |
| 同位置、换波长 | 受试者、活动、测点 | 红/红外/绿 | 脚点对光谱与穿透深度敏感 |
| 同位置同波长、换活动 | 身份与硬件 | 静坐/步行/跑步 | 运动造成的漂移与波形破坏 |
| 同活动、换受试者 | 采集协议 | 个体组织与血管特征 | 模型是否记住个人形态 |
| PPG 与载荷联看 | 时间轴与位置 | 光学容积与机械夹持 | 压力变化被误当成脉搏变化 |
它最稀缺的不是“六路比一路多”,而是六路有明确的成对结构。模型可以只吃全部通道给出一个数,但那会浪费数据设计;更有解释力的做法是保留“近端—远端”“同波长—异波长”“静息—运动”三种对照,并逐层报告算法在哪一层失效。
4.2 压力不是标签,而是测量条件
PPG 传感器必须接触皮肤,接触本身会改变局部组织、静脉回流、光路和波形幅度。夹得太松,运动时容易滑动;夹得太紧,局部灌注和波形形状又可能改变。两枚 TAL221 载荷传感器正好记录两个光学位置的附着压力,使“信号变差”不再只有 IMU 一种解释。
但 lc_1、lc_2 在公开文件中是任意单位,官网没有给出从数值到牛顿或帕斯卡的校准式。因此它们适合做段内相对变化、作为融合输入、检测突然松动或比较模型对压力扰动的敏感性,不适合直接写成绝对接触力。压力通道也不等于动脉血压:前者是传感器压在手指上的机械条件,后者是 OMRON 袖带给出的生理数值,二者名称相近但物理对象完全不同。
| 字段 | 测量对象 | 时间形态 | 可安全使用的语义 | 不可替代 |
|---|---|---|---|---|
lc_1、lc_2 |
指夹附着压力 | 连续时序,硬件 80 Hz | 接触变化、机械扰动旁证 | 动脉收缩压/舒张压 |
bp_sys_* |
袖带收缩压 | 开始与结束数值 | 活动边界参考 | 连续压力波形 |
bp_dia_* |
袖带舒张压 | 开始与结束数值 | 活动边界参考 | 每搏舒张压 |
| PPG 波形 | 局部血容量的光学变化 | 连续时序 | 脉搏形态、到达点候选 | 经校准的压力单位 |
4.3 一个可复现的案例:先确认事件链,再谈毫秒差
以任意一段静坐记录为例,稳妥的分析顺序不是直接对两路 PPG 做互相关并输出一个时间,而是先用 .atr 读出人工核验的 ECG R 峰,在每个 R 峰之后寻找近端与远端同编号 PPG 的候选脉搏,再检查两处候选是否落在同一次心动周期内。若动作段中 PPG 峰错配到相邻心搏,任何精细的插值都会把错误变得更精确。
import wfdb
import numpy as np
record = "s1_sit"
sig, fields = wfdb.rdsamp(record, pn_dir="pulse-transit-time-ppg/1.1.0")
ann = wfdb.rdann(record, "atr", pn_dir="pulse-transit-time-ppg/1.1.0")
names = fields["sig_name"]
fs = fields["fs"]
prox = sig[:, names.index("pleth_6")]
dist = sig[:, names.index("pleth_3")]
#-- 这里只建立同一心动周期的候选窗,不把波峰自动当成官方 PTT 真值
for r0, r1 in zip(ann.sample[:-1], ann.sample[1:]):
a = r0
b = min(r1, len(prox))
if b <= a:
continue
prox_cycle = prox[a:b]
dist_cycle = dist[a:b]
#-- 后续应在两路上使用同一脚点定义,并记录质量判据
选择 pleth_3/6 是因为两段官方描述都同意它们是绿光配对,不是因为绿光一定优于其他波长。代码也故意不输出 PTT 数字:真正决定结果的是脚点定义、滤波相位、坏搏剔除和通道延迟校正,这些都不由文件替使用者完成。
| 分析关口 | 通过条件 | 失败时先看什么 |
|---|---|---|
| R 峰可靠 | .atr 事件落在可辨认 QRS 附近 |
13 号受试者步行 ECG 噪声说明 |
| 心搏对应 | 两路 PPG 候选属于同一 RR 周期 | 是否错配到前后心搏 |
| 运动条件 | IMU 没有显示与波形突变同步的大动作,或模型明确处理动作 | 加速度、角速度与载荷信号 |
| 接触条件 | 两路载荷没有突然阶跃或脱落迹象 | lc_1、lc_2 |
| 波长语义 | 使用绿光配对,或已解决红/红外映射冲突 | 方法段与通道字典对照 |
| 时间定义 | 近端与远端使用同一特征点规则 | 波峰、最大斜率、波脚不可混用 |
4.4 标注粒度:R 峰清楚,脉搏脚点留白
.atr 的生成方式是先自动检测,再人工核验 ECG R 峰;ANNOTATORS 文件把 atr 定义为 “manually verified beat annotations”。这为心动周期分割和心率参考提供了相对清楚的事件层。CSV 的 peaks 用 1/0 展开同一注释,方便不使用 WFDB 工具的流程。
数据没有提供 PPG 的波脚、波峰、最大上升沿、信号质量等级、PTT 数值或逐搏血压。这个“留白”不是缺陷的同义词:对于比较不同 PTT 定义,它恰好避免把某一种算法固化成唯一答案;对于监督学习,它又意味着使用者必须自建标签,并公开标签生成规则,不能把衍生目标描述为人工标注。
| 监督层 | 是否提供 | 来源 | 最合适的用途 |
|---|---|---|---|
| ECG R 峰 | 提供 | 自动检测后人工核验 | 心率参考、周期切分、ECG-PPG 起点 |
| 活动类别 | 提供 | 采集协议 | 条件分层、运动状态输入 |
| PPG 特征点 | 未提供 | 需算法生成 | 比较脚点定义与稳健性 |
| 逐搏 PTT | 未提供 | 需由双 PPG 计算 | 作为衍生变量,明确算法口径 |
| 连续血压 | 未提供 | 只有开始/结束袖带数值 | 不可充当逐搏监督 |
| 信号质量等级 | 未提供 | 可制定规则或人工复核 | 规则必须独立记录 |
4.5 边界条件:它何时失去代表性
| 条件 | 是否适合 | 原因 |
|---|---|---|
| 比较短距离双 PPG 的脚点算法 | 适合 | 两位置共时钟、三波长、带 ECG 参考 |
| 研究动作与夹持对 PPG 的影响 | 适合 | 有三种活动、IMU 与两路载荷信号 |
| 训练大规模人群基础模型 | 不适合 | 只有 22 名受试者,且为健康成人 |
| 验证疾病诊断 | 不适合 | 没有病例与诊断标签 |
| 建立连续无袖带血压金标准 | 不适合 | 没有连续参考压力波形 |
| 研究自由生活长期监测 | 不适合 | 受控三活动,真实日期被平移,时长协议未详述 |
| 做波长特异比较 | 有条件适合 | 绿光映射清楚,红与红外编号冲突 |
| 做绝对脉搏波速度 | 不足 | 没有逐记录数值测点距离 |
§5 怎么拿到
5.1 目录结构与下载面
官方文件页给出未压缩总体积 2.9 GB。根目录的 WFDB .dat 单段约为数兆字节,同名 CSV 通常是数十兆字节;如果下游能直接读 WFDB,没有必要为了便利重复下载整套 CSV。目录没有按受试者建子文件夹,活动与身份都编码在文件名前缀中。
| 路径模式 | 每段是否存在 | 内容 | 建议 |
|---|---|---|---|
/sXX_activity.hea |
是 | 18 路通道说明与元数据 | 必须与 .dat 同名保留 |
/sXX_activity.dat |
是 | WFDB 二进制波形 | 训练时优先读取 |
/sXX_activity.atr |
是 | 人工核验 R 峰 | 心搏切分时读取 |
/csv/sXX_activity.csv |
是 | 时间、峰标记与波形表 | 快速查看或表格工具使用 |
/csv/subjects_info.csv |
汇总文件 | 所有记录的数值字段 | 与记录名连接 |
/device_schematic.png |
单个附属文件 | 设备布局示意 | 理解双位置配置 |
/SHA256SUMS.txt |
单个附属文件 | 哈希清单 | 下载后完整性校验 |
5.2 批量下载与版本锁定
#-- 下载版本 1.1.0,并保留服务器目录结构
wget -r -N -c -np \
https://physionet.org/files/pulse-transit-time-ppg/1.1.0/
#-- 或使用 PhysioNet 命令行客户端固定版本
physionet download pulse-transit-time-ppg --version 1.1.0
固定版本号很重要。无版本入口当前跳到 1.1.0,但可复现流程不应依赖“当前”永远不变。血压字段修订尤其要求明确写 v1.1.0;论文、模型卡和数据清单都应保留 DOI 10.13026/jpan-6n92。
若只需要 WFDB,可在下载工具中排除 csv/;若只想核对字段,可先取 README.txt、RECORDS、一个 .hea、ANNOTATORS 与 subjects_info.csv。不要只下载 .dat:没有 .hea 就无法可靠恢复通道增益、基线与名称。
5.3 用 WFDB 流式读取
import wfdb
name = "s1_run"
record = wfdb.rdrecord(name, pn_dir="pulse-transit-time-ppg/1.1.0")
beats = wfdb.rdann(name, "atr", pn_dir="pulse-transit-time-ppg/1.1.0")
print(record.fs)
print(record.sig_name)
print(record.p_signal.shape)
print(beats.sample[:5])
p_signal 按头文件增益换算到声明单位,d_signal 才是数字采样值。不同字段单位并不统一:ECG 示例为 mV,PPG 与载荷为任意单位,温度为摄氏度,IMU 为 g 与度/秒。把全部列直接做共同的幅度标准化可能掩盖物理含义,至少应按模态分别处理并保存原单位。
| 读取对象 | 推荐接口 | 返回语义 | 常见错误 |
|---|---|---|---|
| 波形与头信息 | wfdb.rdrecord |
通道名、频率、单位与波形 | 只读二进制后猜列顺序 |
| R 峰注释 | wfdb.rdann |
样点位置与注释符号 | 把 CSV peaks 当连续信号滤波 |
| 记录名 | 下载后的 RECORDS |
66 个合法前缀 | 根据 22×3 自行拼接并忽略清单 |
| 表格元数据 | pandas 读 subjects_info.csv |
每段活动与边界数值 | 以行为单位随机划分,造成身份泄漏 |
5.4 CSV 转换要保住三种语义
CSV 最容易读,也最容易把时间、波形与事件混成同类数值。time 是日期平移后的对齐轴;peaks 是离散事件;其余列是波形。正确转换至少要让这三类在数据模型中保持不同类型。
import pandas as pd
frame = pd.read_csv("csv/s1_run.csv")
meta = pd.read_csv("csv/subjects_info.csv")
wave_cols = [
"ecg", "pleth_1", "pleth_2", "pleth_3",
"pleth_4", "pleth_5", "pleth_6", "lc_1", "lc_2",
"temp_1", "temp_2", "temp_3",
"a_x", "a_y", "a_z", "g_x", "g_y", "g_z",
]
#-- 时间保留为索引候选,峰标记单独保存,波形按模态进入模型
clock = frame["time"]
r_peaks = frame["peaks"].astype("int8")
waves = frame[wave_cols]
#-- 元数据用完整记录名连接,不按行号猜对应关系
row = meta.loc[meta["record"].eq("s1_run")]
转换成 Parquet、NumPy 或张量时,还应把受试者键 sXX、活动、版本、通道映射声明一起写入旁车元数据。否则几个月后只剩一个矩阵,很难判断第几列是近端、红与红外采用了哪份文档、血压是否来自修订后的版本。
5.5 从 R 峰到候选 PTT 的最短流程
| 步骤 | 输入 | 动作 | 必须留下的记录 |
|---|---|---|---|
| 一 | .atr 与 ECG |
核验 R 峰可见性 | 注释版本、异常段处理 |
| 二 | 同编号近端/远端 PPG | 选定一种共同脚点定义 | 波长命名口径、滤波参数 |
| 三 | IMU 与载荷 | 标记明显动作或接触变化 | 质量规则与是否剔除 |
| 四 | 两处脚点 | 在同一心动周期内配对 | 配对失败规则 |
| 五 | 时间轴 | 计算远端与近端的时间差 | 采样轴、亚采样插值方法 |
| 六 | 受试者键 | 按人划分开发与评价集合 | 完整名单或可复现随机种子 |
| 七 | 边界血压 | 仅作开始/结束上下文 | 不扩写为逐搏真值 |
官方使用说明提到一种处理建议:用居中高斯滚动均值去除直流分量,再施加 0.75–5 Hz 带通,可得到与常见滤波数据相似的效果。这是发布者的经验建议,不是强制预处理,也不是所有 PTT 定义的最佳方案。滤波若引入相位移动,会直接污染毫秒级时间差;实现时应选择零相位处理或明确校正群延迟,并把原始波形保留下来复核。
5.6 六个最容易踩的坑
| 位置 | 错误做法 | 后果 | 稳妥做法 |
|---|---|---|---|
| 版本 | 使用 1.0.0 血压字段 | 舒张压重复收缩压 | 固定 1.1.0 并记录 DOI |
| 通道数 | 宣称有 19 路传感器波形 | 把 peaks 注释算成传感器 |
写明 18 路波形,CSV 另有峰列 |
| 波长 | 直接断言 pleth_1 是红或红外 |
文档冲突导致波长结论不可审计 | 绿光先行,或用中性通道名 |
| 时间量 | 用 ECG R 峰到 PPG 的间隔称 PTT | 混入射血前延迟 | 称脉搏到达时间,并与双 PPG PTT 分开 |
| 血压 | 把开始/结束值复制到整段 | 制造连续监督假象 | 只作为活动边界数值 |
| 划分 | 同一人的三种活动分到不同集合 | 身份特征泄漏 | 按 sXX 分组 |
| 低速通道 | 把 500 Hz 文件轴当原生采样 | 夸大压力与温度的时间细节 | 保留官网 80 Hz 与 10 Hz 硬件边界 |
| 噪声 | 忽略官方点名的异常 | 误把设备伪迹当生理变化 | 单独检查 13 号步行 ECG 与 IMU 单样点伪迹 |
§6 与库内条目的关系
6.1 相关数据集导航
这份资源位于“短距离双位置 PPG + 同步佩戴条件”的小生态位。站内已有资源各自补一块:PulseDB 补连续血压训练规模,PPG-DaLiA 补日常活动腕部 PPG,BIDMC PPG 补临床呼吸估计,BUT PPG 补手机采集与质量评价,MIMIC-III-Ext-PPG 补重症波形规模。它们不是互相替代,而是组成从受控原型到临床外测的路径。
| 资源 | 与本库的共同点 | 主要差异 | 更适合承担的角色 |
|---|---|---|---|
| PulseDB | PPG、ECG、血压研究 | 面向无袖带血压基准,不是同指双位置装置 | 血压模型训练与跨源评价 |
| BIDMC PPG | 临床 PPG 与同步生理信号 | 重点是呼吸率,来自临床监护 | 呼吸任务与临床波形外测 |
| PPG-DaLiA | PPG、运动与惯性信号 | 腕部日常活动,更接近自由生活 | 运动中心率与跨场景泛化 |
| BUT PPG | PPG 质量与心率 | 智能手机采集,含专家质量判断 | 采集质量评价 |
| MIMIC-III-Ext-PPG | 大量 PPG 与临床上下文 | 重症监护来源、规模远大 | 预训练与临床外部验证 |
| VideoPulse | 脉搏估计 | 从面部视频提取远程 PPG | 接触式与非接触式对照 |
| Graphene Bio-Z 血压库 | 可穿戴血压探索 | 腕上生物阻抗而非双 PPG | 跨传感机制比较 |
| CPS 综合睡眠库 | ECG、PPG 与 PTT 相关衍生量 | 整夜多导睡眠与临床事件 | 睡眠场景和长时程验证 |
| 巴塞罗那 SICU 波形库 | 多参数同步波形 | 外科重症床旁监护 | 复杂临床噪声与设备异质性 |
| MIMIC 初代多参数库 | ECG、压力、容积波同步 | 早期重症监护记录,通道对齐有自身边界 | 多参数方法历史对照 |
6.2 一条合理的组合路线
| 阶段 | 数据角色 | 推荐资源 | 为什么这样排 |
|---|---|---|---|
| 原型 | 检查双位置脚点与同步逻辑 | Pulse Transit Time PPG Dataset | 通道关系清楚,动作与佩戴旁证齐全 |
| 运动泛化 | 检查可穿戴动作噪声 | PPG-DaLiA、BUT PPG | 场景与采集设备发生变化 |
| 血压任务 | 引入连续或更丰富血压监督 | PulseDB | 避免把稀疏端点冒充连续真值 |
| 临床外测 | 检查重症波形与设备差异 | BIDMC PPG、MIMIC-III-Ext-PPG | 人群与临床环境明显不同 |
| 长时程 | 检查睡眠状态下的稳定性 | CPS 综合睡眠库 | 时间尺度与生理状态扩展 |
组合时不能只统一列名。腕部、指端、面部视频和 ICU 指夹的 PPG 光路不同;ECG 到 PPG 的时间量也不等于双位置 PPG 之差。跨库训练前应建立“位置、波长、参考设备、标签来源、时间同步、许可”六项数据卡,再决定哪些任务能共享模型。
6.3 分工判据
| 如果你的核心问题是 | 首选 | 本库应扮演什么角色 |
|---|---|---|
| 两个相邻指节间能否稳定测出相位差 | 本库 | 主数据源 |
| PPG 心率在自由活动中是否稳健 | PPG-DaLiA | 受控双位置补充 |
| 无袖带血压模型能否获得连续监督 | PulseDB | 机制探索与稀疏端点对照 |
| 重症患者上的 PPG 算法是否泛化 | MIMIC-III-Ext-PPG 或 BIDMC PPG | 健康受控开发集,不作临床结论 |
| 手机摄像头采集质量怎样判断 | BUT PPG | 接触式硬件对照 |
| PTT 在整夜睡眠中如何变化 | CPS 综合睡眠库 | 短时受控活动机制对照 |
§7 质量评估与局限性
7.0 先校正“官方描述即唯一事实”的假设
质量评估的第一步不是给波形打一个总分,而是区分页面叙述、README、目录和实际文件。页面提供研究设计与许可;README 提供硬件细节但版本标题仍停在 1.0.0;目录说明文件是否真实存在;.hea 与 CSV 首行给出最终发布结构。四层证据发生冲突时,应把冲突写入数据卡,而不是默默选择最方便的一句。
| 问题 | 页面 | 实际文件 | 处理结论 |
|---|---|---|---|
| 通道数 | 摘要称 19 路 | WFDB 为 18 路;CSV 有 18 路波形加 peaks |
同时报告两种口径及原因 |
| 红/红外编号 | 方法段与通道字典相反 | 文件只给 pleth_*,不编码颜色 |
不自行裁决 |
| README 版本 | 标题写 1.0.0 | 下载路径与头文件属于 1.1.0 | 版本以页面和路径为准 |
| 头文件扩展名 | 使用说明一处写 .head |
目录实际为 .hea |
代码使用 .hea |
| ECG 导联 | 方法段称 3 导联 | 公开一路 ecg |
写“3 导联硬件、1 路公开波形” |
7.1 五维质量判断
| 维度 | 判断 | 证据 | 对 AI 工作流的影响 |
|---|---|---|---|
| 同步性 | 强,但内部传感器延迟未量化 | 同一微控制器、2 毫秒读取窗口、共同 500 Hz 文件轴 | 适合相对时序研究,仍需写延迟假设 |
| 模态完整性 | 强 | 双位置 PPG、载荷、温度、IMU、ECG、边界数值 | 可做机制化融合与伪迹解释 |
| 标签完整性 | 有限 | 有人工核验 R 峰,无 PPG 脚点与 PTT 真值 | 适合自监督或弱监督,不是现成回归标签库 |
| 人群代表性 | 有限 | 22 名健康成人、年龄范围较窄 | 临床结论必须外部验证 |
| 文档一致性 | 存在明确瑕疵 | 通道数、波长、README 版本、扩展名表述有冲突 | 建议建立本地数据契约并保留证据链接 |
这种判断不能压成单一“高质量/低质量”。数据在同步采集与多模态旁证上很强,在人群规模与临床监督上有限,在文档一致性上需要主动治理。一个对脚点算法非常有价值的资源,完全可能不适合训练疾病分类器;质量必须跟任务绑定。
7.2 标注要分两层看
第一层是发布者提供的 R 峰。它经过自动检测与人工核验,是划分心动周期、估计参考心率和构造 ECG-PPG 间隔的基础。第二层是使用者从 PPG 派生的脚点、波峰、质量标记和 PTT。这一层没有官方真值,不同算法可能给出不同结果。
| 层级 | 谁产生 | 能否称人工核验 | 版本控制建议 |
|---|---|---|---|
.atr R 峰 |
发布者自动检测后人工核验 | 可以 | 保留原 .atr 与数据版本 |
CSV peaks |
发布者由注释展开 | 对应人工核验事件 | 不经滤波,保持二元事件列 |
| PPG 脚点 | 使用者算法或人工流程 | 取决于新流程 | 单独保存算法名、参数、代码版本 |
| 逐搏 PTT | 两处脚点相减得到 | 不可以冒充官方标注 | 保存输入通道、配对规则与质量标志 |
| 血压目标 | OMRON 起止读数 | 仪器数值,不是逐搏标注 | 保留 start/end 语义 |
如果团队需要建立训练标签,最好把原始层与派生层放在不同文件,不改写官方 CSV。这样更新脚点算法时可以重建派生标签,也能追查某个异常究竟来自原波形、R 峰还是自定义规则。
7.3 可枚举的偏差与伪迹
官方明确点名两类问题:13 号受试者在步行活动中的 ECG 特别嘈杂;MPU-9250 偶尔出现单样点伪迹,包括温度通道。除此之外,数据设计本身还带来可以从结构判断的边界:健康志愿者偏差、同一机构与同一设备偏差、同指双位置偏差、受控活动偏差、人口学档位化以及真实日期不可用。
| 来源 | 官方明确还是结构边界 | 可能影响 | 建议处理 |
|---|---|---|---|
| 13 号步行 ECG 噪声 | 官方明确 | R 峰参考与融合输入 | 单独复核,不静默删除 |
| MPU-9250 单样点伪迹 | 官方明确 | IMU 与 temp_3 瞬时异常 |
使用局部质量标记并保留原值 |
| 原始信号未滤波 | 官方明确 | 直流、动作和高频干扰保留 | 预处理版本化,检查相位影响 |
| 22 名健康成人 | 官方明确 | 临床与年龄泛化有限 | 外部数据验证 |
| 每人三种活动 | 结构边界 | 随机按记录划分会泄漏身份 | 按受试者分组 |
| 同一根左食指 | 官方明确 | 难代表其他测点路径 | 不跨部位直接解释 |
| 年龄/身高/体重档位化 | 官方明确 | 精细个体建模受限 | 保留分档语义 |
| 日期平移 | 官方明确 | 真实时段与季节分析不可做 | 只用段内相对时间 |
7.4 外部验证该怎么安排
内部验证应按受试者分组,但即使严格分组,评价仍只回答“同一悉尼大学设备与协议下,对未见健康成人是否有效”。要回答设备泛化、部位泛化、疾病泛化或自由生活泛化,必须引入其他数据源。外部资源不一定含同样的双位置 PPG,因此验证目标要拆开:脚点检测可在有 PPG 的库上检查;ECG-PPG 到达时间可在同步库上检查;短距离双 PPG 的绝对方法比较则可能只能留在当前设备内。
| 泛化问题 | 当前数据能做什么 | 还需要什么 |
|---|---|---|
| 未见受试者 | 按 sXX 留组评价 |
足够完成内部身份隔离 |
| 未见活动 | 可用三种活动做条件外推 | 活动种类少,需自由生活数据 |
| 未见设备 | 不能单库完成 | 其他 PPG 传感器与采集链 |
| 未见部位 | 不能单库完成 | 腕、耳、额或其他测点数据 |
| 临床人群 | 不能单库完成 | 高血压、心律失常、灌注异常等病例 |
| 连续血压 | 不能单库完成 | 同步参考动脉压或经过验证的连续设备 |
7.5 为什么它仍值得长期保留
数据规模不大,文档也有冲突,但它把多个常被单独讨论的误差源放进了同一次采集:位置、波长、夹持压力、温度、动作与 ECG 参考。这种组合使失败更容易解释。一个 PPG 模型在跑步段失效,可以追问是手指运动、指夹松动、波长响应还是心搏配对出了问题;单点 PPG 只能告诉你“波形坏了”。
另一个长期价值是原始信号未预先滤波。发布者明确选择保留时序信息,让研究者可以比较不同滤波和脚点定义。代价是工作量更大,也更容易产生不可比结果;收益是方法更新后仍能回到同一原始层重跑,而不是被旧处理链永久限制。
§8 生态位与历史
8.1 从心率融合研究到 PTT 公共材料
关联论文《Deep Learning Fused Wearable Pressure and PPG Data for Accurate Heart Rate Monitoring》发表于 2021 年 IEEE Sensors Journal,作者与数据集作者一致,DOI 为 10.1109/JSEN.2021.3123243。官方使用说明称这份数据已用于准确心率监测研究;数据集随后于 2022 年在 PhysioNet 发布,使同一设备材料也能用于短距离 PTT、无袖带压力感知与其他心血管活动建模。
| 阶段 | 主要问题 | 数据中承担证据的模态 |
|---|---|---|
| 设备原型 | 双位置 PPG 与压力能否同步采集 | 六路 PPG、两路载荷、共同微控制器 |
| 心率融合 | 运动中如何用压力和 PPG 改善心率监测 | PPG、载荷、ECG R 峰、IMU |
| 公共发布 | 如何让外部团队复现与扩展 | WFDB、CSV、设备图、元数据、许可 |
| PTT 扩展 | 近端与远端的波形特征如何配对 | 双位置同编号 PPG 与同步时间轴 |
| 血压探索 | PTT 与边界袖带读数如何关联 | 起止血压,但缺连续参考 |
8.2 它与常见 PTT 数据路线的差别
PTT 研究常见两条路线。一条以 ECG R 峰为近似起点、以外周 PPG 为终点,数据容易获得,但间隔包含射血前延迟;另一条在两个外周位置都放脉搏传感器,生理定义更接近传播时间,却对同步与特征点更苛刻。这份资源同时给出两条路线需要的信号,允许在同一活动与同一受试者上比较。
| 路线 | 典型输入 | 优点 | 限制 | 本库支持度 |
|---|---|---|---|---|
| ECG→PPG | R 峰与某处 PPG | 起点注释清楚、实现简单 | 包含心脏机电延迟 | 支持,有核验 R 峰 |
| 近端 PPG→远端 PPG | 两处同波长 PPG | 更贴近外周传播 | 时差短、脚点敏感 | 核心支持 |
| 压力波→PPG | 动脉压力与外周 PPG | 可有清楚的压力参考 | 常见于临床有创环境 | 不支持连续压力起点 |
| 多部位长路径 | 耳/腕/指/足等组合 | 时间差更大 | 设备同步与部位差异复杂 | 不支持多部位,只在同指 |
8.3 在 AI 数据栈中的位置
它更像“机制开发与误差诊断集”,而不是“规模训练集”。模型可以在更大的 PPG 库上学习通用形态,再回到这里测试双位置一致性;也可以先在这里开发多模态质量门控,再到自由生活数据检查迁移。若直接用 22 人训练高容量网络并把随机记录划分结果写成普遍性能,数据的独特结构反而会被身份记忆掩盖。
| AI 环节 | 适配程度 | 推荐任务 |
|---|---|---|
| 原始信号预训练 | 有限 | 规模小,不宜作为唯一来源 |
| 多模态表征 | 较强 | PPG、压力、IMU、温度与 ECG 联合编码 |
| 自监督对比 | 较强 | 同一搏动的双位置/多波长正对照 |
| 监督 PTT 回归 | 有限 | 无官方 PTT 真值,需派生目标 |
| 心率监督 | 较强 | 有人工核验 R 峰 |
| 连续血压监督 | 弱 | 只有起止袖带数值 |
| 误差归因 | 很强 | 动作、接触与波形可同步检查 |
| 临床部署验证 | 弱 | 健康受试者、单设备、单机构 |
8.4 谁最可能用得上
生理信号研究者可以比较波脚、最大斜率、互相关等时差定义,但必须公开定义与滤波相位;可穿戴工程师可以检查指夹压力、IMU 与温度伪迹;机器学习团队可以做多视图对比学习、缺失模态重建和质量门控;教学者可以展示 PTT 与脉搏到达时间的差别。临床诊断团队若需要疾病标签、连续动脉压或多中心病例,应把它放在方法原型阶段,而不是终局证据阶段。
§9 使用指引
9.1 三种角色的最短路径
| 角色 | 第一天做什么 | 第一周应交付什么 | 暂时不要做什么 |
|---|---|---|---|
| 信号处理研究者 | 读一个静坐段、核对 R 峰与绿光双位置波形 | 脚点定义、滤波相位与质量规则文档 | 先跑全库再补方法说明 |
| 机器学习工程师 | 建立受试者分组与模态字典 | 可复现数据切分、输入单位与派生标签版本 | 按记录随机拆分 |
| 可穿戴硬件研究者 | 对照设备图、载荷与 IMU | 接触变化和动作事件的案例审计 | 把载荷任意单位写成绝对力 |
| 血压研究者 | 先核对 v1.1.0 起止字段 | 明确稀疏端点的使用方式与外部连续参考计划 | 把端点复制成整段标签 |
| 数据治理人员 | 保存来源 URL、DOI、许可与哈希 | 数据卡、不一致清单、衍生文件血缘 | 覆盖官方原文件 |
9.2 一个不夸大的最短实验
最短实验可以只回答一个窄问题:“在静坐条件下,绿光近端与远端能否被同一种脚点规则稳定配对?”先固定 pleth_6 与 pleth_3,用 .atr 切出心动周期,保留原始波形与一种零相位预处理,输出每搏的脚点质量标志;按受试者划分开发与评价集合。随后再把同一规则原封不动地用于原地步行和跑步,观察失败案例,并联看 IMU 与载荷。
| 实验组件 | 最小选择 | 报告中要写清 |
|---|---|---|
| 通道 | pleth_6 近端、pleth_3 远端、ecg |
选择绿光是为避开映射冲突 |
| 周期参考 | .atr R 峰 |
注释为自动检测后人工核验 |
| 预处理 | 原始与一种零相位版本并存 | 截止频率、边界处理、相位性质 |
| 脚点 | 一种固定定义 | 数学定义与失败条件 |
| 质量旁证 | lc_1/2、加速度、角速度 |
只作旁证还是模型输入 |
| 划分 | 按 sXX |
同一人的三活动不得跨集合 |
| 结论边界 | 三种受控活动的健康成人 | 不扩展为临床连续血压结论 |
这个实验不需要自行制造总体统计,也不需要挑一个最漂亮的聚合数字。核心交付是可追溯的事件链:R 峰属于哪一搏、两个脚点如何找到、接触和动作是否异常、失败为何发生。短距离 PTT 的难点正是每一个毫秒都依赖这些前提。
9.3 引用、许可与可复现清单
| 项目 | 应保存的内容 |
|---|---|
| 数据引用 | Mehrgardt、Khushi、Poon、Withana,Pulse Transit Time PPG Dataset v1.1.0,PhysioNet,DOI 10.13026/jpan-6n92 |
| 平台引用 | 按 PhysioNet 当前页面给出的标准平台引用要求执行 |
| 关联论文 | 需要讨论心率融合方法时引用 DOI 10.1109/JSEN.2021.3123243 |
| 许可 | ODbL 1.0;检查署名、分享改编数据库与 Produced Work 相关条款 |
| 下载证据 | 来源 URL、下载日期、SHA256SUMS.txt、文件版本 |
| 数据契约 | 18 路波形、peaks 注释、波长冲突说明、原生采样边界 |
| 切分证据 | 受试者级集合名单 |
| 派生标签 | 脚点算法、滤波、配对规则、代码版本 |
| 不一致处理 | 不覆盖原文,记录选择与依据 |
许可允许访问、共享、修改和使用数据库,同时强调维持相应自由及数据库权利义务。这里不是法律意见;对外分发改编数据库或商业产品前,应由使用方根据实际行为阅读 LICENSE.txt 全文。
§10 AI 使用声明
| 项目 | 说明 |
|---|---|
| 文本生成 | 本页面由 AI 辅助整理,围绕官方版本页、README、文件目录、代表性头文件、CSV 字段行、许可文本与关联论文元数据组织;结论性边界由编辑流程约束。 |
| 数字来源 | 受试者、记录、活动、年龄、性别、心搏规模、硬件与采样信息来自 PhysioNet v1.1.0 页面及 README;总体积来自官方文件页;论文 DOI 来自 Crossref 元数据。 |
| 文件核验 | 已核对 RECORDS、ANNOTATORS、s1_run.hea、csv/s1_run.csv 首行、csv/subjects_info.csv 首行、根目录与 CSV 目录清单;未下载 2.9 GB 全量波形。 |
| 不一致说明 | 官网称 19 路,而 WFDB 为 18 路波形、CSV 另含 peaks;红光与红外编号在方法段和通道字典互换;README 标题仍为 1.0.0;使用说明一处写 .head,实际为 .hea;3 导联硬件只发布一路 ecg。 |
| 论文信息 | 关联论文为 Mehrgardt 等 2021 年 IEEE Sensors Journal 论文《Deep Learning Fused Wearable Pressure and PPG Data for Accurate Heart Rate Monitoring》,DOI 10.1109/JSEN.2021.3123243。 |
| 未核验内容 | 未逐段核验全部波形质量;未核验每段持续时间、每人精确测点距离、低速传感器映射到 500 Hz 文件轴的算法、红/红外最终正确编号、所有 R 峰人工复核细节,也未生成任何衍生 PTT 结果。 |
| 图像 | 未生成或分析封面图;设备示意仅依据官方 device_schematic.png 的文件存在与页面说明,不从图中推导数值距离。 |
| 免责 | 这份说明用于数据发现与研究设计,不构成医疗建议、临床诊断、设备认证、许可法律意见或血压监测有效性证明。 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| “这是 19 路传感器波形” | WFDB 明列 18 路波形;CSV 的第 19 个非时间数据列是 peaks 注释 |
s1_run.hea 与 CSV 首行 |
“pleth_1 肯定是红光” |
同一官网的方法段/README 与通道字典相互冲突 | v1.1.0 Methods 与 Data Description |
| “ECG 有三路公开导联” | 硬件称 3 导联,但文件只有一路 ecg |
头文件通道清单 |
| “R 峰就是 PTT 起点真值” | ECG 到 PPG 包含射血前延迟;双位置 PPG 之差才针对外周传播 | 信号定义与字段结构 |
| “血压是连续标签” | 只有每项活动开始与结束的袖带收缩压、舒张压 | subjects_info.csv 字段 |
| “载荷通道就是血压” | 载荷记录指夹附着压力,且为任意单位 | 硬件与通道字典 |
| “所有列原生都是 500 Hz” | 文件轴为 500 Hz;载荷硬件 80 Hz,两路指夹温度 10 Hz | Methods 与 .hea |
| “1.0.0 和 1.1.0 只差文档” | 1.1.0 修复舒张压重复收缩压的错误 | Release Notes |
| “三种活动可以随机拆成训练和测试” | 同一受试者会跨集合,身份信息泄漏 | 文件名的 sXX 主键 |
| “这是自由生活数据” | 活动在悉尼大学受控采集,步行为原地步行 | Methods |
| “能直接计算脉搏波速度” | 缺每次佩戴的数值测点距离 | 公开字段与设备说明 |
| “健康成人结果可直接用于患者” | 无疾病病例和诊断标签,人群范围有限 | 官方受试者描述 |
| “官方推荐滤波就是唯一正确处理” | 0.75–5 Hz 是使用说明中的经验建议,时间差研究仍需处理相位 | Usage Notes |
| “README 写 1.0.0,所以目录不是最新版” | 当前下载路径与版本页为 1.1.0,README 标题未同步更新 | 版本页、路径与 Release Notes |
FAQ
Q1:这份数据里有没有可以直接训练的 PTT 标签?
没有。发布者提供的是同步原始波形、ECG R 峰注释、活动和边界数值,并未给 PPG 波脚或逐搏 PTT。要建立目标,必须在近端与远端同编号 PPG 上使用一致的特征点定义,再在同一心动周期内配对。得到的数值属于研究者派生标签,应连同滤波、插值、质量规则和失败处理一起版本化。若从 ECG R 峰算到 PPG,名称宜写脉搏到达时间,并说明包含心脏机电延迟。
Q2:官网说 19 路,为什么这里写 18 路波形?
因为两个口径混在了一起。官方摘要称 19 physiologic time series;代表性 .hea 文件第一行明确声明 18 路,后续通道也正好是 1 路 ECG、6 路 PPG、2 路载荷、3 路温度、3 路加速度和 3 路角速度。CSV 在这些波形外增加 peaks,去掉 time 后共有 19 个数据列。为了让模型输入可审计,建议写“18 路波形 + 1 列 R 峰标记”,同时保留官网原口径说明。
Q3:红光与红外到底对应哪些通道?
公开材料无法给出唯一答案。方法段和 README 将 pleth_1/4 写为红外、pleth_2/5 写为红光;通道字典反向标注。文件名本身没有颜色后缀,设备图也不应被用来猜电子通道映射。只需研究位置时,可以把两组称为通道 A 与 B;需要波长结论时,可先使用双方都一致的绿光 pleth_3/6,或获得作者确认后再固定红与红外映射。
Q4:能否用它训练无袖带连续血压模型?
可以做早期机制探索,却不能把它当连续血压金标准。收缩压与舒张压只在每项活动开始、结束处由袖带设备记录,中间没有连续参考压力。若把端点复制到整段,会把运动过程中的真实变化抹掉并制造标签。更稳妥的用途是检验双 PPG 延迟、佩戴压力与端点血压是否存在可研究关系,再用 PulseDB 或其他带连续参考的资源训练和验证逐搏模型。
Q5:最小下载与最小复现集合是什么?
核对结构时,只需版本页、README、RECORDS、ANNOTATORS、一个 .hea/.dat/.atr 组合、对应 CSV 首行、subjects_info.csv、许可与校验清单。运行完整实验时,应下载所需活动的三件套并保存 SHA256 证据。代码里固定 pulse-transit-time-ppg/1.1.0,按 sXX 分组,先用绿光双位置和 R 峰完成一条可审计链,再扩展到其他波长与动作。
术语表
| 术语 | 含义 |
|---|---|
| PPG | Photoplethysmogram,光电容积脉搏波,用光学方法观察局部血容量随心搏变化 |
| PTT | Pulse Transit Time,脉搏波在两个血管位置之间传播所需时间 |
| PAT | Pulse Arrival Time,常指 ECG 事件到外周脉搏特征点的间隔,包含射血前延迟 |
| ECG | Electrocardiogram,心电图;这里公开一路波形并提供 R 峰注释 |
| R 峰 | QRS 波群中的主要峰值,用于标记心室去极化时刻与划分心动周期 |
| 波脚 | PPG 脉搏开始上升附近的特征点,具体算法定义并不唯一 |
| 近端/远端 | 相对躯干而言较近/较远的位置;这里指左食指基部与末端指节 |
| MAX30101 | 集成多 LED 与光电探测的 PPG 传感器,数据中使用两枚 |
| 载荷单元 | 将机械受力转换为电信号的传感器,这里记录指夹附着压力 |
| IMU | Inertial Measurement Unit,惯性测量单元;这里含三轴加速度与三轴角速度 |
| SpO2 | 外周血氧饱和度,活动开始与结束处由商用脉搏血氧仪记录 |
| WFDB | WaveForm DataBase 格式,用头文件、二进制信号与事件注释组织生理波形 |
.hea |
WFDB 头文件,声明记录轴、通道、增益、单位与元数据 |
.atr |
本库的 R 峰注释文件,注释角色为人工核验心搏事件 |
| ODbL 1.0 | Open Data Commons Open Database License v1.0,数据库开放许可 |
| 去识别日期平移 | 整体移动时间戳以隐藏真实日期,同时保留段内相对时间关系 |
| 受试者级划分 | 以 sXX 为分组单位,确保同一人的三种活动不跨训练与评价集合 |
| 零相位滤波 | 前后向等方法消除净相位偏移的处理;仍需说明边界效应与实现 |
| 任意单位 | 数值保留相对变化,但没有发布为可直接解释的绝对物理校准单位 |
附录 A:核心数字核对表
| 核心数字或边界 | 出处 |
|---|---|
| 最新版本 1.1.0,发布日期 2022-03-18 | PhysioNet 官方版本页 的页首与 Versions |
| 初始版本 1.0.0,发布日期 2022-03-10 | 官方版本页 Versions 与 Release Notes |
| 22 名健康受试者、66 段记录、3 种活动 | 官方版本页 Abstract、Methods;根目录 RECORDS |
| 6 名女性;年龄 20–53 岁;官方均值 28.52 岁 | 官方版本页 Methods 与 README.txt |
| 三种活动为静坐、原地步行、跑步,顺序随机 | 官方版本页 Methods |
| 官方称超过 40000 次心搏 | 官方版本页 Background;未自行从注释汇总 |
| 摘要称总计 19 路 | 官方版本页 Abstract |
| WFDB 发布 18 路波形、500 Hz 文件轴 | 官方文件 s1_run.hea 首行及 18 条通道声明 |
CSV 为 time + peaks + 18 路波形 |
官方文件 csv/s1_run.csv 首行 |
| 2 个 PPG 位置、每处 3 个波长,共 6 路 PPG | 官方版本页 Background、Methods 与 Data Description |
| 红外标称 880 nm、红光 660 nm、绿光 537 nm | 官方版本页 Methods;红/红外通道编号与 Data Description 冲突,数值按官方标称记录 |
| MAX30101 配置:LED 电流 18.8 mA、脉宽 215 微秒、ADC 范围 16384 | 官方版本页 Methods 与 README.txt |
| 2 路 TAL221 载荷、HX711 为 24 位、硬件 80 Hz | 官方版本页 Methods |
| MPU-9250 六轴惯性为 500 Hz;AD8232 ECG 为 500 Hz | 官方版本页 Methods |
| 两路指夹温度在通道字典中标为 10 Hz;IMU 温度标为 500 Hz | 官方版本页 Data Description |
| 微控制器为 180 MHz ARM Cortex-M4,读取窗口 2 毫秒 | 官方版本页 Methods |
| 活动开始/结束各有收缩压、舒张压、两设备心率与 SpO2 字段 | 官方版本页 Data Description;csv/subjects_info.csv 首行 |
| 年龄、身高、体重按 5 为增量发布 | 官方版本页 Data Description |
v1.1.0 修复 bp_dia_start/end 重复 bp_sys_start/end |
官方版本页 Release Notes |
| 13 号受试者步行 ECG 特别嘈杂 | 官方版本页 Usage Notes |
| MPU-9250 偶有单样点伪迹,包括温度 | 官方版本页 Usage Notes |
| 发布者给出的示例带通范围为 0.75–5 Hz | 官方版本页 Usage Notes;仅为处理建议 |
| 未压缩总体积 2.9 GB | 官方版本页 Files 区域 |
| 版本 DOI 10.13026/jpan-6n92;最新版 DOI 10.13026/338y-cd69 | 官方版本页 Citation 与 Discovery |
| 数据许可为 ODbL 1.0 | 官方版本页 Access/License 与 LICENSE.txt |
| 伦理审批编号 2020/7059,参与者书面同意 | 官方版本页 Methods |
| 关联论文 DOI 10.1109/JSEN.2021.3123243,2021 年发表于 IEEE Sensors Journal | 官方版本页 References;Crossref 论文元数据 |
| 每段持续时间、精确测点距离、低速通道到 500 Hz 网格的方法 | 官方未给统一可核验说明,列入 §10“未核验内容”,不自行补算 |
导航说明:若目标是短距离双位置 PPG 与佩戴条件,请从本库开始;若目标是连续血压、自由生活心率或临床外测,请沿 §6 的相关数据集导航进入 PulseDB、PPG-DaLiA、BIDMC PPG 与 MIMIC-III-Ext-PPG,并始终保留任务、位置、标签与许可边界。

