床旁监护的原样样本 — 巴塞罗那 SICU 波形库

四千三百余段 / 43 类信号 / CC BY 4.0

来源 https://physionet.org/content/barcelona-sicu-signals/发布时间: 2026-10-27最后更新: 2026-10-27 阅读 21
床旁监护的原样样本 — 巴塞罗那 SICU 波形库

信息速览

数据集名称床旁监护的原样样本 — 巴塞罗那 SICU 波形库
数据类型时序信号,波形,元数据,原始数据链接
规模估计 200–300 个患者期(无身份标识保留,无法精确计数);记录 4,349 段
接入方式https://physionet.org/content/barcelona-sicu-signals/
AI 就绪度

巴塞罗那是全世界麻醉与重症监护数据最密集的城市之一,但公开出来的床旁波形寥寥。这家医院的外科重症监护病房在 2026 年 10 月放出的一批记录,填补的正是这个位置:它不提供病历、不提供结局、不提供标签,只提供监护仪屏幕上那些一跳一跳的原始轨迹,按设备原生采样率完整留存,十二个月不中断地攒了约两万小时。

它的价值不在于大。与 MIMIC 波形库比,它的体量小了两个数量级;与 VitalDB 比,它没有手术室里的那种整齐。它的独特性在于「单中心、单病房、连续一年、按原样」——这类数据在开放世界里极稀缺,因为大多数医院即使采了,也因为隐私顾虑不敢放。它敢放,是因为做了激进到有些伤口感的删减:把中心静脉压、肺动脉压、体温、麻醉气体、四项成串刺激全部删掉,只留下最小够用的那 43 类信号。

对做算法的人来说,这意味着一个具体的取舍:你拿到了采样率足够、时间跨度够长、地理与设备都不同于主流库的一段真实波形,但你必须自己补上它没给的那两层——病人是谁,信号好不好。一屏速览见下表。

维度 内容
官方名称 Continuous high-density physiological signals from a surgical intensive care unit at Hospital Clínic de Barcelona
发布方 巴塞罗那医院诊所外科重症监护病房 UCIQ(13 床),经 PhysioNet 发布
版本与日期 v1.0.0,2026-10-19 首发
DOI 10.13026/hgz9-s056(版本号 DOI)
记录数 4,349 段 .vital 文件
监护总时长 约 20,479 小时,官方概数两万余小时
压缩包体积 解压后 80.2 GB,ZIP 下载 76.1 GB
信号类目 43 类:9 路波形 + 34 路数值
波形与采样率 ECG_WAV 500 Hz;BP_WAV、PLETH、ICP、EEG 125 Hz;CO2、RESP、AWP_WAV、FLOW_WAV 62.5 Hz
数值轨 1 Hz 刷新(心率、血氧、收缩压、舒张压、平均压、呼吸频率、呼吸机参数等)
文件格式 .vital(VitalDB 压缩二进制),32 位浮点物理单位存储
患者规模 估计 200–300 个患者期,无身份标识,无法精确
临床变量 无。无诊断、无用药、无检验、无结局、无年龄性别
许可 CC BY 4.0,开放获取,无需凭证
伦理批号 HCB/2026/0496,2026-04-30 通过

§1 它要解决的具体麻烦

1.1 一句话:把床旁屏幕上的东西原样存下来,然后交给不认识这些病人的人

病房里的监护仪日夜不停地算、不停地显示,但绝大多数医院的默认行为是「显示完就丢」。电子病历留下的是每隔一段时间抄一次的体温单——心率 88、血压 112/64、血氧 97——这些数字是护士看着屏幕抄的,抄的时候屏幕上的波形早就滚过去了。波形本身承载的信息量比这串数字高出三个数量级:一次动脉压搏动里包含收缩上升斜率、重搏切迹位置、每搏变异度;一段心电里包含 QRS 形态、心率变异的逐拍序列。这些全都在被抄成数字的那一刻丢掉了。

这个库做的事情很朴素:在床旁电脑上装一个开源软件,让它连住监护仪,把屏幕上正在显示的所有轨迹按设备自己的节奏整段记下来,存成本地文件。没有网络传输,没有中央服务器,没有事后重建。一段记录从开始到结束,就是屏幕上发生过的一切。

它的难点不在技术,在治理。要把这些数据放出去,得先证明放出去不会害到病人。该库的做法是把数据瘦身到「无法指认」的程度:删掉所有时间锚点、删掉低频通道、删掉一切能与其他数据库对上的细节。瘦身到这个程度,代价是临床可用性大幅下降——但对一个「只给波形」的库来说,这个代价是设计的一部分,不是事故。

1.2 三条常见的错误期待

期待一:以为它是 MIMIC 波形库的欧洲翻版。 不是。MIMIC 波形库的核心资产是「波形 + 完整的 ICU 住院记录」的绑定关系,你可以从波形跳到诊断、用药、检验、结局。这里没有绑定。你拿到一段动脉压波形,不知道这个人是做完胰十二指肠切除还是主动脉夹层修补,不知道他用不用去甲肾上腺素,不知道他最后活没活。要做「波形预测结局」这类研究,这个库单独不够。

期待二:以为「高密度」意味着全覆盖。 官方自己写得很清楚:覆盖是间断的,不是连续的。真正的含义是——在这十二个月里,这台机器在某些时段被打开并记录,而不是整个病房整个十二个月都在被录。一个 13 床的病房,一年满负荷是约十一万床时,而这里记录的约两万小时,按单床计相当于每张床只有约一成半的时间被记录下来。所以「一段记录」代表的是某个时段的切片,不能据此推断病房的一天。

期待三:以为 43 类信号都是「齐全」的。 43 类是并集,不是交集。心率几乎每段都有(99.9%),动脉压波形只有一半(49.4%),二氧化碳四分之一(25.2%),颅内压两成(21.6%),呼吸机流量与气道压只有 3.3%。任何跨信号的联合分析,实际可用样本会被最少见的那个通道卡住。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
高采样率、未经降采样处理的原始波形 ECG 500 Hz、动脉压与颅内压 125 Hz,32 位浮点物理单位 够
单中心长时间跨度的连续性 十二个月前瞻采集,约两万小时 够,但覆盖断续
波形与诊断、用药、结局的关联 完全没有 不够
患者年龄、性别、手术类型 完全没有,连字段都不存在 不够
区分动脉线的有创测量与袖带的无创测量 标签已合并,波形保留但识别需自建规则 部分,要自己做
已知的逐段质量分级 未提供 不够
麻醉与镇静深度(BIS) 340 段有心电波形、294 段有 BIS 数值 部分
肺动脉楔压、心输出量参考 肺动脉压通道被整体删除 不够
呼吸机波形用于机械力学分析 仅 145 段同时有流量与气道压 很有限
商用或再分发 CC BY 4.0,署名即可 够
跨院跨设备的泛化验证 单一中心,可在西班牙体系内做迁移研究 部分

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

你的处境 它能帮你什么 下一步该做什么
在 MIMIC 上训的动脉压估计模型,换到别家设备就不准,怀疑是域偏移 给一个采样、设备(Philips IntelliVue)、人群与体系都不同的外部测试集 先做来源分离(有创/无创),再按波形形态分层评估,别只在整体误差上比
做血压波形特征工程,缺一段「真实病房、非手术室」的长时程数据 平均每段一个半小时,四分之一超过五小时,可做昼夜节律的初步观测 注意记录本身的启动时间未知,昼夜推断只能做相对相位
做颅内压波形分析,公开数据极少 939 段颅内压波形,另 835 段有平均压数值 只能做单通道内部研究,无法与格拉斯哥评分等临床变量关联
需要一段心电与动脉压严格同步的数据做传导延迟研究 同一文件内两类波形共用一个时基(相对起点) 需确认采样率换算后对齐,500 Hz 与 125 Hz 是整数倍关系
想验证某个算法在「信号质量差」时的失效模式 可自己构造质量分层,但无官方分级可对照 自行实现一套质量指标(见 §4),并公开,形成可复现的分层
在欧洲做法规或伦理约束下的二次利用研究 CC BY 4.0,无凭证门槛,伦理批号可引用 引用时同时注明数据与 PhysioNet 平台
只想要个小样本先跑通流程 单文件从几百 MB 到几 GB 不等,可只下一段 从 RECORDS 列表任取一段即可,无需全量

1.5 一句话判断

