信息速览
呼吸力学研究长期存在一个不对称:气道端的压力与流量,只要在一个面罩接口上串一支流量传感器,就能量得又准又稳;而胸壁与腹壁各自贡献了多少容积变化,临床上至今只能靠"把手放上去看、把听诊器贴上去听"。这两件事既不可量化,也无法远程完成。后果是模型能从压力—流量曲线里反解出肺弹性与气道阻力,却回答不了一个更基本的问题:这一口气的容积,究竟主要来自膈肌下沉撑开腹部,还是来自肋间肌提肋撑开胸廓。而呼吸肌疲劳最先露头的,恰是这两者配比的变化。
坎特伯雷大学团队给出的解法相当朴素:在用双向文丘里管测压测流的同时,给受试者的胸部与腹部各绑一条不会伸长的带子,带子末端接旋转编码器,把周长的扩张与回缩直接转成计数。30 名健康成人、每人 9 组试验(3 档呼气末正压 × 3 种呼吸方式)、100 Hz 同步落盘,最终以纯 CSV 开放。它不追求样本量,追求的是"同一口气同时拥有气道端与胸腹端两路互相独立的观测量"——这正是验证呼吸力学模型、分辨呼吸肌招募路径时长期缺的那半边证据。CPAP 压力流量周长集的价值因而不在规模,而在通道之间的互补性:一路从气道内部看,两路从体表外部看,三者可以对彼此下结论。
| 维度 | 内容 |
|---|---|
| 全名 | Pressure, flow, and dynamic thoraco-abdominal circumferences data for adults breathing under CPAP therapy |
| 发布平台 | PhysioNet(MIT 计算生理学实验室维护) |
| 贡献机构 | 新西兰坎特伯雷大学(University of Canterbury) |
| 作者 | Ella Frances Sophia Guy、Jennifer Knopp、Theodore Lerios、James Geoffrey Chase |
| 首次发布 | 2023 年 1 月 25 日,版本 1.0.0 |
| 最近改动 | 截至核验时仅 1.0.0 一个版本,无后续版本修订 |
| 受试者数 | 30 名健康成人,15 男 15 女,19–37 岁,含吸烟者、电子烟使用者与哮喘者 |
| 试验组数 | 每人 9 组(3 档 PEEP × 3 种呼吸方式),设计上共 270 组 |
| 单组时长 | 常速与深呼吸 65 秒,快喘 35 秒,组间休息由受试者自行决定 |
| 通道数 | 原始态 5 个测量通道(表压、吸气压差、呼气压差、胸周长、腹周长) |
| 采样率 | 100 Hz(原始态与处理态一致) |
| 文件格式 | CSV(原始态分"带单位"与"ADC 原始计数"两套),附 MATLAB 绘图脚本 |
| 数据体量 | 未压缩 304.5 MB,ZIP 压缩包 79.9 MB,共 815 个文件 |
| 许可 | Creative Commons Attribution 4.0 International(CC BY 4.0),无需注册 |
| 标识符 | DOI 10.13026/25q9-y416(v1.0.0);最新 DOI 10.13026/wmzm-d487 |
| 典型用途 | 呼吸力学模型拟合与验证、肺弹性与气道阻力辨识、呼吸肌招募的胸腹分配估计 |
§1 它要解决的具体麻烦
1.1 呼吸力学模型缺的不是方程,是第二路观测量
一阶线性呼吸力学模型把呼吸系统写成一个弹性元件与一个阻力元件的串联:气道压力等于弹性乘容积加阻力乘流量。这个方程在完全镇静、完全由呼吸机驱动的患者身上工作得很好,因为此时呼吸肌不做功,气道压力里只包含呼吸机施加的部分,模型参数可唯一辨识。
自主呼吸把这件事彻底搅乱。患者自己在用力,气道压力里混进了一块无法直接测量的肌肉压力,方程从"两个未知数、一个观测量"变成"三个未知数、一个观测量"。文献里处理这个欠定问题的办法大致有三条:用食管球囊估胸膜腔压力作为肌压的代理;用膈肌电信号估神经驱动;或者在特定的短暂闭合 maneuvers(比如呼气末阻断)里把流量归零从而消掉阻力项。三条路各有代价——食管球囊是有创的,膈肌电信号需要专用导管,闭合 maneuver 要求患者配合且不能在无创通气的居家场景里做。
这个数据集走的是第四条路:不试图直接测肌压,而是从体表测胸腹两个腔室的周长变化。胸腔周长的扩张幅度反映肋间肌与胸廓的参与,腹腔周长的扩张幅度反映膈肌下沉的参与,两者之和约束着总容积变化。它因此不构成对肌压的直接测量,但构成对"容积从哪来"的独立约束——模型反解出来的潮气量,可以被胸腹周长推导出的容积变化独立校验一次。
第四条路的吸引力在于它与居家场景相容。食管球囊要插管,膈肌电导管要专用设备,呼气末阻断要患者配合且呼吸机支持特定的动作,这三条都天然绑定在医院或实验室里。周长带是一条不可伸长的带子加一个旋转编码器,成本、体积与操作难度都低一个量级,理论上可以做成居家自检套件的一部分。官方在背景部分说得很直接:做这套数据的最终目的,是把呼吸检查从专科临床场景推向初级诊疗与家庭场景。理解这一点,才能理解它为什么选择"小而可控的试验数据"而不是"大而真实临床数据"的路线——前者回答的是方法能不能成立,后者回答的是方法在真实人群里好不好用,两者顺序不能颠倒。一屏速览见下表。
1.2 三条常见的错误期待
第一条,期待它是"病患者的临床数据"。官方摘要写明受试者是 30 名健康成人(healthy adults),通过坎特伯雷大学的广告招募。队列里确实包含吸烟者、电子烟使用者与哮喘者,官方也说明纳入这些人的意图是对病理生理影响做初步评估。但基础人群是健康的年轻人,用它训练出的模型若直接外推到慢阻肺或急性呼吸窘迫综合征患者,年龄跨度与疾病谱都不支持。
第二条,期待它能给出"逐呼吸的事件标签"。处理态文件里唯一的标注型列是 InspInd(吸气起点索引),它标记每一次吸气的起始位置,不是疾病事件标签,也不是呼吸相位逐点标签。想做呼吸暂停、叹息、咳嗽这类事件的检测,标签需要自己从头构造。
第三条,期待三档 PEEP 构成"剂量—反应曲线"。0、4、8 cmH2O 是三个离散设置,组间休息时长由受试者自行决定,记录顺序固定为常速、快喘、深呼吸(方法部分所述顺序)。它是对"设置—波形形态"的对照采集,不是经过随机化与洗脱期的剂量爬坡试验。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 一阶呼吸力学模型的拟合与辨识 | 100 Hz 压力、流量、潮气量三列齐全,9 组试验覆盖不同 PEEP 与呼吸方式 | 够,且组内样本连续、足以逐呼吸拟合 |
| 模型反解容积的独立校验 | 胸周长与腹周长两个独立通道,单位已换算到毫米 | 够,这是它区别于同类库的核心 |
| 呼吸肌招募的胸腹分配估计 | 胸、腹两条带子的同步扩张曲线 | 够做方法学探索,官方未提供肌压金标准对照 |
| PEEP 设置对波形形态的影响 | 0、4、8 cmH2O 三档,同一人同一呼吸方式下可比 | 够做对照,不够做剂量建模 |
| 不同呼吸方式下的力学差异 | 常速、快喘、深呼吸三类,指令明确 | 够,三类之间流量幅度与时间尺度差异显著 |
| 性别差异的初步考察 | 男女各 15 名,官方明确说明用于评估性别差异 | 够做探索性对照,每档仅 15 人不足以支撑结论 |
| 慢阻肺、ARDS 等疾病的力学建模 | — | 不够,队列为健康年轻人 |
| 长期随访、结局、用药信息 | — | 不够,只有一次试验加一份自报问卷 |
| 事件级标注(呼吸暂停、叹息等) | 仅吸气起点索引 | 不够,需自建标签 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你有一个一阶模型,想验证它在自主呼吸下还成立 | 提供同一人在九个条件下、每条件数千采样点的压力—流量—容积序列 | 逐呼吸切片拟合,把残差与呼吸方式、PEEP 档位做交叉对照 |
| 你在做无创通气的居家监测设备,需要廉价的第二路观测量 | 周长带与旋转编码器的硬件设计已随 HardwareX 论文开放 | 先复现官方装置,再评估带子位置误差对结果的敏感度 |
| 你想判断潮气量的估计误差来自哪 | 胸腹周长提供与流量积分相互独立的一路容积估计 | 两条路径各算一次容积,比较差值随呼吸方式与 PEEP 的变化 |
| 你在教呼吸生理学,需要一个"看得见的胸腹分工" | 快喘与深呼吸两组的胸腹曲线形态差异直观 | 取同一受试者的两种呼吸方式作图对照,注意单位换算 |
| 你要做跨库泛化测试,缺一个非临床场景的呼吸库 | 提供健康人、设备自研、采集协议完整的独立来源 | 与临床波形库搭配使用,注意采样率与量纲对齐 |
| 你要训练一个大模型 | 30 人、270 组的规模远不足以支撑 | 改用它做验证集或方法学的小样本论证 |
1.5 一句话判断
它不是一个"更大的呼吸训练集",而是一把"双向校验的尺子":气道端测到的容积变化,与胸腹端测到的周长变化,可以互相给对方划定误差边界,而这两路观测在别的公开呼吸库里几乎从不同时出现。
1.6 不适合谁:四条边界
不适合拿来做疾病队列建模。 30 名 19–37 岁的健康成人,样本量与疾病谱都不支持任何疾病层面的统计结论。官方对吸烟者与哮喘者的措辞是"初步评估"。
不适合拿来做规模训练。 270 组、每组数千采样点,对深度学习而言是极小样本。它会立刻过拟合。
不适合拿来做剂量—反应或干预研究。 三档 PEEP 是三个离散设置,组间休息自定,无随机化、无洗脱、无盲法。
不适合拿来做绝对容积标定研究。 周长与容积之间的换算关系依赖个体胸腹几何与带子位置,官方未给出标定系数或体描仪金标准对照。
§2 数据构成与规格
2.1 顶层目录与文件组成
| 路径 | 类型 | 文件数 | 内容 |
|---|---|---|---|
raw-data/ |
目录 | 539 个 CSV | 按受试者编号分 30 个子目录(01–30),每格试验两套文件 |
processed-data/ |
目录 | 269 个 CSV | 按"PEEP 档位_呼吸方式"分 9 个子目录,每格试验一个文件 |
code/ |
目录 | 1 个 .m |
FigureGenerationCode.m,生成示例图的 MATLAB 脚本 |
subject-info.csv |
文件 | — | 30 名受试者的自报人口学与医学信息,13 列 |
README.txt |
文件 | — | 目录结构、命名规则、列含义说明 |
LICENSE.txt |
文件 | — | CC BY 4.0 全文 |
SHA256SUMS.txt |
文件 | — | 815 行校验和,可用来核验下载完整性 |
Figure1.png / Figure2.png / Figure3.png |
文件 | — | 3 号受试者在 ZEEP 下常速、快喘、深呼吸的示例图 |
设计上,raw-data 应为 30 × 3 × 3 × 2 = 540 个文件,processed-data 应为 30 × 9 = 270 个文件。实际分别只有 539 与 269 个,缺口落在同一个位置:16 号受试者在 4 cmH2O 深呼吸这一格上,既没有带单位的原始文件,也没有处理态呼吸集文件,只保留了 ADC 原始计数文件。这是下载前就该知道的边界条件(§7.3)。
2.2 处理态字段字典
处理态文件位于 processed-data/<PEEP>_<type>/,命名形如 Subject_1_0cmH20_deep_breaths.csv。列 A 到 G 共七列,首行为表头含单位。
| 列 | 字段名 | 单位 | 含义 | 使用注意 |
|---|---|---|---|---|
| A | Time [s] |
秒 | 时间轴,步长 0.01 秒 | 已截断为完整呼吸,短于原始记录设置 |
| B | Pressure [cmH2O] |
厘米水柱 | 文丘里喉部表压 | 0 cmH2O 档位下可见负值 |
| C | Flow [L/s] |
升每秒 | 吸气为正、呼气为负 | 官方 README 明确符号约定 |
| D | V_tidal [L] |
升 | 潮气量 | 由流量积分得到,逐点给出 |
| E | Chest [mm] |
毫米 | 胸部周长 | 由旋转编码器计数换算 |
| F | Abd [mm] |
毫米 | 腹部周长 | 由旋转编码器计数换算 |
| G | InspInd |
索引 | 吸气起点索引 | 不是逐点标签,只在起点位置有值 |
以 1 号受试者 0 cmH2O 深呼吸为例,首两行数据如下:
Time [s],Pressure [cmH2O],Flow [L/s],V_tidal [L],Chest [mm],Abd [mm],InspInd
0,-0.13565270375397,0,0,1122.56185427087,1011.65412291826,1
同一受试者在 0 cmH2O 常速、快喘与深呼吸三档的处理态长度分别为 5373 行(53.72 秒)、3252 行(32.51 秒)与 4660 行(46.59 秒);在 8 cmH2O 深呼吸档为 4688 行(46.87 秒)。处理态短于原始态的 65 秒与 35 秒设置,是因为 MATLAB 处理脚本按完整呼吸周期做了裁剪。
2.3 原始态字段字典(两套并存)
原始态文件位于 raw-data/<编号>/,同一格试验给出两个文件:带单位的版本与 ADC 原始计数版本。带单位版本列 A 到 F 共六列:
| 列 | 字段名 | 单位 | 含义 |
|---|---|---|---|
| A | time [s] |
秒 | 时间轴,标称 100 Hz |
| B | GaugeP [cmH2O] |
厘米水柱 | 文丘里喉部表压 |
| C | InhaleDeltaP [cmH2O] |
厘米水柱 | 吸气压差 |
| D | ExhaleDeltaP [cmH2O] |
厘米水柱 | 呼气压差 |
| E | Chest [mm] |
毫米 | 胸部周长 |
| F | Abd [mm] |
毫米 | 腹部周长 |
ADC 原始计数版本同样六列,字段名不带单位后缀:
| 列 | 字段名 | 含义 |
|---|---|---|
| A | time |
时间轴 |
| B | GaugeP |
喉部表压的 ADC 计数 |
| C | InhaleDeltaP |
吸气压差的 ADC 计数 |
| D | ExhaleDeltaP |
呼气压差的 ADC 计数 |
| E | Chest counts |
胸部周长编码器计数 |
| F | Abd counts |
腹部周长编码器计数 |
两套文件的首两行对比(1 号受试者 0 cmH2O 深呼吸):
time [s],GaugeP [cmH2O],InhaleDeltaP [cmH2O],ExhaleDeltaP [cmH2O],Chest [mm],Abd [mm]
0,-0.393392840886514,0.189913785255559,0.00387579153582773,1131.33522729006,1022.46469912281
time,GaugeP,InhaleDeltaP,ExhaleDeltaP,Chest counts,Abd counts
0,1435,1736,1640,31843,28253
保留 ADC 版本的意义在于:单位换算是作者按传感器数据手册做的,若第三方对标定系数有疑问,可以直接从计数重新推。代价是换算系数本身没有随数据发布,需要回到 HardwareX 论文与传感器手册。
2.4 受试者信息表字段字典
subject-info.csv 共 30 行(不含表头)、13 列,官方说明列 A 到 M 依次如下:
| 列 | 内容 | 取值形态 |
|---|---|---|
| A | 受试者编号 | 1–30 |
| B | 性别 | M / F |
| C | 身高 | 厘米 |
| D | 体重 | 千克 |
| E | 年龄 | 岁 |
| F | 是否吸烟或使用电子烟 | Y (Vape)、Y (Both)、N 等自报值 |
| G | 吸烟或电子烟使用频次 | 自由文本,含 Casually 等值,单位写在列值里 |
| H | 吸烟或电子烟持续时长 | 自由文本,单位写在列值里 |
| I | 是否哮喘 | Y / N |
| J | 哮喘药物名称 | 自由文本或空 |
| K | 哮喘药物使用频次 | 自由文本或空 |
| L | 受试者自感"更难呼吸"的试验 | PEEP 档位值,单位厘米水柱 |
| M | 受试者自感"更易呼吸"的试验 | PEEP 档位值,单位厘米水柱 |
表内存在空单元(未用药者无药物名称与频次),这是问卷型字段的正常形态。L、M 两列是主观感受,不能直接当作生理指标使用。
2.5 文件命名规则与一个拼写坑
| 文件族 | 命名样例 | 关键成分 |
|---|---|---|
| 原始态(带单位) | CPAP2022_Subjecct1_0cmH2O_deep.csv |
年份前缀 + 受试者 + PEEP 档位 + 呼吸方式 |
| 原始态(ADC) | CPAP2022_Subjecct1_0cmH2O_deep_raw.csv |
同上,加 _raw 后缀 |
| 处理态 | Subject_1_0cmH20_deep_breaths.csv |
受试者 + PEEP 档位 + 呼吸方式 + _breaths |
| 处理态目录 | 0cmH2O_deep / 4cmH2O_norm / 8cmH2O_pant |
PEEP 档位 + 呼吸方式 |
| 原始态目录 | 01 … 30 |
两位零填充受试者编号 |
三个必须注意的不一致。第一,raw-data 的文件名里 “Subject” 被拼成了 Subjecct(双 c),按常规拼写构造路径会得到空结果。第二,PEEP 档位在原始态写作 0cmH2O(大写 O),在处理态写作 0cmH20(末位是数字零),两者不是同一个字符串。第三,原始态的受试者编号无下划线(Subjecct1),处理态有(Subject_1),且处理态没有年份前缀。
呼吸方式的三取值在两类文件中一致:norm(常速)、pant(快喘)、deep(深呼吸)。
2.6 五个通道的物理含义
| 通道 | 测的是什么 | 在呼吸力学里的角色 |
|---|---|---|
| 喉部表压 | 文丘里喉部的静压 | 近似气道开口处压力,是模型方程的左端项 |
| 吸气压差 | 文丘里收缩段两侧的压差(吸气方向) | 经伯努利关系换算成吸气相流量 |
| 呼气压差 | 文丘里收缩段两侧的压差(呼气方向) | 经伯努利关系换算成呼气相流量 |
| 胸周长 | 腋窝水平、胸骨平坦上缘处的周长 | 反映肋间肌与胸廓对容积变化的贡献 |
| 腹周长 | 腰部最窄处的周长 | 反映膈肌下沉对容积变化的贡献 |
吸气与呼气用两路独立的压差通道测量,再在后处理里合并成一条双向流量曲线。这个设计与同期另一套采用单向传感器分置两侧的方案不同(§4.2),合并规则由 MATLAB 脚本实现,脚本本身未随数据发布,只发布了绘图脚本。
为什么吸气与呼气要分两路测?文丘里管的压差与流量的关系含一个平方项,压差本身不带方向信息,只有压差的正负才对应流向。用一路双向压差传感器理论上也能测,但量程与分辨率要在两个方向上折中;分成两路单向通道,每一路都可以在自己负责的方向上做到最优灵敏度,代价是后处理时必须决定"什么时候算吸气、什么时候算呼气",并把两条半边曲线缝成一条。缝合规则因此直接决定了流量过零点附近的形态,也决定了潮气量积分的起点。这是本库一个不可自查的环节:官方只发布了用于画图的 FigureGenerationCode.m,识别呼吸与合并吸呼的处理脚本并不在库内,想复核只能回到作者的 HardwareX 装置论文与后续方法学文献。
五个通道的时间对齐也值得说明。压力与流量来自文丘里装置上的传感器,周长来自躯干上的两个编码器,两者在物理上是两套独立的采集链路,官方说明由同一个 MATLAB 脚本统一采样,因此可以按行对齐。跨链路的相位延迟官方未给出测量值,做胸腹相位差一类精细分析时应把这一项视为未标定。
§3 它是谁的数据
3.1 贡献者与机构
| 作者 | 署名 | 机构 |
|---|---|---|
| Ella Frances Sophia Guy | 第一作者 | 坎特伯雷大学 |
| Jennifer Knopp | 共同作者 | 坎特伯雷大学 |
| Theodore Lerios | 共同作者 | 坎特伯雷大学 |
| James Geoffrey Chase | 通讯作者 | 坎特伯雷大学 |
四位作者均署名坎特伯雷大学(University of Canterbury,新西兰基督城)。通讯作者信息需登录 PhysioNet 才能查看。该团队在 PhysioNet 上围绕同一硬件路线发布了多个相邻数据集,本库是其中引入胸腹周长通道的那一支。
3.2 时间线
| 时间 | 事件 | 出处 |
|---|---|---|
| 2020 年 7 月 16 日 | 坎特伯雷大学人类伦理委员会批准试验(HEC 2020/14/LR) | 官方 Ethics 段 |
| 2021 年 11 月 22 日 | 伦理修订被接受 | 官方 Ethics 段 |
| 2022 年(卷 12,e00354) | 采集装置论文发表于 HardwareX,装置设计开放获取 | 官方参考文献 [30] |
| 2022 年 7 月 21 日 | subject-info.csv 文件时间戳 |
文件目录 |
| 2022 年 12 月 20 日 | Figure1–3 三张示例图生成 | 文件目录 |
| 2023 年 1 月 11 日 | README.txt 文件时间戳 |
文件目录 |
| 2023 年 1 月 24 日 | LICENSE.txt 文件时间戳 |
文件目录 |
| 2023 年 1 月 25 日 | 版本 1.0.0 在 PhysioNet 发布,SHA256SUMS.txt 同日 |
官方 Versions 段 |
截至核验时,Versions 面板只有 1.0.0 一个版本,因此"首次发布"与"最近改动"指向同一日期。官方页面另有"Project Views 328"的访问计数。
3.3 采集场景与硬件清单
| 环节 | 具体实现 | 出处 |
|---|---|---|
| 面罩 | FreeMotion RT041(Fisher and Paykel Healthcare,新西兰) | 官方 Methods |
| 过滤 | HEPA 滤器 HMEF 002874(Smiths Medical,明尼阿波利斯) | 官方 Methods |
| 测流测压 | 定制双向文丘里装置,串接在滤器与 CPAP 管路之间 | 官方 Methods |
| 胸腹测量 | 不可伸长带式卷尺,末端接旋转编码器 | 官方摘要 |
| 胸带位置 | 腋窝水平,带子落在胸骨平坦的上部 | 官方 Background |
| 腹带位置 | 腰部最窄处 | 官方 Background |
| 采集软件 | MATLAB R2020a(The Mathworks Inc,Natick,MA) | 官方 Methods |
| 采样率 | 100 Hz | README.txt |
试验流程按官方方法部分描述:先在静息常速下呼吸,再快喘,再深呼吸;三档 PEEP(0、4、8 cmH2O)各重复一轮,共 9 组,组间由受试者自行示意恢复后再开始下一组。官方摘要给出录制时长设置为常速与深呼吸 65 秒、快喘 35 秒,而方法部分写作 60 秒、30 秒、60 秒——同一页面内部存在两处不一致(§10)。
3.4 来源层次:它属于哪一类数据
| 层次 | 判定 | 依据 |
|---|---|---|
| 是否为临床诊疗产生 | 否 | 受试者通过校园广告招募的健康成人 |
| 是否有伦理审批 | 是 | 坎特伯雷大学人类伦理委员会 HEC 2020/14/LR |
| 是否去标识 | 是 | 以与签署同意书无关联的编号代替身份 |
| 是否原始采集 | 是,非从其他库二次加工 | 官方声明为采集所得 |
| 是否有配套论文 | 有 | 装置论文(HardwareX 2022)与数据描述论文(Scientific Data 2023) |
| 资助来源 | 新西兰政府商业、创新与就业部(MBIE)拨款 | 官方 Acknowledgements |
它属于"为验证特定模型而专门设计采集的试验数据",而不是"诊疗过程顺带留下的记录"。这个定位决定了它的优点是协议完整、条件可控、硬件可复现;缺点是人群窄、样本小、缺少真实临床噪声与并发症谱。
把这两类数据放在同一张评价尺度上比较,几乎总会得出错误的结论。以"记录总时长"衡量,本库全部数据加起来不到一小时量级,任何长时程监测库都能轻易超过它;但长时程库给不了 100 Hz 的气道压力,也多半给不了胸腹周长。以"受试者人数"衡量,30 人在公开生理库里排不上号;但多中心大库的采集协议往往不统一,跨中心的设备差异会淹掉本库想要分辨的那种机制性差异。正确的问法不是"它够不够大",而是"我要回答的问题,需要的是规模还是条件控制"。
对这个数据集而言,答案始终偏向条件控制。它要证明的是"加上两路周长之后,模型辨识能不能更稳"这一类命题,这类命题只要几十人、条件干净、通道互补就能论证;而"这个方法在真实患者身上行不行"的命题,它从设计上就没有打算回答。
§4 它最独特的东西
4.1 稀缺性:三路观测同时出现
| 观测类型 | 常见呼吸库的覆盖 | 本库 |
|---|---|---|
| 气道压力 | 有创通气库常见,无创居家库少见 | 有,100 Hz |
| 气道流量 | 部分库有 | 有,双向 |
| 潮气量 | 多由流量积分得到 | 有,逐点给出 |
| 胸腔周长动态 | 极少 | 有,毫米 |
| 腹腔周长动态 | 极少 | 有,毫米 |
| 呼吸肌电或食管压 | 极少数库有 | 无 |
公开呼吸数据里,"压力 + 流量"这一组合并不罕见,罕见的是再叠加两路体表周长。多数呼吸库要么来自有创通气(有压力流量,无胸腹周长),要么来自可穿戴或睡眠监测(有胸腹运动带,无气道压力流量)。本库把两类观测量放到同一个人、同一口气上,这在公开域里是可数的少数。
这种"两头都有"的配置之所以重要,是因为它把模型的验证方式从自证改成了互证。只靠压力与流量时,一个模型拟合得好不好,只能用同一条曲线的残差来评价——残差小既可能是模型对,也可能是参数之间互相补偿的结果,弹性偏大一点、阻力偏小一点,常常能给出几乎一样的拟合曲线。多出两路独立的体表观测量之后,模型算出的容积变化必须同时与胸腹周长推导出的变化对得上,这就堵死了一部分参数补偿的空间。官方把周长通道称为"辅助的动态周长监测",用词很克制,但从验证逻辑上看,它起到的不是辅助作用,而是约束作用。
稀缺性也有代价。正因为两路观测量在别处不同时出现,本库缺少可以直接对照的同类资源,跨库复现同一套分析流程会立刻遇到通道不匹配的问题(§6.3)。研究者要么接受"只能在本库内部做一致性论证",要么自己补一套周长硬件。
4.2 差异化证据:与同组相邻数据集相比
| 对比项 | 本库(pressure-flow-circum-cpap) | 同组另一 CPAP 库(cpap-data-canterbury,v1.0.1) |
|---|---|---|
| PEEP 档位 | 0(ZEEP)、4、8 cmH2O | 4、7 cmH2O |
| 呼吸方式 | 常速、快喘、深呼吸(自定节奏) | 五个指令速率,由视听节拍器引导 |
| 是否有周长通道 | 有胸、腹两路 | 无 |
| 是否含 ZEEP(0 档) | 含 | 不含 |
| 采样率 | 100 Hz | 原始 83.33 Hz,重采样到 100 Hz |
| 受试者年龄 | 19–37 岁 | 19–58 岁 |
| 数据体量 | 304.5 MB | 233.6 MB |
| 发布时间 | 2023 年 1 月 25 日 | 2022 年 3 月 24 日 |
两者同出坎特伯雷大学、同为 30 名健康成人、共用同一伦理批件编号,但采集协议与通道组成不同,是两个独立的 PhysioNet 项目而非同一数据集的两个版本。真正把它们区分开的是两点:本库有 0 档(ZEEP)作为无正压基线,本库有胸腹周长通道。
4.3 三个可直接上手的具体案例
| 案例 | 做法 | 能说明什么 |
|---|---|---|
| 快喘 vs 深呼吸的胸腹分工 | 取同一受试者的 pant 与 deep 两档,叠加胸、腹周长曲线 |
快喘时胸腹幅度与相位关系与深呼吸不同,可量化呼吸方式对招募路径的影响 |
| PEEP 抬升对基线周长的影响 | 比较同一人在 0、4、8 cmH2O 三档常速下的胸、腹周长均值位置 | 正压是否把胸腹静态周长抬高,以及抬高集中在胸还是腹 |
| 流量积分与周长推导的容积互校 | 对 Flow 积分得潮气量,与 V_tidal 列对照,再用周长变化做第三次估计 |
三路估计的一致性,可直接用于评估积分漂移 |
第三个案例最能体现本库的设计意图:官方 Usage Notes 明确写道,辅助的动态周长监测"允许对这些模型做二次验证,因为该数据提供了两种彼此独立的估计肺容积变化与肌肉招募的方法"。
4.4 标注结构的粒度
| 层级 | 是否存在 | 说明 |
|---|---|---|
| 逐采样点数值 | 有 | 五列数值在每个采样点上都有值(处理态七列) |
| 逐呼吸起点 | 有 | InspInd 列给出吸气起点索引 |
| 逐呼吸类型标签 | 部分 | 呼吸方式由文件名编码(norm/pant/deep),不是逐呼吸判断 |
| 逐段条件标签 | 有 | PEEP 档位与呼吸方式都写在路径与文件名里 |
| 事件级标签 | 无 | 无呼吸暂停、叹息、咳嗽等标注 |
| 受试者级问卷 | 有 | subject-info.csv 13 列 |
标注密度远低于心电类库。它不是为监督分类任务准备的,而是为参数辨识与模型验证准备的:条件标签在文件名里,起点索引在处理态文件里,其余靠研究者自己切。
4.5 边界条件:用之前必须接受的五条
| 边界 | 具体值或事实 |
|---|---|
| 人群边界 | 健康成人,19–37 岁,校园广告招募,非患者队列 |
| 样本边界 | 30 人 × 9 组,设计 270 组,实际可用 269 组 |
| 时间边界 | 单组 65 秒(常速、深呼吸)或 35 秒(快喘),无长时程与随访 |
| 硬件边界 | 装置为自研并 3D 相关设计,未使用商用呼吸机的内部传感器 |
| 计量边界 | 周长不等于容积,两者换算需个体几何参数,官方未给出标定系数 |
这五条不是使用建议,是使用前提。把它们逐条摊开的意义在于:本库的几乎每一处"不够",都源自设计取舍而非执行疏漏。人群窄是为了控制混杂,样本小是因为采集装置尚未量产,时间短是因为呼吸力学关注的是逐呼吸的时间尺度而非昼夜节律,硬件自研是为了让第三方能复现,缺少标定系数是因为装置论文把标定作为开放硬件的一部分交给使用者自己完成。看清这一点,就不会把"它为什么不做成更大更全的样子"当作缺陷,也不会反过来把它当成一份可以直接落地的产品级数据。
与之相对的,是几条真正应该被当作缺陷的地方:文件名拼写不一致、档位字符串不统一、扩展名与内容不符、一处缺件、原始态时间轴尾部停滞。这几条都不是设计取舍,是工程细节上的疏漏,且都可以在不重采数据的前提下修掉(§5.6)。两类问题要分开对待。
§5 怎么拿到
5.1 目录结构速查
pressure-flow-circum-cpap/1.0.0/
├── README.txt #-- 目录结构与列含义说明
├── LICENSE.txt #-- CC BY 4.0 全文
├── SHA256SUMS.txt #-- 815 行校验和
├── subject-info.csv #-- 30 名受试者的 13 列问卷信息
├── Figure1.png #-- 3 号受试者 ZEEP 常速示例
├── Figure2.png #-- 3 号受试者 ZEEP 快喘示例
├── Figure3.png #-- 3 号受试者 ZEEP 深呼吸示例
├── code/
│ └── FigureGenerationCode.m #-- 绘图脚本
├── raw-data/
│ ├── 01/ ... 30/ #-- 30 个受试者子目录,各 17–18 个 CSV
│ │ ├── CPAP2022_Subjecct1_0cmH2O_deep.csv
│ │ └── CPAP2022_Subjecct1_0cmH2O_deep_raw.csv
└── processed-data/
├── 0cmH2O_deep/ #-- 30 个 CSV(16 号缺件,29 个)
├── 0cmH2O_norm/
├── 0cmH2O_pant/
├── 4cmH2O_deep/ #-- 29 个 CSV
├── 4cmH2O_norm/
├── 4cmH2O_pant/
├── 8cmH2O_deep/
├── 8cmH2O_norm/
└── 8cmH2O_pant/
5.2 四种下载方式
#-- 方式一:整包 ZIP(79.9 MB),适合一次性拿全
wget https://physionet.org/static/published-projects/pressure-flow-circum-cpap/pressure-flow-circum-cpap-1.0.0.zip
#-- 方式二:PhysioNet 官方 Python 包(可配合 -l 只列目录)
pip install physionet
physionet download pressure-flow-circum-cpap --version 1.0.0
#-- 方式三:wget 递归镜像文件目录,可断点续传
wget -r -N -c -np https://physionet.org/files/pressure-flow-circum-cpap/1.0.0/
#-- 方式四:AWS Open Data 同步,无需凭证,适合大带宽环境
aws s3 sync --no-sign-request s3://physionet-open/pressure-flow-circum-cpap/1.0.0/ ./pfcpap
下载后用校验和核对:
#-- 815 行校验和,逐文件比对
sha256sum -c SHA256SUMS.txt
5.3 只取处理态:按条件批量过滤
#-- 只同步三档 PEEP 的常速呼吸处理态(90 个文件)
aws s3 sync --no-sign-request \
--exclude "*" --include "*/processed-data/*_norm/*" \
s3://physionet-open/pressure-flow-circum-cpap/1.0.0/ ./norm_only
#-- 只同步单一受试者的全部原始态
aws s3 sync --no-sign-request \
--exclude "*" --include "*/raw-data/01/*" \
s3://physionet-open/pressure-flow-circum-cpap/1.0.0/ ./subject01
5.4 流式读取与转表
import pandas as pd
from pathlib import Path
#-- 处理态:七列,单位齐全,直接可用
df = pd.read_csv('processed-data/0cmH2O_deep/Subject_1_0cmH20_deep_breaths.csv')
print(df.shape, list(df.columns))
#-- (4660, 7) ['Time [s]', 'Pressure [cmH2O]', 'Flow [L/s]',
#-- 'V_tidal [L]', 'Chest [mm]', 'Abd [mm]', 'InspInd']
#-- 吸气起点索引:用于把连续序列切成逐呼吸片段
starts = df['InspInd'].dropna().astype(int).values
print('吸气起点个数', len(starts), '首个起点', starts[0])
#-- 潮气量:直接读官方列,也可自己积分流量做交叉校验
import numpy as np
dt = np.median(np.diff(df['Time [s]'].values))
integrated = np.cumsum(df['Flow [L/s]'].values) * dt
print('官方列末值', df['V_tidal [L]'].iloc[-1], '积分末值', integrated[-1])
#-- 胸腹周长与流量的同步对照
print(df[['Chest [mm]', 'Abd [mm]']].iloc[[0, len(df) // 2, -1]])
#-- 原始态 ADC 版本:列名不带单位,计数需自行换算
raw = pd.read_csv('raw-data/01/CPAP2022_Subjecct1_0cmH2O_deep_raw.csv')
print(list(raw.columns))
#-- ['time', 'GaugeP', 'InhaleDeltaP', 'ExhaleDeltaP', 'Chest counts', 'Abd counts']
读取时要注意单位与符号约定两件事。流量的符号由官方 README 明确:吸气为正、呼气为负,这与某些呼吸库"呼气的绝对值更大"的直觉相反,作图与积分前先确认符号,否则潮气量会算成负值。压力一列在 0 cmH2O 档位下可以取到负值(示例文件首行为 −0.14 左右),这是表压相对于大气的正常表现,不代表传感器故障。
体量上,全部处理态只有约 269 个 CSV、单文件数千行,完全可以一次性读进内存做全量分析;原始态因为同时保留了带单位与 ADC 两套,文件数翻倍,若只做建模建议先只同步处理态(§5.3)。CSV 是纯文本,没有压缩与专用格式门槛,也不需要 WFDB 一类专用库——这一点与 PhysioNet 上多数波形库不同,是本库在工程上最省事的地方。
5.5 注释与条件的映射:条件全在路径里
本库没有单独的标注文件,试验条件由路径与文件名编码。建索引表的标准做法:
import pandas as pd
from pathlib import Path
#-- 扫描处理态目录,把 PEEP 档位与呼吸方式解析成列
rows = []
for p in Path('processed-data').glob('*/*.csv'):
peep, btype = p.parent.name.split('_') #-- 例如 0cmH2O / deep
subj = p.name.split('_')[1] #-- 例如 1
rows.append({'subject': int(subj), 'peep': peep,
'breath_type': btype, 'path': str(p)})
index = pd.DataFrame(rows).sort_values(['subject', 'peep', 'breath_type'])
#-- 与问卷表按受试者编号左连接
info = pd.read_excel('subject-info.csv') #-- 注意:实为 XLSX 工作簿
info.columns = [c.strip() for c in info.columns]
merged = index.merge(info, left_on='subject',
right_on='Subject Number', how='left')
print(merged.shape, merged['peep'].value_counts().to_dict())
注意两点:一是 raw-data 的 PEEP 字符串是 0cmH2O(末位大写字母 O),processed-data 的是 0cmH20(末位数字 0),合并两侧键时必须归一;二是 subject-info.csv 虽以 .csv 为扩展名,实际内容是 Excel 工作簿(文件头为 ZIP 魔数 PK),pandas.read_csv 会失败,需用 read_excel 或先用表格软件另存为真正的 CSV。
5.6 五个坑
| 坑 | 现象 | 处理 |
|---|---|---|
| 文件名拼写 | raw-data 中写作 Subjecct(双 c) |
按目录实际列表生成路径,不要拼字符串 |
| 档位字符串不一致 | 原始态 0cmH2O,处理态 0cmH20 |
合并前统一归一成数字档位 |
subject-info.csv 不是 CSV |
实为 XLSX 工作簿 | 用 read_excel,或先另存 |
| 原始态时间轴尾部停滞 | 时间列末尾约 147 行取值恒定(约 −1.48 秒),有效段止于约 63.5 秒(常速、深呼吸)或约 33.5 秒(快喘) | 用行号自行重建时间轴,或改用处理态 |
| 16 号受试者 4 cmH2O 深呼吸缺件 | 该格既无带单位原始文件也无处理态文件 | 遍历时按目录实际内容计数,不要假定 270 |
第五个坑尤其容易被忽略:若代码按 30 × 9 = 270 硬编码循环,会在 16 号 4 cmH2O 深呼吸上抛出文件不存在。
§6 与库内条目的关系
6.1 关系图谱:最近的是同组兄弟,其余是邻近主题
| 站内数据集 | 关系 | 区分要点 |
|---|---|---|
| cpap-data-canterbury | 同机构、同伦理批件、同为 30 人 CPAP 试验 | 该库为 2 档 PEEP(4、7)与五档指令速率,无胸腹周长通道;本库有 0 档与周长通道 |
| pics | 同为 PhysioNet 呼吸生理波形 | 该库为早产儿 NICU 心电与呼吸,本库为健康成人 CPAP 试验 |
| temporal-respiratory-support | 同为呼吸支持主题,但形态完全不同 | 该库为 ICU 逐小时时序表,本库为百赫兹波形 |
| openox-repo | 同为呼吸监测硬件评测 | 该库为脉搏血氧仪与血气对照,本库为气道压力流量与周长 |
| ucddb | 睡眠呼吸暂停的邻近主题 | 整夜多导睡眠,无气道压力流量精细化 |
| apnea-ecg | 呼吸事件检测的经典基准 | 基于心电推导呼吸,与本库测量路径正交 |
| hf-lung-v1 | 肺音与呼吸相位 | 声学路径,本库为力学路径 |
| icbhi-2017 | 呼吸音异常检测基准 | 听诊音频,本库无音频通道 |
| sprsound | 儿科呼吸音事件标注 | 事件级标注丰富,本库标注稀疏 |
| barcelona-sicu-signals | 床旁波形 | 重症场景,本库为健康人试验场景 |
| mimic4wdb | 重症波形大库 | 规模与场景互补,本库可作小规模方法学验证 |
| bidmc-ppg | 从光电容积波估呼吸率 | 间接估计路径,本库为直接测量 |
6.2 检索路径:按任务找最近的库
| 你要做的事 | 先去 | 补充 |
|---|---|---|
| CPAP 下的压力—流量建模 | 本库 | cpap-data-canterbury |
| 呼吸力学参数辨识 | 本库 | temporal-respiratory-support |
| 呼吸事件分类 | apnea-ecg | ucddb |
| 呼吸音与听诊 | icbhi-2017 | hf-lung-v1 |
| 睡眠场景下的呼吸 | cps-dataset-sleep | slpdb |
6.3 分工判据:什么时候选它,什么时候不选
| 判据 | 选本库 | 不选本库 |
|---|---|---|
| 需要气道压力与流量 | 是,100 Hz 双向 | 若只需呼吸率,选可穿戴库更省事 |
| 需要胸腹分工信息 | 是,两路周长 | 若无此需求,周长通道是冗余下载 |
| 需要临床患者数据 | 否 | 选 ICU 波形库或重症时序库 |
| 需要大样本训练 | 否,30 人 | 选 mimic4wdb 一类大库 |
| 需要事件级标注 | 否 | 选 sprsound 一类有标注的库 |
| 需要可复现的硬件方案 | 是,装置论文开放 | 若只要数据不要硬件,其余库门槛更低 |
§7 质量评估与局限性
7.0 前置校正:先说清它不是什么
评估这份数据之前,需要先卸掉三个默认预期。第一,它不是患者数据,任何"临床代表性"的评判都不适用。第二,它不是标注数据集,InspInd 之外的所有标签都在文件名里。第三,它不是商用设备的输出,压力与流量的绝对准确度取决于自研装置与传感器手册标定,而非呼吸机内部传感器。把这三条记住,后面五维评分才有意义。
7.1 五维评分
| 维度 | 评价 | 理由 |
|---|---|---|
| 协议完整度 | 高 | 硬件型号、面罩型号、带子位置、采样率、时长设置、伦理批件号全部公开 |
| 通道互补性 | 高 | 气道端与体表端三路同步,公开域少见 |
| 人群代表性 | 低 | 30 名 19–37 岁健康成人,校园招募 |
| 标注完备度 | 低 | 仅吸气起点索引,无事件标签 |
| 工程易用性 | 中 | 纯 CSV、无需专用工具;但命名不一致、扩展名与实际格式不符、有一处缺件 |
7.2 数据的两层结构
| 层 | 内容 | 可信度依赖 |
|---|---|---|
| 第一层:原始 ADC 计数 | 六列整数,未做任何换算 | 依赖采集硬件与 MATLAB 采集脚本正确 |
| 第二层:带单位值 | 按传感器手册换算到厘米水柱与毫米 | 依赖标定系数正确,系数未随数据发布 |
| 第三层:衍生量 | 流量、潮气量、吸气起点 | 依赖后处理脚本的呼吸识别与合并规则,脚本未发布 |
三层中只有前两层随数据给出,第三层的生成脚本(除绘图脚本外)没有发布。研究者若对吸气起点的判定规则有疑问,无法在库内自查,只能回到 HardwareX 论文与作者后续发表的方法学文献。
这个分层对使用方式的影响是具体的。如果你的工作只涉及弹性与阻力的相对比较,用第三层(处理态)就够,因为它已经替你完成了最麻烦的呼吸切分;如果你的工作涉及吸呼合并规则的敏感性分析,就必须回到第一层(ADC 计数)自己重走一遍换算,否则你分析的对象其实是作者的处理脚本而不是受试者的呼吸。中间那层(带单位原始态)处在尴尬位置:它比处理态少一列流量、多两列压差,适合想自己从压差推流量但不想从头做标定的人。
还有一处值得单独指出:处理态的 V_tidal 是逐点给出的潮气量列,而不是每个呼吸一个值。这意味着它是一条随时间累积并在每个呼吸起点归零的曲线,直接对它取差分能得到单口气量,直接取末值则得到最后一口气量;把它当"该文件的潮气量"来读会得到完全错误的数字。
7.3 可枚举的偏差来源
| 偏差 | 机制 | 影响 |
|---|---|---|
| 面罩漏气 | 面罩与面部密封不严时呼气捕获不全 | 官方在相邻数据集里明确提到这一点,本库同样使用面罩通气 |
| 带子位置误差 | 胸带落在胸骨平坦上缘、腹带在腰部最窄处,靠人工放置 | 周长的绝对值跨受试者不可直接比较 |
| 招募偏差 | 校园广告招募,年龄集中在 19–37 岁 | 结论不能外推到老年或患病人群 |
| 顺序效应 | 呼吸方式顺序固定,组间休息由受试者自定 | 后续试验可能受前一试验影响 |
| 自报偏差 | 身高、体重、吸烟史、哮喘史均为问卷自报 | 未做客观测量核对 |
| 缺件 | 16 号受试者 4 cmH2O 深呼吸一格缺失 | 遍历代码若硬编码 270 会中断 |
| 时长设置不一致 | 官方摘要写 65/35 秒,方法部分写 60/30/60 秒 | 引用时长数字需注明出处段落 |
7.4 外部验证:引用它的文献
| 文献 | 出处 | 与本库的关系 |
|---|---|---|
| Guy, Knopp, Lerios et al.,Scientific Data,2023 | 官方 Cited by 列表 | 本库的数据描述论文 |
| Guy, Clifton, Knopp et al.,Sensors,2023 | 官方 Cited by 列表 | 无创评估腹部/膈肌与胸部/肋间对自主呼吸的贡献 |
| Orangi-Fard, Bogdan, Sagreiya,Military Medicine,2025 | 官方 Cited by 列表 | 面向远程呼吸疾病监测的机器学习算法开发 |
| Guy, Chase, Holder-Pearson,HardwareX 12: e00354,2022 | 官方参考文献 [30] | 采集装置本身的开放获取论文 |
官方页面显示"Cited by 3 publications",数据来自 OpenAlex,未引用项目而直接使用数据的论文可能未被计入。
7.5 为什么它仍然值得用
因为它填补的是方法学上的空白,不是规模上的空白。呼吸力学模型在自主呼吸下的参数辨识长期欠定,主流解法要么有创、要么需要特殊 maneuver、要么依赖专用导管。本库提供的胸腹周长是一条不需要额外侵入、成本极低、且理论上可在居家场景复制的约束。装置设计已开放获取,意味着任何团队都能复现并扩充它。对做方法学验证的人来说,30 人足够;对做规模训练的人来说,30 人远远不够——这两句话并不矛盾。
更准确地说,本库适合充当三种角色而非常见的训练语料。第一种是"可行性论证材料":想说明一种无创的低成本方案能不能给出可用的约束,用它做几十人的对照就足以支撑一篇方法学论文。第二种是"误差来源的分离装置":因为 PEEP 与呼吸方式都是受控变量,同一人在九种条件下重复,可以把误差拆成"条件造成的"与"个体造成的"两部分,这在真实临床数据里做不到。第三种是"硬件复现的参照系":装置设计已开放,任何团队做出改进后,可以用同一套协议采集并直接比对。
它不适合充当的角色同样明确:不是疾病队列,不是标注基准,不是长时程监测样本,也不是商用设备性能的评测依据。把这四种角色排除之后,剩下的方法学价值反而更加清楚——它是一把用来检验"呼吸力学模型在自主呼吸下还站不站得住"的小尺子,尺子短,但刻度是双向的。
§8 生态位与历史
8.1 沿革:一条硬件路线的几次发布
| 时间 | 项目 | 与本研究路线的关系 |
|---|---|---|
| 2022 年 3 月 24 日 | CPAP Pressure and Flow Data(30 人,PEEP 4 与 7) | 同组前序项目,双向文丘里的早期版本,无周长通道 |
| 2022 年 | HardwareX 12: e00354 装置论文 | 采集硬件与周长带设计开放 |
| 2023 年 1 月 25 日 | 本库 v1.0.0 | 引入 0 档 ZEEP 与胸腹周长通道 |
| 2023 年 | Scientific Data 数据描述论文 | 本库的正式发表 |
| 2023 年 11 月 10 日 | PEEP 研究中带呼气阻断的呼吸数据集 | 同组后续项目,加入呼气阻断与电阻抗成像 |
| 2023 年 11 月 13 日 | 模拟阻塞性肺病的呼吸压力与流量 | 同组后续项目,用模块化装置模拟阻塞 |
这条线的演进方向清晰:从只有压力流量,到加入体表周长,再到加入阻断 maneuver 与电阻抗成像的充气评估。本库处在"第一次把体表观测量并进来"的位置。
8.2 与挑战赛的关系
本库不是任何 PhysioNet/CinC 挑战赛的官方数据集,也没有配套排行榜。它的定位是研究数据集而非竞赛基准:没有隐藏测试集、没有评价指标、没有基线成绩。想参加呼吸方向的挑战赛,站内更相关的是 cinc-2018-sleep-arousal 一类带评测框架的资源;本库适合作为这些竞赛之外的机制性验证材料。
8.3 生态位
| 生态位维度 | 位置 |
|---|---|
| 平台 | PhysioNet,开放访问,CC BY 4.0 |
| 学科 | 呼吸力学建模、生物医学工程 |
| 数据类型 | 短时程、条件受控的试验波形,非长时程监测 |
| 规模档位 | 小规模(30 人级),方法学验证档 |
| 竞品形态 | 有创通气波形库(有压力流量无周长)、可穿戴与睡眠库(有胸腹运动无气道压力) |
它卡在两类库的缝隙里:一类有气道端观测量,一类有体表端观测量,同时具备两者的公开资源很少。缝隙窄,但位置明确。
把生态位讲清楚还有一个实际用途:帮使用者判断该把本库放在工作流的哪一步。它出现在"方法提出"与"小规模机制验证"这两步最合适,出现在"大规模训练"与"临床落地验证"这两步最不合适。一个常见的误排是把 30 人的试验数据塞进训练流程,随后发现模型在外部数据上完全不泛化,进而得出"这类通道没有用"的结论——真正出问题的不是通道,是位置。
从许可与获取口径看,本库处在最宽松的一档:CC BY 4.0、开放访问、无需签署数据使用协议、无需完成伦理或隐私培训、提供 AWS 免凭证同步。这与需要凭证化审批的临床波形库形成对照,意味着它可以被直接用于教学、开源项目复现与商业原型验证,只要保留署名。代价是宽松的许可也意味着没有平台层面的使用审计,引用率与影响面只能靠 OpenAlex 一类外部索引间接观察。
8.4 谁在用
| 使用者类型 | 用法 |
|---|---|
| 呼吸力学建模研究者 | 拟合一阶与高阶模型,辨识弹性与阻力 |
| 呼吸肌招募研究者 | 用胸腹周长估计膈肌与肋间肌的相对贡献 |
| 无创通气设备工程师 | 评估低成本传感器能否支撑居家监测 |
| 生理信号教学 | 演示胸式呼吸与腹式呼吸的曲线差异 |
§9 使用指引
9.1 三种角色的最短路径
| 角色 | 路径 |
|---|---|
| 建模研究者 | 下载 processed-data 全部 → 按受试者与条件建索引 → 用 InspInd 切呼吸 → 逐呼吸拟合一阶模型 → 用胸腹周长校验容积估计 |
| 设备工程师 | 读 HardwareX 装置论文 → 下载 raw-data 的 ADC 版本 → 复现换算法 → 与带单位版本比对 |
| 教学使用者 | 只取 Figure1–3 与 processed-data 中 3 号受试者 ZEEP 三档 → 用 FigureGenerationCode.m 复现官方图 |
三条路径的共同前提是先把目录扫描成索引表,而不是按编号硬编码循环。原因在 §5.6 已经列过:16 号受试者 4 cmH2O 深呼吸一格缺件,档位字符串在两类目录里写法不同,扩展名与实际格式不符。扫描法的成本是十几行代码,收益是绕开全部三处不一致。
三条路径的分歧点在于要不要回原始态。建模研究者一般不需要,因为处理态已经给了流量与潮气量;设备工程师必须回,因为要复现的就是换算本身;教学使用者一般不需要,除非想演示"从压差到流量"这一步。判断标准很朴素:如果你的研究对象包含"从传感器到物理量"这一段,就回原始态;否则用处理态。
9.2 最短上手流程
import pandas as pd, numpy as np
#-- 1) 取一个处理态文件,确认七列齐全
df = pd.read_csv('processed-data/8cmH2O_deep/Subject_1_8cmH20_deep_breaths.csv')
#-- 2) 用吸气起点切出逐呼吸片段
starts = df['InspInd'].dropna().astype(int).values
breaths = [df.iloc[a:b] for a, b in zip(starts[:-1], starts[1:])]
#-- 3) 对每一口气拟合 P = E*V + R*Q + P0(最小二乘)
#-- 注意:自主呼吸下 P0 含肌压等混杂项,此处仅演示形式
def fit_one(b):
V = b['V_tidal [L]'].values
Q = b['Flow [L/s]'].values
P = b['Pressure [cmH2O]'].values
A = np.column_stack([V, Q, np.ones_like(V)])
coef, *_ = np.linalg.lstsq(A, P, rcond=None)
return coef #-- 依次为 E、R、常数项
print('首口气', fit_one(breaths[0]))
#-- 4) 用胸腹周长做独立校验:周长变化与潮气量应同向
seg = breaths[0]
d_chest = seg['Chest [mm]'].iloc[-1] - seg['Chest [mm]'].iloc[0]
d_abd = seg['Abd [mm]'].iloc[-1] - seg['Abd [mm]'].iloc[0]
print('胸周长变化', d_chest, '腹周长变化', d_abd,
'该口气潮气量', seg['V_tidal [L]'].iloc[-1] - seg['V_tidal [L]'].iloc[0])
9.3 引用方式
| 场景 | 写法 |
|---|---|
| 引用数据集 | Guy, E. F. S., Knopp, J., Lerios, T., & Chase, J. G. (2023). Pressure, flow, and dynamic thoraco-abdominal circumferences data for adults breathing under CPAP therapy (version 1.0.0). PhysioNet. https://doi.org/10.13026/25q9-y416 |
| 引用 DOI(本版本) | 10.13026/25q9-y416 |
| 引用 DOI(最新版) | 10.13026/wmzm-d487 |
| 同时引用平台 | 按 PhysioNet 要求附平台引用(Pollard 等,Nature Health,2026) |
官方页面明确要求"使用本资源时请引用"上述条目,并在平台层面追加 PhysioNet 的标准引用。许可为 CC BY 4.0,署名即可使用、再分发与改编,无额外注册要求。
§10 AI 使用声明
| 项目 | 说明 |
|---|---|
| 文本生成 | 正文由 AI 依据 PhysioNet 官方页面(v1.0.0)与随库文件(README.txt、SHA256SUMS.txt、subject-info.csv、示例 CSV)撰写,经结构、数字与格式机检 |
| 数字来源 | 全部规模、结构、边界数字来自官方页面摘要、Methods、Data Description、Usage Notes 与文件目录;文件计数来自 SHA256SUMS.txt 的 815 行清单;单文件行数由读取该文件表头与长度得到 |
| 文件核验 | 已核验 README.txt 全文、SHA256SUMS.txt 全量路径、subject-info.csv 的 13 列与 30 行、4 个示例 CSV 的表头与首行、3 个处理态文件的行数与时间跨度、4 个原始态文件的时间轴 |
| 不一致说明 | 官方页面内部存在两处不一致:摘要写录制时长为 65 秒(常速、深呼吸)与 35 秒(快喘),Methods 段写 60 秒 / 30 秒 / 60 秒;摘要在 PEEP 处只列 4 与 8 cmH2O 而 Methods 与文件目录显示还有 0(ZEEP)档。正文以文件目录与 Methods 为准 |
| 论文信息 | 装置论文 Guy, J. Geoffrey Chase, Holder-Pearson,HardwareX 12: e00354,2022;数据描述论文 Guy, Knopp, Lerios et al.,Scientific Data,2023。论文页码、卷期细节未在官方页面给出,未展开 |
| 未核验内容 | 传感器标定系数与 ADC 到物理量的换算公式未随数据发布;后处理中呼吸识别与吸气合并的具体阈值未发布;逐呼吸的呼吸数、潮气量范围、胸腹幅度范围等未从文件统计,故未收录;三张示例图的具体数值未在正文引用;访问计数"328"为页面快照值,会随时间变化 |
| 图像 | 封面图像为按站点风格库生成的提示词产物,不含真实数据截图;正文未复现 Figure1–3 |
| 免责 | 数据集用于研究方法学与工程验证,不构成任何诊断、治疗或医疗器械合规性依据;引用结论前应回到原始文件复核 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 它是患者数据 | 30 名通过校园广告招募的健康成人,19–37 岁 | 官方摘要"30 healthy subjects, aged 19-37, recruited via advertisement" |
| 三档 PEEP 是 4、6、8 | 是 0(ZEEP)、4、8 三档,0 档为无正压基线 | 文件目录有 0cmH2O_* 三类子目录;Methods 写 PEEP 0、4、8 |
| 有 270 组完整数据 | 实际 269 组,16 号受试者 4 cmH2O 深呼吸一格缺件 | SHA256SUMS.txt 中 processed-data 269 条、raw-data 539 条 |
| 周长就是容积 | 周长是体表一维量,换算到容积需个体几何参数,官方未给标定系数 | 官方 Usage Notes 只说提供"两种独立估计方法" |
| 有呼吸事件的标注 | 唯一标注型列是 InspInd 吸气起点索引 |
处理态七列字段字典;README.txt |
subject-info.csv 是普通 CSV |
文件实为 Excel 工作簿,扩展名与内容不符 | 文件头为 ZIP 魔数;read_excel 可读出 30 行 13 列 |
| 文件名拼作 Subject | raw-data 中写作 Subjecct(双 c) |
SHA256SUMS.txt 路径列表 |
| 原始态与处理态的档位串相同 | 原始态 0cmH2O,处理态 0cmH20(末位分别为字母 O 与数字 0) |
两侧文件名对照 |
| 每组都是 65 秒 | 处理态按完整呼吸裁剪,1 号受试者 0 cmH2O 三档为 53.72、32.51、46.59 秒 | 三个处理态文件的行数与时间末值 |
| 它和无创通气的兄弟库是同一份数据 | 两者 PEEP 档位、呼吸方式、通道组成、体量均不同,是两个独立项目 | 两库官方页面摘要与文件目录对照 |
FAQ
Q1:这份数据和坎特伯雷另一份 CPAP 压力流量数据是什么关系?
两者由同一研究组在同一机构、同一伦理批件下采集,受试者都是 30 名健康成人,但条件设置与通道组成不同:另一份是 4 与 7 cmH2O 两档、五档由节拍器引导的呼吸速率、原始 83.33 Hz 重采样到 100 Hz、无胸腹周长通道,体量 233.6 MB;本库是 0、4、8 cmH2O 三档、常速/快喘/深呼吸三类、100 Hz、带胸腹两路周长,体量 304.5 MB。它们是同组的前后两个项目,不是同一数据集的两个版本,也不能合并成一个队列——受试者编号体系与采集协议都不同。
Q2:能不能用它训练一个呼吸疾病分类模型?
不能。理由有三条:受试者是健康成人,没有疾病标签;仅有的标注是吸气起点索引,不含事件标签;样本只有 30 人,任何有容量的模型都会立刻过拟合。官方 Usage Notes 给出的用途是模型拟合与验证、肺弹性与气道阻力辨识、呼吸肌招募的胸腹分配,以及对吸烟者与哮喘者做初步的病理生理评估——全部是机制性与方法学用途。
Q3:处理态和原始态该用哪个?
多数建模工作用处理态即可:七列齐全、单位明确、已按完整呼吸裁剪、带吸气起点。需要复核换算、或者对传感器标定有疑问时才回原始态——此时用 ADC 版本,因为带单位版本的换算系数未随数据发布,用 ADC 版本意味着你可以自己推一遍。需要注意的是处理态短于原始态的时长设置(按完整呼吸裁掉了首尾),所以两者不能直接逐点对齐。
Q4:胸腹周长数据怎么用才不算误用?
把它当作容积变化的独立约束,而不是容积本身。可行的用法是:对同一口气,用流量积分得到一个潮气量估计,用胸腹周长变化得到另一个方向的估计,比较两者在不同 PEEP 与呼吸方式下的差异;或者比较同一人在快喘与深呼吸下胸、腹两条曲线的相对幅度,从而讨论呼吸肌招募路径的变化。不可行的用法是:把毫米单位的周长直接当升单位的容积,或者跨受试者比较周长的绝对值——带子位置由人工放置,绝对值不可比。
Q5:下载前最该注意什么?
四件事。第一,subject-info.csv 扩展名是 CSV 但内容是 Excel 工作簿,用 read_excel 读。第二,raw-data 文件名里是 Subjecct(双 c),别按常规拼写拼路径。第三,原始态的档位串是 0cmH2O 而处理态是 0cmH20,跨目录合并前要归一。第四,16 号受试者在 4 cmH2O 深呼吸这一格缺件,按 270 硬编码的循环会中断,应当先扫描目录再遍历。此外原始态时间列末尾约 147 行取值停滞,按时间轴切片前建议先用行号重建。
术语表
| 术语 | 解释 |
|---|---|
| CPAP | 持续气道正压通气(Continuous Positive Airway Pressure),无创通气的一种,整个呼吸周期维持同一正压水平 |
| PEEP | 呼气末正压(Positive End-Expiratory Pressure),呼气结束时气道内保持的正压,单位为厘米水柱 |
| ZEEP | 零呼气末正压(Zero End-Expiratory Pressure),即不加正压的基线条件,本库的 0 cmH2O 档 |
| NIV / NIMV | 无创通气(Non-Invasive (Mechanical) Ventilation),患者保留自主呼吸、由呼吸机提供支持 |
| 文丘里管 | Venturi tube,通过收缩段前后压差推算流量的装置 |
| 双向流量测量 | 吸气与呼气分别由两路传感器测量、后处理合并为一条带符号流量曲线 |
| 潮气量 | Tidal volume,一次平静呼吸吸入或呼出的气量,单位升 |
| 肺弹性 | Lung elastance,单位容积变化所需的压力变化,一阶模型中的弹性元件参数 |
| 气道阻力 | Airway resistance,单位流量所需的压力,一阶模型中的阻力元件参数 |
| 呼吸肌招募 | Respiratory muscle recruitment,膈肌与肋间肌等不同肌群对通气贡献的相对分配 |
| 旋转编码器 | Rotary encoder,把角度或位移转成计数的传感器,本库用于把周长带的伸缩转成计数 |
| 动态周长 | Dynamic circumference,随呼吸周期性变化的体表周长,区别于静态体检时的周长 |
| ADC 计数 | Analog-to-Digital Converter counts,模数转换后的原始整数值,未经物理量换算 |
| WFDB | Waveform Database 格式,PhysioNet 常用的波形存储规范;本库不使用该格式,为纯 CSV |
| ODC-BY / CC BY | 两类开放许可;本库采用 CC BY 4.0 |
附录 A:核心数字核对表
| 数字 | 出处 |
|---|---|
| 30 名健康成人 | 官方摘要、Data Description |
| 15 男 15 女 | 官方 Data Description |
| 19–37 岁 | 官方 Data Description |
| 3 档 PEEP(0、4、8 cmH2O) | 官方 Methods;文件目录三个档位前缀 |
| 3 种呼吸方式(norm、pant、deep) | 官方摘要与 Methods;文件名后缀 |
| 每人 9 组试验 | 官方 Methods"these 9 breathing tests" |
| 设计 270 组,实际 269 组 | 30 × 9 = 270;SHA256SUMS.txt 中 processed-data 计 269 条 |
| 常速与深呼吸 65 秒、快喘 35 秒 | 官方摘要 Recording times 段 |
| 100 Hz | 官方 Methods;README.txt;CSV 时间步长 0.01 秒 |
| 原始态 539 个 CSV、处理态 269 个 CSV | SHA256SUMS.txt 路径统计 |
| 全部文件 815 个 | SHA256SUMS.txt 行数 |
| 未压缩 304.5 MB、ZIP 79.9 MB | 官方 Files 面板 |
| 处理态 7 列(A–G) | README.txt;示例文件表头 |
| 原始态带单位 6 列(A–F) | README.txt;示例文件表头 |
| 原始态 ADC 6 列(A–F) | README.txt;示例文件表头 |
subject-info.csv 13 列(A–M)、30 行 |
官方 Data Description;读取该文件所得 |
| 1 号受试者 0 cmH2O 常速 5373 行 / 53.72 秒 | 对应处理态文件 |
| 1 号受试者 0 cmH2O 快喘 3252 行 / 32.51 秒 | 对应处理态文件 |
| 1 号受试者 0 cmH2O 深呼吸 4660 行 / 46.59 秒 | 对应处理态文件 |
| 1 号受试者 8 cmH2O 深呼吸 4688 行 / 46.87 秒 | 对应处理态文件 |
| 原始态时间列末尾约 147 行取值停滞 | 1、5、7、12、30 号受试者的原始态文件时间列 |
| 伦理批件 HEC 2020/14/LR,修订 2021-11-22 | 官方 Ethics 段 |
| CC BY 4.0 | 官方 Access / License 段 |
| DOI 10.13026/25q9-y416 | 官方 Discovery 段(v1.0.0) |
| 发布于 2023 年 1 月 25 日,仅 1.0.0 一个版本 | 官方 Versions 面板 |
| Cited by 3 publications | 官方 Discovery / Cited by 段 |
| 面罩 FreeMotion RT041、滤器 HMEF 002874 | 官方 Methods |
| MATLAB R2020a | 官方 Methods |
相关数据集导航
以下为站内 AI-Ready 数据集百科中与 CPAP 压力流量周长集共享多个主题标签的相关数据集,按相关度降序排列:
- cpap-data-canterbury — 共享标签:生理信号 / 呼吸系统 / 时序数据 / 医疗器械
- pics — 共享标签:生理信号 / 时序数据 / 波形
- temporal-respiratory-support — 共享标签:呼吸系统 / 时序数据 / 重症监护
- openox-repo — 共享标签:生理信号 / 医疗器械 / 呼吸系统
- ucddb — 共享标签:生理信号 / 呼吸系统 / 时序数据
- apnea-ecg — 共享标签:生理信号 / 呼吸系统 / 时序信号
- hf-lung-v1 — 共享标签:呼吸系统 / 生理信号 / 波形
- icbhi-2017 — 共享标签:呼吸系统 / 生理信号 / 音频
- sprsound — 共享标签:呼吸系统 / 生理信号 / 人工标注
- barcelona-sicu-signals — 共享标签:生理信号 / 时序数据 / 波形
- mimic4wdb — 共享标签:生理信号 / 时序数据 / 重症监护
- bidmc-ppg — 共享标签:生理信号 / 波形 / 呼吸率
- cps-dataset-sleep — 共享标签:生理信号 / 时序数据 / 睡眠
- slpdb — 共享标签:生理信号 / 时序数据 / 睡眠
- charisdb — 共享标签:生理信号 / 时序数据 / 波形
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

