信息速览
呼吸力学的公开数据里有一个长期存在的空缺:呼吸侧的通道越来越齐——压力、流量、容积、胸腹周长、电阻抗断层成像(Electrical Impedance Tomography, EIT)都在不同数据集里出现过,可心脏侧几乎是空白。于是"呼吸动作对心血管的影响"这类问题只能靠推测:用力呼气时胸腔压力骤变,心率会不会跟着摆?屏气十秒,心电与光电容积各自给出什么反应?这些问题在临床上有实际分量,心肺疾病的症状常常互相掩盖,却缺少一份把两侧放在同一条时间轴上的公开数据。
Respiratory and heart rate monitoring dataset from aeration study 补的正是这一格。坎特伯雷大学团队在 2024 年 3 月 20 日把 20 名健康成人的三类试验放到 PhysioNet:PEEP 递增、PEEP 递增加屏气、用力呼气动作。呼吸侧有文丘里式压力流量与 EIT 通气图像,心脏侧同时挂了自制心电、自制三通道光电容积与商用心率带——三条心脏通道互相独立,可交叉校验。它的定位写得很克制:不是疾病队列,而是"概念验证"队列,用来为后续在已知呼吸系统异常人群上做临床测试打底。
它的代价也很直接:20 人、单一中心、健康人群、无诊断标签、心脏通道只是"基础配套"。它不适合训练任何需要大样本的模型,适合回答一类别处难以回答的问题——在呼吸被外力精确扰动的那一刻,心跳怎么变。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | Respiratory and heart rate monitoring dataset from aeration study |
| 发布方 | PhysioNet(原始数据由新西兰坎特伯雷大学与德国 Furtwangen 大学团队贡献) |
| 首次发布 | 2024 年 3 月 20 日,版本 1.0.0 |
| 最近改动 | 2024 年 3 月 20 日(SHA256SUMS.txt 于 3 月 20 日、LICENSE.txt 于 3 月 19 日更新),目前仅一个版本 |
| 受试者数 | 20 名成人,按性别均分(男 10、女 10),无已知显著呼吸系统异常 |
| 试验种类 | 3 类:PEEP 递增(PEEP)、PEEP 递增加屏气(PEEP_BH)、用力呼气动作(FEM) |
| 记录段数 | 20 人 × 3 类 = 60 段(处理层 60 个 CSV,EIT 原始层 60 个二进制文件) |
| 单段时长 | PEEP 与 PEEP_BH 为四段 1 分钟记录加三段 30 秒设置间隔;FEM 为 60 秒 |
| 压力边界 | PEEP 取 0(ZEEP)、4、8 cmH2O 三档 |
| 同步通道数 | 处理层每个 CSV 18 列(A:R),覆盖压力流量、EIT 整体通气、心电、三路光电容积、心率带心率与 RR 间期 |
| 采样率 | 压力流量 100 Hz;EIT 50 Hz;心电与光电容积以 HH:mm:ss.SSS 时间字符串记录;心率带以 HH:mm:ss.SSSSSS 时间字符串记录 |
| 图像规格 | EIT 每帧 32×32 像素,代表胸部横截面的区域通气分布 |
| 文件格式 | CSV(处理层与压力流量层)、.bin(EIT 原始)、.txt(心率带)、.csv(心电与光电容积)、.m(MATLAB 处理代码)、.png(示例图) |
| 原始层文件数 | 压力流量 120 个(60 个带单位 + 60 个原始 ADC)、EIT 60 个、心电 20 个、光电容积 20 个、心率带 18 个、MATLAB 代码 4 个 |
| 数据体量 | 未压缩 5.3 GB,官方 ZIP 3.1 GB |
| 伦理与许可 | 坎特伯雷大学人类研究伦理委员会 HREC 2023/30/LR-PS(2023 年 4 月 24 日批准);CC BY 4.0 |
| 典型用途 | 呼吸力学模型辨识、心肺耦合分析、可穿戴心率与呼吸率算法的对照评测、EIT 通气图像算法基准 |
§1 它要解决的具体麻烦
1.1 呼吸测得越来越细,心脏侧却一直缺位
呼吸功能评估有两条路线。第一条是传统肺功能路线:用力肺活量、一秒率这类指标来自一次用力呼气动作,测的是"极限能力",设备成熟、判读标准成熟,但只给几个标量,不给过程。第二条是模型路线:用压力与流量反推出弹性与阻力,把肺当成一个可辨识的系统,好处是能在平静呼吸下做、不打断患者,代价是依赖数学模型与高质量的同步信号。
过去十年公开数据的增长几乎全部发生在第二条路线上,而且通道越加越多:先是压力流量,再是胸腹周长,再是 EIT。但有一个方向几乎没人做——把心脏侧的信号同时接进来。理由不难理解:呼吸力学研究者的目标是辨识肺的力学参数,心电在他们看来是干扰源而不是变量。
后果是具体的。呼吸系统疾病在临床上很少单独出现,心血管症状与呼吸症状互相掩盖;用力呼气、屏气这类动作本身会引起胸腔内压变化,进而改变回心血量与心率。想知道"呼吸侧的扰动会不会污染心脏侧的算法",或者反过来"心脏侧的波动会不会被误读成呼吸事件",需要两侧在同一时间轴上、且呼吸侧有明确的扰动时刻。这份数据把扰动时刻设计得很清楚:每 200 毫秒一次快速阻断,每一档 PEEP 之间留 30 秒调整窗,屏气由受试者自己掐秒表。
1.2 三条常见的错误期待
第一条,期待它带"呼吸率 + 心率"的现成联合标注。官方名称里有 heart rate,但心率带给的是 RR 间期与每分钟心跳数两列原始值,心电与光电容积给的是波形,"呼吸率"根本没有独立通道——它要从流量或压力里自己算。名字里的"呼吸"指的是压力流量与 EIT 通气,不是一条已经算好的呼吸率曲线(§2.2、§4.4)。
第二条,期待它是疾病队列。官方写得很明确:20 人按性别均分,选择标准是"无已知显著呼吸系统异常",队列定位是概念验证,目的是"尽量减少对疾病人群的负担"。用它训练疾病分类模型,标签无从谈起。
第三条,期待心脏侧是临床级设备。心电与光电容积是团队自制的采集系统,心率带是商用 Garmin HRM Dual。三条通道互相对照是其价值所在,但任何一条单独拿出来都不构成临床级参考标准。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 呼吸力学模型(弹性、阻力)的辨识与验证 | 压力、流量、潮气量,每 200 毫秒一次被动阻断窗 | 够,且这是作者设计它的首要目的 |
| 心肺耦合分析 | 呼吸侧扰动时刻明确,心脏侧三条通道同步 | 够,条件是扰动时刻要自己从协议里还原 |
| 可穿戴心率算法评测 | 心率带 RR 间期与心电波形可互相对照 | 够做一致性对照,不够做大规模准确率评测 |
| 光电容积呼吸率估算 | 三路 LED 光电容积加同步流量曲线 | 可做,流量需先积分出容积再判定呼吸周期 |
| EIT 通气图像算法 | 32×32 像素序列,50 Hz | 够做方法验证,受试者数不足以训深度模型 |
| 胸廓形态对 EIT 精度的影响分析 | subject-info.csv 含背宽与胸骨至脊柱深度的量得值、罩杯自报值 | 够,这是它相对同组其他数据集多出来的一块 |
| 疾病人群建模 | — | 不够,全部为健康人群 |
| 多中心泛化验证 | 单一中心、单一国别 | 不够 |
| 用药或结局研究 | — | 不够,无随访、无用药、无结局变量 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你在做呼吸力学模型辨识,缺一个带被动阻断窗的数据集 | 每 200 毫秒的快速阻断提供了被动力学评估窗,无需受试者配合 | 先从 PSD 吸气指数列定位阻断窗,再套你的辨识算法(§4.2) |
| 你在做屏气或瓦尔萨尔瓦类动作的生理反应研究 | PEEP_BH 试验在每个压力档安排两次约 10 秒屏气,时刻由受试者掐表 | 用流量归零区间反推实际屏气起止,别直接采信秒表(§5.6) |
| 你在做光电容积呼吸率估算,需要同步的呼吸真值 | 三路 LED 加同步流量,可在同一条时间轴上比对 | 先把流量积分成容积,再与光电容积导出的呼吸带对齐 |
| 你在评估心率带在日常活动下的误差 | 心率带 RR 间期可与同段心电波形逐拍对照 | 注意受试者 1、2 没有心率带数据,样本是 18 人 |
| 你在做 EIT 图像重建或通气分布量化 | 60 个 32×32 序列,跨三類试验 | 用官方 read_binData.m 读原始 .bin,别指望处理层的单列整体通气 |
| 你想证明胸廓形态会影响 EIT 精度 | subject-info.csv 同时给了背宽、胸骨至脊柱深度与罩杯 | 把形态量作为协变量纳入,注意全部为自报或双人测量 |
| 你在教生理信号课程,需要一份多模态同步的例子 | 五个模态在一张 18 列表里,可直接画多通道图 | 用官方 Figure1-3 与 FigureGeneration.m 复现示例图 |
1.5 一句话判断
它不适合当"更大的训练集",而适合当"一侧扰动、另一侧观察"的实验台:呼吸侧被外力精确扰动,心脏侧三条通道同时记录,这种设计在公开数据里几乎找不到第二份。
1.6 不适合谁:四条边界
不适合拿来做疾病判别。 全部受试者无已知显著呼吸系统异常,无诊断标签。想做阻塞性或限制性异常的判别,需要换用带疾病人群的同组数据集(§6.1)。
不适合拿来训练大模型的骨干网络。 20 人、60 段,一个中等规模的卷积网络一两轮就能记全。它的合理用法是方法验证与外部对照。
不适合拿来严格评价可穿戴设备的临床精度。 心电与光电容积是自制采集系统,心率带是商用消费级产品。三条通道互相比对可以说明"消费级设备与自制心电差多少",但不能推出"设备在临床场景下准不准"。
不适合拿来算人群层面的统计结论。 20 人按性别均分,是刻意设计的均衡小样本,不是人群抽样。任何以它为样本的分布性结论都不成立。
§2 数据构成与规格
2.1 目录的四个层次
官方目录按"处理层 + 三个原始层"组织,另加一个代码目录与几个根目录文件。
| 路径 | 内容 | 文件数 | 命名规则 |
|---|---|---|---|
/1.0.0/Processed_Dataset/ |
五模态已对齐的处理结果 | 60 | ProcessedData_Subject01_PEEP.csv 等,编号 01–20 |
/1.0.0/PQ_rawData/ |
压力流量原始与带单位版本 | 120 | Subject1_PEEP.csv 与 Subject1_PEEP_raw.csv |
/1.0.0/EIT_rawData/ |
EIT 设备原始二进制 | 60 | S01_PEEP.bin 等,编号 01–20 |
/1.0.0/HRM_rawData/ECG/ |
心电,每人一个文件含三类试验 | 20 | S01_ECG.csv |
/1.0.0/HRM_rawData/PPG/ |
光电容积,每人一个文件含三类试验 | 20 | S01_PPG.csv |
/1.0.0/HRM_rawData/HRB/ |
心率带,受试者 3 至 20 | 18 | 3.txt 至 20.txt |
/1.0.0/Code/ |
MATLAB 采集、处理、读图与绘图代码 | 4 | DataCollection_PQ.m、DataProcessing.m、read_binData.m、FigureGeneration.m |
/1.0.0/subject-info.csv |
人口学与胸廓形态 | 1 | 单文件,21 列(A–U) |
/1.0.0/ |
示例图、许可、校验和、说明 | 5 | Figure1-3.png、LICENSE.txt、SHA256SUMS.txt、README.txt |
四个层次的关系值得先理清,因为它决定了你该从哪一层入手。处理层是官方用 DataProcessing.m 把三个原始层拼起来的产物,优点是五模态已在一条时间轴上,缺点是只保留了 EIT 的整体通气单列,32×32 的空间信息被压掉了。原始层的优点是完整(EIT 有空间、压力流量有 ADC 原始值),缺点是需要自己对齐时间。做空间类研究必须回到 EIT_rawData,做时间序列类研究从 Processed_Dataset 起步最省事。
2.2 处理层 18 列的完整字典
处理层每个 CSV 的列顺序固定,官方 README 用 A 到 R 标注。受试者 1、2 因未采集心率带,只有 A 到 O 共 15 列。
| 列 | 名称 | 单位 | 含义 | 使用注意 |
|---|---|---|---|---|
| A | PSD Time [s] | 秒 | 压力流量数据时间轴 | 与 EIT、心电时间轴不同起点 |
| B | PSD Gauge Pressure [cmH2O] | cmH2O | 表压 | 呼吸力学辨识的主输入 |
| C | PSD Inspiratory Differential Pressure [cmH2O] | cmH2O | 吸气支路差压 | 与呼气支路分开测量 |
| D | PSD Expiratory Differential Pressure [cmH2O] | cmH2O | 呼气支路差压 | 阻断发生在这一支路 |
| E | PSD Flow [L/s] | 升/秒 | 由两路差压合成 | 符号区分吸呼 |
| F | PSD Tidal Volume [L] | 升 | 按吸气指数对流量积分 | 积分口径由官方代码确定 |
| G | PSD Inspiratory Indicies | 索引 | 依据表压拐点识别的吸气指数 | 切呼吸周期的关键列 |
| H | EIT Time [s] | 秒 | EIT 时间轴 | 50 Hz,与 A 列不同长度 |
| I | EIT Global Aeration | 无量纲 | EIT 整体通气 | 空间信息已聚合,做区域分析需回原始层 |
| J | ECG Time [s] | 秒 | 心电时间轴 | 部分受试者在试验间暂停采集 |
| K | ECG [mV] | 毫伏 | 心电波形 | 自制采集系统,非临床级 |
| L | PPG Time [s] | 秒 | 光电容积时间轴 | 与心电同一采集界面 |
| M | PPG0 | 原始 | 第一路 LED 信号 | 无标定单位 |
| N | PPG1 | 原始 | 第二路 LED 信号 | 无标定单位 |
| O | PPG2 | 原始 | 第三路 LED 信号 | 无标定单位 |
| P | HRB Time [s] | 秒 | 心率带时间轴 | 受试者 1、2 缺失 |
| Q | HRB Heartrate [bpm] | 次/分 | 心率带输出心率 | 消费级设备输出 |
| R | HRB RR Interval [ms] | 毫秒 | 心率带 RR 间期 | 做心率变异性的直接输入 |
这 18 列里最容易被误读的是 I 列。它叫"整体通气",是把 32×32 的横截面像素聚合后得到的单值,用来看通气随时间的变化很好用,但它已经不含任何区域信息;想看"通气分布是否均匀"必须回到 .bin 文件。
2.3 一条记录的完整解剖
以 ProcessedData_Subject01_PEEP.csv 为例。文件名三段:受试者编号 01、试验类型 PEEP。文件内前三列是压力流量的时间、表压与两路差压,采样 100 Hz;按官方协议,这一段包含四段 1 分钟记录(ZEEP、PEEP 4、PEEP 8、回到 ZEEP),中间夹三段 30 秒的设置调整间隔,采集不中断。
对应的原始层里,Subject1_PEEP.csv 给出带单位的五列(时间、表压、吸气差压、呼气差压、起始时刻),Subject1_PEEP_raw.csv 给出同样的五列但幅度是 ADC 计数、起始时刻是 MATLAB 的 datenum 数值。想复现官方的换算,必须走 DataProcessing.m;直接拿 raw 的 ADC 值当物理量会全错。
人口学侧,subject-info.csv 的第一行数据(1 号受试者)为:女、164 cm、60 kg、22 岁、罩杯 10D、背宽 28、胸骨至脊柱深度 20、无哮喘、无吸烟史、无电子烟史。这一行说明了这份表的填写风格:数值项是量得或自报的数字,历史项用 Y/N 加一串 N/A。哮喘、吸烟、电子烟三组各有若干附属列(药物、剂量频率、是否当前、戒烟时长、频率、时长),在健康人群里大多为 N/A。
import pandas as pd
#-- 处理层:直接读,列顺序固定为 A:R
df = pd.read_csv('ProcessedData_Subject01_PEEP.csv')
print(df.shape, list(df.columns)[:6])
#-- 受试者 1、2 无心率带,列数应为 15 而非 18
print(df.columns[-1])
#-- 人口学表:21 列,A 到 U
info = pd.read_csv('subject-info.csv')
print(info.shape, list(info.columns)[:5])
print(info.iloc[0].to_dict())
2.4 主键与跨层映射
三层的编号写法不一致,是这份数据最容易出错的地方。
| 层 | 编号写法 | 示例 | 注意 |
|---|---|---|---|
| 处理层 | Subject + 两位数字 |
ProcessedData_Subject01_PEEP.csv |
补零到两位 |
| 压力流量层 | Subject + 不补零数字 |
Subject1_PEEP.csv |
不补零,排序会乱 |
| EIT 层 | S + 两位数字 |
S01_PEEP.bin |
前缀是 S 不是 Subject |
| 心电与光电容积层 | S + 两位数字 |
S01_ECG.csv |
每人一个文件,覆盖三类试验 |
| 心率带层 | 纯数字 | 3.txt |
不补零,且缺 1、2 |
跨层 join 时先把编号统一成整数,再按"受试者编号 + 试验类型"配对。试验类型只有三个取值:PEEP、PEEP_BH、FEM。处理层与压力流量层、EIT 层都是 20 × 3 = 60 个文件,一一对应;心电、光电容积、心率带层不按试验切分,需要靠时间轴切出对应区间。
时间轴的对齐是第二个坑。压力流量是 100 Hz 的等间隔数值时间轴,EIT 是 50 Hz,心电与光电容积在原始层给的是 HH:mm:ss.SSS 字符串,心率带给的是带 Z 后缀的微秒级字符串。处理层已经把五条时间轴换算成"秒"并列成五列,但它们长度不同、起点也不同——不要假设行数对齐,按时间做插值或最近邻匹配。
2.5 与同组数据集的字段差异
同一团队在 PhysioNet 上还有几份呼吸数据集,字段差别决定了它们不能互相替代。
| 字段 | 本库(aeration 研究) | PEEP 呼气阻断库 | CPAP 压力流量周长库 |
|---|---|---|---|
| 受试者数 | 20 | 80 | 见官方页 |
| 受试者构成 | 健康、无显著呼吸异常 | 哮喘、吸烟、电子烟、健康四组 | 健康 |
| 压力档位 | 0、4、8 cmH2O | 4 至 12 cmH2O,每 0.5 一档 | 0、4、8 cmH2O,多种呼吸模式 |
| 胸腹周长 | 无 | 有 | 有 |
| EIT 通气 | 有(32×32,50 Hz) | 有 | 无 |
| 心电 | 有(自制) | 无 | 无 |
| 光电容积 | 有(三路 LED) | 无 | 无 |
| 心率带 | 有(18 人) | 无 | 无 |
| 屏气试验 | 有 | 无 | 无 |
| 用力呼气动作 | 有 | 无 | 无 |
这张表最该记住的两行是倒数三行:心电、光电容积、心率带这三行只有本库有。反过来看,本库没有胸腹周长、压力档位更粗、样本更小。如果你要的是力学参数的细粒度辨识,PEEP 呼气阻断库是更合适的主粮;如果你要的是呼吸与心脏的同步,只有本库。
2.6 五个模态各自的物理含义
| 模态 | 测的是什么 | 时间分辨率 | 它对哪类问题敏感 |
|---|---|---|---|
| 表压(B 列) | 面罩接口处的压力 | 100 Hz | PEEP 档位是否到位、呼吸努力 |
| 吸气差压(C 列) | 吸气支路文丘里两端的压差 | 100 Hz | 吸气流量与吸气肌努力 |
| 呼气差压(D 列) | 呼气支路文丘里两端的压差 | 100 Hz | 呼气流量,也是阻断发生的支路 |
| EIT 整体通气(I 列) | 胸部横截面的阻抗变化聚合 | 50 Hz | 区域性通气分布随 PEEP 的变化 |
| 心电(K 列) | 心脏电活动 | 时间字符串 | 逐拍间隔、心率变异性 |
| 光电容积(M/N/O 列) | 指端组织血容积脉动 | 时间字符串 | 外周灌注、脉搏波形态与呼吸调制 |
| 心率带 HR(Q 列) | 胸带输出的心率 | 事件式 | 消费级设备的心率读数 |
| 心率带 RR(R 列) | 逐拍 RR 间期 | 事件式 | 心率变异性、呼吸性心律不齐 |
三路光电容积需要解释一下。官方说明该自制设备有三个 LED 传感器,对应 PPG0、PPG1、PPG2 三列;多 LED 的用途通常是比较不同波长或不同几何位置下的信号质量,但官方没有给出三路的具体波长或位置,也没有给出标定单位,因此三列只能做相对比较。
§3 它是谁的数据
3.1 贡献者与机构
八位作者分属三家机构。坎特伯雷大学(University of Canterbury,新西兰)贡献了 Ella Frances Sophia Guy、Isaac Flett、Jaimey Anne Clifton、Trudy Caljé-van der Klei、Jennifer Knopp、James Geoffrey Chase 六人;Jennifer Knopp 隶属该校机械工程系。Rongqing Chen 同时隶属弗莱堡大学(University of Freiburg)与 Furtwangen 大学(Hochschule Furtwangen)。Knut Moeller 隶属 Furtwangen 大学技术医学研究所(Institute of Technical Medicine)。
这个组合解释了数据的性格:主导方是机械工程系的呼吸力学建模团队,德国方面的参与对应 EIT 这一模态的技术来源。心脏侧的加入是"基础配套"性质的——官方在 Usage Notes 里写得很坦白:加入基础心脏监测是为了做"心脏功能对呼吸分析影响"的初步分析,目的是识别出压力流量模型法或 EIT 呼吸分析法各自还需要哪些输入。
3.2 时间线
| 时间 | 事件 |
|---|---|
| 2020 年 | 前期试验在类似伦理批件(HREC 2020/14/LR)下开展 |
| 2023 年 | 前期方法验证试验在 HREC 2023/04/LR-PS 下开展 |
| 2023 年 4 月 24 日 | 坎特伯雷大学人类研究伦理委员会批准本试验(HREC 2023/30/LR-PS) |
| 2023 年 12 月 22 日 | subject-info.csv 生成 |
| 2024 年 1 月 10 日 | 三张示例图生成 |
| 2024 年 2 月 23 日 | README.txt 定稿 |
| 2024 年 3 月 19 日 | LICENSE.txt 更新 |
| 2024 年 3 月 20 日 | 版本 1.0.0 在 PhysioNet 发布,SHA256SUMS.txt 同步生成 |
伦理批件的编号序列值得注意:本试验(2023/30/LR-PS)建立在 2023/04/LR-PS 与 2020/14/LR 两次前期批件之上。也就是说,它是同一条研究线上的第三次试验,而不是孤立的一次采集。
3.3 采集场景
受试者取坐位,经全脸面罩与过滤器呼吸,过滤器阻抗约 0.5 cmH2O·s/L。面罩后接自制文丘里式流量压力传感装置,用单向阀把吸气与呼气支路分开,呼气支路上装有快门式阻断器,每 200 毫秒阻断一次以产生被动力学评估窗。CPAP 机(Fisher and Paykel Healthcare SleepStyle SPSCAA,新西兰奥克兰 East Tamaki)串接在吸气支路,提供设定 PEEP。
EIT 用 Dräger PulmoVista 500(德国吕贝克)采集。电极带绕胸放置在腋水平面,与胸宽、胸深测量所在的平面一致;参考电极置于腹部脐水平、旁矢状面。EIT 带在第一次试验(PEEP)开始前立即标定,之后每次试验单独记录。
心脏侧三条通道的位置:心电电极置于左右锁骨下方、肩关节与胸廓之间的间隙,第三电极置于腹部脐水平旁矢状面,且与 EIT 参考电极分处对侧;光电容积传感器夹在受试者左手食指;心率带(Garmin HRM Dual)绕胸置于胸大肌下方。三条通道在三次试验期间连续记录,官方说明部分受试者的心电与光电容积在试验之间暂停过采集,这一点会反映在时间数组里。
3.4 数据来源的三个层次
第一层是设备原始输出。 压力流量的 ADC 计数、EIT 的 .bin 像素矩阵、心率带的原始文本流,都属于这一层。它们的共同点是保留了采集端的全部信息,也保留了采集端的全部怪癖(缺失、暂停、非等间隔)。
第二层是官方处理输出。 处理层 60 个 CSV 是 DataProcessing.m 的产物,完成了单位换算、时间轴对齐、潮气量积分与吸气指数识别。这一层是官方承诺可用的一层,也是绝大多数使用者应该起步的一层。
第三层是官方的可视化。 Figure1.png 至 Figure3.png 给出 3 号受试者三类试验的示例图,FigureGeneration.m 可以复现。这三张图是理解数据长什么样的最快入口——先看图,再决定读哪一层。
§4 它最独特的东西
4.1 呼吸侧被扰动、心脏侧被观察
公开生理数据里,"两侧同步"不少见,但绝大多数是被动同步:把几台设备同时开着,记录一段时间,然后交给使用者自己找关系。这类数据的麻烦在于没有因果锚点——你看到心率变了,也看到呼吸变了,但不知道是谁引起的。
这份数据的设计是主动的。呼吸侧有三类明确的扰动源:PEEP 档位变化(0、4、8 cmH2O)、屏气(每档两次约 10 秒)、用力呼气动作(60 秒内三次)。心脏侧在同一时间窗内被连续记录三条通道。于是"胸腔压力变化 → 回心血量变化 → 心率与脉搏波形态变化"这条链可以被一段一段地拆开看。
这在方法上的价值是具体的:做光电容积或心电推导呼吸率的研究,通常只能拿"平静呼吸"的数据,而平静呼吸下呼吸性心律不齐与呼吸周期高度耦合,模型很容易学到一条捷径。放进屏气段或用力呼气段,耦合被打破,模型的真实能力才暴露出来。
4.2 被动阻断窗:每 200 毫秒一次
官方方法的要点是"快速呼气阻断"(rapid expiratory occlusion)。呼气支路被快门在极短时间内关断,关断瞬间的压力响应可以用来反推被动呼吸力学(弹性与阻力),而不需要受试者做特殊配合。本库的阻断间隔是每 200 毫秒一次。
这个数字决定了处理层能做什么。每个 PEEP 档位下有 1 分钟记录,按 200 毫秒一次阻断,理论上每个档位包含大量阻断窗,而档位本身又是三档,因此可辨识的力学参数是分档给出的——这正是"模型法"区别于"肺功能法"的地方:不是给一个一秒率,而是给出每个压力水平下的弹性与阻力。
处理层 G 列(PSD Inspiratory Indicies)是按表压拐点识别出的吸气指数,是官方替使用者做好的第一步切分。想自己控制切分口径,要回原始层跑 DataProcessing.m 的对应段落。
4.3 三条心脏通道可以互相当裁判
心率带给 RR 间期与心率两列,心电给波形,光电容积给三路脉动。它们的误差来源完全不同:心率带靠胸壁电信号的节拍检测,受运动与接触影响;心电是自制采集系统的双锁骨下加腹部三点配置,导联方向与常规临床配置不同;光电容积在指端,受外周灌注与温度影响。
三者放在同一时间窗里,就能做一件事:判定"哪一个读数在什么时候不可信"。平静段三者应高度一致;屏气段胸廓运动改变,心率带的接触状态可能变化;用力呼气段胸腔压力骤变,指端灌注可能变化。这种交叉校验在单通道数据集里做不到。
更实际的用途是给消费级设备找一个参照系。可穿戴心率算法的评测通常面对一个尴尬局面:没有真值。临床心电可以做真值,但那是卧位静息、电极位置标准、受试者不动的场景,与手环的使用场景差别很大。本库的自制心电虽然不是临床级,却是在同一个坐位、同一段呼吸扰动下与心率带同步记录的,因此两者之差至少能回答一个具体的问题:在胸廓被外力反复扰动的条件下,消费级胸带与电学法的心率读数偏离多少。这个问题在静态对照实验里问不出来。
4.4 标注的粒度:没有标签,只有协议
必须说清楚一件事:这份数据没有事件标注文件。没有呼吸周期的起止标记,没有心搏位置的标注,没有屏气段的标签,没有疾病标签。它有的是一份写得很详细的试验协议,以及处理层里官方识别出的吸气指数。
| 你想要的标签 | 官方是否直接给 | 怎么得到 |
|---|---|---|
| 呼吸周期起止 | 否 | 从 G 列吸气指数或流量零点切分 |
| PEEP 档位 | 否 | 按协议时刻反推:四段 1 分钟夹三段 30 秒间隔 |
| 屏气区间 | 否 | 从流量归零区间反推,不要采信秒表 |
| 阻断窗 | 否 | 从呼气差压的突变点检测 |
| 心搏位置 | 否 | 对 K 列自行做 R 波检测 |
| 心率真值 | 部分 | 心率带 Q 列是设备输出,不是黄金标准 |
| 疾病标签 | 否 | 无,全部为健康人群 |
所以"呼吸率 + 心率联合标注"这个说法在本库里是不成立的:呼吸率与心率都要自己从原始通道里算,官方给的是原始通道与协议,不是标签。这一点与库内带逐搏标注的心电库有本质差别(§6.3)。
4.5 边界条件:什么情况下它不再适用
跨中心外推不适用。 单一中心、单一团队、单一套自制硬件。换成别的设备采集的数据,绝对数值不可直接比。
疾病场景不适用。 队列是健康人群,且官方明确说明选择健康人群是为了减少对疾病人群的负担。阻塞性或限制性异常的表现形态在本库里不存在。
长时间监测不适用。 每段记录是分钟级,最长的一类也就是四段 1 分钟加间隔。做夜间或日间的长时程分析要换数据集。
临床决策不适用。 心电与光电容积是自制采集系统,心率带是消费级产品,EIT 的绝对通气值也没有给出临床校准。这份数据的用途是方法研究与工程验证。
§5 怎么拿到
5.1 目录结构与下载面
官方提供整库 ZIP(3.1 GB)与逐文件目录两种入口。未压缩总量 5.3 GB,主要来自 EIT 的 60 个 .bin 文件。
#-- 整库递归下载(5.3 GB,含 EIT 二进制)
wget -r -N -c -np https://physionet.org/files/respiratory-heartrate-dataset/1.0.0/
#-- 只取处理层与人口学表,跳过体积最大的 EIT 原始层
wget -r -N -c -np -R "*.bin" \
https://physionet.org/files/respiratory-heartrate-dataset/1.0.0/
#-- 或用 AWS 开放桶同步,无需凭证
aws s3 sync --no-sign-request \
s3://physionet-open/respiratory-heartrate-dataset/1.0.0/ ./rhrd/
#-- 或用官方 Python 包(按版本拉取)
physionet download respiratory-heartrate-dataset --version 1.0.0
只做时间序列分析的话,第二条命令就够了:处理层 60 个 CSV 加 subject-info.csv,跳过 EIT 后可以省下绝大部分流量。做 EIT 空间分析则必须下载 .bin,且要用官方 read_binData.m 读。
5.2 核对文件完整性
SHA256SUMS.txt 覆盖全库文件,下载后先校验再处理。这个步骤在 5.3 GB 的量级上不是形式主义——中途断流重传最容易产生静默截断的文件,而截断的 CSV 在 pandas 里不报错,只是少几千行。
#-- 进入版本目录后校验;会列出 OK 与 FAILED
cd respiratory-heartrate-dataset/1.0.0
sha256sum -c SHA256SUMS.txt 2>&1 | grep -v ': OK$' | head
5.3 读处理层并切出压力档位
import pandas as pd
import numpy as np
SUB, TRIAL = 3, 'PEEP'
df = pd.read_csv(f'ProcessedData_Subject{SUB:02d}_{TRIAL}.csv')
#-- 官方协议:1 分钟 ZEEP / 30 秒调整 / 1 分钟 PEEP4 / 30 秒调整 /
#-- 1 分钟 PEEP8 / 30 秒调整 / 1 分钟 ZEEP
SEG = [(0, 60, 'ZEEP_1'), (60, 90, 'SET'), (90, 150, 'PEEP4'),
(150, 180, 'SET'), (180, 240, 'PEEP8'), (240, 270, 'SET'),
(270, 330, 'ZEEP_2')]
t = df['PSD Time [s]'].values
t0 = t[0]
for a, b, name in SEG:
m = (t - t0 >= a) & (t - t0 < b)
print(name, int(m.sum()),
round(float(np.mean(df.loc[m, 'PSD Gauge Pressure [cmH2O]'])), 2))
这段代码的关键是把协议写成显式的区间表。官方没有给出档位标签列,时刻只能靠协议还原;把区间表写进代码并注明出处,是让结果可复现的最低要求。另外,时间轴起点 t0 不保证为 0,必须显式减。
5.4 把五条时间轴对齐
import pandas as pd
import numpy as np
df = pd.read_csv('ProcessedData_Subject03_PEEP.csv')
#-- 以压力流量时间轴为基准栅格
base = df['PSD Time [s]'].values
def onto(t_src, v_src, base):
#-- 丢掉空值后做最近邻插值;源与目标长度不同是常态
m = pd.notna(t_src) & pd.notna(v_src)
return np.interp(base, t_src[m], v_src[m])
grid = pd.DataFrame({'t': base,
'p': df['PSD Gauge Pressure [cmH2O]'].values,
'flow': df['PSD Flow [L/s]'].values,
'eit': onto(df['EIT Time [s]'].values,
df['EIT Global Aeration'].values, base),
'ecg': onto(df['ECG Time [s]'].values,
df['ECG [mV]'].values, base),
'ppg0': onto(df['PPG Time [s]'].values,
df['PPG0'].values, base),
'hr': onto(df['HRB Time [s]'].values,
df['HRB Heartrate [bpm]'].values, base)})
print(grid.describe().loc[['mean', 'min', 'max']])
三点必须注意。第一,EIT 是 50 Hz、压力流量是 100 Hz,插值后 EIT 列会出现阶梯,做频谱分析前要说明插值方式。第二,心电与光电容积的原始采样率官方未在处理层给出,插值到 100 Hz 只适合慢变分析,不适合波形形态分析。第三,np.interp 要求源时间轴严格递增;如果某位受试者的采集在试验间暂停过,时间轴可能有回退,需先检查 np.diff(t_src) > 0。
5.5 读心率带与 EIT 原始层
import pandas as pd
#-- 心率带:官方给的是逗号分隔文本,列为 Time / msgid / rr_ms / hr_bpm
hrb = pd.read_csv('3.txt', names=['Time', 'msgid', 'rr_ms', 'hr_bpm'])
hrb['Time'] = pd.to_datetime(hrb['Time'].str.rstrip('Z'), format='mixed')
print(hrb.shape, hrb.head(2).to_dict('records'))
EIT 的 .bin 没有公开的列格式说明,官方只提供 MATLAB 函数 read_binData.m。在 Python 侧读取需要按该函数反推字节布局,属于未核验内容(§10);稳妥做法是用 MATLAB 或 Octave 调用官方函数导出为矩阵后再转存。
5.6 六个最容易出错的地方
| 位置 | 错误写法 | 后果 | 正确做法 |
|---|---|---|---|
| 编号对齐 | 字符串直接 join 三层 | 处理层补零、压力流量层不补零,配对全错 | 统一解析成整数再配对 |
| 心率带缺失 | 假设 20 人都有心率带 | 受试者 1、2 无心率带,Q/R 列不存在 | 先判断列数再取列 |
| 时间轴 | 假设五行数一致 | EIT 50 Hz、压力流量 100 Hz,行数不同 | 按时间插值,不要用行号对齐 |
| 屏气时刻 | 直接用秒表的 10 秒 | 实际起止由受试者操作,与 10 秒有出入 | 从流量归零区间反推 |
| 单位 | 把 _raw.csv 的 ADC 当物理量 |
幅度全错 | 用带单位版本或走 DataProcessing.m |
| EIT 空间信息 | 用 I 列做区域分析 | I 列是整体聚合值,无空间信息 | 回 .bin 用官方函数读 32×32 帧 |
§6 与库内条目的关系
6.1 关系图谱
站内已有若干呼吸与心率方向的词条,本库在其中的位置可以用"是否有心脏通道"这一列分开。
| 站内词条 | 主要模态 | 是否含心脏通道 | 与本库的关系 |
|---|---|---|---|
| respiratory-dataset | 压力、流量、容积、胸腹周长、EIT | 无 | 同团队、同平台、规模更大(80 人)、压力档更细;本库多出心脏三通道与屏气/用力呼气试验 |
| pressure-flow-circum-cpap | 压力、流量、胸腹周长 | 无 | 同团队早期工作,有周长无 EIT,也无心脏通道 |
| cpap-data-canterbury | CPAP 压力与流量 | 无 | 同机构最早的 CPAP 压力流量集,通道最少 |
| temporal-respiratory-support | 重症呼吸支持的时序表格 | 视表里字段而定 | 邻近主题:它是小时格的临床时序,本库是 100 Hz 的生理波形,粒度相差三个数量级 |
| pics | 早产儿心电与呼吸 | 有(心电) | 邻近主题:同为心肺同步,但人群是新生儿重症监护、通道是心电加呼吸阻抗 |
| meditation | 心率与呼吸 | 有 | 邻近主题:同为心率与呼吸配对,但无呼吸侧的外力扰动 |
| ppg-dalia | 光电容积与加速度 | 有 | 可对接:本库的三路光电容积可当作算法的一个外部测试片段 |
| bidmc-ppg | 光电容积与呼吸率参考 | 有 | 可对接:同为光电容积推呼吸率,人群与场景完全不同 |
| heartcycle | 阻抗心动图与超声心动图 | 有 | 可对照:同为心脏影像与阻抗方向,无呼吸侧扰动 |
| openox-repo | 脉搏血氧与动脉血气 | 有 | 可对照:有血气参考,无呼吸力学扰动 |
6.2 检索路径
| 你要找的东西 | 检索词 | 会落到哪里 |
|---|---|---|
| 同团队的其他呼吸数据集 | Canterbury、CPAP、PEEP、Guy |
§6.1 前三行 |
| 带心脏通道的呼吸数据 | ECG、PPG、heart rate belt |
§2.2 的 J 至 R 列 |
| EIT 通气图像数据 | EIT、electrical impedance tomography、aeration |
§2.1 的 EIT_rawData 与 §5.5 |
| 呼吸力学模型辨识 | elastance、resistance、rapid expiratory occlusion |
§4.2 |
| 可穿戴心率与呼吸率评测 | PPG、respiratory rate |
§6.3 的分工表 |
| 重症呼吸支持的临床时序 | respiratory support、ventilation |
§6.1 的 temporal-respiratory-support 行 |
6.3 与邻近主题的分工判据
最容易混淆的是"呼吸率 + 心率联合"与"单纯呼吸信号"这两件事。判据如下:
| 你的任务 | 该用哪一类 | 判据 |
|---|---|---|
| 呼吸力学参数辨识 | 单纯呼吸信号即可,PEEP 呼气阻断库更合适 | 不需要心脏通道,需要更细的压力档与更大样本 |
| 心肺耦合、呼吸性心律不齐 | 必须是呼吸率 + 心率联合,本库 | 两侧必须同步且呼吸侧有扰动时刻 |
| 光电容积推呼吸率 | 需要两侧同步,本库或 PPG 库 | 需要同步的呼吸真值,本库的流量可积分成容积 |
| 心率算法的日常场景评测 | PPG 日常活动库更合适 | 需要运动与日常活动,本库是坐位静态 |
| 呼吸事件的临床时序分析 | 重症呼吸支持时序库 | 需要小时格的临床变量,本库是分钟级波形 |
| 新生儿心肺同步 | 早产儿心肺库 | 人群完全不同 |
一句话概括差别:单纯呼吸信号的数据集回答"肺的力学参数是多少",呼吸率加心率联合的数据集回答"呼吸变动时心血管跟着怎么变"。前者只需要呼吸通道,后者必须有两侧同步与明确的扰动设计。站内同团队的 PEEP 呼气阻断库(80 人、压力档更细、含胸腹周长)属于前者且规模更大;本库(通气研究心肺联合库)属于后者,代价是样本只有 20 人。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
先纠正一个常见误判:把"没有标签"当成"质量差"。这份数据的设计目标是方法验证,不是监督学习基准。它没有事件标注、没有疾病标签,是因为它的用途本来就不需要——呼吸力学的辨识是无监督的物理反演,心肺耦合的分析靠的是同步波形而不是标签。
这个校正会改变评分的读法。它在"标签完整性"上拿不到分,但在"模态同步性"与"扰动可控性"上很少有其他库能比。把两件事混在一起看,会得出"不值得用"的错误结论。
7.1 五维评分
按常用维度打分,每项 1 至 5 分,分数针对"作为呼吸力学与心肺耦合研究方法验证数据"这个用途:
| 维度 | 分数 | 理由 |
|---|---|---|
| 规模 | 2 | 20 人、60 段,足以做方法验证,不足以训练模型 |
| 模态丰富度 | 5 | 压力流量、EIT 空间、心电、三路光电容积、心率带,五模态同步 |
| 标注完整性 | 2 | 无事件标注,仅官方识别的吸气指数;档位与屏气靠协议还原 |
| 采集规范性 | 4 | 协议写得很细(档位、间隔、电极位置、标定时机),但心电与光电容积为自制系统 |
| 可用性 | 4 | 处理层开箱可用、代码齐全、有校验和与示例图;原始层 EIT 需 MATLAB |
7.2 数据质量的两层
第一层是采集层。 官方主动披露了两类不完美:心电与光电容积在部分受试者的试验间隔被暂停过,会反映在时间数组里;心率带在受试者 1 与 2 完全缺失。这两点都是官方在 Data Description 里明确写出的,说明作者对采集过程的记录是诚实的。
第二层是处理层。 潮气量由吸气指数与流量积分得到,吸气指数由表压拐点识别——两个步骤都依赖官方算法的口径。官方没有给出这些算法的准确率,也没有给出人工核对的说明。因此 F 列与 G 列应当被当作"官方口径下的处理结果",需要独立口径时回原始层重算。
7.3 已知的、可枚举的偏差
人群偏差。 全部为无已知显著呼吸系统异常的成人,按性别均分。官方说明这是为减少对疾病人群负担而做的概念验证队列。任何从这一队列推出的结论都不能外推到疾病人群。
设备偏差。 压力流量装置、心电与光电容积采集系统均为自制;CPAP 机、EIT、心率带为商用特定型号。换设备后绝对数值不可比,尤其是未给出标定单位的光电容积三列。
体位与状态偏差。 受试者全程坐位、清醒、配合,且被教练如何完成用力呼气动作。与卧位的自然呼吸或睡眠状态差别很大。
时间长度偏差。 每段为分钟级,无法支撑昼夜节律或长时程变异性的分析。
地理偏差。 单一国家、单一中心、单一团队,人口学构成未公开分层细节。
7.4 外部验证矩阵
| 用途 | 它的位置 | 能否单独支撑结论 |
|---|---|---|
| 呼吸力学模型的验证 | 可用作外部验证集 | 能支撑"方法在本队列上可行",不能支撑"临床有效" |
| 心肺耦合的探索分析 | 主力 | 能提出假设,不能验证假设 |
| 可穿戴算法的鲁棒性测试 | 辅助测试集 | 能暴露捷径学习,不能给准确率指标 |
| EIT 图像算法的验证 | 方法验证 | 能支撑算法可行性,样本不足以比较模型优劣 |
| 多中心泛化 | 不适用 | 单一中心,只能做跨库不能做跨中心 |
| 疾病判别 | 不适用 | 无疾病人群 |
7.5 它为何值得存在
稀缺的不是数据量,是那个组合。呼吸侧有外力扰动、心脏侧有三条独立通道、两侧在同一时间轴上——这三件事同时成立的公开数据很少。更细的压力档、更多的受试者、更全的标注,站内的 PEEP 呼气阻断库都能给;但那一支上没有心脏通道。本库用 20 人的代价换来了这个组合,代价和收益都很清楚。
§8 生态位与历史
8.1 历史沿革
官方在 Background 与 Usage Notes 里画出了这条线的位置:本试验(HREC 2023/30/LR-PS)建立在 HREC 2023/04/LR-PS 与 HREC 2020/14/LR 两次前期批件的工作之上,官方列出 31 至 36 号参考文献作为这个基础。硬件侧,压力流量采集装置的设计与制造说明发表于 HardwareX,设计与搭建文件开放获取;心电的硬件与软件细节已发表;光电容积的复现说明也已发表。
这意味着整条采集链路是可以复现的,而不只是数据可以下载。对想重复试验或改造协议的团队来说,这一点比数据量本身更有价值。
8.2 与挑战赛的关系
它与挑战赛没有关系。PhysioNet 的 Challenge 系列以房颤分类、心电分类、重症预测为主,本库既不是挑战赛来源,也没有成为挑战赛数据。它的对标对象是方法学论文而不是竞赛榜单,这一点决定了它的引用形态:被引方是呼吸力学建模与生理信号处理的方法研究。
8.3 生态位:实验台而不是粮仓
在 PhysioNet 的呼吸类资源里,本库处在"小样本、多模态、强协议"这一格。同团队的其他数据集是"大样本、少模态、强协议",站内的重症呼吸支持时序库是"长时程、临床表格"。三者不构成竞争关系,各自负责一段。
它的合理用法是:作为方法的验证台与对照尺。你在别处训好的东西,拿到这里看它在呼吸被扰动、心脏被同步记录的情况下表现如何;或者反过来,在这里提出一个心肺耦合的假设,再拿更大样本的数据集去验证。
8.4 谁在用它,用来做什么
官方页面的引用记录显示有一篇论文引用了本项目:团队自己发表于 Data in Brief 的配套论文(Pulmonary function testing dataset of pressure and flow, dynamic circumference, heart rate, and aeration monitoring,2024)。也就是说,目前的公开引用主要是数据发布本身,外部使用尚未形成规模。
这与它的发布时间(2024 年 3 月)和体量(5.3 GB)相符:下载门槛不算低,且目标用户是窄领域的呼吸力学建模群体。官方页面记录的项目浏览数为 619 次(当前版本与全部版本同一数值)。
§9 使用指引
9.1 三种角色的路径
| 角色 | 起点 | 关键动作 | 避开什么 |
|---|---|---|---|
| 呼吸力学建模者 | 处理层 B、E、F、G 列 | 定位阻断窗与吸气指数,分档辨识弹性与阻力 | 别用 I 列做空间分析 |
| 生理信号算法工程师 | 处理层 J 至 R 列 | 把心电、光电容积、心率带三条通道做一致性对照 | 别假设 20 人都有心率带 |
| EIT 图像方向研究者 | EIT_rawData 的 .bin |
用 read_binData.m 读 32×32 序列 |
别指望处理层给空间信息 |
| 临床背景的使用者 | 先读官方 Abstract 与 Methods | 明确它是健康人概念验证队列 | 别当成疾病队列用 |
9.2 一条最短的可用流程
import pandas as pd
import numpy as np
#-- 第一步:读人口学表,确认受试者编号与心率带可用性
info = pd.read_csv('subject-info.csv')
print(info.shape, list(info.columns)[:5])
#-- 第二步:选一位有心率带的受试者(编号 3 起),读 PEEP 试验
df = pd.read_csv('ProcessedData_Subject03_PEEP.csv')
print('列数', df.shape[1]) #-- 有心率带应为 18,无心率带为 15
#-- 第三步:按协议切档位,打印各档平均表压
t = df['PSD Time [s]'].values - df['PSD Time [s]'].values[0]
for name, a, b in [('ZEEP', 0, 60), ('PEEP4', 90, 150), ('PEEP8', 180, 240)]:
m = (t >= a) & (t < b)
print(name, '样本点', int(m.sum()),
'平均表压', round(float(np.nanmean(df.loc[m, 'PSD Gauge Pressure [cmH2O]'])), 2))
#-- 第四步:把心率带心率插值到压力流量时间轴
hr_t = df['HRB Time [s]'].values
hr_v = df['HRB Heartrate [bpm]'].values
m = pd.notna(hr_t) & pd.notna(hr_v)
hr_on_p = np.interp(t, hr_t[m] - hr_t[m][0], hr_v[m])
print('心率插值后前 5 个值', np.round(hr_on_p[:5], 1))
四步走完,你手上就有了"压力档位 + 同步心率"的最小可用结构。之后无论做耦合分析还是算法评测,都在这个结构上加东西。
9.3 引用方式
| 项目 | 声明 |
|---|---|
| 数据集 | Guy, E. F. S., Flett, I., Clifton, J. A., Caljé-van der Klei, T., Chen, R., Knopp, J., Moeller, K., & Chase, J. G. (2024). Respiratory and heart rate monitoring dataset from aeration study (version 1.0.0). PhysioNet. https://doi.org/10.13026/e4dt-f689 |
| 平台 | PhysioNet 平台综述论文,按官方页面 Cite 按钮生成 |
| 配套论文 | 团队发表于 Data in Brief 的配套数据论文(2024) |
| 许可 | CC BY 4.0,再发布需署名并说明改动 |
写论文时建议同时注明:使用的版本号(1.0.0)、使用的层级(处理层或原始层)、压力档位区间的还原方法,以及是否排除了缺少心率带的受试者 1 与 2。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 文本生成 | 本文由 AI 辅助撰写,编辑把关结构与事实 |
| 数字来源 | 规模、结构、边界三类数字来自 PhysioNet 官方页面与文件目录 |
| 文件核验 | README.txt、subject-info.csv 表头与首行、六个文件夹的目录清单经直接访问确认 |
| 不一致说明 | 官方 Abstract 称 20 人按性别均分;文件目录显示心率带仅 18 个(受试者 3 至 20),两者一致于官方说明 |
| 论文信息 | 仅参考 PhysioNet 官方页面列出的引用与参考文献条目,未读全文 |
| 未核验内容 | 各试验段的实际采样点数与时长;EIT .bin 的字节布局;心电与光电容积的实际采样率;屏气段的实际起止;三路光电容积的波长与位置;项目浏览数的统计口径;PEEP 段总时长 330 秒系按官方协议相加得出,非官方直给 |
| 图像 | 无配图;封面为生成式提示词,不含真实生理波形 |
| 免责 | 本文不构成临床建议;数据使用须遵守 CC BY 4.0 署名要求 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 「它给了呼吸率和心率的联合标注」 | 没有任何事件标注;呼吸率与心率都要自己从流量、心电、心率带算 | 官方 Data Description 只描述通道,无标注文件;处理层 18 列均为原始或简单处理结果 |
| 「20 人都有心率带」 | 受试者 1、2 未采集心率带,处理层只有 15 列 | 官方 Data Description 与文件目录(HRB 目录内为 3.txt 至 20.txt) |
| 「PEEP 档位在文件里有标签列」 | 无标签,需按协议(四段 1 分钟夹三段 30 秒间隔)还原 | 官方 Methods 段落;处理层列清单无档位列 |
| 「EIT 的 I 列可以做区域通气分析」 | I 列是整体聚合值,空间信息只在 .bin 里 |
README 对 EIT_rawData 的说明为 32×32 像素矩阵 |
| 「心电是临床十二导联」 | 自制采集系统,双锁骨下加腹部三点配置 | 官方 Methods 对电极位置的描述 |
| 「光电容积三列有标定单位」 | 官方未给单位,只标为三路 LED 数据 | README 的 PPG0/PPG1/PPG2 说明 |
| 「屏气就是整 10 秒」 | 官方写的是约 10 秒,由受试者掐秒表,实际起止须从流量归零反推 | 官方 Methods 对 PEEP_BH 试验的描述 |
| 「五条时间轴行数相同」 | 压力流量 100 Hz、EIT 50 Hz,其余为时间字符串,长度各不相同 | README 各层列说明 |
「_raw.csv 可以直接当物理量用」 |
是 ADC 计数,起始时刻为 MATLAB datenum | README 对 PQ_rawData 的说明 |
| 「它是疾病队列」 | 全部为无已知显著呼吸系统异常的健康成人 | 官方 Abstract 与 Usage Notes |
| 「它和挑战赛有关」 | 与挑战赛无关,无榜单、无挑战赛标签 | 官方页面无挑战赛标记 |
FAQ
Q1:名字里写着 heart rate,是不是直接给了心率标注?
不是。心率带给的是两列设备输出——每分钟心跳数与 RR 间期;心电与光电容积给的是波形,需要自己检测心搏。"心率标注"这个说法在本库不成立,官方提供的是原始通道与详细协议,不是标签。要做逐拍分析,先对 K 列做 R 波检测,再用 R 列(心率带 RR 间期)做交叉核对。
Q2:20 人三类试验,实际能拼出多少样本?
处理层 60 个 CSV(20 人 × 3 类),EIT 原始层同样 60 个文件。压力流量层 120 个(每类各有带单位与原始 ADC 两个版本)。心脏侧不按试验切分:心电 20 个、光电容积 20 个、心率带 18 个,每人一个文件覆盖三类试验。若按"受试者 × 试验"计,处理层是 60 段;若按"受试者 × 试验 × 压力档"计,PEEP 与 PEEP_BH 各有四个记录期加三个设置间隔,可再细分。
Q3:为什么受试者 1 和 2 少了三列?
官方说明心率带数据未对受试者 1 与 2 采集,因此这两个人的处理层文件只有 A 到 O 共 15 列,缺少 P、Q、R 三列。做心率相关分析时样本是 18 人。代码里应先判断列数再取列,不要假设 18 列恒定。
Q4:EIT 的 32×32 与 50 Hz 该怎么用?
原始层每个 .bin 是随时间变化的 32×32 像素矩阵,采样 50 Hz,代表胸部横截面的区域通气分布;读取要用官方提供的 MATLAB 函数 read_binData.m。处理层只保留聚合后的整体通气单列,适合看随时间变化,不适合看区域分布。做通气均匀性、区域性塌陷这类问题必须回原始层。
Q5:它和站内 respiratory-dataset(PEEP 呼气阻断库)是同一个数据集吗?
不是。两者同一团队、同一平台,但不是同一份数据:PEEP 呼气阻断库发布于 2023 年 11 月,80 名受试者,含哮喘、吸烟、电子烟与健康四组,压力从 4 升到 12 cmH2O、每 0.5 cmH2O 一档,含胸腹周长,但没有心电、光电容积与心率带;本库发布于 2024 年 3 月,20 名健康受试者,压力档为 0、4、8 cmH2O,多了屏气与用力呼气试验,也多了三条心脏通道。选哪个取决于你要的是力学参数的细粒度辨识(前者)还是心肺同步(后者)。
Q6:许可允许怎样的二次使用与再发布?
官方许可为 CC BY 4.0,允许使用与再发布,条件是署名并说明改动。引用时须写清数据集全名、版本号 1.0.0 与 DOI。另外建议在方法节注明使用的是处理层还是原始层、压力档位如何还原、是否排除了缺心率带的两位受试者——这三处是复现的关键。
术语表
| 术语 | 解释 |
|---|---|
| PEEP | 呼气末正压,呼气结束时气道内维持的正压,单位为 cmH2O |
| ZEEP | 零呼气末正压,即不施加 CPAP 的基线状态 |
| CPAP | 持续气道正压通气,最常见的无创通气形式 |
| EIT | 电阻抗断层成像,用胸部电极带重建横截面通气分布的成像方式 |
| 文丘里式流量计 | 利用节流前后压差推算流量的装置,本库压力流量采集的核心器件 |
| 单向阀 | 只允许单方向通过的阀门,本库用来把吸气与呼气支路分开测量 |
| 快速呼气阻断 | 短暂关断呼气支路,用关断瞬间的压力响应反推被动呼吸力学 |
| 被动呼吸力学 | 无肌肉主动参与时的弹性与阻力特性 |
| 弹性 | 呼吸系统的僵硬程度,模型辨识的目标参数之一 |
| 阻力 | 气道的阻碍程度,模型辨识的目标参数之一 |
| 潮气量 | 一次呼吸进出肺的气体容积 |
| 吸气指数 | 官方按表压拐点识别出的吸气时段索引 |
| 用力呼气动作 | 尽力呼尽后再尽力吸满的动作,本库 FEM 试验的内容 |
| 光电容积 | 用光照射组织、按透射或反射光强变化记录血容积脉动的技术 |
| RR 间期 | 相邻两次心搏的间隔,心率变异性分析的基础量 |
| 心率带 | 绕胸佩戴、检测心电节拍并输出心率与 RR 间期的设备 |
| 呼吸性心律不齐 | 心率随呼吸周期起伏的生理现象 |
| 表压 | 相对于大气压的压力读数 |
| 差压 | 两个测点之间的压力差,用于推算流量 |
| datenum | MATLAB 的日期序列号格式 |
| ADC | 模数转换计数,未换算成物理单位的原始整数值 |
| HREC | 人类研究伦理委员会,本试验的审批机构 |
| CC BY 4.0 | 知识共享署名许可,允许再发布但须署名 |
附录 A:核心数字核对表
| 项 | 值 | 来源 |
|---|---|---|
| 受试者数 | 20,按性别均分 | 官方页面 Abstract 与 Data Description |
| 试验种类 | 3(PEEP、PEEP_BH、FEM) | 官方 Abstract 与文件命名 |
| 处理层文件数 | 60 | 文件目录 Processed_Dataset |
| EIT 原始文件数 | 60 | 文件目录 EIT_rawData |
| 压力流量文件数 | 120 | 文件目录 PQ_rawData |
| 心电文件数 | 20 | 文件目录 HRM_rawData/ECG |
| 光电容积文件数 | 20 | 文件目录 HRM_rawData/PPG |
| 心率带文件数 | 18(受试者 3 至 20) | 文件目录 HRM_rawData/HRB |
| MATLAB 代码文件数 | 4 | 文件目录 Code |
| 处理层列数 | 18(A:R),受试者 1、2 为 15(A:O) | README.txt |
| 人口学表列数 | 21(A:U) | subject-info.csv 表头 |
| 压力档位 | 0、4、8 cmH2O | 官方 Abstract 与 Methods |
| 压力流量采样率 | 100 Hz | 官方 Data Description |
| EIT 采样率与帧尺寸 | 50 Hz,32×32 像素 | 官方 Data Description 与 README |
| 阻断间隔 | 每 200 毫秒一次 | 官方 Abstract |
| PEEP 试验记录结构 | 四段 1 分钟 + 三段 30 秒间隔 | 官方 Methods |
| 屏气安排 | 每档两次约 10 秒 | 官方 Methods |
| FEM 试验时长 | 60 秒,三次用力呼气动作 | 官方 Methods |
| 数据体量 | 未压缩 5.3 GB,ZIP 3.1 GB | 官方页面 Files 区 |
| 发布日期与版本 | 2024 年 3 月 20 日,1.0.0 | 官方页面 |
| DOI | 10.13026/e4dt-f689(v1.0.0) | 官方页面 Discovery 区 |
| 伦理批件 | HREC 2023/30/LR-PS,2023 年 4 月 24 日批准 | 官方 Ethics 段 |
| 许可 | CC BY 4.0 | 官方页面 Access 区 |
编辑说明
本文的核验时间为 2026 年 10 月 29 日。核对方式为直接访问 PhysioNet 项目页(版本 1.0.0)与文件目录,逐一确认 README.txt、subject-info.csv 的表头与首行、以及六个文件夹的目录清单;页面摘要、背景、方法、数据描述与使用说明各段均逐段读过。未覆盖的内容包括:各试验段的实际采样点数与时长、EIT 二进制文件的字节布局、心电与光电容积的实际采样率、屏气段的实际起止时刻、三路光电容积的波长与几何位置。这些需要下载全量后逐文件统计或阅读官方 MATLAB 代码,已列入 §10 的未核验内容。文中 PEEP 段总时长 330 秒系按官方协议(四段 1 分钟加三段 30 秒)相加得出,非官方直接给出的数字。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- respiratory-dataset — 共享标签:生理信号 / 呼吸信号 / 呼吸力学 / 开放数据
- pressure-flow-circum-cpap — 共享标签:生理信号 / 呼吸信号 / 呼吸力学
- cpap-data-canterbury — 共享标签:生理信号 / 呼吸信号 / 呼吸力学
- temporal-respiratory-support — 共享标签:生理信号 / 呼吸信号
- pics — 共享标签:生理信号 / 心电信号 / 呼吸信号
- meditation — 共享标签:生理信号 / 心电信号 / 呼吸信号
- ppg-dalia — 共享标签:生理信号 / 心电信号 / 多模态
- bidmc-ppg — 共享标签:生理信号 / 呼吸信号 / 心电信号
- heartcycle — 共享标签:生理信号 / 心电信号 / 多模态
- openox-repo — 共享标签:生理信号 / 开放数据
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

