三十八例早产藏进三百条子宫肌电 — TPEHG 数据库

300 次妊娠 / 各一条 30 分钟 / 20 赫兹三路差分

来源 https://physionet.org/content/tpehgdb/发布时间: 2026-10-28最后更新: 2026-10-28 阅读 14
三十八例早产藏进三百条子宫肌电 — TPEHG 数据库

信息速览

数据集名称三十八例早产藏进三百条子宫肌电 — TPEHG 数据库
数据类型时序信号,波形,元数据,文献引用
规模300 名孕妇(300 次妊娠,每次妊娠一条记录)
接入方式https://physionet.org/content/tpehgdb/
AI 就绪度

TPEHG 数据库里没有心跳。它记录的是孕妇腹壁上四枚电极之间那点微弱的电位差,来自子宫平滑肌,频率低到一个心跳的间隔里能装下好几个周期。整库三百条记录,每条半小时,对应三百次妊娠,其中三十八次以早产收场。想找胎儿心电图的人打开它会失望;想找一份「孕期电生理信号到分娩结局」的干净对照表的人,会发现它把能省的变量都省掉了。

这份数据的年代感很强。采集发生在 1997 到 2005 年的卢布尔雅那,公开却要等到 2010 年 11 月,此后十多年它一直是早产预测文献里被反复调用的那个基线。规模放在今天不算大,体积两百多兆,一条命令就能拉完;结构却极其规整——固定时长、固定采样率、固定通道数、固定滤波档位,连文件名都是连号的。规整到这个程度,说明它在设计时就已经想清楚要回答什么问题。

它回答的问题只有一个:给定孕某一周腹壁上的半小时子宫电活动,这一次妊娠会不会在三十七周之前结束。这个问题在临床上很难,在数据上却被压缩成一个二分类。本篇按官方页面、随库附带的头文件与 2008 年那篇方法学论文来写,凡官方未说明处一律标为未说明。一屏速览见下表。

维度 内容
全名 Term-Preterm ElectroHysteroGram Database
缩写 TPEHG DB,逐字母为 Term-Preterm Electro-Hystero-Gram
数据性质 孕期腹壁子宫肌电(uterine EMG),非胎心电、非心电
采集机构 卢布尔雅那大学医学中心 妇产科
采集年份 1997 至 2005 年,常规产检时顺带记录
贡献者 Franc Jager,卢布尔雅那大学计算机与信息科学学院
发布平台 PhysioNet,v1.0.0 于 2010 年 11 月,v1.0.1 于 2012 年 8 月 21 日
规模 300 次妊娠,每次一条记录,共 300 条
结局分组 足月 262 例,早产 38 例
孕周分层 孕 26 周前 162 条,孕 26 周及以后 138 条
电极与通道 脐周四枚电极,取三路差分
采样与量化 20 赫兹,16 位,量程正负 2.5 毫伏
单条时长 官方称 30 分钟
滤波 原始一路,另加三档四阶巴特沃斯带通,共十二路
标注 仅结局二分标签,无事件级标注
格式与体积 WFDB,解压后 245.4 MB
许可与标识 ODC Attribution 1.0,DOI 10.13026/C2FW2V

§1 它要解决的具体麻烦

1.1 一句话结论:它把「会不会早产」压缩成一个可以用半小时电信号去猜的二分题

早产预测的困难不在算法,而在信号太弱、太晚、太混杂。宫缩出现时往往已来不及干预,宫颈长度要靠超声,胎儿纤连蛋白要靠取分泌物,而子宫肌电是少数能在症状出现之前就从体表无创拿到的生理量。它的物理基础很朴素:平滑肌细胞兴奋时产生动作电位,众多细胞同步放电形成的电流穿过腹壁,被表面电极拾到。早产倾向的子宫,其电活动的同步性与频谱分布被认为与正常妊娠不同。

TPEHG 把这个假设做成了一份可以反复检验的表格。它不记宫缩的起止,也不标定波形,而是给每次妊娠留半小时原始电位,再附上一个几个月后才揭晓的结局。牺牲时间分辨率,换来格式统一:三百条记录通道编号相同、采样率相同、时长相同,一行代码批量读入。

它想回答的 它给的材料 它没给的
这一次妊娠会不会早产 三路差分电位,半小时 记录之后到分娩之间的任何随访
电活动在孕早中期能否预示结局 孕 26 周前后的两个采集窗口 同一个人的重复测量
哪种信号处理方式更能分开两类 原始信号加三档滤波 作者当时试过的全部算法结果

包里同时给了未滤波信号与三档滤波结果,等于把预处理的选择权连同参考答案一起交出。想省事就用零点三至三赫兹那一档,想自己搭流程就从原始信号开始。

包里给的 使用者可以怎么用 对应的取舍
原始三路信号 自己设计预处理与特征 自由度高,复现成本也高
三档滤波后的九路 直接进入频谱类分析 省事,但被作者的档位选择限定
三份特征表 跳过信号处理直接跑分类 门槛最低,信息也最薄
组别汇总表 快速按记录名取标签 只有四个分组列,无其他信息

1.2 三条常见的错误期待

常见期待 实际情况 后果
以为这是胎心电或胎心监护数据 记录的是子宫肌电,频段在 4 赫兹以下 拿去提取胎心率会得到无意义的曲线
以为三百条来自三百次不同孕周的采样 每次妊娠只有一条,孕周集中在两个窗口 想画孕周连续曲线时数据会断成两段
以为有宫缩标注可以训练事件检测 官方未提供任何事件级标注 监督式宫缩检测无从下手

第一条最常发生,因为库名里的 HysteroGram 对不熟悉产科电生理的人并不直观,而 PhysioNet 上另有一批名字相近的胎心电库。判断方法很简单:看采样率。二十赫兹的记录不可能是心电,QRS 主频在十几到几十赫兹。

错误期待 一分钟自查法 判断依据
这是胎心电 看采样率是否高于 250 赫兹 二十赫兹不足以描出 QRS
有宫缩标注 看目录里有无标注类文件 只有 hea、dat、smr、fvl
三百人各有多次记录 看记录名与妊娠数是否一一对应 官方写明每次妊娠一条
覆盖整个孕期 看记录时孕周的取值范围 集中在两个产检节点

第二条属于设计误解。库的结构是横断面的,每个受试者只出现一次,因此它支持组间比较,不支持个体追踪。两个采集窗口也不是随机随访点,而是产检流程里本来就有的两个节点。

第三条的落差最大。临床意义上的宫缩监测需要压力计或宫内导管,这份数据只有电信号,既无同步压力通道,也无宫缩与静息的标注。以宫缩检测为名的用法,都是使用者在电信号上自行定义阈值。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
直接跑通早产分类流程的真实数据 300 条统一格式记录,附四类现成特征 够,且最省事
研究滤波档位对判别力的影响 原始加三档滤波并列存放 够,这正是它的设计初衷
做子宫肌电的信号质量与伪迹研究 半小时连续记录 部分够,缺同步参考通道
训练一个端到端的深度模型 三百条、阳性三十八例 不够,容量远小于需求
做宫缩事件的检测或分割 无事件标注、无压力通道 不够
分析胎心或母胎心电分离 频段与采样率都不支持 完全不够
研究引产、剖宫产或产程异常 这三类被明确排除 不够,应改用同域引产库
报告跨人群、跨种族的泛化性能 单一中心、单一地区 不够

表格前两行是它真正的强项,也最容易被忽视。多数人拿到数据就训练模型,而这份数据最合适的用法是先跑一遍已有特征表,看能否复现论文里那几个显著性水平。

想得到的东西 它能不能给 替代来源
一个有结局标签的公开基线 能 同域内少见替代
一份可复现的特征表 能 需自行重算才能确认口径
宫缩的机械强度 不能 需压力计或宫内导管
胎儿心脏的电活动 不能 需千赫兹级心电记录
医源性分娩的样本 不能 同域引产与剖宫产库

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

你的处境 它能帮你什么 下一步该做什么
刚接触子宫肌电,想先看看信号长什么样 三十行代码就能读出三路波形 先对比一条足月与一条早产记录
手上有一个新特征,想找公开基线对比 四类经典特征已算好并公开 用同批记录同档滤波重算,再比
要给早产预测模型做预训练 三百条记录可做自监督语料 预训练后必须换外部队列做下游验证
在写综述,需要一份有结局标签的公开库 结局、孕周、临床字段齐全 引用 2008 年论文而非仅引平台页
做可穿戴腹部电生理的设备验证 电极位置与差分方式有明确记载 注意时长与采样率要与自研设备对齐
想研究宫缩的时空传播 只有三路差分,无电极阵列 改用多电极阵列库
需要产时监护数据 全部为产前门诊记录 改用产时胎心监护或胎头电极库

