单分子测序reads(PB)的混合纠错和denovo组装

我们广泛使用的PBcR的原始文章就是这一篇

原文链接:Hybrid error correction and de novo assembly of single-molecule sequencing reads

简介:PBcR里面有一种自纠算法(PacBioToCA),纠错的核心本质就是多重序列比对,为了加快比对速度使用了MHAP算法(MinHash)。三代的错误分布不是完全随机的,不要以为错误是均匀分布的!!!

摘要:


PB技术可以产生极长的reads,可以显著提高基因组和转录组的组装。

然而,单分子测序的reads的error rate非常高,这限制了它们在重测序方面的应用。

为了解决这个问题,我们创造了PBcR这个纠错算法和组装策略:使用短的、高精准度的reads 来校正单分子测序reads中的错误。

我们在PB RS平台证明了这个算法的实用性,从噬菌体、原核、真核;从基因组到转录组。

我们的长reads纠错达到了99.9%的base-call accuracy,从而使得组装的效果比当下的策略更好。

在最好的栗子里,三代的组装结果的contig的N50是二代的组装结果的五倍。

前言:


二代技术:454焦磷酸测序,Illumina边合成边测序,低成本,高通量;相较于一代的sanger测序。

二代的明显的缺点:测序之前,源DNA需要扩增,会引入偏差;reads短,导致组装和分析困难。

三代,单分子,实时测序,无偏差,reads长,周期短,有利于denovo的基因组和转录组组装,可以解决复杂的重复,可以跨越基因的整个转录本。

然而,三代只有82.1%~84.6%的准确率,主要由insertion和deletion造成(Supplementary Fig. 1).

如此高的错误率会严重影响reads的比对,双序列比对会double错误率,远超过5%~10%的组装软件的承受范围;简单的增加alignment sensitivity是不可行的。(Supplementary Table 1 and Supplementary Figs. 2 and 3).

此外,PacBio技术使用了发卡接头hairpin adaptors 来对双链double-stranded DNA进行测序,这将会导致嵌合体chimeric reads ,如果测序反应进行到DNA的两条链,

虽然你在PacBio RS上可以通过多次读取一个环状分子(circular consensus or CCS) 来生成高准确度的reads,这种方法降低了reads的长度,受分子被遍历的次数影响,导致了一个更短的reads,因此长的single-pass reads有一个很大的潜在的优势,如果可以从算法层次上管理错误率。

为了克服单分子测序数据的限制,解锁它在denovo组装上的全面的潜能,我们开发出了一套方法来利用短的、高精确度的序列来纠正 长的、单分子的内在错误(Fig. 1).

PBcR单分子reads纠正和组装方法:

a)黑线表示错误,粉红色条表示single-pass PacBio RS reads,这很难检测reads之间是否有overlap;

b)将高保真短读长reads比对到容易出错的长reads,之所以可以计算出准确的比对结果,是因为短长是长长错误的一半。短reads上的黑线表示比对错误,是短reads和长reads之间共同的错误。此外,两个不精确的重复导致短reads的堆积,为了避免reads比对的错误,算法选择了一个cutoff,C  前C的留下,后C的丢掉。(PB上高错误的区域Hiseq也是比对不上的

c)留下来的比对用来生成一个新的consensus 序列(紫色),trimming and splitting长reads,如果有短reads有gap(在没有覆盖度的地方任务截断了,绝对有假阳性,因为二代测不到GC特殊区域)。测序错误会传播给PBcR,当PB和Hiseq有共同的错误。

d)纠错后,可以很容易的检测出long PBcR sequences的overlap。

e)组装结果可以跨过重复,那些短reads无法跨过的地方。

注:PB中的无效区域是肯定存在的,可以直接通过Hiseq的覆盖度信息去除(不要切断中间),可能还要考虑GC区域才会完美。

嵌合体怎么解决,还是在组装时会自动解决。

我们的PBcR(PacBio corrected Reads)算法作为Celera Assembler的一部分,截断和纠正单独的单分子reads,通过首先将短reads 比对到长reads上来计算一个高度准确 混合consensus 序列:提高了reads的准确度从80%到了99.9%。

然后,纠正了的混合PBcR reads可以来单独进行denovo组装,或者结合其他数据,或者导出来做其他应用。

下面将会展示几个重要的基因组,包括之前没有测序的1.2-Gbp。incorporation of PacBio data using this method leads to greatly improved assembly quality versus either first- or second-generation sequencing, indicating the promise of ‘third-generation’ sequencing and assembly.

结果


长reads的denovo组装

纠错准确度和结果

混合denovo组装

长read的覆盖度对组装的影响

鹦鹉基因组的组装结果

单分子RNA-Seq纠错

讨论


方法

待续~

