MetaNet:多组学网络分析工具|6.网络拓扑指标分析

本文我们介绍网络的各种拓扑指标计算和分析。网络拓扑(Network Topology)是指网络中节点与边的连接模式所呈现的全局或局部结构特征。在生物组学研究中,拓扑分析能揭示分子互作网络的功能组织规律,是理解复杂生物系统的关键手段。

可以从 CRAN 安装稳定版:install.packages("MetaNet")

依赖包 pcutilsigraph(需提前安装),推荐配合 dplyr 进行数据操作。

library(MetaNet)
library(igraph)

# ========data manipulation
library(dplyr)
library(pcutils)

拓扑指标

全局拓扑(Global Topology)描述网络整体连接特性,局部拓扑(Local Topology)聚焦单个节点/边的结构重要性,MetaNet可以对构建好的网络进行多种拓扑指标的计算和分析。

局部拓扑指标

  1. Connectivity/Degree centrality
    衡量节点直接连接数量的基础指标,反映节点的局部影响力。

  2. Betweenness centrality
    统计节点出现在所有最短路径中的频率,识别网络中的"桥梁"节点。

  3. Closeness centrality
    计算节点到其他所有节点的平均最短距离倒数,体现信息传播效率。

  4. Eigenvector centrality
    考虑邻居节点的重要性加权计算,适用于评估依赖高端连接的节点影响力。

  5. Clustering coefficient
    量化节点邻居间的连接紧密程度,揭示网络局部模块化特性。

  6. Eccentricity
    定义节点到网络中最远节点的距离,反映节点的全局位置特征。

  7. PageRank
    基于随机游走模型迭代计算的节点重要性,适用于有向网络(如基因调控网络)。

  8. Kleinberg’s hub/authority centrality
    双向评价节点价值:hub(指向重要节点)和authority(被重要节点指向)。

更细致的介绍可以看下表,来自MetaNet教程网页:

全局拓扑指标

  1. Average connectivity/degree
    网络中所有节点连接数的平均值,反映整体连接密度。

  2. Average path length/Average geodesic distance
    所有节点对之间最短路径的平均值,衡量网络信息传递效率。

  3. Global efficiency/Geodesic efficiency
    节点间最短路径倒数和的标准化值(0-1),值越高表示信息流动越高效。

  4. Centralization of degree
    节点度分布的集中程度(0-1),值越高说明网络越依赖少数枢纽节点。

  5. Centralization of betweenness
    节点介数中心性的方差,反映网络对"桥梁"节点的依赖程度。

  6. Centralization of closeness
    接近中心性的分布偏态,表征网络核心-边缘结构的强度。

  7. Centralization of eigenvector centrality
    特征向量中心性的异质性,评估高端连接节点的支配性。

  8. Density
    实际边数与最大可能边数的比值(0-1),描述网络的稀疏程度。

  9. Average clustering coefficient
    所有节点局部聚类系数的均值,量化网络模块化趋势。

  10. Transitivity
    三元闭包比例(三角形结构占比),反映网络局部聚集特性。

  11. Natural connectivity
    基于网络特征谱的鲁棒性指标,值越高表示网络越稳定。

一些潜在的生物网络分析应用场景:

指标类型典型应用场景计算复杂度
Degree快速筛选高连接分子O(n)
Betweenness发现跨模块调控因子O(n²)
PageRank识别关键调控基因O(n log n)
指标典型生物学意义示例场景
Average path length代谢物信号传导速度短路径=快速调控响应
Centralization of degree关键基因的支配性转录因子网络分析
Transitivity蛋白复合体的形成倾向PPI网络功能模块检测
Natural connectivity基因网络抗突变能力疾病相关网络稳定性评估

MetaNet计算

MetaNet提供net_par()函数一键计算网络/节点/边三个层级的拓扑指标:

library(MetaNet)
library(igraph)

# 示例1:获取Walther网络的所有指标(返回列表)
make_graph("Walther") %>% net_par(mode = "all")

# 示例2:仅获取网络级全局指标
make_graph("Walther") %>% net_par(mode = "n")

参数说明

  • mode:计算范围
    • "n":网络级指标(如密度、平均路径长度)
    • "v":节点级指标(如度中心性、介数)
    • "e":边级指标(如边介数)
    • "all":全部指标(返回嵌套列表)

也可以通过c_net_index()计算并存储拓扑指标到网络中,便于后续分析和可视化:

# 生成随机网络
go <- erdos.renyi.game(30, 0.25) %>% c_net_update()

# 计算拓扑指标并存入网络属性
go <- c_net_index(go)

# 查看节点属性表(前6行)
head(get_v(go))  # 包含Degree、Betweenness等列
##   name label size  v_group  shape  v_class   color Degree
## 1    1     1    1 v_group1 circle v_class1 #a6bce3     12
## 2    2     2    1 v_group1 circle v_class1 #a6bce3      5
## 3    3     3    1 v_group1 circle v_class1 #a6bce3      6
## 4    4     4    1 v_group1 circle v_class1 #a6bce3     10
## 5    5     5    1 v_group1 circle v_class1 #a6bce3     10
## 6    6     6    1 v_group1 circle v_class1 #a6bce3      8
##   Clustering_coefficient Betweenness Eccentricity  Closeness Hub_score
## 1              0.3030303   28.397972            3 0.02127660 1.0000000
## 2              0.2000000    6.660256            3 0.01666667 0.3248811
## 3              0.2666667    6.069444            3 0.01694915 0.4109319
## 4              0.2000000   28.380145            3 0.02000000 0.7223088
## 5              0.2666667   21.248995            3 0.02000000 0.7955976
## 6              0.2857143   11.864627            2 0.02000000 0.6595919

