|
最近用使用R和Gephi学习了网络图的制作,借鉴了刘永鑫和刘尧的一些东西。不好意思尧哥,我又要抄作业了。原理什么的我讲不清楚主要写操作方法。想知道其中的一些原理的可以关注微信公众号"生信小白鱼"。首先,你需要一个微生物物种绝对丰度表。像这样:
之后你需要将这个相对丰度表转化为otu之间的相关系数矩阵,
#安装和载入程序包
install.packages('Hmisc')
library(Hmisc)
#如果是绝对丰度表可以可以依据如下方法转化为相对丰度表(蓝色部分,可选内容)
otu<-read.delim('otu.txt',sep='\t',row.names=1)
otu<-t(otu)
otu<-otu/rowSums(otu)
otu<-t(otu)
write.table(otu,file='otu1.txt',sep='\t')
#读取属水平的物种丰度表,
genus <- read.delim('otu.txt', row.names = 1)
#接下来就是对相对丰度表的一些数据的筛选(蓝色部分,可选内容)
#过滤一些低丰度或低频的类群
genus <- genus[which(rowSums(genus) >= 0.005), ] #只保留相对丰度总和高于 0.005 的属
#例如只保留在 5 个及以上样本中出现的属
genus1 <- genus
genus1[genus1>0] <- 1
genus <- genus[which(rowSums(genus1) >= 5), ]
#计算两属之间是否存在丰度变化的相关性,以 spearman 相关系数为例
genus_corr <- rcorr(t(genus), type = 'spearman')
occor_r = genus_corr$r # 取相关性矩阵R值
occor_p = genus_corr$p # 取相关性矩阵p值
# p 值校正,这里使用 BH 法校正 p 值
p <- p.adjust(occor_p, method = 'BH')
#将相关系数低于0.6和p值大于0.05的值赋值为0
occor.r[occor.p>0.05|abs(occor.r)<0.6] = 0
diag(occor.r) <- 0 #将相关矩阵中对角线中的值(代表了自相关)转为 0
#如此便得到了邻接矩阵格式的网络文件(微生物属的相关系数矩阵)
write.csv(occor.r,file='genus_ccor.csv')#输出csv格式文件
#得到相关系数矩阵文件后接下来的可以使用gephi了
gephi:》文件》导入电子表格》genus_ccor.csv;点击“下一步”
点击”下一步““完成'
图的类型选”无向“;点击“确定”
点击“数据资料”
点击‘输出表格’分别输出'节点文件'和‘边文件’输出
打开节点文件加一列属名
#打开边文件,增加一列关于weight正负的,手动改太麻烦了,可以考虑通过R操作,输入R前给边文件加一列number然后执行如下代码
bian<-read.csv('边.csv',row.names=1)
bian[which(bian$Weight > 0),'pn'] <- 'p'
bian[which(bian$Weight < 0),'pn'] <- 'n'
head(bian)
write.csv(bian,file='bian.csv')
#这样就得到了一个对weight正负标记的文件‘bian.csv’,然后把第一列删除
接下来就可以使用gephi可视化了需要输入两个文件‘节点.csv’和‘bian.csv’
先导入节点文件:文件》导入电子表格》节点.csv》下一步》完成》图形类型:无向》确定
再导入边文件:文件》导入电子表格》bian.csv》下一步》完成》图形类型:无向 Append existing workspace》确定
点击‘概览’出现一个网络雏形;点击‘选择一个布局’选Fruchterman Reingold;点击‘运行’那个黑线团稳定后点击‘停止’(布局的选择:采用OpenOrd强调不同组间的互补性,采用ForceAtlas、Yifan Hu和Frushterman-Reingold强调排序,采用Circular和Radial Axis强调地理位置,采用GeoLayout)
在软件左上角的外观一栏中,可以调节节点和边的大小、颜色及其标签的大小和颜色。位于软件页面的右下方,点击可计算统计量,数据统计中也会添加相应的统计值。点击‘节点’选择‘颜色’(长得像画板的那个图标)选择‘partition’选择‘modularity class’(需要先点击模块化才会有这个选项)点击‘应用’;点击‘大小’(三个圈套一起那个图标),点击'Ranking',选择‘度’。点击‘预览’换到预览画面,左边有一些呈现的参数可以调节。
最终我们得到这样一个模块化的网络图
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-22 20:08
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社