它是目前公开世界里少有的「单中心、单病房、连续一年、原样采样」的重症波形集,代价是被人为削到只剩波形——适合做信号方法学的压力测试,不适合做临床结局研究。

1.6 不适合谁:四条边界

边界一:需要临床变量的人。 这个库连年龄性别都没有。任何以结局为标签的监督学习、任何需要协变量校正的流行病学分析,都不该从它开始。

边界二:需要连续无缺口监测的人。 记录被监护仪重连、探头脱落、系统重启切得很碎,四分之一不到半小时,最短接近零。要做「住院全程」分析,需要先做基于时间的重拼接,而重拼接的锚点并不存在——所有时间都是相对各自起点的。

边界三:需要标准 12 导联心电的人。 心电被合并为单条 ECG_WAV,原始是 I、II、III、V 中的某一个,具体是哪个随记录变化,且部分导联(aVR、aVL、aVF、MCL 等)被整体删去。做 12 导联诊断模型,用这个库会直接卡住。

边界四:需要血流动力学完整画像的人。 肺动脉压、中心静脉压、右房压、左房压、主动脉压全部被删。休克分型、右心功能评估这类研究,在这个库上做不了。

§2 数据构成与规格

2.1 一段记录是怎么被切成一段的

理解这个库的粒度,比理解它的字段更重要。官方定义的一段记录(recording)是「一段连续采集」,切分边界由三件事决定:监护仪重新连接、某个传感器被拔掉、系统重启。这三个边界都不来自临床事件,而来自工程事件。

这意味着记录的长度分布是工程行为的产物,不是生理或临床节律的产物。一台监护仪在网络抖动时重连,原来三个小时的记录就被切成了九十分钟加九十分钟。反过来,一次长时间无人触碰的夜班,可能攒出一段七个半小时的文件。metadata.csv 里最长的记录达到 7,714 分钟,约五天多,这类超长记录往往意味着某台设备被遗忘了很久。

发布前的处理把间隔小于 20 分钟的相邻文件并成一段。这条规则是唯一把碎片往回粘的机制,代价是它无法区分「同一个病人的两次探头脱落」与「同一个病房里两个病人之间没人动设备」。后者在合并后会被误判为一段。

2.2 字段/记录的完整字典

先看文件层的元数据。metadata.csv 与 metadata.json 内容一致,前者便于 pandas 直接读入。

字段 类型 含义 使用注意
session_id 整数 记录序号,从 1 递增 与文件名数字部分对应,非患者号
filename 字符串 vitals_00001.vital 形式 全部在 vitals/ 单层目录下
block_folder 字符串 恒为 vitals 目录名,无分组含义
duration_seconds 浮点 该段时长(秒) 最短接近零,存在亚分钟记录
duration_minutes 浮点 同上,单位分钟 分析时优先用秒,减少精度损失
n_tracks 整数 该段总轨数(波形加数值) 中位数 13,四分位 12–15
n_waveform_tracks 整数 波形轨数量 中位数 4,最大 9
n_numeric_tracks 整数 数值轨数量 波形轨与数值轨之差
file_size_mb 浮点 文件体积(MB) 与时长和轨数大致同向

再看轨道层。轨道名即列名,用 vitaldb 读出来就是 DataFrame 的列。43 类信号的规范名与出现率如下(出现率分母为 4,348 段通过隐私分析的有效记录)。

域 信号名 类型 出现记录数 出现率 单位
心电 HR 数值 4,345 99.9% bpm
心电 ECG_VPC_CNT 数值 4,332 99.6% 次
心电 ECG_WAV 波形 4,117 94.7% mV
血氧 PLETH_SAT_O2 数值 4,340 99.8% %
血氧 PLETH_PERF_REL 数值 4,339 99.8% 无
血氧 PLETH_HR 数值 4,334 99.7% bpm
血氧 PLETH 波形 4,120 94.8% 无
动脉压 BP_MEAN 数值 4,303 99.0% mmHg
动脉压 SBP 数值 4,301 98.9% mmHg
动脉压 DBP 数值 4,299 98.9% mmHg
动脉压 BP_WAV 波形 2,150 49.4% mmHg
动脉压 PPV 数值 331 7.6% %
呼吸 RR 数值 4,160 95.7% 次/分
呼吸 RESP 波形 3,274 75.3% 欧姆
呼吸 FIO2 数值 659 15.2% %
呼吸机 TV_EXP / VENT_RR / PEEP_CMH2O / PIP_CMH2O 数值 588 13.5% 混合
呼吸机 TV_INSP 数值 529 12.2% mL
呼吸机 PPLAT_CMH2O 数值 354 8.1% cmH2O
呼吸机 MV_EXP / MV_INSP / VENT_RR_SPONT 数值 329 7.6% 混合
呼吸机 FLOW_WAV / AWP_WAV 波形 145 3.3% L/min、cmH2O
二氧化碳 CO2 波形 1,096 25.2% mmHg
二氧化碳 AWAY_CO2_ET / AWAY_CO2_INSP_MIN 数值 496 11.4% mmHg
神经 ICP 波形 939 21.6% mmHg
神经 ICP_MEAN 数值 835 19.2% mmHg
神经 EEG 波形 340 7.8% µV
神经 EEG_BIS_SQI 数值 316 7.3% 无
神经 EMG_ELEC_POTL_MUSCL 数值 307 7.1% µV
神经 EEG_BIS / EEG_RATIO_SUPPRN 数值 294 6.8% 无
神经 EEG_BIS_ASYM 数值 226 5.2% 无
神经 ICP_DIA / ICP_SYS 数值 11 0.3% mmHg
体温 TEMP 数值 85 2.0% °C
体温 BT_BLD 数值 38 0.9% °C
血流 CO_CTS 数值 32 0.7% L/min
血流 CO 数值 31 0.7% L/min

几个从这张表能直接读出的结构事实:ETCO2 与 RR_CO2 没有单独保留,它们被折进了 CO2 这个名字下,所以名为「二氧化碳波形」的那一列,其来源可能是呼气末数值的标签通道也可能是波形通道,需看该段实际轨型。颅内压的收缩与舒张数值只有 11 段有,这正是全库 k 值的最小值来源——官方文档里写明,全局 k 为 11 的约束信号是 ICP_DIA 与 ICP_SYS。

2.3 一条记录的完整解剖

以 RECORDS 里的第一段为例。它的元数据是:session_id 1、时长 108,365.6 秒(约 30 小时)、33 条轨(8 条波形 + 25 条数值)、体积 217.84 MB。这是一个典型的长记录,超过六小时的记录全库有九百余段。

vitals/vitals_00001.vital        体积 217.84 MB,时长 1,806.1 分钟
├─ 波形轨(8 条,见 CALIBRATION 的量程与单位)
│    ECG_WAV   500 Hz   -1.0 ~ 3.0 mV
│    PLETH     125 Hz    0.0 ~ 100
│    BP_WAV    125 Hz    0.0 ~ 200 mmHg
│    RESP       62 Hz   -1.0 ~ 2.0 欧姆
│    CO2        62 Hz    0.0 ~ 50 mmHg
│    ICP       125 Hz    0.0 ~ 60 mmHg
│    EEG       125 Hz -100.0 ~ 100 µV
│    AWP_WAV   125 Hz    0.0 ~ 50 cmH2O
└─ 数值轨(25 条,1 Hz 刷新)
     HR、PLETH_SAT_O2、SBP、DBP、BP_MEAN、RR、
     PEEP_CMH2O、PIP_CMH2O、TV_EXP、VENT_RR、FIO2 ……(其余略)

注意 CALIBRATION 文件里给的开窗量程,是「显示用」而非「采集用」的量程:它告诉你这条轨道在监护仪屏幕上通常被画在哪个纵轴区间,而不是数据本身的取值范围。有些轨道的量程明显按设备默认值写,比如 FLOW_WAV 写 0.0–50.0 cmH2O 这类与单位不符的组合,AWP_WAV 却在同一份文件里标 125 Hz。

用 vitaldb 读这一段,最短的方式如下。这里的关键是采样间隔要分轨指定:波形轨按各自采样率,数值轨一律按 1 秒,否则会得到一列几乎全是空值的表。

import vitaldb

vf = vitaldb.VitalFile('vitals/vitals_00001.vital')
print(vf.get_track_names())          #-- 打印全部轨名

#-- 波形:按原生采样率 500 Hz 导出
ecg = vf.to_pandas(['ECG_WAV'], interval=1/500, return_timestamp=True)

