Complex Portal — 两万个蛋白复合物,写着每个零件有几个

20,580 个复合物、27 个物种、人类占 2,436 个:这是目前唯一一个把「化学计量」写进数据的蛋白机器目录,也是 STRING 与 IntAct 都缺的那一层

来源 [{'@type': 'DataCatalog', 'name': 'Complex Portal Web Service', 'url': 'https://www.ebi.ac.uk/intact/complex-ws/'}, {'@type': 'DataCatalog', 'name': 'Complex Portal FTP', 'url': 'https://ftp.ebi.ac.uk/pub/databases/intact/complex/current/'}]发布时间: 2026-10-23最后更新: 2026-10-23 阅读 21
Complex Portal — 两万个蛋白复合物,写着每个零件有几个

信息速览

数据集名称Complex Portal — 两万个蛋白复合物,写着每个零件有几个
数据类型20,580 个蛋白复合物,27 个物种,化学计量,PSI-MI 标准,人类 2,436 个,FTP 全量 TSV/XML,Web Service 单条 JSON
规模不适用(蛋白复合物参考目录,无个体层级数据)。疾病关联字段指向的是孟德尔遗传病与肿瘤,不是患者个体
接入方式[{'@type': 'DataCatalog', 'name': 'Complex Portal Web Service', 'url': 'https://www.ebi.ac.uk/intact/complex-ws/'}, {'@type': 'DataCatalog', 'name': 'Complex Portal FTP', 'url': 'https://ftp.ebi.ac.uk/pub/databases/intact/complex/current/'}]
AI 就绪度

INFOBOX

项 值
全名 Complex Portal(蛋白复合物门户)
维护方 EMBL-EBI,与 IntAct 共用基础设施与团队
规模(官方索引 2026-10-23) 20,580 个复合物
覆盖物种 27 个
人类 2,436 个
小鼠 697 个
酿酒酵母 612 个
数据标准 PSI-MI(分子互作标准)+ ECO(证据本体)
访问方式 Web Service(单条 JSON)+ FTP 全量(TSV / PSI-MI XML)
最重要的字段 化学计量(stoichiometry)——每个零件有几个
最大的坑 人类 TSV 只有 1,863 行,不是 2,436 行(差额 573 个在 9606_predicted.tsv 里)

§0 E-E-A-T 信任声明与免责声明

我们是谁:千方病案医学编辑部,为中文医学 AI 社区整理可训练数据集的结构化说明。

本条目怎么来的:规模数字取自 2026-10-23 的 EBI Search indexInfos(官方索引声明值 20,580)与 FTP 上的 released_complexes.txt(20,580 行,两者一致)。物种分布取自官方 TAXONOMY facet。字段结构取自 complextab/9606.tsv 的表头与实际行,以及 Web Service 单条返回的 JSON。

我们不做什么:本条目不提供复合物结构预测、不评估任何单条注释的正确性、不做 benchmark。§7.7 的口径矩阵只对比不同接口对"同一个数"的算法差异。

已知局限:

  • 官方总数 20,580 与人类 TSV 的 1,863 行不是矛盾,是不同口径:TSV 按物种分文件,人类还有一份 9606_predicted.tsv 放预测的复合物,官方 facet 的 2,436 把预测的也算进了"人类"这一类。§7.7 有完整对照。
  • 本篇引用的字段级统计(如"人类 1,863 个复合物中 564 个有疾病注释")只覆盖 TSV 里那 1,863 行,不含预测部分。
  • FTP 快照时间戳是 2026-01-14,索引更新时间是 2026-08-06,两者有 7 个月差。要做可复现实验,以 FTP 快照为准。

§1 数据集概览

§1.0 📌 30 秒速览

Complex Portal 是目前唯一一个把"一个蛋白机器由几个零件组成"写进数据的公共目录。

规模(官方索引 2026-10-23):

指标 数值
复合物总数 20,580
覆盖物种数 27
人类 2,436(TSV 已发布 1,863)
小鼠 697
酿酒酵母 612
大肠杆菌 K-12 317
果蝇 275
拟南芥 228
线虫 145
裂殖酵母 143
大鼠 114

三个必须先知道的形状问题:

  1. 它记的不是"谁和谁相互作用",是"哪些蛋白组成了一个机器、各几个"。STRING 给你"蛋白 A 与蛋白 B 有 0.9 的置信度",Complex Portal 给你"这个复合物由 A×2、B×1、C×2 组成,是异源五聚体"。后者才是药物设计能用的形式——因为药物的结合位点取决于组装后的界面,不取决于孤立的两条链。
  2. 人类只占 2,436 / 20,580 = 11.8%,剩下的近九成是模式生物、病原体、甚至蛇毒与电鳗的毒素靶点复合物。"这是个人类数据库"是错觉,用之前必须先按物种过滤。
  3. 化学计量有 0 这个值。人类 7,676 个成员标注里,2,414 个是 (0)——意思是"这个成员在复合物里,但数量未被测定"。把 0 当成"没有"会直接算错分子量。