PBcR - 纠错及组装算法的更多相关文章

  1. 三代PacBio reads纠错 - 专题

    三代纠错的重要性不言而喻,三代的核心优势就是长,唯一的缺点就是错误率高,但好就好在错误是随机分布的,可以通过算法解决,这也就是为什么现在有这么多针对三代开发的纠错工具. 纠错和组装是分不开的,纠错就是 ...

  2. 基因组Denovo组装原理、软件、策略及实施

    目录 1. 组装算法 1)基于OLC算法 2)基于DBG算法 3)OLC vs DBG 2. 组装软件 3. 组装策略 4. 组装项目实施 1)测序前的准备 2) 测序样品准备 3)测序策略的选择 4 ...

  3. Falcon:三代reads比对组装工具箱

    主页:github: PacificBiosciences/FALCON 简介 Falcon是一组通过快速比对长reads,从而来consensus和组装的工具. Falcon工具包是一组简单的代码集 ...

  4. SOAPdenovo组装软件使用记录

    背景: 1.为什么要从头测序组装基因组? 基因组是不同表型的遗传基础:获得参考基因组是深入研究一个生物体全基因组的第一步也是必须的一步:从头测序组装能够对新的测序物种构建参考基因组: 2.为什么要研究 ...

  5. 海量数据去重之SimHash算法简介和应用

    SimHash是什么 SimHash是Google在2007年发表的论文<Detecting Near-Duplicates for Web Crawling >中提到的一种指纹生成算法或 ...

  6. NECAT组装ONT long reads

    NECAT 可用于ONT数据的纠错,组装,如果想对ONT long reads进行call SV,也可以使用necatsv. githup网址:https://github.com/xiaochuan ...

  7. 【Python小试】计算目录下所有DNA序列的Kmer并过滤

    背景 Kmer是基因组组装算法中经常接触到的概念,简单来说,Kmer就是长度为k的核苷酸序列.一般长短为m的reads可以分成m-k+1个Kmer.Kmer的长度和阈值直接影响到组装的效果. Deno ...

  8. IP分片重组的分析和常见碎片攻击 v0.2

    IP分片重组的分析和常见碎片攻击 v0.2http://www.nsfocus.net/index.php?act=magazine&do=view&mid=584 作者:yawl ( ...

  9. Java资源大全中文版(Awesome最新版)(转载)

    原文地址:http://www.cnblogs.com/best/p/5876559.html 目录 业务流程管理套件 字节码操作 集群管理 代码分析 编译器生成工具 构建工具 外部配置工具 约束满足 ...

随机推荐

  1. iOS应用架构谈 开篇

    iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方案 iOS应用架构谈 动态部署方案 iOS应用架构谈 本地持久化方案 缘由 之前安居客iOS app的第二版架构大部分内容是 ...

  2. Unit03 - 对象内存管理 、 继承的意义(上)

    Unit03 - 对象内存管理 . 继承的意义(上) 1.内存管理:由JVM来管理的  1)堆:    1.1)存储所有new出来的对象(包含成员变量)    1.2)没有任何引用所指向的对象就是垃圾 ...

  3. mysql-四舍五入

    四舍五入:1.format函数:select FORMAT(2.567,2); 返回:2.57select FORMAT(12562.6655,2); 返回:12,562.67 //整数部分超过三位的 ...

  4. Git branch 和 Git checkout常见用法

    git branch 和 git checkout经常在一起使用,所以在此将它们合在一起 1.Git branch 一般用于分支的操作,比如创建分支,查看分支等等, 1.1 git branch 不带 ...

  5. 两种方法解决tomcat的 Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]

    出现这种原因主要是8080端口被占用了. 解决1: 打开任务管理器看看里面有没有javaw的线程,把它关了再重新启动tomcat看看. 解决2: 修改tomcat /conf /server.xml ...

  6. 关于thenao.scan() fn函数参数的说明

    theano.scan()原型: theano.scan( fn, sequences=None, outputs_info=None, non_sequences=None, n_steps=Non ...

  7. javascript面向对象详解

    认识面向对象 1.面向对象中的概念 一切事物皆对象 对象具有封装和继承特性 信息隐藏 2.基本面向对象 3.函数构造器构造对象 深入了解面向对象 第一种书写格式 第二种书写格式

  8. Spring中bean的scope详解

    如何使用spring的作用域: <bean id="role" class="spring.chapter2.maryGame.Role" scope=& ...

  9. 最长公共上升子序列(LCIS)

    最长公共上升子序列慕名而知是两个字符串a,b的最长公共递增序列,不一定非得是连续的.刚开始看到的时候想的是先用求最长公共子序列,然后再从其中找到最长递增子序列,可是仔细想一想觉得这样有点不妥,然后从网 ...

  10. Qt之自定义信号和槽函数

    自定义信号和槽函数: 1.类的声明和实现分别放在.h和.cpp文件中: 2.类声明包含Q_OBJECT宏: 3.信号只要声明不要设计其的实现函数 4.发射信号用emit关键字 5.自定义槽的实现与普通 ...