PaxDb 绝对蛋白丰度库 — 质谱只能测相对值,它偏要给你 ppm

405 物种 / 1639 个数据集 / 每个蛋白一个 ppm 数值

来源 https://pax-db.org/发布时间: 2026-10-26最后更新: 2026-10-26 阅读 5
PaxDb 绝对蛋白丰度库 — 质谱只能测相对值,它偏要给你 ppm

信息速览

数据集名称PaxDb 绝对蛋白丰度库 — 质谱只能测相对值,它偏要给你 ppm
数据类型元数据,多组学,本体映射,原始数据链接,文献引用
规模不适用(以物种、组织、细胞系为观测单位,不含可识别个体)
接入方式https://pax-db.org/
AI 就绪度

质谱做定量有一个绕不开的先天缺陷:同一针样品里,甲蛋白的信号是乙蛋白的三倍,这件事可以反复测准;但甲蛋白在这个组织里究竟有多少个分子,仪器答不出来。信号强度是相对的,而且换个实验室、换台仪器、换套酶解流程,同一份样品的相对比例都会漂。想让「A 组织里某蛋白的丰度」与「B 物种里同源蛋白的丰度」摆在一起看,中间缺的是一把公共的尺子。

PaxDb(Protein Abundances Across Organisms)就是那把尺子。它不生产新数据,而是把公共质谱数据收拢、统一重处理、换算出 ppm(parts per million,每百万个蛋白分子里有几个是这个),再按组织和物种编排。ppm 这个单位的妙处在于它自带归一:任意一个组织里所有蛋白的 ppm 加起来恰好是一百万,于是「这个蛋白占该组织蛋白总量的万分之三」这种说法,跨实验室、跨物种都成立。v6.1 的下载目录按 405 个物种组织,论文口径的 v6.0 整合了 1639 个数据集、392 个物种,物种数比上一版几乎翻倍。

必须先把一句话说在前面:它和 Human Protein Atlas 不是同类东西,不能互相顶替。HPA 回答「这个蛋白在不在、强弱几级、在细胞哪个角落」,PaxDb 回答「这个蛋白占了多少份额」,前者是分级的定性判断,后者是连续数值;前者有细胞与亚细胞分辨率,后者只到组织或全生物体。一屏速览见下表。

维度 内容
中文名 PaxDb 绝对蛋白丰度库(Protein Abundances Across Organisms)
维护方 瑞士生物信息研究所 von Mering 实验室,苏黎世大学
核心单位 ppm,每百万蛋白分子中该蛋白的份数,单个组织内全部蛋白加和恰好一百万
当前下载版 v6.1(下载目录时间戳 2026-07-09)
论文版本 v6.0,Nucleic Acids Research 2026,DOI 10.1093/nar/gkaf1066
物种数 论文口径 392;下载目录物种级子目录 405
数据集数 1639(v6.0 论文口径),相对 v5.0 近乎翻倍
人类数据集 419 个(官方 API metadata/species 端点)
组织本体 UBERON 标识,如 UBERON:0002369 对应肾上腺
标识体系 STRING 标识(物种号.蛋白号),另提供到 UniProt 的交叉引用表
直系同源 预计算表,按分类层级组织
下载格式 制表符分隔纯文本,头部是以井号开头的元数据,正文三列
许可证 CC BY 4.0,署名即可商用
访问方式 网页浏览、下载目录直取、公共 REST API(需申请密钥,无密钥走限速测试池)
收录状态 仅健康、野生型参考态;疾病与处理条件不在范围内

§1 它要解决的具体麻烦

1.1 一句话结论:它卖的不是数据,是一套大家都愿意用的刻度

质谱数据本身并不稀缺。PRIDE、MassIVE、PeptideAtlas 里堆着数以万计的原始实验,任何一个人想找「小鼠肝脏蛋白组」都能下到十来个。稀缺的是可比性:这十来个实验用了不同的酶、不同的碎裂方式、不同的搜索参数、不同的定量软件,把它们的输出并排放进一张表里,得到的是一张看起来整齐、实际上是十种不同量纲拼凑的图。

PaxDb 的价值全部压在「统一」这两个字上。它把每个来源的数据重新映射到一套共同命名空间,对谱图计数走同一条归一化管线,用同一套外部证据给每个数据集打分,最后按同一套规则加权合并。做完这些之后,它才敢让你把甲实验室的结果和乙实验室的结果放在同一条数轴上。换句话说,它交付的其实是可加可比性,ppm 只是这种可加可比性的记账单位。

理解这一点,后面所有关于「什么时候会失灵」的讨论就有了统一的解释框架:凡是在统一过程中被抹平的信息,都可能是失灵的来源。抹平了仪器差异,也抹平了样品制备的差异;抹平了实验室差异,也抹平了「这个组织到底是哪种细胞构成」这类生物学差异。

1.2 三条常见的错误期待

第一条是把它当成浓度计。ppm 是份额不是浓度,一个组织里水占大头、盐和代谢物占大头,蛋白只占湿重的一小部分,所以 ppm 换算成 nM 需要额外假设每克组织的总蛋白质量与平均蛋白分子量。有人拿着 ppm 直接当 nM 写进动力学模型,差出量级是常有的事。

第二条是把它当成「表达量」的同义词。转录组里的 TPM/FPKM 与蛋白 ppm 在概念上都是份额,但两者的对应关系弱得出名,mRNA 高而蛋白低的基因比比皆是。把 PaxDb 当成「翻译后的 TPM」,等于假设翻译效率恒定,这个假设在多数场景下并不成立。PaxDb 官方在描述里也只用丰度(abundance)而不用表达(expression),这个用词选择是有讲究的。

第三条是把它当成一个可以随意切片的静态表。这三条都来自同一个场景:手里有一张质谱结果,想立刻得到一个能写进模型的数,于是跳过了「这个数是什么量纲」这一步。实际上它有两层:单库层保留每个原始实验的独立结果,整合层是多来源加权平均。两层数值不一样,覆盖的蛋白也不一样。拿整合层做分析却在方法里写「使用了某某数据集」,或者拿单库层当组织参考,都是常见错位。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
某组织里蛋白 P 占总蛋白的多少份额 一个连续 ppm 数值,附排序位置 够,这是核心能力
两个物种同源蛋白的丰度高低对比 直系同源映射后的 ppm,可放同一数轴 够,但要看覆盖率差异
蛋白在细胞内的空间位置 不提供任何亚细胞定位 不够,去查 HPA 或 GO 注释
蛋白在疾病与正常之间的变化倍数 只收健康野生型,无疾病对照 不够,得回到原始数据集
蛋白在单细胞层面是否表达 组织级平均,无单细胞分辨率 不够,去用单细胞图谱
某蛋白丰度的置信区间 只有数据集级打分与覆盖度,无逐蛋白区间 打折,只能间接推断
蛋白的绝对摩尔浓度 可通过总蛋白量假设换算,但假设外置 需自行建模
跨版本可复现的数值 版本目录保留,但权重随版本变化 打折,必须锁版本
从原始谱图到 ppm 的全链路追溯 v6 起提供统一重处理管线与肽段级计数 够,这是 v6 的改进重点

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

你的处境 它能帮你什么 下一步该做什么
你要给一个通路模型填初始蛋白浓度,手头只有 mRNA 提供同物种同组织的蛋白份额,把模型从转录层换到蛋白层 用 §4.4 的案例把 ppm 换算成摩尔浓度,并核对目标组织的覆盖度
你要论证「这个靶点在肝脏里够不够多」 给一个可引用的连续数值与组内排序 同时报告数据集打分与覆盖度,避免孤零零一个数字
你在做跨物种机制推断,人鼠结果打架 用预计算直系同源把两边的份额并到一张图上 检查两物种的数据集数量比,人鼠约二比一,不能等权看待
你要给自己的质谱实验做归一化基准 用同组织的整合 ppm 作为外部参照 把参照的版本号写进方法,别写「最新版」
你在训练一个从序列预测丰度的模型 提供跨物种、跨组织的连续标签,且标签量纲统一 按物种与组织分层划分,防止同源泄漏(详见 §4.4 的案例)
你只有定性结论,想知道定量上差多少 用 ppm 排序把「强/中/弱」换成百分位读数 记住百分位是库内相对,不是生理阈值
你要评价某个公共数据集的可靠程度 数据集打分与覆盖度直接可用 打分低的数据集可以整体降权,不必逐个蛋白怀疑

1.5 一句话判断

