BioF3 FigCode · SCI 绘图代码集
蛋白互作网络(PPI Network)
分类:网络与互作 | 依赖包:STRINGdb、igraph、ggraph、tidygraph
解决的生物学问题
我的差异蛋白之间有多少已知的互作关系?哪些是 hub 节点?
应用场景
- 蛋白组分析后找 hub 蛋白
- RNA-seq 差异基因功能模块
- 药靶筛选与靶点优先级
- 通路成员物理交互验证
输入数据格式
差异基因/蛋白列表 + 物种 ID(人 = 9606)
关键参数
- species = 9606(人)
- score_threshold(互作置信度,400 / 700 / 900)
- network_type = "physical"(物理互作)/ "full"
- add_diff_exp_color(按 log2FC 着色)
快速开始
1. 直接在线运行
打开 FigCode 在线绘图,点击本工具卡片的"在线绘图"按钮即可用内置示例数据出图,零环境配置。
2. 本地复现
下载脚本和示例数据,本地 RStudio 运行:
# 下载
curl -O https://<your-site>/figcode/scripts/ppi-network.R
curl -O https://<your-site>/figcode/data/ppi-network.csv
3. 安装依赖
# CRAN 包
install.packages(c("STRINGdb", "igraph", "ggraph", "tidygraph"))
# Bioconductor 包(如需)
# BiocManager::install(c())
完整代码
library(STRINGdb)
library(igraph)
library(ggraph)
library(tidygraph)
# --- Demo gene list ---
genes <- c("TP53","BRCA1","BRCA2","EGFR","MYC","CDK1","CDK2","CCNB1",
"MDM2","RB1","E2F1","CCNE1","CDKN1A","CDKN2A","ATM")
log2fc <- setNames(rnorm(length(genes), 0, 1.5), genes)
# --- STRING ---
string_db <- STRINGdb$new(
version = "12.0",
species = 9606,
score_threshold = 700,
network_type = "physical",
input_directory = ""
)
mapped <- string_db$map(data.frame(gene = genes), "gene", removeUnmappedRows = TRUE)
edges <- string_db$get_interactions(mapped$STRING_id)
# Convert STRING IDs back to gene symbols
id_to_gene <- setNames(mapped$gene, mapped$STRING_id)
edges_g <- data.frame(
from = id_to_gene[edges$from],
to = id_to_gene[edges$to],
weight = edges$combined_score / 1000
)
g <- as_tbl_graph(edges_g, directed = FALSE) %>%
activate(nodes) %>%
mutate(degree = centrality_degree(),
log2fc = log2fc[name])
# --- Plot ---
ggraph(g, layout = "fr") +
geom_edge_link(aes(alpha = weight), edge_colour = "grey60") +
geom_node_point(aes(size = degree, color = log2fc)) +
geom_node_text(aes(label = name), repel = TRUE, size = 3) +
scale_color_gradient2(low = "#2563eb", mid = "white", high = "#dc2626") +
scale_size(range = c(2, 8)) +
theme_void() +
ggtitle("PPI Network — STRING (score > 700)")
替换为自己的数据
脚本中以 # --- Demo data --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:
- 输入格式:差异基因/蛋白列表 + 物种 ID(人 = 9606)
- 使用
read.csv()/readRDS()读取本地文件
延伸阅读
- 相关教程:蛋白互作网络 完整流程
- 出现 bug?欢迎在 FigCode 页面 点击对应卡片,在评论区留言。