Archives

扩增子数据分析之去噪:UNOISE

Error Cloud 概念模型:

Error Cloud

子图c刻画了 Error Cloud 概念,每个圆圈代表一个Unique序列,圈大小描述序列数,绿色圆圈表述真实生物学序列, 黄色圈描述了替换突变导致的变体,中间黑线为编辑距离(两条序列差异的个数, 大部分为d=1)。. 该图来自:Interpreting 16S metagenomic data without clustering to achieve sub-OTU resolution

先祭出两篇文献:

  1. The 97% threshold is much too low, especially for V4
  2. Exact sequence variants should replace operational taxonomic units in marker-gene data analysis

当前开始认为使用 100% 的相似度去度量生物学或者的更合适, 97%是一个在数据量不是很充足的条件下产生的结论,Usreach的UNOISEDADA2都采用了这样的概念。

既然使用100%那问题来了, 先前97%通过聚类可以掩盖一些噪音, 这些噪音包括:

  1. 测序错误;
  2. PCR错误(点错误和嵌合体);
  3. 菌株之间的变异;

现在使用100%的非冗余序列描述或者,首先要解决的问题就是鉴定哪些序列簇来自同一个生物学序列模板,这个就是我们说的去噪

去噪 在处理454 Life Science 数据时比较流行,比如:Denoiser、AmpliconNoise,但是需要454数据的flowgrams信息,不能直接用在Illumina数据上,现在介绍几种适用于Illumina的去噪工具。

1.UNOISE 算法介绍

整个UNOISE过程包含了两部分:(a).去除测序错误和PCR点错误,这个过程就是一个聚类操作,类似UCLUST (b).去除嵌合体。 最终生成的OTU被称之为ZOTUs(Zero-radius OTUs)

UNOISE算法其实很简单,首先使用fastq-uniques计算unique序列序列,并按照丰度排序,采用了两个度量指标:编辑距离 d 和 skew 值进行判别两个unique序列是否来自同一个模板。

d值就是编辑距离(Edit距离,Levehnstein distance),可通过Needleman–Wunsch算法对序列进行全局比对计算该值。 skew值:即 簇图心点C的丰度为c, 成员M序列的丰度为m, skew(M, C) = m/c

如果dskew值足够小,那么M就是C的一个具有d个点错误的变体, 属于同一生物学序列。

UNOISE β 可以通过下面公式计算,

UNOISE通过公式:

β(d)=1/2^(αd+1)

其中 α 为与设定参数,比如α=2,当值增大,β减小。

这样.

UNOISE一共就有两个参数: 一个是α, 另一个参数为γ, 即unique序列的最小丰度值。 默认设置为γ=4, 背后的逻辑是丰度值小的unique序列更倾向于随机错误,可通过相同参数判断原始序列(合并后双端序列)是否 可以归入特定ZOTU序列,未满足条件序列大部分都为嵌合体序列,(UNOISE算法第二步就是去除嵌合体,所以这类序列不能分类到ZOTUs)。

UNOISE

算法模型解释与挑战(来自 unoise_algo

左侧图中每个点都是unique序列,点的大小描述丰度信息,其中X为高丰度的unique序列。绿色的点为真实生物学序列,红色的点具有一个获得多个错误。

X的临近点(距离使用编辑距离度量,一般丰度比较低 )如果满足一定条件: 编辑距离d足够小, 丰度比skew值(X点的丰度值和临近点丰度值)足够小,那该临近点就被视和X同一个模板,该临近点就会合并到X, 并更新X的丰度信息。

右侧图显示了去噪后的扩增子序列(展示各种可能出现情况):

Xb皆被正确预测. e因为丰度比skew值不能满足条件,被认为是正确的扩增子序列. f的丰度和e相近,但是可以满足条件,被正确的去除。 g因丰度低被错误的去除。

嵌合体错误的去除算法实现策略和 uchime3_denovo 一样,因此去除嵌合体已经集成在unoise算法,因此在OTU流程中,不需要额外再做去除嵌合体步骤。

1.2. 命令行接口

当前版本 unoise3 接受参数不多,主要包括下面几个, 最新支持参数请参考 cmd_unoise3

-zotus: ZOTU输出文件;
-tabbedout:每天序列处理的过程,noisy序列或者嵌合体序列;
-sizeout:添加丰度信息;
-unoise_alpha:alpha 参数, 用于评估skew(M, C)
1.3 实例
usearch   -unoise3 derep.fa  -zotus zotus.fa -tabbedout unoise3.txt
1.4 建议

对于低丰度的真实生物学序列, 比如γ<4序列不会被聚类ZOTUs内,这样会导致会丢失一些序列信息,推荐的策略是将同一实验中所有 样本合在一起执行UNOISE,提高敏感度, 另外一个方案就是设置比较小γ,带来问题就是增加了一些假阳性。

本文材料为 BASE (Biostack Applied bioinformatic SEies ) 课程 Linux Command Line Tools for Life Scientists 材料, 版权归 上海逻捷信息科技有限公司 所有。

Last Update: 2017-10-30 10:07 AMFAQ: Should you use UPARSE or UNOISE?

Comments are closed.