2. 蛋白质互作数据获取:主要数据库介绍与使用方法
做蛋白质互作特征联合学习,第一步就是搞数据。这活儿看着简单,实际坑不少。我刚开始做互作特征学习时,就曾经在数据清洗上浪费了两周时间——后来才发现,选错数据库了。
说白了,你得先搞清楚:你要什么样的互作数据?物理结合的还是功能相关的?实验验证的还是预测出来的?这直接决定了你用哪个数据库。
2.1 三大主流数据库概览
目前学术界用得最多的蛋白质互作数据库有三个:STRING、BioGRID 和 DIP。它们各有各的特点,也各有各的坑。我一般把这仨比作「三位性格迥异的数据管家」。
| 数据库 | 全称 | 核心特点 | 数据来源 | 我的使用建议 |
|---|---|---|---|---|
| STRING | Search Tool for the Retrieval of Interacting Genes/Proteins | 覆盖面广,支持非常多物种;既有实验数据也有预测分数 | 实验验证 + 数据库整合 + 文本挖掘 + 共表达 + 同源预测 | 做功能网络分析时首选,但别迷信它的预测分数 |
| BioGRID | Biological General Repository for Interaction Datasets | 侧重实验验证,数据质量高,偏重酵母、人类等模式生物 | 主要来自文献中的小规模实验和大规模筛选 | 做物理互作验证时优先用,数据干净 |
| DIP | Database of Interacting Proteins | 经典的实验验证互作数据库,更新较慢但数据可靠 | 人工审编的文献实验数据 | 做基准测试或验证集时,用它比较放心 |
📌 我的使用原则:
- 做功能预测或网络分析:先用 STRING 获取大规模互作网络
- 做物理互作验证或构建 Gold Standard:BioGRID + DIP 搭配使用
- 做联合特征学习:建议把三个数据库的互作取交集,虽然数据量会少,但噪声也少
2.2 STRING 数据库:功能互作的首选
STRING 是这仨里我最常用的。它最大的优点是覆盖物种极多,目前支持超过 5000 个物种。而且它不光给你实验互作,还给你共表达、文本挖掘、同源转移的预测分数。
嗯,这里要小心了——它的预测分数有时不太靠谱。我在项目里遇到过这样一个案例:STRING 预测出来的某个互作分数高达 0.9,但我们拿酵母双杂交去验证,发现根本不结合。所以我的习惯是:只用实验验证过的互作(即数据库中标注为 "experimental" 的部分),预测部分只做参考。
如何获取 STRING 数据
你可以通过网页直接查询,也可以用它的 API 批量下载。个人建议最好用 API,尤其是做深度学习时要处理大规模数据。
方式一:网页查询
- 进入 STRING 网站,输入蛋白质名称或 Uniprot ID
- 选择物种,调整置信度阈值(我一般设 0.7)
- 导出 TSV 格式的互作列表
方式二:API 批量下载
我写过一个 Python 脚本,通过 STRING 的 RESTful API 批量拉取数据。核心调用方式如下:
# STRING API 示例:获取人类蛋白质 P53 的互作伙伴
# 请求 URL 结构
https://string-db.org/api/tsv/network?identifiers=TP53&species=9606&required_score=700
# 用 Python requests 调用
import requests
url = "https://string-db.org/api/tsv/network"
params = {
"identifiers": "TP53",
"species": 9606,
"required_score": 700
}
response = requests.get(url, params=params)
print(response.text)
方式三:完整数据转储
如果你需要做全基因组级别的分析,直接下载完整数据转储更省事:
# 下载人与部分模式生物的完整互作数据
wget https://stringdb-downloads.org/download/protein.links.v12.0/9606.protein.links.v12.0.txt.gz
gunzip 9606.protein.links.v12.0.txt.gz
💡 我的使用技巧:
下载的数据里有一个 combined_score 字段,范围是 0 到 1000。我一般设阈值为 700(相当于 0.7 的置信度)。但做特征学习时,我建议保留原始分数,不要做二值化。因为分数本身是个很好的连续特征,能反映互作的置信程度。
⚠️ 注意:
STRING 的蛋白质 ID 不是标准的 Uniprot ID,而是 Ensembl 或 STRING 自己的 ID。你下载数据后,需要做一次 ID 映射。这个步骤虽然繁琐,但跳不过。我曾经因为直接拿 Ensembl ID 去接其他数据库,结果匹配率只有 30%,白白浪费了半天时间。
2.3 BioGRID 数据库:实验验证的「金标准」
BioGRID 是我做物理互作验证时的首选。它的数据全部来自文献实验验证,有明确的实验方法标注(比如酵母双杂交、亲和纯化质谱、共免疫沉淀等)。
我记得有一次做人类蛋白质互作特征融合,不小心混入了预测数据,结果模型在验证集上表现奇差。后来换成 BioGRID 的纯实验数据,效果立马就稳了。所以说,**数据质量直接影响模型上限**。
如何获取 BioGRID 数据
BioGRID 的数据获取比 STRING 更直接。它提供按月更新的完整数据转储:
# 下载 BioGRID 全部物种的互作数据
wget https://downloads.thebiogrid.org/Download/BioGRID/Latest-Release/BIOGRID-ALL-latest.tab2.zip
unzip BIOGRID-ALL-latest.tab2.zip
下载后的文件是 TAB2 格式,包含非常详细的列。这是我最关心的几个字段:
| 字段名 | 说明 | 我的关注点 |
|---|---|---|
| BioGRID ID Interactor A / B | 互作的两个蛋白质 | 核心字段,用于构建互作对 |
| Experimental System | 实验方法 | 我一般只保留 "Two-hybrid" 和 "Affinity Capture-MS" |
| Pubmed ID | 文献编号 | 方便回溯验证 |
| Organism ID Interactor A / B | 物种编号 | 确保跨物种数据不混用 |
🛠️ 数据清洗小贴士:
BioGRID 的数据里会包含「self-interaction」(自己与自己的互作)。在互作特征学习中,这些数据要么直接过滤掉,要么特殊处理。我一般把它们剔除——除非你专门研究二聚化。
2.4 DIP 数据库:小而精的实验验证数据
DIP 是我做基准测试时常用的数据库。它只收录经过实验验证的蛋白质互作,数据量比 STRING 少得多,但质量极高。说白了,DIP 的数据是「我们确信这两个蛋白确实互作」的集合。
不过,DIP 的更新没有 BioGRID 勤快,有时新发表的互作可能要等一年才能入库。所以如果你的研究对象是热门基因,DIP 的数据可能不够新。
如何获取 DIP 数据
# 下载 DIP 数据(以人类为例)
wget https://dip.doe-mbi.ucla.edu/dip/Download.cgi?SM=7&organism=Homo%20sapiens&format=tab
# 数据格式示例:
# 交互蛋白质 A | 交互蛋白质 B | Pubmed ID | 实验方法
O00203 O75369 11473342 Yeast Two-hybrid
O00203 O75691 11473342 Yeast Two-hybrid
💡 三个数据库对比表格:
我在做联合特征学习时,通常会这样组合使用:
- 训练集:STRING 实验数据(要求 combined_score ≥ 700) + BioGRID
- 验证集:DIP 数据(用作 Gold Standard)
- 负样本:从 STRING 中取 combined_score < 150 的蛋白质对
2.5 多数据库交叉验证与数据集成
你想想看,三个数据库的数据格式、ID 系统、置信度标注全都不一样。怎么把它们整合到一起?
我踩过这个坑。最开始我简单地把三个数据集的互作对做了并集,结果正样本里混入了大量低质量数据。后来我改用以下策略:
- ID 统一:全部映射到 Uniprot Accession,用
mygeneinfo或UniProt ID mapping工具 - 互作对去重:把 (A, B) 排序为 (min(A,B), max(A,B)),保证无向性
- 交叉验证标注:如果一个互作对出现在两个以上数据库中,标注为「高置信度」
- 分数整合:对不同来源的分数做 z-score 归一化后取均值
2.6 本章知识体系
下面这张图总结了蛋白质互作数据获取的核心流程与数据库选择策略:
🔑 本章核心要点
- 三大数据库各有侧重:STRING 广、BioGRID 准、DIP 精
- 数据获取优先用 API 批量下载,避免手动点网页
- 多数据库交叉标注能显著提高正样本质量
- 负样本从 STRING 低分互作中采样,比随机采样更合理