R语言:microeco:一个用于微生物群落生态学数据挖掘的R包:第七:trans_network class

本文主要是介绍R语言:microeco:一个用于微生物群落生态学数据挖掘的R包:第七:trans_network class,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

# 网络是研究微生物生态共现模式的常用方法。在这一部分中,我们描述了trans_network类的所有核心内容。
# 网络构建方法可分为基于关联的和非基于关联的两种。有几种方法可以用来计算相关性和显著性。
#我们首先介绍了基于关联的网络。trans_network中的cal_cor参数用于选择相关计算方法。

> t1 <- trans_network$new(dataset = dataset, cal_cor = "base", taxa_level = "OTU", filter_thres = 0.0001, cor_method = "spearman")

> devtools::install_github('zdk123/SpiecEasi')
> library(SpiecEasi)
# SparCC method, require SpiecEasi package
> t1 <- trans_network$new(dataset = dataset, cal_cor = "SparCC", taxa_level = "OTU", filter_thres = 0.001, SparCC_simu_num = 100)
# require WGCNA package
> library(WGCNA)
> t1 <- trans_network$new(dataset = dataset, cal_cor = "WGCNA", taxa_level = "OTU", filter_thres = 0.0001, cor_method = "spearman")

#参数COR_cut可用于选择相关阈值。此外,COR_optimization = TRUE表示使用RMT理论寻找优化的相关阈值,而不是COR_cut。
> t1$cal_network(p_thres = 0.01, COR_optimization = TRUE)
# use arbitrary coefficient threshold to contruct network
> install.packages("rgexf")
> t1$save_network(filepath = "network.gexf")
#根据Gephi中计算出的模块绘制网络并给出节点颜色。
#https://gephi.org/users/download/ 下载grephi

#现在,我们用门的信息显示节点的颜色,用正相关和负相关来显示边缘的颜色。所有使用的数据

#都存储在网络中。gexf文件,包括模块分类、门信息和边分类。

> t1$cal_network_attr()
Result is stored in object$res_network_attr ...
> t1$res_network_attrVertex                 4.070000e+02
Edge                   1.989000e+03
Average_degree         9.773956e+00
Average_path_length    2.784505e+00
Network_diameter       9.000000e+00
Clustering_coefficient 4.697649e-01
Density                2.407378e-02
Heterogeneity          1.193606e+00
Centralization         9.907893e-02
Modularity             5.485651e-01
> t1$cal_network_attr()
Result is stored in object$res_network_attr ...
> t1$res_network_attrVertex                 4.070000e+02
Edge                   1.989000e+03
Average_degree         9.773956e+00
Average_path_length    2.784505e+00
Network_diameter       9.000000e+00
Clustering_coefficient 4.697649e-01
Density                2.407378e-02
Heterogeneity          1.193606e+00
Centralization         9.907893e-02
Modularity             5.485651e-01
> t1$cal_module()
Use cluster_fast_greedy function to partition modules ...
Totally, 25 modules are idenfified ...
Modules are assigned in network with attribute name -- module ...
> t1$get_node_table(node_roles = TRUE)
The nodes (22) with NaN in z will be filtered ...
Result is stored in object$res_node_table ...
> t1$plot_taxa_roles(use_type = 1)
Warning message:
Removed 22 rows containing missing values (`geom_point()`). 

t1$plot_taxa_roles(use_type = 2)

> t1$cal_eigen()
#然后用相关热图来显示特征基因与环境因素之间的关系。
> t2 <- trans_env$new(dataset = dataset, add_data = env_data_16S[, 4:11])
> t2$cal_cor(add_abund_table = t1$res_eigen)
> t2$plot_cor()

