跳转至

蛋白互作网络分析STRING

一句话概述:STRING数据库收录了数千物种的蛋白-蛋白相互作用(PPI),结合Cytoscape可视化,是发现关键蛋白、构建调控网络的标准流程。

核心知识点速览

概念白话解释
PPI网络蛋白质之间"谁和谁有关系"的关系图,像社交网络一样
STRING数据库最大的蛋白互作数据库,2025版新增调控方向性信息
置信分数0-1之间的分数,越高说明两个蛋白互作的证据越充分
Cytoscape网络可视化的"Photoshop",专门画生物网络图
stringAppCytoscape里直接调用STRING数据库的插件
Hub基因网络里连接最多的"社交达人"蛋白,通常是关键调控因子
Degree(度)一个节点连了多少条边,degree越高越"重要"
Betweenness"中间人"指标,衡量一个蛋白在信息传递中的桥梁作用
模块/Cluster网络中紧密连接的小团体,往往对应一个生物学功能
CytoHubbaCytoscape插件,自动找hub基因的利器

一、STRING数据库使用(网页版)

1.1 访问STRING

# STRING官网地址(2025版,v12.0)
# https://string-db.org/
# 支持 > 14000个物种,覆盖 ~6000万个蛋白

1.2 三种查询方式

1. Protein by name — 输入单个蛋白名(如 TP53)
2. Multiple Proteins — 输入一批基因名(差异基因列表)
3. Protein by Sequence — 用蛋白序列查询(非模式生物常用)

1.3 网页操作流程

步骤1:打开 https://string-db.org/
步骤2:选择 "Multiple Proteins"
步骤3:粘贴差异基因列表(每行一个基因名)
步骤4:选择物种(Organism),如 Homo sapiens
步骤5:点击 "SEARCH"
步骤6:确认基因匹配结果,点击 "Continue"
步骤7:在结果页面调整参数:
        - minimum required interaction score: 0.400(中等置信)
        - 推荐用 0.700(高置信)或 0.900(最高置信)
步骤8:点击 "Exports" 下载 TSV 格式网络文件

1.4 置信分数选择标准

分数阈值含义适用场景
0.150低置信探索性分析,边很多但噪声大
0.400中等置信一般分析(默认值)
0.700高置信发文章常用,边较少但可靠
0.900最高置信只保留实验验证的互作

二、Cytoscape安装与配置

2.1 安装Cytoscape

# 下载地址:https://cytoscape.org/download.html
# 支持 Windows / macOS / Linux
# 需要 Java 11+

# Linux安装示例
wget https://github.com/cytoscape/cytoscape/releases/download/3.10.3/Cytoscape_3_10_3_unix.sh  # 下载安装脚本
chmod +x Cytoscape_3_10_3_unix.sh  # 添加执行权限
./Cytoscape_3_10_3_unix.sh  # 运行安装

2.2 安装必备插件

在Cytoscape中:
Apps → App Store → 搜索并安装以下插件:

1. stringApp(2.0+)    — 直接在Cytoscape里查STRING
2. CytoHubba           — 自动识别hub基因
3. clusterMaker2       — 网络聚类(找模块)
4. MCODE               — 另一个聚类插件
5. BiNGO               — 模块功能富集分析

三、Cytoscape + STRING实操流程

3.1 方法一:在Cytoscape中直接查询STRING

步骤1:File → Import → Network from Public Databases
步骤2:Data Source 选择 "STRING: protein query"
步骤3:输入基因列表,选择物种
步骤4:设置置信分数阈值(建议0.7)
步骤5:点击 "Import" 导入网络

3.2 方法二:导入STRING导出的TSV文件

步骤1:在STRING网页导出 TSV 文件
步骤2:File → Import → Network from File
步骤3:选择下载的TSV文件
步骤4:设置列映射:
        - Source Node → node1
        - Target Node → node2
        - Edge Attribute → combined_score
步骤5:点击 OK 导入

3.3 网络美化

步骤1:Layout → 选择布局算法
        - "Prefuse Force Directed" — 最常用,力导向布局
        - "Organic" — yFiles插件提供,更美观
步骤2:Style面板 → 调整节点大小/颜色
        - Node Size → 映射到 Degree(度越大节点越大)
        - Node Color → 映射到表达量或模块
        - Edge Width → 映射到 combined_score
步骤3:右键节点 → 显示标签(基因名)

四、网络拓扑分析

4.1 Network Analyzer

步骤1:Tools → Analyze Network
步骤2:选择 "Treat network as undirected"(无向网络)
步骤3:查看结果面板中的关键指标:
        - Number of nodes(节点数)
        - Number of edges(边数)
        - Network density(网络密度)
        - Clustering coefficient(聚类系数)
        - Network heterogeneity(网络异质性)

4.2 CytoHubba找Hub基因

步骤1:Apps → CytoHubba → 选择排名方法
步骤2:常用排名方法:
        - Degree        — 连接数最多
        - Betweenness   — 桥梁作用最大
        - Closeness     — 到其他节点距离最短
        - MCC           — 最大团中心性(推荐)
        - DMNC          — 最大邻域组件密度
步骤3:选择 Top N(通常取 Top 10 或 Top 20)
步骤4:结果会用红→橙→黄渐变色显示排名

4.3 MCODE模块检测

步骤1:Apps → MCODE → 设置参数
        - Degree Cutoff: 2(默认)
        - Node Score Cutoff: 0.2(默认)
        - K-Core: 2(默认)
        - Max Depth: 100(默认)
