信息速览
质谱做定量有一个绕不开的先天缺陷:同一针样品里,甲蛋白的信号是乙蛋白的三倍,这件事可以反复测准;但甲蛋白在这个组织里究竟有多少个分子,仪器答不出来。信号强度是相对的,而且换个实验室、换台仪器、换套酶解流程,同一份样品的相对比例都会漂。想让「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:完整参考文献
- 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.
- 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.
- PaxDb 5.0 相关论文(2023,Molecular & Cellular Proteomics,DOI 10.1016/j.mcpro.2023.100640):给出 831 个数据集、170 个物种、22 古菌 81 细菌 67 真核的口径,并首次与 Human Protein Atlas、GTEx 做人类子集对比。
- PaxDb 官方网站与下载目录:https://pax-db.org/ 与 https://pax-db.org/downloads/6.1/
- PaxDb 公共 API 文档与接口规范:https://api.pax-db.org/docs
- Human Protein Atlas 官方站点:https://www.proteinatlas.org/ (用于 §3 的定性对照)
- 由 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:如果只记五件事
- ppm 是份额不是浓度,单组织内加和一百万,这是它所有可比性的来源。
- 它与 HPA 是两个维度,一个连续一个分级,一个组织级一个细胞级,不能互相替代。
- 谱图计数的动态范围有限,低丰度端与短蛋白、膜蛋白都系统性偏差,不要在这样的区间做精细比较。
- 跨物种比较必须走直系同源,且要同时报告两边的数据集数量与覆盖度。
- 锁版本、记覆盖度、写清换算假设,这三件事决定结果能不能复现。
编辑说明
本篇的事实核验于 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 — 共享标签:基因组学与多组学 / 转录组
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