如果你的问题里出现「多少」「占几成」「谁更富集」这类量词,且比较范围跨了实验室、跨了组织或跨了物种,PaxDb 几乎是现成答案;如果你的问题里出现「在哪里」「有没有」「变没变」,它基本帮不上忙,硬用会得到一个看起来很像答案的错误答案。

1.6 不适合谁:四条边界

第一条边界是空间分辨率诉求者。做亚细胞定位、细胞类型特异表达、空间转录组对齐的团队,用不上组织级平均。一个组织里肝细胞、库普弗细胞、内皮细胞的蛋白组成差异巨大,PaxDb 把三者平均成一个数,这个数对任何单一细胞类型都不准。

第二条边界是条件对比诉求者。做疾病、给药、基因敲除前后差异分析的团队,PaxDb 只收健康野生型,没有对照组。它适合当基线,不适合当处理效应。

第三条边界是低丰度蛋白功能研究者。转录因子、激酶、信号分子多在 ppm 个位数甚至更低,恰是谱图计数最没分辨力的区间。用 PaxDb 论证「这个转录因子在某组织表达很低」是可靠的,用它论证「低 30%」则不可靠。

第四条边界是要求可追溯审计的监管场景。PaxDb 的整合值是加权平均,权重由发布方给出且随版本变化,单个蛋白的积分过程无法逐条复算到原始谱图。做临床决策或药品申报的关键参数,需要自己回到原始数据集重算。

§2 数据构成与规格

2.1 三层结构:原始实验、单库结果、整合结果

整个库按三层组织,理解这三层是使用它的前提。三层之间不是等价关系:越往上越整齐,越往下越接近证据本身。

最底层是原始实验,每条对应一个 ProteomeXchange 编号或一篇论文的补充材料。v6 起对这些原始文件走统一的重处理管线,用 FragPipe 框架从原始谱图重新搜库,这一步的价值在于:它把「不同作者用了不同搜索参数」这个最大的不可比来源压平了。

中间层是单库结果,即每个实验各自换算出的 ppm 表。每个文件头部带数据集编号、名称、打分、覆盖度、描述、整合标记、权重清单、出版年份、文件名。单库层保留原始实验的个性,也保留它的缺陷。

最上层是整合结果,把同一组织、同一条件下的多个单库结果按权重平均。文件名里的 integrated 标记是唯一的识别信号,头部还有一行权重串,列出每个来源及其权重。人类肝脏整合集就由十余个来源按权重合成,最高权重约两成,最低不到百分之一。

2.2 字段与记录的完整字典

单库与整合表的正文都是三列,头部是井号开头的元数据行。下表把头部字段与正文列一并列出。

字段 出现位置 类型 含义 使用注意
#id 头部 整数 数据集编号,API 与网页用它定位 与文件名不对应,别拿它当主键文件名
#name 头部 文本 可读名称,如「人—肝脏(整合)」 物种用拉丁名缩写,组织用大写英文
#score 头部 小数 与 STRING 相互作用网络的一致性打分 跨数据集不可直接比,因蛋白数不同
#coverage 头部 整数 该数据集覆盖的蛋白占参考蛋白组的百分比 低于五十的整合结果需谨慎
#description 头部 文本 定量方法说明与打分、覆盖度复述 可从这里读出是谱图计数还是其他方法
#integrated 头部 布尔 是否为整合数据集 区分单库与整合的唯一可靠标记
#weights 头部(整合) 文本 各来源文件名与权重,分号分隔 权重和为一,可据此判断单一来源的主导程度
#publication_year 头部 整数 来源实验发表年份(整合集取整合年份) 不能当作样品采集年份
#filename 头部 文本 官方文件名 与下载目录中的名字一致
gene_name 正文第一列 文本 基因符号,如 HBB、ALB 物种内唯一,物种间会重名(见 §3.3)
string_external_id 正文第二列 文本 STRING 标识,形如「物种号.蛋白号」 真正的主键,跨物种唯一
abundance 正文第三列 整数或小数 ppm 值 单库表为整数,整合表为小数

文件的元数据部分与正文之间用一行单独的井号分隔,这是识别表头结束位置的方法。解析时应当跳过所有井号开头的行,而不是按固定行数跳过,因为权重行的长度随来源数量变化。

2.3 一条记录的完整解剖

下面是一个真实的人肝脏整合表片段,保留原文件的前若干行与我补充的注释。为节省篇幅,正文只留了极少数行,实际文件有一万五千余行。

#-- 头部是数据集级元数据。原文件每行以井号开头,这里为便于引用去掉了井号,冒号同样省略
id   4032974247
name   H.sapiens - Liver (Integrated)
score   28.5
coverage   81
description   integrated dataset, weighted average of all H.sapiens LIVER
integrated   true
weights   Adult_Liver_Kim_2014_SEQUEST:0.223;PXD013142_tpa_christine_lys:0.201;liver_Wilhelm_2014_Maxquant:0.108;PXD020192_liver:0.107;Human_liver_Chinese_2010_J._Proteome_Res:0.027;PXD016999_Jiang_Cell_2020_Liver-ppm:0.018;Fetal_Liver_Kim_2014_SEQUEST:0.006;
publication_year   2026
filename   9606-LIVER-integrated.txt

#-- 下面是正文表体,三列依次为基因符号、STRING 标识、ppm
gene_name|string_external_id|abundance
HBB|9606.ENSP00000494175|16161
FABP1|9606.ENSP00000295834|13527
ADH1B|9606.ENSP00000306606|13495
HBA2|9606.ENSP00000251595|12885
ALB|9606.ENSP00000295897|10694
CPS1|9606.ENSP00000402608|10281

读这条记录要读出四件事。其一,16,161 意味着肝脏里每一百万个蛋白分子中约有一万六千个是血红蛋白 β 链,占百分之一点六。其二,血红蛋白占据肝脏前四名这件事本身值得怀疑,肝组织取材时的血液残留是质谱蛋白组学的老问题,整合值把多个来源平均后并没有消除这个偏差。其三,权重串显示单一来源最高只占两成二,说明这个整合结果确实做了多来源平衡,而不是被一个深度实验主导。其四,覆盖度 81 意味着参考蛋白组里只有八成一在这批实验中被看到,剩下近两成的蛋白在这个文件里没有对应行,它们是缺失而不是零。

2.4 各层数据规模与覆盖

层级 规模 单位 来源
物种 405 个 下载目录物种子目录数;官方 API 物种端点同为 405
论文口径物种 392 个 v6.0 论文摘要
数据集总量 1639 个 v6.0 论文摘要,相对 v5.0 近乎翻倍
人类数据集 419 个 官方 API metadata/species 端点
小鼠数据集 198 个 官方 API metadata/species 端点
拟南芥数据集 61 个 官方 API metadata/species 端点
蜜蜂数据集 52 个 官方 API metadata/species 端点
斑马鱼数据集 35 个 官方 API metadata/species 端点
人类肝脏整合集蛋白数 15892 行 整合表正文非注释行计数
人类肝脏整合集覆盖度 81 百分比 文件头部
人类肝脏整合集来源数 13 个 权重串项数

这张表最该注意的不是总数,而是分布。人类一个物种占去数据集总量的四分之一强,小鼠再占一成二,剩下近四百个物种分享其余的份额,排在后面的物种往往只有一到三个数据集。所谓「跨物种可比」,可比的是坐标轴,不是证据强度。

2.5 与同类资源的字段差异

资源 观测单位 核心量 是否连续 组织本体 跨物种 标识体系
PaxDb 物种×组织×蛋白 ppm 份额 是 UBERON 是,预计算同源 STRING 为主
Human Protein Atlas 蛋白×组织×细胞 无/低/中/高分级 否 自有组织名 否 Ensembl 为主
GTEx 供体×组织×基因 转录本读数 是 自有组织名 否 Ensembl 为主
ProteomeXchange 一次投稿 原始谱图 不适用 不适用 是(投稿层面) PXD 编号
PeptideAtlas 蛋白×样品 观测肽段证据 部分 自有 是 Ensembl/UniProt
STRING 蛋白对 相互作用置信度 是 不适用 是 同名体系(PaxDb 借用)

最后一行值得展开:PaxDb 与 STRING 出自同一实验室体系,共用同一套蛋白标识,这不是巧合而是设计。共用标识让「丰度加互作」这类联合分析不需要额外做映射,也让 PaxDb 可以用 STRING 的互作一致性反过来给数据集打分,形成闭环。


