蛋白质互作数据库BioGRID
一句话概述:BioGRID(Biological General Repository for Interaction Datasets)是收录蛋白质-蛋白质、基因-基因互作关系的公共数据库,数据来源于已发表文献的人工审核,是构建蛋白质互作网络(PPI)分析的重要数据源。
核心知识点速查表
| 概念 | 说明 |
|---|
| BioGRID | 生物互作数据库(白话:记录蛋白质之间谁和谁"合作"的数据库) |
| PPI | Protein-Protein Interaction,蛋白质-蛋白质互作 |
| 物理互作 | 蛋白质直接结合(如Co-IP、Y2H实验证实) |
| 遗传互作 | 基因间的功能关联(如合成致死) |
| STRING | 另一个常用PPI数据库(包含预测的互作) |
| Cytoscape | PPI网络可视化和分析软件 |
| Hub基因 | 网络中连接度最高的核心基因 |
| 度(Degree) | 一个节点连接的边数(白话:一个蛋白的"朋友数") |
一、BioGRID vs STRING对比
| 特性 | BioGRID | STRING |
|---|
| 数据来源 | 仅文献实验验证 | 实验+预测+文本挖掘 |
| 互作数量 | 较少但高可信 | 多但含预测结果 |
| 适用场景 | 需要高可信互作时 | 需要全面互作网络时 |
| API | 有REST API | 有REST API |
| 评分 | 无评分系统 | 有综合评分(0-1) |
二、获取BioGRID数据
2.1 网页下载
# === 从BioGRID下载互作数据 ===
# 访问: https://thebiogrid.org/
# 搜索基因名或物种
# 下载对应的互作数据文件
# 下载人类全部互作数据
wget https://downloads.thebiogrid.org/Download/BioGRID/Latest-Release/BIOGRID-ALL-LATEST.tab3.zip
unzip BIOGRID-ALL-LATEST.tab3.zip
2.2 BioGRID REST API
# === Python调用BioGRID API ===
import requests
import pandas as pd
# BioGRID API参数
access_key = "YOUR_API_KEY" # 在BioGRID网站注册获取(免费)
base_url = "https://webservice.thebiogrid.org/interactions/"
# 查询特定基因的互作
params = {
"accesskey": access_key, # API密钥
"format": "json", # 返回格式
"searchNames": "true", # 搜索基因名
"geneList": "TP53|BRCA1", # 查询的基因(|分隔多个)
"organism": "9606", # 物种税号(人类=9606)
"includeInteractors": "true", # 包含互作伙伴
"max": "1000" # 最大返回数
}
response = requests.get(base_url, params=params) # 发送请求
interactions = response.json() # 解析JSON
# 转为DataFrame
records = []
for key, val in interactions.items():
records.append({
"GeneA": val["OFFICIAL_SYMBOL_A"], # 基因A
"GeneB": val["OFFICIAL_SYMBOL_B"], # 基因B
"System": val["EXPERIMENTAL_SYSTEM"], # 实验方法
"Type": val["EXPERIMENTAL_SYSTEM_TYPE"],# 互作类型
"Pubmed": val["PUBMED_ID"] # 文献ID
})
df = pd.DataFrame(records)
print(f"共找到 {len(df)} 条互作关系")
df.to_csv("biogrid_interactions.csv", index=False) # 保存
三、PPI网络分析
3.1 用Cytoscape可视化
# === Cytoscape安装 ===
# 下载: https://cytoscape.org/
# Cytoscape是Java桌面应用,需要Java 11+
# 导入BioGRID数据:
# 1. File → Import → Network from File
# 2. 选择下载的BioGRID tab文件
# 3. 设置Source=GeneA, Target=GeneB, Interaction Type=System
# 4. 点击OK导入
# 常用分析插件:
# - CytoHubba: 识别Hub基因
# - MCODE: 发现蛋白质复合物/模块
# - ClueGO: 功能富集分析
# - stringApp: 导入STRING数据
3.2 Python网络分析
# === 用NetworkX分析PPI网络 ===
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
# 读取互作数据
df = pd.read_csv("biogrid_interactions.csv") # 读取互作数据
# 构建网络
G = nx.from_pandas_edgelist( # 从DataFrame构建图
df, source="GeneA", target="GeneB"
)
# 基本网络统计
print(f"节点数(蛋白质): {G.number_of_nodes()}") # 蛋白质数量
print(f"边数(互作): {G.number_of_edges()}") # 互作数量
print(f"平均度: {sum(dict(G.degree()).values())/G.number_of_nodes():.1f}")
# 找Hub基因(度最高的前10个)
degree_dict = dict(G.degree()) # 计算每个节点的度
hub_genes = sorted(degree_dict.items(), # 按度排序
key=lambda x: x[1], reverse=True)[:10]
print("\nTop 10 Hub基因:")
for gene, degree in hub_genes:
print(f" {gene}: degree={degree}") # 输出Hub基因
# 介数中心性(识别"桥梁"蛋白)
betweenness = nx.betweenness_centrality(G) # 计算介数中心性
top_bridge = sorted(betweenness.items(),
key=lambda x: x[1], reverse=True)[:10]
print("\nTop 10 桥梁蛋白:")
for gene, bc in top_bridge:
print(f" {gene}: betweenness={bc:.4f}")
3.3 R语言网络分析
# === R语言PPI网络分析 ===
library(igraph)
# 读取互作数据
edges <- read.csv("biogrid_interactions.csv") # 读取互作数据
# 构建图
g <- graph_from_data_frame( # 从数据框建图
edges[, c("GeneA", "GeneB")], # 边列表
directed = FALSE # 无向图
)
g <- simplify(g) # 去除自环和重复边
# Hub基因分析
deg <- degree(g) # 计算度
top_hubs <- sort(deg, decreasing=TRUE)[1:10] # 前10个Hub
print(top_hubs)
# 模块检测(社区发现)
comm <- cluster_louvain(g) # Louvain社区检测
print(paste("模块数:", length(comm))) # 模块数量
# 可视化
plot(g,
vertex.size = sqrt(deg), # 节点大小=度的平方根
vertex.label = ifelse(deg > 10, V(g)$name, NA), # 只标注高度节点
vertex.color = membership(comm), # 按社区着色
edge.width = 0.3, # 边宽度
layout = layout_with_fr(g)) # Fruchterman-Reingold布局
四、面试高频考点
Q1: PPI网络中Hub基因为什么重要?
- Hub基因连接最多蛋白,通常是关键调控因子
- 敲除Hub基因通常致死或表型严重
- Hub基因往往是药物靶点
- 白话:Hub基因就像社交达人,认识最多人,去掉它影响最大
Q2: 怎么判断PPI互作的可靠性?
- 多种实验方法验证:同一互作被Co-IP、Y2H等多种方法证实
- 多篇文献报道:不同实验室独立验证
- STRING评分:综合评分>0.7为高可信
- 物种保守:在多个物种中都有的互作更可靠
Q3: 常用的PPI数据库有哪些?
| 数据库 | 特点 |
|---|
| BioGRID | 文献实验验证,高可信 |
| STRING | 最全面,含预测互作 |
| IntAct | EBI维护,PSICQUIC标准 |
| MINT | 分子互作数据库 |
| DIP | 实验验证的互作 |
| HPRD | 人类蛋白质参考数据库 |
常见报错与解决
| 问题 | 原因 | 解决方案 |
|---|
| API返回空 | API key过期或无效 | 重新注册获取API key |
| 网络太大无法可视化 | 节点太多 | 过滤低度节点,只保留核心网络 |
| 基因ID不匹配 | 命名系统不一致 | 统一用HGNC symbol或Entrez ID |
| Cytoscape卡顿 | 网络太大 | 增加Java堆内存:-Xmx4g |
速查表
# === PPI分析速查 ===
# BioGRID数据下载
# https://downloads.thebiogrid.org/
# STRING数据下载
# https://string-db.org/cgi/download
# NetworkX快速分析
import networkx as nx
G = nx.from_pandas_edgelist(df, "GeneA", "GeneB")
hubs = sorted(dict(G.degree()).items(), key=lambda x: x[1], reverse=True)[:10]
# R igraph快速分析
library(igraph)
g <- graph_from_data_frame(edges, directed=FALSE)
hub <- sort(degree(g), decreasing=TRUE)[1:10]