基于R语言的微生物群落组成多样性分析——共线性网络分析

    之前有一位粉丝后台留言说能不能出一期有关于共线性网络的文章,说实话,小编之前只在文献中看到过这类图,对于其原理也是迷迷糊糊。看了好多别人写的文章,根据大佬们的思路,我也大致整理了一些代码,希望能对大家有所启发。话不多说,直接上正文吧!

1、前期准备

rm(list=ls())#clear Global Environment
setwd('D:\\桌面\\共线性网络分析')#设置工作路径
#安装包
install.packages('Hmisc')
install.packages("igraph")
#加载包
library(Hmisc)
library(igraph)

2、加载、预处理数据

1)加载数据
df1 <- read.table(file="otu.txt",sep="\t",header=T,check.names=FALSE,row.names = 1)
head(df1)
image.png
2)求相对丰度
df2 <- apply(df1,2,function(x) x/sum(x))
3)过滤低丰度OTU
df3 <- df2[which(rowSums(df2) >= 0.01), ]#将丰度小于0.01的舍弃

3、数据计算

1)计算OTU间的相关性
df_corr <- rcorr(t(df3), type = 'spearman')#这里我们计算spearman相关系数
2)提取R值、P值并校正P值
df_corr_r = df_corr$r
df_corr_p = df_corr$P#注意,这里P大写
# 使用BH法校正p值
df_p <- p.adjust(df_corr_p, method = 'BH')
3)确定物种间存在相互作用关系的阈值,将相关性R矩阵内不符合的数据转换为0
df_corr_r[df_corr_p>0.05|abs(df_corr_r)<0.6] = 0
4)构建igraph对象
df_igraph <- graph_from_adjacency_matrix(df_corr_r,mode="undirected",weighted=TRUE,diag=FALSE)
5)提取权重
df_weight = E(df_igraph)$weight

4、简单绘图

# 设定随机种子数,后续出图都从同一随机种子数出发,保证前后出图形状相对应
set.seed(12)
plot(df_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))
image.png

5、个性化绘图

1)相关性颜色设置
# 如果构建网络时,weighted=NULL,此步骤不能统计
sum(df_weight>0)
sum(df_weight<0)
# 通过V()和E()对节点和边的属性进行访问
# 设置线的颜色,正相关为红色,负相关为蓝色
df_edge_color = ifelse(df_weight>0, "red",ifelse(df_weight<0, "blue","grey"))
E(df_igraph)$color = as.character(df_edge_color)
# 设定边的宽度,这里我们将相关系数与边宽进行关联
E(df_igraph)$width = abs(df_weight)*2.5
2)加入OTU丰度信息,使得节点大小代表丰度
data <- rowSums(df1)
data1=as.data.frame(data)
df_igraph_size = data1[V(df_igraph)$name,] # 筛选对应OTU属性
df_igraph_size2 = log10(df_igraph_size)#数据进行转换
V(df_igraph)$size = df_igraph_size2
3)节点颜色设置成OTU代表的门
data2=read.table(file="phylum_otu.txt",sep="\t",header=T,
           check.names=FALSE,row.names = 1)
df_igraph_col = data2[V(df_igraph)$name,]
df_igraph_col2=as.factor(df_igraph_col)
levels(df_igraph_col2)
color=c("green","brown","pink")
levels(df_igraph_col2) = color # 直接修改levles可以使得值全部对应替换
V(df_igraph)$color = as.character(df_igraph_col2)
4)绘图
set.seed(12)
plot(df_igraph,main="Co-occurrence network",vertex.frame.color=NA,
     edge.lty=1,edge.curved=TRUE,margin=c(0,0,0,0),
     vertex.label.cex=.7,vertex.label.dist=1,#标签大小
     layout=layout_in_circle#控制样式,具体见官方文档
     )
image.png
5)添加图例
legend(x=-1.7,y=-0.7,levels(as.factor(df_igraph_col)),pch=21,col="black",pt.bg=color)

image.png

注:图中节点间的连线颜色代表OTU间的相关性,红色为正相关,蓝色为负相关,粗细代表相关性大小;节点大小代表丰度大小;节点颜色代表OTU的物种信息(门水平)

参考:

1)https://blog.csdn.net/woodcorpse/article/details/78737867
2)https://igraph.org/r/doc/layout_as_bipartite.html

源码及数据在微信公众号后台回复\color{red}{“共线性网络图”}获取!!!

看不懂代码的,这里推荐几个可以在线做网络图的网站:
1)图图云(http://www.cloudtutu.com/
2)ChiPot(https://www.chiplot.online/
3)派森诺基因云(https://www.genescloud.cn/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容