§3 核心层 A:它与 HPA 到底差在哪

3.1 两种回答问题的姿态

HPA 的起点是「这个蛋白在哪里」。它用抗体去染组织切片与细胞,由病理学家看片子判读有无与强弱,最后落到「在肝细胞胞质、中等强度」这样一句话。这个答案的可贵之处在于位置与可验证性:抗体染色的图像公开可查,怀疑某个结论可以自己去看图。

PaxDb 的起点是「这个蛋白占多少」。它不关心蛋白长在哪个细胞里,只关心在整个组织磨碎之后的蛋白汤里,它占了多少份。这个答案的可贵之处在于数值与可比性:一个数可以进模型,可以算相关性,可以在不同物种之间相减。

两者回答的是不同问题,因此不存在谁更准的问题,只有谁更贴合的问题。把 HPA 的分级编码成一二三去做相关分析,等于人为把一个粗粒度变量当成连续变量;把 PaxDb 的 ppm 拿去做「有无」判断,等于把一个连续变量的零点附近的噪声当成信号。

3.2 冲突时该信谁:三个判据

两者结论冲突时,先看问题需要的是位置还是份额。需要位置的,PaxDb 从原理上就没有发言权,冲突不算冲突。

再看抗体可靠性。HPA 每个蛋白都带抗体可靠性分级,从增强、支持、认可到不确定四档,不确定档的蛋白其 IHC 结论本身就可疑,此时 PaxDb 的数值证据往往更值得采信。

最后看组织取材是否同源。HPA 的组织微阵列来自特定医院的活检与手术标本,PaxDb 的整合值来自全球投稿的质谱实验,两者覆盖的人群、取材时的新鲜程度、缺血时间都不同。一个蛋白在两者间差异很大,第一嫌疑是取材差异,而不是某一方算错了。

3.3 一个具体的对照:血液污染与组织转录本

人肝脏整合表里血红蛋白链居前四,这是质谱的经典伪影。HPA 的肝脏染色不会出现这个问题,因为抗体染色是看组织切片里的细胞,红细胞在制片时大部分已被冲掉或识别为血管内成分。同一个组织,两种方法给出的「最丰富蛋白」名单不同,原因不是谁错了,而是各自的观测口径不同。

反过来,HPA 在低表达蛋白上的分级依赖抗体质量,一个不可靠抗体可能把真阳性报成阴性。PaxDb 在这个区间同样不可靠,只是不可靠的方式不同:它的低值来自采样不足,HPA 的低值来自抗体不灵。当你需要在这两种不可靠之间做选择时,唯一的出路是找第三方证据,比如靶向质谱或抗体无关的肽段证据。

3.4 为什么文献里总把它们并排放

从 2023 年的 v5.0 论文开始,PaxDb 官方就主动把自己的人类子集与 HPA、GTEx 放在一起做对比分析。这个做法的意图很清楚:它在宣告自己是「第三种口径」,需要与已有的两种口径建立可对话的关系,而不是取代它们。

对使用者来说,这个对比的实用价值是提供了一个三向校验的机会。一个蛋白的丰度若在 PaxDb 高、GTEx 转录本也高、HPA 染色也强,三者同向,结论稳;若只有一方高,就要问为什么。多数真实情形落在中间:两方一致一方偏离,而偏离的那一方往往能用技术原因解释。

3.5 什么时候必须放弃 PaxDb 改用 HPA

需要亚细胞定位时;需要判断蛋白是否在特定细胞类型(如胰岛 β 细胞、心肌细胞)中表达时;需要在肿瘤与正常组织间做形态学对照时;需要用图像作为证据向非计算背景的合作者展示时。这四种情形下,连续数值无法替代一张能看的图。


§4 核心层 B:校准的可信度与它的贯穿案例

4.1 校准链条上的四个假设

从原始谱图到最终 ppm,中间串着四个假设,每一个都是失灵的潜在入口。

第一个假设是肽段可检测性与蛋白丰度成正比。实际上肽段能否被质谱看到,取决于它的长度、疏水性、电荷状态、是否落在仪器的最佳窗口内。短肽与极疏水肽系统性丢失,于是富含这类肽段的蛋白被系统性低估。PaxDb 用蛋白长度与理论可检测肽段数做归一,是对这个偏差的部分修正,不是消除。

第二个假设是谱图计数的动态范围足以覆盖真实分布。真实蛋白组跨越六到七个数量级,谱图计数的有效范围通常只有三到四个数量级,两端都被压缩。高丰度端饱和,低丰度端归零。

第三个假设是不同来源的数据可以加权平均。加权用的是与互作网络的一致性,逻辑是「一个数据集若与已知互作关系吻合得好,它的定量也更可信」。这个逻辑有道理,但它衡量的是整体一致性,不保证单个蛋白正确。

第四个假设是同源蛋白就是可比对象。直系同源的判定本身有不确定性,一对多、多对多、谱系特异扩增都让「同一个蛋白」这句话打折扣。

4.2 分数与覆盖度该怎么读

数据集打分是相对量,不能跨数据集直接比大小,因为打分依赖于该数据集所覆盖蛋白之间的互作密度。一个只测了核糖体蛋白的数据集,互作密度天然高,打分虚高;一个测了全蛋白组的数据集,互作密度被稀释,打分偏低。正确用法是在同一物种内部横向排序,挑出明显偏低的剔除。

覆盖度是更直观的指标。覆盖度五十意味着参考蛋白组里有一半没被看到。在整合集里,覆盖度同时受来源数量与各来源深度影响。人类肝脏整合集覆盖度八十一算是高的,很多物种的全生物体整合集覆盖度只有二三十,此时表里没有出现的蛋白有两种可能:真的没有,或者只是没测到,而文件本身不区分。

4.3 它为何能持续:选题压在了别人的重复劳动上

PaxDb 能活到今天,不是因为它是唯一能做这件事的人,而是因为它把「重做一遍」的成本一次性付清并公开。任何团队想自己攒一套跨物种丰度参考,都要面对数据收集、标识映射、管线统一、权重设计这四道工序,做一遍要几个月,而 PaxDb 已经做好了且只要求署名。这是典型的元资源生存逻辑:它不与被整合的资源竞争,而是让被整合的资源更有用,于是所有人都有动机维持它存在。

第二个支撑点是它与 STRING 的共生。共用标识体系让两者互为入口,一个查互作的用户顺手就能看到丰度,一个查丰度的用户顺手就能看到互作。这种导流在学术界是很实际的生存资源。

第三个支撑点是版本沉积。从 1.0 到 6.1 的每一个版本目录都还挂在下载页上,任何人可以回到任意历史版本复现。这个做法在数据资源里并非常态,但它让「引用了某版本」这句承诺变得可兑现,也是它能被写进方法学章节的前提。

4.4 案例:把肝脏整合表换算成 PBPK 的摩尔浓度

这里用一个具体工作流说明校准链条如何在真实场景里被检验。设某团队要给生理药代动力学模型填肝脏的药物代谢酶丰度,他们手上只有 PaxDb 的肝脏整合表,需要把 ppm 变成每升肝组织的微摩尔浓度。

第一步是取数:从整合表里筛出目标酶的几个基因符号,读出 ppm 与排序位置。第二步是换算尺度的搭建:ppm 是分子数份额,要变成浓度需要三个量,肝组织每克湿重的总蛋白质量、蛋白的平均分子量、肝组织密度。这三个量都不在 PaxDb 里,必须外置,且每一个都带不确定性。

第三步是敏感性检查:因为目标酶多在 ppm 几十到几百的区间,属于覆盖率较好但丰度不高的档位,换算误差主要来自总蛋白量假设,而不是来自测序深度。此时若能找到同组织的靶向质谱研究做交叉核对,误差可以收窄。

这个案例的关键启示是:PaxDb 提供的是链条中段的一个环节,链条两端的假设必须由使用者自己补齐并写清楚。把链条中段当成全链条,是这类数据被误用最常见的方式。

4.5 同一案例的另一面:拿它当机器学习标签

同一个肝脏整合表,换一个用法就暴露另一个风险。假设有人要训练「从蛋白序列预测组织丰度」的模型,把 PaxDb 全物种表当标签,按行随机划分训练与测试集。

问题出在两处。其一是同源泄漏:人和小鼠的同源蛋白序列相似度很高,一个进了训练集,另一个进测试集,模型学到的其实是「认物种」而不是「认序列与丰度的关系」。其二是同一蛋白的多组织记录被拆散到两边,模型只需记住蛋白名就能拿到标签。正确的划分粒度是蛋白组层面,且要按同源簇分组,把同一个直系同源簇的全部记录放在同一侧。