第三行需要展开。把它当预训练语料是可行的,因为信号长度够、格式统一、无标签也能用;但它的分布很窄:孕中晚期、单胎、少并发症、自然临产。这样窄的分布上预训练出来的表征,迁移到产时或高危场景时未必成立。

1.5 一句话判断

它是一份把半小时腹壁电与几个月后的分娩结局钉在一起的对照表;当你要问信号里有没有信息时,它是最干脆的答案,当你要问这个信息能不能推广时,它一句话也答不了。

这个判断的支撑 具体依据
有信息 2008 年论文报告多组组间差异达到 p 小于 0.05
不能推广 单一中心、单一族群、排除两类分娩方式
干脆 格式统一、附特征表、全库两百多兆

1.6 不适合谁:四条边界

边界 说明
不适合任何胎心相关的任务 记录对象是子宫肌电,采样二十赫兹,胎心成分不在可用频段内
不适合事件级监督学习 无宫缩标注、无压力通道、无逐段标签
不适合引产与剖宫产研究 这两类病例在入库时被明确剔除
不适合小样本之外的统计推断 阳性仅三十八例,任何亚组再切都会掉到个位数
软边界 说明
不适合做算法绝对性能排名 各论文的预处理与划分方式不同,横向比较意义有限
不适合做跨设备可比性研究 只有一套采集设备,无设备间对照

§2 数据构成与规格

2.1 一次采集的物理布置

采集时在孕妇腹部贴四枚表面电极,位置以脐为原点对称展开:左上、右上、右下、左下各一枚,间距均为三点五厘米。整个电极组跨度不超过七厘米,目的不是覆盖整个子宫,而是取一小块腹壁上的电位梯度。四枚电极两两相减,得到三路差分信号。

电极 位置 参与构成的通道
E1 脐左上 3.5 厘米 S1 的负极
E2 脐右上 3.5 厘米 S1 的正极、S2 的正极
E3 脐右下 3.5 厘米 S2 的负极、S3 的负极
E4 脐左下 3.5 厘米 S3 的正极
通道 定义 几何含义
S1 E2 减 E1 横向,脐上水平
S2 E2 减 E3 纵向,右侧垂直
S3 E4 减 E3 横向,脐下水平

三路里两横一纵,这个几何关系决定了它们看到的电活动并不等价。子宫肌电在妊娠中晚期的主活动方向偏纵向,纵向通道往往承载更多与宫缩相关的成分;横向通道更像在同一水平面取梯度,对共模的远处干扰不敏感。差分还压掉了两枚电极共同拾到的远场干扰,比如心电——这也是为什么记录里母体心电常以小幅规则尖峰残留,而不占据主导。

2.2 记录字典

每条记录由一对文件构成,头文件是纯文本,逐行描述通道;数据文件是二进制,按通道顺序紧密排列。头文件末尾的注释段承载全部临床信息。

字段 位置 含义 取值示例
记录名 头文件首行 记录编号 tpehg1021
信号路数 头文件首行 固定十二路 12
采样率 头文件首行 每秒采样点数 20.000000
采样点数 头文件首行 每路总点数 35260
数据文件名 每路一行 十二路共用同一文件 tpehg1021.dat
存储格式 每路一行 16 表示 16 位整型 16
增益 每路一行 每毫伏对应数字量 13107/mV
基线 每路一行 零电位对应数字量 0
通道名 每路一行 通道序号或带滤波标记 2_DOCFILT-4-0.3-3
注释字段 含义 首版即有 取值示例
RecID 记录编号 是 1021
Gestation 分娩孕周 是 38.6
Rectime 记录时孕周 是 22.3
Age 母亲年龄 是 30
Parity 产次 是 0
Abortions 既往流产次数 是 0
Weight 记录时体重 否,2012 年补 63
Hypertension 妊娠期高血压 否,2012 年补 no
Diabetes 妊娠期糖尿病 否,2012 年补 no
Placental_position 胎盘位置 否,2012 年补 front
Bleeding_first_trimester 孕早期出血 否,2012 年补 yes
Bleeding_second_trimester 孕中期出血 否,2012 年补 no
Funneling 宫颈漏斗状改变 否,2012 年补 negative
Smoker 吸烟 否,2012 年补 no

两点需要提醒。其一,增益写作 13107 每毫伏,正好是 32767 除以 2.5,反推可确认量程为正负 2.5 毫伏。其二,胎盘位置的取值出现 front 与 end 两种写法,官方没给编码含义,基于该字段的分组要先确认语义。

2.3 一条记录的完整解剖

以 tpehg1021 为例,头文件的十二行通道描述与十四行注释把这份记录的结构交代清楚。

tpehg1021 12 20.000000 35260
tpehg1021.dat 16 13107/mV 16 0 -941 -11760 0 1
tpehg1021.dat 16 13107/mV 16 0 -25 -14543 0 1_DOCFILT-4-0.08-4
tpehg1021.dat 16 13107/mV 16 0 -4 -3034 0 1_DOCFILT-4-0.3-3
tpehg1021.dat 16 13107/mV 16 0 -12 -3188 0 1_DOCFILT-4-0.3-4
#-- 通道 2、3 的同构四行略,共十二行
#-- 以下为原文件注释段,原文每行以单个井号开头
RecID 1021
Gestation 38.6
Rectime 22.3
Age None
Parity None
Abortions None
Weight 63
Hypertension None
Diabetes None
Placental_position end
Bleeding_first_trimester yes
Bleeding_second_trimester no
Funneling negative
Smoker None
从文本能读出的 具体值 依据
记录时孕周 22.3 注释段 Rectime
分娩孕周 38.6 注释段 Gestation
分组 孕 26 周前足月 两字段与界值比较
记录时体重 63 千克 注释段 Weight
空值字段 六项 值为 None 而非 0
通道与滤波 十二路 首行与通道名后缀

空值写成 None 而不是零,说明它是缺失而不是「无」。同一条记录里一部分字段有值、一部分为空,说明缺失按字段发生;用删整行的策略会连带扔掉可用的体重与出血信息。

想问的问题 头文件能否直接回答 依据
采于孕几周 能 注释段 Rectime
是足月还是早产 能,需与三十七周比较 注释段 Gestation
采集时长 能,需做除法 采样点数除以采样率
经过哪些滤波 能 通道名中的 DOCFILT 标记
四枚电极贴在哪 部分能 布局由页面给出,非头文件
之后有无干预 不能 无此字段

第四行需要解释。通道名里的 DOCFILT-4-0.3-3 表示四阶双通滤波、通带零点三到三赫兹,未滤波那一路没有后缀。滤波参数写在通道名里而非另设字段,下游工具按名做正则匹配时要把后缀当可变部分。

2.4 十二条信号的组织方式

每条记录固定十二路,顺序是「先通道、后滤波档位」:S1 的原始与三档滤波排在前四路,S2 的四路居中,S3 的四路在后。这个顺序是硬约定,官方页面逐行列明。

序号 通道 滤波档位 通道名后缀
1 S1 原始 无
2 S1 0.08 至 4 赫兹 DOCFILT-4-0.08-4
3 S1 0.3 至 3 赫兹 DOCFILT-4-0.3-3
4 S1 0.3 至 4 赫兹 DOCFILT-4-0.3-4
5 至 8 S2 同上四档 同上
9 至 12 S3 同上四档 同上

官方对滤波给了一句使用提示:用滤波通道时,首尾各一百八十秒应丢弃,因为双通滤波在两端留有暂态。这句话的实际影响不小——三十分钟的记录砍掉六分钟,可用部分只剩二十四分钟,比例八成。

项目 数值 说明
名义时长 30 分钟 官方表述
单侧暂态 180 秒 官方要求丢弃
每侧采样点 3600 点 180 秒乘 20 赫兹
裁剪后可用 约 24 分钟 占名义时长八成

三档滤波的截止频率差异同样要紧:零点零八赫兹那一档保留更多慢漂移,零点三赫兹那两档把基线压得更平,也会削掉一部分极慢的子宫电活动。选哪一档会直接改变频谱类特征的计算结果。

若选这一档 特征会怎么变 适合什么目的
0.08 至 4 赫兹 慢漂移保留,谱重心可能偏低 研究极慢成分与基线稳定性
0.3 至 3 赫兹 基线最平,谱峰最清晰 复现论文、做组间比较
0.3 至 4 赫兹 介于两者之间 兼顾快慢成分

2.5 与同类资源的字段差异

维度 TPEHG DB 冰岛多电极库 引产与剖宫产库 产时胎心电库
记录对象 子宫肌电 子宫肌电 子宫肌电 胎儿心电加宫缩
电极数 4,三路差分 16,单极阵列 4,三路差分 胎头电极加腹部
采样率 20 赫兹 200 赫兹 20 赫兹 数百赫兹以上
受试规模 300 次妊娠 数十名孕妇、上百条记录 近百次妊娠 单条样本
结局标签 足月与早产二分 以妊娠与产程为主 引产、剖宫产分组 产时状态
现成特征表 有,四类特征三档滤波 无 无 无
共有字段 本库 多电极库 产时库
记录时孕周 有 有 有
分娩孕周 有 多有 少
临床病史 有,十六项 有,项数更多 少
事件标注 无 有 部分有