#-- 动脉压:125 Hz
abp = vf.to_pandas(['BP_WAV'], interval=1/125, return_timestamp=True)

#-- 数值:1 Hz,与波形不同频
num = vf.to_pandas(['HR', 'SBP', 'DBP'], interval=1, return_timestamp=True)

print(ecg.shape, abp.shape, num.shape)
print(ecg.head())

若要批量取某一段的「轨型清单」而不读数据,可以直接解析 .vital 的头部,比整段加载快得多:

import vitaldb, json

vf = vitaldb.VitalFile('vitals/vitals_00042.vital')
recs = vf.get_records()
for trk in recs:
    print(trk['tname'], trk['dt'], trk['unit'], trk['max_len'])

2.4 分布表:长度与轨道数

以下数字来自官方随附的 metadata.csv,是对全部段的完整统计,不是抽样。

统计量 记录时长(分钟) 总轨数 波形轨数
最小 接近 0 0 0
第 25 百分位 30.2 12 4
中位数 92.5 13 4
第 75 百分位 296.5 15 9
最大 7,714.3 36 9

分段看:

时长区间 记录数 占全库比例 含义
不足 10 分钟 317 7.3% 多半是探头脱落或误触发,可用性低
10 至 30 分钟 762 17.5% 查房、搬动、短时监测
30 至 60 分钟 627 14.4% 一次完整的小操作窗口
1 至 6 小时 705 16.2% 常规可用主体
超过 6 小时 938 21.6% 过夜或长时间无人干预段
其余(对应合并后的长段) 1,000 23.0% 跨夜叠加,含多日记录

这张表最值得记住的一行是「超过 6 小时」:这九百多段是整库最有研究价值的子集,因为它们足够长到可以做昼夜、做趋势、做长时间漂移分析,而且没有中间被切断。任何以「长时程」为前提的研究,都应该从这个子集起步,而不是从全库起步。

2.5 与同类资源的字段差异

维度 巴塞罗那 SICU MIMIC-IV 波形库 VitalDB eICU-CRD
地理 西班牙巴塞罗那 美国波士顿 韩国首尔 美国多中心
场景 外科 ICU 单病房 多类 ICU 手术室为主 ICU,仅数值
波形 有,9 类 有,多类 有,多类 无
采样率上限 心电 500 Hz 心电 500 Hz 心电 500 Hz 不适用
绑定电子病历 无 有,完整 有,手术与麻醉记录 有,但仅数值
患者标识 无 有主题号 有病例号 有单元号
时间戳 相对各自起点 绝对时间 绝对时间 绝对时间
许可 CC BY 4.0 开放获取档(ODC-BY 系) 需申请 需凭证
规模 四千余段 数十万段量级 数千例手术 二十万次住院量级

差异最锋利的一列是「时间戳」:MIMIC 与 VitalDB 都保留绝对时间,因此你能算出「凌晨三点发生低血压」;这里所有时间从各自起点算零,跨记录的时间关系不可恢复,只能在单段内部讨论相位。

§3 它是谁的样本:采集情境决定的一切

3.1 病房是 13 张床,人是从手术室推回来的

这个库来自一家三级大学医院的 13 床外科重症监护病房,官方描述里的人群是混合的:术后、神经重症、创伤、移植。这四个词几乎定义了你会看到什么样的波形。

术后病人的动脉线通常由麻醉科在手术室留置,推回 ICU 后继续使用,所以动脉压波形出现率接近一半,比普通内科 ICU 高。神经重症病人要放颅内压探头,这就是那 939 段颅内压波形的来源。创伤病人身上探头多、管路多,往往一段记录里能同时出现心电、血氧、动脉压、呼吸,这也是轨道数中位数能到 13 的原因。移植病人则贡献了大量血流动力学剧烈波动的窗口。

理解这一点,才能理解为什么这个库的「同质性」比看起来好:它虽然人群混合,但混合的方式是固定的——都是刚经历过重大外科干预、身上至少有一根动脉线的人。用这个库训练出来的模型,天然适合这个人群,也天然不适合普通内科病房的慢病患者。

3.2 采集架构建在现有电脑上,不在专用采集箱上

官方描述里有一个容易被跳过的细节:采集软件运行在床旁已有的电脑上(Intel i5、12 GB 内存、256 GB 固态),通过串口转网口直连监护仪,数据存本地,不经网络传输。这种「去中心化」架构有两个直接后果。

第一是可靠性高:没有网络,就没有网络故障导致的丢包,也没有集中存储瓶颈。一整年能攒下两万余小时,靠的就是这个朴素选择。第二是可扩展性差:每台床旁电脑要单独维护,机器被换、系统被重装,采集就断。这解释了一部分记录碎片——采集脚本在共享会话里自动启动,一旦有人退出会话,脚本随之终止。

第三,也是最重要的后果:因为数据从不离开床旁电脑,所以隐私处理只需要在发布前做一次,而不需要在整个采集期持续做去标识。这是它能获得伦理批准的关键工程前提。

3.3 采样率是监护仪给的,不是研究者选的

所有波形采样率都来自设备原生输出:心电 500 Hz、体积描记与有创动脉压与颅内压与脑电 125 Hz、呼气末二氧化碳与呼吸与呼吸机流量与气道压 62.5 Hz、数值 1 Hz。研究者没有做任何降采样,也没有做上采样。

这件事的分量比数字本身大。多数公开波形库为了控制体积会做降采样,心电降到 250 Hz、动脉压降到 62.5 Hz。降采样在大多数形态学任务里无害,但在两类任务里会实质失效:一是高频心电成分(晚电位、QRS 切迹),二是动脉压波形的重搏切迹与上升斜率这类依赖高频细节的特征。这个库保持了 500 Hz 与 125 Hz 的原样,等于把这两类任务的可能性留住了。

代价是体积。80.2 GB 解压后,平均每段约 19 MB,但实际上长记录单段能到 2 GB 以上,短记录只有几 MB。

3.4 十二个月与两百多个患者期

官方的患者规模表述很谨慎:估计两百至三百个不同的患者期,因为标识已删除,精确计数不可得。这个数字与其记录数放在一起会让人困惑——四千多段记录,只有两三百个病人,意味着平均每个病人被切成十几段。

这个比例本身就说明了采集的实际形态:它不是「给每个病人从头录到尾」,而是「监护仪开着并被采集脚本覆盖到的时段就录下来」。一个病人在 ICU 住五天,可能只被录到其中两段共四个小时,也可能被录成二十段零散的碎片。没有病人编号,你无法把这二十段重新归到一个病人名下。

3.5 伦理与治理

伦理审查由医院药物研究伦理委员会(CEIm)于 2026 年 4 月 30 日通过,批号 HCB/2026/0496,资助方为 Fundació de Recerca Clínic Barcelona – IDIBAPS。发布层面的治理机制是 k 匿名:把整个发布当一个整体块处理,不做时间切分,定义 k 为「包含该信号的记录数」,只有 k 高于阈值的信号才保留。最终全局 k 为 11。

这个设计有一个值得注意的取舍:把时间不分区,意味着「同一个病人的多段记录」不会被分开统计,所以 k 值衡量的是「有多少段记录含这个信号」,而不是「有多少个病人含这个信号」。在患者数只有两三百、记录数四千多的结构下,k 等于 11 在记录层面成立,在患者层面则可能低于 11——这是理解这个库隐私强度时必须自己算的一步。

§4 信号质量:被删掉的那一层,与必须自己补的那一层

4.1 规格表里没有的一列

打开 README、metadata.json、k_anonymity_results.json、CALIBRATION,你会发现没有任何一个文件描述「这段信号好不好」。元数据只有九个字段,全是时长、轨数、体积这类结构化计数。没有任何质量分、没有可用性标记、没有伪差标注。

这一层被删掉,是因为它从来就没被采集过。VitalRecorder 的任务是把监护仪上显示的东西原样搬下来,监护仪本身不做质量评估——Philips IntelliVue 会给出心律失常报警,会给出「导联脱落」「探头未连接」这类技术报警,但这些报警既没有被采集成事件流,也没有被保留(EVENT 通道在 k 匿名过滤里被整类删除)。

于是就有了这个库最核心的使用前提:它给你的是「未经剔除的真实」,而不是「干净的样本」。 这句话有两面。好的一面是,你看到的就是护士当年看到的,包含所有伪差;坏的一面是,你必须自己定义什么叫伪差——而这恰恰是做算法的人最容易各说各话的地方。

