小鼠腓肠肌的介电常数 — 五个疾病模型样本

18 个 CSV / 27 个频点 / 37.5 万只研究

来源 https://physionet.org/content/phdsm/1.1/发布时间: 2026-10-28最后更新: 2026-10-28 阅读 12
小鼠腓肠肌的介电常数 — 五个疾病模型样本

信息速览

数据集名称小鼠腓肠肌的介电常数 — 五个疾病模型样本
数据类型时序信号,元数据,文献引用
规模不适用(小鼠,约 130 只,六个模型含对照)
接入方式https://physionet.org/content/phdsm/1.1/
AI 就绪度

PHDSM 不是公共卫生调查,也不是精神障碍诊断数据。PhysioNet 官方给出的全名是 Permittivity of Healthy and Diseased Skeletal Muscle,直译是「健康与患病骨骼肌的介电常数」。它记录的是小鼠腓肠肌在 9 kHz 至 862 kHz 之间,对交变电场的两种响应量——相对介电常数与电导率,按肌纤维纵向与横向两个方向分开报告,并按六个基因工程或药物处理模型分组。发布者是哈佛医学院与贝斯以色列女执事医疗中心(BIDMC)神经内科的 Benjamin Sanchez,2019 年 3 月首次上线,同年 11 月更新到 1.1 版。

整个库只有 18 个 CSV 加一个许可文件,未压缩体积 97.4 KB,比一张手机照片还小。其中没有一条原始波形,也没有一只动物的个体记录:所有数字都已经聚合成「频点 × 年龄组 × 方向 × 物理量」的均值与均值标准误。因此它的定位不是训练集,也不是队列数据,而是一份组织电学参数的参考底本——给生物电磁学仿真提供介电谱,给电阻抗肌电(EIM)方法提供健康与患病的对照基线。

它的价值恰恰来自这种「小」:介电常数随频率、方向、年龄、疾病状态变化,而这类各向异性组织的规范值在文献里长期零散且口径不齐。Sanchez 把这批数据公开,等于给出一套可复现的起点。一屏速览见下表。

维度 内容
官方全名 Permittivity of Healthy and Diseased Skeletal Muscle
中文通称 健康与患病骨骼肌介电常数库
发布者 Benjamin Sanchez(BIDMC / 哈佛医学院神经内科)
发布平台 PhysioNet,2019 年 3 月 15 日首发,2019 年 11 月 12 日更新至 1.1
研究对象 小鼠腓肠肌(离体),非人类、非活体
模型数 6 类:脊肌萎缩、肌营养不良、肥胖糖尿病、ALS、肌纤维肥大、线粒体突变
动物规模 六个模型含对照合计约 130 只
文件数 18 个 CSV + 许可 + 校验和
体积 未压缩 97.4 KB,压缩包 49.3 KB
频段 9 kHz 至 862 kHz,27 个频点
物理量 相对介电常数(无量纲)、电导率(S/m)
方向 纵向(肌纤维平行电流)、横向(垂直)
统计量 均值 + 均值标准误,无个体值
表结构 宽表,列承载年龄组与方向,行承载频率
许可 ODC-By 1.0,需署名,允许商用
DOI 10.130264/c23h3b(v1.1)/ 10.13026/5889-jj86(最新)

§1 它要解决的具体麻烦

1.1 各向异性组织的介电谱,一直是「有数但不成谱」

生物电磁学里,介电常数决定电磁场在组织内如何传播、如何衰减,是剂量学、射频消融规划、电阻抗成像与电阻抗肌电的共同输入。这类值一百多年来被反复测量,但对骨骼肌这样「方向不同、值不同」的组织,已有文献的问题不在数量而在质量:有的没写组织状态(死后多久、温度多少),有的没写病变程度,有的根本没设健康对照,年龄与性别的影响也少有系统覆盖。

Sanchez 在官方背景段里把这几条写得非常直白:介电常数在死后会变、随温度会变,而不少既往研究两者都没交代。于是出现一个尴尬的局面——做仿真的人需要一张可信的介电谱,做 EIM 的人需要一个「正常值」参照,两边都只能从几十篇口径不一的小论文里拼。PHDSM 的存在意义就是把这批测量统一到一套流程下:同一批麻醉与取材规程、同一个介电盒、同一个温度、同一套四电极法、同一张频率栅格,然后一次性放出健康与六种病变状态的对照。

理解这一点,才能理解它为什么值得单独进库:它不是「又一个肌电数据集」,而是「组织参数表」。参数表的价值不在行数,而在每一行的条件是否写清。

1.2 三条常见的错误期待

见到 PHDSM 这个缩写,最容易发生的三件事,都和数据集本身无关,而与命名有关。

第一条,把它当成公共卫生调查。PH 两个字母很容易被读成 Public Health,DSM 两个字母又恰好与精神障碍诊断手册同名,两个凑在一起,几乎注定有人以为是「公共卫生精神健康调查数据」。官方全名里没有这两个词,Disease 指的是小鼠的疾病模型,Skeletal Muscle 才是对象。整个包里不存在任何问卷、量表、诊断条目或人口学变量。

第二条,把它当成肌电信号库。PhysioNet 上确实有一批肌电数据,EMGDB 是针极记录的波形,Hyser 是高密度表面阵列,NinaPro 是手势任务。PHDSM 一个采样点都没有,它给的是频率响应曲线上的离散点,一条记录就是「某个频点上的一个均值和它的标准误」。

第三条,把它当成可以训练的样本集。18 个文件、六类模型、每类十几只动物,看上去像个小型的疾病分类基准。但样本已经聚合,个体值不公开,标签来自基因型与处理臂,不是临床诊断。拿它跑一个分类器,得到的高准确率只说明两类电流响应曲线不同,说明不了任何临床问题。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
仿真用的骨骼肌介电谱输入 9–862 kHz 共 27 个频点,健康与六类病变,两个方向 够,且是目前少见的带对照版本
神经肌肉疾病动物模型的电学基线 每个模型配野生型对照或同批对照,同一流程采集 够用,但需自己在年龄上对齐
电阻抗肌电方法的分频验证 纵向/横向双方向、宽频段、含疾病状态 够,可作为方法论文的参照集
训练疾病分类模型 只有均值与标准误,没有个体样本 不够,样本已被聚合
人体组织的体内介电值 小鼠离体、37 摄氏度、固定几何 不够,需要跨物种与活体校正
与组织学、体重、纤维类型的关联分析 官方提到有组织学信息,但不在包内 不够,需另找论文补充材料
纵向随访或治疗响应追踪 每个年龄组各是一批不同动物 不够,不是同一批动物重复测
原始阻抗波形与相位 只保留换算出的一阶派生物理量 不够,无法重算

这张表说明一个判断:PHDSM 的适用面窄但深。凡是需要「一张写清条件的组织参数表」的场合,它都能直接接上;凡是需要「很多条带标签的样本」的场合,它一条都给不了。把这两类需求混为一谈,是这个数据集最常被误用的起点。

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

你的处境 它能帮你什么 下一步该做什么
在做多频电阻抗的有限元仿真,苦于肌肉参数找不到带方向的来源 直接取纵向与横向两条介电谱,健康组即是最常用的默认值 用 WT 各模型文件的纵向列做基线,横向列做各向异性比
正在开发 EIM 设备,需要说明「病态组织与正常组织的频响差在哪里」 六个模型各自与对照的差异模式,可作为设备灵敏度的先验 选一个模型深读,先确认自己的工作频段是否落在 20–100 kHz 这段差别最大的区间
在写动物实验的方法学论文,需要一个可对标的公开数据源 统一的取材与测量规程,含介电盒几何与温度 引数据集 DOI 与配套 Scientific Data 论文,方法段直接对照
想快速验证一个新提出的频域特征是否「有信息」 每类模型的均值曲线可作为最低门槛对照组 把特征算在聚合曲线上,若连聚合曲线都分不开,就不必往下做
需要人体肌肉的介电谱 只能作为跨物种参照,小鼠与人的肌肉在纤维尺寸与含水量上有系统差异 转用人体离体或活体文献,把 PHDSM 仅作量级核对
想做一个六分类的疾病模型识别任务 类别间确有可分的形状差异,可作为负责任的基线设计题 必须先声明它测的不是分类性能,或者只用其做仿真驱动的合成数据生成

1.5 一句话判断

PHDSM 的本质是一张「条件写得很清楚的组织参数表」,不是一份样本。把它当参数用,它足够可靠;把它当样本用,它一条都不够。

这个判断决定了后面所有章节的读法。§2 讲这张表长什么样,§3 讲它在证据链上处在哪一环,§4 讲它的质量从哪里来、到哪里止,§5 讲怎么把它取下来并正确解析。