这张表里最容易被低估的是最后一列。现成特征表把入门门槛压到极低:不必理解 WFDB、不必写滤波器、不必处理缺失值,一张表读完就能跑分类器。代价是使用者也容易停在这一步,把特征表当成数据的全部。

§3 它记录的是什么:子宫肌电,不是胎心电

3.1 二十赫兹这个数字决定了它能做什么

采样率比样本量更能决定一份电生理数据的用途。二十赫兹意味着奈奎斯特频率只有十赫兹,高于十赫兹的成分在数字化那一刻就被折叠或丢弃,事后拿不回来。子宫肌电的主能量集中在几赫兹以下,二十赫兹足够描述慢波;胎心电的 QRS 宽度在几十毫秒量级,二十赫兹连完整波形都描不出来。

采样率 能描述的生理过程 典型用途 相对本库
20 赫兹 子宫肌电慢波、呼吸、缓慢基线变化 宫缩相关的频谱与包络分析 本库档位
250 赫兹 心电 QRS 轮廓,形态大致可信 心率、节律粗判 高一个数量级
500 至 1000 赫兹 心电形态细节 母胎心电分离、形态学 高一个半到两个数量级
2000 赫兹以上 高频肌电、神经电 精细电生理 高两个数量级

这张表解释了一个常见困惑:同样叫电生理数据,有的库几十兆,有的要几百吉,差别不在时长而在采样率。

低采样率带来的 具体表现
好处 高频噪声在数字化阶段就被挡在门外,工频与电极噪声难以进入
好处 单条不到一兆,全库可整包下载,实验迭代快
代价 高频干扰的痕迹一并消失,无法用于信号质量评估
代价 任何依赖波形形态的分析都不成立

3.2 频段与生理假设

子宫肌电的有效成分大致落在零点一至四赫兹,官方给出的三档带通滤波器正是围绕这个区间设计的。

滤波档位 通带宽度 保留什么 丢掉什么
0.08 至 4 赫兹 最宽 极慢基线起伏与完整核心频段 几乎不丢,但残留漂移
0.3 至 3 赫兹 最窄 核心节律成分 极慢漂移与三点五赫兹以上的快成分
0.3 至 4 赫兹 中等 核心成分加快成分 极慢漂移

三档并存本身就是研究设计的痕迹。2008 年那篇论文把滤波档位当作自变量来比较,结论是零点三至三赫兹那一档最敏感。

比较 指标 滤波档位 显著性
孕 26 周前的足月对早产 中值频率 0.3 至 3 赫兹 p 等于 0.03
孕 26 周前的足月对早产 样本熵 0.3 至 3 赫兹 p 等于 0.035
全部足月对全部早产 中值频率 0.3 至 3 赫兹 p 等于 0.012
全部足月对全部早产 样本熵 0.3 至 3 赫兹 p 等于 0.011
足月组孕 26 周前对之后 中值频率与样本熵 0.3 至 3 赫兹 p 小于或等于 0.001

这些数字是组间差异的显著性,不是分类器的准确率。三百条、阳性三十八,能跑出 p 小于 0.05 说明信号里有信息,但效应量不大,靠单个特征做临床判别远远不够。

特征 定义 反映什么 在本库里的角色
均方根 信号幅度的有效值 整体能量 幅度类基线
中值频率 功率谱能量的中分点 频谱重心 论文报告最敏感的指标
峰值频率 功率谱最大值的位置 主节律 与中值频率互为补充
样本熵 序列的不可预测程度 复杂度与规律性 论文报告次敏感的指标

3.3 三路差分为什么不是三路独立电极

四枚电极取三路差分,实际只有三个自由度,因为差分把每路的共模成分减掉了。腹壁上最恼人的干扰往往同时出现在相邻电极上:母体心电在腹壁形成的电位场范围很大,四枚电极几乎拾到相同幅度,相减后残留很小;远处工频干扰同理。

设计选择 好处 代价
电极间距仅 3.5 厘米 共模抑制好,局部梯度清晰 覆盖小,看不到子宫整体传播
三路差分而非四路单极 抑制母体心电与工频 失去绝对电位,无法还原单极信号
两横一纵的取向 兼顾两个方向 无法做源定位或阵列波束形成

代价在需要空间信息时立刻显现。想研究电活动从宫底向宫颈的传播,需要覆盖整个腹部、且最好单极记录的阵列;三路小间距差分给不了。反过来,若目标只是判断信号里有没有与结局相关的统计差异,三路已经够。

干扰来源 差分能否抑制 原因
母体心电 能,部分抑制 空间分布广,各路幅度接近
工频 能,主要靠共模 远处场近似均匀
电极接触噪声 不能 逐电极独立,差分后反而放大
局部肌电串扰 不能 与目标信号同源同频

最后一行是这份数据的隐性边界:腹壁肌电与子宫肌电频段重叠,差分无法区分,官方也没有提供任何区分标记。任何声称能自动剔除腹肌干扰的方法,在这份数据上都没有真值可比。

3.4 组别是怎么划的

官方的分组是二乘二:按记录时孕周分孕二十六周前与孕二十六周及以后,按分娩孕周分足月与早产。

组名 记录时孕周 分娩结局 记录数
孕 26 周前足月 小于 26 周 大于 37 周 143
孕 26 周前早产 小于 26 周 小于或等于 37 周 19
孕 26 周及以后足月 26 周及以上 大于 37 周 119
孕 26 周及以后早产 26 周及以上 小于或等于 37 周 19

四个数字相加正好三百。这里有一个官方内部的口径差:汇总表里的孕周保留两位小数,头文件注释段保留一位,同一条记录会出现两种写法。

项目 汇总表 头文件 差异来源
分娩孕周 38.57 38.6 四舍五入精度不同
记录时孕周 22.29 22.3 同上
影响 不影响分组 不影响分组 精确匹配时需统一口径

另一个边界是足月的定义。官方用大于三十七周为足月,与论文摘要一致;临床常用的界值也是三十七周整,两者在恰好三十七周这一点上会给出不同归类,而数据里是否有这样的记录,官方未说明。

3.5 你能从一条记录里读出什么

想读出的东西 能否读到 依据
三路电位的波形 能 原始或滤波后任选
记录时孕周 能 注释段与汇总表
分娩时孕周 能 同上
是否早产 能 汇总表的二进制字段
体重、年龄、产次 部分能 部分记录为空值
单次宫缩的起止时刻 不能 无标注、无压力通道
胎儿心率 不能 频段与采样率不支持
用药或干预记录 不能 无此字段

第五行最容易被高估。临床字段看起来很全,但空值分布并不均匀,早年记录缺项更多,这与官方 2012 年才补入八项信息有关。以这些字段为协变量的分析,实际可用样本都会小于三百。

字段组 是否 2012 年补入 使用建议
编号、孕周、记录时孕周 否,首版即有 可直接使用
年龄、产次、流产次数 否,首版即有 空值需按缺失处理
体重、高血压、糖尿病 是 早年记录缺失偏多
胎盘位置、两期出血、漏斗、吸烟 是 取值编码未说明,慎用

§4 它最独特的东西:一个被筛过的自然临产队列

4.1 筛选规则改变了这个库的性质

原始池子里有近一千三百条记录,最终只公开三百条。三条筛选规则叠加,剩下的是一批自然发动、经阴道分娩、信号干净的妊娠。

环节 数量 说明
原始池 近 1300 条 1997 至 2005 年常规产检累积
剔除伪迹 未公布 官方只写「明显伪迹」
剔除引产 未公布 无具体条数
剔除剖宫产 未公布 无具体条数
公开池 300 条 每次妊娠一条

逐级剔除的具体条数,官方一个都没给,只给了结果。这意味着无法判断三条规则各自的影响有多大,也无法复现这条筛选漏斗。

筛选动作 剔除的对象 留下的性质
去除伪迹记录 电极脱落、运动干扰严重的段 信号可用性高
去除引产 药物或机械方式启动的产程 产程自然发动
去除剖宫产 择期或急诊手术终止妊娠 结局由产程本身决定

这个选择让结局标签变干净:早产组是真性早产,不是医源性提前终止。代价是外部效度——真实产科里引产与剖宫产占相当比例,这部分人完全不在库中,模型放到含大量计划分娩的人群里会立刻偏移。

4.2 案例:孕 22 周 3 天的 tpehg1021

tpehg1021 是一条有代表性的记录:采集于孕二十二点三周,落在官方所说的孕二十六周前窗口;分娩发生在孕三十八点六周,属于足月;记录时体重六十三千克,孕早期有出血史,胎盘位置记为 end;年龄、产次、流产次数、高血压、糖尿病、吸烟六项为空。