4.2 床旁伪差的五种典型形态

监护仪上的伪差与诊断级设备(12 导联心电图机、动态血压记录仪)上的伪差有本质不同:诊断级设备记录时间短、受控、通常有技术人员在场;床旁监护记录时间长、不受控、病人会翻身、护士会操作。下面五类是这个库和所有 ICU 波形库共有的形态。

形态 触发场景 在波形上的表现 对下游的影响
运动伪差 翻身、搬动、躁动、抽搐 基线大幅漂移,心电与血氧同时受扰 心率与血氧假报警;动脉压形态失真
传感器脱落 探头松、电极干 心电变平或大幅噪声,血氧波形消失成平线 产生大量零值或重复值
袖带充气干扰 无创血压周期性测量 若同时有有创动脉线,充气时动脉压波形被机械压迫抬高或压低 短暂的高估或低估,持续数十秒
冲洗与校零 动脉线冲洗、三通操作 动脉压出现方波平台或骤降到零 收缩压被系统性低估
阻尼过度 管路打折、血栓、气泡 收缩峰变钝、重搏切迹消失、脉压变窄 收缩压被系统性低估、舒张压被高估

4.3 为什么阻尼会系统性地偏低估收缩压

这一类值得单独讲,因为它不是随机误差,而是有方向的偏差,且方向可以被预测。

动脉压是通过一根充满生理盐水的管路把压力从血管传到换能器。理想情况下,管路的固有频率远高于心率谐波的最高频率,系统是「欠阻尼」或「临界阻尼」的,波形能忠实再现主动脉压。但实际病房里,管路越长越软、里面混入气泡、三通阀拧了半圈、或者导管尖端贴壁,都会让系统从欠阻尼滑向过阻尼。

过阻尼的后果是:收缩期的压力上升被「拖慢」,峰值被削掉,舒张期的压力下降也被拖慢,谷值被抬高。表现出来就是脉压变窄、波形圆钝、重搏切迹消失。数值上,收缩压偏低、舒张压偏高、平均压大致不变。

这一点对整个数据集有直接后果:SBP 与 DBP 两列数值轨来自监护仪的自动测量,而监护仪的测量算法本身对波形形态敏感。一条阻尼过度的动脉线,监护仪给出的收缩压会稳定偏低十几 mmHg,而这个偏低是持续的、不随时间抖动的、也不随病人状态变化的。用这批数值做训练标签,模型学到的是「监护仪在阻尼状态下的读数」,不是「病人的真实收缩压」。

4.4 为什么在 MIMIC 上训的模型换到别处就失效

把上一段推一步。MIMIC 波形库采集自波士顿一家医院的 ICU,设备型号、管路耗材、护理操作规范都相对固定。在那种数据上训练的模型,会隐式学到一个「这个体系的阻尼分布」。当模型被搬到巴塞罗那、搬到另一家医院、搬到床旁一体机,阻尼分布变了,模型的系统偏差就暴露出来。

这个库恰好提供了一个反例测试场:同样的 Philips 平台,不同的病房、不同的耗材、不同的护理习惯、不同的人群。如果你的血压估计模型在这个库上出现与 MIMIC 上不同方向的偏差,那基本可以确认模型贴合了设备与耗材的物理特性,而非生理。

更隐蔽的一种失效来自数值轨与波形轨的来源错配。这里 SBP 与 DBP 由有创与无创两类测量合并而来,标签里混着两种物理意义不同的东西。一个模型若被要求「从波形预测标签」,而标签中有一部分来自袖带而非动脉线,它就会在两种互不相关的量之间寻找映射,结果是在任何一类上都学不好。§4.6 的案例会把这条推到底。

4.5 你可以自己补的那一层

既然官方不给质量分级,最实用的做法是自己造一层,并且公开它,让别人能复现你的分层。下面是四条低成本、可自动化的判据,全部只依赖波形本身。

判据 计算方法 阈值建议 对应伪差
脉压合理性 一个心动周期内最大值减最小值 小于 15 mmHg 判不可用 阻尼、导管打折
重搏切迹存在性 收缩峰后 100–300 ms 内的二阶导数极小值 不存在则判可疑 阻尼过度
收缩上升时间 从上升起点到峰值的时间 超过 120 ms 判可疑 阻尼过度
基线稳定性 5 秒窗内中位数的标准差 超阈值判运动伪差 翻身、搬动
心电与血氧的搏动一致性 两路逐拍峰值的相关系数 低于 0.6 判其中一路不可靠 探头脱落、心律失常

这五条都不完美,但它们的价值不在准确率,而在于「让分层可复现」。当两篇论文用同一套判据、在同一个库上报告分层后的性能时,结果才有可比性。这也是这个库真正需要的社区动作——它把「定义权」交出去了。

4.6 案例:vitals_00001 里的三小时阻尼段

拿 2.3 解剖过的那段记录做完整例子。它时长约 30 小时,8 路波形齐全,是典型的长时间监测段。在这类长记录里,阻尼状态不是恒定的:护士交班时会检查动脉线、有时会冲洗、有时会给三通阀换个角度,每一次操作都可能改变管路的阻尼特性。

假设研究者想训练一个「从单拍动脉压波形估计收缩压」的模型。原始标签直接取自 SBP 列。那么在这段记录里,模型会看到数百个心动周期,其中一部分处在正常阻尼状态下、标签可靠,另一部分处在过阻尼状态下、标签偏低十几 mmHg。模型无法从波形里区分这两类——因为过阻尼的波形本身看起来「更平滑、更像正常」,它甚至可能把平滑度当成收缩压高的证据。这就是 §4.3 的现象在数据层面的具体投影。

修正的办法是把 §4.5 的上升时间与重搏切迹两条判据先跑一遍,把可疑段剔掉再训。这一步会让可用周期减少,但标签的可信度提高。在 §4.6 的案例上,若剔除后长度下降三成、而验证集误差下降两成,这笔交易就是划算的;具体数字取决于你选哪一段记录、用哪套判据,本文不做推断。

这个案例在 §7.3、§9.2 与附录 D 里还会被用到,作为「无官方质量标注时如何自建分层」的最小完整流程。

4.7 幻觉式的「看起来正常」

有一个反直觉的现象值得单独点出:伪差并不总是「看起来脏」。运动伪差、电极脱落这类伪差,肉眼一看就知道要剔除;但阻尼过度、传感器轻微贴合不良这类伪差,波形看起来极其干净——没有毛刺、没有基线漂移、线条平滑得像教科书示意图。

这类「干净的错误」是最危险的,因为它能通过任何基于「噪声水平」的自动质检。一个只算信噪比的质量指标,会给阻尼段打高分。这也是 §4.5 里那五条判据必须包含形态学判据(上升时间、重搏切迹)而不能只含噪声判据的原因。

§5 怎么把它拿到手并跑起来

5.1 访问路径与门槛

官方访问策略写得很直白:任何人都能获取文件,只要遵守许可条款。这是 PhysioNet 的「开放获取」档,与需要 CITI 培训和数据使用协议的凭据访问档不同。实际操作上,注册 PhysioNet 账号并接受在线协议即可,无需提交研究计划、无需等待审核。

三个入口:

体积是第一个现实门槛。76 GB 的下载量在多数机构的网络环境下需要预留时间与磁盘,解压后还要 80 GB。若只想验证流程,先下 RECORDS 与 metadata.csv(前者百余 KB、后者两百余 KB),挑一段短记录单独下载即可。

5.2 目录结构

barcelona-sicu-signals-1.0.0/
├─ vitals/                     .vital 数据文件,单层平铺,顺序命名
│   vitals_00001.vital
│   vitals_00002.vital
│   (其余略)
├─ RECORDS                     全部记录的路径清单,一行一个
├─ metadata.json               逐记录元数据,JSON 数组
├─ metadata.csv               同上,CSV 形式,便于直接读
├─ k_anonymity_results.json    隐私分析细节:被删信号、别名、k 值、共现一致性
├─ CALIBRATION                 波形轨的显示量程、单位、采样率
├─ LICENSE.txt                 CC BY 4.0 全文
├─ SHA256SUMS.txt              全量校验和
└─ README.md                   包内文档

没有病人目录、没有日期目录、没有病房目录。所有分组信息都在删除之列,平铺是设计选择。

5.3 用 Python 批量读取元数据

import pandas as pd