这个案例说明,校准方法本身没问题,但校准结果的统计结构会骗人。ppm 是连续值这一点让它特别适合做回归标签,也特别容易让人忘记标签之间并不独立。

4.6 校准失灵的三类场景

第一类是极端丰度区间。ppm 低于个位数的蛋白,其数值主要由采样噪声决定;ppm 高于数万的蛋白,其数值受饱和影响。中间的三到四个数量级是可靠区。

第二类是组织构成剧烈的样品。全血、唾液、羊水这类样品里少数蛋白占绝对主导,其余蛋白的份额被压到噪声以下。PaxDb 收录了这些组织,但它们的低丰度端基本不可用。

第三类是新加入的物种。数据集数量少、覆盖度低、没有独立研究交叉验证的物种,其整合值本质上是单一来源的外推,标注为「整合」容易让人误以为经过了多来源平均。


§5 核心层 C:怎么把数取出来

5.1 三条取数路径的选择

路径一,下载目录直取。适合要全量、要做本地批处理、要锁版本的场景。缺点是目录是纯文件服务,没有检索,得自己按物种号找。

路径二,公共 REST API。适合要单个蛋白、要做交互式查询、要在网页应用里嵌的场景。优点是结构化返回,且能直接拿到排序位置;缺点是需要申请密钥,无密钥时走共享测试池,速率受限。

路径三,网页浏览。适合探路与核对,不适合批量。

5.2 按物种下载与目录结构

下载根目录按版本分文件夹,每个版本文件夹下有六个固定子目录加若干压缩包。版本之间结构一致,这使跨版本比对只需要改一个路径片段。

子目录或文件 内容 规模参考
datasets/ 按物种号分子目录,每个下面放该物种全部数据集表 人类目录下五十二个整合表加四十余个单库表
paxdb-uniprot-links-v6.1/ STRING 标识到 UniProt 登录号的映射 单表九十余兆字节
paxdb-orthologs-v6.1/ 按分类节点组织的同源表,另有压缩包 压缩后约五十兆字节
paxdb-sequences-v6.1/ 各物种的参考蛋白序列 压缩后约六十余兆字节
paxdb-sdrf-v6.1/ 各来源实验的样本与数据文件描述表 每实验一文件,压缩后约四十千字节
paxdb-mapped_peptides-v6.1/ 肽段级谱图计数 压缩后约一百六十兆字节
paxdb-uniprot-crossreferences.txt 全量交叉引用平表 八十余兆字节

latest/ 是一个软链接式的别名目录,内容与最新版本一致。用它方便,但会让复现性打折,正式分析应当写死版本号。

5.3 用 Python 解析一个整合表

import io
import urllib.request

URL = ("https://pax-db.org/downloads/6.1/datasets/9606/"
       "9606-LIVER-integrated.txt")


def load_paxdb(url):
    #-- 读取并切分头部元数据与正文
    text = urllib.request.urlopen(url, timeout=60).read().decode("utf-8")
    meta, rows = {}, []
    body_started = False
    for line in text.splitlines():
        if not body_started:
            if line.startswith("#"):
                if line.strip() == "#":
                    #-- 单独的井号行是元数据结束的分隔符
                    body_started = True
                    continue
                key, _, val = line[1:].partition(":")
                meta[key.strip()] = val.strip()
                continue
            body_started = True
        if not line.strip():
            continue
        parts = line.split("\t")
        if parts[0] == "gene_name":
            continue
        if len(parts) == 3:
            rows.append((parts[0], parts[1], float(parts[2])))
    return meta, rows


meta, rows = load_paxdb(URL)
print("数据集名称:", meta.get("name"))
print("覆盖度:", meta.get("coverage"), "打分:", meta.get("score"))
print("蛋白行数:", len(rows))
print("ppm 合计:", round(sum(r[2] for r in rows)))

ranked = sorted(rows, key=lambda r: -r[2])
for gene, sid, ppm in ranked[:5]:
    print(f"{gene:10s} {sid:24s} {ppm:10.1f}")

运行后应看到三列数值的合计接近一百万,这是判断文件完整性的最快自检。若合计明显偏离,多半是解析时把注释行混进了正文,或者文件被截断。

5.4 用公共 API 查单个蛋白

#!/usr/bin/env bash
#-- 需要先在 https://api.pax-db.org/request-api-key 申请密钥
#-- 未申请时会落到共享测试池,速率受限但可用
API_KEY="${PAXDB_KEY:-test}"

#-- 1. 按基因名检索,先拿到 STRING 标识
curl -s "https://api.pax-db.org/v6/disambiguate?q=albumin&species_id=9606&page_size=3" \
  -H "x-api-key: ${API_KEY}" \
  | python3 -c "import json,sys; d=json.load(sys.stdin); [print(p['preferred_name'], p['string_id']) for p in d['proteins']]"

#-- 2. 用 STRING 标识查该蛋白在所有数据集里的丰度
curl -s "https://api.pax-db.org/v6/abundances/protein/9606.ENSP00000295897" \
  -H "x-api-key: ${API_KEY}" \
  | python3 -c "
import json,sys
d=json.load(sys.stdin)
print('蛋白:', d['preferred_name'], 'UniProt:', d['uniprot_id'])
for a in d['abundances'][:5]:
    info=a['dataset_info']
    print(info['name'], '|', a['formattedAbundance'], '|', a['rank'])
"

第二步返回的每一条都带数据集信息与组内排序,这两样比 ppm 数值本身更有用:同样一个 ppm 值,在小数据集里排前百与在深度数据集里排三千,含义完全不同。

5.5 用 API 做组织级汇总

import json
import urllib.request

BASE = "https://api.pax-db.org/v6"
KEY = "test"


def get(path):
    req = urllib.request.Request(BASE + path, headers={"x-api-key": KEY})
    with urllib.request.urlopen(req, timeout=60) as r:
        data = json.load(r)
    #-- 测试池会在返回里塞一条提示字段,正式密钥没有
    data.pop("message", None)
    return data


species = get("/metadata/species")
print("物种总数:", species["species_count"])
top = sorted(species["species"], key=lambda s: -s["dataset_count"])[:8]
for s in top:
    print(f"{s['species_name']:30s} {s['species_id']:8d} {s['dataset_count']:5d}")

organs = get("/metadata/organs")
print("组织条数:", len(organs["data"]))
for o in organs["data"][:5]:
    print(o["organ_id"], o["organ_name"])

组织标识是 UBERON 号,这一步的价值在于把 PaxDb 的组织名挂到标准本体上,从而能与 GTEx、HPA、单细胞图谱做跨资源对齐。

5.6 交叉引用与同源表的使用

import gzip
import urllib.request

LINKS = ("https://pax-db.org/downloads/6.1/"
         "paxdb-uniprot-links-v6.1/paxdb-uniprot-links-v6.1.tsv")

#-- 映射表是两列:左边 STRING 标识,右边 UniProt 登录号
sample = {}
with urllib.request.urlopen(LINKS, timeout=120) as r:
    for i, raw in enumerate(r):
        if i >= 200000:
            break
        line = raw.decode("utf-8").rstrip("\n")
        if not line or "\t" not in line:
            continue
        sid, acc = line.split("\t")[:2]
        sample[sid] = acc

print("已读入映射条数:", len(sample))
probe = "9606.ENSP00000295897"
print(probe, "->", sample.get(probe, "未在前二十万行内出现"))

这个映射是使用 PaxDb 时最容易忽略却最必要的一步。PaxDb 的主键是 STRING 标识,而绝大多数下游工具认 UniProt 或基因符号。用基因符号直接连接会踩到物种内重名与版本别名两个坑,用 UniProt 连接则要多一次映射,可靠性更高。

5.7 一条最短的可用流程

#!/usr/bin/env bash
set -euo pipefail

VER="6.1"
SP="9606"
ORG="LIVER"
OUT="paxdb_${SP}_${ORG}.tsv"

#-- 1. 直接下载整合表,不需要任何鉴权
curl -fsSL -o "${OUT}" \
  "https://pax-db.org/downloads/${VER}/datasets/${SP}/${SP}-${ORG}-integrated.txt"

#-- 2. 自检:正文 ppm 合计应接近一百万
awk -F'\t' '!/^#/ && NF==3 && $1!="gene_name" {s+=$3; n++} END {printf "行数 %d 合计 %.0f\n", n, s}' "${OUT}"

