细菌-真菌-环境因子-等多个不同指标分组之间的相关网络
写在前面
寻找关系使我们做研究很重要的一个部分。前几天的推文,我演示了如何联合细菌真菌做网络,如何使用不同类型的指标做网络,如果将这些都杂糅一起,这就是今天的内容。
细菌-真菌-环境因子联合相关网络
首先我先来说一下输入格式:输入文件有三个:
第一个是data,环境因子等需要和微生物群落做相关的指标,这些指标可以有多个类别,所以徐亚哦第二个参数指定这些指标的分类。
group 第一个数据的分类信息,这里的每一个分组后面你都会将其单独展示为一个模块。
第三个数据是phyloseq对象,这里目前定义为细菌和真菌联合的phyloseq对象,可以使用下面命令合并单独的细菌和真菌phyloseq对象。
#--导入多个环境变量及其分组
data1 <- read.delim("..//ori_data/bios_network_normal//env.txt")
Gru <- read.delim("..//ori_data/bios_network_normal//env_group.txt")
# data = data1
# group = Gru
library(ggClusterNet)
library(phyloseq)
# 导入细菌ps,通过相对丰度value1来过滤otu表格
ps16 = readRDS("..//ori_data/bios-network_micro/16S/ps_16S.rds")
#导入真菌ps,通过相对丰度value1来过滤otu表格
psIT = readRDS("..//ori_data/bios-network_micro/ITS/ps_ITS.rds")
ps.merge <- merge16S_ITS (ps16,psIT,N16s = 0.005,NITS = 0.005)
ps <- ps.merge
result <- corBiostripe(data = data1,group = Gru,ps = ps.merge)
data = data1
group = Gru
ps = ps.merge
#--提取相关矩阵
cor = result[[1]]
制作分组,我们合并这五个分组
这是网络布局的基础,无论是什么聚类布局,都需要制作一个分组文件,这个文件有两列,一列是节点,一列是分组信息,这个分组信息名称为:group。这个文件信息就是用于对节点进行分组,然后按照分组对节点归类,使用包中可视化函数计算节点位置。
head(Gru)
tax = as.data.frame((vegan_tax(ps)))
head(tax)
group2 <- data.frame(SampleID = row.names(tax),Group = tax$filed)
netClu = rbind(Gru,group2)
colnames(netClu) <- c("ID","group")
head(netClu)
PolygonClusterG 根据分组,计算布局
PolygonClusterG :不同的模块按照分分组聚集成不同的圆,并且圆形的大小一样。如果一个分组只有一个点,则这个点坐落在圆心位置。这个函数在2020年8月19日增加了两个参数,并于当天更新打扫github上,用于控制不同模块之间距离的参数zoom,和模块半径的参数zoom。两个参数默认都是1.
下面我们演示zoom用法,调整变大,距离拉大,展示模块之间的关系
#--------计算布局#---------
#-------计算网络布局-得到节点坐标=node#---------
result2 = PolygonRrClusterG (cor = cor,nodeGroup =netClu,zoom = 3,zoom2 = 2 )
node = result2[[1]]
head(nodes)
### nodeadd 节点注释的简单封装,便捷实用otu表格和分组文件进行注释
library(dplyr)
nodes <- node %>%
inner_join(netClu,by =c("elements" = "ID") )
#-----计算边#--------
edge = edgeBuild(cor = cor,plotcord = node)
head(edge)
### 出图
pnet <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = as.factor(wei_label)),
data = edge, size = 0.5) +
geom_point(aes(X1, X2,fill = group),pch = 21, size = 5,data = nodes) +
scale_colour_brewer(palette = "Set1") + theme_void()
pnet
# ggsave("./1.png",pnet,width = 10,height = 8)
# pnet <- pnet + geom_text_repel(aes(X1, X2,label=elements),size=4, data = plotcord)