信息速览
呼吸力学研究长期缺的不是病人,而是能同时看见压力、流量、胸腹运动和肺内通气分布的那二十分钟。医院里的呼吸机把波形锁在厂商格式里,ICU 的监护数据又常因隐私与授权无法整段带出;公开的 CPAP 数据集大多只有压力与流量两路,能算呼吸做功,却说不清胸廓与腹部各自贡献了多少、肺的哪个区域在响应压力。于是模型越写越精细,校准数据却始终是二维的。更麻烦的是,多数公开记录只覆盖一个稳态压力:受试者坐定、压力固定、呼吸平稳,模型看不到同一颗肺在压力变化时如何重新分配通气。缺少阶跃,就缺少辨识弹性与阻力的独立信息;缺少阻断,就只能把主动吸气与被动呼气混在一起算。这个库试图补上的,正是这两个缺口。
这个库把四路信号放进了同一段时间轴:面罩口的压力与流量、胸带与腹带的动态周长、以及 32×32 的电阻抗断层(Electrical Impedance Tomography,EIT)通气图像。80 名成人坐位,PEEP 从低到高逐档抬升,每档 30 秒,中途用快门快速阻断呼气以暴露被动肺力学。它不漂亮,文件大、时钟不齐、标签要自己造;但它提供的是一种少见的"同体多模态压力响应",而不是又一批孤立波形。一屏速览如下。
| 维度 | 内容 |
|---|---|
| 官方全名 | Respiratory dataset from PEEP study with expiratory occlusion |
| 发布平台 | PhysioNet(RRID:SCR_007345) |
| 贡献机构 | 新西兰坎特伯雷大学机械工程系;德国富特旺根大学技术医学研究所 |
| 通讯作者 | Ella Frances Sophia Guy(坎特伯雷大学) |
| 首次发布 | 2023 年 11 月 10 日,版本 1.0.0 |
| 最近改动 | 公开版本仍为 1.0.0;部分文件的服务器时间戳为 2024 年 9 月 18 日 |
| 受试者 | 80 名成人,男女各半;哮喘、吸烟、电子烟、健康四组各 20 名(每组男女各 10) |
| 记录单位 | 每名受试者一段连续记录,按受试者编号存为一组文件 |
| 采集场景 | 坎特伯雷大学机械工程系低风险临床单元,坐位、自主呼吸、全脸面罩 |
| 压力协议 | PEEP 以 0.5 cmH₂O 为步进逐档升高,每档 30 秒;首尾各 1 分钟 ZEEP |
| 同步通道 | 面罩压力、吸气差压、呼气差压、胸周长、腹周长、胸廓初始深度与宽度 |
| 采样率 | 压力与周长 100 Hz;EIT 50 Hz,单帧 32×32 像素 |
| 文件格式 | CSV(压力/流量/周长)、BIN(EIT)、XLSX(扩展名误写为 .csv 的人口学表)、MATLAB .m 代码 |
| 数据规模 | 未压缩 18.3 GB;ZIP 包 14.2 GB |
| 许可 | Creative Commons Attribution 4.0 International(CC BY 4.0) |
| 典型用途 | 呼吸力学参数辨识、EIT 与潮气量交叉验证、胸腹呼吸模式分析、呼气阻断响应建模 |
§1 它要解决的具体麻烦
1.1 呼吸力学的数据为什么总是缺一角
呼吸系统可以被压成一个极简的集总模型:驱动压把气体送进肺,弹性回缩与气道阻力把气体推出来。要辨识弹性(elastance)与阻力(resistance),理论上只需要口腔压力与气流两路信号。真正做起来却处处漏风:面罩漏气让流量积分漂移,口腔压力受管路阻力污染,主动吸气与被动呼气混在一起时,单靠压力流量无法把肌肉用力与肺本身的力学分开。
实验室的常规解法是打断呼吸。经典阻断技术用阀门把呼气通路关住约 100 毫秒,让肺泡压与口腔压在一瞬间平衡,再从压力平台反推弹性。问题是 100 毫秒足够让受试者察觉,人会不自觉地补一口气,下一次呼吸的波形就带上了代偿。这个库用的是更短促的快门式快速呼气阻断(rapid expiratory occlusion,REO),目的不是把人憋住,而是在受试者尚未作出反应前留下一个可外推的初始段。
单有阻断还不够。同样的口腔压力,可能来自膈肌下沉,也可能来自肋间肌提胸;两者的胸腹容积分配不同,肺内通气的区域分布也不同。要知道"压力打进去以后,气去了哪里",就得同时看胸腹周长与 EIT。这个库的四路同步,正是为了把"用力方式"与"区域通气"一起留在记录里。
1.2 三条常见的错误期待
把它当成 ICU 呼吸机波形库。 受试者是坐着的清醒成人,用 CPAP 加面罩,不是插管病人。没有呼吸机设置的压力支持、没有镇静、没有血流动力学,也没有临床结局。它的压力是面罩口的持续正压,不是 ICU 里那套双水平或容量控制波形。
把它当成肺功能检查的替代。 没有用力肺活量,没有一秒率,没有弥散量,也没有支气管舒张试验。它记录的是安静呼吸与压力爬坡下的力学响应,能支持模型辨识,不能直接给出慢阻肺或哮喘的临床分级。
把它当成带标签的监督学习集。 目录里没有独立的标注文件,没有逐段 PEEP 标签,也没有阻断事件的注释表。受试者分组只在人口学表里,PEEP 档位只能靠协议时间轴或压力波形反推。想直接拿来做分类,标签得先自己造(§4.4)。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 辨识被动弹性与阻力 | 快速呼气阻断段、面罩压力、流量、胸腹周长 | 够做方法验证,阻断时刻需自己定位 |
| 验证 EIT 全局通气与流量积分潮气量 | 同一时间轴的 EIT 像素矩阵与流量积分 | 够,但两路采样率不同,需先对齐 |
| 研究 PEEP 对胸腹分配的影响 | 逐档 30 秒的胸带、腹带周长 | 够做档内比较,档间过渡段要剔除 |
| 训练呼吸信号分割模型 | 80 段连续记录,多数含四模态 | 可做自监督或分割,缺少金标准事件 |
| 评估面罩漏气对流量积分的影响 | 原始 ADC 与换算后单位两套文件 | 够做误差分析,泄漏量未单独标注 |
| 直接做哮喘/慢阻肺诊断 | 四组人群标签、肺功能缺失 | 不够,标签是自报病史而非临床诊断 |
| 代表 ICU 或睡眠呼吸暂停人群 | 清醒、坐位、自主呼吸成人 | 不够,场景与人群都不对口 |
| 复现论文中的力学参数 | 原始波形与处理代码 | 可复现流程,参数值需自行辨识 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你在做呼吸力学模型,缺真实的多档 PEEP 响应 | 同一人从低到高多档压力,每档 30 秒,适合看参数随压力的漂移 | 先按压力平台切档,再用阻断段拟合,不要把过渡段混进稳态 |
| 你在做 EIT 图像重建或区域通气分析 | 79 例原始 32×32 像素帧,配同步流量与周长 | 先用 read_binData.m 确认帧头与字节序,再与 50 Hz 时间轴对齐 |
| 你在研究胸腹呼吸协调 | 胸带与腹带同步,100 Hz,同一姿势 | 先做零漂校正,再算胸腹贡献比,注意面罩漏气会同时污染两路 |
| 你在做可穿戴呼吸监测 | 有创口压力与体表周长可作为上游参考 | 把胸带信号降采样到可穿戴频率,做跨模态蒸馏 |
| 你在教呼吸生理或临床工程 | 一套完整实验协议、原始数据与处理代码 | 用受试者 01 的处理文件做课堂演示,先讲清两套时钟 |
| 你在找 CPAP 数据但只有压力流量 | 增加了 EIT 与胸腹周长,可做多模态对照 | 与同实验室早期 30 人库配对使用(§6) |
1.5 一句话判断
它不是"更大的呼吸数据集",而是一台把压力、气流、胸腹运动与区域通气同时对准的实验台:规模只够做方法学,同步性却足以拆开呼吸力学里最容易被合并的那几个变量。
1.6 不适合谁:四条边界
不适合拿来做临床诊断模型。 四组标签来自自报问卷,哮喘组只要求有病史且未满足排除条件,吸烟与电子烟组按频率划分,健康组是"没有上述情况"的人。没有医生诊断、没有肺功能、没有用药依从性,标签的临床含义很弱。
不适合拿来做长时间趋势。 每人只有一段约十几到二十分钟的实验室记录,没有昼夜变化,没有睡眠,没有治疗前后对照。它回答不了"这个人的肺力学在一周内怎么变"。
不适合拿来做面罩泄漏的定量金标准。 论文明确说面罩泄漏是主要误差源,部分受试者出现流量漂移,潮气量计算因此偏低。泄漏没有被单独测量,也没有逐段标注,只能从流量与压力关系里间接判断。
不适合直接喂进端到端深度模型。 80 段、每段十万级采样点、四路不同采样率、缺少事件标签。未经切窗与对齐就送进网络,模型学到的多半是受试者编号与设备漂移,而不是呼吸力学。
§2 数据构成与规格
2.1 一个根目录,四类内容
数据集按"原始—处理后—代码—人口学"四层组织。根目录下有四个子目录和六个散文件,子目录内部再按受试者编号展开。理解这套布局,比记住文件名更重要,因为原始与处理后并不是一一对应的同名文件。
| 路径 | 内容 | 文件数 | 说明 |
|---|---|---|---|
PQ_rawData/ |
压力、流量、胸腹周长 | 160 个 CSV | 每人两份:SubjectN.csv 为换算单位,SubjectN_raw.csv 为 ADC 计数 |
EIT_rawData/ |
EIT 原始像素帧 | 79 个 BIN | 命名为 S01_01_001_01.bin 一类;受试者 69 缺文件 |
Processed_Dataset/ |
四路对齐后的处理结果 | 80 个 CSV | ProcessedData_Subject01.csv 至 Subject80 |
Code/ |
MATLAB 采集、转换、处理、绘图 | 5 个 .m |
采集、转换、处理、读 EIT、绘图各一 |
subject-info.csv |
自报人口学与胸廓尺寸 | 1 个文件 | 扩展名是 CSV,实际是 XLSX 工作簿 |
README.txt |
目录与列名说明 | 1 个文件 | 最接近字段字典的官方文本 |
LICENSE.txt |
CC BY 4.0 全文 | 1 个文件 | 数据许可,不是论文许可 |
SHA256SUMS.txt |
文件校验和 | 1 个文件 | 批量下载后应先核对 |
figure-1.png |
采集系统示意 | 1 个文件 | 面罩、EIT 带、周长带的位置 |
figure-2.png |
受试者 01 的处理结果示例 | 1 个文件 | 四路信号的整体样貌 |
PQ_rawData 的 160 个文件不是 160 名受试者,而是 80 人各两份。这个差别在批量脚本里很容易写错:按文件名前缀去重会得到 80,按文件数统计会得到 160。EIT_rawData 的 79 个文件又比 80 少一个,原因是受试者 69 的 EIT 设备超时,论文明确说明该受试者只保留了压力、流量与周长。
2.2 原始压力流量文件的字段
SubjectN.csv 是已经换算成物理单位的版本,8 列,名义采样率 100 Hz。列名里的拼写错误(differenrtial、crossectional)是原文件自带的,不是转录错误;写解析脚本时要么按列序取,要么把拼写原样抄进映射表。
| 列名 | 单位 | 物理含义 | 使用注意 |
|---|---|---|---|
Time [s] |
秒 | 采集时间轴 | 示例文件并非严格等距,不能默认 arange(n)/100 |
Gauge Pressure [cmH2O] |
cmH₂O | 面罩口表压 | 这是实际感受到的压力,不是 CPAP 设定值 |
Inspiratory differenrtial pressure [cmH2O] |
cmH₂O | 吸气支路文丘里差压 | 与流量近似成正比,需按标定系数换算 |
Expiratory differenrtial pressure [cmH2O] |
cmH₂O | 呼气支路文丘里差压 | 吸呼分开测量,方向与符号要分别确认 |
Chest circumference [mm] |
毫米 | 胸带动态周长 | 绝对周长含初始佩戴长度,分析时通常取变化量 |
Abdominal circumference [mm] |
毫米 | 腹带动态周长 | 与胸带同时刻采样,可直接算胸腹相位差 |
Chest crossectional depth [mm] |
毫米 | 胸廓初始前后径 | 示例文件只在首行给出有效值,后续为 0 |
Chest crossectional width [mm] |
毫米 | 胸廓初始横径 | 同上,属于静态人体测量而非连续信号 |
SubjectN_raw.csv 的列结构相同,但压力与周长换成了 ADC 计数。保留原始计数的好处是可以重新标定:如果怀疑厂商的换算系数,或者想把数据迁移到另一套采集硬件,原始计数是唯一可回溯的底稿。代价是文件更大、列名更含糊,且没有给出每一位对应的电压参考。
2.3 处理后文件的字段
ProcessedData_SubjectNN.csv 是四路信号合并后的结果,10 列,但内部其实有两条时间轴:压力、流量、容积与周长按 100 Hz 排列,EIT 派生量按 50 Hz 排列。两条轴被放进同一张表,靠 Time 与 Time (Aeration Data)_[s] 分别索引。
| 列名 | 单位 | 含义 | 备注 |
|---|---|---|---|
Time [s] |
秒 | 压力流量与周长的时间轴 | 示例文件从 0 附近开始,末行到 1198.35 |
Pressure [cmH2O] |
cmH₂O | 面罩口压力 | 与原始 Gauge Pressure 同源,经过处理 |
Flow [L/s] |
升/秒 | 气流 | 由吸呼两路差压合成,符号约定需对照代码 |
V_tidal [L] |
升 | 列名写作潮气量 | 示例文件中随时间累积,更像积分容积而非逐 breath 潮气量 |
Chest [mm] |
毫米 | 胸带周长 | 与原始胸周长同源 |
Abd [mm] |
毫米 | 腹带周长 | 与原始腹周长同源 |
Inspiratory Indicies |
无 | 吸气索引 | 整数序列,具体定义在 DataProcessing_29AUG23.m |
Time (Aeration Data)_[s] |
秒 | EIT 时间轴 | 50 Hz,独立于第一列 |
Global Aeration |
未注明 | 全局通气量 | EIT 全帧求和或加权结果,单位未在 README 说明 |
Inspiratory Indicies (Aeration Data) |
无 | EIT 域吸气索引 | 与 EIT 帧率对应,不能直接套 100 Hz 索引 |
这张表最容易误读的是 V_tidal。列名让人以为每一行是当前呼吸的潮气量,但示例文件里它从 0.299 一路增加到 5.59,且在记录末段仍在上升,行为更像对流量做累计积分后的容积。若直接把它当成逐 breath 潮气量做回归,目标变量会带上时间趋势。稳妥做法是从 Flow 重新做呼吸周期分割与积分,或至少先做去趋势。
Global Aeration 同样没有单位。它适合做相对变化与跨模态相关,不适合直接换算成毫升。论文里把它作为流量积分潮气量的验证指标,这个用法依赖的是两者的同步变化,而不是绝对量纲一致。
2.4 EIT 文件的结构
EIT 原始文件是二进制,每个文件对应一名受试者的一段连续记录。官方描述为 32×32 的像素矩阵按时间堆叠,采样率 50 Hz。也就是说,一帧有 1024 个像素值,每个值代表该像素在胸廓横断面上的相对阻抗变化,而不是绝对通气量。
| 属性 | 数值 | 说明 |
|---|---|---|
| 单帧空间尺寸 | 32×32 | 1024 个像素 |
| 采样率 | 50 Hz | 每秒 50 帧 |
| 单文件时长 | 设计上与压力流量记录同步 | 受试者 57 因设备超时被截断 |
| 存储格式 | 二进制 .bin |
帧头、数据类型与排列顺序需读 read_binData.m |
| 缺失情况 | 受试者 69 无文件 | 设备超时,官方在论文中说明 |
| 配套读取函数 | read_binData.m |
不要凭文件名猜字节布局 |
EIT 的价值在区域,而不在全肺总和。32×32 的网格把胸廓横断面切成上千个小格,压力升高时哪些格先通气、哪些格滞后,能直接看出区域通气延迟。论文的后续工作正是用这套数据评估递增 PEEP 下的区域通气延迟,并把性别、吸烟、电子烟、哮喘与体质指数纳入比较。
2.5 一条记录的完整解剖
以受试者 01 为例。处理文件的第一行列名有 10 项,第一列 Time 从接近 0 开始,最后一行停在 1198.35 秒;第二列压力在 -3.4 cmH₂O 附近起步,说明记录开头是 ZEEP 的安静呼吸,面罩内略低于大气压。第七列 Inspiratory Indicies 以 407、929、1355 这样的整数递增,像是呼吸事件在某个采样轴上的位置,但官方没有给出定义,使用前必须回到处理代码。
原始文件的头两行更能说明采集的粗糙感:Chest crossectional depth 第一行是 20,第二行变成 0;Chest crossectional width 第一行是 28,随后也是 0。它们不是连续信号,而是实验开始前量一次的人体尺寸,只写在首行;若把这两列当波形做差分,会得到一串无意义的负值。
时间轴也不是完美等距。示例文件前几行的时间戳是 0、0.006、0.020、0.024、0.033,而不是 0、0.010、0.020、0.030。这说明 Time 来自采集时钟,而不是重采样后的理想网格。对大多数低频呼吸分析,这点抖动可以忽略;但对阻断瞬间的毫秒级响应,必须按真实时间戳插值,不能按行号乘 0.01。
两套时钟的差别还体现在行数上。处理文件的前七列按 100 Hz 排列,一行对应约 0.01 秒;后三列按 50 Hz 排列,一行对应 0.02 秒。把它们并排放进同一张表,等于让两列时间共用一组行号:对 EIT 列来说,相邻两行的时间间隔是 0.02 秒,而对压力列来说是 0.01 秒。直接按行号对齐全表,EIT 会被拉伸一倍,误差随记录变长而累积;正确做法是各用各的时间列,重采样到同一网格后再比较。这个细节在论文里只用一句"两套设备数据被对齐"带过,实际处理时却是最容易出现累积错位的地方。
| 受试者 01 的文件事实 | 值 | 来源 |
|---|---|---|
| 处理文件列数 | 10 | 文件首行 |
| 处理文件末行时间 | 1198.35 s | 文件末行 |
| 原始压力文件大小 | 11,927,835 字节 | 文件头 |
| 原始 ADC 文件大小 | 4,677,716 字节 | 文件头 |
| 处理文件大小 | 13,175,069 字节 | 文件头 |
| 胸廓深度首行 | 20 mm | 原始文件首行 |
| 胸廓宽度首行 | 28 mm | 原始文件首行 |
| EIT 帧尺寸 | 32×32 | 官方说明 |
2.6 人口学表:名字叫 CSV,实际是 XLSX
subject-info.csv 是这套数据里最容易被脚本绊倒的文件。用文本编辑器打开会看到 PK 开头的二进制;用 file 命令查看会显示 Microsoft Excel 2007+;用 pandas.read_csv 会直接报编码错误。它不是 CSV,而是一个改了扩展名的 .xlsx 工作簿。
工作簿只有一张表,表头 24 列,前 21 列有明确含义,后 3 列为空列。有效受试者 80 行,编号 1 到 80。列族可以分成六组:
| 列族 | 列数 | 内容 | 用途 |
|---|---|---|---|
| 基本信息 | 5 | 编号、性别、身高、体重、年龄 | 人群描述与协变量 |
| 哮喘史 | 3 | 是否有哮喘、药名、用药频率 | 分组依据之一 |
| 吸烟史 | 5 | 是否吸过、当前是否吸、戒烟时长、频率、烟龄 | 分组依据之一 |
| 电子烟史 | 5 | 是否用过、当前是否用、戒断时长、频率、使用时长 | 分组依据之一 |
| 分组 | 1 | Trial Classification | 官方人群标签 |
| 胸廓测量 | 2 | 胸廓前后径、横径 | 与 EIT 断面尺寸对应 |
官方的分组规则写在论文的表 1,不是写在人口学表里。哮喘组要求有哮喘史,但排除"已完全不用吸入器"“每天吸烟超过一次”"每天电子烟超过八次"的人;吸烟组要求每月至少一次吸烟史,并按当前是否吸烟、是否同时使用电子烟、使用时长做优先级判断;电子烟组要求每周至少一次;健康组则是三类情况都不满足的人。八支电子烟折算一支烟的规则被写进了排除逻辑,这是分组时最不直观的一条。
2.7 命名与编号的对应关系
| 对象 | 命名样式 | 编号范围 | 备注 |
|---|---|---|---|
| 压力流量换算文件 | Subject1.csv |
1–80 | 编号不补零 |
| 压力流量 ADC 文件 | Subject1_raw.csv |
1–80 | 与上一行同编号 |
| 处理后文件 | ProcessedData_Subject01.csv |
01–80 | 编号补零到两位 |
| EIT 文件 | S01_01_001_01.bin |
S01–S80 | 中段编号含义未在 README 说明 |
| 代码 | DataProcessing_29AUG23.m |
5 个 | 文件名带日期,版本靠日期区分 |
| 人口学表 | subject-info.csv |
1–80 | 实为 XLSX |
编号补零不统一,是批量读取时第二个常见坑。Subject1.csv 与 ProcessedData_Subject01.csv 指同一个人,但字符串排序会把 Subject10 排在 Subject2 前面。正确做法是先解析出整数编号,再以编号为键合并,而不是按文件名排序后按位置对齐。
§3 它是谁的数据
3.1 七位作者与两个机构
| 作者 | 机构 | 在论文中的角色 |
|---|---|---|
| Ella Frances Sophia Guy | 坎特伯雷大学机械工程系 | 概念化、方法、软件、验证、调查、数据管理、初稿、可视化 |
| Jaimey Anne Clifton | 坎特伯雷大学机械工程系 | 概念化、验证、调查 |
| Trudy Caljé-van der Klei | 坎特伯雷大学机械工程系 | 概念化、调查 |
| Rongqing Chen | 富特旺根大学技术医学研究所 | 概念化、方法、软件、数据管理 |
| Jennifer L. Knopp | 坎特伯雷大学机械工程系 | 概念化、方法、审阅、监督 |
| Knut Möller | 富特旺根大学技术医学研究所 | 概念化、方法、资源、监督、经费 |
| J. Geoffrey Chase | 坎特伯雷大学机械工程系 | 概念化、方法、资源、审阅、监督、经费 |
这是一支典型的生物医学工程团队,不是临床呼吸科团队。坎特伯雷一侧负责硬件、采集与建模,富特旺根一侧负责 EIT 与技术医学方法。数据里没有主治医师的临床判读,也没有放射科或肺功能室的报告,所有临床标签都停留在"自报病史"这一层。理解这一点,就能理解为什么数据集的强项是力学与信号,而不是诊断。
3.2 时间线
| 时间 | 事件 | 来源 |
|---|---|---|
| 2023 年 3 月 24 日 | 坎特伯雷大学人体研究伦理委员会批准修订 | 官方页 Ethics |
| 2023 年 5 月 30 日 | 人口学工作簿文件时间戳 | 根目录文件 |
| 2023 年 8 月 29 日 | 处理与绘图代码日期 | 代码文件名 |
| 2023 年 11 月 2 日 | README 文件时间戳 | 根目录文件 |
| 2023 年 11 月 10 日 | PhysioNet 发布 1.0.0 版 | 官方页 |
| 2023 年 11 月 23 日 | 配套论文被接收 | 论文版权页 |
| 2024 年 2 月 | 配套论文正式刊出 | Data in Brief 第 52 卷 |
| 2024 年 9 月 18 日 | 部分数据文件服务器时间戳更新 | 文件头 |
版本号只有 1.0.0 一个。官方页同时给出两个 DOI:版本 DOI 10.13026/d767-e709 与"最新版" DOI 10.13026/psrj-rw40。引用具体版本时用前者,引用"这个库"时用后者;两者在当前没有差别,但未来若发布 1.1.0,含义会分开。
3.3 采集场景:一间低风险临床单元里的坐姿实验
实验在坎特伯雷大学机械工程系的低风险临床单元进行。受试者先摘掉上衣与内衣肩带,贴上 EIT 电极带,用脊柱标记对齐;随后坐上椅子,戴上全脸面罩,面罩与细菌病毒过滤器、文丘里流量计、CPAP 管路串联。EIT 带在胸带下方,胸带与腹带分别记录胸廓与腹部的动态周长。整个过程中受试者保持坐位,被要求正常呼吸。
设备清单不复杂,但每一件都影响数据:
| 设备 | 型号/规格 | 作用 | 对数据的影响 |
|---|---|---|---|
| CPAP 主机 | Fisher & Paykel SleepStyle SPSCAA | 提供 PEEP | 设定值与面罩口实际压力不完全相等 |
| 全脸面罩 | Fisher & Paykel FreeMotion RT041 | 人机接口 | 面罩泄漏是主要误差源 |
| 过滤器 | Hudson 细菌病毒过滤器 | 卫生防护 | 阻力约 0.5 cmH₂O·s/L,需从压力中扣除 |
| 流量计 | 自制文丘里管,吸呼分路 | 测压力与流量 | 需标定,吸呼两路分别换算 |
| 周长带 | 旋转编码器式数字卷尺 | 测胸腹周长 | 佩戴松紧影响绝对周长 |
| EIT | Dräger PulmoVista 500 | 测区域通气 | 50 Hz,电极接触不良会影响信号 |
| 采集软件 | MATLAB 2021b 脚本 | 同步与存盘 | 两套设备各有自己的时钟 |
实验协议的核心是"逐档升压、每档半分钟"。官方摘要写的是 PEEP 从 4 到 12 cmH₂O,以 0.5 cmH₂O 递增;方法节却写成 4 到 20 cmH₂O。同一页面出现两个上限,这是这套数据最需要先解决的元数据问题(§4.5)。配套论文的表 2 按 4 到 12 排到最后一行 16 分 10 秒,而受试者 01 的处理文件却记录到 1198.35 秒,比表 2 最后一行的时间晚约四分钟。三种口径同时存在,说明不能拿任何单一文档当绝对时间表。
3.4 数据来源的层次
这套数据不是从医院信息系统导出的二次数据,而是一次专门设计的实验室试验。它的来源链条可以直接追到硬件与伦理批件:
| 层次 | 内容 | 可追溯位置 |
|---|---|---|
| 伦理 | 坎特伯雷大学 HREC 2023/04/LR-PS | 官方页 Ethics、论文声明 |
| 受试者 | 80 名成人,自报问卷 | subject-info.csv |
| 硬件 | 自制文丘里流量计、周长带、REO 快门 | HardwareX 论文与 Code/ |
| 采集 | MATLAB 脚本 + PulmoVista 500 | DataCollection_30MAR23.m |
| 处理 | MATLAB 对齐、换算、合并 | DataProcessing_29AUG23.m |
| 发布 | PhysioNet 1.0.0 | 官方页与 DOI |
| 论文 | Data in Brief 2024 | DOI 10.1016/j.dib.2023.109874 |
硬件论文与数据处理代码的存在,让这套数据比一般的"发表即封存"数据集更可复现。只要愿意,可以照着 HardwareX 的设计图重做一套采集装置,再用同一套 MATLAB 代码处理新数据。代价是复现门槛不在数据本身,而在机械与电子制作。
§4 它最独特的东西
4.1 稀缺性:四路同步,而不是四份数据
呼吸数据集的常见形态是单模态:多导睡眠图给气流与血氧,ICU 库给呼吸机波形,EIT 研究给像素帧,体表传感研究给胸腹周长。它们各自都能发论文,但很难回答跨模态问题。这个库把四路放进同一段记录,且每路都有自己的时间戳与采样率,能做的分析从"单信号特征"升级为"同一生理事件的多视角"。
这种同步不是把四个文件放进同一个压缩包就算完成。真正的难点在时钟:压力流量由 MATLAB 脚本采集,EIT 由 Dräger 主机采集,两套设备各有启动时刻;周长带与压力流量共用一套采集卡,但仍要处理串口延迟。处理代码把这些轴对齐到同一段记录,才让"压力升高的同时,胸廓哪个区域先通气"成为可计算的问题。也正因为核心是压力爬坡加呼气阻断,它常被简称为 PEEP 呼气阻断呼吸库。
4.2 差异化证据
| 对照对象 | 规模 | 模态 | 与本库的差别 |
|---|---|---|---|
pressure-flow-circum-cpap(rid 1732) |
30 名健康成人 | 压力、流量、胸腹周长 | 只有三档压力与三种呼吸模式,无 EIT、无呼气阻断 |
cpap-data-canterbury(rid 1443) |
30 名健康成人 | 压力、流量 | 两档压力、五档呼吸频率,无周长与 EIT |
pics(rid 879) |
10 名早产儿 | 心电、呼吸带 | 新生儿长时程监护,不是成人 CPAP 力学 |
temporal-respiratory-support(rid 1608) |
50,920 名 ICU 成人 | 逐小时通气与生命体征 | 群体时序标签,不是高频波形 |
openox-repo(rid 1658) |
144 名受试者 | 脉搏血氧与动脉血气 | 低氧挑战,不是肺力学 |
| 本库 | 80 名成人 | 压力、流量、胸腹周长、EIT | 多档 PEEP + 快速呼气阻断 + 四路同步 |
与同实验室的 30 人库相比,本库不是简单的"人数翻倍"。30 人库的压力档位少、呼吸模式固定、没有 EIT,也没有阻断;它适合做 CPAP 对呼吸做功的基线研究。本库增加了疾病分组、压力爬坡、EIT 与 REO,问题从"CPAP 怎么影响呼吸"推进到"不同人群的肺在压力下怎么分配通气"。
4.3 协议的具体形状
论文表 2 把整段实验排成一张时间表。下面摘出关键节点,保留原始的时间与设置,省略中间的重复档位。原表第三列有若干排版错误,把不同档位都印成了 4 cmH₂O;下表的档位按协议文字与上下文还原,时间与时长保留原值。
| 时间点 | 持续 | 设置 | 说明 |
|---|---|---|---|
| 1:00 | 1 分钟 | ZEEP | 不接 CPAP 的安静呼吸 |
| 1:30 | 30 秒 | 接 CPAP,4 cmH₂O | 管路连接与压力建立 |
| 2:00 | 30 秒 | 4 cmH₂O | 第一档稳态 |
| 2:20 | 20 秒 | 升至 4.5 cmH₂O | 过渡段,数据仍在采 |
| 2:50 | 30 秒 | 4.5 cmH₂O | 第二档稳态 |
| 8:30 | 30 秒 | 8 cmH₂O | 中段档位 |
| 14:30 | 20 秒 | 升至 12 cmH₂O | 末档升压 |
| 14:50 | 30 秒 | 12 cmH₂O | 最高档稳态 |
| 15:10 | 20 秒 | 关闭并断开 CPAP | 回到 ZEEP 的过渡 |
| 16:10 | 1 分钟 | ZEEP | 表 2 最后一行,1 分钟 ZEEP |
原表在 15:10 与 16:10 之间没有单列 40 秒,属于表格排版的空白;这不影响按压力平台切档,但提醒不要把表 2 当成逐秒事件表。真正可靠的切档依据仍是压力列本身,时间表只用来交叉检查。
如果按这张表切段,每档的稳态窗口只有 30 秒,前后各有一段 20 秒的过渡。30 秒对呼吸力学不算长:成年人安静呼吸频率下,这段时间通常只覆盖几个呼吸周期;要做稳定的参数辨识,通常需要把多个呼吸周期放在一起。过渡段虽然不进入稳态统计,却是观察压力阶跃响应的好材料,不应直接丢掉。
4.4 标注粒度:没有人工标签,只有可推导的事件
这套数据没有传统意义上的标注文件。没有 event.txt,没有 annotation.csv,也没有逐帧的 PEEP 标签。能直接用的"标签"只有三类:受试者编号、人口学分组、以及由协议时间表隐含的档位。其余全部要从前三种加波形里推导。
| 目标标签 | 是否直接给出 | 推导方式 | 风险 |
|---|---|---|---|
| 受试者编号 | 是 | 文件名 | 无 |
| 人群分组 | 是 | subject-info.csv 的 Trial Classification |
自报,非临床诊断 |
| PEEP 档位 | 否 | 按表 2 时间切,或按压力平台反推 | 协议与文件时长不一致 |
| 阻断时刻 | 否 | 从流量骤停、压力平台识别 | 无金标准,阈值敏感 |
| 呼吸周期 | 否 | 流量过零或胸腹周长峰谷 | 漏气与漂移会造成误切 |
| 吸气/呼气相位 | 部分 | Inspiratory Indicies 列 |
定义未文档化 |
| 区域通气延迟 | 否 | EIT 像素时序分析 | 需自建算法与阈值 |
这意味着它更适合"方法学研究"而不是"基准竞赛"。若要用它做监督学习,必须先做一轮事件标注,而标注质量取决于算法而非专家。也正因为没有金标准,它不适合用来比较不同团队的分类精度;它适合用来比较不同团队对同一段波形的物理解释。
4.5 边界条件:五个必须先接受的事实
第一,压力上限有冲突。 官方摘要与配套论文写 4 到 12 cmH₂O,官方方法节写 4 到 20 cmH₂O。受试者 01 的文件长度又超过表 2 最后一行的时间。使用前必须自己从压力列读出每一档的平台值,不能假设所有人都到同一上限。
第二,有效 PEEP 低于设定 PEEP。 呼气支路直接对大气开放,管路阻力与面罩泄漏让面罩口的实际压力低于 CPAP 设定值,且压力越高偏差越大。论文明确建议用面罩口记录压力,而不是机器设定值,做力学计算。
第三,过滤器阻力不可忽略。 细菌病毒过滤器的阻力约 0.5 cmH₂O·s/L,流量大时压降明显。这个压降会计入面罩压力,若不扣除,阻力辨识会系统性偏高。
第四,EIT 有缺失与截断。 受试者 69 没有 EIT 文件,受试者 57 的 EIT 记录被截断。做四模态联合分析时,这两例只能降级为三模态,不能按缺失值随意填补。
第五,人群不是"正常人"。 四组各 20 人,其中三组有哮喘、吸烟或电子烟使用史;健康组也只是"没有这三类情况"的自报健康。把它当作健康成人基线,会把病理与行为因素混进"正常"。
§5 怎么拿到
5.1 目录结构
下载后的目录与官方文件服务器一致。下面这棵树把关键文件与用途标在一起,方便先看结构再决定下哪一部分。
respiratory-dataset/1.0.0/
├── Code/ #-- 5 个 MATLAB 脚本
│ ├── DataCollection_30MAR23.m #-- 采集:串口、时钟、存盘
│ ├── DataConversion_07AUG23.m #-- 原始 .mat 转 CSV
│ ├── DataProcessing_29AUG23.m #-- 对齐、换算、合并 EIT
│ ├── read_binData.m #-- 读 EIT 二进制帧
│ └── FigureGenerationCode_29AUG23.m #-- 复现 figure-2
├── EIT_rawData/ #-- 79 个 .bin,S01–S80 缺 S69
├── PQ_rawData/ #-- 160 个 CSV,80 人各两份
│ ├── Subject1.csv #-- 换算成物理单位
│ └── Subject1_raw.csv #-- ADC 计数
├── Processed_Dataset/ #-- 80 个 CSV,四路合并
├── LICENSE.txt #-- CC BY 4.0 全文
├── README.txt #-- 列名与目录说明
├── SHA256SUMS.txt #-- 校验和
├── figure-1.png #-- 采集系统示意
├── figure-2.png #-- 受试者 01 示例图
└── subject-info.csv #-- 实为 XLSX 的人口学表
5.2 三种下载方式
数据总量 18.3 GB,压缩包 14.2 GB。若只需要压力流量与人口学,不必下 EIT,体积会小一个数量级;若要复现四模态分析,EIT 是绕不开的。官方给出三种入口,按场景选:
| 方式 | 命令 | 适合场景 | 注意 |
|---|---|---|---|
| ZIP | 浏览器下载 14.2 GB 压缩包 | 一次性归档 | 解压后 18.3 GB,预留空间 |
| wget 递归 | wget -r -N -c -np https://physionet.org/files/respiratory-dataset/1.0.0/ |
断点续传、只取部分目录 | 先用 -np 防止爬出根目录 |
| AWS CLI | aws s3 sync --no-sign-request s3://physionet-open/respiratory-dataset/1.0.0/ 目标目录 |
云端或大批量 | 需要 AWS CLI,匿名访问 |
| Python 包 | physionet download respiratory-dataset --version 1.0.0 |
脚本化流水线 | 需安装 physionet 包 |
#-- 只取压力流量与人口学,跳过 EIT 大文件
wget -r -N -c -np --reject "*.bin" \
https://physionet.org/files/respiratory-dataset/1.0.0/
#-- 下载后核对完整性
cd respiratory-dataset/1.0.0
sha256sum -c SHA256SUMS.txt
--reject "*.bin" 会把 EIT 全部排除,剩下的 CSV 与代码大约几百兆。若之后改变主意要补 EIT,再跑一次不带 --reject 的 wget,-N 与 -c 会跳过已完整的文件,只补缺失部分。
5.3 流式读取与合并
80 个处理文件加起来十几 GB,一次性读进内存不现实。按受试者循环、每人只保留需要的列,是最省内存的做法。下面的写法假设已下载到本地,并用编号而不是文件名排序,避免 Subject10 排在 Subject2 前面。
import re
from pathlib import Path
import pandas as pd
root = Path("respiratory-dataset/1.0.0/Processed_Dataset")
files = list(root.glob("ProcessedData_Subject*.csv"))
#-- 按编号排序,而不是按字符串排序
files.sort(key=lambda p: int(re.search(r"Subject(\d+)", p.name).group(1)))
for path in files:
sid = int(re.search(r"Subject(\d+)", path.name).group(1))
df = pd.read_csv(
path,
usecols=["Time [s]", "Pressure [cmH2O]", "Flow [L/s]",
"Chest [mm]", "Abd [mm]"],
)
#-- 示例文件的 Time 并非严格等距,插值前先确认单调递增
assert df["Time [s]"].is_monotonic_increasing
duration = df["Time [s]"].iloc[-1] - df["Time [s]"].iloc[0]
print(sid, len(df), round(duration, 2))
这段代码只做两件事:确认时间轴单调,打印每人记录长度。真正的切档要在压力列上找平台,而不是按固定秒数硬切。平台识别的稳妥做法是先对压力做低通滤波,再找连续若干秒内标准差低于阈值、且均值接近目标档位的区间。阈值没有官方答案,需要根据噪声水平调。
5.4 EIT 的读取顺序
EIT 二进制没有在 README 里写帧头格式,唯一的权威说明是 read_binData.m。正确的顺序是:先读这个函数,确认数据类型(单精度还是双精度)、帧头长度、像素排列(行优先还是列优先)、以及是否有帧计数;再用它读一个文件,检查帧数是否约等于记录时长乘 50;最后才做重建或区域分析。
一个常见的错误是直接把 .bin 当 uint16 数组读,然后 reshape 成 (-1, 32, 32)。这样得到的"图像"在数值上可能看似合理,但帧序、字节序或归一化一旦错了,区域通气延迟会整体反转。EIT 的像素值是相对阻抗变化,不是绝对通气量,任何跨受试者比较都要先做各自基线归一化。
5.5 转成通用长表
如果要把四路信号送进通用时序库,宽表并不合适。更稳的结构是"一人一行事件、一列信号"的长表,或者按模态拆成三张表,用 subject_id 与 time_s 关联。下面是一种可用的最小模式:
| 字段 | 类型 | 含义 | 来源 |
|---|---|---|---|
subject_id |
整数 | 受试者编号 1–80 | 文件名 |
group |
字符串 | 哮喘/吸烟/电子烟/健康 | 人口学表 |
modality |
字符串 | pq/eit/derived | 目录 |
time_s |
浮点 | 相对记录起点秒数 | 各自时间轴 |
channel |
字符串 | pressure/flow/chest/abd/aeration | 列名 |
value |
浮点 | 物理量或相对值 | 列值 |
unit |
字符串 | cmH2O、L/s、mm、任意单位 | README |
peep_set |
浮点 | 协议设定档位 | 表 2 推断 |
peep_actual |
浮点 | 面罩口平台压力 | 压力列推断 |
peep_set 与 peep_actual 必须分开。前者是实验者想设的值,后者是受试者真正受到的压。把所有分析都建在 peep_set 上,会把管路阻力与泄漏的差异误当成生理差异。
5.6 五个坑
| 坑 | 现象 | 后果 | 处理 |
|---|---|---|---|
把 subject-info.csv 当文本 |
编码错误或乱码 | 读不进人口学 | 改扩展名为 .xlsx 后用 openpyxl |
| 按文件名排序合并 | Subject10 排在 Subject2 前 |
受试者与标签错位 | 解析整数编号再排序 |
| 默认时间轴等距 | 阻断瞬间错位 | 毫秒级响应失真 | 用真实 Time 插值 |
把 V_tidal 当逐 breath 潮气量 |
目标变量带时间趋势 | 回归虚假相关 | 从 Flow 重新积分 |
| 用设定 PEEP 代替面罩压力 | 高估实际压力 | 弹性与阻力偏差 | 用 Pressure 平台值 |
| 忽略 EIT 缺失 | 69 号无文件、57 号截断 | 合并报错或错配 | 建立受试者可用模态表 |
§6 与库内数据集的关系
6.1 关系图谱
站内与呼吸相关的数据集可以分成四圈:同一实验室的 CPAP 系列、新生儿监护、ICU 群体时序、以及呼吸音与血氧。这个库落在第一圈的核心,和第二圈、第三圈只有主题相邻,不是同一实体。
| 数据集 | rid | 关系 | 关键区别 |
|---|---|---|---|
| pressure-flow-circum-cpap | 1732 | 同实验室前作 | 30 名健康人、三档压力、三种呼吸模式、无 EIT |
| cpap-data-canterbury | 1443 | 同实验室更早的 CPAP 库 | 30 人、两档压力、五档呼吸频率、只有压力流量 |
| pics | 879 | 主题相邻 | 10 名早产儿、长时程心电呼吸、非成人 CPAP |
| temporal-respiratory-support | 1608 | 主题相邻 | 5 万余名 ICU 成人、逐小时标签、无高频波形 |
| openox-repo | 1658 | 主题相邻 | 血氧设备性能、受控低氧、非肺力学 |
| icbhi-2017 | 407 | 主题相邻 | 呼吸音异常检测、听诊录音 |
| hf-lung-v1 | 1120 | 主题相邻 | 肺音与呼吸相位、麦克风信号 |
| bidmc-ppg | 74 | 主题相邻 | 光电容积脉搏波估呼吸率 |
| ucddb | 1566 | 主题相邻 | 25 人睡眠呼吸暂停、整夜多导睡眠图 |
| apnea-ecg | 658 | 主题相邻 | 心电判呼吸暂停、无气流与胸腹带 |
6.2 检索路径
| 你想找什么 | 先看哪个 | 再看哪个 | 判断依据 |
|---|---|---|---|
| 成人 CPAP 的压力流量基线 | 1443 | 1732 | 前者两档压力,后者三档加周长 |
| 胸腹周长与呼吸模式 | 1732 | 本库 | 前者健康人三模式,后者四组人群加 EIT |
| 呼气阻断与被动力学 | 本库 | 无同库替代 | 站内没有第二个带 REO 的数据集 |
| 新生儿心肺呼吸 | 879 | 无 | 人群与场景完全不同 |
| ICU 通气与结局 | 1608 | 无 | 群体时序,不是波形 |
| 血氧与低氧挑战 | 1658 | 无 | 设备性能,不是力学 |
| 呼吸音与肺音 | 407、1120 | 无 | 声学模态 |
| 睡眠呼吸暂停 | 1566、658 | 无 | 整夜睡眠,不是清醒实验室 |
6.3 分工判据
| 判据 | 选本库 | 选 1732 | 选 1443 |
|---|---|---|---|
| 需要 EIT 区域通气 | 是 | 否 | 否 |
| 需要呼气阻断 | 是 | 否 | 否 |
| 需要疾病分组 | 是 | 否 | 否 |
| 需要多档 PEEP | 是 | 部分 | 否 |
| 需要健康人基线 | 否 | 是 | 是 |
| 需要更小下载体积 | 否 | 是 | 是 |
| 需要三种呼吸模式 | 否 | 是 | 部分 |
| 需要五档呼吸频率 | 否 | 否 | 是 |
6.4 相关数据集导航
如果目标是"呼吸力学 + CPAP",阅读顺序建议从 1443 到 1732 再到本库:先理解最简单的压力流量两路,再看胸腹周长如何加入,最后看 EIT 与阻断如何把问题推向区域与瞬态。若目标是"呼吸监测算法",则从 74、407、1120 入手更顺,它们分别覆盖 PPG、听诊与肺音,和本库的高频压力流量不在一个层面。
站内还有 respiratory-heartrate-dataset 与 respiratory-oximetry-apnoea 两个待建位点,主题分别偏向心率与血氧,与本库的肺力学不重叠。它们若最终落库,适合放在"呼吸监测"而不是"呼吸力学"的分支下。
6.5 导航说明
以上链接均按站内真实 rid 与 url_name 核对;本库自身尚未分配 rid,正文不写固定编号,发布时由站点注入。
§7 质量评估与局限性
7.0 先校正"质量"的含义
评价生理信号数据,容易把"文件整齐"当成"质量高"。这套数据的文件并不整齐:扩展名错、列名拼错、时间轴抖动、两套采样率、缺失一个 EIT 文件。但它的生理学价值不依赖这些表面整齐度,而依赖四路信号是否真的在同一段时间里、压力协议是否真的被执行、阻断是否真的发生在该发生的时刻。下面按这四件事来评,而不是按 CSV 是否规范来评。
还有一层常被忽略:这套数据的"错误"大多是可见的。扩展名不对,打开就知道;列名拼错,读表头就知道;时间轴抖动,画图就知道。真正危险的是不可见的错误,比如把设定 PEEP 当成实际 PEEP、把累积容积当成潮气量、把 50 Hz 的 EIT 当成 100 Hz 对齐。可见的错误只增加工作量,不可见的错误会改变结论。所以下面的评分把"文档是否足以让人发现这些不可见错误"看得很重,而不只是看文件能不能读。
7.1 五维评分
| 维度 | 判断 | 理由 | 对使用的含义 |
|---|---|---|---|
| 规模 | 偏小 | 80 人、每人一段 | 够做方法验证,不够训练大模型 |
| 同步性 | 强 | 四路同段,100/50 Hz 双轴 | 跨模态分析的核心价值 |
| 可追溯性 | 强 | 原始 ADC、处理代码、硬件论文齐全 | 可重算、可复现 |
| 文档一致性 | 弱 | 摘要与方法压力上限冲突,表 2 有排版错误 | 必须回读原始文件 |
| 标签完备性 | 弱 | 无事件标注、无逐段 PEEP 标签 | 需自建标签 |
| 人群代表性 | 有限 | 单中心、清醒坐位、四组自报人群 | 不能外推 ICU 或睡眠 |
7.2 标注的两层
这套数据的"标注"可以分成两层。第一层是协议层:实验者知道每一分钟在做什么,表 2 就是这份隐含标注的文本化。第二层是信号层:呼吸周期、阻断时刻、压力平台,都要从波形里算出来。协议层是人工设计,信号层是算法推导,两者之间没有官方对齐表。
| 层级 | 谁产生 | 精度 | 可否直接当标签 |
|---|---|---|---|
| 协议层 | 实验设计者 | 分钟级 | 可做粗标签,需核对文件时长 |
| 信号层 | 使用者的算法 | 采样点级 | 不是金标准,只可做弱标签 |
| 人群层 | 自报问卷 | 组级 | 可做分组,不可做临床诊断 |
| 设备层 | 采集软件 | 帧级 | 可做质控,不是生理标签 |
7.3 可枚举的偏差
| 偏差 | 来源 | 表现 | 缓解 |
|---|---|---|---|
| 面罩泄漏 | 全脸面罩与皮肤贴合 | 流量漂移、潮气量偏低 | 用压力平台核对,剔除漂移段 |
| 有效 PEEP 偏低 | 呼气支路对大气开放 | 实际压力低于设定,越高压差越大 | 用面罩压力而非设定值 |
| 过滤器阻力 | 细菌病毒过滤器 | 压降约 0.5 cmH₂O·s/L | 从压力中扣除或纳入模型 |
| EIT 缺失 | 设备超时 | 69 号无数据,57 号截断 | 建立可用模态表 |
| 单中心 | 坎特伯雷一间实验室 | 设备、姿势、环境固定 | 不做跨中心泛化结论 |
| 人群自报 | 问卷分组 | 哮喘与吸烟重叠被规则强行拆分 | 把分组当弱标签 |
| 压力上限冲突 | 摘要 4–12,方法 4–20 | 无法统一切档 | 逐人读压力平台 |
| 时间轴抖动 | 采集时钟 | 毫秒级不等距 | 用真实时间戳插值 |
7.4 外部验证
官方页列出 6 篇引用,其中 5 篇可见。它们覆盖三个方向:EIT 区域通气、疾病预测、以及把数据当作开放科学案例。引用数量不大,但方向集中,说明这套数据目前主要被呼吸力学与 EIT 社区使用,而不是被大规模机器学习社区当作基准。
| 年份 | 工作 | 用到的部分 | 说明 |
|---|---|---|---|
| 2025 | 递增 PEEP 下 EIT 区域通气延迟 | EIT + 压力协议 | 直接验证区域响应 |
| 2025 | 用 PEEP 阻断数据预测哮喘与慢阻肺 | 压力流量 + 分组 | 探索性分类,样本小 |
| 2024 | 吸烟、电子烟、哮喘人群的通气随 PEEP 变化 | EIT + 分组 | 人群差异分析 |
| 2024 | 开放故事模型 | 作为开放数据案例 | 不是生理学验证 |
| 2024 | 高斯过程时序预测 | 作为方法示例 | 与呼吸主题关系弱 |
这张表也提醒一件事:引用数不等于数据质量。第 5 篇把数据当作时间序列方法示例,和呼吸力学没有直接关系;如果只看"被引用"来判断适用性,会高估它在机器学习社区的成熟度。
7.5 为什么它值得持续维护
它的不可替代性在于"同体、同步、可复现"三点同时成立。医院数据很难同时拿到 EIT、胸腹带与面罩压力;实验室数据很难有 80 人且带疾病分组;公开数据很难附带采集代码与硬件论文。三者叠在一起的库,目前不多。
它的维护需求也很明确:补一份逐段的 PEEP 与阻断事件表,统一摘要与方法的压力上限,修正 subject-info.csv 的扩展名,给出 Global Aeration 的单位与 V_tidal 的定义。这四件事都不需要重新采集,只需要文档与派生表,却能显著降低使用门槛。
§8 生态位与历史
8.1 沿革:从 100 毫秒阻断到快门式 REO
经典阻断技术用 100 毫秒的呼气闭塞估算被动弹性,理论上优雅,实践上有一个死结:受试者能感觉到闭塞,并在一两次呼吸内做出代偿。代偿一旦发生,测到的压力就不再是纯被动响应。Guy 等人的思路是把闭塞做得更短、更快,让初始压力段落在代偿之前,再用模型外推更长时间的响应。这就是快速呼气阻断(REO)的由来。
这套思路不是凭空出现。同一团队先做了呼吸双向压力流量采集装置与胸腹周长监测(HardwareX 2022),又做了带快速阻断附件的版本(HardwareX 2023),再用 30 名健康人验证 CPAP 下的可行性。80 人库是这条线的第三站:把装置、协议、人群与 EIT 一起放大,形成可公开复用的数据集。
REO 的代价是信息变短。阻断越短,可用的压力平台越短,信噪比越差;阻断越长,受试者越可能察觉并代偿。这个库没有在文档里给出"每次阻断多少毫秒"的统一参数,只说明装置基于快门,目标是抢在代偿之前。对使用者来说,这意味着阻断段不能按固定时长切,必须逐段看流量是否真的降到接近零、压力是否真的形成平台。也意味着不同受试者、不同档位的阻断质量并不一致,跨人比较前要先做质量筛选。
| 阶段 | 时间 | 产出 | 与本库的关系 |
|---|---|---|---|
| 装置雏形 | 2022 | 双向压力流量 + 胸腹周长 | 本库采集硬件的前身 |
| 阻断附件 | 2023 | 快速呼气阻断装置 | 本库 REO 的直接来源 |
| 30 人验证 | 2023 | pressure-flow-circum-cpap |
本库的设计验证 |
| 80 人发布 | 2023 | 本库 1.0.0 | 加 EIT、加疾病分组、加压爬坡 |
| 配套论文 | 2024 | Data in Brief | 协议、限制与伦理的完整说明 |
8.2 与挑战赛的关系
这套数据没有办过挑战赛,也没有官方排行榜、官方切分或统一评价脚本。它更像一份"实验档案",而不是"竞赛题库"。这不一定是缺点:挑战赛追求可比性,往往要把数据裁成统一长度、统一标签;实验档案保留原始长度与原始缺失,更适合做方法探索。
| 维度 | 挑战赛数据集 | 本库 |
|---|---|---|
| 切分 | 官方训练/测试 | 无,需自建 |
| 标签 | 统一、可评分 | 无事件标签 |
| 评价 | 官方脚本 | 无 |
| 长度 | 常被裁齐 | 原始长度,含缺失 |
| 适合 | 比较模型 | 比较物理解释 |
8.3 生态位
| 场景 | 典型数据 | 时间尺度 | 本库的位置 |
|---|---|---|---|
| 肺功能室 | 用力肺活量、弥散 | 秒到分钟 | 不做诊断,做力学 |
| ICU 呼吸机 | 高频波形、设置、血气 | 小时到天 | 不做重症,做实验室 |
| 睡眠监测 | 整夜气流、血氧、脑电 | 小时 | 不做睡眠,做清醒 |
| 可穿戴呼吸 | 胸阻抗、PPG、加速度 | 天 | 提供上游多模态参考 |
| 呼吸力学实验 | 压力、流量、EIT、周长 | 十分钟级 | 本库的核心位置 |
8.4 谁在用
从引用方向看,使用者主要是三类人:做 EIT 区域通气的研究组、做呼吸力学参数辨识的工程组、以及做开放科学或数据方法演示的团队。临床呼吸科的直接使用很少,原因不是数据不重要,而是它缺少临床结局与诊断金标准,难以直接回答临床问题。
| 使用者 | 关心什么 | 会怎么用 |
|---|---|---|
| EIT 研究者 | 区域通气随 PEEP 的变化 | 重建像素序列,算区域延迟 |
| 力学建模者 | 弹性与阻力随压力的漂移 | 用阻断段拟合,比较多档 |
| 信号处理工程师 | 多采样率对齐、泄漏补偿 | 做预处理与质控算法 |
| 教学者 | 一套完整的实验链 | 从硬件到代码做课程案例 |
| 开放科学研究者 | 数据与代码的可复现性 | 作为 FAIR 实践样本 |
§9 使用指引
9.1 三种角色的路径
| 角色 | 目标 | 第一步 | 第二步 | 第三步 |
|---|---|---|---|---|
| 力学建模者 | 辨识弹性与阻力 | 读 Pressure 与 Flow |
找阻断段与压力平台 | 拟合集总模型,比较多档 |
| EIT 研究者 | 区域通气响应 | 读 read_binData.m |
重建 32×32 帧序列 | 与压力、流量对齐,算区域延迟 |
| 信号工程师 | 多模态质控 | 读原始 ADC 与换算文件 | 比对两套数值,查泄漏段 | 建立可用模态与质量标记 |
9.2 最短流程
- 先只下
Processed_Dataset与subject-info.csv,用处理文件确认受试者编号、记录长度与列结构。 - 把
subject-info.csv改名为.xlsx,读出 80 行分组,建立subject_id → group映射。 - 在
Pressure上找平台,按平台值而不是设定值分档;记录每档的起止时间与平台均值。 - 在
Flow上找阻断段:流量骤降至接近零、压力出现短暂平台,两者同时满足才记为候选。 - 只对候选段做力学拟合,先做线性模型,再加入泄漏与管路阻力项;不要一开始就上复杂模型。
- 若要 EIT,先读一个文件确认帧数与 50 Hz 时间轴,再批量处理;缺失受试者单独标记。
这套流程刻意把"切档"放在"建模"之前。很多人一上来就选一个受试者、画一条压力曲线、套一个二阶模型,结果发现残差很大,再回头怀疑模型。多数时候问题不在模型,而在切段:把升压的 20 秒过渡混进了稳态,或者把面罩漏气造成的流量漂移当成了呼吸。先花时间把档位与阻断段切干净,比换三个模型更有效。
9.3 引用方式
官方给出的引用格式如下。版本 DOI 指向 1.0.0,适合在论文的方法节精确引用;如果只想指"这个库",可用最新版 DOI。
Guy, E. F. S., Clifton, J. A., Caljé-van der Klei, T., Chen, R.,
Knopp, J., Moeller, K., & Chase, J. G. (2023).
Respiratory dataset from PEEP study with expiratory occlusion
(version 1.0.0). PhysioNet. https://doi.org/10.13026/d767-e709
@article{PhysioNet-respiratory-dataset-1.0.0,
author = {Guy, Ella Frances Sophia and Clifton, Jaimey Anne and
Caljé-van der Klei, Trudy and Chen, Rongqing and
Knopp, Jennifer and Moeller, Knut and Chase, James Geoffrey},
title = {{Respiratory dataset from PEEP study with expiratory occlusion}},
journal = {{PhysioNet}},
year = {2023},
month = nov,
note = {Version 1.0.0},
doi = {10.13026/d767-e709}
}
配套论文是理解协议与限制的必读材料,引用时不要只引数据而不引论文:
Guy, E. F. S., Clifton, J. A., Calje-Van Der Klei, T., Chen, R.,
Knopp, J. L., Möller, K., & Chase, J. G. (2024).
Respiratory monitoring dataset, with rapid expiratory occlusions,
over increasing positive airway pressure ventilation.
Data in Brief, 52, 109874. https://doi.org/10.1016/j.dib.2023.109874
§10 AI 使用声明
| 项目 | 说明 |
|---|---|
| 文本生成 | 正文由 AI 辅助撰写,结构与数字按本站现行规范组织与核对,判断以官方页、README 与配套论文为准 |
| 数字来源 | 规模、结构、许可、日期取自 PhysioNet 官方页、README、LICENSE、目录文件与配套论文;示例文件数值取自受试者 01 的公开文件 |
| 文件核验 | 官方页与目录经 HTTP 访问核对;CSV 列名、文件大小、首末行时间戳来自范围请求读取;人口学工作簿用 openpyxl 解析 |
| 不一致说明 | 官方摘要与论文写 PEEP 4–12 cmH₂O,官方方法节写 4–20 cmH₂O;论文表 2 最后一行时间 16:10,受试者 01 文件末行 1198.35 s。正文如实并列,不强行统一 |
| 论文信息 | 配套论文 DOI 10.1016/j.dib.2023.109874,Data in Brief 第 52 卷,2024 年 2 月;论文按 CC BY-NC-ND 发布,数据按 CC BY 4.0 开放,两者许可不同 |
| 未核验内容 | 阻断事件的具体次数与时刻、Inspiratory Indicies 的精确定义、Global Aeration 的单位、EIT 二进制帧头布局、每档实际平台压力的全体取值,均未在官方文档中给出,正文未作定量断言 |
| 图像 | 封面提示词指向风格化生成图,不是数据可视化,不用于诊断或测量 |
| 免责 | 内容用于数据理解与技术选型,不构成临床建议;用于临床决策前需由具备资质的专业人员复核 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 这是 ICU 呼吸机波形库 | 清醒成人坐位 CPAP,面罩接口,不是插管通气 | 官方摘要与论文方法节 |
| 80 名受试者就是 80 个文件 | 压力流量有 160 个 CSV,每人两份 | PQ_rawData 目录 |
| EIT 覆盖全部 80 人 | 只有 79 个 BIN,69 号缺失,57 号截断 | 目录与论文 Limitations |
| 数据是 CC BY-NC-ND | 数据是 CC BY 4.0,论文才是 CC BY-NC-ND | LICENSE.txt 与论文版权页 |
| PEEP 一定到 12 cmH₂O | 摘要写 12,方法节写 20,需逐人读压力平台 | 官方页 Abstract 与 Methods |
V_tidal 是逐 breath 潮气量 |
示例文件中随时间累积,更像积分容积 | 受试者 01 文件末段 |
subject-info.csv 是文本 CSV |
实际是 XLSX 工作簿,需改扩展名 | file 命令结果 |
| 有阻断事件的标注文件 | 没有独立标注,阻断时刻需从波形识别 | 目录无 annotation 文件 |
| 面罩压力等于 CPAP 设定压力 | 管路阻力与泄漏让实际压力偏低 | 论文 Limitations |
| 可以直接拿来做哮喘诊断 | 分组是自报病史,无肺功能与临床诊断 | 论文表 1 与人口学表 |
FAQ
Q1:这套数据和同实验室的 30 人 CPAP 库到底差在哪?
差在三件事:人群、模态、协议。30 人库是健康成人,只有压力、流量与胸腹周长,压力档位少,呼吸模式固定;本库扩到 80 人,加入哮喘、吸烟、电子烟与健康四组,增加 EIT 区域通气,并把 PEEP 做成逐档爬坡,配合快速呼气阻断。前者适合建立 CPAP 下的基线,后者适合研究不同人群在压力变化下的力学与区域通气差异。两者不是版本关系,而是同一实验路线的两个阶段。
Q2:为什么文件这么大,能不能只下需要的部分?
大是因为 EIT。80 人的 32×32、50 Hz 像素帧占了绝大部分体积,整包未压缩 18.3 GB,压缩后 14.2 GB。只做压力流量分析时,用 wget 的 --reject "*.bin" 跳过 EIT,剩下的 CSV 与代码只有几百兆。只做 EIT 时,则反过来只取 EIT_rawData 与 Processed_Dataset,但要注意 69 号没有 EIT 文件,批处理要允许缺失。
Q3:没有标注,怎么做监督学习?
只能做弱监督或自监督。可行的标签有三类:受试者分组(来自人口学表)、PEEP 档位(从压力平台反推)、呼吸相位(从流量或周长算)。阻断时刻可以做成事件检测任务,但没有金标准,只能做一致性评估而不是精度评估。更稳妥的路线是把这套数据当作预训练或物理约束的来源,用少量有标注的外部数据做下游微调。
Q4:EIT 和流量积分能互相验证吗?
可以,但只在相对变化层面。EIT 的 Global Aeration 是相对阻抗变化的总和,没有毫升单位;流量积分给出的是升。两者能做同步性与趋势的一致性检验,不能做绝对值的等价换算。论文正是用这种相对一致性来判断 EIT 是否能作为潮气量的辅助验证。若要做绝对定量,需要额外的标定实验或模型假设。
Q5:这套数据能用来做临床决策吗?
不能直接用于临床。受试者是清醒、坐位、自报健康的成人,实验是低风险实验室协议,没有诊断金标准、没有治疗、没有结局。它能支持的是方法学研究:力学参数辨识、EIT 区域分析、泄漏补偿、传感器融合。任何临床结论都需要在患者队列中重新验证,并经过伦理与监管审查。
术语表
| 术语 | 解释 |
|---|---|
| PEEP | 呼气末正压,保持呼气末气道压力高于大气压 |
| CPAP | 持续气道正压,整个呼吸周期维持同一正压的无创通气方式 |
| ZEEP | 呼气末压力为零,即不施加正压 |
| REO | 快速呼气阻断,用快门在极短时间内关闭呼气通路 |
| EIT | 电阻抗断层成像,通过体表电极测胸廓横断面阻抗变化 |
| 弹性(elastance) | 压力变化与容积变化之比,反映肺与胸壁的僵硬程度 |
| 阻力(resistance) | 压力差与流量之比,反映气道通畅程度 |
| 时间常数 | 弹性与阻力的乘积,决定被动呼气的快慢 |
| 胸腹周长 | 胸带与腹带测得的躯干周长,反映呼吸时胸腹容积分配 |
| 文丘里流量计 | 利用收缩段压差推算流量的装置 |
| 吸气索引 | 处理文件中标记吸气事件的整数序列,定义需查代码 |
| 全局通气 | EIT 全帧像素变化的汇总,单位未注明 |
| 有效 PEEP | 面罩口实际达到的压力,通常低于机器设定值 |
| 泄漏 | 面罩与皮肤之间的漏气,会造成流量漂移与容积低估 |
附录 A:核心数字核对表
| 数字 | 出处 |
|---|---|
| 80 名成人受试者 | PhysioNet 官方页 Abstract |
| 4 组人群,每组 20 人,男女各 10 | 配套论文第 4 节 |
| 160 个压力流量 CSV | PQ_rawData 目录,80 人 × 2 |
| 80 个处理后 CSV | Processed_Dataset 目录 |
| 79 个 EIT BIN | EIT_rawData 目录;论文说明 69 号缺失 |
| 18.3 GB 未压缩 | 官方页 Files |
| 14.2 GB ZIP | 官方页 Files |
| 100 Hz 压力流量采样 | 官方页 Data Description |
| 50 Hz EIT 采样 | 官方页 Data Description |
| 32×32 EIT 单帧 | 官方页 Data Description |
| 0.5 cmH₂O 压力步进 | 官方页 Abstract 与 Methods |
| 每档 30 秒 | 官方页 Abstract 与 Methods |
| 首尾各 1 分钟 ZEEP | 官方页 Abstract |
| 表 2 最后一行时间 16:10 | 配套论文表 2 |
| 受试者 01 文件末行 1198.35 s | ProcessedData_Subject01.csv 末行 |
| 过滤器阻力约 0.5 cmH₂O·s/L | 官方页 Methods |
| 版本 1.0.0 发布于 2023-11-10 | 官方页 |
| DOI 10.13026/d767-e709 | 官方页 Citation |
| 许可 CC BY 4.0 | LICENSE.txt 与官方页 License |
| 人口学表 24 列、80 行 | subject-info.csv 工作簿解析 |