#-- 3. 取前二十个最丰富蛋白
awk -F'\t' '!/^#/ && NF==3 && $1!="gene_name"' "${OUT}" \
  | sort -k3,3 -nr | head -20

三步之内就能拿到一个可用的组织蛋白丰度表,这也是 PaxDb 对初学者最友好的地方:它没有账号墙、没有申请流程、没有审稿期 embargo。

5.8 常见取数错误

错误做法 后果 正确做法
用 latest/ 路径下载并写进方法 半年后无法复现 路径里写死版本号
把注释行当数据行解析 ppm 合计远超百万 跳过井号开头行,按分隔行识别正文起点
用基因符号跨物种合并 同名不同蛋白被错并 用 STRING 标识或 UniProt 登录号
混用整合表与单库表算相关性 同一实验被重复计入 明确只用一层,并在表里标注层
忽略覆盖度直接比物种 覆盖低的物种差异被误读为生物学差异 同时报告覆盖度并做敏感性分析
把 ppm 直接当浓度 量纲错,差出数倍到数十倍 显式引入总蛋白量与平均分子量做换算

§6 与库内条目的关系

6.1 关系图谱

PaxDb 在库里的位置是「定量中台」。上游连着原始数据仓储(ProteomeXchange、PRIDE、PeptideAtlas),下游连着各类应用型资源(HPA 是定性对照,GTEx 是转录层对照,AlphaFold 与 AlphaMissense 是结构层资源,ProteinGym 是变异效应基准)。它与这些资源的关系不是替代,而是提供一条数值坐标轴。

库内资源 关系类型 怎么配合使用
Human Protein Atlas 定性对照 用 PaxDb 给 HPA 的分级加上量级刻度;冲突时按 §3.2 的三个判据处理
GTEx 转录层对照 蛋白丰度与转录本丰度的偏离本身就是研究对象;两者都用 Ensembl 侧映射对齐
ProteomeXchange 上游供给 PaxDb 的每个数据集都能回溯到一个投稿编号;要重算就从这里取原始文件
AlphaFold 结构层下游 结构预测不提供丰度,但把丰度映射到结构表面可解释为何某些界面更常被观测
AlphaMissense 变异层下游 变异效应强度要乘上蛋白丰度才有生物学量级;低丰度蛋白的高致病性变异更易被噪声淹没
ProteinGym 评测层 适合做「按丰度分层」的稳健性分析,检验模型是否只在高丰度蛋白上表现好

6.2 检索路径

从问题出发的三条典型路径。若问题是「某蛋白在组织里多不多」,直接走物种目录取组织整合表。若问题是「某蛋白在所有条件下被测到过几次」,走 API 的蛋白端点,会返回跨数据集的长列表。若问题是「两个物种的同源蛋白谁更丰富」,先取两边的组织整合表,再用同源表把标识对齐,最后合并。

反向的路径同样有用:拿到一批感兴趣蛋白后,用 API 反查它们在哪些组织里被检测到,可以快速判断这批蛋白的组织特异性,作为下游实验设计的先验。


§7 质量评估与局限性

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

在给这个库打分之前,必须先把评价坐标系摆正。PaxDb 不是一次实验的数据集,而是一个把上千次实验揉在一起的元资源,用「标注准确率」「样本代表性」这类单数据集指标去衡量它,会得出全面失真的结论。正确的问法只有三个:校准链条的假设是否成立、整合过程的透明度是否足够、覆盖的边界是否被清楚标注。凡是脱离这三问去评判「好或不好」,都属于坐标系误判。

第二个需要校正的认知是关于误差的性质。单次质谱实验的误差主要来自随机采样,可以用重复实验平均掉;PaxDb 的误差里有一部分是系统性的,比如所有短蛋白都偏低,这种偏差不会被多来源平均消除,反而会被加权整合固化下来。评估时要把随机误差与系统偏差分开看,前者关心信噪比,后者关心方向与幅度。

7.1 五维评分

维度 分值 依据 扣分原因
规模覆盖 4.5 / 5 405 个物种、1639 个数据集,三域生命全覆盖 物种间数据集数量极度不均
结构规范 4.5 / 5 头部元数据齐备、三列正文极简、版本目录沉积完整 无正式数据字典页,字段含义需从文件推断
可比性 4.0 / 5 统一管线与统一标识,跨物种可直接对齐 整合权重随版本变动,跨版本拼接有偏移
不确定性披露 2.5 / 5 有数据集级打分与覆盖度 无逐蛋白置信区间,低丰度端无可用误差估计
可复现性 4.0 / 5 历史版本全留、肽段级计数公开、原始编号可追 部分早期版本缺少统一重处理,链路不齐

五个维度里最弱的是不确定性披露。这不是苛责:一个连续数值表如果不告诉使用者每个数的可信程度,使用者就只能靠经验划一条丰度下限,而这条线在组织之间并不通用。

7.2 与单次实验相比的优劣

比较项 单次深度质谱实验 PaxDb 整合值
覆盖深度 单次可达全蛋白组六成以上 整合后覆盖更广,但受限于各来源的并集
定量精度 同一批样品内可比 跨来源平均,单蛋白精度未必更高
跨实验室可比性 差,需自己归一 好,这是核心卖点
条件特异信息 保留全部条件 全部抹平,只剩健康参考态
误差可追踪 可回到原始谱图 只能到数据集级
适用场景 差异分析、机制研究 基线构建、跨库比较、建模输入

这张表回答了一个常被问的问题:既然有深度实验,为什么还要用整合值。答案是整合值不追求更准,追求更可比。做组内比较时自己的实验更好,做跨实验室跨物种的绝对定位时整合值更好。

7.3 已知的、可枚举的偏差

第一,长度偏差。谱图计数按蛋白长度归一,修正了「长蛋白肽段多」的问题,但过度修正会让短蛋白被高估。净效果取决于具体蛋白的肽段可检测性分布。

第二,疏水性偏差。膜蛋白与高疏水蛋白在常规酶解流程中回收率低,膜蛋白整体被低估。这对转运体与受体类药物的靶点丰度影响很大。

第三,血液污染偏差。血管丰富的组织(肝、脾、肺、心)里高丰度血浆蛋白挤占检测资源,组织自身的中低丰度蛋白被压下去。

第四,细胞构成偏差。组织级的平均值把不同细胞类型混在一起,实质细胞与间质细胞的比例在不同供体间变化,整合值把这个变化也平均掉了。

第五,来源偏差。数据集集中的物种与组织(人、小鼠的常见组织)证据厚,边缘物种与罕见组织证据薄,同一张图上的数值可信度并不齐。

第六,时间偏差。质谱技术从 2010 年代到现在经历了从低分辨到高分辨、从数据依赖采集到数据非依赖采集的演进,早年的数据集在深度与精度上系统性弱于近年,而整合权重不按年份打折。

7.6 DAIMS 24 项数据就绪度评估

DAIMS 是数据可用性与互操作性的二十四项检查,把这套清单套在 PaxDb 上,能看出它是一个「文件层极其干净、元数据层偏薄」的典型。

# 检查项 状态 说明
1 宽格式 ✅ 三列长表,一行一个蛋白,机器友好
2 唯一标识 ✅ STRING 标识跨物种唯一,可作主键
3 特殊字符 ⚠️ 基因符号含斜杠与下划线的记录存在,跨工具传输需转义
4 重复行 ⚠️ 整合表内同一基因符号可对应多个 STRING 标识,需按标识去重
5 缺失编码 ⚠️ 未观测到的蛋白直接不出现,缺失与零不可区分
6 标签体系 ✅ 组织用 UBERON、蛋白用 STRING,两套标准本体齐备
7 罕见类分组 ⚠️ 低数据集物种无单独标记,只能靠自己按物种筛
8 偏倚评估 ⚠️ 官方在论文里讨论过部分偏差,数据文件内无偏倚字段
9 数据字典 ❌ 无独立字典页,字段含义需读文件头与论文推断
10 信息性缺失解释 ⚠️ 覆盖度字段间接说明缺失规模,但不解释个体缺失
11 设备记录 ✅ 每个数据集的来源实验可回溯到投稿编号与仪器信息
12 共线性 ⚠️ 同一蛋白在同一组织的整合值与单库值高度相关,混用即共线
13 编码映射 ✅ STRING 到 UniProt 的映射单独成表,链路清楚
14 时间戳处理 ⚠️ 只有出版年份,无采集时间,时间维泛化受限
15 划分建议 ⚠️ 无官方划分,机器学习用途需自定分组规则
16 泄漏讨论 ❌ 同源泄漏与同蛋白多组织泄漏无官方指南
17 标签分布 ⚠️ 丰度分布未随库发布,需自行统计
18 测量偏倚 ⚠️ 无逐蛋白误差估计,偏倚只能定性讨论
19 外部验证建议 ✅ 论文做过与 HPA、GTEx 的三方对比,路径现成
20 版本记录 ✅ 从 1.0 起全部版本留在下载目录,可精确复现
21 预处理脚本 ⚠️ v6 起有统一管线与肽段级计数,但未以开源仓库形式分发
22 合规要求 ✅ CC BY 4.0 明确,署名义务清晰
23 多模态对齐 ✅ 丰度、序列、同源、互作共用一套标识,天然可对齐
24 去标识化 ✅ 不含个体数据,无隐私问题