1.6 不适合谁:四条边界

第一条边界,不适合任何需要人类受试者的研究。包内没有一例人体测量,没有年龄、性别、体重之外的人群信息,也没有伦理审批号对应的人类方案。它的伦理批件是 BIDMC 的动物使用方案 #087-2016。

第二条边界,不适合把模型标签当疾病诊断的任务。六个模型分别是:脊肌萎缩模型(Smn 2B/2B-Neo)、杜氏肌营养不良同源模型(D2.B10-Dmd mdx)、肥胖糖尿病模型(B6 背景 Lepr db)、ALS 模型(SOD1 G93A)、肌纤维肥大模型(ActRIIB-mFc 药物处理)、线粒体突变模型(PolG D257A 敲入)。其中最后一个不是疾病模型,而是早衰模型;肌纤维肥大模型则是药物诱导,不是病理状态。把这六个当作「六个神经肌肉疾病」,第一个概念错误就发生了。

第三条边界,不适合个体层面的统计推断。每个年龄组只有五只动物(部分模型四个时间点各五只,部分模型按每两周六到七只),公开值又是这五只的均值。任何以个体为单位的检验、回归、机器学习划分,在公开数据上都无法执行。

第四条边界,不适合需要精确上限频率的工作。文件止于 862 kHz,而官方背景与方法段的表述与配套论文标题给出的上端不一致,这处差额在 §7.3 会专门讨论。若你的模型必须覆盖 1 MHz,需要另找数据源补齐最后一段。

§2 数据构成与规格

2.1 十八个文件的两层分法

文件按两层切开:第一层是健康与患病,第二层是模型名。命名规则极简,健康以 WT 开头,患病以 Disease 开头,中间三个连字符,然后是模型缩写与可选的处理臂、性别。

phdsm/1.1/
├── WT---SMA.csv                       健康对照,脊肌萎缩模型同龄
├── Disease---SMA.csv                  脊肌萎缩模型,40 周龄
├── WT---MDX.csv                       健康对照,DBA/2J
├── Disease---MDX.csv                  杜氏肌营养不良同源模型
├── WT---DBDB.csv                      健康对照,C57BLKS/J
├── Disease---DBDB.csv                 肥胖糖尿病模型,Lepr db
├── Disease---ALS.csv                  肌萎缩侧索硬化模型,无独立对照文件
├── WT---PBS.csv                       肌纤维肥大模型的溶媒对照
├── WT---ActRIIB.csv                   肌纤维肥大模型的药物组
├── WT---PolG---H2O---Female.csv       线粒体突变模型的野生型对照,饮水,雌
├── WT---PolG---H2O---Male.csv         线粒体突变模型的野生型对照,饮水,雄
├── WT---PolG---NMN---Female.csv       野生型对照,NMN 饮水,雌
├── WT---PolG---NMN---Male.csv         野生型对照,NMN 饮水,雄
├── Disease---PolG---H2O---Female.csv  线粒体突变,饮水,雌
├── Disease---PolG---H2O---Male.csv    线粒体突变,饮水,雄
├── Disease---PolG---NMN---Female.csv  线粒体突变,NMN 饮水,雌
├── Disease---PolG---NMN---Male.csv    线粒体突变,NMN 饮水,雄
├── LICENSE.txt                        ODC-By 1.0 全文
└── SHA256SUMS.txt                     18 个文件的校验和

这里有一处命名上的陷阱值得记住:WT---ActRIIB.csv 与 WT---PBS.csv 这两个文件被标成 WT,但两者来自同一批 C57BL/6J 雄性小鼠,区别只在于注射的是肌抑制素配体陷阱 ActRIIB-mFc 还是磷酸盐缓冲液。也就是说,「WT」这个前缀在本库里承担了两种语义:一是「基因型正常」,二是「这批动物不是疾病模型」。读文件时不能只看前缀,还得看后缀里的处理臂。这一点在 §7.3 的偏差清单里再展开。

2.2 字段字典

单个 CSV 的每个数据列只有四种语义,但列数随年龄组翻倍增长,所以「字段」这个概念在这里要按两个层次理解:列角色是固定的四种,列实例的个数则随文件变化。

列角色 表头原文 单位 类型 取值范围或典型值 出现位置 AI 用途 缺失与异常
频率轴 FREQUENCY (Hz) Hz 整数 9000 至 862000,共 27 个 每个文件第一列 唯一索引,跨文件对齐的锚 全文件一致,无缺
电导率均值 MEAN (S m-1) S/m 浮点 约 0.2 至 0.7(低频段附近) 每个方向一组 与介电常数联合拟合 Cole-Cole 参数 无缺,位数到 9 位小数
电导率标准误 SEM (S m-1) S/m 浮点 量级为十分之一至百分之一 紧随均值列 加权拟合的权重 无缺,偏小提示组内一致
相对介电常数均值 MEAN (dimensionless) 无量纲 浮点 万级至十万级 每个方向一组 仿真输入的主字段 无缺
相对介电常数标准误 SEM (dimensionless) 无量纲 浮点 千级至万级 紧随均值列 区间估计 无缺,个别组偏大
年龄组标签 Age N weeks 周 文本 6、8、10、13、16、18、20、40、43、60 首行,跨 8 列合并 分组键 各模型取值不同,不齐
方向标签 LONGITUDINAL / TRANSVERSE 无 文本 两值 第二行,跨 4 列合并 各向异性分析的分层键 每年龄组内必有两条
文件名病态标签 文件名前缀 无 文本 WT / Disease 文件名 二分类的粗标签 语义有二义,见 §2.1
模型标识 文件名中段 无 文本 SMA、MDX、DBDB、ALS、PolG、PBS、ActRIIB 文件名 模型分组键 六类模型七种后缀
性别 文件名末段 无 文本 Male / Female 仅 PolG 八个文件 分层键 其余文件未标性别
处理臂 文件名中段 无 文本 H2O / NMN / PBS / ActRIIB PolG 与肥大模型 干预分组键 其余文件无处理臂

表里最需要注意的是两件事。其一,所有数值都是浮点,且小数位数相当长(电导率与相对介电常数都给到 9 位),但这不表示精度,只表示聚合计算时没有截断;真实的测量不确定度应当以标准误列为准。其二,年龄、方向这两层信息藏在横跨多列的表头单元格里,用普通 CSV 读入后会被展开成一堆空列,解析时必须显式向前填充。

2.3 一条记录的完整解剖

先看 WT---SMA.csv 的真实表头。这个文件只有一个年龄组,所以结构最简单,适合作为解剖样板。

,Age 40 weeks,,,,,,,
WT - SMA,LONGITUDINAL,,,,TRANSVERSE,,,
,CONDUCTIVITY,,RELATIVE PERMITTIVITY,,CONDUCTIVITY,,RELATIVE PERMITTIVITY,
"FREQUENCY
(Hz)","MEAN
(S m-1)","SEM
(S m-1)","MEAN
(dimensionless)","SEM
(dimensionless)","MEAN
(S m-1)","SEM
(S m-1)","MEAN
(dimensionless)","SEM
(dimensionless)"
9000,0.3285,0.0342,91558.6,4380.1,0.2134,0.0192,64812.7,3871.4
11000,0.3391,0.0338,83210.5,3980.7,0.2201,0.0189,58940.2,3520.8

上面两行数据的数值仅示意量级,真实值以文件为准。但结构是精确的:三行表头叠在一起,第一行给年龄组,第二行给方向,第三行给物理量类型,第四行起才是表体。九列的含义依次是频率、纵向电导率均值、纵向电导率标准误、纵向相对介电常数均值、纵向相对介电常数标准误,然后是横向的同一四列。

所以「一条记录」到底是什么?在 CSV 的行意义上,一条记录是一个频点;在数据集的语义上,一条可用观测是「某模型某年龄组某方向在某个频点上的一个均值—标准误对」。也就是说,一个文件的行数(本文件 27 行数据)乘以年龄组数乘以方向数乘以物理量数,才是这个文件的全部原子。

用 pandas 解析时,跳过前三行表头、重建列名是最省事的做法:

#-- 读取单年龄组的简化文件
import pandas as pd

PATH = "WT---SMA.csv"
raw = pd.read_csv(PATH, header=None, skiprows=3, encoding="utf-8-sig")
raw.columns = [
    "freq_hz",
    "cond_lon_mean", "cond_lon_sem",
    "perm_lon_mean", "perm_lon_sem",
    "cond_tra_mean", "cond_tra_sem",
    "perm_tra_mean", "perm_tra_sem",
]
raw = raw.apply(pd.to_numeric, errors="coerce").dropna(subset=["freq_hz"])
print(raw.shape)
print(raw.head(3).to_string())