meta = pd.read_csv('metadata.csv')
print(meta.shape)                       #-- 应是 4349 行 9 列
print(meta['duration_minutes'].describe())

#-- 取超过 6 小时的段,这类长记录是全库最有研究价值的主体
long_rec = meta[meta['duration_minutes'] > 360]
print(len(long_rec), long_rec['duration_minutes'].sum() / 60)

#-- 取同时有最多波形的段
print(meta.sort_values('n_waveform_tracks', ascending=False).head(10))

5.4 用 Windows 或 Linux 命令行做全量校验

如果下载后发现文件损坏,用 SHA256SUMS.txt 逐文件比对,比重新下载整包便宜得多。

#-- 在解压目录内执行,只校验 vitals 下的数据文件
sha256sum -c SHA256SUMS.txt --ignore-missing

5.5 从一段里抽脉搏与心电的对齐关系

心电 500 Hz、动脉压 125 Hz,前者正好是后者的四倍。要把两者对齐,把心电按每 4 点取 1 点降采样后,两条时间轴的采样点序号完全相同。

import numpy as np, vitaldb

vf = vitaldb.VitalFile('vitals/vitals_00001.vital')
ecg = vf.to_numpy(['ECG_WAV'], 1/500)[:, 0]
abp = vf.to_numpy(['BP_WAV'], 1/125)[:, 0]