DAIMS 评分:16.5 / 24

评分解读:满分项集中在标识体系、版本管理与许可,这三样恰好是元资源最该做好的部分;扣分项集中在数据字典、泄漏讨论与逐蛋白误差。这意味着把它接入生产管线时,需要自建的是「字段说明文档」与「划分闸门」两样东西,其余可以直接沿用官方资产。

对你意味着什么:若要做机器学习,先按 §4.4 的案例把同源簇分组写进数据加载层,这是第 16 项缺失带来的必做功课;若要做参数化建模,先把第 9 项的字段含义写成内部文档,避免团队里三个人对 score 有三种理解。

7.4 外部验证矩阵

验证维度 外部参照 一致性的一般结论 注意事项
组织层面蛋白 vs 转录本 GTEx 中等相关,多数组织方向一致 相关弱于同层内的重复性,不能互相替代
蛋白有无 vs 抗体染色 HPA 高丰度蛋白一致性较好 低丰度段两者都不可靠,一致性无意义
同源蛋白丰度守恒 多物种同源表 核心代谢酶跨物种保守 信号与免疫相关蛋白跨物种漂移大
定量值 vs 靶向质谱 独立靶向研究 高丰度酶一致性较好 靶向研究的组织取材必须同源才有可比性
谱图计数 vs 标记定量 同一样品的双方法研究 大趋势一致,极端值分歧 标记法定量在低丰度端更稳,但成本高

7.5 它为何能持续:把公共数据的边际价值榨出来

PaxDb 的生存逻辑可以一句话概括:它不生产数据,它生产别人用不了的数据。公共质谱数据的边际价值在单项研究里往往被浪费,因为再分析一次的成本高、口径不统一、没人愿意为一个「二手结论」负责。PaxDb 承担了这三份成本并把结果挂在开放许可下,于是每一次有人需要跨实验室比较,它就多一次被引用的机会。

这个逻辑还有一层防御性:它站在公共数据之上,只要质谱投稿还在增长,它的原料就不会枯竭;而它自己的产出(整合值、同源表、评分)是任何单一实验都无法提供的加总。加总类资源的护城河来自历史沉积,新入场者要从头做一遍所有版本。


§8 生态位与历史

8.1 版本沿革

版本 时间 论文口径规模 关键变化
1.0 2011-07 未在下载目录外单独公布 首个公开版本,下载目录时间戳 2011 年 7 月
2.0 2012-10 12 个模式生物、八万五千个蛋白 首篇正式论文,确立 ppm 与跨物种同源比较
2.1 2012-10 同上 与 2.0 同日上线,属修订
3.0 2015-07 未核实 扩充物种与组织
4.0 2017-10 未核实 v4 论文对应版本
4.1 2021-11 未核实 修订
4.2 2023-03 未核实 修订
5.0 2024-06 170 个物种、831 个数据集 首次与 HPA、GTEx 做官方对比
6.0 2026-07 392 个物种、1639 个数据集 引入 FragPipe 统一重处理与大模型辅助筛选
6.1 2026-07 下载目录 405 个物种 与 6.0 同日上线,属修订

时间轴上有一个值得注意的细节:2.0 与 2.1、6.0 与 6.1 都是同日上线,说明这个项目习惯在正式版本后立刻推一个修订版。使用时要以修订版为准,论文里描述的往往是正式版。

8.2 从 2012 到 2026:口径的三次迁移

第一次迁移是从「平均」到「加权整合」。2012 年的论文摘要里用的词是平均(averaging),强调聚合多个样品后覆盖面与动态范围都提升;到 2023 年的 v5.0,加权与打分已经成为核心叙述。

第二次迁移是从「收集」到「重处理」。2012 年的叙述重点是映射到共同命名空间并用标准化谱图计数管线处理;2026 年的 v6.0 把重点放在用统一框架从原始文件重新搜库,这是质的变化:从「相信作者的定量」变成「自己重算一遍」。

第三次迁移是从「人工作业」到「大模型辅助」。v6.0 的一大卖点是训练了集成分类器来半自动化地筛选相关投稿项目,这解决的正是元资源最难扩张的环节:判断一篇投稿是否值得收。这一步让物种数在两年内接近翻倍。

8.3 生态位:夹在原始仓储与专用图谱之间

用一句话定位:它比原始仓储结构化,比专用图谱通用。原始仓储给你未经处理的谱图,处理成本高但灵活;专用图谱(如某物种某组织的专题数据库)给你精修的结果,质量高但覆盖窄。PaxDb 选择的是中间路线:广覆盖、中等精度、统一口径。

这个位置的优势是难以被替代,劣势是两头受挤。上游仓储若开始提供统一的再分析服务,下游图谱若开始覆盖更多物种,中间层的价值会被压缩。v6.0 选择自己去做重处理,正是对这个压力的直接回应。

8.4 团队与可持续性

维护方是瑞士生物信息研究所的 von Mering 实验室,与 STRING 数据库同源。这个背景解释了为什么 PaxDb 可以直接借用 STRING 的标识、互作网络与打分逻辑,也解释了它为什么能长期维持:两个资源共享基础设施与人力,边际成本被摊薄。

可持续性的真实风险不在人力而在数据许可。PaxDb 收录的原始数据来自各公共仓储,多数是开放许可,但重处理后的衍生数据能否自由再分发,取决于上游条款。官方以 CC BY 4.0 发布,使用者的署名义务应当履行。


§9 使用指引

9.1 三种角色的路径

第一类是计算生物学工程师,要从头搭一条丰度驱动的分析管线。他们的路径是:先取物种目录的全量整合表建立本地索引,再用交叉引用表把 STRING 标识换成 UniProt 与基因符号,最后按下游工具要求输出矩阵。关键动作是锁版本与记录覆盖度,这两样决定了结果能否复现。

第二类是系统药理学与建模人员,要往模型里填参数。他们的路径是:只取目标组织的整合表,核对覆盖度与数据集打分,把 ppm 换算成浓度并把换算假设全部写进模型的补充材料。关键动作是做敏感性分析,看参数在总蛋白量假设的合理区间内变动时,模型输出怎么变。

第三类是数据科学家,要把 PaxDb 当机器学习标签。他们的路径是:按物种与组织分层抽样,按同源簇分组划分,把低覆盖度组织整体剔除。关键动作是防泄漏,详见 §4.4 的案例给出的划分规则。

9.2 一条最短的可用流程

#!/usr/bin/env bash
set -euo pipefail

#-- 零配置最短路径:不申请密钥,不下全量包,只取一个组织的整合表
VER="6.1"
SP="9606"
ORG="LIVER"
URL="https://pax-db.org/downloads/${VER}/datasets/${SP}/${SP}-${ORG}-integrated.txt"

curl -fsSL -o "liver.txt" "${URL}"

#-- 打印头部元数据,确认版本、覆盖度、打分、来源数
grep '^#' liver.txt | grep -v '^#$' | cut -c1-120

#-- 正文行数与 ppm 合计自检
awk -F'\t' '!/^#/ && NF==3 && $1!="gene_name" {s+=$3; n++}
            END {printf "蛋白行数=%d ppm合计=%.0f\n", n, s}' liver.txt

#-- 取丰度在前 1% 的蛋白(百分位阈值由使用者自定)
awk -F'\t' '!/^#/ && NF==3 && $1!="gene_name"' liver.txt \
  | sort -t$'\t' -k3,3 -nr \
  | awk -F'\t' 'NR<=FNR && FNR<=200 {print $1"\t"$3}'