# 函数cal_sum_links()用于对从一个分类单元到另一个分类单元或同一分类单元中的链接(边)数求和。
# 函数plot_sum_links()用于显示函数cal_sum_links()的结果。这对于快速查看不同分类群之间或一个分类群内部连接了多少节点非常有用。
# 对于本教程中的“门”级别,函数cal_sum_links()将从一个门到另一个门或同一门中的连杆数求和。
# 所以圆形图外围的数字表示有多少条边或连接与门有关。例如,就Proteobacteria而言,
# 大约总共有900条边与Proteobacteria中的OTUs相关,其中大约有200条边将Proteobacteria中的两个OTUs连接起来,
# 大约有150条边将Proteobacteria中的OTUs与来自Chloroflexi的OTUs连接起来。

# 函数cal_sum_links()用于对从一个分类单元到另一个分类单元或同一分类单元中的链接(边)数求和。
# 函数plot_sum_links()用于显示函数cal_sum_links()的结果。这对于快速查看不同分类群之间或一个分类群内部连接了多少节点非常有用。
# 对于本教程中的“门”级别,函数cal_sum_links()将从一个门到另一个门或同一门中的连杆数求和。
# 所以圆形图外围的数字表示有多少条边或连接与门有关。例如,就Proteobacteria而言,
# 大约总共有900条边与Proteobacteria中的OTUs相关,其中大约有200条边将Proteobacteria中的两个OTUs连接起来,
# 大约有150条边将Proteobacteria中的OTUs与来自Chloroflexi的OTUs连接起来。

# calculate the links between or within taxonomic ranks
> t1$cal_sum_links(taxa_level = "Phylum")
# return t1$res_sum_links_pos and t1$res_sum_links_neg
# require chorddiag package
> devtools::install_github("mattflor/chorddiag", build_vignettes = TRUE)
> t1$plot_sum_links(plot_pos = TRUE, plot_num = 10)