记录名        tpehg1021
记录时孕周    22.3(汇总表 22.29)
分娩孕周      38.6(汇总表 38.57)
组别          <26-TERM
早产          f
早期记录      t
通道数        12
每路采样点    35260
采样率        20 赫兹
折算时长      1763 秒,约 29 分 23 秒
这一条记录能说明的 具体表现
官方时长与实际采样点存在差额 页面称 30 分钟,头文件折算约 29 分 23 秒
孕周有两个精度口径 头文件一位小数,汇总表两位
临床字段可以有条件缺失 六项为 None,体重与胎盘位置有值
早期足月组是论文的重点组 判别力最强的正是孕 26 周前这一层

第二行与第三行的组合最容易被忽略:缺失是按字段发生的,不是按记录整条丢失。做多变量分析时若删整行,会连带扔掉本来可用的体重与出血信息。

#-- 只取这一条记录,把三档滤波后的 S2 通道并排比较
import wfdb, numpy as np

rec = wfdb.rdrecord("tpehgdb/tpehg1021", pn_dir="tpehgdb")
idx = [i for i, n in enumerate(rec.sig_name) if n.startswith("2")]
for i in idx:
    x = rec.p_signal[:, i]
    print(rec.sig_name[i], "标准差", round(float(np.std(x)), 4), "峰峰值", round(float(np.ptp(x)), 4))

这段代码不需要任何标注,也不必下载全库,一条记录、四行输出,就能建立对滤波档位差异的直觉。§7.2 会再回到这个观察。

4.3 三条排除项各自排掉了谁

排除项 被排掉的人群 对结论的影响
明显伪迹 电极接触不良或运动剧烈的记录 提高信号质量,也可能连带排除体型特殊者
引产 因医学原因人工启动产程者 早产组只剩自发性早产
剖宫产 择期与急诊手术者 结局不再含医源性因素

前两条合起来,定义了这份数据的适用边界:它研究产程如何开始,而不是妊娠如何结束。以胎膜早破为例,它可以导致自然临产,也可能因感染风险转为引产,后一种情况在本库中不会出现。第三条还有个少被提及的副作用:排除剖宫产会让样本偏向经阴道分娩成功的人群,队列整体偏顺。

被筛掉的情形 在真实产科中的占比 对模型的影响
计划剖宫产 不低 模型从未见过这类病例
引产失败转剖 不低 极端病例完全缺失
产程异常 中等 队列偏顺,风险被低估
信号伪迹严重 未知 真实场景下的坏段比例被低估

4.4 现成的特征表:最低门槛的入口

库中除原始信号外,还附三份特征表,按滤波档位各一份,每份九百行,对应三百条记录乘三路通道。

列名 含义 单位或范围 备注
Record 记录名 文本 与文件名一致
Chann 通道号 1 至 3 对应 S1 至 S3
Gestation 分娩孕周 周 两位小数
Rec. time 记录时孕周 周 两位小数
Group 组别 四种组合 与孕周分层一致
RMS 均方根 与信号同量纲 反映整体幅度
Fmed 中值频率 赫兹 频谱重心位置
Fpeak 峰值频率 赫兹 频谱最高点
Samp. en. 样本熵 无量纲 反映复杂度
Premature 是否早产 t 或 f 结局标签
Early 是否早期记录 t 或 f 孕周分层标签

三份表结构完全相同,只有数值随滤波档位变化。这个设计让滤波档位的影响可以直接用三张表做差来看,不必重跑信号处理。

特征表 对应通带 行数 用途
filter_0.08_Hz-4.0_Hz 0.08 至 4 赫兹 900 宽通带,含慢漂移
filter_0.3_Hz-3.0_Hz 0.3 至 3 赫兹 900 论文报告判别力最强
filter_0.3_Hz-4.0_Hz 0.3 至 4 赫兹 900 折中档

特征表里的数值是对整段信号算的,而官方又建议滤波通道丢弃首尾各一百八十秒。这两件事是否一致,官方未说明。做复现时若发现数值对不上,先查这一点。

4.5 反事实:如果它保留了引产与剖宫产

选择 得到的 失去的
保留全部病例 规模大四倍,更接近真实产科人群 结局混杂,信号质量参差
只留自然临产(现行) 标签干净,适合机制研究 外部效度窄,样本小
只留引产与剖宫产 可研究医源性分娩 完全变成另一个数据集

第三种选择后来真的被做出来了,就是同域的引产与剖宫产库,§6.3 会展开。一个数据集排除掉的东西,往往正好是另一个数据集的全部内容。

如果当年不排除 会多出什么 会少掉什么
规模 从三百涨到近一千三 ——
阳性比例 上升,医源性早产占比不低 早产的定义变模糊
信号质量 —— 急诊术前记录往往仓促
可比性 更贴近真实门诊人群 与 2008 年论文的基线不可比

§5 怎么拿到:从两百多兆的包里取出你要的那一段

5.1 三条取数路径

路径 适合谁 需要什么 拿到什么
直接下载全量 ZIP 想本地反复实验的人 两百多兆空间 全部记录、特征表与说明文档
用 WFDB 工具按需拉单条 只想看几条记录的人 Python 与 wfdb 包 单条十二路信号
只读特征表 只想跑分类器的人 任意表格工具 四类特征与标签

三条路径的入口都在同一目录下,区别只在于取多少。按需拉取不下载整包,单条不到一兆。

#-- 路径一:整包下载,解压后得到 tpehgdb 目录
wget -r -N -c -np https://physionet.org/files/tpehgdb/1.0.1/

#-- 路径二:用官方给出的对象存储同步方式
aws s3 sync --no-sign-request s3://physionet-open/tpehgdb/1.0.1/ ./tpehgdb-1.0.1
方式 命令要点 体积 备注
递归下载 wget 加递归与续传参数 约两百多兆 会拉下说明文档与校验文件
对象存储同步 匿名访问,不需要密钥 同上 适合脚本化
单条远程读 只需库名与记录名 不到一兆 依赖网络,不适合批量

5.2 先把文件头读出来

不装任何专用库也能读头文件,它是纯文本,逐行解析即可。这一步的价值在于:临床字段全在这里,而它们不会出现在任何信号数组里。

#-- 只依赖标准库,读一条记录的头文件与临床注释
import urllib.request

URL = "https://physionet.org/files/tpehgdb/1.0.1/tpehgdb/tpehg1021.hea"
lines = urllib.request.urlopen(URL).read().decode("utf-8").splitlines()

head = lines[0].split()
name, n_sig, fs, n_samples = head[0], int(head[1]), float(head[2]), int(head[3])
print(name, n_sig, fs, n_samples, "时长约", round(n_samples / fs), "秒")

meta = {}
for ln in lines:
    if not ln.startswith("#"):
        continue
    body = ln.lstrip("#").strip()
    if not body or ":" in body:
        continue
    key, _, val = body.partition(" ")
    meta[key] = val.strip()

for k in ("RecID", "Gestation", "Rectime", "Weight"):
    print(k, "=", meta.get(k))
解析对象 分隔方式 容易出错的点
首行 空格 采样率是浮点写法,勿直接转整型
通道行 空格 通道名可能带滤波后缀
注释行 首个空格 值本身不含空格,可直接切分
空值 字面 None 不能当零处理

5.3 用 WFDB 读出十二路信号

wfdb 包能直接把远程记录读成数组,通道名、单位、增益都会带出来。读完之后先看形状,再看单位,最后才画图。

#-- 远程读取一条记录的十二路信号
import wfdb
import numpy as np

rec = wfdb.rdrecord("tpehgdb/tpehg1021", pn_dir="tpehgdb")
sig = rec.p_signal           # 形状为 采样点 x 12,单位毫伏
print(sig.shape, rec.fs, rec.sig_name)

s1_raw, s1_0084, s1_033, s1_034 = (sig[:, i] for i in range(4))
print("S1 原始幅度范围", np.nanmin(s1_raw).round(3), np.nanmax(s1_raw).round(3))
print("S1 窄带幅度范围", np.nanmin(s1_033).round(3), np.nanmax(s1_033).round(3))

窄带的幅度范围通常明显小于原始,因为慢漂移被压掉了。两者接近时先检查是否读错列顺序——十二路是「通道优先、滤波次序」,不是反过来。

属性 预期值 若不符合
形状 采样点乘 12 可能是只读到部分通道
采样率 20 单位或版本不对
单位 毫伏 用了数字量而非物理量
通道名前缀 1、2、3 索引与几何对应关系错位

5.4 丢掉滤波器暂态

官方明确要求使用滤波通道时丢弃首尾各一百八十秒。二十赫兹下即每侧三千六百点。

#-- 裁剪滤波通道的暂态段,保留中间可用部分
FS = 20
TRIM_S = 180

