单分子测序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. FP - growth 发现频繁项集

    FP - growth是一种比Apriori更高效的发现频繁项集的方法.FP是frequent pattern的简称,即常在一块儿出现的元素项的集合的模型.通过将数据集存储在一个特定的FP树上,然后发 ...

  2. ecshop增加新字段及相应编辑器

    一.在数据库添加字段,会手写的就后台添加,不会就进入phpmyadmin默认的就行.      这是通用的写法:(这里是增加类似商品描述的字段,其他字段自行更改) ALTER TABLE `ecs_g ...

  3. Linux系统下Redis安装(二)

    上一篇随笔,已经成功开启了Redis-server,客户端已经可以正常对redis进行正常操作. 但是,redis-server开启的同时,一个大大doc黑屏也在那里开启着,接下来就对讲解如何在Lin ...

  4. java求素数和求一个数的一个正整数的质因数

    1.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少对? (1)程序分析:不难发现兔子的规律是:1,1 ...

  5. springMVC中利用model在JSTL进行回填值

    1.ringMVC中利用model回填值 后台中,利用model返回值,如 model.addAttribute("MS_info" , MS_info); 前台回填值: text ...

  6. ArrayBlockingQueue,BlockingQueue分析

    BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,让容量满时往BlockingQueue中添加数据时会造成阻塞,当容量为空时取元素操作会 ...

  7. distribution数据库过大问题

    从事件探查器中监控到如下语句执行时间查过 1分钟: EXEC dbo .sp_MSdistribution_cleanup @min_distretention = 0, @max_distreten ...

  8. 小试牛刀C#作为脚本语言执行解密

    背景 我们知道Unity3d是通过C#脚本语言的形式来实现游戏的逻辑代码编写,同样SCOTT服务器也设置了通过C#脚本来实现游戏逻辑,但是本文并不是想真正分析解密他们的运行机制,只是想通过自己的一个需 ...

  9. Leetcode: Non-overlapping Intervals

    Given a collection of intervals, find the minimum number of intervals you need to remove to make the ...

  10. 数据库中 关于不能用in 不能用exist 等关键字 查询不出现字段的问题

    这是之前在网上见到的一道题,后来心里略微想了想 觉得应该可能,所以就一闪而过了,之前去面试晨光的时候面试者问了我这道问题,当时也只是把自己的想法说了一下,可能因为当时面试的感觉不太好,面试官也没有追究 ...