前言

在进行微生物多样性分析时,大家一定会做α,β多样性分析。通俗来讲,α多样性就是样本内的物种多样性。β多样性是指在地区尺度上,物种组成沿着某个梯度方向从一个群落到另一个群落的变化率。即沿着某一环境梯度,物种替代的速率、物种周转率等。

排序的过程是将样品或微生物物种排列在一定的空间, 使得排序轴能够反映一定的生态梯度 这些排序方法又可以分成间接梯度排序(indirect gradient analysis)和直接梯度排序(direct gradient analysis)。间接梯度排序又叫非约束性排序;寻求潜在的或在间接的环境梯度来解释物种数据的变化包括PCA,PCoA,NDMS,直接排序又叫约束性排序;它是指在特定的梯度上(环境轴) 上探讨物种的变化情况;方法包括 RDA, CCA, db-RDA。排序分析(Ordination analysis)。排序(ordination)的过程就是在一个可视化的低维空间或平面重新排列这些样本,使得样本之间的距离最大程度地反映出平面散点图内样本之间的关系信息。

db-RDA 介绍

distance-based redundancy analysis (db-RDA) 是目前在微生物领域应用的最为广泛的环境因子分析,该分析方法内置在R中的vegan包中。相信大家一定都知道vegan包,该R包是进行生态学(包括微生物多样性分析)研究的必备神器!vegan包中提供了所以基本排序分析的方法,可以说是一包在手搞定所有! 关于vegan包的详细介绍,请大家查看vegan包的官方文档。本文还会给大家介绍另一款vegan的开挂版本,ggvegan的介绍与使用,ggvegan相当于在vegan软件包中内置了ggplot2, 绘制的图片比用vegan直接绘图更好看!

微生物环境因子分析

要进行微生物环境因子分析,我们需要两个文件,一个是微生物多样性的OTU 表格,另一个就是你所有样品的环境因子数据。 比如,你进行土壤微生物研究,这时候你就需要知道你所测土壤的C,N,P,K等化学元素含量以及不同样地的气候信息等等,总之,在分析之前可以多准备些环境因子数据,后期我们还可以对这些环境因子进行共线性,以及环境因子与数据拟合优良性判断。

数据均一化

首先看看我们准备的OTU表格以及环境因子数据结构

(图1):OTU表格

(图2):环境因子数据

读取完数据之后,我们要把OTU的横轴和纵轴调换位置,然后把OTU表格也要进行hellinger转化,使数据均一性更好。并把环境因子进行log转化,以减少同一种环境因子之间本身数值大小造成的影响。

RDA和CCA模型筛选

数据都进行均一化之后,我们要进行RDA和CCA的模型筛选。先用species-sample资料做DCA分析看分析结果中Lengths of gradient的第一轴中的Axis lengths大小,如果大于4.0,就应该选CCA,如果在3.0-4.0之间,选RDA和CCA均可,如果小于3.0,RDA的结果要好于CCA。本例中,我们数据的Axis lengths 大小为0.63859,所有我们应该选择RDA进行分析!

(图3)

差膨胀因子分析

在筛选完RDA和CCA分析后,我们需要利用方差膨胀因子分析,对所有环境因子进行共线性分析。我们要依次删掉最大的变量,也就是删除掉共线性的环境因子,直到所有的变量都小于10。

检测最低AIC值

最后我们要用step模型检测最低AIC值,在这一步中该模型会自动筛选出最优的环境因子。当“none”位于最顶端时意味着改模型筛选结束,位于none值上方的环境因子即为与OTU拟合最好的环境因子。本例中,只有Mg这一个环境因子与我们的OTU拟合的最好。

ANOVA 显著性分析并出图

在进行完以上的数据筛选之后,我们可以用筛选的结果重新进行一次环境因子与OTU的线性回归分析,这样我们就拿到了最终的计算结果,并且用ANOVA进行显著性检验,并且通过该分析我们还可以看到所筛选的环境因子的整体贡献率,以及每个环境因子的单独贡献率。

本例中我们使用了内置ggplot2的vegan—ggvegan进行的分析。ggvegan的出图结果可以用内置的ggplot2进行优化,使你的图更为美观,其具体用法与ggplot2的图层叠加方式类似。详情大家可以参考ggvegan的官网

文中所有测试数据都已放在百度云盘中,请后台回复:“db-RDA”获取。

