单分子测序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. [LeetCode]题解(python):125 Valid Palindrome

    题目来源 https://leetcode.com/problems/valid-palindrome/ Given a string, determine if it is a palindrome ...

  2. Python开发【第八章】:Socket

    一.Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. so ...

  3. vim - Highlight unwanted spaces

    http://vim.wikia.com/wiki/VimTip396 precondition: set hlsearch" Show all tabs:/\t" Show tr ...

  4. Nginx执行php显示no input file specified的处理方法

    /var/www/nginx-default中放上一份phpinfo.php,使用http://localhost/phpinfo.info 访问,结果报错,显示 “No input file spe ...

  5. jQuery源代码学习之七—队列模块queue

    一.jQuery种的队列模块 jQuery的队列模块主要是为动画模块EFFECTS提供支持,(不过到现在为了支持动画队列的inprogress的出入队还是搞不太清楚),单独抽取出一个命名空间是为了使程 ...

  6. jQuery源代码学习之六——jQuery数据缓存Data

    一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所 ...

  7. 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web

    实例演示使用RDIFramework.NET 框架的工作流组件 进行业务流程的定义—请假申请流程-Web 参考文章: RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系 ...

  8. Python 面向对象编程进阶

    静态方法 只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在 ...

  9. iOS-打开word、ppt、pdf、execl文档方式

    这里面包括下载和打开文档的操作:需要先导入<AFNetworking>的框架 第一步:创建一个显示文档的view:ReadViewController (1).h的代码如下: @inter ...

  10. innerHTML

    对于innerHTML 属性,几乎所有的元素都有innerHTML属性,它是一个字符串,用来设置或获取位于对象起始和结束标签内的HTML.(获取HTML当前标签的起始和结束里面的内容) 下面的例子返回 ...