def usable(x, fs=FS, trim_s=TRIM_S):
    n = trim_s * fs
    if len(x) <= 2 * n:
        raise ValueError("记录过短,裁剪后无剩余")
    return x[n:len(x) - n]

s1_clean = usable(s1_033)
print("裁剪前", len(s1_033), "点;裁剪后", len(s1_clean), "点")
print("可用时长", round(len(s1_clean) / FS / 60, 1), "分钟")
场景 是否需要裁剪 理由
用滤波通道算频谱特征 需要 两端暂态会污染低频估计
用原始通道算时域统计 不需要 原始信号没有双通滤波暂态
复现论文特征表数值 未定 官方未说明特征是否裁剪后计算

裁剪后剩约二十四分钟。对频谱类特征影响不大,但样本熵这类对序列长度敏感的量会因裁剪与否产生可观差异。

5.5 常见报错与处置

现象 可能原因 处置
找不到记录 远程路径少了子目录名 记录名写成 tpehgdb/tpehg1021
信号幅度大得离谱 把数字量当毫伏 用物理量数组而非数字量
三路信号一模一样 索引写成了同一列 检查列顺序约定
特征表全是字符串 分隔符与空白混排 指定分隔符并跳表头
分类准确率异常高 三路被分到训练与测试 按记录名做分组划分
熵值与论文差很多 未裁剪或参数不同 统一裁剪并用 m 等于 3、r 等于 0.15

最后一行值得强调。样本熵对参数极敏感,容限通常按标准差倍数取值,若按绝对幅度取会系统性偏移。把裁剪规则与两个参数固定下来,比换十种分类器更有意义。

§6 与库内同域资源的关系

6.1 关系图谱

产科电生理这个小领域里,几个公开库常被摆在一起比较,但它们回答的问题几乎不重叠。区分它们只需要三个坐标:测的是什么电、一个人测几次、结局标签是什么。

库 测什么 规模 时间结构 结局标签 与本库的关系
TPEHG DB 子宫肌电,三路差分 300 次妊娠各一条 横断面,单次 足月与早产 本篇主体
NIFECGDB 母胎心电,含胸导 1 名孕妇 55 段 纵向,逐周 无结局标签 测的是心脏电,采样率高两个数量级
NInFEA 母胎心电加多普勒与呼吸带 39 名孕妇 60 段 横断面 无结局标签 同为孕中期窗口,但多模态、高频
FECGSYNDB 合成母胎心电 10 例模拟妊娠,上千次模拟 可任意设定 生成时已知 无真实受试者,可作预训练语料
OB-1 胎头电极胎心电加宫缩 1 条记录 单次,产时 产时状态 产时而非产前,通道完全不同
ICEHG DS 子宫肌电,三路差分 91 次妊娠,126 条 横断面,可两次 引产与剖宫产分组 同一套电极传统,病例互斥
库 能否与本库合并 合并前要做什么
NIFECGDB 不能直接合并 物理量与采样率都不同,只能做方法链接力
NInFEA 不能直接合并 通道数与模态不同,需重建特征空间
FECGSYNDB 可以混合训练 必须标注来源,且只在预训练阶段使用
OB-1 不宜合并 产时与产前场景差异过大
ICEHG DS 可以合并 加来源标记,注意许可条款不同

6.2 与 NIFECGDB 的差别:一个铺人群,一个铺时间

NIFECGDB 是同一名孕妇从孕二十一周到四十周逐周记录的五十五段腹壁心电,采样一千赫兹,带两路胸导作母体参考,没有分娩结局标签。TPEHG 是三百名孕妇各一次,采样二十赫兹,没有心脏导联,但有明确的足月与早产标签。

维度 TPEHG DB NIFECGDB
记录对象 子宫平滑肌电活动 胎儿与母体心肌电活动
受试者数 300 1
每人记录数 1 55
采样率 20 赫兹 1000 赫兹
单条时长 30 分钟 数分钟
结局标签 有 无
可做的分析 组间统计比较 个体内时间演化

两份数据在方法学上几乎不能互换。在前者上做母胎心电分离不可能,胎心成分不在频带内;在后者上做早产预测也不可能,五十五段来自同一个人,阳性样本数为零。

想研究的问题 该用哪一份 原因
胎儿心电随孕周增强 NIFECGDB 逐周记录且采样率高
子宫电活动与分娩结局 TPEHG 有结局标签且样本够
母体成分如何干扰腹壁信号 NIFECGDB 有胸导可作母体参考
早中期电活动的组间差异 TPEHG 有孕 26 周前分层

两者也能拼成一条路线:用高频多导数据开发前端处理,把链路固定后,再用有结局的低频数据做下游统计。这条路线不要求受试者重叠,只要求链路可迁移。

6.3 与 ICEHG DS 的差别:同一套电极,互斥的两类分娩

ICEHG DS 同样来自卢布尔雅那的采集传统,电极布局、采样率、时长与 TPEHG 高度相似,规模是九十一次妊娠、一百二十六条记录。它的分组围绕引产与剖宫产,而这三类恰恰是本库入库时明确剔除的。

维度 TPEHG DB ICEHG DS
病例来源 自然临产妊娠 引产与剖宫产妊娠
是否含医源性分娩 不含,明确排除 含,且为核心分组
规模 300 次妊娠 91 次妊娠,126 条记录
每人记录数 1 可两次
结局标签 足月与早产 分娩方式与引产结果
许可 ODC Attribution 1.0 ODC Open Database License 1.0
使用场景 该选哪个 说明
自然早产的机制研究 TPEHG 队列干净,标签明确
引产成功率预测 ICEHG DS 本库无此类病例
比较自然与人工产程 两个都用 同源采集,技术混杂小
单库快速入门 TPEHG 规模大、附特征表

这个互补关系很容易被忽略,也很容易出事。两库记录名风格相近,电极描述几乎一样,若混在一个目录里按名排序读取,很可能把引产病例当成自然临产病例。

从研究设计看,组合价值大于各自单独使用:一个提供自然产程如何开始的对照,一个提供人工启动产程时的观察,同源采集让技术混杂小很多。

6.4 与 NInFEA、FECGSYNDB、OB-1 的分工

库 与本库最像的地方 最不像的地方 什么时候该选它
NInFEA 都覆盖孕二十一周前后的窗口 二十七路高频多模态,测母胎心电 需要多模态参考或早孕期心电时
FECGSYNDB 都能产出信号到标签的配对 全是模拟,没有真实孕妇 需要大样本预训练或极端信噪比时
OB-1 都涉及子宫电活动 产时、单条、带胎头电极 研究产时监护与胎儿窘迫时
组合 可行性 主要风险
本库加合成库预训练 中 合成数据没有子宫慢波,表征迁移效果差
本库加产时库对照 低 场景差异太大,结论不可通约
本库加多模态库 低 模态与通道数都不同

NInFEA 的窗口与本库早期窗口重叠,都在二十一周到二十七周之间,但前者目标是胎儿心脏,后者目标是子宫。FECGSYNDB 的价值在规模与可控性,可以造出上千次五分钟记录;把在合成数据上预训练的模型迁移到本库做结局分类,风险很高,因为合成数据里没有子宫肌电的慢波。OB-1 只有一条产时记录,能提供直观参照,不能提供统计结论。

6.5 组合使用的三条路线

路线 组合方式 适合的目标 主要风险
同源互补 本库加引产剖宫产库 比较自然与人工产程的电活动 记录名混淆、许可条款不同
跨频段接力 高频心电库做前端,本库做下游 验证处理链可迁移性 频段差异导致指标不可比
合成加真实 合成库扩样本,本库做真实检验 小样本下的数据增强 合成分布与真实分布不一致

第一条可行性最高,两库采集条件接近,只需处理命名与来源标记。第二条需额外论证:前端处理的输出在本库频段上是否还有意义。第三条要守住合成数据只用于预训练、真实数据只用于评估这条界线。

6.6 检索路径

在站内找同域资源,按标签与关键词两条路走最稳。标签路径利用归一化后的分类词表,关键词路径兜住标签未覆盖的写法。

#-- 关键词兜底:覆盖库名缩写与中文异写,再按物理量人工筛
bash scripts/qf_psql.sh "SELECT record_id, url_name, title FROM ai_ready_dataset \
WHERE del_sign = 0 AND (url_name ILIKE '%ehg%' OR title ILIKE '%子宫肌电%' \
OR title ILIKE '%宫缩%' OR title ILIKE '%胎%') ORDER BY record_id"
路径 召回 精度 适合
标签检索 中 高 已知标签体系时
关键词兜底 高 中 首次摸底时
两者交叉 高 高 建清单时

关键词路径会把胎心电、胎心音这类同域不同物的资源一并带出,第二步必须按测的是子宫还是胎儿逐条筛。

§7 质量评估与局限性

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

