||
综合利用igraph-Gephi-Cytoscape进行微生物群落的共现网络分析
第一步:利用R软件中igraph包进行网络构建
https://blog.csdn.net/woodcorpse/article/details/78737867
# 安装需要的包,默认不安装,没安装过的请取消如下注释
install.packages("igraph")
install.packages("psych")
install.packages("Hmisc")
# 加载包
library(igraph)
library(psych)
library(Hmisc)
# 读取otu-sample矩阵,行为sample,列为otu
otu = read.table("FH100.txt", head=T, row.names=1)
# 输入文件FH100.txt格式
# 计算少量样品OTU间两两相关系数矩阵
occor = corr.test(otu,use="pairwise",method="spearman",adjust="fdr",alpha=.05)
occor.r = occor$r # 取相关性矩阵R值
occor.p = occor$p# 取相关性矩阵p值
# 计算大量OTU间两两相关系数矩阵
#occor<-rcorr(as.matrix(otu),type = "spearman")
#occor.r = occor$r # 取相关性矩阵r值
#occor.p = occor$P # 取相关性矩阵P值, P大写!
#Multiple testing correction using Benjamini-Hochberg standard false discovery rate correction ("FDR-BH")
#occor.p<-p.adjust(occor.p, method="BH")
# 确定物种间存在相互作用关系的阈值,将相关性R矩阵内不符合的数据转换为0
occor.r[occor.p>0.05|abs(occor.r)<0.6] = 0
#保存相关性结果
write.csv(occor.r," FH100_r.occor.0.05.0.6.csv")
write.csv(occor.p," FH100_p.occor.0.05.0.6.csv")
# 构建igraph对象
igraph = graph_from_adjacency_matrix (occor.r, mode="undirected", weighted=TRUE, diag=FALSE)
igraph
# 将igraph weight属性赋值到igraph.weight
igraph.weight = E(igraph)$weight
# 简单出图
# 设定随机种子数,后续出图都从同一随机种子数出发,保证前后出图形状相对应
set.seed(123)
plot(igraph, main="Co-occurrence network",vertex.frame.color=NA, vertex.label=NA, edge.width=1, vertex.size=5, edge.lty=1, edge.curved=TRUE, margin=c(0,0,0,0))
#统计正相关和负相关
sum(igraph.weight>0)# number of positive correlation
sum(igraph.weight<0)# number of negative correlation
#选择GraphML格式导出:
write_graph(igraph, " FH100.graphml","graphml")
#CK随机网络的构建
g <- erdos.renyi.game(100, 359, "gnm") #构建与100个点359个边的随机网络
#计算随机生成10000次指定网络节点数与网络边数随机网络的Average path length(APL)平均值和标准差
apl<-mean(replicate(10000, average.path.length(erdos.renyi.game(100, 359, "gnm"))))
apl
apl.sd<-sd(replicate(10000, average.path.length(erdos.renyi.game(100, 359, "gnm"))))
apl.sd
#计算随机生成10000次指定网络节点数与网络边数随机网络的聚集系数(Clustering coefficient)平均值和标准差
cc<-mean(replicate(10000, transitivity(erdos.renyi.game(100, 359, "gnm"))))
cc
cc.sd<-sd(replicate(10000, transitivity(erdos.renyi.game(100, 359, "gnm"))))
cc.sd
#计算随机生成10000次指定网络节点数与网络边数随机网络的modularity(M)平均值和标准差
f <- function() {
g <- erdos.renyi.game(100, 359, "gnm")
fc <- cluster_fast_greedy(g, weights=NULL)
modularity(g, membership(fc))
}
mo<-mean(replicate(10000, f()))
mo
mo.sd<-sd(replicate(10000, f()))
mo.sd
第二步:利用Gephi软件进行可视化
将生成的"FH100.graphml"网络,导入Gephi,在数据资料界面,分别导出点文件和边文件,进行编辑,如下
点文件:
边文件:
将编辑后的点文件和边文件重新导入Gephi文件,在预览界面,选择布局(一般选择Fruchterman Reingold),设置节点大小(以丰度Abundance或度Degree为指标)和颜色(以门Phylum或模块Modularity为指标),设置边的颜色(正负PN),并点击应用,在界面右侧的统计中点击运行;
在预览界面设置边的颜色(选择original)、粗细(调整Max. rescaled weight),显示标签等,更换参数需时时刷新,并导出图片。
第三步:利用Cytoscape软件进行Z、P值、度分布等计算
http://blog.sciencenet.cn/blog-3334560-1174680.html
http://www.iasi.cnr.it/~dsantoni/GIANT/giant.html
Cumbo et al. (2014) GIANT: A Cytoscape Plugin for Modular Networks. Plos One 9 e105001
Jiang et al. (2016) Crop rotations alter bacterial and fungal diversity in paddy soils across East Asia. Soil Biology & Biochemistry 95 250-261.
整理好网络TXT文件:
打开Cytoscape,File-Import-Network-File...,选择网络TXT文件,设置source node和target node:
然后打开Apps -- GIANT对话框,导入当前网络(1),选择构建Cluster(2),利用MCL反复构建Cluster(3),计算(4),关闭MCL窗口后,计算(5)。
结果如下图所示,可将结果导出
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-1 21:00
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社