步骤2:点击 "Find Clusters"
步骤3:每个cluster就是一个功能模块
步骤4:对每个模块做GO/KEGG富集分析

五、R语言自动化分析

5.1 使用STRINGdb R包

# 安装STRINGdb包
if (!require("BiocManager")) install.packages("BiocManager")  # 安装BiocManager
BiocManager::install("STRINGdb")  # 安装STRINGdb

library(STRINGdb)  # 加载包

# 初始化STRING对象(人类,版本12.0,置信0.7)
string_db <- STRINGdb$new(
  version = "12.0",       # STRING版本号
  species = 9606,          # 物种NCBI Taxonomy ID(9606=人类)
  score_threshold = 700,   # 置信分数阈值(0-1000)
  network_type = "full"    # 网络类型:full=所有证据,physical=仅物理互作
)

# 准备差异基因数据
deg_data <- data.frame(
  gene = c("TP53", "BRCA1", "EGFR", "MYC", "CDK2"),  # 基因名列表
  logFC = c(2.5, -1.8, 3.2, 1.5, -0.9),               # log2倍数变化
  pvalue = c(0.001, 0.005, 0.0001, 0.01, 0.03)         # p值
)

# 基因名映射到STRING ID
mapped <- string_db$map(deg_data, "gene", removeUnmappedRows = TRUE)  # 映射基因

# 获取PPI网络
string_db$plot_network(mapped$STRING_id)  # 绘制网络图

# 获取互作数据
interactions <- string_db$get_interactions(mapped$STRING_id)  # 下载互作关系
head(interactions)  # 查看前几行

# 富集分析
enrichment <- string_db$get_enrichment(mapped$STRING_id)  # 功能富集
head(enrichment)  # 查看结果

5.2 使用igraph进行网络分析

library(igraph)  # 加载igraph包

# 从互作数据构建网络
net <- graph_from_data_frame(
  interactions[, c("from", "to")],  # 选择源节点和目标节点列
  directed = FALSE                   # 无向网络
)

# 计算网络拓扑指标
degree_values <- degree(net)                    # 计算每个节点的度
betweenness_values <- betweenness(net)          # 计算介数中心性
closeness_values <- closeness(net)              # 计算接近中心性
eigenvector_values <- eigen_centrality(net)$vector  # 特征向量中心性

# 找Top10 hub基因(按度排名)
hub_genes <- sort(degree_values, decreasing = TRUE)[1:10]  # 取度最高的10个
print(hub_genes)  # 打印hub基因

# 社区检测(模块划分)
communities <- cluster_louvain(net)  # Louvain算法聚类
modularity(communities)              # 计算模块度
membership(communities)              # 查看每个节点的模块归属

常见报错与解决

报错信息原因解决方案
No proteins found基因名格式不对或物种选错确认用official gene symbol,检查物种
Java heap space网络太大,内存不够启动Cytoscape时加 -Xmx4g 参数
stringApp connection failed网络问题检查网络连接,或用代理
Error in map()R包版本不匹配更新STRINGdb和BiocManager
Network too dense置信阈值太低提高score_threshold到700或900
MCODE找不到模块网络太稀疏降低置信阈值或增加输入基因数

速查表

# STRING网页操作
输入基因 → 选物种 → 设阈值 → 导出TSV

# Cytoscape核心操作
导入网络 → Layout布局 → Style美化 → Analyze Network → CytoHubba找hub

# R语言自动化
STRINGdb$new() → map() → get_interactions() → igraph分析

# 常用物种Taxonomy ID
人类: 9606 | 小鼠: 10090 | 大鼠: 10116 | 果蝇: 7227 | 拟南芥: 3702

# 发文章推荐参数
置信阈值: 0.700 | Hub基因: Top10 by MCC | 聚类: MCODE默认参数

面试高频问题

Q1:STRING数据库的互作证据来源有哪些?

:STRING整合了7种证据来源:①实验验证的物理互作(Experiments)②共表达数据(Coexpression)③文本挖掘(Text mining)④数据库注释(Databases/pathway)⑤基因组邻近(Neighborhood)⑥基因融合(Gene Fusions)⑦系统发生谱(Co-occurrence)。2025版新增了调控方向性信息,可以区分上调和下调关系。

Q2:如何选择PPI网络的置信分数阈值?

:根据分析目的选择——探索性分析用0.4(中等),发文章通常用0.7(高置信),只看实验验证用0.9(最高)。阈值越高,网络越稀疏但越可靠;越低则网络越密但可能有假阳性。

Q3:什么是hub基因?如何鉴定?

:Hub基因是网络中连接度(degree)最高的节点,类似社交网络中的"意见领袖"。可以用CytoHubba的多种算法鉴定:Degree(连接数)、MCC(最大团中心性,推荐)、Betweenness(桥梁作用)等。通常取排名前10的作为hub基因进行后续验证。

Q4:PPI网络分析有什么局限性?

:①数据库偏向性——研究多的蛋白互作信息更丰富(研究偏差);②假阳性——文本挖掘和预测方法可能引入噪声;③物种局限——非模式生物数据较少;④静态网络——不能反映时空动态变化;⑤功能互作≠物理互作——STRING包含功能关联,不全是直接结合。

Q5:Cytoscape的MCODE和CytoHubba有什么区别?

:MCODE是聚类算法,找的是网络中的"小团体"(功能模块),一个模块内的蛋白通常参与相同的生物过程。CytoHubba是排名算法,找的是整个网络中最"重要"的单个节点(hub基因)。两者互补:先用MCODE找模块,再在关键模块中用CytoHubba找hub基因。