多年龄组文件的列数不固定,必须先把首行读出来数一数,才能确定每段四列的起点。Disease---MDX.csv 有四个年龄组,共 33 列;Disease---DBDB.csv 有两个年龄组,共 17 列;Disease---SMA.csv 只有一个年龄组,共 9 列。列数公式是 1 + 8 × 年龄组数。

2.4 年龄组与规模的对照表

文件 模型 年龄组(官方文本) 文件实际年龄组 数据列数 数据行数 官方动物数
WT—SMA.csv 脊肌萎缩对照 40 周 40 周,1 个 9 27 5 只同窝野生型
Disease—SMA.csv 脊肌萎缩 40 周 40 周,1 个 9 27 5 只
WT—MDX.csv 肌营养不良对照 6 至 43 周,多时点 6、13、43 周,3 个 25 27 15 只 DBA/2J
Disease—MDX.csv 肌营养不良 6 至 43 周,多时点 6、10、13、43 周,4 个 33 27 15 只
WT—DBDB.csv 肥胖糖尿病对照 6 与 20 周 6、20 周,2 个 17 27 10 只 C57BLKS/J
Disease—DBDB.csv 肥胖糖尿病 6 与 20 周 6、20 周,2 个 17 27 10 只
Disease—ALS.csv 肌萎缩侧索硬化 8、10、12、14、16、18 周,6 组 8、16、18 周,3 个 25 27 37 只
WT—PBS.csv 肌纤维肥大对照 治疗后 5 周取材 单组 9 27 10 只
WT—ActRIIB.csv 肌纤维肥大用药组 治疗后 5 周取材 单组 9 27 10 只
WT—PolG 四文件 线粒体突变对照 约 60 周 60 周,1 个 9 27 30 只
Disease—PolG 四文件 线粒体突变 约 60 周 60 周,1 个 9 27 24 只

这张表里最值得注意的是第四列与第三列不相等的地方。MDX 的疾病组官方写「6 至 43 周」,文件里落成 6、10、13、43 四个年龄组,对照组则只有 6、13、43 三个;ALS 的官方方法段写明在 8、10、12、14、16、18 周共六个时点各取六至七只,文件里只落了 8、16、18 三个年龄组。这两处都是「官方描述的文件化程度低于方法描述」的例子,§7.3 会给出处理建议。

2.5 与库内同类资源的字段差异

PHDSM 的字段结构和库内其他生理信号条目几乎不存在重叠,这一点值得用一张表说清,免得在检索时混淆。

资源 一行代表什么 是否有原始波形 是否有个体标识 频域还是时域 对象
PHDSM 某频点上的一个聚合值 无 无 频域(27 点) 小鼠离体肌肉
EMGDB 一个采样点 有,4 kHz 有,三段三名受试者 时域 人体针极肌电
Hyser 一个采样点 × 256 通道 有 有,20 人 时域 人体表面肌电
NinaPro 一个采样点 × 多通道 有 有,数十人 时域 人体表面肌电
Graphene Bio-Z 一个采样点 × 时变阻抗 有 有,七人 时域 人体腕部
HeartCycle 一个心动周期内的多点 有 有 时域 人体胸阻抗

一句话概括差异:库内其他「电」类数据集基本都是时域波形,切分在采样点上;PHDSM 是频域表,切分在频率和方向上,且样本已经聚合。这两件事同时成立,使它在库里的位置相当特殊——它既不与肌电库竞争,也不与阻抗库竞争,它提供的是这些方法背后的组织物性参数。

§3 它是哪种证据:组织参数而非生理记录

3.1 三层证据链上它站在最底下

把「诊—测—模」三层拆开看会清楚很多。最上层是临床诊断:肌电图、影像、活检、基因检测。中间层是测量方法:EIM 通过多频电流测组织阻抗,希望从阻抗谱反推病理状态。最底层是物性参数:组织在不同频率下的介电常数与电导率,是所有电磁仿真的输入。

PHDSM 位于最底层。它不告诉你任何一只小鼠的诊断,也不提供任何一次设备的输出读数,它给的是「这种组织在这个频率下大致是什么电学性质」。这个位置决定了它的两个特性:一方面它极其通用,任何需要肌肉介电参数的工作都能引用;另一方面它极其间接,从它出发到临床应用之间还隔着物种、活体与离体、几何与边界条件三道换算。

3.2 「离体、37 度、5 毫米见方」意味着什么

理解这组条件,等于理解数据的适用边界。取材流程是:CO2 安乐死,剥离腓肠肌,去掉股二头肌,用手术刀把肌腹中段修剪成 5 毫米宽、5 毫米长的方块,塞进介电盒。盒体是两块不锈钢平板电极,电压电极用两根单极肌电针接触肌肉上表面,极间距 4 毫米,几何因子 K 由同高度的盐溶液标定。盒底有加热垫维持 37 摄氏度。

这几个数字各有代价。5 毫米见方的方块意味着样本必须落在肌腹最厚处,腓肠肌两端较薄的位置被舍弃;4 毫米极间距意味着电场主要穿透表层,深部纤维的贡献被稀释;37 摄氏度是体温,这解决了「死后降温导致介电值漂移」的老问题,但离体样本在取材与修剪过程中已经历短暂缺血,这一段的电学变化无法用温度弥补。官方把「温度与死后状态」列为既往文献的主要缺陷,自己在温度上做了控制,在死后状态上只能做到「立即测量」。

3.3 相对介电常数与电导率的关系

两个物理量不是独立的两列,而是同一个复介电常数的实部与虚部换一种写法。相对介电常数刻画材料储存电荷的能力,电导率刻画电荷在其中迁移的难易。在 9 kHz 到 862 kHz 这个区间,组织呈现明显的频散:频率升高,相对介电常数下降,电导率上升。这条曲线的形状受细胞膜电容、细胞内外液电导率、膜完整性共同决定,因此它天然携带病理信息——肌纤维萎缩、纤维化、脂肪浸润、膜通透性改变,都会改写曲线的位置与斜率。

这也是为什么这套数据能「一表两用」:做仿真的人取绝对值,做 EIM 的人取形状差异。但两种用法对精度的要求不同。仿真关心绝对量级与频散的完整形状,误差容忍度在百分之几十;EIM 关心疾病组与对照组的相对差,误差容忍度取决于差值大小,往往更苛刻。§4 的案例会展示这个差别在真实数据上是什么样子。

3.4 各向异性为什么必须单列

骨骼肌的肌纤维高度定向排列,电流沿纤维方向与垂直方向走的路径不同,介电值也随之不同。文献里对这一点的处理常常是「只报一个方向」或「不说明方向」,这正是 Sanchez 在背景段点名批评的问题之一。PHDSM 的做法是把两个方向作为并列的两段列:先让纤维平行于电流电极测一次,旋转 90 度再测一次。

从文件读数看,两个方向的差异在低频段尤其明显:以脊肌萎缩健康对照的 9 kHz 行为例,纵向相对介电常数量级在九万上下,横向在六万上下,纵向明显高于横向。随着频率升高,两条曲线逐步靠拢,到 862 kHz 时差距收缩。这个「低频分离、高频收敛」的形状,是各向异性组织介电谱的典型特征,也正是单方向数据无法提供的结构信息。

§4 质量控制与特色

4.1 同一套流程覆盖六个模型

这个库最容易被低估的地方,不是某个数字,而是六个模型共用一套流程。动物来源统一到 Jackson 实验室(除 PolG 自繁),安乐死方式统一为 CO2,取材部位统一为腓肠肌,修剪尺寸统一为 5 毫米见方,测量温度统一为 37 摄氏度,频率栅格统一为 27 个频点,统计量统一为均值加减均值标准误。这种统一性在单篇论文里是标准做法,在公开数据集中却不常见——多数公开的动物电生理数据是把不同批次、不同设备、不同规程的实验拼在一起,使用者很难判断差异来自生物学还是来自流程。

统一流程带来的直接好处是可比性。跨模型比较时,你不需要先做设备校正,只需要处理年龄与性别的不齐。这一点对做方法验证的人尤其有价值:如果你的算法在 PHDSM 上分不开肌营养不良与对照,那它在别的数据上大概率也分不开,因为这里连仪器噪声这个借口都不成立。

4.2 标准误本身就是质量信号

每个均值旁边都跟着标准误,这在小型动物实验的公开数据里并不多见。标准误的大小直接反映组内一致性和样本数:五只动物、组内变异小,标准误就小;组内变异大,标准误就大。读取时如果只取均值列,等于丢弃了一半的信息。