评价这份数据时最容易出现的误判,是拿今天的样本量标准去衡量一份 2010 年发布、1997 年采集的库,然后得出太小、不能用的结论。这个判断忽略了它的历史位置:在它之前,公开的子宫肌电数据基本不存在。

第二个要校正的是「二分类太粗糙」。粗标签确实丢掉了病理分型,却换来三百条记录的可用性;若要求逐条带完整分型,规模会掉到几十条。

第三个与显著性有关。论文的 p 值容易被读成信号很强,实际上它只说明组间差异不太可能由偶然产生。在三百条、阳性三十八例的样本上,p 等于 0.01 对应的效应量可能很小。

常见误判 校正后的看法
样本太小所以没用 稀缺性比规模更能决定长期价值
二分类太粗所以不可用 粗标签换来了可用规模,且与论文基线可比
p 值小说明判别力强 显著性不等于效应量
单中心所以不能研究 可以研究机制,不能报告人群泛化

7.1 五维评分

按 DAIMS 框架的五个维度打分,满分五分。

维度 分数 一句话理由
可发现性 5 PhysioNet 主站收录,DOI 稳定,领域内引用密集
可访问性 5 匿名下载,无需注册,无数据使用协议
互操作性 4 WFDB 是通用标准,但通道命名依赖字符串约定
可复用性 5 许可宽松,附现成特征表,一条命令可全量获取
可溯源性 4 有方法学论文与完整头字段,但无独立数据描述论文
维度 扣分点 对使用的影响
互操作性 通道名混编滤波参数,需正则解析 通用加载器容易读错列
可溯源性 无数据描述论文,伦理与采集流程未公开 方法学只能引 2008 年论文
可溯源性 部分字段取值编码未说明 胎盘位置等字段不可直接使用
可发现性 页面体例较早,字段说明集中在正文 新使用者需通读全文

可复用性给满分是因为三项条件同时满足:许可是署名型而非传染型,结构自解释,官方已把最常用的四类特征算好放在包里。三点合起来,让一个不熟悉 WFDB 的人也能在半小时内跑出第一张图。

7.2 分数背后的取舍

可访问性与可复用性这两项几乎没有争议,分歧在可溯源性。2008 年那篇是方法学论文,重心在比较信号处理技术,对数据本身的描述只有几段;采集流程、伦理审批、剔除判据都没有系统记录。这不妨碍使用,只妨碍复现细节。

你想知道的事 官方有没有说 能否从文件推出
电极的解剖位置 有,脐周三点五厘米 不能,只能从页面读
电极为何这样摆 没有 不能
剔除伪迹的具体阈值 没有 不能
胎盘位置的取值含义 没有 不能
每条记录的实际时长 页面称三十分钟 可以算,与页面略有出入

最后一行可以自行核对,也是 §4.2 的案例的由来。结论不是官方写错了,而是两个口径并存、差额构成未说明,这样写在局限性里最稳妥。

7.3 已知的、可枚举的偏差

偏差 性质 后果
单中心、单地区 设计现实 人群与设备条件单一
排除引产与剖宫产 设计选择 不代表全部分娩人群
每次妊娠仅一条记录 设计选择 无法做个体内追踪
采集窗口只有两个 设计现实 孕周不连续,无法画连续曲线
阳性仅三十八例 设计现实 亚组分析迅速失去统计效力
无事件级标注 设计选择 事件检测类任务不可做
临床字段存在空值 采集现实 多变量分析样本进一步缩小
二十赫兹采样率 设计选择 高频成分与胎心信息不可得

前四项是设计与现实,不该读成缺陷;后四项是使用者必须自己承担的后果。区分这两类,比逐条抱怨更有用。

7.4 外部验证矩阵

验证方式 能否在本库完成 说明
与分娩结局对照 能 结局标签即金标准
与宫缩压力对照 不能 无同步压力通道
与超声宫颈长度对照 不能 无影像字段
跨中心外部验证 不能 只有单一中心
算法间横向比较 能 同一批记录可跑多方法
滤波档位敏感性 能 三档滤波并列存放
特征与论文数值复现 能 四类特征已公开
想表达的结论 可用的措辞 不可用的措辞
特征有判别力 在该队列上组间差异显著 可用于临床筛查
模型有效 交叉验证下的区分度 准确率达到临床要求
滤波有影响 不同通带下特征分布不同 某档滤波最优
数据适用 适用于方法学对照与基线复现 适用于全部产科人群

真正能做的验证集中在中后段,且都建立在同一批记录、同一套协议之上。想宣称模型具备临床可用性,必须有独立队列;本库能提供内部一致性与文献可比性,不能提供外部泛化证据。

7.5 它为何能持续:因为它是唯一一份「自然临产、三百人、带结局」的公开子宫肌电

支撑因素 具体表现
稀缺性 同时具备真实孕妇、结局标签与统一格式的子宫肌电库极少
干净的人群定义 排除引产与剖宫产,标签含义明确
门槛极低 两百多兆,附特征表,半小时可跑通
格式长寿 WFDB 是三十余年不过时的标准
引用惯性 早产预测文献长期把它当作公开基线

第一条是根。数据集的寿命多由稀缺性决定,而不是由规模或文档质量决定。规模更大的库不断出现,但同时满足真实采集、结局明确、格式统一、许可宽松四项的子宫肌电库并没有变多。第五条是放大器:当成百篇论文把同一份数据当作基线,新手读到的第一篇就会指向它。

§8 生态位与历史

8.1 时间沿革

时间 事件 留下的痕迹
1997 至 2005 卢布尔雅那大学医学中心妇产科在常规产检时采集,累计近一千三百条 全部记录的原始来源
2001 一篇硕士论文以孕期子宫电活动为主题 官方参考文献之一
2002 一篇博士论文构建多层级早产预测模型 初步数据库的来源
2008 方法学论文发表,比较线性与非线性技术的判别力 官方指定引用文献
2010 年 11 月 v1.0.0 在 PhysioNet 发布,公开三百条精选记录 首个公开版本
2012 年 8 月 21 日 v1.0.1 发布,向头文件补入八项临床信息 现行版本
之后 同域另有带外部压力计的小型库与引产剖宫产库公开 互补资源
阶段 跨度 状态
采集期 约八年 累积近一千三百条原始记录
内部使用期 2005 至 2010 仅以初步数据库形式出现在学位论文与期刊中
公开期 2010 至今 单一版本号流通,未见结构性改动

最值得注意的是那五年空档:数据 2005 年采完,2010 年才公开,中间只以初步数据库的形式出现在少数论文里。这也解释了临床字段为何到 2012 年才补齐。

8.2 在 PhysioNet 产科电生理谱系里的位置

资源 物理量 时相 规模量级
本库 子宫肌电 产前门诊 数百条
冰岛多电极库 子宫肌电 产前,含产程 上百条
引产与剖宫产库 子宫肌电 产前至产时 上百条
母胎心电库 心肌电 产前 数十条至单条
产时胎心电库 心肌电 产时 单条
胎心监护库 压力与超声 产时 数百例
坐标格 已有资源 缺口
子宫肌电,产前 相对充足,本库为主 缺多中心、缺连续孕周
子宫肌电,产时 稀少 缺带宫缩压力的同步记录
心肌电,产前 中等 缺带结局标签的高频数据
心肌电,产时 极少 缺规模化公开数据

横轴是物理量,纵轴是时相。本库占据子宫肌电乘产前这一格,且在这一格里样本量最大、标签最明确。相邻格子里产时的子宫肌电资源要少得多,这也是产时研究长期依赖小样本的原因之一。

8.3 三代技术各自解决什么

阶段 核心技术 解决什么 数据形态
机械与压力 外部压力计、宫内导管 宫缩有没有、强不强 压力曲线,单通道
电生理 腹壁电极、胎头电极 电活动何时出现、频谱如何 电位波形,多通道
多模态与算法 电生理加超声加电子病历 能否提前预测 多源对齐,含标签
本库处在哪一段 有 没有
电生理阶段 多通道电位、统一格式、结局标签 影像、随访、多模态对齐

本库属于第二阶段。它的价值在于把电生理数据做成可以批量分析的表格,而不是个案波形;它没有走到第三阶段,因为没有影像、随访与多模态对齐。

8.4 它被怎么用

用法 典型做法 常见问题
特征工程基线 在四类特征上跑分类器 把九百行当九百个样本
滤波档位比较 三档滤波各算一遍指标 忽略暂态裁剪,数值不可比
非线性分析 计算熵、相关维数、李雅普诺夫指数 序列长度不足导致估计不稳
深度模型验证 用原始信号做端到端分类 小样本上过拟合,报告虚高
教学演示 画出两类记录的波形差异 过度解读单条记录
用法 安全边界
特征工程基线 先按记录名聚合再划分
滤波档位比较 从原始信号重算,统一裁剪规则
非线性分析 报告序列长度与参数
深度模型 报告置信区间,不做临床宣称