n = min(len(ecg) // 4, len(abp))
ecg_ds = ecg[:n * 4].reshape(n, 4).mean(axis=1)   #-- 500 Hz 均值降为 125 Hz
abp = abp[:n]

#-- 去除 NaN 后做互相关,峰的位置即脉搏传导时间
m = ~(np.isnan(ecg_ds) | np.isnan(abp))
ecg_z = (ecg_ds[m] - ecg_ds[m].mean()) / ecg_ds[m].std()
abp_z = (abp[m] - abp[m].mean()) / abp[m].std()
corr = np.correlate(abp_z, ecg_z, mode='full')
lag = np.argmax(corr) - (len(ecg_z) - 1)
print('lag (samples @125Hz):', lag)

5.6 用桌面端或浏览器端看图

不想写代码也可以直接看。VitalRecorder 桌面端能打开 .vital 文件,PhysioNet 也托管了浏览器端的 Vital File Viewer,可以把 .vital 拖进去直接画。这条路适合快速判断「一段记录到底有什么」,再决定要不要花时间写代码。

5.7 一条命令列出全库信号清单

官方给了 k_anonymity_results.json,里面 signals 字段含全部被删信号的完整清单与别名映射。想看「哪些东西被删了」,直接读它比去猜快得多。

python3 -c "import json;d=json.load(open('k_anonymity_results.json'));print(len(d['signals']['excluded_by_name']));print(d['signals']['excluded_by_name'])"

§6 与库内条目的关系

6.1 关系图谱

这个库在开放 ICU 数据的谱系里占据一个明确但狭窄的位置:有波形、无病历、单中心、小规模。它与其他条目的关系不是替代,而是互补。

库内条目 与本文的关系 一起用的方式
mimic4wdb 最直接的对标:都有动脉压、心电、呼吸波形,都带完整电子病历 用 MIMIC 训、用巴塞罗那测,做跨院跨设备泛化
mimic3wdb 同期更老的 MIMIC 波形,采样与设备更古老 做三代设备的时间漂移研究
vitaldb 同工具链(VitalRecorder、.vital 格式),手术室场景 用 vitaldb 库统一读取,比较 ICU 与手术室的信号分布
pulsedb 同为 ICU 波形却带逐段清洗标签 拿它的质控流程,套到巴塞罗那的数据上
eicu-crd 多中心但仅数值,无波形 若以数值为目标,可用巴塞罗那验证波形导出数值的准确性
mimic-iv-ecg 心电是 12 导联诊断级,短片段 用诊断级心电做「高质量参照」,衡量床旁心电的形态损失
kingston-icu-af 同为 ICU 床旁心电,规模小、带医师标注 两者合起来做 ICU 房颤检测的小样本外部验证
clinical-trajectory-flow-icu 同为 ICU 时序,但基于电子病历而非波形 在同一人群层面比较波形与病历两种模态的预测力
icu-infection-zigong-fourth 中国 ICU 感染数据,无波形 跨地域人群差异的对照参考
wctecgdb 可穿戴心电,采样与噪声特性截然不同 做可穿戴与床旁的心电质量对照

6.2 检索路径

如果你在条目库里找「能直接拿来做波形算法」的数据,建议的检索顺序是:

第一步,先明确是否需要电子病历。需要,走 MIMIC 家族;不需要,走本文与 VitalDB。
第二步,明确场景是手术室还是 ICU。手术室走 VitalDB;ICU 走本文、mimic4wdb、pulsedb。
第三步,明确是否需要跨机构外部验证。需要,就把本文当外部集、把 MIMIC 当训练集。
第四步,明确是否需要质量标注。需要,优先 pulsedb 与 kingston-icu-af;本文没有,需自建。

§7 质量评估与局限性

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

在看下面五维评分之前,需要先校正一个常见误判:把一个「新发布、尚无下游使用」的库,按「成熟库」的标准打分。

这个库发布于 2026 年 10 月 19 日,官方在「使用说明」里明确写了:作为新发布的资源,它还没有被下游研究使用过,复用潜力与已知局限都只是作者自己的判断。这意味着两件事。第一,任何关于「它好不好用」的结论,目前都只是合理推断,没有实际使用的反馈。第二,评分时的基准应该是「一个刚开放的资源处于什么状态」,而不是「一个用了五年的资源应该达到什么状态」。

另一个需要校正的错觉是关于规模。它与 MIMIC 波形库差了两个数量级,但那不是「做得少」,而是「遵循了不同的采集哲学」——它选的是单中心连续性,不是多中心海量。用规模去否定它,等于用错误的尺子量。正确的量法是问:两千余段有动脉压波形、九百余段有颅内压波形的数据,够不够支撑你要回答的那个问题。

7.1 五维评分

维度 分数 依据
规模 2/5 四千余段、两万余小时,单信号可用样本从数十段的血流动力学参数到四千余段的心率不等
结构 4/5 单目录平铺、九个元数据字段、一个 CSV 一个 JSON,读取门槛极低
标注 1/5 无任何人工标注、无临床标签、无质量分级、无事件流
可获取性 5/5 CC BY 4.0,开放档,注册即可,无凭证门槛
可复现性 4/5 提供 SHA256 校验、完整 README、隐私分析 JSON;扣分在时间戳相对化后跨记录不可复现

DAIMS 视角的补充说明:可获取性与许可是这个库最强的两项,数据血缘清晰(哪个病房、哪台设备、哪个软件、哪个批号,全都写了);最弱的是标注与语义层——没有本体映射,没有变量字典之外的语义描述,43 个信号名的临床含义需要读者自己有重症背景才能准确理解。

7.2 三个结构性的取舍

取舍一:隐私换取临床可用性。 删掉低频通道是隐私决策,但它的代价是切断了这个库与「完整血流动力学画像」之间的联系。中心静脉压与肺动脉压是休克分型的核心,删掉它们等于宣布:这个库不服务休克研究。

取舍二:连续置换多中心。 单中心一年,换来的是同一套设备、同一套流程、同一批人群的纵深;失去的是跨机构的外部有效性。这个取舍与 MIMIC 正好相反。

取舍三:原样置换干净。 不做任何滤波、不做剔除、不做重采样,换来的是「你看到的即当时所见」;失去的是「开箱即用的干净数据」。使用者必须自己承担质控工作,而这一步的工作量往往比建模本身大。

7.3 已知的、可枚举的偏差

偏差 性质 后果 缓解
选择偏差 只有被采集脚本覆盖的时段进了库 不等于病房全貌 报告时说明覆盖是抽样
长度偏差 短段被过度代表,占四分之一强 短样本主导均值 用时长加权或只取长段
人群偏差 外科、创伤、神外、移植术后 内科 ICU 泛化性未验证 明确写出适用人群
设备偏差 全部 Philips IntelliVue 换设备即有域偏移 当外部测试集用
通道偏差 低频通道被删,颅内压只两成 联合分析样本骤减 先查共现矩阵再定任务
来源混同 有创与无创动脉压合并 标签语义不纯 用 §4.5 判据做来源分离
时间偏差 相对时间,跨记录不可对齐 无法做病房级时序 只在单段内讨论相位

前五条来自官方自述或结构事实,第六条与第七条是使用者必须自己处理的后果。§4.6 的案例正是第六条的具体体现。

7.4 外部验证矩阵

验证方向 可行性 说明
在 MIMIC 上训、在此库上测 高 同量纲、同心电采样率,最直接的跨院测试
在此库上训、在 VitalDB 上测 中 场景不同(ICU 对手术室),需先对齐轨道名
在此库内部做患者独立划分 低 无患者标识,只能按记录划分,可能同一病人跨训练与测试
与 eICU 数值对照 中 需先把波形导出为逐拍数值再比对
与诊断级心电对照 中 参照库需有形态学标注,本库无
跨年份稳定性 不可行 只有十二个月,且无绝对时间

第四列里最值得注意的是「患者独立划分」这一行的低可行性。这是所有无患者标识的波形库面临的共同困境:随机按记录划分训练测试集,很可能会把同一个病人的两段记录分到两边,导致测试集指标虚高。

7.5 它为何能持续:因为它是「能力证明」而不是「数据产品」

多数数据集的生命周期依赖于下游引用量:有人用、有人引,才有动力维护。这个库的维护逻辑不同——它的存续依赖于「发布方是否能持续证明自己有能力做这类采集」。它在论文与文档里反复强调的,是去中心化架构、串口直连、原生采样率、k 匿名流程,这些全都是「工程能力」的展示,而不仅仅是「有多少数据」的展示。

这条逻辑解释了它为什么愿意把七成以上的原始通道删掉:删掉之后剩下的数据仍然能证明「我们能采、能存、能匿名化」,而保留全部通道反而会让人质疑「你们敢不敢放」。也解释了它为什么选择 CC BY 4.0 而不是凭据访问:开放本身就是最强的能力背书。

§8 生态位与历史

8.1 一条被讲了二十年的老问题

重症波形数据公开难,不是技术问题,是治理问题。这个问题在 PhysioNet 的历史上被反复提出:2000 年 PhysioNet 建立时,公开的主要是生理信号研究数据;2016 年 MIMIC-III 开放时,讨论的焦点是「去标识是否足够」;2020 年之后,焦点转向「跨机构联邦学习能否绕开数据共享」。这个库站在最新一代的答案上:不做联邦,做激进删除。

8.2 欧洲的空位

官方文档明确写了动机之一:欧洲可公开获取的 ICU 数据库多以临床数据和时间聚合参数为主,而不是原始波形。这句话是这个库的定位声明——它填的是欧洲在「波形级公开数据」上的空白。欧洲有大量 ICU 数据(如荷兰、丹麦的多中心重症数据库),但大多以结构化变量形式发布,波形极少公开。

8.3 工具链的成熟让这件事变得可行

这个库能出现,有一个前提条件:采集与读取工具链在 2018 年之后成熟了。VitalRecorder 让「在床旁电脑上跑一个程序把数据存下来」变成了不需要厂商配合的事;.vital 格式与 vitaldb 库让「存下来的数据能被别人读」变成了几行 Python;Vital File Web Viewer 让「不写代码也能看」成为可能。这个库的作者明确致谢了首尔大学医院 VitalLab 团队的技术支持。

8.4 它在光谱上的位置

把这些库排成一条光谱,一端是「大而全、带病历、需申请」的 MIMIC,另一端是「小而专、无病历、完全开放」的本库。中间是 VitalDB(大、带手术记录、需申请)、pulsedb(大、带清洗标签、需申请)。选择哪一端,取决于你的研究是否必须依赖病历。

§9 使用指引

9.1 三种角色的路径

算法研究者。 第一步下 metadata.csv 筛选长记录,第二步挑 5 至 10 段做肉眼检查,第三步实现 §4.5 判据,第四步才进入建模。跳过第三步的模型,会在阻尼段上系统性偏差。

临床研究者。 先确认你的问题是否需要病历。需要,这个库帮不上;不需要,例如「术后低血压的波形形态学特征」,可以把它当作波形层面的描述性研究对象。注意没有任何结局变量,所以不能做预后。

工程与设备研究者。 这是它最独特的用途:同一台设备、同一个病房、连续一年,可以用来评估信号质量随时间与操作的变化,也可以用来做设备侧算法的压力测试。

9.2 一条最短的可用流程

下面这段代码把「下载清单、筛长记录、读一段、抽动脉压、做形态判据」串成一条线,跑通它大约只需要下载一段文件。

import pandas as pd, numpy as np, vitaldb

meta = pd.read_csv('metadata.csv')
cand = meta[(meta['duration_minutes'] > 360) & (meta['n_waveform_tracks'] >= 6)]
print(len(cand), 'candidate long recordings')

sid = int(cand.iloc[0]['session_id'])
path = f'vitals/vitals_{sid:05d}.vital'
vf = vitaldb.VitalFile(path)
tracks = vf.get_track_names()
print(sid, tracks)

abp = vf.to_numpy(['BP_WAV'], 1/125)[:, 0] if 'BP_WAV' in tracks else None
if abp is not None:
    ok = ~np.isnan(abp)
    seg = abp[ok][:125 * 60]                 #-- 取第一分钟
    print('pulse pressure approx:', np.nanmax(seg) - np.nanmin(seg))
    print('usable points:', ok.sum(), '/', len(abp))

这就是 §4.6 的案例里描述的那条流程的最小可运行版本。判据本身(上升时间、重搏切迹)需要在此之上加信号处理,但数据通路已经打通。

9.3 引用方式

正文引用建议使用官方 BibTeX 实体,包含全部十四位作者、版本号与 DOI。若只提一次,可以用简写并给出 DOI。

Marrero Garcia R, Cayuela Perez R, Muñoz Rojas G, Carramiñana A, Jacas A,
Capdevila A, Alandes A, Vallverdú Martínez J, Zattera L, Barbeta E,
Mercadal J, Peñafiel Macías PA, Borrat Frigola X, Ferrando C.
Continuous high-density physiological signals from a surgical intensive
care unit at Hospital Clínic de Barcelona (version 1.0.0). PhysioNet. 2026.
doi:10.13026/hgz9-s056

同时按 PhysioNet 惯例附上平台引用(Pollard 等 2026 年发表于 Nature Health 的平台文献)。CC BY 4.0 要求署名,不要求同样方式共享,商业使用可在署名后自由进行。

§10 AI 使用声明

项 说明
生成工具 大语言模型辅助起草,人工逐节核对
事实来源 仅限 PhysioNet 项目主页、包内 README、metadata.csv、k_anonymity_results.json、CALIBRATION
数字核对 关键规模数字与官方页面逐条对照,分布统计由官方随附元数据直接计算
未核实项 未找到该库对应的期刊论文,官方页面称尚无下游使用
推断标记 涉及机制解释(阻尼、伪差、失效模式)均为通用生理与工程原理,非本库独有发现
引用责任 引用前请回查 DOI 与版本号
更新机制 官方发布新版本后本页陈述可能过时
禁止用途 不得将本文作为临床决策依据

常见误读(避坑清单)

说法 实际 证据
「这是欧洲版 MIMIC 波形库」 无病历绑定、无患者标识、规模小两个数量级 官方 README 的患者规模一栏为估计两百至三百
「有 43 类信号,所以很全」 43 类是并集,最少的只有 11 段 k_anonymity_results.json 的 prevalence 列表
「心电是 12 导联」 单条 ECG_WAV,导联随记录变,aVR/aVL/aVF 已删 别名映射与 excluded_by_name 清单
「动脉压就是动脉线上的压」 有创与无创合并为同一组标签 README 的别名映射段
「高密度就是连续覆盖」 覆盖是间断的,官方明言非穷尽 Usage Notes 的 Limitations 第一条
「有 k 匿名就绝对安全」 k 按记录计而非按患者计 README 的 k 匿名分析段
「采样率等于 MIMIC」 呼吸与二氧化碳是 62.5 Hz,比 MIMIC 低 官方采样率表
「时间戳能还原到真实时钟」 全部时间相对各自起点,时区固定 UTC README 的匿名化条目
「可以直接拿来做结局预测」 没有任何结局变量 元数据九字段,无临床列
「有质量标注可以筛」 无质量分级、无事件流 包内文件清单

FAQ

Q1:它和 MIMIC-IV 波形库最本质的区别是什么?
规模差两个数量级,通道集合不同,绑定关系不同。MIMIC 绑定完整病历,这里只有波形。它的独特价值是单中心连续一年、原样采样。

Q2:为什么没有中心静脉压和肺动脉压?
官方说明是按 k 匿名阈值删除低频通道。被删清单写在 k_anonymity_results.json 的 excluded_by_name 里,含 CVP、PAP、RAP、AOP、LAP、体温、四项成串刺激与麻醉气体。

Q3:我能不能只用几段,不下整个包?
可以。RECORDS 列出全部路径,单文件可单独下载。先下 metadata.csv 按条件筛,再挑几段下,是最省带宽的路径。

Q4:数据里有没有任何病人信息?
没有。连年龄、性别、诊断都没有,只有伪名化的记录编号与相对时间。

Q5:k 等于 11 是什么意思?
发布时要求每个保留的信号至少在 11 段记录中出现。最低的是颅内压的收缩与舒张数值,恰好各 11 段。

Q6:动脉压的来源怎么区分?
标签已经合并,无法从标签区分。只能从波形形态判断:有创动脉线有清晰的搏动波形与重搏切迹,袖带只有周期性数值。有 BP_WAV 的段更可能是有创的。

Q7:能用它做房颤检测吗?
可以。心电波形覆盖九成半的记录,且是 500 Hz。但没有任何心律标签,需要自己标注或从 RR 间期规律性做弱监督。

Q8:颅内压数据够做什么?
939 段波形、835 段有平均压数值,可做单通道形态学与压力波传播分析。没有任何格拉斯哥评分或影像结果,做不了预后。

Q9:呼吸机波形为什么这么少?
只有 145 段同时有流量与气道压。官方说明呼吸机波形依赖机型与其集成方式,其出现率不能解读为「通气病人的比例」。

Q10:为什么一段记录会突然结束?
采集软件在共享会话中自动启动,会话被退出、监护仪重连、探头被拔,都会让一段结束。多数短记录属于这类工程性中断。

Q11:能不能还原一个病人的完整住院过程?
不能。没有患者标识,且时间戳相对各自起点,跨记录的连接需要外部信息。

Q12:商业使用可以吗?
可以。CC BY 4.0 允许商用,只需署名并注明许可。

Q13:多中心的重症波形库有哪些可比项?
MIMIC 系列在波士顿,VitalDB 在首尔,本文在巴塞罗那,三者场景分别是综合 ICU、手术室、外科 ICU。跨库使用时,最需要统一的是轨道命名、采样率与时间基准这三件事。

Q14:记录被切得很碎,怎么粘回去?
粘不回去。没有患者标识,也没有绝对时间,跨记录没有可用的连接键。能做的只是在单段内部做分析,或者在假设「20 分钟内的相邻段属于同一病人」的前提下,按官方合并规则反向推。

Q15:数值轨为什么会有大量空洞?
数值是监护仪按 1 Hz 刷新的,但只有当该参数在屏幕上被激活时才输出。若某个参数在记录中途被关闭,对应列就会在那一时段全部为空。这不是丢包,是设备行为。

Q16:怎么判断某段是不是真的在外科 ICU 里采的?
无法从数据本身判断。没有任何位置字段,只能依赖官方对采集场所的整体描述,把全库当作一个病房的样本处理。

表中横纵读法:几组容易被忽略的交叉

把 §2.2 的 43 行按域重新排一次,会看到几组与临床常识相悖的交叉,它们直接决定你能做什么任务。

交叉 现象 能推出的任务边界
心电与动脉压 心电覆盖九成半,动脉压波形只覆盖一半 心电单独可做;心电与动脉压联合的样本减半
动脉压波形与呼吸机波形 后者只出现一百四十余段 用动脉压推每搏变异度几乎无法与呼吸机参数对齐
颅内压波形与脑电 前者九百余段,后者三百余段 神经重症的「压力与脑电」联合研究样本仅数百段
二氧化碳波形与呼吸机 二氧化碳一千余段,呼吸机一百余段 二氧化碳多数来自未接呼吸机或未集成的设备
温度与血流动力学 体温不足百段,心输出量三十余段 热稀释类研究在这个库上不成立
血氧数值与血氧波形 数值近全覆盖,波形也近全覆盖 血氧是少数可以同时做数值与波形的通道

这几行的共同含义:43 这个数字是并集,真正的交集要靠交叉表算。任何以「多模态联合」为前提的研究,都必须先算好交集样本量,再决定值不值得投入。官方在 k_anonymity_results.json 里给了一份共现(Jaccard)一致性报告,取前四十对信号,可以直接读出哪些通道是「绑定出现」的:呼吸机的四个基本参数两两之间 Jaccard 为 1,意味着只要一台机器被集成,这四个数就同时有或同时无;二氧化碳的两个数值与呼气流速、吸气最小流速也是 Jaccard 为 1 的一组。这种「全或无」的共现结构,说明数据的稀疏不是随机的,而是由设备集成方式决定的。它进一步强化了前面那句话:不能把「某信号出现率低」解释为「这类病人少」,它更可能意味着「这台设备没接进采集链路」。

三类使用者的选择树

下面这棵树用来做三十秒决策,不作为独立一节,只作对照。

你的问题 分支
需要结局或诊断标签吗 是,转向 MIMIC 家族;否,继续
需要中心静脉压或肺动脉压吗 是,放弃本库;否,继续
需要 12 导联心电吗 是,转向 MIMIC-IV-ECG;否,继续
需要跨机构外部验证吗 是,把本库当测试集;否,可当训练集
需要长时程连续段吗 是,只取超过六小时的九百余段
你的模型对标签来源敏感吗 是,先做有创无创分离;否,可用合并标签但要报告
你能接受自己写质控吗 能,本库可用;不能,优先挑带质控流程的库

三个易被忽略的操作细节

细节一:时间轴的单位不是秒,是各记录自己的起点。 vitaldb 的 to_pandas 默认返回的是采样点索引,return_timestamp 才给时间戳,而且这个时间戳是从该段起点算起的相对值。如果你把两段的数组直接拼接,得到的是两段各自的时间轴首尾相接,中间可能隔着二十小时的空白,看起来却像是连续的。

细节二:波形轨与数值轨的缺失模式不同。 波形轨在探头脱落时会输出接近零或满量程的常值,而不是缺失值;数值轨在参数被关闭时会输出缺失值。这两种「没有有效信号」在数组里长得完全不一样,清理时不能用同一套判据。

细节三:CALIBRATION 是显示量程,不是物理范围。 它给出的是监护仪画图时用的纵轴区间,用来做快速可视化很方便,但若拿它当裁剪阈值,会把真实的极端值截掉。比如动脉压波形写 0 到 200 mmHg,而真实动脉线在极端情况下可能接近零或超过 200。

术语表

术语 含义
.vital VitalDB 定义的压缩二进制格式,波形与数值轨混存,32 位浮点物理单位
VitalRecorder 开源床旁数据采集软件,通过串口读监护仪输出
VitalFile vitaldb 库里代表一段 .vital 文件的对象
轨道(track) 文件内的一个信号通道,可波形可数值
波形轨 连续采样的信号,如心电、动脉压
数值轨 监护仪每秒刷新的读数,如心率、收缩压
BP_WAV 有创动脉压波形,125 Hz
PLETH 体积描记波形,血氧的原始信号
CO2 二氧化碳波形,62.5 Hz
ICP 颅内压波形,125 Hz
AWP_WAV 气道压力波形,来自呼吸机
FLOW_WAV 气道流量波形,来自呼吸机
ECG_WAV 心电波形,500 Hz,导联随记录变化
阻尼 管路系统对压力变化的阻碍,过阻尼会削峰
重搏切迹 动脉压波形收缩峰后的小凹陷,阻尼状态的重要指征
脉压 收缩压与舒张压之差
每搏变异度 呼吸周期内脉压的变异,容量反应性指标
k 匿名 要求每条记录在某属性上与至少 k-1 条不可区分
别名归一 把厂家变体名映射到统一规范名
相对时间 以各记录起点为零的时间轴
患者期 一次住院期间的一个监测阶段,官方用于估计人数
OD 官方未在文档中明示该缩写,本文不使用
CC BY 4.0 知识共享署名 4.0,可商用需署名
PhysioNet 由 MIT 维护的生物医学信号开放平台
UCIQ 巴塞罗那医院诊所外科重症监护病房的本地简称
SQI 信号质量指数,业界用于量化信号可用性

附录 A:核心数字核对表

项 值 来源 来源层级
记录数 4,349 项目主页摘要、README 官方页面
有效记录数 4,348 k_anonymity_results.json 官方文件
监护总时长 约 20,479 小时 README 统计表 官方页面
解压体积 80.2 GB 文件页 官方页面
ZIP 体积 76.1 GB 项目主页 官方页面
信号类目 43(9 波形 + 34 数值) 摘要与 README 官方页面
心电采样率 500 Hz 采样率表、CALIBRATION 官方页面
动脉压采样率 125 Hz 采样率表、CALIBRATION 官方页面
呼吸与二氧化碳采样率 62.5 Hz 采样率表 官方页面
数值轨刷新率 1 Hz 采样率表 官方页面
全局 k 11 README、k 匿名 JSON 官方页面
长度中位数 92.5 分钟 metadata.csv 官方文件
轨道数中位数 13 metadata.csv 官方文件
患者规模 估计 200–300 期 摘要 官方页面
动脉压波形覆盖 49.4% prevalence 列表 官方文件
颅内压波形覆盖 21.6% prevalence 列表 官方文件
许可 CC BY 4.0 页面许可证栏 官方页面
伦理批号 HCB/2026/0496 伦理段 官方页面

附录 B:数字的来源分层

第一层:官方页面与官方文件。 记录数、总时长、体积、类目数、采样率、k 值、许可、伦理批号、各信号覆盖数,全部来自项目主页、README.md、metadata.csv、k_anonymity_results.json、CALIBRATION。这些是可直接引用的一手数字。

第二层:由官方元数据直接计算的派生量。 长度分位、时长区间计数、超过六小时的段数、轨道数分位,均由 metadata.csv 全量计算得出。算法公开,数字可复算,但属于「从一手数据算出」而非「官方声明」。

第三层:未核实或推断。 官方原文中「单床覆盖率约一成半」为本文用总时长除以 13 床乘一年的床时所得,属于量级估算,非官方数字。库对应的期刊论文未检索到,官方亦自述尚无下游使用。阻尼与伪差机制的解释属于通用生理工程原理,不是本库的独有发现。

附录 C:完整参考文献

  1. Marrero Garcia R, Cayuela Perez R, Muñoz Rojas G, Carramiñana A, Jacas A, Capdevila A, Alandes A, Vallverdú Martínez J, Zattera L, Barbeta E, Mercadal J, Peñafiel Macías PA, Borrat Frigola X, Ferrando C. Continuous high-density physiological signals from a surgical intensive care unit at Hospital Clínic de Barcelona (version 1.0.0). PhysioNet. 2026. doi:10.13026/hgz9-s056
  2. Pollard T, Moody BE, Lehman LH, et al. PhysioNet as a global platform for biomedical research. Nature Health. 2026:792–795. doi:10.1038/s44360-026-00096-z
  3. Lee HC, Jung CW. VitalRecorder — a free research tool for automatic recording of high-fidelity clinical data in integrated operating room environments. Sci Rep. 2018;8:1688.
  4. Lee HC, Park Y, Jang J, Jung CW. VitalDB, a high-fidelity multi-parameter vital signs database in surgical patients. Sci Data. 2022;9:279.
  5. Johnson AEW, Bulgarelli L, Shen L, et al. MIMIC-IV, a freely accessible electronic health record dataset. Sci Data. 2023;10:1.
  6. Sauer CM, Dam TA, Celi LA, et al. Systematic review and comparison of publicly available ICU data sets — a decision guide for clinicians and data scientists. Crit Care Med. 2022;50(6):e581–e588.
  7. Goldberger AL, Amaral LAN, Glass L, et al. PhysioBank, PhysioToolkit, and PhysioNet: components of a new research resource for complex physiologic signals. Circulation. 2000;101:e215–e220.
  8. De Georgia MA, Kaffashi F, Jacono FJ, Loparo KA. Information technology in critical care: review of monitoring and data acquisition systems for patient care and research. ScientificWorldJournal. 2015:727694.
  9. Task Force of the ESC and NASPE. Heart rate variability: standards of measurement, physiological interpretation and use. Circulation. 1996;93(5):1043–1065.
  10. Lee ER, Lee HC. Vital File Web Viewer: a browser-based tool for viewing high-resolution vital signs data (version 1.0.0). PhysioNet. 2025. doi:10.13026/3642-e205

附录 D:任务代码

任务一:全库长度画像。 用来决定要不要为某个研究只取长记录。

import pandas as pd

meta = pd.read_csv('metadata.csv')
meta['h'] = meta['duration_minutes'] / 60
bins = [0, 1/6, 0.5, 1, 6, 24, 1e9]
labels = ['<10 分', '10–30 分', '30–60 分', '1–6 时', '6–24 时', '>24 时']
print(pd.cut(meta['h'], bins=bins, labels=labels).value_counts())
print('total hours:', meta['h'].sum())

任务二:通道共现矩阵。 用来判断某个联合分析实际能拿到多少段。

import json, pandas as pd

k = json.load(open('k_anonymity_results.json'))
prev = pd.DataFrame(k['prevalence'])
prev = prev.sort_values('file_count', ascending=False)
prev['per_1000'] = (prev['file_count'] / 4348 * 1000).round(1)
print(prev.head(20))

任务三:单段动脉压形态判据。 用来实现 §4.5 的最小版本。

import numpy as np, vitaldb

vf = vitaldb.VitalFile('vitals/vitals_00001.vital')
abp = vf.to_numpy(['BP_WAV'], 1/125)[:, 0]
abp = abp[~np.isnan(abp)][:125 * 600]

def beats(x, fs=125):
    hi = np.percentile(x, 90)
    thr = (np.percentile(x, 5) + hi) / 2
    above = x > thr
    starts = np.where(np.diff(above.astype(int)) == 1)[0]
    return [(s, e) for s, e in zip(starts, starts[1:]) if 20 < e - s < 150]

segs = beats(abp)
if segs:
    rt = np.array([np.argmax(abp[s:e]) / 125 for s, e in segs])
    pp = np.array([abp[s:e].max() - abp[s:e].min() for s, e in segs])
    print('beats', len(segs), 'rise time med', np.median(rt), 'PP med', np.median(pp))
    print('suspected damping:', np.sum(rt > 0.12))

附录 E:如果只记五件事

  1. 它给了四千余段、约两万小时的床旁原始波形,心电 500 Hz、动脉压 125 Hz,原样未降采样。
  2. 它不给任何临床变量、不给患者标识、不给时间锚点,只给波形与计数。
  3. 它把中心静脉压、肺动脉压、体温、麻醉气体整类删除,为了通过 k 匿名(全局 k 为 11)。
  4. 它没有质量分级,阻尼、运动、脱落这些伪差必须在你的流程里自己处理。
  5. 许可极宽松(CC BY 4.0),最适合当跨院跨设备的外部测试集,不适合当结局预测的训练集。

编辑说明

本页于 2026 年 10 月 27 日核对完成。核对方式为直接访问 PhysioNet 项目主页与 1.0.0 版文件目录,下载并解析 README.md、metadata.csv、k_anonymity_results.json、CALIBRATION、RECORDS 五个非数据文件,未下载任何 .vital 波形文件。分布类统计(分位数、区间计数)由官方 metadata.csv 全量计算,文中已标明来源层级。未能核实的部分:该库对应的期刊论文,Europe PMC 检索未返回直接结果,官方页面亦自述尚无下游使用;阻尼与伪差的机制说明为通用原理,不作为本库的独有结论。任何涉及患者数量的表述均为官方估计值,不代表精确计数。本页不构成临床建议。


相关数据集导航

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

  • sicdb — 共享标签:生理信号 / 重症监护 / 电子健康记录
  • mimicdb — 共享标签:生理信号 / 重症监护
  • alott — 共享标签:生理信号 / 重症监护 / 电子健康记录
  • mghdb — 共享标签:生理信号 / 重症监护 / 电子健康记录
  • mimic3wdb — 共享标签:生理信号 / 电子健康记录
  • mimic3wdb-matched — 共享标签:生理信号 / 电子健康记录
  • mimic4wdb — 共享标签:生理信号 / 电子健康记录
  • zhejiang-ehr-critical-care — 共享标签:重症监护 / 电子健康记录
  • pulsedb — 共享标签:生理信号 / 重症监护 / 电子健康记录
  • ctu-uhb-ctg — 共享标签:生理信号 / 重症监护 / 电子健康记录

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

返回 AI-Ready 数据集