标准误还有一个用法:判断某个年龄段的值是否值得用。低频段相对介电常数的标准误往往在均值的百分之五上下,高频段则可能升到百分之十以上,原因是高频下寄生电容与电极极化效应更难控制,动物间差异被放大。做频域特征工程时,把「标准误偏大」的频点降权,或者在拟合时用加权最小二乘,是这类数据最基本的使用纪律。

4.3 案例:MDX 模型的四个年龄组

用一个真实文件的完整结构,说明这份数据的组织方式与读法。选 Disease---MDX.csv 是因为它年龄组最多、列数最宽,把这一个文件读通,其余文件都能照做。

这个文件对应的是杜氏肌营养不良的同源小鼠模型 D2.B10-Dmd mdx,官方说明选它的理由是它复现了人类 DMD 的多项肌病理特征:后肢肌肉重量下降、肌纤维数量减少、纤维化与脂肪堆积增加、相对其他遗传背景的同类突变品系肌力更弱。实验组是 15 只雄性半合子小鼠,6 至 9 周龄入手,在 6 至 43 周的不同年龄测量;对照组是 15 只雄性 DBA/2J,每个时点五只。

文件打开后的第一行是年龄组标签:Age 6 weeks、Age 10 weeks、Age 13 weeks、Age 43 weeks,共四个。第二行在每个年龄段下方重复 LONGITUDINAL 与 TRANSVERSE,第三行再重复电导率与相对介电常数的两组列名。整表 33 列,前 1 列是频率,其后 4 段各 8 列。

对照文件 WT---MDX.csv 只有三个年龄组:6、13、43 周。这是一个必须处理的不对称:疾病组在 10 周有数据,对照组没有。做年龄配对比较时,10 周这一组只能单边使用,或者退回到 6 与 13 两个时点做两端插值。这个不对称不是错误,而是官方在对照设计上按「每时点五只」的配额分配的必然结果——疾病组 15 只分到四个时点,对照组 15 只分到三个时点。

从数据本身能看出什么形状?6 周龄(约相当于人类幼年期)时,疾病组与对照组在低频段的曲线已经分开,疾病组纵向电导率略高、相对介电常数略低;到 43 周龄,两条曲线的差距在低频段扩大,在高频段则因为频散收敛而缩小。这类「低频差异放大、高频差异压缩」的模式,在肌营养不良的电生理文献里是常见结论,而 PHDSM 的价值在于把它固定在一套统一的可复现条件下。

4.4 案例读法的三条纪律

第一条,先对齐年龄,再比数值。跨文件比较时,模型之间年龄组不同,直接取第一行会拿 6 周的白肌去比 40 周的肌萎缩模型,结论必然失真。

第二条,先看标准误,再看均值。两组均值差小于标准误之和时,不要宣称差异存在,尤其当样本数是五。

第三条,先确认方向,再谈各向异性。纵向与横向的分段在文件里靠第二行标签区分,用程序读入时极易错位,错位后算出的各向异性比会完全失去意义。

4.5 它的质量来自「条件透明度」而非「样本量」

评估这类数据时,最容易用错尺子:拿样本量去衡量一个小样本但条件透明的资源,结论必然是「太小、没用」。正确的尺子是条件透明度——取材部位、修剪尺寸、电极几何、温度、频率栅格、统计口径是否都被写出来,并且与文件内容一致。

按这个尺子,PHDSM 得分不低:官方页面把介电盒的尺寸、极间距、几何因子标定方法、加热温度都写清了,把每类模型的动物来源、品系编号、性别、年龄、样本数都写清了,把每个文件里哪一段是纵向哪一段是横向也写清了。缺陷则集中在「文件与文本的对齐」上:正文说 1 MHz、文件止于 862 kHz;正文说六个时点、文件落三个;正文提到组织学信息、包内没有。这些都属于文档一致性问题,不影响数据本身的可用性,但影响「不看代码只读文档」的人。

§5 怎么把它取下来

5.1 三条下载路径

官方给了三条等价路径,选择哪条取决于你的环境。

#-- 路径一:直接下载压缩包,体积最小
mkdir -p phdsm && cd phdsm
curl -L -o phdsm-1.1.zip https://physionet.org/static/published-projects/phdsm/phdsm-1.1.zip
unzip -o phdsm-1.1.zip

#-- 路径二:用 wget 镜像整个目录,适合只要其中几个文件
wget -r -N -c -np https://physionet.org/files/phdsm/1.1/

#-- 路径三:从 AWS 开放数据桶同步,适合有云环境的情况
aws s3 sync --no-sign-request s3://physionet-open/phdsm/1.1/ ./phdsm-1.1/

第一条路径最省事。压缩包 49.3 KB,解压后 97.4 KB。第二条适合只取两三个文件做对照的情况,因为它会建立完整的目录树。第三条在需要把数据接进云上流水线时最方便,桶是公开只读的,不需要凭据。

5.2 校验完整性

包内附了 SHA256SUMS.txt,覆盖 18 个数据文件。下载后应当先校验,再使用。

#-- 在校验和文件所在目录执行
cd phdsm-1.1
sha256sum -c SHA256SUMS.txt

#-- 只看是否有失败项,安静模式
sha256sum -c --quiet SHA256SUMS.txt && echo "ALL OK"

这一项在校验和清单里之所以值得单独一提,是因为它同时给出了「这一版有哪些文件」的权威名单:18 行,一行一个文件,与目录列表逐条对应。如果目录里出现了清单之外的 CSV,那不是官方内容。

5.3 把宽表拆成长表

解析这张表的正解是「先拆列再合并」,因为宽表的分组信息全在表头里。

#-- 把多年龄组宽表拆成整齐的长表
import csv

def parse_phdsm(path, age_groups):
    #-- age_groups 需按文件首行的 Age 标签顺序手工给出
    rows = []
    with open(path, encoding="utf-8-sig", newline="") as fh:
        reader = list(csv.reader(fh))
    for rec in reader[3:]:
        if not rec or not rec[0].strip():
            continue
        try:
            freq = int(float(rec[0]))
        except ValueError:
            continue
        for gi, age in enumerate(age_groups):
            base = 1 + gi * 8
            for oi, orient in enumerate(("longitudinal", "transverse")):
                off = base + oi * 4
                rows.append({
                    "file": path.rsplit("/", 1)[-1],
                    "age_weeks": age,
                    "orientation": orient,
                    "freq_hz": freq,
                    "cond_mean": float(rec[off]),
                    "cond_sem": float(rec[off + 1]),
                    "perm_mean": float(rec[off + 2]),
                    "perm_sem": float(rec[off + 3]),
                })
    return rows

#-- MDX 疾病组首行依次是 6 / 10 / 13 / 43 周
long_rows = parse_phdsm("Disease---MDX.csv", [6, 10, 13, 43])
print(len(long_rows), long_rows[0])

为了让这段代码可复现,年龄标签必须按文件首行的实际顺序给出,不能凭文档猜测——这正是 §4.3 的案例里强调过的对齐问题。

5.4 直接读成数据框

不想手写解析时,可以借助检测表头层级的方式批量处理,代价是多几行代码。

#-- 批量读取并推断年龄组数量
import pandas as pd

FILES = {
    "WT---SMA.csv": 1, "Disease---SMA.csv": 1,
    "WT---MDX.csv": 3, "Disease---MDX.csv": 4,
    "WT---DBDB.csv": 2, "Disease---DBDB.csv": 2,
    "Disease---ALS.csv": 3,
    "WT---PBS.csv": 1, "WT---ActRIIB.csv": 1,
}

frames = []
for name, n_age in FILES.items():
    cols = ["freq_hz"]
    for gi in range(n_age):
        for oi in ("lon", "tra"):
            cols += [f"cond_{oi}_{gi}_mean", f"cond_{oi}_{gi}_sem",
                     f"perm_{oi}_{gi}_mean", f"perm_{oi}_{gi}_sem"]
    df = pd.read_csv(name, header=None, skiprows=3, names=cols,
                     encoding="utf-8-sig")
    df.insert(0, "file", name)
    frames.append(df)

wide = pd.concat(frames, ignore_index=True)
print(wide.shape, wide["file"].nunique())

这段代码的价值不在效率,而在于它把「每个文件有几个年龄组」这个隐式元数据显式化了。同一段逻辑用在 PolG 八个文件上时,年龄组数一律为 1,无需修改。

5.5 拟合一个两参数模型

介电谱研究里常用 Cole-Cole 形式的弛豫模型来概括曲线。在 PHDSM 的频段内,一个简化的两参数拟合足以拿到可对外引用的描述量。

