JZXBK的个人博客分享 http://blog.sciencenet.cn/u/JZXBK

博文

微生物 物种丰度 网络图 R语言 Gephi network

已有 23801 次阅读 2020-6-25 18:12 |系统分类:科研笔记

       最近用使用R和Gephi学习了网络图的制作,借鉴了刘永鑫和刘尧的一些东西。不好意思尧哥,我又要抄作业了。原理什么的我讲不清楚主要写操作方法。想知道其中的一些原理的可以关注微信公众号"生信小白鱼"。首先,你需要一个微生物物种绝对丰度表。像这样:

image.png

之后你需要将这个相对丰度表转化为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格式文件

\"image.png\"/

#得到相关系数矩阵文件后接下来的可以使用gephi了

gephi:》文件》导入电子表格》genus_ccor.csv;点击“下一步”

\"image.png\"/

点击”下一步““完成'

\"image.png\"/

图的类型选”无向“;点击“确定”

\"image.png\"/

点击“数据资料”

\"image.png\"/

点击‘输出表格’分别输出'节点文件'和‘边文件’输出

\"image.png\"/

打开节点文件加一列属名

\"image.png\"/

#打开边文件,增加一列关于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’,然后把第一列删除

image.png

接下来就可以使用gephi可视化了需要输入两个文件‘节点.csv’和‘bian.csv’

先导入节点文件:文件》导入电子表格》节点.csv》下一步》完成》图形类型:无向》确定

再导入边文件:文件》导入电子表格》bian.csv》下一步》完成》图形类型:无向  Append existing workspace》确定

点击‘概览’出现一个网络雏形;点击‘选择一个布局’选Fruchterman Reingold;点击‘运行’那个黑线团稳定后点击‘停止’(布局的选择:采用OpenOrd强调不同组间的互补性,采用ForceAtlas、Yifan Hu和Frushterman-Reingold强调排序,采用Circular和Radial Axis强调地理位置,采用GeoLayout)

image.png

在软件左上角的外观一栏中,可以调节节点和边的大小、颜色及其标签的大小和颜色。位于软件页面的右下方,点击可计算统计量,数据统计中也会添加相应的统计值。点击‘节点’选择‘颜色’(长得像画板的那个图标)选择‘partition’选择‘modularity class’(需要先点击模块化才会有这个选项)点击‘应用’;点击‘大小’(三个圈套一起那个图标),点击'Ranking',选择‘度’。点击‘预览’换到预览画面,左边有一些呈现的参数可以调节。

image.png

最终我们得到这样一个模块化的网络图

image.png




https://wap.sciencenet.cn/blog-3419243-1239341.html

上一篇:生信 python 练习题 把每条FASTA序列分割成80个字母一行的序列
收藏 IP: 118.77.138.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (3 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-20 11:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部