ANCOM:找出微生物群落中的差异物种
ANCOM(Analysis of composition of microbiomes)是一种比较微生物数据中物种在组间显著性差异的分析方法,结果和LEfSe类似。
ANCOM发表于2015年,目前已经被引用了246次。
ANCOM可解析数据的基本结构,可用于比较两个或多个种群的微生物群落组成。其分析不依赖于数据的分布假设,可以在线性模型框架中实现,并消除了使用相对丰度带来的偏差,从而能够有效降低结果的假阳性。ANCOM可很好地比较具有数千个分类单元的样本。
作者将ANCOM的性能与t检验和零膨胀高斯方法(Zero Inflated Gaussian,ZIG)进行了比较,ZIG方法用于推断两个或多个种群的平均分类群丰度。ANCOM在提高统计能力的同时,可将FDR控制在理想的水平。而t检验和ZIG则会使得FDR膨胀,在某些情况下t检验的膨胀可高达68%,ZIG的膨胀可高达60%。作者还使用人类肠道中两个公开的微生物数据集验证了ANCOM的性能,证明了它的普遍适用性。
以OTUs为基础比较样本中两个或多个种群之间的微生物组成,并不等于比较生态系统中对应分类单元的丰度。举个例子,假设从两个不同的森林捕获的100只动物中随机抽取了两个样本,其中分别有20只和30只熊。因此,我们有理由估计这两个森林中分别有20%和30%的动物是熊。但我们可能不会得出第二个森林里的熊比第一个多的结论。
如果第一个森林里有10000只动物,第二个森林里有500只动物,那么根据上面观察到的熊的比例,第一个森林里估计有2000只熊,而第二个森林里只有150只。因此从样本中OTUs的丰度来推断生态系统的总丰度是不合适的。
然而,利用一个类群在样本中的相对丰度来推断该类群在生态系统中的相对丰度是合理的。假设样本是随机采集的,那么有理由假设样本中一个分类单元的期望相对丰度与它在生态系统中的期望相对丰度是相同的。因此,在样本水平上比较预期的相对丰度近似等于在生态系统水平上进行比较。
另外,由于所有物种的相对丰度和为1,标准的统计方法如皮尔逊相关系数、t检验、方差分析、线性回归分析等方法不能直接用于分析微生物群落相对丰度数据。例如,考虑极端情况,一个样本中只有两个物种。由于相对丰度的和是1,因此他们的皮尔逊相关系数必为负数。推广到复杂群落中,至少一对物种的皮尔逊相关系数为负。
因此,不可能区分真正的负相关关系和由统计方法引起的负相关关系,这可能导致对分类单元对之间关系的错误结论。且这些标准方法并没有假设数据中每列和为1这样的限制。
此外,微生物的数据也不适合使用基于多项式或狄利克雷-多项式分布(Dirichlet-multinomial distribution)的方法,因为这种分布要求所有OTU之间都是负相关的。这明显与实际不符。
基于上述背景,作者提出了一种基于成分对数比(compositional log-ratios)的新方ANCOM,用于检测微生物平均分类群丰度的差异。该方法计算简单,可以处理数千个分类单元。
由于需要做对数转换,因此OTU中为0的地方会随机的增加一个很小的正数,使得对数有意义。
ANCOM的结果用W值来衡量组间差异显著性。W值越高代表该物种在组间的差异显著性越高。
ANCOM目前可以在QIIME2种实现。命令详见QIIME2中文帮助文档:
https://forum.qiime2.org/t/qiime2-chinese-manual/838
英文版更新,目前是19.4版。
https://docs.qiime2.org/2019.4/tutorials/moving-pictures/
请尽量访问https://docs.qiime2.org获取最新版,7月份还有发布更新
另外,在R中也找到一个可以做ANCOM的包LRTT。
格式为
ANCOM.Sim(p, seed, N, dif)
p: OTU numbers
seed: random seeds
N:sample size
dif: the differential OTU you can set
输入只能是一个数字,所以感觉没啥用。
宏基因组注:
软件包位于Github上面 https://github.com/ZRChao/LRTT
# Install the development version from GitHub
devtools::install_github("ZRChao/LRTT")
我没安装成功,可能是网络的问题,有需要的朋友可以试试,也没花时间再试。
完
欢迎大家扫描下方二维码关注我的公众号,若有问题也可直接加我的微信:水岸风堤(lii32703)。请备注姓名及单位,否则自动忽略。
欢迎分享,转载请联系我。
猜你喜欢
10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature Cell专刊 肠道指挥大脑
系列教程:微生物组入门 Biostar 微生物组 宏基因组
专业技能:学术图表 高分文章 生信宝典 不可或缺的人
一文读懂:宏基因组 寄生虫益处 进化树
必备技能:提问 搜索 Endnote
文献阅读 热心肠 SemanticScholar Geenmedical
扩增子分析:图表解读 分析流程 统计绘图
16S功能预测 PICRUSt FAPROTAX Bugbase Tax4Fun
在线工具:16S预测培养基 生信绘图
科研经验:云笔记 云协作 公众号
编程模板: Shell R Perl
生物科普: 肠道细菌 人体上的生命 生命大跃进 细胞暗战 人体奥秘
写在后面
为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。PI请明示身份,另有海内外微生物相关PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。
学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”
ANCOM:找出微生物群落中的差异物种相关推荐
- 判断字符串s1中是否包含s2字符串c语言,C语言:找出s1中是否存在字符串s2(C language: find out if string s2 exists in s1)...
C语言:找出s1中是否存在字符串s2(C language: find out if string s2 exists in s1) 是否有任何C函数来检查s1中是否存在字符串s2? s1: &quo ...
- java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...
方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...
- 找出数组中重复的数字---多思路
问题:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...
- 如何找出R中加载的软件包版本?
本文翻译自:How to find out which package version is loaded in R? I am in a process of figuring out how to ...
- 找出重复的数java_剑指offer:1.找出数组中重复的数(java版)
数组中重复的数: 题目:找出数组中重复的数, 题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的. 也不知道每个数字重复几次.请找 ...
- 剑指offer 面试题三 找出数组中重复的数字
1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...
- 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...
/** * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 能够假定数组元素原先是按从小到大的顺序排列的. */ /*** 思路:数组被 ...
- 找出数组中出现次数超过一半的数
算法--找出数组中出现次数超过一半的数 每当我看到经典的算法题,就怀念高中,感觉很多算法题就是高中的题目,谁叫哥只读了个专科,高数基本相当没学. 有空要看看高数啊,想当年数学那是相 ...
- 巧妙算法:找出数组中消息的数字
题目: 在一个长度为n的数组里的所有数字都在0~n-1的范围内.数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字.例如,如果输入长度为7, ...
最新文章
- 第39次《中国互联网络发展状况统计报告》发布
- H3C SecPath防火墙GRE+IPSEC+OSPF典型配置举例
- (9) ab测试工具安装与使用
- 把人工智能、机器学习、深度学习串一串,串一个同心圆
- php读取js为文本,PHP / JS文本差异
- Memory Management in AIR / AS3 / Flash Garbage Collection.
- c语言 软件中断 gcc,不同编译器中断函数的表示方法
- 【PHP面向对象(OOP)编程入门教程】10.__set(),__get(),__isset(),__unset()四个方法的应用...
- java 工作流引擎调研总结
- 超简洁好看的个人网站导航页源码
- matlab细胞计数并求目标区域求面积
- 音乐播放器 android 回放增益,每日佳软:安卓强悍音乐播放器之PowerAMP
- Spring系列教程六: Spring基于注解的Ioc以及Ioc案例
- 我对计算机专业的认识及期望
- C++基于QT的模仿宝石迷阵游戏源码
- vue实现Cnode具体有axios分页请求 | filters(过滤器)解决时间转秒前 分钟前 小时前 月前 年前
- 串口调试工具xshell的配置
- 微信小程序:最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益
- 电脑桌面图标消失变白格子?附一键修复脚本
- 计算机毕业设计Java离散制造业产品销售管理系统(源码+mysql数据库+系统+lw文档)