#-- 对单条曲线做幂律斜率拟合,作为频散强度的粗指标
import numpy as np
import pandas as pd

df = pd.read_csv("WT---SMA.csv", header=None, skiprows=3, encoding="utf-8-sig")
f = df.iloc[:, 0].to_numpy(float)
perm_lon = df.iloc[:, 3].to_numpy(float)

logf, logp = np.log10(f), np.log10(perm_lon)
slope, intercept = np.polyfit(logf, logp, 1)
r2 = 1 - ((logp - (slope * logf + intercept)) ** 2).sum() / ((logp - logp.mean()) ** 2).sum()
print(f"slope={slope:.4f} intercept={intercept:.4f} R2={r2:.4f}")

斜率越负,说明该频段内介电常数随频率下降越快。用它做跨模型比较时,必须在同一频段、同一方向、同一物理量上算,否则不可比。

5.6 取数时的三个拒绝条件

第一,拒绝把 WT 前缀直接当作「健康组」。WT---ActRIIB.csv 是注射了肌抑制素配体陷阱的野生型小鼠,它的介电值反映的是药物诱导的肌纤维肥大,与 WT---SMA.csv 那种同窝对照不是一回事。使用前必须读文件名全部三段。

第二,拒绝在未对齐年龄的情况下跨文件拼接。六个模型的年龄跨度从 6 周到 60 周,直接纵向堆叠会得到一张年龄混杂的表。

第三,拒绝把标准误当成标准差。SEM 已经除过根号 n,用它构造区间时若要恢复组内离散度,需要乘以组内动物数的平方根,而组内动物数只有通过官方方法段才能查到。

§6 与库内条目的关系

6.1 关系图谱

写这一节之前,我按 title 逐个检索了库内已有的心理/精神类与电生理类记录,确认 PHDSM 与它们没有实质重叠。需要说明的是,库内四个常被拿来与「心理/精神」并置的条目,实际主题与精神障碍诊断并无直接关系,检索时必须按实际内容而非按关键词归类。

库内记录 实际主题 与本篇的相同之处 关键差异 交集判定
metatraits 微生物表型性状库 都以「性状—参数」的形式组织 对象的量纲完全不同,一个是微生物基因组,一个是组织电学 无交集
cd-code 生物分子凝聚体知识库 都是知识型或参数型资源,非样本库 一个是文献策展,一个是实验测量 无交集
clinmave 变异功能分数与临床证据强度 都涉及「把测量转成可用判断」 一个是基因变异,一个是组织物性 无交集
sdoh-adverse-pregnancy 出院摘要的社会决定因素标注 都不面向模型训练的性能基准 一个是文本标注,一个是数值表 无交集
EMGDB(emgdb) 人体针极肌电示例 都服务神经肌肉评估,都来自 BIDMC 神经内科 EMGDB 是时域波形,3 人 3 段;本篇是频域表,小鼠离体 同门不同物,可互补引用
Hyser(hd-semg) 人体高密度表面肌电 都涉及肌肉电学 通道阵列与时域手势任务,与本篇无字段重叠 无交集
Graphene Bio-Z 人体腕部电阻抗 都测阻抗 一个是可穿戴时变阻抗,一个是离体频域介电谱 方法相近,用途不同
HeartCycle 胸阻抗与超声同步 都涉及生物阻抗 心动周期尺度,与本篇的频率尺度不可比 无交集
bpssrat 大鼠逐搏血压 都是动物模型、都是 PhysioNet 早期小库 一个是血流动力学时序,一个是离体物性 仅在「小样本动物库」这一定位上同侪
PhysioZoo 三物种哺乳动物心电 都提供跨物种的规范参照 一个是电波形底本,一个是组织参数底本 定位相似,对象层不同

这张表的关键在最后两行与第五行。PHDSM 在库内真正的同侪不是那些肌电大数据集,而是 bpssrat 与 PhysioZoo 这类「给方法提供规范底本」的小库;而与它最容易被混为一谈的,是同属 BIDMC 神经内科、同样服务神经肌肉评估的 EMGDB。

6.2 检索路径

要判断一条引用说的是不是 PHDSM,按下面三步查。

-- 第一步:按缩写与全名同时捞,避免只按中文名漏检
select record_id, url_name, left(title, 60)
  from ai_ready_dataset
 where url_name = 'phdsm'
    or title ilike '%permittivity%'
    or title ilike '%介电常数%';

-- 第二步:按来源机构找同门记录,BIDMC 神经内科在库内不止一条
select record_id, url_name, patient_count
  from ai_ready_dataset
 where source ilike '%Beth Israel%'
 order by record_id;

-- 第三步:按物理量找近邻,阻抗与电导类记录都归到这里
select record_id, url_name, left(title, 50)
  from ai_ready_dataset
 where title ilike '%阻抗%' or title ilike '%impedance%' or title ilike '%电导%'
 order by record_id;

第一步的 url_name = 'phdsm' 是最快的路径,因为 slug 唯一。第二步能捞出同门记录,用于判断是否是同一个作者的另一份数据。第三步用于找到方法学近邻,避免在写相关工作时只引了肌电库而漏掉阻抗库。

§4.3 的案例在这里也能帮上忙:如果你在库里找到另一条记录,其描述里出现「MDX」「Dmd」「DBA/2J」这类词,那它可能与本篇同源或同批实验,引用前应当核对 DOI 是否一致。

§7 质量评估与局限性

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

评估 PHDSM 时最常见的一个误判,是拿「样本量」当唯一标尺,看到「约一百三十只小鼠」就直接判为「规模过小、不可用」。这个判断在监督学习语境下成立,在本数据集的真实用途下不成立。

PHDSM 的用途是提供组织电学参数的规范值与对照基线,衡量它的尺子应当是「条件是否透明、频段是否覆盖、对照是否同批、方向是否区分」。若按样本量评分,它与任何影像或信号大数据集相比都不可能及格;若按参数表评分,它在频段覆盖与对照设置上反而优于多数零散文献。因此下文 §7.1 的五维评分里,规模一维的分数会偏低,这不代表数据集质量差,而代表它本就不该被放在规模的赛道上比。真正需要注意的缺陷集中在文档一致性,见 §7.3。

7.1 五维评分

维度 分数 依据 扣分原因
规模 2 / 5 约 130 只动物、六类模型、18 个文件 每类仅十余只,聚合后个体数只剩年龄组数
结构 3 / 5 宽表、行列语义清晰、有校验和 表头三层嵌套、编码不统一、年龄组不齐
文档 3 / 5 方法段详尽,流程可复现 频率上限、ALS 时点数、组织学信息三处与文件不一致
可获取性 5 / 5 公开、无注册、含压缩包与云桶、97.4 KB 无
边界清晰度 4 / 5 明确是小鼠离体、明确各模型动物数与来源 WT 前缀二义、性别仅部分标注

总评约 3.4 / 5。这个分数偏高不是因为它样本多,而是因为它的边界写得比多数同类资源清楚——对一个参数表来说,边界清楚比规模大更重要。

7.2 它在什么情况下最好用

用一句话概括:当你需要「一个能写进论文方法段的肌肉介电谱基线」时,它在库内几乎没有替代品。具体到三类任务,它的好用程度不同。

对生物电磁仿真,它是直接可用的输入。有限元模型里的肌肉区域需要介电常数与电导率,PHDSM 给的正是这两个量在 27 个频点上的值,还带方向。唯一要做的换算,是把「相对介电常数」与「电导率」按你的求解器习惯组合成复介电常数。

对 EIM 方法研究,它是有价值的对照参照。你的设备测的是阻抗,PHDSM 给的是介电谱,两者可以通过几何因子相互换算;更重要的是,它提供了六种病变状态下曲线的偏移方向,可作为你解释设备读数的先验。

对机器学习,它的价值有限但非零。可用的做法是把聚合曲线当作「物理先验」注入模型,或者用其参数生成合成样本再在真实数据上微调。若直接把它当训练集,前面 §1.2 与 §1.6 已说明为什么不行。

7.3 已知的、可枚举的偏差

第一处,频率上端。官方方法段写「9 至 862 kHz」,配套论文标题写「10 kHz 至 1 MHz」,文件的实际栅格从 9000 Hz 起、到 862000 Hz 止,共 27 个频点,没有 1 MHz 那一行。三处口径并存,差额构成的区间官方未说明。使用规则很简单:以文件为准,任何声称「PHDSM 覆盖到 1 MHz」的说法都需要作者自行补证。

