跳转至

网络分析在生物学

一句话概述:生物网络分析将基因/蛋白质/代谢物之间的关系建模为图(网络),通过拓扑分析和模块检测揭示关键节点、功能模块和调控关系,是系统生物学的核心方法。

核心知识点速查表

概念说明
节点(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)