第一行是误用最多的地方。特征表一行一路通道,用表格工具打开看到九百行,很容易直接切训练与测试。正确做法是先按记录名聚合到三百行,否则同一条记录的三路会跨折泄漏。第二行更隐蔽:官方没说特征是在全段还是裁剪后计算,口径不同则横向比较失去意义。

8.5 二十年后它还剩什么

会被替代的 不会被替代的
特征计算方法 三百次妊娠的结局标签
分类器结构 自然临产的人群定义
滤波参数选择 与 2008 年论文可比的基线数值
预处理流程 低门槛的入门路径
前提条件 如果成立 如果不成立
同域无更大规模公开库 生态位稳固 角色退为历史参照
结局标签口径不变 旧论文仍可比 需重新对齐分组
平台持续托管 下载路径稳定 需本地镜像

这个判断有一个前提:后续没有出现规模更大、标签更细、同人群定义的公开库。到目前为止同域资源在规模上没有数量级突破。

§4.2 的案例里那条记录常被教学材料引用,正因为它同时具备早期、足月、字段有缺三重特征,一条记录就能演示数据结构与口径差。

§9 使用指引

9.1 三种角色的路径

角色 目标 建议路径 时间成本
算法工程师 快速跑通一个早产分类基线 只下特征表,按记录聚合,五折交叉验证 半天
信号处理研究者 比较不同预处理对判别力的影响 下全量包,从原始信号重算特征 两三天
临床研究者 了解子宫肌电与结局的关系 读官方页面与 2008 年论文,再看头字段 一天
角色 最容易踩的坑 规避方式
算法工程师 九百行当九百样本 先按记录名聚合
信号处理研究者 三档滤波口径不一致 从原始信号统一重算
临床研究者 把组间差异读成诊断能力 同时看效应量与样本量

第一条路径的关键是按记录聚合,第二条的关键是统一裁剪规则,第三条的关键是不要跳过论文——只看平台页面会以为这是一份普通信号集,读了论文才知道分组逻辑与判别力边界。

9.2 一条最短的可用流程

从零到一张可解释的图,最短的路径是:读特征表、按记录聚合、做一次分层交叉验证、看混淆矩阵而不是只看准确率。

#-- 最短可用流程:特征表 -> 按记录聚合 -> 分层五折 -> 报告混淆矩阵
import pandas as pd
from sklearn.model_selection import StratifiedKFold, cross_val_predict
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix, roc_auc_score

URL = ("https://physionet.org/files/tpehgdb/1.0.1/"
       "tpehgdb_features__filter_0.3_Hz-3.0_Hz.fvl")
df = pd.read_csv(URL, sep=r"\s*\|\s*", engine="python", skiprows=1,
                 names=["record", "chann", "gest", "rectime", "group",
                        "rms", "fmed", "fpeak", "sampen", "premature", "early"])
df = df[df["record"].str.startswith("tpehg")].copy()
for c in ("rms", "fmed", "fpeak", "sampen", "gest", "rectime"):
    df[c] = pd.to_numeric(df[c], errors="coerce")

#-- 一条记录三行,必须先聚合为一行,否则同一条记录会跨折泄漏
X = df.pivot_table(index="record", columns="chann",
                   values=["rms", "fmed", "fpeak", "sampen"]).fillna(0.0)
y = df.groupby("record")["premature"].first().eq("t").astype(int).reindex(X.index)

cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
clf = RandomForestClassifier(n_estimators=400, random_state=0, class_weight="balanced")
pred = cross_val_predict(clf, X.values, y.values, cv=cv, method="predict_proba")[:, 1]

print("样本", X.shape[0], "特征", X.shape[1], "阳性", int(y.sum()))
print("AUC", round(roc_auc_score(y, pred), 3))
print("混淆矩阵\n", confusion_matrix(y, (pred >= 0.5).astype(int)))
步骤 检查点 若跳过会怎样
读表并跳表头 行数应为九百 第一行被当数据
按记录聚合 行数应为三百 三路跨折泄漏
分层五折 每折阳性约八例 某折可能没有阳性
报告混淆矩阵 同时看灵敏度与特异度 单看准确率会被阴性主导

跑完通常得到一个不算高但明显高于随机的 AUC。它的用途是建立基线:后续改进都要与它比,且在同一套划分、同一批特征、同一档滤波下比;单条记录的检查方式见 §4.2 的案例。

9.3 引用方式

官方要求引用 2008 年的方法学论文,而不是只引用平台页面。若同时使用了平台的分发服务,还应按平台惯例补一条平台引用。

Fele-Žorž G, Kavšek G, Novak-Antolič Ž, Jager F.
A comparison of various linear and non-linear signal processing techniques
to separate uterine EMG records of term and pre-term delivery groups.
Medical & Biological Engineering & Computing. 2008;46(9):911-922.
doi:10.1007/s11517-008-0350-y
数据来源:Term-Preterm EHG Database (TPEHG DB), version 1.0.1.
PhysioNet. doi:10.13026/C2FW2V. 许可:ODC Attribution 1.0.
引用要素 是否必写 说明
方法学论文 是 官方指定文献
版本号 建议 2012 年补字段改变了头文件内容
DOI 建议 平台与论文各有一个
许可 是 ODC Attribution 1.0,需署名

§10 AI 使用声明

项目 说明
内容生成 本篇由 AI 辅助撰写,事实以官方页面、随库文件与论文摘要为准
数字来源 规模、结构、标签类数字均取自官方页面与头文件,未做分布统计
未核实项 胎盘位置取值编码、剔除伪迹的具体判据、特征是否裁剪后计算
推断边界 采样率与用途的对应关系属于信号处理常识,非官方表述
未做的事 未下载全量包做逐条统计,未重跑论文实验,未做模型训练
已知风险 同域资源名称相近,合并使用时存在病例混淆风险
更新责任 官方版本变动后应复核版本号与头文件字段
适用提示 任何基于本库的性能结论都需外部队列复核后方可外推

常见误读(避坑清单)

说法 实际 证据
这是胎心电子库 记录对象是子宫肌电,二十赫兹采样留不住心电形态 官方摘要写明 uterine EMG
三百条记录来自三百次不同孕周的采样 每次妊娠只取一条,孕周集中在两个窗口 官方写明每次妊娠一条
库里有宫缩起止标注 只有结局二分标签,无事件标注 官方未列任何事件标注文件
可以拿它算胎心率 频段与采样率都不支持 采样率二十赫兹,奈奎斯特十赫兹
有九百个样本 九百行是三百条记录乘三路通道 特征表每条记录三行
引产与剖宫产病例也在里面 这两类在入库时被明确剔除 官方筛选说明
官方写三十分钟就是精确时长 头文件采样点折算约二十九分二十三秒 采样点数除以采样率
滤波通道可以整段使用 首尾各一百八十秒是暂态,应丢弃 官方使用提示
特征值一定在全段上算 官方未说明是否裁剪后计算 页面无相关表述
在它上面 AUC 高就说明能临床用 单中心、阳性三十八例,外推无依据 分组规模与来源单一

FAQ

Q1:TPEHG 是胎心电数据集吗?
不是。它记录子宫平滑肌的电活动,官方摘要写的是 uterine EMG;二十赫兹连胎心 QRS 的形态都留不住。

Q2:三百条记录对应多少名孕妇?
三百名。官方写明每次妊娠只取一条记录,因此记录数、妊娠数、人数三者相等。

Q3:为什么每条记录只有三十分钟?
官方未解释时长选择的理由。可用部分约二十四分钟,因为滤波通道两端各有一百八十秒暂态。

Q4:二十赫兹会不会太低?
对子宫肌电不算低,有效成分在零点一至四赫兹,有十倍余量;对胎心电则远远不够。

Q5:能不能直接训练早产预测模型?
可以跑通流程,但不能据此宣称临床可用。阳性三十八例、单一中心,性能结论都需外部队列复核。

Q6:特征表里的九百行怎么用?
先按记录名聚合到三百行再划分。直接对九百行交叉验证会让同一条记录的三路跨折泄漏。

Q7:三档滤波该选哪一档?
复现论文选零点三至三赫兹,那是论文报告判别力最强的一档;研究极慢基线则用零点零八至四赫兹。选择应写进方法。

Q8:为什么排除引产和剖宫产?
官方只写了排除,未给动机。后果是队列只剩自然临产,研究医源性分娩时完全用不上。

Q9:临床字段为什么有 None?
八项临床信息直到 2012 年才补进头文件,早年记录缺项更多。应作缺失处理,不能当成零。

Q10:能不能与 ICEHG DS 合并使用?
可以,但要显式加来源标记。两库电极与记录名风格接近,混放容易把引产病例当成自然临产。

