生物信息学习的正确姿势

NGS系列文章包括NGS基础、在线绘图、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程)、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step))、批次效应处理等内容。

在扩增子培训过程中,总会被问到一个问题:抽平后的OTU表和计算相对丰度后的OTU表差别是什么?

抽平和计算相对丰度都是对OTU表进行标准化的方式,而抽平后的OTU表一般就会用于计算Alpha多样性,两者都可用于计算样本间的差异OTU。但是为什么不统一使用抽平后的OTU表或计算相对丰度的OTU表呢?

我们在扩增子培训中学到了两种以上的方式计算Alpha多样性,比如用vegan包去计算6Alpha多样性、usearch计算14种Alpha多样性等。下面我们可以尝试使用抽平后的OTU表(otutab_rare.txt)和计算相对丰度后的OTU表(otutab.freq.txt)分别来计算Alpha多样性。

方法一:vegan包计算Alpha多样性

suppressWarnings(suppressMessages(library(vegan)))
otu_rare=read.table("otutab_rare.txt", header=T, sep="\t", quote = "", row.names=1, comment.char="")
otu_freq=read.table("otutab.freq.txt", header=T, sep="\t", quote = "", row.names=1, comment.char="")
# 计算抽平后的OTU表的richness, chao1和ACE指数
estimateR_rare = t(estimateR(t(otu_rare)))[,c(1,2,4)]
head(estimateR_rare)##     S.obs  S.chao1    S.ACE
## KO1  2148 2442.130 2442.174
## KO2  2097 2376.372 2387.770
## KO3  1792 2169.230 2147.837
## KO4  1853 2174.955 2199.956
## KO5  1657 2061.449 2091.146
## KO6  1976 2303.736 2294.931# 计算相对丰度后的OTU表的richness, chao1和ACE指数
## 由于代码运行报错所以就注释掉了,报错内容在注释中进行展示
#estimateR_freq = t(estimateR(t(otu_freq)))[,c(1,2,4)]
## Error in estimateR.default(newX[, i], ...) : function accepts only integers (counts)

方法二:usearch计算Alpha多样性

# input rare table to calculate the alpha diversty
usearch -alpha_div otutab_rare.txt -output rare.alpha.txt## usearch v10.0.240_win32, 2.0Gb RAM (8.4Gb total), 8 cores
## (C) Copyright 2013-17 Robert C. Edgar, all rights reserved.
## http://drive5.com/usearch
##
## License: woodcorpse@163.com
##
## 00:00 4.5Mb     0.1% Reading otutab_rare.txt00:00 5.2Mb   100.0% Reading otutab_rare.txt# input otu rare table to calculate the alpha diversty
#usearch -alpha_div otutab.freq.txt -output freq.alpha.txt
## ---Fatal error---
##alphadiv.cpp(192) assert failed: m_TotalCount > 0

可以看到当输入数据是抽平后的OTU表(otutab_rare.txt)时,无论用哪种方法计算Alpha多样性都没有问题,而输入数据是计算相对丰度后的OTU表(otutab.freq.txt)时,代码纷纷报错。

由于usearch并未开源,所以我们主要来看veganestimateR函数的报错原因function accepts only integers (counts),表明该函数只接受整数,并且函数的文档也指明Function estimateR is based on abundances (counts) on single sample site,说明输入数据需要是丰度的counts值,但更具体的原因是什么呢?这就和Alpha多样性的不同指标的计算方式有关了。

estimateR函数计算了三种Alpha多样性指标,分别是RichnessChao1ACE

  • Richness是最好计算的Alpha多样性指数,其计算方式是

其中N就是该样本的物种数目;

  • Chao1是常用的Alpha多样性指数之一,其计算方式是

其中N是该样本的物种数目;S是该样本中丰度为1的物种数目;D是该样本中丰度为2的物种数目;

  • ACE是常用的Alpha多样性指数之一,其计算方式是

可以看到计算Chao1指数和ACE指数都依据丰度的counts值来计算,而输入计算了相对丰度的OTU表时就丢失了丰度的counts值信息,故而只能使用抽平后的OTU表。

那你还知道哪些基于丰度的counts值计算的Alpha多样性指标或者Alpha多样性其他容易被忽视又很重要的知识点呢?欢迎在评论区讨论。

视频演示Alpha多样性图形绘制

往期精品(点击图片直达文字对应教程)

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