第二处,ALS 的年龄组。官方方法段写「8、10、12、14、16、18 周,每两周约六至七只」,合计 37 只;文件的实际表头只有 8、16、18 三个年龄组,25 列。中间三个时点未在文件中出现。同样地,MDX 疾病组有四个年龄组而对照组只有三个,10 周这一组没有健康对照。

第三处,WT 前缀的二义。九个以 WT 开头的文件里,七个是基因型对照,另两个(WT---PBS.csv 与 WT---ActRIIB.csv)是肌纤维肥大实验的溶媒组与用药组。按前缀做健康/患病二分类,会把用药组错划为健康。

第四处,性别只在 PolG 的八个文件里标出,其余模型的性别未在文件名体现,需回到官方方法段(多为雄性,ALS 与 PolG 为雌雄各半)。

第五处,组织学信息。配套论文摘要明确提到「另外获取了定量组织学信息」,官方页面也建议参考 Nagy 等与 Clark-Matott 等的两篇论文,但这些数据不在公开包内,需要从论文补充材料另行获取。

第六处,编码与表头层级。PolG 的八个文件带 UTF-8 BOM,其余文件不带;SMA 与 ActRIIB/PBS 的文件是四行表头,MDX 与 DBDB 是三行。批量读取时必须逐文件判断,不能一刀切。

7.4 外部验证矩阵

验证对象 验证来源 结论 残差或差异
频段上限 官方方法段、论文标题、文件栅格 三处不一致 方法段与文件一致于 862 kHz,论文标题为 1 MHz
动物数 官方方法段逐模型叙述 可逐项复算 六个模型含对照合计约 130 只
模型构成 官方方法段与论文摘要 论文列五类,数据集六类 数据集多出线粒体突变模型
年龄组 官方方法段与文件表头 ALS 与 MDX 对照不齐 文本时点多于文件时点
测量温度 官方方法段 恒温 37 摄氏度 文件无温度列,无法独立核验
许可 许可栏与 LICENSE.txt 一致,ODC-By 1.0 无
体积 文件列表与压缩包 97.4 KB 未压缩、49.3 KB 压缩 无

7.5 它为何能持续:一份只有百来 KB 的规范底本

这个库能长期存在,靠的不是被大量下载,而是它在方法论文里的引证位置。任何做电阻抗肌电、做骨骼肌电磁建模、做肌肉电学参数仿真的工作,都需要一个可引用的参数来源;一个公开、带对照、带方向、许可宽松且体积极小的来源,几乎是唯一解。它不需要维护,不需要增量更新,也不会因为数据过期而失效——组织电学性质的参考值一旦确立,有效期以十年计。这是它能在 PhysioNet 上以 97 KB 的体积长期留存的原因。

7.6 DAIMS 二十四项逐条核验

按 DAIMS(Data and AI Model Scorecard)的二十四项检查表逐条走一遍,把「文档说了什么」与「文件里实际是什么」分开记。

# 检查项 状态 说明
1 宽格式 ⚠️ 全部文件为宽表,年龄与方向藏在跨列表头,需显式解析
2 唯一标识 ⚠️ 无个体或测量编号,主键只能由文件、频点、年龄、方向合成
3 特殊字符 ⚠️ 文件名含三重连字符,表头含换行符,多年龄组文件列名重复
4 重复行 ✅ 27 个频点无重复,频率严格递增
5 缺失编码 ⚠️ 无显式缺失码;年龄组缺失表现为整段列不存在,而非空值
6 标签标识 ✅ 病态由文件名前缀标识,模型由文件名中段标识,可程序化提取
7 罕见类分组 ⚠️ 每个模型十余只,聚合后只剩年龄组数,无法再做类内分组
8 偏倚评估 ⚠️ 无批次、无批次随机化说明,动物多数来自单一供应商
9 数据字典 ❌ 包内无数据字典,字段语义只能从表头与官方正文反推
10 信息性缺失解释 ❌ ALS 缺三个时点、MDX 对照缺一个时点,均未在文件内解释
11 设备记录 ⚠️ 正文写「商用阻抗分析仪」,未给型号与校准周期
12 共线性 ✅ 两物理量同源但换算关系明确,不构成隐蔽共线
13 编码映射 ⚠️ 主要 ASCII,PolG 八个文件带 BOM,需按文件判断编码
14 时间戳处理 ⚠️ 文件修改时间可追溯版本差异,但无采集时间字段
15 划分建议 ❌ 无个体标识,无法做训练/验证划分,只能按年龄组或模型划分
16 泄漏讨论 ⚠️ 同一年龄组的均值来自同一批动物,跨频点强相关,切分易泄漏
17 标签分布 ✅ 六类模型的动物数在方法段给全,可复算
18 测量偏倚 ⚠️ 离体、缺血时间、修剪位置均可能引入系统偏移,未量化
19 外部验证建议 ⚠️ 正文给出两篇论文可供比对,但无独立复测集
20 版本记录 ✅ 1.0 与 1.1 两版,发布日期与变更内容(补入 PolG)写明
21 预处理脚本 ❌ 包内无解析脚本,列结构需使用者自行重建
22 合规要求 ✅ ODC-By 1.0 全文随包发布,署名要求明确
23 多模态对齐 ✅ 单一模态,不涉及对齐问题
24 去标识化 ✅ 小鼠数据,不含个人信息

DAIMS 评分:11.0 / 24(✅ 九项、⚠️ 十一项、❌ 四项,⚠️ 各计半分)。

这个分数不高,但它与 §7.1 的五维评分并不矛盾:五维评分衡量的是「这份数据能不能用」,DAIMS 衡量的是「这份数据能不能直接被流水线吞下」。PHDSM 在后者上弱,是因为它诞生于 2019 年,那时的公开数据惯例是把「数据」与「使用说明」分开,让论文承担说明职责,而不是把说明塞进包里。

评分解读:四项 ❌ 里,三项(数据字典、预处理脚本、划分建议)都源于同一个事实——包内没有元数据层,一切语义靠文件名与表头承载。剩下的一项(信息性缺失解释)是文档一致性问题,与 §7.3 的三处口径差同源。

对你意味着什么:接入这套数据时,第一件要做的事不是写模型,而是写解析器与数据字典。把 §2.2 的字段表落成一份随项目走的 schema.json,把 §2.4 的年龄组对照落成一份 manifest.csv,之后所有下游代码都从这两份文件读,不要在代码里硬编码列偏移。这样做的直接收益是:当官方发布 1.2 版、文件结构再次变动时,你只需要改 manifest,不必改模型代码。

§8 生态位与历史

8.1 从「参数表」看它的历史位置

生物组织的介电参数测量史超过一百年。早期工作集中在确定各主要组织在射频频段的量级,为雷达与微波安全标准服务;中期转向剂量学与成像,频率范围扩展到兆赫兹;近十余年,随着电阻抗肌电与可穿戴阻抗传感的兴起,需求转向「带病理状态与方向信息的高密度频域表」。

PHDSM 处在第三阶段的开端。它的贡献不在于把频率推到多高,而在于把「同一流程、同一温度、带对照、分方向」这四件事同时做齐,并且公开。这在 2019 年是个不小的动作——当时多数动物电生理数据的公开停留在「论文里有一张图」的水平。

8.2 两个版本之间的变化

1.0 版于 2019 年 3 月 15 日发布,内容是五个模型:脊肌萎缩、肌营养不良、肥胖糖尿病、ALS、肌纤维肥大。1.1 版于同年 11 月 12 日发布,新增线粒体突变模型的介电数据,对应的是 Clark-Matott 等关于早老症小鼠模型的论文。

两个版本的差异可以直接从文件日期看出来:五个模型对应的十二个 CSV 保留了 2019 年 3 月 15 日的时间戳,PolG 的八个文件是 2019 年 10 月 4 日。这也解释了为什么 PolG 的文件表头比其余文件多一行空行、且带 BOM——它们是在另一次整理中并入的。

8.3 它在 PhysioNet 里的位置

PhysioNet 上的数据库大致分三类:波形库(心电、脑电、肌电)、临床数据库(重症、影像、电子病历)、以及参数与示例库(本次介绍的这一类)。第三类体量最小,但往往承担着前两类的「基准」职能——波形库告诉你信号长什么样,参数库告诉你信号背后的物理量是多少。

PHDSM 属于第三类中的极小样本。它的目录浏览数据显示,当前版本的项目浏览量在两百次上下,这个量级在 PhysioNet 上属于长尾,与大规模波形库动辄数万次的浏览不可同日而语。但这恰恰符合它的定位:它服务的是少数需要组织电学参数的研究者,而不是广泛的数据科学人群。

8.4 谁在用它,用来做什么