Q11:这个库还会更新吗?
现行版本 v1.0.1 发布于 2012 年 8 月,此后未见版本变动;原始池是否再扩充,官方未作说明。

Q12:引用时该引哪一篇?
引 2008 年那篇方法学论文,这是官方指定文献;若用了平台分发服务,再补一条平台引用并写全版本号。

术语表

术语 英文 含义
子宫肌电 electrohysterogram, EHG 子宫平滑肌电活动的体表记录
早产 preterm birth 妊娠不足三十七周分娩
足月 term delivery 妊娠满三十七周及以上分娩
孕周 gestational age 自末次月经起算的妊娠时长
记录时孕周 recording time 采集当时的妊娠时长
差分信号 differential signal 两枚电极电位相减所得
共模抑制 common mode rejection 差分对共同干扰的抵消能力
带通滤波 band-pass filter 只保留指定频段的滤波
巴特沃斯滤波器 Butterworth filter 通带平坦的经典滤波器类型
双通滤波 double-pass filtering 正反各滤一次以消除相位失真
四阶 fourth order 滤波器阶数,决定滚降陡度
暂态 transient 滤波起始与结束段的非稳态响应
均方根 root mean square, RMS 信号幅度的有效值
中值频率 median frequency 功率谱能量中分点对应频率
峰值频率 peak frequency 功率谱最大值对应频率
样本熵 sample entropy 序列复杂度的度量,值越低越规律
产次 parity 既往分娩次数
宫颈漏斗状改变 funneling 宫颈内口呈漏斗状开放的超声征象
引产 induction of labour 人工方式启动产程
剖宫产 cesarean section 手术娩出胎儿
WFDB WaveForm DataBase 生理信号存储与交换的通用格式
ODC Attribution ODC-By 要求署名的开放数据许可

附录 A:核心数字核对表

项 值 来源 来源层级
记录总数 300 官方页面 官方页面
足月例数 262 官方页面 官方页面
早产例数 38 官方页面 官方页面
孕 26 周前例数 162 官方页面 官方页面
孕 26 周及以后例数 138 官方页面 官方页面
原始池规模 近 1300 条 官方页面 官方页面
电极数 4 官方页面 官方页面
采样率 20 赫兹 官方页面与头文件 官方页面
量程 正负 2.5 毫伏 官方页面,头文件可反推 官方页面
单条时长 30 分钟 官方页面 官方页面
采样点数 35260 头文件 随库文件
解压体积 245.4 MB 官方页面 官方页面
特征表行数 900 每份 随库文件 随库文件
暂态裁剪 首尾各 180 秒 官方页面 官方页面
版本 1.0.1 官方页面 官方页面
DOI 10.13026/C2FW2V 官方页面 官方页面

附录 B:数字的来源分层

层级 含义 本篇涉及的数字
官方页面 平台词条正文直接写明 记录数、分组数、电极位置、采样率、时长、滤波档位、许可、版本
随库文件 头文件、汇总表、特征表可直接读出 采样点数、字段取值、特征行数、孕周精度差异
论文摘要 期刊摘要中报告的结果 三档滤波下的 p 值、组间比较结论
折算与推断 由已知量计算得出,非官方公布 可用时长约二十四分钟、全库约一百五十小时

前三层可以直接引用,第四层必须标注为折算。折算里最容易出问题的是时长:三百条乘三十分钟得一百五十小时,扣掉暂态后约一百二十小时,两个数字都可用,但要说清是哪一个。

折算项 算式 结果 备注
全库名义总时长 300 乘 30 分钟 150 小时 未扣暂态
全库可用总时长 300 乘 24 分钟 120 小时 扣掉两端暂态
单条采样点数 20 赫兹乘 1763 秒 35260 与头文件一致
单条数据体积 12 路乘 35260 点乘 2 字节 约 826 千字节 未含头文件

附录 C:完整参考文献

  1. Fele-Žorž G, Kavšek G, Novak-Antolič Ž, Jager F. A comparison of various linear and non-linear signal processing techniques to separate uterine EMG records of term and pre-term delivery groups. Medical & Biological Engineering & Computing. 2008;46(9):911-922. doi:10.1007/s11517-008-0350-y
  2. Verdenik I. Multilayer prediction model for preterm delivery. 博士论文,卢布尔雅那大学医学院,2002.
  3. Kavšek G. Electromyographic activity of the uterus in threatened preterm delivery. 硕士论文,卢布尔雅那大学医学院,2001.
  4. Jager F. Term-Preterm EHG Database (TPEHG DB), version 1.0.1. PhysioNet. doi:10.13026/C2FW2V
  5. Goldberger A, Amaral L, Glass L, et al. PhysioNet: components of a new research resource for complex physiologic signals. Circulation. 2000;101(23):e215-e220.

前三条是官方页面列出的参考文献,第四条是数据的持久标识,第五条是平台层面的通用引用。

附录 D:任务代码

把读信号、裁剪、算四个特征、输出一张表串成一条脚本,可以作为自建特征流程的起点。

#-- 从原始记录重算四类特征,输出与官方特征表同构的 DataFrame
import numpy as np
import pandas as pd
import wfdb
from scipy.signal import welch

FS, TRIM_S = 20, 180

def sample_entropy(x, m=3, r_ratio=0.15):
    x = np.asarray(x, dtype=float)
    r = r_ratio * np.std(x)
    def phi(mm):
        n = len(x) - mm + 1
        if n <= 0:
            return 0.0
        emb = np.array([x[i:i + mm] for i in range(n)])
        cnt = sum(int(np.sum(np.max(np.abs(emb[i + 1:] - emb[i]), axis=1) <= r))
                  for i in range(n))
        return cnt / (n * (n - 1) / 2) if n > 1 else 0.0
    a, b = phi(m + 1), phi(m)
    return -np.log(b / a) if a > 0 and b > 0 else np.nan

def features(record):
    rec = wfdb.rdrecord(f"tpehgdb/{record}", pn_dir="tpehgdb")
    sig, names = rec.p_signal, rec.sig_name
    rows = []
    for ch in (1, 2, 3):
        x = sig[:, names.index(f"{ch}_DOCFILT-4-0.3-3")]
        x = x[TRIM_S * FS:len(x) - TRIM_S * FS]
        f, pxx = welch(x, fs=FS, nperseg=min(1024, len(x)))
        rows.append({"record": record, "chann": ch,
                     "rms": float(np.sqrt(np.mean(x ** 2))),
                     "fmed": float(f[np.searchsorted(np.cumsum(pxx) / np.sum(pxx), 0.5)]),
                     "fpeak": float(f[int(np.argmax(pxx))]),
                     "sampen": float(sample_entropy(x))})
    return pd.DataFrame(rows)

table = pd.concat([features(r) for r in ("tpehg1021", "tpehg1007", "tpehg991")])
print(table.round(4).to_string(index=False))

这段代码与官方特征表的差异在熵的实现细节上,官方未公开具体算法,数值不会逐位一致。它的用途是建立可重复的自算路径,不是替代官方表。

附录 E:如果只记五件事

序 要点
1 它记的是子宫肌电,不是胎心电,二十赫兹采样决定了这一点
2 三百条记录对应三百次妊娠,每人一条,横断面而非纵向
3 结局只有足月与早产二分,没有任何事件级标注
4 引产与剖宫产被明确排除,同域引产库正好收这两类
5 附三份现成特征表,入门门槛极低,但九百行不是九百个样本

编辑说明

本篇依据 2026 年 10 月 28 日访问到的官方页面 v1.0.1、随库附带的记录清单、组别汇总表与一份特征表,以及 2008 年论文的期刊摘要撰写。头文件字段、采样点数与孕周精度差异来自逐文件读取;p 值来自论文摘要。未下载完整数据包,因此未做任何分布统计,也未重跑论文实验。

未能核实的项目已在正文标注,包括胎盘位置的取值编码、剔除伪迹的具体判据、特征是否在暂态裁剪后计算、以及官方称三十分钟与头文件折算时长的差额来源。这些项目需要向数据贡献者确认,或获取采集原始记录后才能定论。


相关数据集导航

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

  • mghdb — 共享标签:生理信号 / 心电信号 / 电子健康记录
  • ob1db — 共享标签:生理信号 / 心电信号 / 电子健康记录
  • mimic3wdb — 共享标签:生理信号 / 电子健康记录
  • mimic3wdb-matched — 共享标签:生理信号 / 电子健康记录
  • mimic4wdb — 共享标签:生理信号 / 电子健康记录
  • pulsedb — 共享标签:生理信号 / 心电信号 / 电子健康记录
  • argo — 共享标签:生理信号 / 心电信号
  • icehg-ds — 共享标签:生理信号 / 心电信号
  • symile-mimic — 共享标签:心电信号 / 电子健康记录
  • cinc-2015 — 共享标签:生理信号 / 心电信号 / 电子健康记录

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

返回 AI-Ready 数据集