这段脚本的核心是第二步自检。ppm 合计接近一百万说明解析正确,这是判断任何 PaxDb 文件是否被完整读取的通用办法。

9.3 引用方式

引用 PaxDb 时要写三件事:版本号、访问日期、对应的论文。版本号必须是具体的数字而不是「最新版」,因为整合权重会变。访问日期用于说明数值快照的时间点。论文按所用版本选,v6 用 2026 年的核酸研究论文,v5 用 2023 年的分子与细胞蛋白质组学论文,更早的版本用 2012 年的原始论文。

许可要求署名,若在商业产品里使用,除署名外还应在产品说明中保留许可链接。原始文献引用与数据许可署名是两件事,都要做。


§10 AI 使用声明

项目 声明内容
AI 参与范围 资料整理、结构编排、代码示例编写与文字润色
事实来源 官方网站与下载目录、Europe PMC 论文摘要、官方公共 API
未核实的部分 各历史版本的精确规模、下载页前端渲染后的交互细节
数值核验方式 下载目录文件清单与文件头元数据、API 返回字段、论文摘要句
代码测试情况 解析脚本在本机对官方整合表运行通过,ppm 合计接近百万
已知局限 未逐物种核对规模,仅对少数物种做了抽样
内容定稿时间 2026-10-26
纠错渠道 通过千方医数集编辑部反馈,注明具体段落与所据来源

常见误读(避坑清单)

常见说法 实际 证据
PaxDb 和 HPA 可以互相替代 前者给连续份额,后者给位置与分级,维度不同 §3.1 至 §3.2 的对照;两库官方各自的字段定义
ppm 就是浓度,可以直接进动力学方程 ppm 是份额,换算成浓度需要外置总蛋白量与平均分子量 §1.2 第一条;§4.4 的换算链条
整合值一定比单库值准 整合值更可比,单蛋白精度未必更高 §7.2 的比较表
覆盖度低只是测得少,数值本身没问题 未见蛋白与零丰度不可区分,低覆盖组织的低值不可用 §4.2;§5.8 的取数错误表
跨物种可以直接比基因同名的蛋白 必须走直系同源映射,同名不等于同源 §3.3;§5.6 的映射步骤
数据集打分越高越可信,可以跨物种比 打分受蛋白数影响,只能同物种内排序 §4.2 的打分读法
用基因符号当主键连接最方便 物种内会重名、存在别名与版本变更 §5.8;改用 STRING 标识或 UniProt
低丰度蛋白的差异倍数有意义 个位数 ppm 主要由采样噪声决定 §4.1 第二个假设;§4.6 第一类场景
最新版总是最好的选择 权重随版本变,跨版本拼接会引入偏移 §8.1 的版本表;§5.8 的版本锁定
把整合表按行随机划分就能训练模型 同源与同蛋白泄漏会让指标虚高 §4.4 的案例给出的分组划分规则

FAQ

Q1:PaxDb 里的 ppm 到底怎么算出来的?
以谱图计数为主干。先统计每个蛋白在某个实验里被鉴定到的肽段与谱图次数,再按蛋白长度与理论可检测肽段数归一,最后把该样本内所有蛋白的归一值缩放成加和一百万。非谱图计数的来源(如其他定量手段)会被映射到这个尺度上。v6 起还在原始文件层面做了统一重搜,减少作者搜索参数带来的差异。

Q2:它和转录组数据能不能互相换算?
不能直接换算。两者都是份额,但 mRNA 到蛋白之间隔着翻译效率、降解速率、定位与修饰,这层关系的变异幅度与信号本身的变异幅度接近。可以做相关分析、可以做方向一致性的检验,但不做线性回归式的换算。

Q3:为什么有些组织里最丰富的蛋白看起来不合理?
最常见的原因是血液残留与取材构成。血管丰富的组织里血浆高丰度蛋白会挤进前列;消化道与呼吸道具黏膜表面的样本会混入分泌蛋白。遇到可疑的高丰度项,先查该蛋白是否属于常见污染清单,再看该组织的数据集来源。

Q4:整合表的权重是怎么定的?
按各来源与外部互作网络的一致性打分加权。逻辑是与已知互作关系吻合得好的数据集,其定量也更可信。权重串写在文件头部,可以直接读出单一来源的主导程度。权重随版本重算,这是跨版本比较必须谨慎的原因。

Q5:覆盖率 81 意味着有两成蛋白丰度为零吗?
不是。它意味着参考蛋白组里有两成在这批实验里没有被观测到,其真实丰度可能很低但不为零。文档里未出现的蛋白在语义上是未知,不是零。做下游计算时把缺失当零会系统性低估总量。

Q6:能不能用它判断某个蛋白是否有组织特异性?
可以,但要控制条件。做法是在同一物种内跨多个组织取 ppm,看该蛋白的分布形态;同时报告每个组织的覆盖度,避免把「没测到」误判为「不表达」。单组织高值不足以证明特异性,需要看其他组织的上限估计。

Q7:它收录疾病样本吗?
不收录。设计目标是健康、野生型参考态,这是它与差异表达类资源的根本分野。做疾病研究时它只能当基线,处理效应要回到原始投稿数据。

Q8:公共 API 需要付费吗?
不需要。可以在官方页面一键申请密钥,无密钥时会落到一个共享的限速测试池,功能可用但速率受限,适合调试与低频查询。批量任务建议走下载目录,不走 API。

Q9:为什么同一个蛋白在不同文件里的 ppm 差很多?
因为不同文件的观测单位不同。全生物体样本与单组织样本的基数不同;整合值与单库值的算法不同;不同来源的实验深度不同。比较前必须确认两边的观测单位一致,且都是同一层。

Q10:用它能做药物靶点的可成药性判断吗?
只能做一部分:它告诉你靶点在目标组织里有多丰富,这是可成药性讨论的一个输入。但可成药性还涉及结构可及性、选择性、通路位置,这些都要结合结构资源与通路资源。单看丰度容易得出「丰度高所以好打」的错误推论。

Q11:早期版本还能用吗?
能用,下载目录保留了从 1.0 起的全部版本。但早期版本的数据集少、重处理管线不统一,适合做历史对照而不适合做当前分析。若要复现某篇老论文的结果,必须回到它当年用的版本。

Q12:许可允许商用吗?
CC BY 4.0 允许商用,条件是署名并保留许可链接。注意原始数据的来源许可可能更严格,若要做的是再分发原始谱图而非 PaxDb 的衍生值,需要逐个核对上游条款。

术语表

术语 英文 含义
绝对丰度 absolute abundance 以分子数或浓度表达的蛋白量,区别于相对比值
ppm parts per million 每百万蛋白分子中该蛋白的份数,单样本内加和为百万
谱图计数 spectral counting 以蛋白被鉴定到的谱图数量作为丰度代理的定量方法
肽段谱图匹配 PSM 一张谱图与一条肽段序列的匹配记录,谱图计数的计数单位
归一化 normalization 消除上样量、仪器响应等系统差异的处理
整合数据集 integrated dataset 同组织同条件下多来源加权平均后的结果
覆盖度 coverage 该数据集观测到的蛋白占参考蛋白组的百分比
一致性打分 consistency score 数据集丰度与外部互作网络的吻合程度评分
直系同源 ortholog 不同物种间由共同祖先基因垂直演化而来的对应基因
分类层级 taxonomy level 同源关系所归属的分类节点,如哺乳纲、脊椎动物亚门
组织本体 UBERON 跨物种的解剖结构标准本体,PaxDb 用其标识组织
STRING 标识 STRING ID 形如物种号.蛋白号的复合主键,跨物种唯一
UniProt 登录号 accession 蛋白质序列数据库的唯一标识
样本与数据文件描述表 SDRF 描述质谱实验样本、文件与处理参数的标准化表格
动态范围 dynamic range 可定量区间跨越的数量级数
长度归一 length normalization 按蛋白长度或可检测肽段数校正谱图计数的步骤
数据非依赖采集 DIA 不预先选择母离子、分段窗口全扫的采集模式
数据依赖采集 DDA 逐个选择强母离子碎裂的采集模式
靶向质谱 targeted MS 只针对预设肽段的定量方法,灵敏度高
血液污染 blood contamination 组织样本中残留血浆蛋白造成的定量偏移
组织微阵列 TMA 把多个组织芯点排在一张玻片上的取材方式,HPA 用
加权平均 weighted averaging 按来源可信度赋权后求平均的整合方式
同源泄漏 ortholog leakage 同源蛋白分处训练与测试两侧造成的信息泄漏
版本沉积 version archiving 历史版本长期保留可下载的做法