> #subset_network()函数可用于从网络中提取部分节点和这些节点之间的边。在这个函数中,应该使用node参数提供所需的节点。
> t1$subset_network(node = t1$res_node_type %>% .[.$module == "M1", ] %>% rownames, rm_single = TRUE)
IGRAPH 7df7c55 UNW- 407 1989 -- 
+ attr: name (v/c), taxa (v/c), Phylum (v/c), RelativeAbundance (v/n), module (v/c), label (e/c), weight (e/n)
+ edges from 7df7c55 (vertex names):[1] OTU_50   --OTU_357   OTU_50   --OTU_154   OTU_305  --OTU_3303  OTU_305  --OTU_2564  OTU_305  --OTU_30    OTU_1    --OTU_13824 OTU_1    --OTU_4731 [8] OTU_1    --OTU_34    OTU_1    --OTU_301   OTU_1    --OTU_668   OTU_1    --OTU_1169  OTU_1    --OTU_847   OTU_1    --OTU_1243  OTU_1    --OTU_266  
[15] OTU_1    --OTU_1897  OTU_1    --OTU_1185  OTU_1    --OTU_1892  OTU_1    --OTU_1811  OTU_1    --OTU_126   OTU_1    --OTU_902   OTU_1    --OTU_351  
[22] OTU_1    --OTU_264   OTU_1    --OTU_1173  OTU_1    --OTU_1866  OTU_1    --OTU_1848  OTU_1    --OTU_1204  OTU_41   --OTU_117   OTU_59   --OTU_78   
[29] OTU_59   --OTU_357   OTU_59   --OTU_943   OTU_2733 --OTU_2725  OTU_4050 --OTU_7205  OTU_4050 --OTU_3522  OTU_4147 --OTU_1646  OTU_4147 --OTU_109  
[36] OTU_4147 --OTU_7557  OTU_4147 --OTU_265   OTU_4147 --OTU_3164  OTU_4147 --OTU_8029  OTU_4147 --OTU_107   OTU_4147 --OTU_7648  OTU_4147 --OTU_3138 
[43] OTU_4147 --OTU_1812  OTU_4147 --OTU_2784  OTU_4147 --OTU_426   OTU_4147 --OTU_1850  OTU_4147 --OTU_3712  OTU_4147 --OTU_3321  OTU_4147 --OTU_12327
[50] OTU_4147 --OTU_3159  OTU_4147 --OTU_7630  OTU_4147 --OTU_1885  OTU_4147 --OTU_1827  OTU_4147 --OTU_7346  OTU_4147 --OTU_4531  OTU_4147 --OTU_1810 
+ ... omitted several edges
> #然后,我们展示了下一个实现的网络构建方法:SpiecEasi R包中的SpiecEasi(稀疏逆协方差估计for Ecological Association Inference)网络。
> # cal_cor select NA
> t1 <- trans_network$new(dataset = dataset, cal_cor = NA, taxa_level = "OTU", filter_thres = 0.0005)
After filtering, 301 features are remained ...
> # require SpiecEasi package  https://github.com/zdk123/SpiecEasi
> t1$cal_network(network_method = "SpiecEasi")
---------------- 2024-03-18 15:42:16.310147 : Start ----------------
Applying data transformations...
Selecting model with pulsar using stars...
Fitting final estimate with mb...
done
---------------- 2024-03-18 15:48:05.015648 : Finish ----------------
The result network is stored in object$res_network ...
> t1$res_network
IGRAPH da9387f UNW- 301 1595 -- 
+ attr: name (v/c), taxa (v/c), Phylum (v/c), RelativeAbundance (v/n), weight (e/n), label (e/c)
+ edges from da9387f (vertex names):[1] OTU_32  --OTU_238  OTU_32  --OTU_115  OTU_32  --OTU_578  OTU_32  --OTU_260  OTU_32  --OTU_62   OTU_32  --OTU_1283 OTU_32  --OTU_205  OTU_32  --OTU_315 [9] OTU_32  --OTU_64   OTU_32  --OTU_348  OTU_32  --OTU_345  OTU_32  --OTU_201  OTU_50  --OTU_408  OTU_50  --OTU_59   OTU_50  --OTU_3303 OTU_50  --OTU_117 
[17] OTU_50  --OTU_318  OTU_50  --OTU_632  OTU_50  --OTU_67   OTU_50  --OTU_3052 OTU_50  --OTU_357  OTU_50  --OTU_771  OTU_50  --OTU_30   OTU_50  --OTU_674 
[25] OTU_305 --OTU_59   OTU_305 --OTU_37   OTU_305 --OTU_3303 OTU_305 --OTU_146  OTU_305 --OTU_67   OTU_305 --OTU_578  OTU_305 --OTU_3052 OTU_305 --OTU_28  
[33] OTU_305 --OTU_30   OTU_305 --OTU_26   OTU_305 --OTU_92   OTU_305 --OTU_58   OTU_408 --OTU_23   OTU_408 --OTU_22   OTU_408 --OTU_117  OTU_408 --OTU_169 
[41] OTU_408 --OTU_27   OTU_408 --OTU_217  OTU_408 --OTU_3052 OTU_408 --OTU_1830 OTU_408 --OTU_530  OTU_6426--OTU_31   OTU_6426--OTU_515  OTU_6426--OTU_372 
[49] OTU_6426--OTU_409  OTU_6426--OTU_293  OTU_6426--OTU_341  OTU_6426--OTU_1819 OTU_6426--OTU_1922 OTU_6426--OTU_970  OTU_6426--OTU_430  OTU_75  --OTU_31  
[57] OTU_75  --OTU_22   OTU_75  --OTU_515  OTU_75  --OTU_204  OTU_75  --OTU_656  OTU_75  --OTU_839  OTU_75  --OTU_1922 OTU_75  --OTU_21   OTU_75  --OTU_431 
+ ... omitted several edges

> t1$plot_network()

这一期跑了很久。大家慎跑。

这篇关于R语言:microeco:一个用于微生物群落生态学数据挖掘的R包:第七:trans_network class的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/825047

相关文章

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上