# 首先要安装devtools包,仅需安装一次
install.packages("devtools")
# 加载devtools包
library(devtools)
# 下载ggvegan包
devtools::install_github("gavinsimpson/ggvegan")library(ggvegan)
otu.tab <- read.csv("otutab.txt", row.names = 1, header=T, sep="\t")
env.data <- read.csv("new_meta.txt", row.names = 1, fill = T, header=T, sep="\t")
#transform data
otu <- t(otu.tab)
#data normolization (Legendre and Gallagher,2001)
##by log
env.data.log <- log1p(env.data)##
##delete NA
env <- na.omit(env.data.log)###hellinger transform
otu.hell <- decostand(otu, "hellinger")#DCA analysis
sel <- decorana(otu.hell)
selotu.tab.0 <- rda(otu.hell ~ 1, env) #no variables
#Axis 第一项大于四应该用CCA分析
otu.tab.1<- rda(otu.hell ~ ., env)
#我们在筛选完RDA和CCA分析后,我们需要对所有环境因子进行共线性分析,利用方差膨胀因子分析
vif.cca(otu.tab.1)
#删除掉共线性的环境因子,删掉最大的变量,直到所有的变量都小于10
otu.tab.1 <- rda(otu.hell ~ N+P+K+Ca+Mg+pH+Al+Fe+Mn+Zn+Mo, env.data.log)vif.cca(otu.tab.1)
#进一步筛选
otu.tab.1 <- rda(otu.hell ~ N+P+K+Mg+pH+Al+Fe+Mn+Zn+Mo, env.data.log)
vif.cca(otu.tab.1)
#test again
otu.tab.1 <- rda(otu.hell ~ N+P+K+Mg+pH+Fe+Mn+Zn+Mo, env.data.log)#方差膨胀因子分析,目前所有变量都已经小于10
vif.cca(otu.tab.1)
##用step模型检测最低AIC值
mod.u <- step(otu.tab.0, scope = formula(otu.tab.1), test = "perm")# "perm"增加P值等参数
mod.d <- step(otu.tab.0, scope = (list(lower = formula(otu.tab.0), upper = formula(otu.tab.1))))
mod.d
##本处筛选的结果,找到一个Mg环境因子适合模型构建,为了下一步画图,我们
#保留所有非共线性的环境因子
#choose variables for best model and rda analysis again#
(otu.rda.f <- rda(otu.hell ~ N+P+K+Mg+pH+Fe+Mn+Zn+Mo, env))anova(otu.rda.f)
anova(otu.rda.f, by = "term")
anova(otu.rda.f, by = "axis")
#计算db-rda
## 用ggvegan绘图
p<- autoplot(otu.rda.f, arrows = TRUE,axes = c(1, 2), geom = "text", layers = c( "species","sites", "biplot", "centroids"), legend.position = "right", title = "db-RDA")
## 添加图层
p + theme_bw()+theme(panel.grid=element_blank())

Reference

  1. Rognes, T., Flouri, T., Nichols, B., Quince, C., & Mahé, F. (2016). VSEARCH: a versatile open source tool for metagenomics. PeerJ, 4, e2584.

  2. Edgar, R.C. (2013) UPARSE: Highly accurate OTU sequences from microbial amplicon reads, Nature Methods [Pubmed:23955772,  dx.doi.org/10.1038/nmeth.2604].

  3. UNOISE2: Improved error-correction for Illumina 16S and ITS amplicon read. bioRxiv, 2016

猜你喜欢

  • 热文:1高分文章 2不可或缺的人 3图表规范

  • 一文读懂:1微生物组 2寄生虫益处 3进化树

  • 必备技能:1提问 2搜索  3Endnote

  • 文献阅读 1热心肠 2SemanticScholar 3geenmedical

  • 扩增子分析:1图表解读 2分析流程 3统计绘图  4功能预测

  • 科研经验:1云笔记  2云协作 3公众号

  • 系列教程:1Biostar 2微生物组  3宏基因组

  • 生物科普 1肠道细菌 2人体上的生命 3生命大跃进  4细胞的暗战 5人体奥秘

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外150+ PI,1300+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。

学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

点击阅读原文,跳转最新文章目录阅读