附录 A:核心数字核对表

项 值 来源 来源层级
维护机构 瑞士生物信息研究所 von Mering 实验室 官网结构化数据 官方页面
许可证 CC BY 4.0 官网结构化数据 官方页面
物种数(论文) 392 v6.0 论文摘要 论文摘要
数据集数(论文) 1639 v6.0 论文摘要 论文摘要
物种子目录数 405 下载目录 官方页面
人类数据集数 419 公共 API 官方页面
小鼠数据集数 198 公共 API 官方页面
v5.0 物种数 170 v5.0 论文摘要 论文摘要
v5.0 数据集数 831 v5.0 论文摘要 论文摘要
首版论文物种数 12 2012 年论文摘要 论文摘要
首版论文蛋白数 八万五千 2012 年论文摘要 论文摘要
肝脏整合表行数 15892 下载文件本体 官方页面
肝脏整合表覆盖度 81 文件头 官方页面
肝脏整合集来源数 13 文件头权重串 官方页面
ppm 加和 一百万 文件本体校验 官方页面
API 版本前缀 /v6 接口规范 官方页面
同源表压缩体积 约五十兆字节 下载目录 官方页面
交叉引用表体积 八十余兆字节 下载目录 官方页面

附录 B:数字的来源分层

官方页面层:物种子目录数、各物种数据集数、文件行数、覆盖度、打分、权重串、目录体积、API 字段与返回结构、许可证。这一层的数字可直接引用,但要注意它们是快照,随版本变化。

论文摘要层:1639 个数据集、392 个物种、831 个数据集、170 个物种、12 个模式生物、八万五千个蛋白、ppm 的定义与积分方式、统一重处理管线、大模型辅助筛选。这一层代表作者自述的口径,与下载目录的口径存在小幅差异(392 对 405),差异构成官方未说明。

未核实层:3.0 至 4.2 各版本的确切规模、各物种覆盖度的分布、逐蛋白的置信区间、整合权重的具体计算公式、历史版本之间权重变更的幅度。这一层不要作为论证依据,需要时自行从下载文件推断。

口径差异的处理原则:论文说 392 而目录有 405,不判谁错,只写两个口径并存,差额构成官方未说明。同理,数据集总数 1639 与「人类 419 加小鼠 198 加其余」的加总是否吻合,官方未给逐物种清单,不做推算。

附录 C:完整参考文献

  1. Wang M, Weiss M, Simonovic M, Haertinger G, Schrimpf SP, Hengartner MO, von Mering C. PaxDb, a database of protein abundance averages across all three domains of life. Molecular & Cellular Proteomics. 2012;11(8):492-500. DOI 10.1074/mcp.O111.014704. PMID 22535208.
  2. Huang Q, Szklarczyk D, Oehninger J, von Mering C. PaxDb v6.0: reprocessed, LLM-selected, curated protein abundance data across organisms. Nucleic Acids Research. 2026;54(D1). DOI 10.1093/nar/gkaf1066. PMID 41182819.
  3. PaxDb 5.0 相关论文(2023,Molecular & Cellular Proteomics,DOI 10.1016/j.mcpro.2023.100640):给出 831 个数据集、170 个物种、22 古菌 81 细菌 67 真核的口径,并首次与 Human Protein Atlas、GTEx 做人类子集对比。
  4. PaxDb 官方网站与下载目录:https://pax-db.org/ 与 https://pax-db.org/downloads/6.1/
  5. PaxDb 公共 API 文档与接口规范:https://api.pax-db.org/docs
  6. Human Protein Atlas 官方站点:https://www.proteinatlas.org/ (用于 §3 的定性对照)
  7. 由 PaxDb v6.0 驱动的第三方建模研究(2026,CPT: Pharmacometrics & Systems Pharmacology):把 PaxDb 丰度换算成组织摩尔浓度供生理药代动力学模型使用,是 §4.4 案例链条的现实版本。

附录 D:任务代码

以下脚本把「取一个组织、换成 UniProt、算组内百分位」三步串起来,可直接运行。

import io
import urllib.request
import zipfile

VER = "6.1"
SP = "9606"
ORG = "LIVER"
BASE = f"https://pax-db.org/downloads/{VER}"

def fetch(url, limit=None):
    data = urllib.request.urlopen(url, timeout=180).read()
    if limit:
        return data[:limit]
    return data

#-- 1. 取组织整合表
raw = fetch(f"{BASE}/datasets/{SP}/{SP}-{ORG}-integrated.txt").decode("utf-8")
meta, body = {}, []
started = False
for line in raw.splitlines():
    if not started:
        if line.startswith("#"):
            if line.strip() == "#":
                started = True
                continue
            k, _, v = line[1:].partition(":")
            meta[k.strip()] = v.strip()
            continue
        started = True
    p = line.split("\t")
    if len(p) == 3 and p[0] != "gene_name":
        body.append((p[0], p[1], float(p[2])))

#-- 2. 取交叉引用表的前一段做 STRING 到 UniProt 的映射
links = {}
with urllib.request.urlopen(
        f"{BASE}/paxdb-uniprot-links-{VER}/paxdb-uniprot-links-{VER}.tsv",
        timeout=180) as r:
    for i, line in enumerate(r):
        if i > 300000:
            break
        parts = line.decode("utf-8").rstrip("\n").split("\t")
        if len(parts) >= 2:
            links[parts[0]] = parts[1]

#-- 3. 输出带百分位的表
body.sort(key=lambda x: -x[2])
n = len(body)
print("覆盖度", meta.get("coverage"), "蛋白数", n)
for i, (gene, sid, ppm) in enumerate(body[:10], 1):
    pct = 100.0 * (n - i + 1) / n
    print(f"{i:5d} {gene:12s} {links.get(sid, 'NA'):12s} {ppm:10.1f} {pct:6.2f}%")

此脚本的每一步都可以独立替换:换成别的物种号与组织名即换组织,换 VER 即换版本,换输出格式即接入下游。唯一不能省的是第一步的自检,即正文 ppm 合计应接近一百万。

附录 E:如果只记五件事

  1. ppm 是份额不是浓度,单组织内加和一百万,这是它所有可比性的来源。
  2. 它与 HPA 是两个维度,一个连续一个分级,一个组织级一个细胞级,不能互相替代。
  3. 谱图计数的动态范围有限,低丰度端与短蛋白、膜蛋白都系统性偏差,不要在这样的区间做精细比较。
  4. 跨物种比较必须走直系同源,且要同时报告两边的数据集数量与覆盖度。
  5. 锁版本、记覆盖度、写清换算假设,这三件事决定结果能不能复现。

编辑说明

本篇的事实核验于 2026-10-26 完成,核验路径为官方网站首页的结构化数据段、下载目录的文件清单与文件头、官方公共 API 的四个端点、Europe PMC 的两篇 PaxDb 主论文摘要与一篇第三方建模论文摘要。所有带千分位的过程数字都以概数改写,避免单一数字在文中反复出现。

未覆盖的内容包括:一是各历史版本的逐项规模,下载目录虽有版本文件夹,但未逐版本比对文件差异;二是各物种覆盖度的分布,这需要遍历全部物种目录,超出本次核验的时间盒;三是整合权重的计算公式,官方未在摘要层面披露,正文只描述其逻辑不描述其代数形式。

凡文中出现「官方页面称」「未核实」的位置,均为本次核验未能取得一手材料的地方,不应作为论证依据。若后续官方发布正式数据字典,§2.2 的字段表应以官方定义为准修订。


相关数据集导航

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

  • tcga-legacy — 共享标签:基因组学与多组学 / 蛋白质组学 / 转录组
  • immport — 共享标签:基因组学与多组学 / 蛋白质组学 / 转录组
  • human-protein-atlas — 共享标签:基因组学与多组学 / 蛋白质组学 / 转录组
  • uniprot — 共享标签:基因组学与多组学 / 蛋白质组学
  • alphafold — 共享标签:基因组学与多组学 / 蛋白质组学
  • geo — 共享标签:基因组学与多组学 / 转录组
  • fantom5 — 共享标签:基因组学与多组学 / 转录组
  • cptac — 共享标签:基因组学与多组学 / 蛋白质组学
  • tabula-sapiens — 共享标签:基因组学与多组学 / 转录组
  • single-cell-portal — 共享标签:基因组学与多组学 / 转录组

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

返回 AI-Ready 数据集