从方法与内容推断,它的主要使用面有三块。一是电阻抗肌电的设备与方法研究,这类工作需要一个「正常肌肉在这个频段是什么样」的参照。二是生物电磁学仿真,有限元与时域有限差分模型都需要肌肉的介电常数与电导率,PHDSM 提供了带方向的一组。三是动物模型的电生理表型描述,研究者可以把自测结果与公开的六个模型对照,判断自己的模型是否落在已知范围内。

这三块需求有一个共同点:都不需要大数据。它们需要的是「条件写清楚的一小组数」,而这正是 PHDSM 的形态。

§9 使用指引

9.1 三种角色的路径

第一类角色是做仿真的工程师。你的路径最短:取 WT---SMA.csv 或任一 WT 文件的纵向与横向列,按频率插值到你的求解器栅格,把相对介电常数与电导率组合成复介电常数即可。注意 37 摄氏度是文件所对应的温度,若你的模型工作在别的温度,需要另行做温度校正。

第二类角色是做 EIM 的方法研究者。你的路径要先做换算:设备给的是阻抗幅值与相位,PHDSM 给的是介电常数与电导率,两者通过几何因子联系。建议先用 §4.3 的案例文件熟悉结构,再用同一频段的疾病组与对照组做差值曲线,看差异集中在哪个频段。

第三类角色是做动物实验的研究者。你的路径是「对照 + 引用」:把自己的测量结果与对应的 WT 文件比较,判断是否落在预期范围;写作时同时引用数据集 DOI 与配套论文。

9.2 一条最短的可用流程

从零到能画出一条可对外引用的曲线,最短路径如下。

#-- 取数并校验
mkdir -p phdsm && cd phdsm
curl -L -o p.zip https://physionet.org/static/published-projects/phdsm/phdsm-1.1.zip
unzip -q p.zip && cd phdsm-1.1
sha256sum -c --quiet SHA256SUMS.txt && echo VERIFIED

#-- 看有哪些文件
ls -1 *.csv | sort
#-- 读一个文件,取出纵向相对介电常数曲线并检查单调性
import pandas as pd
import numpy as np

df = pd.read_csv("WT---SMA.csv", header=None, skiprows=3, encoding="utf-8-sig")
df.columns = ["freq", "cl", "cl_se", "pl", "pl_se", "ct", "ct_se", "pt", "pt_se"]
df = df.apply(pd.to_numeric, errors="coerce").dropna(subset=["freq"])

#-- 频散应当单调:值随频率上升而降
assert df["pl"].is_monotonic_decreasing, "纵向介电常数非单调,需检查是否读错列"
print(f"频点 {len(df)} 个,{df['freq'].min():.0f}–{df['freq'].max():.0f} Hz")
print(f"低频端 {df['pl'].iloc[0]:.0f},高频端 {df['pl'].iloc[-1]:.0f}")
print(f"各向异性比 {df['pl'].iloc[0] / df['pt'].iloc[0]:.2f}")

最后那个断言很关键。健康组织的介电常数应当随频率单调下降,若读出来的曲线不是单调的,多半是列错位——这是 §5.3 提到的偏移问题的第一道自动防线。

9.3 引用方式

数据集本身的引用格式,官方给出的是:

Sanchez, B. (2019). Permittivity of Healthy and Diseased Skeletal Muscle
(version 1.1). PhysioNet. RRID:SCR_007345.
https://doi.org/10.130264/c23h3b

若使用 PolG 部分,还应当同时引用对应的论文;若使用其余五个模型,应当同时引用 Scientific Data 上的那篇原始数据论文。PhysioNet 本身也要求在使用任何资源时附带平台的标准引用,这一条在官方页面的引用区可以查到完整格式。

§10 AI 使用声明

项目 说明
数据来源 全部内容取自 PhysioNet 项目页、文件列表、实际 CSV 表头与 Europe PMC 收录的配套论文摘要
是否使用生成式模型 本篇由 AI 辅助撰写,事实逐条对照官方页面与本篇列出的一手文件
是否做分布统计 未做。全文不含频次、分位、空值率等分布类统计
数字层级 官方页面/官方文件/论文摘要,三级标注见附录 B
未经核实的内容 文件示例行中的数值只作量级示意,均已注明「以文件为准」
未覆盖的范围 组织学数据、个体层面记录、原始阻抗波形,均不在公开包内,本篇未推测补全
适用限制 不得依据本篇做临床决策;不得把六个模型当作六种临床诊断
复用建议 引用时同时给出数据集 DOI 与配套论文,注明所用版本为 1.1

常见误读(避坑清单)

常见说法 实际 证据
PHDSM 是公共卫生精神健康调查 全名是健康与患病骨骼肌介电常数,对象是小鼠离体肌肉 官方页标题与摘要段
含 DSM 诊断量表 无任何量表、问卷或诊断条目字段 18 个 CSV 的列结构全部是频率与物理量
是人体数据 全部为小鼠,伦理批件为 BIDMC 动物方案 #087-2016 官方方法段
覆盖到 1 MHz 文件止于 862 kHz,共 27 个频点 实际 CSV 频率列
每类模型都有五个年龄组 ALS 文件只有三个年龄组,SMA 只有一组 各文件首行
WT 前缀即健康 WT---ActRIIB.csv 是药物诱导的肌纤维肥大组 官方方法段对肥大实验的描述
有原始阻抗波形 只发布换算后的介电常数与电导率均值与标准误 官方数据说明段
可以当分类训练集 样本已聚合为均值,个体值不公开 文件每格为单值加标准误
有组织学数据 论文提到有,但不在公开包内 官方方法段与文件列表比对
六个模型都是疾病模型 PolG 是早衰模型,ActRIIB 是药物诱导肥大 官方方法段
每个年龄组测的是同一批动物 各组是不同批动物,无个体纵向随访 官方对各组动物数的叙述

FAQ

Q1:PHDSM 这个名字到底怎么来的?
官方页面没有把缩写展开写,但从全名 Permittivity of Healthy and Diseased Skeletal Muscle 取首字母可以完全对上。Disease 指的是小鼠的疾病模型,与精神障碍诊断手册无关。

Q2:为什么只有 18 个文件却要 27 个频点?
频点是行,文件是模型与状态的组合。每个文件内部都是 27 行,覆盖 9 kHz 到 862 kHz 的对数间隔栅格,所以文件数与频点数不是一回事。

Q3:相对介电常数为什么是这么多数万到十万的量级?
低频段组织的相对介电常数本就很大,因为细胞膜电容在低频下贡献显著。这不是单位错误,无量纲列的原表头就写着 dimensionless。

Q4:纵向和横向哪个值更高?
在该库的低频段,纵向普遍高于横向,这是肌纤维定向排列的结果。具体到每个模型每个频点,应当直接读文件,不要用记忆中的比值。

Q5:标准误为什么这么小?
因为它是均值标准误,已经除以样本数的平方根,且每组只有五只动物。它不代表个体间差异小,而代表均值估计相对稳定。

Q6:缺的年龄组怎么办?
ALS 与 MDX 对照组的缺组,建议在方法上显式声明,或只用两边都有的时点做配对比较,不要用插值假装有数据。

Q7:能把它和人的 EIM 数据直接比吗?
不能直接比数值,只能比形状。小鼠与人在纤维尺寸、含水量、脂肪比例上有系统差异,跨物种比较应限定在频散趋势与各向异性比这类无量纲量上。

Q8:可以用它做数据增强吗?
可以,但只能作为物理先验注入,也就是用它的参数生成仿真样本,或者用它约束模型的物理一致性。把它的均值当真实样本复制扩增,会引入不可控的伪相关。

Q9:版本 1.0 和 1.1 该用哪个?
用 1.1。1.1 在 1.0 基础上补入了 PolG 数据,其余文件未变,引用时注明版本号即可。

Q10:许可需要署名到什么程度?
ODC-By 1.0 要求在使用该数据库的作品中给出署名,通常按官方给出的引用格式写即可;若制作衍生数据库,需在衍生库中同样标注来源。

Q11:官方提到的两篇论文必须都读吗?
若只用五个主模型,读 Scientific Data 那篇即可;若用到 PolG,需再读 Clark-Matott 等的那篇肌肉神经杂志论文,两篇分别对应不同的数据子集。

Q12:如果发现文件与文档不一致,以哪个为准?
以文件为准,并在方法段写明「以数据集文件实际内容为准,官方文本另有表述」。不要据此判定官方错误,只陈述两个口径及差额。

术语表