用db-RDA进行微生物环境因子分析-“ggvegan“介绍相关推荐

  1. 用RDA进行微生物环境因子分析

    本文首先发布于"宏基因组"公众号原创. 作者:舟行天下 编辑:metagenome 前言 在进行微生物多样性分析时,大家一定会做α,Β多样性分析.α多样品通俗来讲就是样本内的物种多 ...

  2. 微生物环境因子分析(RDA/db-RDA)-ggvegan包

    前言 在进行微生物多样性分析时,大家一定会做α,β多样性分析.通俗来讲,α多样性就是样本内的物种多样性.β多样性是指在地区尺度上,物种组成沿着某个梯度方向从一个群落到另一个群落的变化率.即沿着某一环境 ...

  3. Hummer TimeSeries DB (蜂鸟时序数据库)技术介绍

    转载自:http://blog.csdn.net/kanghua/article/details/44650831 Hummer TimeSeries DB (蜂鸟时序数据库)技术介绍 1. 背景介绍 ...

  4. Elasticsearch环境搭建和介绍(Windows)

    一.Elasticsearch介绍和安装 1.1 介绍  Elastic Elastic官网:https://www.elastic.co/cn/ Elastic有一条完整的产品线:Elasticse ...

  5. 软硬件协同设计的系统级开发环境~BPS软件介绍

    软硬件协同设计的系统级开发环境~BPS软件介绍 0 赞 发表于 2010/7/19 14:38:11 阅读(32881) 评论(0) 1)BPS简介: BEEcube Platform Studio( ...

  6. 广东机电职业技术学校计算机怎么样,公办|【广东机电职业技术学院】录取分数/学校环境、宿舍介绍...

    原标题:公办|[广东机电职业技术学院]录取分数/学校环境.宿舍介绍 择校菌推出[走进大学序列专题推文]-[广东机电职业技术学院],文章内容包含:学校的性质.学费.宿舍费.招办电话.学考录取分数.高考录 ...

  7. Serverless 开发,基于 IoT物联网 + 表格存储DB + DataV 搭建实时环境监控大屏

    今天给大家带来基于阿里云 IoT 物联网平台 + Tablestore 表格存储数据库 + DataV大屏 三大云产品组合搭建实时环境监控大屏的开发实战. 少啰嗦,先看效果. 部署后效果    1.技 ...

  8. Libgdx环境搭建及介绍

    Libgdx简单介绍: libgdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成.ibgdx兼容大多数微机平台(标准JavaSE实现,能执行在Mac.Linux.Win ...

  9. Android(一)——Eclipse+ADT 和 Android Studio 开发环境搭建及介绍

    文章目录 1. 前言介绍 1.1 JDK安装与配置 1.2 IDE开发APP流程 1.3 相关术语的解析 1.4 ADB相关指令 1.5 APP程序打包与安装流程 2. 开发环境搭建 2.1 Ecli ...

最新文章

  1. 产品方法论之:菜鸟做加法,高手做减法!
  2. 本文主要总结关于mysql的优化(将会持续更新)
  3. .NET生态现状:超一半 .NET开发者使用C# 8、.NET Framework使用量减少
  4. eclipse中junit_在Eclipse中有效使用JUnit
  5. word 公式编号 右侧对齐_写论文要求公式居中编号右对齐的方法
  6. 简单的php代理 Simple PHP Proxy
  7. C++ : 自写两个字符串分割函数(含测试程序)
  8. python安装后没有命令_Python的下载安装
  9. 11. 王道考研-二叉树的实现
  10. spring-boot报错循环注入报错:has been injected into other beans
  11. 【React Native 安卓开发】----侧边栏的实现DrawerLayoutAndroid以及第三方框架react-native-side-menu的使用【第六篇】
  12. 《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布...
  13. C# 通过api 下载sharepoint中的文件
  14. Ubuntu安装腾讯软件
  15. iOS 打包流程教程
  16. 双甜点预测的几点总结:
  17. RNA_seq表达分析
  18. Caffe学习笔记(二):Caffe前传与反传、损失函数、调优
  19. 编写ATL工程实现ActiveX控件调用cryptoAPI接口(三)------------AES对称加密与解密
  20. Java中List集合去除重复数据的六种方法

热门文章

  1. 今晚,咱们就聊聊堆排序吧!
  2. 规模化敏捷中的“三要”和“三不要”
  3. 新趋势:工具赋能企业数字化转型,驱动组织升级!
  4. 如何克服实施OKR的阻力?
  5. 拥抱开源 加入分享 贡献小力量
  6. springboot webjar使用
  7. 等比例缩放html5页面,css中如何做到容器按比例缩放
  8. Depth by Poking:从自监督抓取学习深度估计
  9. 精选CVPR开源项目学习资源汇总
  10. 总结|深度学习实现缺陷检测