为什么Alpha多样性的输入数据会是它?相关推荐

  1. Alpha多样性之箱线图绘制

    Alpha多样性 通常用Richness,Chao1,Shannon,Simpson,Dominance和Equitability等指数来评估样本的物种多样性. 所以这个节学习主要分两个部分: ## ...

  2. 基于USEARCH或QIIME绘制Alpha多样性稀释曲线(rarefraction curve)

    关于测试数据共享文件声明 百度云是一种非常方便的文件共享方式,但是有时会出现文件无法通过审核,导致大家访问失败?之前团队分享视频(百度管片最严,你懂的,上周六的纪录片将扩展名mkv修改为jpg才通过审 ...

  3. 211.Alpha多样性箱线图(样章,11图2视频)

    <微生物组数据分析与可视化实战>专著 众筹编写<微生物组数据分析与可视化实战>--成为宏基因组学百科全书的创始人(目录) 编者序:初衷.计划.要求.优势.目标和展望 本文为样章 ...

  4. Alpha多样性稀释曲线rarefraction curve还不会画吗?快看此文

    关于测试数据共享文件声明 百度云是一种非常方便的文件共享方式,但是有时会出现文件无法通过审核,导致大家访问失败?之前团队分享视频(百度管片最严,你懂的,上周六的纪录片将扩展名mkv修改为jpg才通过审 ...

  5. 扩增子统计绘图1箱线图:Alpha多样性

    本网对Markdown排版支持较差,对格式不满意的用户请跳转至 或"宏基因组"公众号阅读: 写在前面 优秀的作品都有三部分曲,如骇客帝国.教父.指环王等. 扩增子系列课程也分为三部 ...

  6. 扩增子图表解读1箱线图:Alpha多样性,老板再也不操心的我文献阅读了

    想了解更多宏基因组.16S文献阅读和分析相关文章,快关注"宏基因组"公众号,干货第一时间推送. 系统学习生物信息,快关注"生信宝典",那里有几千志同道合的小伙伴 ...

  7. 物种多样性学习 之Alpha多样性

    Alpha多样性(样本内多样性 Alpha Diversity)(一般指生境内物种的多样性程度,即不侧重于比较,而只是评估生境内的多样性程度.)是对某个样品中物种多样性的分析,包含样品中的物种多寡-- ...

  8. 自定义函数 | 批量计算微生物群落的alpha多样性

    批量计算微生物alpha多样性 批量生成多个矩阵 批量导入数据 定义计算微生物alpha多样指标的函数 批量导出excel    为什么要写这个函数?因为微生物群落的数据测序完后,通常都是以otu或者 ...

  9. Alpha多样性之箱线图解读

    迷惘的黑夜中找寻一盏灯 Alpha多样性之箱线图的解读 以下内容转载: 扩增子图表解读1箱线图:Alpha多样性,老板再也不操心的我文献阅读了 图中元素解释 Y轴标签Estimaated specie ...

最新文章

  1. RHCE课程-RH131Linux管理笔记五-Linux远程登陆telnet及ssh服务
  2. 关于range方法,如果你觉得python很简单就错了
  3. linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例
  4. mysql alter event_MYSQL ALTER EVENT介绍
  5. jQuery+CSS动态改变class
  6. Centos源码安装Python3
  7. php nginx错误,PHP/Nginx错误(Win)
  8. 题目 1885: 2017 分巧克力
  9. 升级Xcode8后需要添加的一些权限
  10. Python连接MySQL数据库
  11. 算法入门——数组,链表,选择排序
  12. 多核CPU,单核CPU,超线程技术,与多线程程序深入浅出
  13. 单基因gsea_零代码5分+的单基因综合分析
  14. Ubuntu20.04 锁屏快捷键无反应的解决方法
  15. 取消iphone 自动更新提示
  16. VSTO插件供WPS使用
  17. linux卸载字体库,在Ubuntu中删除不必要的字体并安装MS核心字体 | MOS86
  18. 君正JZ4775芯片处理器介绍
  19. STM32 10进制转16进制,16进制转10进制 超简单
  20. 图像分割 FCN(1):FCN网络讲解

热门文章

  1. 【Java】不要直接使用引用未判空的对象
  2. 【计算机网络】Quiz集合
  3. Kotlin 1.2 新特性
  4. Vue2.0全家桶实现一个买买买提醒应用
  5. Linux基础知识一
  6. Cgroup 好文集合
  7. postfix过滤器名称不一致导致postfix/qmg:warning: connect to transport xxxx: No such file or directory...
  8. 结合MSDN理解windows service 服务安装的三个类。
  9. 为什么要使用Base64?
  10. 企业正确进行数字化转型的7个秘诀