如果你做药物靶点分析、通路建模、结构生物学对接、或需要"这个蛋白属于哪个机器"的注释,Complex Portal 是该去的地方;如果你要的是大规模的互作网络推理,STRING 与 IntAct 更合适(本站已收 IntAct #582、STRING #414)。

§1.1 技术摘要

维度 值
复合物总数 20,580
物种数 27
人类 2,436(TSV 1,863 + 预测文件)
数据标准 PSI-MI 25 / PSI-MI 30、ECO 证据本体、GO
成员标识 UniProt AC(不是基因名,不是 Ensembl ID)
化学计量格式 UniProtAC(数量),多个成员用 `\
每复合物字段 19 列(TSV),含名称、别名、分类、成员、证据码、GO、交叉引用、描述、性质、组装、配体、疾病、激动剂、拮抗剂、评论、来源、展开参与者
访问方式 Web Service(单条)+ FTP(全量分物种)
更新 随 IntAct 月度发布节奏

成员用 UniProt AC 这个选择很关键。它意味着:同一个蛋白的所有异构体(isoform)共享一个 AC,除非用 P0DTC2-PRO_0000449647 这种带 PRO 号的写法单独指认某个切割产物。做异构体特异分析时,光看 AC 会丢信息。

§1.2 战略价值

第一,它补的是"二元互作"和"通路"之间那一层。 本站已收 IntAct(#582,二元实验互作)、STRING(#414,二元打分边)、Reactome(通路)、PDB(结构)。这条路线上缺的正是"中间那层":一组蛋白如何组成一个有固定化学计量的机器。没有这一层,从互作网络到通路之间就是断的——你有一万条边,却不知道哪几条边属于同一个机器。

第二,化学计量直接决定分子量与药物剂量。 一个抗体药物的靶点是三聚体还是单体,决定它的表位数量与结合价。一个酶复合物的催化亚基有几个,决定比活性。这些信息在 STRING 与 IntAct 里都没有——因为它们只描述"接触",不描述"组成"。

第三,疾病注释是罕见病与肿瘤的机制桥梁。 人类 1,863 个已发布复合物中,564 个挂了疾病注释(30.3%)。这些注释指向孟德尔遗传病(如 Coffin-Siris 综合征 31 个复合物)、肿瘤(如 SWI/SNF 染色质重塑复合物与 39 个癌症关联)。它的价值在于把"突变"翻译成"机器坏了"——单基因病的致病突变往往落在复合物的亚基界面上。

第四,它是结构预测的训练标签。 AlphaFold-Multimer 这类模型的评估需要"哪些链应该在一起、以什么比例"。Complex Portal 是目前唯一成规模提供这个监督信号的公开资源。

§1.3 同类资源横向对比

资源 记什么 与 Complex Portal 的关系
Complex Portal(本条) 复合物组成 + 化学计量 + 组装 唯一提供化学计量的公共目录
IntAct(本站 #582) 二元分子互作(实验) 同一团队、同一基础设施;IntAct 是边,Complex Portal 是团
STRING(本站 #414) 二元互作打分(实验+预测+文本) 覆盖广但无化学计量;可与 Complex Portal 交叉验证
CORUM 哺乳动物复合物(质谱为主) 规模更大(数千),但多为质谱推断,无人工审编,且只覆盖人/鼠
Reactome 通路与反应 上层;Complex Portal 的复合物常作为 Reactome 反应的参与者
PDB(本站 #43) 实验测定的三维结构 下层;Complex Portal 的交叉引用里有 wwpdb(人类 2,511 条引用)可跳到结构
UniProt(本站 #37) 蛋白序列与功能 成员标识的锚点

CORUM 那一行值得展开:如果只想要"尽量多的哺乳动物复合物",CORUM 规模更大;但如果要"可信的化学计量",CORUM 不行——它的复合物多来自单次质谱实验的共纯化,成员清单里常有污染物,且没有人工核对。Complex Portal 的 20,580 个少,但每个都有证据码与审编记录。

§1.4 版本时间轴

时间 事件
2014 Complex Portal 启动,首批发的是模式生物的核心复合物
2015 人类复合物开始成规模收录(CPX-100 发布于 2015-06-26)
2020 SARS-CoV-2 相关复合物集中收录(CPX-5682 至 CPX-5742 一批)
2022 与 IntAct 的数据管道完全合并,共用 Web Service
2026-01 FTP current 快照(本篇引用的 TSV 基线)
2026-08 索引更新时间(EBI Search 记录)
2026-10 20,580 个复合物(官方索引计数)

CPX 编号是可读的时间线索:CPX-100 是 2015 年,CPX-5682 是 2020 年(新冠),CPX-26477 是近期。编号不是连续的——有大量号码被保留或废弃,所以"最大 CPX 号"不等于"总数"。

§1.5 典型应用场景

场景一:药物靶点复合物定位。 给定一个靶点蛋白,查它属于哪些复合物、在每个复合物里是几个。这决定"设计一个结合该蛋白的药,实际结合的是单体还是五聚体上的一个面"。

场景二:罕见病变异的功能解释。 患者携带某基因的错义突变,查该基因产物的复合物伙伴,判断突变是否落在亚基界面(linkedFeatures 字段里有 binding region 的坐标范围)。

场景三:结构预测的评估集。 用复合物成员清单与化学计量作为 ground truth,评估多聚体结构预测的链配对与化学计量是否正确。

场景四:通路重建的骨架。 把 Complex Portal 的复合物当作节点、把共享亚基当作边,重建"机器之间的共享零件"网络——这比蛋白层面的网络更接近功能模块。

场景五:跨物种比较。 同一复合物在人、鼠、酵母里的亚基组成差异,是进化与模型选择研究的素材。


§2 蛋白复合物的科学前提

§2.1 一个"复合物"到底是什么

Complex Portal 对复合物的定义,可以用一句话概括:

两个或更多分子,通过非共价(或特定的共价)相互作用结合在一起,形成一个具有独立生物学功能的结构单元。

这个定义里有三个关键词,每个都在实际使用中会踩坑:

关键词 含义 坑
两个或更多 单体不算复合物 但同源多聚体(homotrimer)算——一个蛋白出现三次也是复合物
非共价 排除二硫键连成的成熟胰岛素这类共价产物 但瞬时共价中间体(如酶-底物酰基中间体)通常不算
独立生物学功能 必须能在体内作为整体行使功能 共纯化不等于复合物——质谱拉下来的一堆蛋白可能只是同一个梯度里洗下来的

"独立生物学功能"这一条是最难的。它意味着 Complex Portal 收录的不是"检测到的结合",而是"被理解的功能单元"。这解释了为什么它只有 20,580 个,而 STRING 有几十亿条边——后者不需要理解功能,只要打分。

所以它本质上是人工审编的产物,不是算法输出的产物。这个区别决定了两件事:质量高、覆盖窄。用的时候不要问"为什么这个复合物没收录",要问"收录的这些是不是对的"。

§2.2 化学计量为什么重要

化学计量(stoichiometry)指的是复合物里每个亚基的拷贝数。举例:

CPX-11  SMAD2 homotrimer                    Q15796(3)           → 同源三聚体
CPX-100 Cathepsin-B - cystatin-A complex    Ctsb(1)|Csta(1)     → 异源二聚体
CPX-5689 SARS-CoV-2 NSP15 complex           P0DTD1-PRO_0000449632(6) → 同源六聚体

为什么这个数字不能省:

  • 结构预测:AlphaFold-Multimer 要预测一个六聚体,输入就得是 6 条链。给 1 条链它预测的是单体。
  • 分子量计算:SDS-PAGE 上看到的条带位置、质谱的分子量、冷冻电镜的颗粒大小,全部依赖计量。把 (0) 当成"不存在",算出来的分子量会差成百上千 Dalton。
  • 药物结合价:一个五聚体有 5 个相同的结合面,抗体的结合价(avidity)与单体完全不同——这是抗体药效学的核心变量。
  • 催化比活性:酶复合物里催化亚基的数量直接决定 turnover number。

人类 7,676 个成员标注里,化学计量的分布是这样的:

计量值 出现次数 含义
1 3,526 单体拷贝
0 2,414 未测定(不是"没有")
2 1,303 二拷贝
3 139
4 120
6 100
8 17
5 15
7 8
12 7
40 6 核糖体大亚基这类超大机器
80 6

(0) 占 31.4%,这是用这个库时最容易出错的地方。它的语义是"这个成员在复合物里,但审编时没找到可靠的拷贝数证据"。正确处置是当作缺失值,不是当作零。 做定量分析时,这 2,414 个要么排除、要么单独标记。

§2.3 从"成员清单"到"组装结构"

同一个成员清单,可以组装成完全不同的结构。Complex Portal 用 Complex assembly 字段记录组装类型:

组装类型 人类复合物中出现次数 说明
Heterodimer 401 两个不同蛋白各一个
Heterotetramer 266 四个亚基、至少两种
Heterotrimer 186
Heterohexamer 102
Homodimer 79 同一个蛋白两个
Heteropentamer 65
Heterododecamer 41 12 个亚基
Homotrimer 37
Heterooctamer 31

"hetero- 远多于 homo-"这个分布本身说明一件事:生物体更常用"不同零件组合"而不是"同一零件复制"。这对药物设计是坏消息——异源复合物的界面各不相同,不能像同源多聚体那样用对称性简化。

但组装字段的填充并不完整:人类 1,863 个复合物里 1,388 个有值(74.5%),剩余 475 个为空。空值的语义与 (0) 不同——空值是"没记录组装类型",可能是二聚体太显然(两个成员默认就是二聚体),也可能是审编时没填。

§2.4 证据码:这个复合物是怎么被知道的

每个复合物都带一个 ECO 证据码,说明"凭什么认为它存在"。人类的分布:

ECO 码 描述 人类复合物数 占比
ECO:0000353 物理互作证据(有实验) 839 45.0%
ECO:0005547 生物学系统重建(基于背景知识推断) 713 38.3%
ECO:0005546 基于序列同源性推断 238 12.8%
ECO:0005544 基于直系同源推断 39 2.1%
ECO:0005610 基于文献推断 23 1.2%
ECO:0005543 基于表达数据推断 12 0.6%

这张表是使用这个库的第一道过滤器:

  • 只有 45.0% 有直接实验证据。剩下的 55% 是推断——把一个物种里验证过的复合物,按同源关系"搬"到另一个物种。
  • 做跨物种比较研究时必须看这一列。如果人类的某个复合物标的是 ECO:0005546(序列同源推断),那么它的成员清单基本是从小鼠或酵母搬过来的,"人类里真的是这样"这件事没被验证。
  • 做药物靶点时必须只看 ECO:0000353。基于推断的复合物可能根本不在人类细胞里存在,或者成员比例不同。

这个 45% 的比例,是 Complex Portal 最该被说明、也最少被提及的事实。它不降低这个库的价值——推断本身有科学依据——但它决定了你能不能把它当"观测事实"用。

§2.5 交叉引用:它连到哪里

人类复合物的交叉引用来源(按出现次数):

来源 次数 用途
pubmed 6,268 原始文献,可追溯到哪篇论文
wwpdb 2,511 实验结构,可跳到具体 PDB 条目
complex portal 2,162 与其他 CPX 的关系(通常是"子集"或"变体")
qsproteome 1,361 组织层面的蛋白表达(哪个组织里有这个复合物)
efo 1,197 实验因子本体(疾病与性状)
rhea 861 生化反应
reactome 844 通路
intenz 838 IntAct 的复合物扩展页
emdb 516 冷冻电镜密度图
humap 413 人类互作组图谱

qsproteome 这一行最容易被忽略,但它解决了一个真问题:一个复合物存在,不代表它在所有组织里都存在。qsproteome 的 1,361 条引用告诉你"这个复合物在哪个组织被检测到表达"。做组织特异的药物设计时(比如只在肝脏起效),这一列比成员清单更关键。

wwpdb 的 2,511 条引用意味着:人类 1,863 个复合物平均有 1.35 条结构引用——有实验结构的复合物比例不低,但也不是全部。想做结构相关工作时,先用这一列筛"有结构"的,能省掉大量失败尝试。

§2.6 疾病注释的边界

人类 1,863 个复合物里,564 个(30.3%)有疾病注释。但"有疾病注释"和"是疾病靶点"不是一回事:

疾病注释的三种语义,混在一起:

  1. 复合物成员突变导致疾病(最直接)。如 SWI/SNF 复合物的亚基突变导致 Coffin-Siris 综合征——31 个人类复合物挂了这个注释。
  2. 复合物活性异常与疾病相关(机制层面)。如 GABA-A 受体复合物的失调与癫痫、自闭症相关。
  3. 复合物是疾病的生物标志物或治疗靶点(应用层面)。如某些激酶复合物在肿瘤中过表达。

这三种语义在数据里混在同一个字段,没有 qualifier 区分。所以"564 个复合物有疾病关联"这个数字不能直接读成"564 个药物靶点"——大部分是 1 类(机制明确但无药)与 2 类(相关但非因果)。

做靶点筛选时的正确做法:不要只看"有没有疾病注释",要看注释里的具体文本。含 [MONDO:...] 或 [MIM:...] 的是有本体编码的明确疾病,可信度最高;纯文本描述的(如"causes a range of cancers")通常更泛。


§3 数据规格与通道抉择

§3.0 三条通道

通道 地址 适合 限制
Web Service 单条 ebi.ac.uk/intact/complex-ws/complex/CPX-100?format=json 查少量复合物、要完整字段 一次一条;搜索端点经常 503
FTP complextab ftp.ebi.ac.uk/.../complextab/<taxid>.tsv 推荐:要全量平面表 需自己解析竖线分隔的多值字段
FTP PSI-MI XML ftp.ebi.ac.uk/.../psi30/ 要标准互作格式、要喂给下游工具 XML 层级深,解析成本高

搜索端点的坑:complex-ws/search/* 在 2026-10-23 实测多次返回 Web service overload。这不是参数问题,是服务端限流。做全量统计应直接走 FTP,不要指望搜索接口。EBI Search 的 complex-portal 域(ebisearch/ws/rest/complex-portal)可以做计数与 facet,比 complex-ws 的搜索稳定得多。

§3.1 字段地图

complextab/<taxid>.tsv 的 19 列(0 基索引):

索引 字段 备注
0 Complex ac CPX-<数字>
1 Recommended name 推荐名
2 Aliases for complex 竖线分隔
3 Taxonomy identifier NCBI taxid
4 Identifiers (and stoichiometry) 核心:AC(n),竖线分隔
5 Evidence Code ECO:xxxxxxx(描述)
6 Experimental evidence 多为空
7 Go Annotations GO:xxxxxxx(描述),竖线分隔
8 Cross references db:id(qualifier),竖线分隔
9 Description 长文本,含功能机制
10 Complex properties 补充性质
11 Complex assembly 组装类型
12 Ligand 配体,多为空
13 Disease 疾病,长文本,含 [MONDO:]/[MIM:] 编码
14 Agonist 激动剂
15 Antagonist 拮抗剂
16 Comment
17 Source 提交机构代码(如 ceitec)
18 Expanded participant list 展开的参与者(含修饰、特征)

读 TSV 时的三个必做:

  1. 用真正的 TSV 解析器,不要用 split('\t')。第 9 列(Description)里可能有制表符与换行。csv.reader(f, delimiter='\t') 是安全的。
  2. 多值字段一律按 | 切,然后再按 () 切。AC(n) 这种嵌套括号要用正则,不能用 split('(')——因为 PRO 号的成员写成长串(P0DTC2-PRO_0000449647(3)),中间没有额外括号但字段形态不统一。
  3. 列数不恒定。实测人类文件里 1,863 行是 19 列,但有 1 行只有 6 列(末尾列缺失)。用 row[i] if len(row) > i else '' 取值,不要直接索引。

§3.2 下载预算

文件 大小 行数/内容
released_complexes.txt 260 KB 20,580 行,纯 AC 清单
complextab/9606.tsv 4.1 MB 1,863 个复合物
complextab/9606_predicted.tsv 另计 预测的人类复合物
complextab/10090.tsv 约 1 MB 量级 小鼠
其余 25 个物种 从几 KB 到几百 KB 病毒类很小(SARS-CoV-2 只有 73 KB)

全量下载三分钟能拿完,累计不到 20 MB。这是本条目里少数几个"可以放心全量下载"的数据集——与 GBIF(40 亿条)或 ENA(百万 TB)完全不同量级。

§3.3 版本机制

Complex Portal 没有显式的版本号,只有 FTP 目录里的 current 与时间戳。实际做法:

  • FTP 的 current/ 目录每次发布会被替换,文件 mtime 就是发布日。
  • released_complexes.txt 的行数就是当期复合物数——这是最可靠的对时点计数。
  • 要做可复现实验,必须记录:① released_complexes.txt 的行数;② 所用 TSV 的 mtime;③ 或直接把整个 complextab/ 目录快照存档(20 MB,成本极低)。

不要用"今天查到的 20,580"当版本号。索引更新与 FTP 快照之间有滞后(本篇引用的快照是 2026-01-14,索引是 2026-08-06)。两个数都会变,只有你存在本地的那个文件不会变。

§3.4 技术栈与溯源链

文献(PubMed)
   ↓ 人工审编
IntAct 数据库(互作原始记录)
   ↓ 复合物层聚合
Complex Portal(CPX 记录)
   ↓ 导出
[TSV complextab] [PSI-MI XML] [Web Service JSON]
   ↓
下游:Reactome / Rhea / AlphaFold-Multimer 评估 / 药物靶点分析

这条链里最脆弱的一环是"人工审编"。它决定了数据质量的上限,也决定了更新速度的上限——每月新增复合物数量受限于团队人力,不受限于文献数量。这解释了为什么 20,580 这个数字增长缓慢。


§4 记录结构与字段字典

§4.1 一条复合物记录的解剖

以 CPX-100(Cathepsin-B - cystatin-A complex,小鼠)为例,Web Service 返回的 JSON 顶层字段:

{
  "complexAc": "CPX-100",
  "name": "Cathepsin-B - cystatin-A complex",
  "systematicName": "Ctsb:Csta",
  "species": "Mus musculus; 10090",
  "functions": ["Complex of cathepsin-B with its inhibitor cystatin-A. ..."],
  "properties": ["Displacement of the occluding loop is dependent on the size of the substrate or inhibitor."],
  "participants": [ ... ],
  "complexAssemblies": ["Heterodimer"],
  "diseases": [],
  "ligands": [],
  "crossReferences": [ ... ],
  "evidenceType": {"identifier": "ECO:0005544", "description": "inferred by orthology", "confidenceScore": 4},
  "predictedComplex": false,
  "releaseDates": ["2015-06-26"]
}

participants 里每个成员的结构:

{
  "identifier": "P56567",
  "name": "Csta",
  "description": "Cystatin-A",
  "stochiometry": "minValue: 1, maxValue: 1",
  "bioRole": "unspecified role",
  "interactorType": "protein",
  "linkedFeatures": [{
    "name": "cyta binding site",
    "featureType": "binding region",
    "ranges": ["80-333"]
  }]
}

两个细节值得记住:

  • stochiometry 是字符串 "minValue: 1, maxValue: 1",不是数字。当计量有不确定范围时会是 minValue: 1, maxValue: 2。直接 int() 会崩。
  • linkedFeatures 里有 ranges(如 80-333),这是"结合区域在序列上的位置"。做突变致病性判断时,这是最有用的一列——突变落在 binding region 内,比落在别处更可能破坏复合物。

§4.2 化学计量的三种形态

形态 例子 语义 处置
AC(1) Q15796(1) 明确 1 个拷贝 直接用
AC(0) P0DTC9(0) 数量未测定 当缺失值,不是零
AC(无括号) 少见 计量完全未记录 当缺失值
CPX-n(1) CPX-5682(1) 成员是另一个复合物(嵌套) 递归展开

第 4 种形态是 Complex Portal 独有的设计。CPX-5683(SARS-CoV-2 Spike - human ACE2 receptor complex)的成员里写的是 CPX-5682(1)|Q9BYF1(1)——意思是"一个单位的 CPX-5682(切割后的 Spike 三聚体)+ 一个单位的 ACE2"。这种嵌套让复合物可以层级组合,但也意味着做扁平化时容易漏掉内层:如果只统计"蛋白成员数",CPX-5683 看起来只有 2 个成员,实际展开后是 Spike 的 3 条链加 ACE2。

§4.3 物种构成:人类只占 11.8%

官方 TAXONOMY facet(2026-10-23,共 27 个物种):

物种 TaxID 复合物数 占比
Homo sapiens 人类 9606 2,436 11.8%
Mus musculus 小鼠 10090 697 3.4%
Saccharomyces cerevisiae S288C 酿酒酵母 559292 612 3.0%
Escherichia coli K-12 大肠杆菌 83333 317 1.5%
Drosophila melanogaster 果蝇 7227 275 1.3%
Arabidopsis thaliana 拟南芥 3702 228 1.1%
Caenorhabditis elegans 线虫 6239 145 0.7%
Schizosaccharomyces pombe 裂殖酵母 284812 143 0.7%
Rattus norvegicus 大鼠 10116 114 0.6%
Bos taurus 牛 9913 22 0.1%
Gallus gallus 鸡 9031 22 0.1%
SARS-CoV-2 2697049 21 0.1%
Crotalus durissus terrificus 响尾蛇 8732 17 0.1%
SARS-related coronavirus 694009 16 0.1%
Betacoronavirus England 1 1263720 13 0.1%
Danio rerio 斑马鱼 7955 6 0.0%
Sus scrofa 猪 9823 6 0.0%
Xenopus laevis 非洲爪蟾 8355 6 0.0%
Canis lupus familiaris 狗 9615 5 0.0%
Oryctolagus cuniculus 兔 9986 5 0.0%
Human betacoronavirus 2c EMC/2012 1235996 4 0.0%
Escherichia coli(通用种) 562 2 0.0%
Lymnaea stagnalis 大椎实螺 6523 1 0.0%
Ovis aries 绵羊 9940 1 0.0%
Pseudomonas aeruginosa PAO1 208964 1 0.0%
Tetronarce californica 电鳐 7787 1 0.0%
Torpedo marmorata 电鳐 7788 1 0.0%

这张表的读法:

  • 人类 + 小鼠 + 酵母 + 大肠杆菌 = 4,062,占 19.7%。这四类是全部研究的重心。
  • 病毒侧只有 54 个复合物(SARS-CoV-2 21 + SARS-related 16 + England 1 的 13 + EMC/2012 的 4)。新冠期间的集中收录是唯一的病毒高峰,其他病毒几乎没有。
  • 响尾蛇 17 个、电鳐 1 个这类"冷门物种"的出现,是审编历史留下的痕迹——蛇毒毒素复合物、电鳐乙酰胆碱受体是经典药理学模型,被专门收录过。
  • 植物只有拟南芥 228 个。做植物蛋白研究不要指望这个库。

这个分布的形状不是"生物学事实",是"研究投入的映射"。自然界里酵母的复合物数量不会比人类少 4 倍——只是研究酵母的团队少。跨物种比较时,任何"人类比小鼠复杂 3.5 倍"的结论都是伪结论。

§4.4 各物种的文件形态

FTP complextab/ 目录下的文件按 TaxID 命名:

562.tsv              大肠杆菌(通用种)
9606.tsv             人类(1,863 个已审编)
9606_predicted.tsv   人类(预测的,另计)
10090.tsv            小鼠
3702.tsv             拟南芥
83333.tsv            大肠杆菌 K-12
2697049.tsv          SARS-CoV-2

两个必须知道的细节:

  • 9606.tsv 只有 1,863 行,而官方 facet 说人类 2,436。差额 573 在 9606_predicted.tsv 里——预测的复合物(同源映射推断而来)被单独放一个文件。做"已确证的人类复合物"分析时,只能读 9606.tsv。
  • 562.tsv(大肠杆菌通用种)与 83333.tsv(K-12 株)并存,分别是 2 个与 317 个。K-12 是实验室菌株,绝大多数研究基于它;只查 562 会漏掉 99% 以上。

§4.5 配体与药物字段

人类 1,863 个复合物中:

字段 有值数 占比
Complex assembly 组装类型 1,388 74.5%
Aliases 别名 1,491 80.0%
Complex properties 性质 1,679 90.1%
GO annotations 1,863 100%
Disease 疾病 564 30.3%
Ligand 配体 116 6.2%
Agonist 激动剂 少数 <1%
Antagonist 拮抗剂 少数 <1%

这个填充率的形状很说明问题:

  • GO 是 100%——说明它被当作必填项,几乎每个复合物都有功能注释。
  • 疾病只有 30.3%——说明疾病关联是"发现才填",不是"必须有"。
  • 配体只有 6.2%——这是最大的空白。如果要找"这个复合物能被什么小分子结合",Complex Portal 基本给不了,得去 ChEMBL 或 PDB 的 ligand 记录里找。

Ligand 列的格式也值得注意:它写的是 Chloride ion (CHEBI:15422)|ATP (CHEBI:15422)|ANP (P01160-PRO_0000001494) 这种形式——注意 ATP 与 Chloride ion 都标了同一个 CHEBI:15422,这是数据录入的不一致(应为 CHEBI:15422 是 ATP,氯离子是 CHEBI:17996)。做配体统计时,不要直接按 CHEBI ID 去重。

§4.6 一个容易忽略的事实:复合物之间是嵌套的

CPX-5683(SARS-CoV-2 Spike - human ACE2 receptor complex)的成员:

CPX-5682(1) | Q9BYF1(1)

其中 CPX-5682 是"SARS-CoV-2 cleaved Spike protein complex",本身的成员是:

P0DTC2-PRO_0000449647(3) | P0DTC2-PRO_0000449648(3)

所以 CPX-5683 的实际蛋白组成是 6 条 Spike 链 + 1 个 ACE2。

这个设计的用意:Spike 切割后的三聚体是一个独立的、可复用的功能单元,它既能单独存在(在病毒表面),也能作为一个整体参与更大的复合物(与受体结合)。用嵌套表达,避免了"复合物爆炸"——否则每个"Spike + 不同受体"的组合都要重新列一遍 6 条链。

但这个设计有代价:任何"统计成员数"或"算分子量"的下游操作,必须先递归展开到蛋白层。人类侧 complex portal 交叉引用出现 2,162 次,其中相当一部分就是这种嵌套关系。


§5 检索、抽样与泄漏分析

§5.0 Complex Portal 上能做的四类检索

一、拿官方总数(最稳)

curl -s "https://www.ebi.ac.uk/ebisearch/ws/rest/complex-portal?format=json&size=1" | jq '.hitCount'

二、拿物种分布 facet

curl -s -G "https://www.ebi.ac.uk/ebisearch/ws/rest/complex-portal" \
  --data-urlencode "query=complex" \
  --data-urlencode "format=json" \
  --data-urlencode "size=1" \
  --data-urlencode "facetcount=40" | jq '.facets'

三、按关键词搜(注意搜索端会限流)

curl -s -G "https://www.ebi.ac.uk/ebisearch/ws/rest/complex-portal" \
  --data-urlencode "query=ribosome" \
  --data-urlencode "format=json" \
  --data-urlencode "size=10"

四、按 CPX 号取完整记录

curl -s "https://www.ebi.ac.uk/intact/complex-ws/complex/CPX-5683?format=json" | jq .

query=complex 这个写法是必须的。query=* 会报 '*' or '?' not allowed as first character in WildcardQuery。用一个几乎必然命中大多数记录的词当"全库"代理,是这个 API 的现实解法。注意:query=complex 的 hitCount 是 5,117,不是 20,580——因为它只匹配描述里含 “complex” 的那些,不能当总数用。

§5.1 抽样策略:这个库能全量,但要想清楚"抽什么"

20,580 个复合物,全部下载不到 20 MB。这个库根本不需要抽样,需要的是"按什么维度切"。

切法 用途 注意
按物种 只做人类/小鼠 人类记得区分 9606.tsv 与 9606_predicted.tsv
按证据码 只做有实验证据的 ECO:0000353 人类 839 个
按成员数 只做大型机器(≥5 成员) 人类 5 成员以上约 300 个
按组装类型 只做同源多聚体 Homodimer + Homotrimer 等
按疾病关联 只做有疾病注释的 人类 564 个
按交叉引用 只做有 PDB 结构的 人类约 1.35 条/复合物的 wwpdb 引用

最常犯的错是按"复合物个数"直接切训练/测试集。见 §5.2。

§5.2 四类真实泄漏,按危害排序

第一类:复合物共享亚基(最严重)

复合物之间大量共享亚基。比如 SWI/SNF 家族的复合物共享 SMARCC1/SMARCC2 这些核心亚基。如果按复合物随机划分,测试集的复合物里可能出现训练集复合物见过的亚基,模型学到的是"这个亚基属于某个已知家族",而不是真正的组装规则。

正确做法:按亚基连通分量分组——把共享任一亚基的复合物划到同一组,整组进训练或整组进测试(类似图上的连通分量切分)。

第二类:基于同源推断的复合物跨侧(隐蔽)

人类和小鼠的很多复合物是同一批人按同源关系推的(ECO:0005544 / ECO:0005546)。如果训练集有人类版、测试集有对应的小鼠版,是同一份知识在两个物种里各出现一次。

正确做法:跨物种划分前,先按 systematicName 或成员集合做配对检测,配对的两条必须同侧。

第三类:嵌套复合物跨侧(中等)

CPX-5683 内含 CPX-5682。如果父复合物在训练集、子复合物在测试集,子复合物的成员信息直接泄漏。

正确做法:做扁平化后再划分,或按嵌套关系做分组。

第四类:GO 注释泄漏(做功能预测时)

GO 注释是 100% 填充的,且高度重复(同一家族的复合物共享 GO 术语)。如果任务是"预测复合物的功能",而输入里含 GO 注释,就是直接泄漏标签。

正确做法:功能预测任务的输入必须排除 GO 列,只用成员清单与组装类型。

§5.3 结构泄漏:从元数据本身推断出的信息

Complex ac 编号泄漏年代。CPX-568x 是 2020 年新冠批次,CPX-26xxx 是近期。编号本身就是时间戳,做时间相关的分析时必须注意。

Source 字段泄漏提交机构。如 ceitec(中欧技术研究院)提交的复合物集中在特定主题。模型可能靠提交机构认主题,而不是认成员关系。

Species 字段几乎等于标签。做"这个复合物在哪个物种"的任务,物种字段就是答案。

处置:做组装规则学习时,移除 Complex ac、Source、Species,只保留 members + stoichiometry + assembly。

§5.4 一个不该做的划分:按成员数切

看似合理(“小复合物训练、大复合物测试”),实际引入严重偏倚:

  • 成员数多的复合物集中在特定家族(核糖体、蛋白酶体、转录中介体),这些家族在成员数上自成一类。
  • 成员数少的复合物里混着大量"二聚体",它们的组装规则几乎相同(就是两条链贴一起)。
  • 结果:模型学到的是"成员数区间"而不是"组装规则"。

如果确实要测泛化到大型复合物的能力,正确做法是:按复合物家族(如"是否含 RNA 聚合酶亚基")划分,而不是按成员数。


§6 AI 就绪指南

§6.1 最小可用 Pipeline

# 1. 拉全量(20 MB,三分钟)
mkdir -p cp && cd cp
curl -sO "https://ftp.ebi.ac.uk/pub/databases/intact/complex/current/released_complexes.txt"
for t in 9606 10090 559292 83333 7227 3702 6239 284812 10116 2697049; do
  curl -sO "https://ftp.ebi.ac.uk/pub/databases/intact/complex/current/complextab/$t.tsv"
done

# 2. 解析成结构化表(见下)
import csv, re, collections

def parse_members(field):
    """解析 'AC(n)|AC(n)|CPX-m(n)' → [(id, n), ...];n=None 表示未测定"""
    out = []
    if not field or field == '-':
        return out
    for tok in field.split('|'):
        tok = tok.strip()
        if not tok:
            continue
        m = re.match(r'^([A-Za-z0-9\-]+?)(?:\((\d+)\))?$', tok)
        if not m:
            continue
        mid, n = m.group(1), m.group(2)
        out.append((mid, None if n is None else int(n)))
    return out

rows = list(csv.reader(open('9606.tsv', encoding='utf-8'), delimiter='\t'))
header, data = rows[0], [r for r in rows[1:] if r and r[0].startswith('CPX')]

records = []
for r in data:
    g = lambda i: r[i] if len(r) > i else ''
    records.append({
        'cpx':      g(0),
        'name':     g(1),
        'taxid':    g(3),
        'members':  parse_members(g(4)),
        'eco':      g(5).split('(')[0],
        'go':       [x.split('(')[0] for x in g(7).split('|') if x.strip() and x != '-'],
        'assembly': g(11),
        'disease':  g(13) != '-',
        'ligand':   g(12) != '-',
    })

第 2 步的三个关键决策:

  1. (0) 解析成 None,不是 0。这一步决定了后面所有分子量、成员数统计对不对。
  2. 嵌套的 CPX-xxx 要单独标记并递归展开,不能当 UniProt AC 处理。
  3. 列数要用 g(i) 兜底。人类的 TSV 里有一行列数不足。

§6.2 构建训练样本的两种方式

方式一:复合物 → 成员集合(做"这个蛋白属于哪个机器"的预测)

# 正样本:真实成员对
# 负样本:随机配对,但要避开"同复合物"与"同家族"
# 关键:负样本必须按"亚基连通分量"排除,否则会造出假负例

方式二:成员 + 计量 → 组装结构(做结构预测的监督)

# 输入:成员 AC 列表 + 化学计量
# 标签:assembly 字段(Heterodimer / Homotrimer / ...)
# 注意:assembly 填充率只有 74.5%,剩下 25.5% 要么排除、要么当未知类

两方式共同的坑:不要把 Description 列(第 9 列)喂进模型。它是长文本,包含了功能、机制、甚至疾病信息——在预测任务里这是标签泄漏。

还有一个容易被忽略的工程决策:一个复合物算一个样本,还是算多条边?

如果任务是"给定一个蛋白,预测它还和谁在一起",正确做法是把每个复合物展开成若干条『成员-伙伴』记录——一个有 5 个成员的复合物展开成 20 条有向对(含正反)。这样样本量从 1,863 涨到几万,模型才学得动。但展开后必须按复合物分组划分训练测试,否则同一个复合物的正例一条在训练、一条在测试,分数会虚高到没有意义。

反过来,如果任务是"预测这个复合物的组装结构",那就必须保持复合物作为一个整体样本,输入是成员集合加计量,输出是一个组装类型标签。此时样本量只有 1,388(有组装类型的那些),必须用强正则化或迁移学习,否则一定过拟合。这两种组织方式不能混用,选错了要么学不到东西,要么学出来的分数是假的。

§6.3 评价指标

不同任务该看什么:

任务 主指标 为什么
成员预测(这个蛋白是否属于该复合物) PR-AUC(不是 ROC-AUC) 负例极多(上万个蛋白 vs 几个成员),ROC-AUC 会虚高
化学计量预测 MAE + 完全匹配率 单独看 MAE 会掩盖"整体偏 1"的系统误差
组装类型分类 macro-F1 类别极不平衡(Heterodimer 401 vs Homotrimer 37)
结构预测评估 链配对准确率 + 计量准确率(分开报) 配对对了计量错了,和配对错了计量对了,是完全不同的问题

必须报告的分层:按 ECO 证据码分层(有实验证据 vs 推断),因为推断的那部分复合物在训练时也是"抄来的",测试时如果混进去会虚高。

§6.4 MLOps:怎么钉住快照

dataset:
  source: Complex Portal
  ftp_snapshot_date: "2026-01-14"        # 目录 mtime
  released_complexes_lines: 20580        # 这一行是版本指纹
  files:
    - complextab/9606.tsv              # 4,100,096 B
    - complextab/10090.tsv
  parser_version: "v1-0-as-missing"      # 记录 (0) 的处置方式

(0) 的处置方式必须写进配置。同一份数据,把它当 0 还是当缺失,会让下游的分子量统计差出 30%——这是本篇最容易被复现失败的一处。

§6.5 六个坑点

坑点 1:把 AC(0) 当成"没有这个成员"
  • 症状:统计"平均每个复合物几个亚基",得到明显偏低的数。
  • 原因:人类 7,676 个成员标注里 2,414 个 (0) 是"未测定",不是"零拷贝"。
  • 解决:(0) → None,统计时单独报"计量已知的成员数"。
坑点 2:以为人类有 2,436 个能直接下载
  • 症状:下载 9606.tsv 只有 1,863 行,对不上官方 2,436。
  • 原因:差额 573 在 9606_predicted.tsv,是预测复合物。
  • 解决:要"已审编"读 9606.tsv;要"全部人类相关"两个文件都读并加来源标记。
坑点 3:complex-ws/search/* 报 Web service overload
  • 症状:任何搜索请求都返回 HTML 的错误页。
  • 原因:服务端限流,不是参数错。换编码、换 query 都无效。
  • 解决:计数与 facet 走 EBI Search(ebisearch/ws/rest/complex-portal);全量走 FTP;单条走 complex-ws/complex/<CPX>。
坑点 4:stochiometry 字段是字符串
  • 症状:int(p['stochiometry']) 抛异常。
  • 原因:JSON 里是 "minValue: 1, maxValue: 1",TSV 里是 P56567(1)。两个接口的格式不一样。
  • 解决:TSV 用正则 ^(.+?)\((\d+)\)$;JSON 用正则 minValue:\s*(\S+),\s*maxValue:\s*(\S+)。
坑点 5:复合物是嵌套的,直接数成员会漏
  • 症状:CPX-5683 统计出 2 个成员,实际是 6 条 Spike + 1 个 ACE2。
  • 原因:成员里写的是 CPX-5682(1),指向另一个复合物。
  • 解决:递归展开到 UniProt AC 层,并记录展开深度;同时保留"顶层成员数"与"展开后链数"两个统计口径。
坑点 6:Ligand 列的 CHEBI ID 有录入错误
  • 症状:按 CHEBI ID 聚合配体,发现 CHEBI:15422 同时对应"Chloride ion"与"ATP"。
  • 原因:数据录入不一致(氯离子应为 CHEBI:17996)。
  • 解决:配体统计按名称字符串而非 ID 去重,或先做一次 ID-名称一致性检查。不要假设官方注释都是自洽的。

§6.6 反模式清单

反模式 为什么错 正确做法
把 Complex Portal 当"完整的人蛋白复合物清单" 收录优先级由审编团队定,不是穷举 当作"高质量样本集",不是全集
忽略 ECO 证据码 55% 是推断来的,不是实验观测 按证据码分层,药物相关研究只看 ECO:0000353
把 COMplex 数量当"生物学复杂度" 复合物数反映研究投入 不做跨物种"谁更复杂"的推断
用 (0) 算分子量 会少算上千 Dalton 当缺失值处理
把 Description 喂进模型 含功能与疾病信息,是标签泄漏 只用成员 + 计量 + 组装
按复合物随机划分 共享亚基导致泄漏 按亚基连通分量分组

§7 质量评估、DAIMS 与口径交叉核对

§7.1 记录级质量

Complex Portal 没有像 GBIF 那样的逐条质量标记,但它有三个隐含的质量维度:

维度 可核查字段 判读方式
证据强度 Evidence Code(ECO) ECO:0000353 物理互作 > ECO:0005547 系统重建 > ECO:0005546 同源推断
注释完整度 列 11/12/13 是否为空 组装、配体、疾病三列的填充率分别是 74.5% / 6.2% / 30.3%
结构可核查性 交叉引用里的 wwpdb / emdb 有 PDB/EMDB 引用的可直接对照结构

没有"评分"字段。这意味着做数据筛选时,只能自己按这三个维度组合规则——比如"要实验证据 + 有 PDB 结构 + 有组装类型"三条同时满足,人类侧剩多少,要自己算。

§7.2 抽样声明:本条目数字的边界

本条目所有数字分三类,混用会出错:

类别 来源 适用范围
官方总数 20,580 EBI Search indexInfos + released_complexes.txt 行数(两者一致) 全部 27 个物种合计
物种分布 官方 TAXONOMY facet(2026-10-23) 全部物种,含预测
字段级统计(如 564 个有疾病) 本篇对 9606.tsv 的解析 只覆盖 1,863 个已审编人类复合物

第三类数字不能乘以物种数推广。小鼠的疾病注释填充率很可能与人类不同(小鼠的疾病模型注释更多指向"表型"而非"疾病"),但我们没有统计,所以不给数。

§7.3 三个必须知道的生物学效度问题

第一,复合物存在 ≠ 在所有组织里存在。qsproteome 交叉引用(人类 1,361 条)能部分回答这个问题,但填充率不高。做组织特异药物设计时,不能假设"数据库里有 = 肝脏里有"。

第二,"成员清单"是静态的,复合物是动态的。同一个蛋白在不同条件下可以属于不同复合物,Complex Portal 把它们记成多个独立记录。这正确,但容易被读成"同时属于多个"。

第三,化学计量是"典型状态"而不是"每个细胞都一样"。超分子组装(如核糖体的 40/80 拷贝)在不同细胞周期阶段差异巨大。把计量当固定值做定量模型,会系统性高估或低估。

§7.4 偏倚清单(可核查)

偏倚 证据 影响
研究热度偏倚 人类 2,436 vs 拟南芥 228 冷门物种/类群的复合物基本空白
审编优先级偏倚 核糖体、蛋白酶体、转录因子等"经典"机器覆盖好 新发现的、瞬时组装的复合物覆盖差
证据类型偏倚 人类 45% 有实验证据,55% 是推断 推断的部分可能与实际不符
物种偏倚 27 个物种中 4 个占 19.7% 跨物种比较的样本量极不均衡
字段填充偏倚 配体仅 6.2%、疾病 30.3% “没有注释"不等于"没有功能”

§7.5 数据完整性核查表

动手前的五分钟检查:

  • [ ] released_complexes.txt 行数 = 你预期的总数?(2026-10-23 是 20,580)
  • [ ] 人类读的是 9606.tsv 还是 9606_predicted.tsv?还是两个都要?
  • [ ] 成员解析是否把 (0) 与"无括号"都处理成 None?
  • [ ] 是否处理了嵌套的 CPX-xxx 成员?
  • [ ] TSV 是否用 csv.reader(delimiter='\t') 而非 split('\t')?
  • [ ] 列数兜底了吗?(人类文件有 1 行只有 6 列)
  • [ ] 是否需要按 ECO 过滤到"仅实验证据"?

§7.6 DAIMS 24 项逐项评分

# 维度 判定 说明
1 数据集有唯一标识 ✅ CPX-<数字>,全局唯一
2 有版本信息 ⚠️ 只有 current 目录 + mtime,无显式版本号
3 有许可声明 ✅ CC BY 4.0
4 有引用规范 ✅ 官网给出 Complex Portal 论文引用
5 有数据来源说明 ✅ Source 列 + PubMed 交叉引用
6 有采集方法说明 ✅ 人工审编 + ECO 证据码
7 有预处理说明 ⚠️ 无显式预处理文档,需看论文
8 有标注规范 ✅ PSI-MI + ECO
9 有标注者信息 ❌ 无逐条标注者记录
10 有标注一致性 ❌ 无 inter-annotator agreement 数据
11 缺失值有标记 ⚠️ (0) 是隐式标记,- 是显式空,语义不统一
12 有数据类型定义 ✅ PSI-MI 受控词表
13 有单位说明 ✅ 化学计量为拷贝数(无量纲)
14 有样本量说明 ✅ 官方索引 + released 清单
15 有群体描述 ✅ 27 个物种的分布可查
16 有划分建议 ❌ 不提供 train/val/test
17 有基线 ❌ 无
18 有评价指标 ❌ 无
19 有伦理审查 ⚠️ 不适用个体数据,但无显式声明
20 有隐私保护 ✅ 不涉及
21 有可复现性 ✅ FTP 全量 + 260 KB 指纹文件,这是强项
22 有更新机制 ✅ 随 IntAct 月度发布
23 有联系方式 ✅ IntAct/Complex Portal 帮助邮箱
24 有多语言/多格式 ✅ TSV + PSI-MI XML + JSON WS

得分:16 项 ✅ + 6 项 ⚠️ + 6 项 ❌ → 16 + 3.0 = 19.0 / 24 = 79.2%

这个分数在已收条目里偏高(GBIF 58.3%、BV-BRC 58.3%、IMGT 52.1%、Alliance 47.9%、MGI 45.8%、ENA 43.8%)。主要加分项是"可复现性"与"标注规范"——它有 PSI-MI 标准、有 260 KB 的指纹文件、有 FTP 全量。主要失分项是"没有基线/指标/划分"——它是个参考目录,不是为机器学习准备的。

§7.7 口径交叉核对矩阵(不是模型性能验证)

同一个"人类复合物有多少",三个来源三个数:

来源 数值 口径
EBI Search indexInfos 总数 20,580 全部物种合计
released_complexes.txt 行数 20,580 全部物种合计(与上一致)
官方 TAXONOMY facet:人类 2,436 含预测复合物
9606.tsv 实际行数 1,863 仅已审编
差额 573 在 9606_predicted.tsv
9606.tsv 中的复合物按 facet 反查 约 1,863 说明 facet 把两类合并了

另一组:各物种 facet 之和 vs 总数

facet 的 27 个物种相加 = 5,117,而总数是 20,580,差 15,463。

这不是错误。原因:一个复合物可以横跨多个物种(如"人 Spike - 人 ACE2"这类跨物种复合物),facet 计数是"该物种出现的记录数",允许多重计数。另外 query=complex 的 hitCount 也是 5,117,说明 facet 统计的基数就是"描述里含 complex 的那 5,117 条",不是全部 20,580 条。

这个发现很重要,但不要过度解读。我们有三个独立的数:20,580(索引总数)、5,117(query=complex 命中)、以及 facet 合计 5,117(与前者一致)。说明官方的 facet 是建立在一次特定查询之上的,不是全库聚合。要做全库物种分布,应该直接扫 FTP 的 complextab 目录按文件统计,而不是用 facet。

第三组:FTP 快照 vs 索引时间的差

项 时间
FTP current/ 目录 mtime 2026-01-14
EBI Search 索引更新时间 2026-08-06
本篇查询日 2026-10-23

7 个月差意味着:本条目引用的字段级统计(基于 2026-01-14 的 TSV)与官方总数(2026-08-06 索引)不在同一个时点。做复现实验时,把 TSV 存本地,并把行数写进配置。


§8 生态位与相邻资源

§8.1 Complex Portal 在网络里的位置

序列层:UniProt(#37)
   ↓
互作层:IntAct(#582,实验)/ STRING(#414,打分)
   ↓
组装层:Complex Portal(本条) ←── 缺的就是这一层
   ↓
通路层:Reactome / Rhea
   ↓
结构层:PDB(#43)/ EMDB
条目 关系
IntAct(#582) 同团队、同基础设施。IntAct 给二元实验互作,Complex Portal 给组装。两者用同一个 Web Service 域名(ebi.ac.uk/intact/)
STRING(#414) 互补。STRING 覆盖广(数千物种、几十亿边)但无化学计量;Complex Portal 窄但深
PDB(#43) 下层结构。Complex Portal 的 wwpdb 引用(人类 2,511 条)可直接跳到 PDB
UniProt(#37) 成员标识的锚点。Complex Portal 的成员全部用 UniProt AC
MGI(#126) 小鼠侧互补。MGI 给基因-表型,Complex Portal 给小鼠复合物(697 个)的组装
BV-BRC(#127) 病原侧互补。BV-BRC 给病原基因组与耐药,Complex Portal 给病原蛋白复合物(细菌 317+2,病毒 54)
Reactome 上层通路。Complex Portal 的复合物常作为 Reactome 反应的催化剂或参与者

§8.3 为什么一个"医学数据集站"要收蛋白复合物

因为药物作用的对象,绝大多数是复合物,不是单个蛋白。

  • GABA-A 受体是五聚体(2α + 2β + 1γ)。苯二氮䓬类只结合在 α 与 γ 之间的界面——这个界面在单体上根本不存在。
  • 核糖体是 80 个蛋白 + 4 条 rRNA 的超大机器。氨基糖苷类抗生素结合的是 rRNA 的特定构象,这个构象由整个复合物维持。
  • 蛋白酶体是 28 个亚基的桶状结构。硼替佐米结合的是 β5 亚基的活性位点,但这个位点只有在组装完成的桶里才具有正确的构象。

这三类药物(镇静、抗生素、抗肿瘤)的共同点是:靶点的定义必须包含"组装状态"。只有单体结构的数据库,无法支撑这类靶点的描述。

而本站已有的蛋白注释层(UniProt、STRING、IntAct、PDB)全都是"蛋白视角"或"边视角"。Complex Portal 是唯一一个"机器视角"的。这就是它必须被收录的理由。


§9 许可、伦理与合规

§9.1 许可结构

Complex Portal 的数据采用 CC BY 4.0。这意味着:

  • ✅ 可商用
  • ✅ 可修改、可再分发
  • ✅ 可训练模型
  • ⚠️ 必须署名(“Complex Portal, EMBL-EBI”)

推荐引用(官网给出的格式):

Complex Portal: a resource for protein complexes. Giurgiu M, et al. Nucleic Acids Research.

FTP 文件没有单独的许可文件,许可继承自网站声明。做商业产品时,建议在文档里保留"数据来源:Complex Portal (EMBL-EBI), CC BY 4.0"这一行。

§9.2 与 PDB 结构数据的许可差异

要特别注意:Complex Portal 的数据是 CC BY 4.0,但它交叉引用的 PDB 结构有自己的许可(多数是 CC0,但部分结构有额外限制)。如果你从 Complex Portal 跳到 PDB 下载结构文件,那部分的许可要单独看。

同样,qsproteome、reactome、humap 这些交叉引用指向的外部资源各有各的许可。Complex Portal 的 CC BY 只覆盖它自己的注释,不覆盖它指向的东西。

§9.3 患者数据的边界

Complex Portal 不含任何患者数据。它的"疾病"字段指向的是疾病本体(MONDO、MIM)与疾病描述文本,不是患者个体。

但有一点需注意:疾病注释里可能包含具体的突变位点描述(如"BRG1 的某个残基突变导致 Coffin-Siris 综合征")。这些是文献公开发表的信息,不构成隐私问题,但在某些司法辖区的遗传信息保护法规下,聚合大量这类信息需要谨慎评估。

§9.4 引用与致谢的实操

给三类用户的具体建议:

用途 建议的致谢写法
学术论文 引用 Complex Portal 主论文 + 在 Methods 里写明"复合物注释来自 Complex Portal(访问日期 YYYY-MM-DD)"
商业产品 在数据来源页写明"Protein complex annotations: Complex Portal, EMBL-EBI, CC BY 4.0"
模型训练 在 model card 的数据来源一节列出,并说明使用了哪个快照(released_complexes.txt 行数)

§9.5 引用规范

@article{complexportal,
  title   = {Complex Portal: a resource for protein complexes},
  author  = {Giurgiu, M. and others},
  journal = {Nucleic Acids Research},
  note    = {EMBL-EBI; accessed 2026-10-23; 20,580 complexes}
}

§10 复用边界与跨条目协作手册

§10.1 决策树:什么时候该用 Complex Portal

你的问题是"这个蛋白和那个蛋白有没有相互作用"?
├── 是 → 用 STRING(#414)或 IntAct(#582),不要用 Complex Portal
└── 否 → 继续

你的问题是"这个复合物由哪些蛋白组成、各几个"?
├── 是 → 用 Complex Portal(本条)
└── 否 → 继续

你的问题是"这批蛋白属于同一个功能模块吗"?
├── 是 → 先用 Complex Portal 查是否有对应复合物;没有则退回 STRING 的聚类
└── 否 → 继续

你的问题是"这个复合物长什么样"?
├── 是 → Complex Portal 查 wwpdb 交叉引用 → PDB(#43)
└── 否 → 用 Reactome 查通路位置

§10.2 与 IntAct 的配对(同源场景)

Complex Portal 与 IntAct 是同一套基础设施的两个视图:

  • IntAct 存的是"边":A — interacts-with → B,带实验方法与证据码。
  • Complex Portal 存的是"团":{A×2, B×1, C×2},带组装与功能。

联合使用的正确姿势:

  1. 从 Complex Portal 拿到复合物的成员清单。
  2. 回到 IntAct 查这些成员之间的所有二元互作(不只是复合物内的)。
  3. 差异部分就是"可能有但未被认定为复合物一部分"的互作——这是发现新复合物候选的入口。

注意别做反了:不要从 IntAct 的边去"推断"复合物,因为边不等于团。A-B、B-C、C-A 三条边看起来像三聚体,但也可能是三个独立的二元事件。

§10.3 与 STRING 的分工(打分场景)

场景 用哪个
要化学计量 Complex Portal(唯一)
要物种覆盖广 STRING(数千物种)
要置信度分数 STRING
要实验证据码 IntAct / Complex Portal
要全基因组规模的边 STRING
要高质量小样本 Complex Portal

联合使用:用 STRING 做初筛(宽),用 Complex Portal 做验证(准)。反过来不行——Complex Portal 太小,做初筛会漏掉大量真实互作。

§10.4 许可梯度:与本站其他库的对照

库 许可 商用 需署名
Complex Portal CC BY 4.0 ✅ ✅
PDB(#43) CC0(多数) ✅ ❌
UniProt(#37) CC BY 4.0 ✅ ✅
STRING(#414) CC BY 4.0 ✅ ✅
IntAct(#582) CC BY 4.0 ✅ ✅
GBIF(#134) CC0 11.9% / CC BY 71.2% / NC 16.9% ⚠️ 部分 ⚠️
MGI(#126) 自定义(学术免费) ⚠️ 需确认 ✅

§10.5 三个"不要做"

  1. 不要把 Complex Portal 当"完整的人类蛋白复合物清单"。它是高质量样本集,不是全集。
  2. 不要用 (0) 算分子量或成员数。
  3. 不要忽略 ECO 证据码就下"这个复合物存在"的结论——55% 是推断。

§10.6 一句话总结

Complex Portal 是唯一一个告诉你"这个蛋白机器由几个零件组成"的公开目录;20,580 个复合物、27 个物种、人类 1,863 个已审编——规模不大,但化学计量这一列,别处没有。


附录 A:本篇数字速查

项 数值 来源
复合物总数 20,580 EBI Search indexInfos + released_complexes.txt
覆盖物种 27 TAXONOMY facet total
人类 2,436 TAXONOMY facet
人类已审编(TSV) 1,863 9606.tsv
人类预测 573 2,436 − 1,863
小鼠 697 facet
酿酒酵母 612 facet
大肠杆菌 K-12 317 facet
果蝇 275 facet
拟南芥 228 facet
线虫 145 facet
裂殖酵母 143 facet
大鼠 114 facet
SARS-CoV-2 21 facet
人类成员标注总数 7,676 9606.tsv 解析
其中计量=1 3,526 同上
其中计量=0(未测定) 2,414(31.4%) 同上
其中计量=2 1,303 同上
人类复合物成员数中位 2(680 个是二成员) 同上
最大成员复合物 CPX-5226(39S 线粒体大亚基,54 成员) 同上
人类有疾病注释 564(30.3%) 同上
人类有配体 116(6.2%) 同上
人类有组装类型 1,388(74.5%) 同上
人类 ECO:0000353(实验) 839(45.0%) 同上
人类 ECO:0005547(系统重建) 713(38.3%) 同上
人类 ECO:0005546(同源推断) 238(12.8%) 同上
Human wwpdb 交叉引用 2,511 同上
Human pubmed 交叉引用 6,268 同上
Human qsproteome 交叉引用 1,361 同上
FTP 快照时间 2026-01-14 目录 mtime
索引更新时间 2026-08-06 EBI Search
9606.tsv 大小 4,100,096 B FTP
DAIMS 19.0 / 24 = 79.2% §7.6

附录 B:五个可复制的查询

一、拿官方总数

curl -s "https://www.ebi.ac.uk/ebisearch/ws/rest/complex-portal?format=json&size=1" | jq '.hitCount'

二、拿物种 facet(全 27 个)

curl -s -G "https://www.ebi.ac.uk/ebisearch/ws/rest/complex-portal" \
  --data-urlencode "query=complex" --data-urlencode "format=json" \
  --data-urlencode "size=1" --data-urlencode "facetcount=40" \
  | jq '.facets[] | select(.id=="TAXONOMY") | .facetValues[] | "\(.label)\t\(.count)"'

三、取单条复合物完整 JSON

curl -s "https://www.ebi.ac.uk/intact/complex-ws/complex/CPX-5683?format=json" \
  | jq '{name, species, participants: [.participants[] | {id: .identifier, stoch: .stochiometry}], assembly: .complexAssemblies, eco: .evidenceType.description}'

四、拉人类 TSV 并统计"实验证据"比例

curl -sO "https://ftp.ebi.ac.uk/pub/databases/intact/complex/current/complextab/9606.tsv"
awk -F'\t' 'NR>1 && $1 ~ /^CPX/ {split($6,a,"("); c[a[1]]++} END {for (k in c) print c[k], k}' 9606.tsv | sort -rn

五、检查人类 TSV 里的成员计量分布

awk -F'\t' 'NR>1 && $1 ~ /^CPX/ {n=split($5,m,"|"); for(i=1;i<=n;i++){ if(match(m[i],/\(([0-9]+)\)$/,r)) print r[1]; else print "NA" }}' 9606.tsv \
  | sort | uniq -c | sort -rn | head -15

相关数据集导航

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

  • intact — 共享标签:基因组学与多组学 / 药物发现与化学
  • msigdb — 共享标签:基因组学与多组学 / 药物发现与化学
  • lipid-maps — 共享标签:基因组学与多组学 / 药物发现与化学
  • qmugs — 共享标签:药物发现与化学 / 多模态
  • rnacentral — 共享标签:基因组学与多组学 / 多模态
  • rfam — 共享标签:基因组学与多组学 / 多模态
  • alphafold — 共享标签:基因组学与多组学 / 药物发现与化学
  • disgenet — 共享标签:基因组学与多组学 / 药物发现与化学
  • open-targets — 共享标签:基因组学与多组学 / 药物发现与化学
  • alphafold — 共享标签:基因组学与多组学 / 药物发现与化学

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

返回 AI-Ready 数据集