将节点度中心性映射为可视化属性:

# get a metanet
go <- erdos.renyi.game(30, 0.25)
go <- c_net_update(go)
par(mfrow = c(1, 2))
plot(go, vertex_size_range = c(5, 20), legend = F, main = "Same size")

# calculate topological indexes and store
go <- c_net_index(go)
head(get_v(go))
##   name label size  v_group  shape  v_class   color Degree
## 1    1     1    1 v_group1 circle v_class1 #a6bce3      5
## 2    2     2    1 v_group1 circle v_class1 #a6bce3      6
## 3    3     3    1 v_group1 circle v_class1 #a6bce3      6
## 4    4     4    1 v_group1 circle v_class1 #a6bce3      5
## 5    5     5    1 v_group1 circle v_class1 #a6bce3      5
## 6    6     6    1 v_group1 circle v_class1 #a6bce3     10
##   Clustering_coefficient Betweenness Eccentricity  Closeness Hub_score
## 1             0.10000000   10.013921            3 0.01785714 0.4610096
## 2             0.26666667    6.727020            3 0.01754386 0.6577058
## 3             0.20000000   10.684066            3 0.01694915 0.5397470
## 4             0.20000000    8.271461            3 0.01724138 0.4504656
## 5             0.20000000    8.340112            3 0.01694915 0.4305194
## 6             0.08888889   41.647508            3 0.02040816 0.8463154
# use vertex.size to indicate degree
go <- c_net_set(go, vertex_size = "Degree")
plot(go, vertex_size_range = c(5, 20), legend = F, main = "Size map to degree")

子样本网络

有一个这样的常见需求。我们建立了整体网络之后需要提取每个样本物种的子网络,然后计算子网络的网络属性。这样后续可以分析网络属性与环境或者对比不同实验组的差异。例如这篇imeta文章里的分析:

Jiao, S., Chu, H., Zhang, B., Wei, X., Chen, W., and Wei, G. (2022). Linking soil fungi to bacterial community assembly in arid ecosystems. iMeta 1, e2. https://doi.org/10.1002/imt2.2.

extract_sample_net()函数可以从原网络中根据丰度表(或者有无表)抽取子样本网络(保留丰度大于0的节点),并保存子样本网络的对象,并且直接计算出每一个子网络的各种拓扑参数:

data("otutab", package = "pcutils")
sample_net_par <- extract_sample_net(co_net, otutab)

# 分组比较
group_box(sample_net_par[,2:10],group = "Group",metadata = metadata)

# 连续变量分析
my_lm(sample_net_par[,2:10],var = "env1",metadata = metadata)

随机网络

随机网络(Random Network)是网络科学中的一类基础网络模型,其核心特征是网络连接遵循某种随机生成规则。Erdős-Rényi(ER)模型是最著名的代表:

  • 定义:给定N个节点,每对节点以概率p独立连接

  • 特性

    • 度分布呈泊松分布 $ P(k) \sim e{-\lambda}\lambdak/k! $
    • 平均聚类系数:$C \approx p $
    • 平均路径长度:$L \sim \ln(N) $
  • 生物学意义:

    • 作为"零模型"(null model)用于评估真实生物网络的显著性
    • 帮助识别网络中的非随机结构(如模块、枢纽节点)

MetaNet提供两种随机网络生成方法用于网络分析对比:

  1. 单次随机网络生成
    使用rand_net()基于Erdős-Rényi模型生成与目标网络(相同节点数和边数)的随机对照网络:
rand_net(co_net) -> random_net

  1. 批量生成与统计比较
    通过rand_net_par()生成多个随机网络并计算拓扑指标分布,再使用compare_rand()进行显著性比较:
rand_net_par(co_net, reps = 30) -> randp  # 生成30个随机网络
net_par(co_net) -> pars                   # 计算原网络指标
compare_rand(pars, randp,                 # 指标对比
            index = c("Average_path_length", "Clustering_coefficient"))

复杂网络

在组学研究中构建的网络大多属于复杂网络,其核心特征包括无标度性、小世界性、模块化和层次性,具体定义如下所示:

  1. 无标度性验证

使用fit_power()函数拟合网络的度分布幂律曲线:

data("c_net", package = "MetaNet")
fit_power(co_net)

  1. 小世界性量化
    通过smallworldness()计算小世界指数σ:

σ = C / C r a n d o m L / L r a n d o m \sigma=\frac{C/C_{random}}{L/L_{random}} σ=L/LrandomC/Crandom
其中C和L分别表示实际网络的聚类系数和平均路径长度, C r a n d o m C_{random} Crandom L r a n d o m L_{random} Lrandom为随机网络对应值。当σ>1时,网络具有小世界特性。

smallworldness(co_net)  # 示例输出:43.09368

网络的模块分析下一次介绍。

References

  1. Koutrouli M, Karatzas E, Paez-Espino D and Pavlopoulos GA (2020) A Guide to Conquer the Biological Network Era Using Graph Theory. Front. Bioeng. Biotechnol. 8:34. doi: 10.3389/fbioe.2020.00034
  2. Faust, K., and Raes, J. (2012). Microbial interactions: from networks to models. Nat. Rev. Microbiol. https://doi.org/10.1038/nrmicro2832.
  3. Y. Deng, Y. Jiang, Y. Yang, Z. He, et al., Molecular ecological network analyses. BMC bioinformatics (2012), doi:10.1186/1471-2105-13-113.

关注公众号,获取最新推送

关注公众号 ‘bio llbug’,获取最新推送。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值