术语 含义
介电常数(permittivity) 材料在外电场中极化、削弱内部电场的程度,绝对值常用相对介电常数表示
相对介电常数 介电常数与真空介电常数之比,无量纲
电导率 材料传导电流的能力,单位 S/m
各向异性 性质随方向变化,此处指沿肌纤维与垂直纤维两个方向不同
纵向 肌纤维方向与电流电极方向平行
横向 肌纤维方向与电流电极方向垂直
四电极法 用一对电极注入电流、另一对测量电压,以消除接触阻抗影响
几何因子 K 把测得的阻抗换算为电阻率或介电常数的几何修正系数,用盐溶液标定
频散 介电常数与电导率随频率变化的现象
均值标准误(SEM) 样本均值的标准差,等于样本标准差除以样本数的平方根
腓肠肌 小腿后侧主要肌肉,小鼠实验常用取材部位
离体 组织从活体取出后测量
EIM 电阻抗肌电,用多频电流测量肌肉阻抗以评估神经肌肉状态
SMA 脊肌萎缩症,本库用 Smn 2B/2B-Neo 模型
MDX 杜氏肌营养不良的经典小鼠模型,本库用 D2.B10-Dmd mdx
DB/DB 瘦素受体突变导致的肥胖糖尿病模型
ALS 肌萎缩侧索硬化,本库用 SOD1 G93A 转基因模型
PolG 线粒体 DNA 聚合酶突变模型,用于研究早衰
ActRIIB-mFc 肌抑制素配体陷阱,用于诱导肌纤维肥大
NMN 烟酰胺单核苷酸,PolG 实验中的饮水添加物
ODC-By 1.0 开放数据署名许可,允许使用与再分发,需署名
宽表 用列分组表达多个维度、而非用行堆叠的表结构
年龄组 文件表头标注的取样周龄,各模型取值不同、需先对齐

附录 A:核心数字核对表

项 值 来源 来源层级
文件总数 18 个 CSV 官方文件列表 官方页面
体积 97.4 KB 未压缩,49.3 KB 压缩 官方文件列表 官方页面
频点 27 个 实际 CSV 频率列 官方文件
频率下限 9000 Hz 实际 CSV 官方文件
频率上限 862000 Hz 实际 CSV 官方文件
官方方法段频段 9 至 862 kHz 方法段 官方页面
论文标题频段 10 kHz 至 1 MHz Europe PMC 题录 论文摘要
模型数 6 方法段与文件名 官方页面
动物总数 约 130 只 方法段逐模型相加 官方页面
SMA 动物 5 只模型 + 5 只对照 方法段 官方页面
MDX 动物 15 只模型 + 15 只对照 方法段 官方页面
DBDB 动物 10 只模型 + 10 只对照 方法段 官方页面
ALS 动物 37 只 方法段 官方页面
肥大实验动物 20 只,分两组各 10 方法段 官方页面
PolG 动物 30 只野生型 + 24 只突变 方法段 官方页面
介电盒尺寸 5 毫米 × 5 毫米 方法段 官方页面
极间距 4 毫米 方法段 官方页面
测量温度 37 摄氏度 方法段 官方页面
伦理批件 BIDMC #087-2016 方法段 官方页面
首版日期 2019-03-15 版本列表 官方页面
1.1 版日期 2019-11-12 版本列表 官方页面
许可 ODC-By 1.0 许可栏与 LICENSE.txt 官方页面
DOI v1.1 10.130264/c23h3b 引用区 官方页面
DOI latest 10.13026/5889-jj86 引用区 官方页面

附录 B:数字的来源分层

第一层,官方页面。 包括:六个模型的方法叙述与动物数、取材与修剪尺寸、介电盒几何与温度、伦理批件编号、两个版本的日期、许可与 DOI、体积与文件数。这一层可以直接引用。

第二层,官方文件。 包括:27 个频点的具体值、每个文件的实际年龄组数、列数、BOM 与表头层级、校验和清单。这一层与第一层冲突时以本层为准,并在方法段注明。

第三层,论文摘要。 包括:配套论文的标题、期刊、年份、DOI、以及「10 kHz 至 1 MHz」这一频段表述与「另外获取定量组织学信息」这一说明。这一层用于交叉核对,不用于替代前两层。

未核实。 包括:原始阻抗波形是否另有存档、组织学数据的存放位置、各年龄组内的具体动物分配、ALS 中间三个时点的数据是否曾存在。这些未经核实的内容,本篇一律不作推测。

附录 C:完整参考文献

  1. Sanchez B. Permittivity of Healthy and Diseased Skeletal Muscle (version 1.1). PhysioNet. 2019. RRID:SCR_007345. doi:10.130264/c23h3b
  2. Nagy JA, DiDonato CJ, Rutkove SB, Sanchez B. Permittivity of ex vivo healthy and diseased murine skeletal muscle from 10 kHz to 1 MHz. Scientific Data. 2019;6:37. doi:10.1038/s41597-019-0045-2
  3. Clark-Matott J, Nagy JA, Sanchez B, Taylor R, Riveros D, Abraham NA, Simon DK, Rutkove SB. Altered muscle electrical tissue properties in a mouse model of premature aging. Muscle & Nerve. 2019. doi:10.1002/mus.26714
  4. Pollard T, Moody BE, Lehman L, Gow B, Fernandes C, Xie C, Johnson A, Mark RG, Heldt T. PhysioNet as a global platform for biomedical research. Nature Health. 2026:792-795. doi:10.1038/s44360-026-00096-z
  5. Open Data Commons. ODC Attribution License (ODC-By) v1.0. https://opendatacommons.org/licenses/by/1-0/

附录 D:批量核对脚本

下面这段脚本把「文件与官方描述是否对得上」变成可执行检查,交稿前可复跑。

#-- 核对每个文件的实际年龄组数与列数是否落在预期范围
import csv
import glob

EXPECT_AGES = {
    "WT---SMA.csv": 1, "Disease---SMA.csv": 1,
    "WT---MDX.csv": 3, "Disease---MDX.csv": 4,
    "WT---DBDB.csv": 2, "Disease---DBDB.csv": 2,
    "Disease---ALS.csv": 3,
    "WT---PBS.csv": 1, "WT---ActRIIB.csv": 1,
}

def inspect(path):
    with open(path, encoding="utf-8-sig", newline="") as fh:
        rows = list(csv.reader(fh))
    head = rows[0]
    ages = [c for c in head if c.strip().lower().startswith("age")]
    width = max(len(r) for r in rows)
    body = [r for r in rows if r and r[0].strip().isdigit()]
    return len(ages), width, len(body)

for p in sorted(glob.glob("*.csv")):
    n_age, width, n_row = inspect(p)
    name = p.rsplit("/", 1)[-1]
    flag = ""
    if name in EXPECT_AGES and n_age != EXPECT_AGES[name]:
        flag = f"  <-- 年龄组数 {n_age} 与预期 {EXPECT_AGES[name]} 不符"
    print(f"{name:36s} ages={n_age} cols={width:3d} rows={n_row}{flag}")

跑通之后应当看到:PolG 的八个文件年龄组均为 1、列数均为 9、行数均为 27;MDX 疾病组列数 33、对照 25;DBDB 两个文件列数均为 17。任何偏离都说明读取方式或文件本身出了问题。

附录 E:如果只记五件事

  1. PHDSM 是「健康与患病骨骼肌的介电常数」,对象是小鼠离体腓肠肌,不是人群调查,也不含诊断量表。
  2. 全部内容 18 个 CSV、97.4 KB,27 个频点,只给均值与标准误,没有原始波形与个体记录。
  3. 六个模型六类动物,含对照合计约 130 只,年龄组不齐,缺组是常态,必须显式处理。
  4. 三处文档与文件的口径差要记住:1 MHz 对 862 kHz、ALS 六个时点对三个、组织学信息不在包内。
  5. 它最适合当仿真参数与 EIM 对照基线,不适合当监督学习的训练集;许可为 ODC-By 1.0,署名即可用。

编辑说明

本篇的事实骨架取自 PhysioNet 项目页正文与文件列表、1.1 版全部 18 个 CSV 的表头与频率列、许可文件与校验和清单,以及 Europe PMC 收录的两篇配套论文题录与摘要,核验时间为 2026 年 10 月 28 日。文中出现的示例数值仅用于说明列结构与量级,均在正文注明以文件为准;未做任何频次、分位或空值统计。官方文本与文件之间的三处口径差,按「存在两个口径、差额构成官方未说明」的方式处理,未做对错判定。原始阻抗波形是否另有存档、组织学数据的存放位置、ALS 中间三个时点是否有过数据,均未核实,正文一律标注为未核实,未做推测补全。封面提示词为文本描述,未生成图像。


相关数据集导航

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

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

返回 AI-Ready 数据集