根据不同的采样跨度,对群落进行网络分析可以揭示物种间潜在的相互作用(采样跨度小)或共发生模式(采样跨度大)。LorMe包基于封装对象(是否配置都可),对封装对象包括的所有样品,进行物种之间的spearman或者pearson共发生网络分析。分析结果将输出节点信息表(包括ZIPI、物种分类、节点拓扑性质等信息)、邻接关系表(以上两表可无缝衔接gephi和cytoscape软件)、邻接矩阵(可用于衔接网络稳定性等后续分析)、网络拓扑参数及igraph对象。在进行网络分析前,有一些注意事项:
LorMe包已经优化了相关性矩阵生成算法以加快运行速度。以酷睿2双核i5处理器为例,不调用多线程的情况下,400个样品&10000个物种的16s样品相关性分析仅需不到2分钟。如以较新的电脑配置(i7-12核),计算600个样品超6W的物种的网络分析仅需不到30秒。尽管如此,网络分析时过多的节点(2000个以上)和边(10000个以上)依然会拖慢运行速度并影响可视化效果。因此,我们建议所有样品初次进行网络分析时,将‘threshold’参数调至0.95以上,将n参数调至样品数量的80%以上,将display参数调整至F进行预分析;随后根据控制台的网络拓扑参数下调threshold或n值。
对于宏基因组数据(尤其是kraken注释数据),由于物种数量较大且具有一定自相关性,需通过设置rel_threshold参数,按相对丰度进行数据过滤后进行网络分析。如,仅将平均相对丰度大于0.5%(rel_threshold设置为0.005)的物种纳入网络。
如对网络没有相关性阈值的特殊要求,我们建议通过调整合适的n值和threshold值,将右侧plot界面中的网络图形调整至类球形以进行更好可视化,类似这样:
理论上超过6个样本即可进行网络分析,实际为避免假阳性,请至少设置8个样本,并且我们推荐最好有10个样本以上。此外该功能基于封装对象内的所有样品进行网络分析,如需选择特定的处理,请通过sub_tax_summary 选择相应处理的样品,比如:
data("Two_group")
CT<- sub_tax_summary(taxobj = Two_group, Group=="Control")
#后续将taxobj参数指定为CT进行Control组内网络分析
## 数据准备
library(LorMe)
data("Three_group") #使用内置示例数据
set.seed(999) #设置种子保证可复现性
## 一键分析
network_results <- network_analysis(
taxobj = Three_group, # 封装对象
taxlevel = "Genus", # 分析水平
n = 10, # 物种出现在样本中的数量阈值
threshold = 0.9, # 相关性值阈值
method = "spearman",# 相关性计算方法
rel_threshold = 0 # 纳入网络分析的物种平均丰度阈值
) #此时控制台会打印网络的统计信息,plot界面会显示网络的简单可视化图形
## 结果提取
### 节点信息表
network_nodes <- network_results$Nodes_info
head(network_nodes) #
### 邻接关系表
network_adjacency <- network_results$Adjacency_column_table
head(network_adjacency)
### 邻接矩阵
network_matrix <- network_results$Adjacency_matrix
print(network_matrix[1:10, 1:10])
### igraph 对象
igraph_object <- network_results$Igraph_object
### 网络拓扑属性
network_stat(igraph_object)
导出节点信息表和邻接关系表后,可以去交互式网络可视化软件gephi和cytoscape进行可视化(这两个软件生成的可视化图像颜值会高一些)。不想麻烦的话,LorMe包也提供了内置的可视化功能。
# 网络可视化
## 极简模式
network_visual_obj <- network_visual(network_obj = network_results)
## 高亮节点数最多的10个模块
network_visual_obj <- network_visual(
network_obj = network_results,
major_num = 10, # 显示模块数量
palette = "Set1", # 色板名,默认值,可选
vertex.size = 6 # 点的大小,默认值,可选
)
## 高亮节特定分类
network_visual_obj <- network_visual(
network_obj = network_results,
mode = "major_tax", # 可视化模式
taxlevel = "Phylum", # 映射的分类水平
select_tax = "p__Proteobacteria" # 指定映射物种
)
### 配合community_plot高亮相对丰度前5的主要物种
community <- community_plot(
taxobj = Three_group,
taxlevel = "Phylum",
n = 5,
palette = "Paired"
)
display_phyla <- names(community$filled_color) #提取主要物种
network_visual_obj <- network_visual(
network_obj = network_results,
mode = "major_tax",
taxlevel = "Phylum",
select_tax = display_phyla,
palette = community$filled_color
)
编辑|汪宁褀
排版|许家正
审核|韦中