网络分析在生物学
一句话概述:生物网络分析将基因/蛋白质/代谢物之间的关系建模为图(网络),通过拓扑分析和模块检测揭示关键节点、功能模块和调控关系,是系统生物学的核心方法。
核心知识点速查表
| 概念 | 说明 |
|---|
| 节点(Node) | 网络中的实体(基因/蛋白质/代谢物) |
| 边(Edge) | 节点间的关系(互作/共表达/调控) |
| 度(Degree) | 节点连接的边数(白话:朋友数量) |
| Hub节点 | 度最高的核心节点(白话:社交达人) |
| 模块(Module) | 紧密连接的节点子集(白话:小圈子) |
| 中心性 | 衡量节点在网络中重要性的指标 |
| WGCNA | 加权基因共表达网络分析 |
| Scale-free | 无标度网络,大多数节点度低,少数Hub度很高 |
一、常见生物网络类型
| 网络类型 | 节点 | 边 | 构建方式 |
|---|
| PPI网络 | 蛋白质 | 物理互作 | 实验数据(BioGRID/STRING) |
| 共表达网络 | 基因 | 表达相关性 | WGCNA/相关系数 |
| 代谢网络 | 代谢物/酶 | 反应关系 | KEGG/MetaCyc |
| 调控网络 | TF-靶基因 | 转录调控 | ChIP-seq/ATAC-seq |
| 微生物共现网络 | 物种 | 共现/互斥 | SparCC/SpiecEasi |
二、网络构建与分析
# === R igraph网络分析 ===
library(igraph)
# 构建网络
edges <- data.frame(from=c("A","A","B","C","D","D"),
to=c("B","C","C","D","E","F"))
g <- graph_from_data_frame(edges, directed=FALSE) # 无向图
# 基本统计
cat("节点数:", vcount(g), "\n") # 节点数
cat("边数:", ecount(g), "\n") # 边数
cat("密度:", graph.density(g), "\n") # 网络密度
# 中心性指标
deg <- degree(g) # 度
bc <- betweenness(g) # 介数中心性
cc <- closeness(g) # 接近中心性
ec <- eigen_centrality(g)$vector # 特征向量中心性
# 模块检测
comm <- cluster_louvain(g) # Louvain算法
modularity(comm) # 模块度
membership(comm) # 各节点所属模块
# 可视化
plot(g, vertex.size=deg*5, vertex.color=membership(comm),
vertex.label.cex=0.8, layout=layout_with_fr(g))
# === Python NetworkX ===
import networkx as nx
G = nx.from_pandas_edgelist(df, "source", "target") # 构建网络
hubs = sorted(dict(G.degree()).items(), key=lambda x: x[1], reverse=True)[:10]
communities = nx.community.louvain_communities(G) # 社区检测
nx.draw(G, with_labels=True, node_size=[d*100 for _,d in G.degree()])
三、面试高频考点
Q1: Hub基因为什么重要?
- Hub基因在网络中连接最多,通常是关键调控因子
- 去除Hub基因对网络影响最大(可能致死)
- Hub基因常是药物靶点和生物标志物
- 白话:Hub基因就像交通枢纽,堵住它全城瘫痪
Q2: 生物网络的无标度特性?
- 大多数节点只有少量连接,少数Hub节点有大量连接
- 度分布服从幂律分布:P(k) ~ k^(-γ)
- 使网络对随机攻击鲁棒,但对Hub攻击脆弱
速查表
# === 网络分析速查 ===
library(igraph)
g <- graph_from_data_frame(edges)
degree(g); betweenness(g) # 中心性
cluster_louvain(g) # 模块检测
# 可视化: Cytoscape(交互) | igraph/ggraph(R) | NetworkX(Python)