LoRDEC: accurate and efficient long read error correction LoRDEC:精确且高效的长read校正

简介: -

动机:
PacBio单分子实时测序是一种产生长片段(reads)的第三代测序技术,具有相对更低的通量和更高的错误率。错误包括大量插入缺失,并使下游分析,像比对或从头装配复杂化。提出了一种利用第二代短片段高准确性的混合策略以修正长片段。短片段到长片段的比对提供了足够的覆盖以剔除高达99%的错误,然而,是以过高的运行时和相当大量的磁盘和内存空间为代价的。
结果:
我们提出了LoRDEC,一种混合纠错方法,它构建一个简洁的de Brujin图代表短片段,并通过图中选择的路径为长片段中每个错误区寻找一个正确的序列。
相比之下,LoRDEC快至少6倍,并比可用的工具需要至少93%更少的内存或磁盘空间,然而获得了可比的准确性。
可用性和实现:
LoRDEC是用C++写的,在Linux平台上测试,并可以在http://atgc.lirmm.fr/lordec免费获得。
联系:lordec@lirmm.fr
补充信息:补充数据可以在Bioinformatics网站在线获得。
Introduction

测序,即DNA或RNA序列的测定,现在属于生命科学的基础实验。与桑格方法相比,所谓的下一代测序技术(第二代、第三代甚至第四代)大大降低了成本,提高了效率,使得全基因组测序和全转录组测序成为可能。除了从头开始的基因组测序和组装,许多类型的“组学”实验已经被发明出来,并依赖于高通量测序。

目前所有可用的技术产生的读序列只代表目标分子序列的一部分。处理这些读操作需要将它们与其他序列对齐:例如,在将它们映射到参考基因组时,或者在组装期间读操作之间的计算重叠时。为了进一步分析,保留了最优,有时是次优的对齐。对齐的强度(因此其有用性)主要由两个因素控制:标识的百分比和长度。很明显,在测序过程中引入的错误,测序错误,通过引入不匹配或将信号分解成更短的信号,使信号变得模糊。较弱的对齐可能无法通过后续的过滤器,并在向下分析时丢失。分析越精细,就越有必要捕获所有排列中可用的信息:例如,当试图在组装过程中弥合基因组中较少覆盖区域的缺口,或重建表达较少的RNA的序列时。为了抵消测序错误,已经发现错误校正算法对de novo assembly (Salzberg et al., 2012)是有效的,因此它们经常被合并到装配管道中(如Euler SR(Chaisson and Pevzner, 2008)、ALLPATHS-LG (Gnerre et al.,2011)和SOAPdenovo2 (Luo et al.,2012))。

1.1第二代测序相关工作

在长序列(Sanger或PacBio读取)的情况下,算法计算读取的多个对齐,并调用一致序列来纠正错误区域。对齐计算有运行时间长和参数依赖的不便(Salmela and Schroder, 2011)。在第二代读取的情况下,意味着更大的输入大小和适度的错误率,关键思想是利用排序的覆盖率。通过计算读集中出现的错误子字符串的数量,可以区分错误子字符串和无错误子字符串。有了足够的覆盖率,就可以计算一个最小阈值,使每个无错误的k-mer在读取集中出现至少相同次数的概率很高。高于/低于阈值的k-mer分别被限定为solid或weak。这种思想在基于De Bruijn Graphs (DBG)的第二代汇编程序中得到了利用,其中只有实体k-mers构成了DBG的节点(例如Zerbino和Birney,,或者在对照参考进行映射时,将错误的位置与生物突变区分开(Philippe et al.,2013)。目前许多用于第二代测序的误差校正算法(Illumina、Roche or Solid)采用这种计数策略,也称为光谱比对(Chaisson et al., 2004;Pevzner et al.,2001):计算固体k-mer的光谱,并通过更新每个弱k-mer及其最近的固体k-mer来纠正每次读取。依赖于哈希表的实现很好地适应了k-mers(即固定长度的子字符串),而基于更灵活的读取索引(例如后缀树或后缀数组)的方法可以纠正不同长度的子字符串(Salmela,2010;Schroder et al.,2009)。基于谱对齐的方法比基于对齐的方法更有效、更可扩展,并且适用于低错误率。最近关于纠错的工作主要集中在纠正Illumina读取中替换是主要错误类型的地方,因此更具有挑战性的插入和删除纠错问题仅由少数作品解决(Salmela,2010;Salmela和Schroder,2011)。关于第二代测序误差校正方法的调查,见Yang et al.(2013)。

1.2 PacBio reads相关工作

PacBio SMRT测序的特点是读长得多(高达20kb),错误率高得多(415% Koren等,2012),并且对错误纠正提出了更困难的挑战。然而,排序错误似乎是均匀分布的,独立于序列上下文,并倾向于插入,在较小程度上删除。为了简单起见,我们将PacBio读、长读(LR)和其他第二代读、短读(SR)称为PacBio读。为了解决这一挑战,提出了两种方法:仅使用LR进行自校正,或使用SR库对LR进行混合校正。Self correction,类似于Sanger correction tools,计算LR [with BLASR (Chaisson and Tesler, 2012)]之间的局部对齐,以构建多个对齐,然后调用一致性。它已经在非混合组装器HGAP中实现,并在细菌基因组上进行了实验(Chin et al.,2013)。混合校正利用了SR库更高的质量和覆盖范围,从而产生更强的对齐,在LR上对齐它们,并通过从多个对齐调用协商一致序列来纠正后者。这种策略在组装程序AHA (Bashir等,2012)和纠正程序LSC (Au et al.,2012)和PacBioToCA (Koren et al.,2012)中发现;在细菌基因组上达到了与非混合方法类似的精确度,但也证明能够对真核生物基因组和转录组进行操作(Au et al.,2012;Koren et al.,2012)。

1.3基因组整理、支架和长读校正方法的局限性

最近,有两项提案[PBJelly (English et al.,2012)和Cerulean (Deshpande et al.,2013)]采用了基因组支架或整理的中间策略:除了LR之外,它们还将部分组装的基因组或使用SR数据生成的组装图作为输入。叠架被映射到LR, LR作为完成/填充装配间隙或将叠架订购到支架的基础。Deshpande et al(2013)通过当前LR校正程序对时间、内存和磁盘的要求来证明他们的策略是正确的,该程序甚至对细菌基因组数据集也需要高计算资源和长时间的超级计算机运行。目前的校正程序似乎没有充分利用序列索引数据结构来加快校正速度(Navarro and Makinen,2007)。

1.4贡献

考虑到LR校正程序的局限性和PacBio读取的高错误率,本文提出了一种新的混合校正算法。它首先构建SR数据的DBG,然后通过在DBG中搜索最优路径来纠正LR中的错误区域。沿路径重叠的k-mers序列提供了该区域的校正序列。利用DBG紧凑表示的最新发展[Fig 1 Chikhi and Rizk (2012);Salikhov et al(2013)],我们开发了一个名为LoRDEC (Long Read DBG Error Correction,长读DBG纠错)的程序,它允许在普通计算硬件上纠正典型大小的数据集。我们将我们的程序与最先进的方法进行比较,发现它提供了相同的精度,低内存使用和合理的运行时间
image.png

2.方法

2.1概述

混合校正算法背后的原理是使用一组高质量的读取来校正第二组误码率较高的读取。通常,Illumina、454或PacBio CCS SR的低误码率参考集将有助于纠正长PacBio RS读取。由于这两个集合假设来自同一个库,所以目标是将长时间读入错误区域的序列转换为分子该区域的SR可以组装的序列,同时保持LR的长度。我们的程序LoRDEC将SR、LR和一个奇数k作为输入。现在,我们的方法是通过遍历SR的DBG中的适当路径,为LR的每个错误区域找到一个可选序列。为避免在纠正过程中引入错误依据,我们过滤掉任何k长子串,称为k-mer,它在SR中出现的次数少于s次[在第二代组装器(Chikhi and Rizk, 2012; Salikhov et al., 2013; Zerbino and Birney, 2008)]其中s由用户设置。用我们的术语,我们只保留了固定的k-mers。
LoRDEC首先读取SR,构建它们的DBG (k阶),然后逐个独立地纠正每个长读操作。DBG是大多数第二代组装器(如Velvet、Minia)的底层图。SR中的每个实心k-mer在DBG中构成一个节点,如果节点f的k-mer与g的k-mer重叠1个位置,则有向弧将节点f链接到节点g。图1显示了一个DBG示例。在用于装配的DBG中,由于读链未知,节点表示一个k-mer和它的反向补k-mer,并扩展了arc的概念,以确保两个节点/k-mers可以在同一条链上重叠。例如,一个k-mer acgta将通过一个弧连接到k-mer cgtat。很明显,从一个节点到另一个节点的路径,也就是一系列弧,代表了一个核苷序列,在两个节点之间,比如f和g,可能没有路径,只有一条或多条路径。通常,汇编程序沿着非分支路径输出序列为contigs。为了存储DBG,我们使用内存效率高的GATB库(http://gatb-core.gforge.inria.fr ),它允许遍历图中的任何路径并获得任何节点的序列。GATB使用Bloom过滤器来存储DBG,并额外记录DBG中与k-mers相邻的假阳性k-mers,如果遍历从一个实k-mer开始,则只允许遍历实k-mers。然而,我们使用DBG来确定LR中的k-mer是否为固体,因此,GATB可以报告假阳性。我们发现,如果我们额外要求一个k-mer被认为是固态的,那么它也必须至少有一个输入弧和至少一个输出弧,报告的固态k-mers中只有一小部分(例如大肠杆菌数据集中的0.03%)是假阳性。
考虑从位置1、2、3开始的长读的k-mers…:一些k-mers属于图中,属于固体,而另一些k-mers不属于图中,属于弱分子。基本上,可靠的k-mers应该是正确的,而较弱的可能包括测序错误,需要纠正。固体k-mers是DBG中的入口点,LoRDEC通过在与该区域相邻的固体k-mers之间的DBG中找到最佳路径,纠正了由弱k-mers组成的区域。有时,LR没有实心k-mer,在这种情况下,LoRDEC在输出中将其标记为实心k-mer并跳过它。我们的结果表明,只有短的错误读取(51500个核苷酸)完全缺乏可靠的k-mers(数据没有显示)。由于PacBio测序的目标是获得长读,因此我们的目标是产生长而正确的序列,所以我们决定在LoRDEC的当前版本中过滤这些读。在剩余的LR中,至少有一个k-mer是固态的:因此,对于弱区,会出现两种情况:要么它位于LR的一端,只有一个实心k-mer与之相邻,我们叫它头或尾区域,或者它是一个内部区域,每一边都有一系列的k-mers。薄弱区域如Fig 2a所示。我们的算法使用两个不同的过程来纠正头部/尾部或内部区域(见下文)。
纠正一次长读的算法如Fig 2所示,总结如下。对于每次长读,我们将head/tail校正过程应用到最左(head)和最右(tail)的弱区,然后循环遍历序列,选择一对实体k-mers,并针对每对实体k-mers,对它们之间的弱区启动校正过程。每次调用纠正过程都会动态地修改序列,从而将弱序列转换为实k-mers。LoRDEC在读取过程中执行两次遍历,每个方向执行一次。首先,实时修正生成新的实体k-mers,作为下一遍的起始节点;其次,由于序列中的重复,搜索路径可以根据从哪个区域的末端开始,继续到图的不同部分。因此,值得尝试两次传递。
image
Fig2长read校正法。
(a)长读根据短读DBG划分为弱区和实区(分别为直线和矩形)。长读开始或结束时的弱区分别称为头区或尾区,其他弱区称为内区。实心区域的圆圈表示DBG的k-mers。弱区域周围的k-mers作为源节点和目标节点DBG中搜索路径。每个弱内部区域都使用几个源/目标对。
(b)在第二个内部区域,在DBG中找到节点s1和t1之间的桥接路径来纠正这个区域。在第三个区域,路径搜索没有找到节点s2和t2之间的路径。对于尾部,将寻找一个扩展路径,并找到从节点s3到末尾的扩展路径。一旦找到,路径的纠正序列与尾部对齐,以确定最优子字符串(粗点箭头)

2.2内部薄弱环节的校正

一个内部区域被每一边的固体k-mers所包围。该过程以源和目标实体k-mers、区域序列和最大分支限制为输入。实体k-mers充当DBG中的源节点和目标节点,这些节点之间的任何路径都编码一个序列,该序列首先可以从SR组装,然后,它以适当的实体k-mers开始和结束。因此,该区域序列可以用任意路径的序列进行校正。我们选择这些路径的标准是最小化路径和区域序列之间的编辑距离。现在,几个可靠的k-mers可以作为搜索的源和目标。我们用来过滤错误k-mer的可靠度标准并不完美:一些可靠k-mer可能仍然是错误的。对于这样的k-mers,路径搜索可能会失败,或者导致路径序列远不是最优的。为了避免陷入这种局部极小值,我们不仅考虑了一个,而且考虑了在每个弱区周围的几对(源、目标)k-mers。
为此,我们循环遍历读取的内部实体k-mers,并将每个k-mers看作一个源。对于每个可能的源,我们将t向下的实体k-mers视为目标(默认情况下t被设置为5),并根据源和目标k-mers是否相同,过滤掉一些排他的情况
(1)属于同一实体k-mers运行:假设该区域是正确的,不寻找路径;
(2)重叠:串联重复很可能产生重叠区域,或者k-mer为假实心,我们跳过这种情况;
(3)在读取时彼此距离太远:计算动态规划(DP)矩阵的最小编辑距离将需要太多的内存,并且找到路径的可能性很低:我们必须跳过这种情况。
在所有其他情况下,我们寻找源和目标固体k-mers之间的最佳路径。通过这种选择源/目标对的方式,我们确保将考虑与弱区域相邻的几个对。如果源和目标之间的路径被视为弱区域上的桥,那么可选的源/目标对可能形成跨越读取区域的不同桥。沿着read找到的所有桥都形成一个有向图:路径图。实体k-mers构建它的节点,找到的每个路径都是源和目标k-mers之间的弧。弧由区域序列和找到的路径之间的编辑距离加权。因此,路径图的构造与内部区域的校正混合在一起。
为了为选定的源/目标对在DBG中寻找最优路径,我们执行深度优先搜索遍历源和目标之间的可能路径,并在每个步骤(节点方向)计算其与DP矩阵中的区域序列的最小编辑距离。当到达图中的死角、目标k-mer或路径扩展的最小编辑距离超过允许的最大错误率时,停止对路径的探索。当遇到的路径数量超过分支限制时,将中止整个搜索。最后,如果至少找到一条路径,我们将路径及其编辑距离记录为路径图中两个k-mers之间的弧,即我们在上面定义的。否则,如果对当前源k-mer的搜索全部失败,则在路径图中添加一个伪弧:源与下一个实心k-mer之间的弧,其加权距离等于区域长度。这确保从第一个实体k-mer到最后一个实体k-mer的路径始终存在。

2.3头部或尾部区域校正:寻找最佳扩展

纠正读头或读尾是一个对称的过程,所以我们用读尾来描述它。尾巴是由弱k-聚体构成的核苷区,其前面至少有一个固体k-聚体。该过程以实体k-mer节点为输入,以DBG中的源节点、尾序列和分支限制为输入。与内部区域不同,我们缺少一个目标k-mer,因此需要另一个标准来停止访问路径。该过程寻找任何允许纠正尾部前缀的路径,并在节点方面优化前缀长度和当前路径与尾部当前前缀之间的编辑距离。它使用深度优先搜索并探索路径,直到它们的编辑距离变得太大,或者直到到达DBG中的死胡同或尾部。
最后,由于该过程优化了前缀长度,它倾向于将搜索扩展到与路径对齐良好的前缀之外。因此,重新考虑找到的路径,以搜索其优化对齐分数的前缀。该比对步骤从实体k-mer开始寻找最佳扩展序列,并获得最大的比对得分。这个扩展问题让人想起了在BLAST中寻找局部对齐的最佳扩展搜索(它通过一个下拉得分限制来解决; Altschul et al., 1990).。
关于阳极内部区域校正的优化。当源k-mer与其所有目标之间的路径搜索失败时,这意味着我们无法找到桥接路径。然而,我们可以在弱区域的每一边找到最佳的扩展,并纠正该区域的前缀和后缀。为此,我们使用与头尾校正相同的扩展过程,并相应地调整图的路径边缘。

2.4图形路径优化

最后,在一次完整的校正结束时,所有发现的内部路径都记录在路径图中。这里,两个实体k-mers之间的一条边记录了这些k-mers之间的路径所指示的区域的校正。最后,在考虑所有内部实体k-mers后,利用Dijkstra算法(Dijkstra, 1959)在路径图中找到读取的第一个和最后一个实体k-mers之间的最短路径,从而优化内部区域的校正。

2.5修边和分割纠正读数

在校正过程的最后,如果校正读数中的每个碱基至少属于一个固态k-mer,则可将其划分为固态,否则为弱型。LoRDEC输出大写字母的实基和小写字母的弱基。我们提供了两个实用程序来修剪和分割校正后的读数。第一个工具从读取的开始和结束都对所有的弱碱进行了修剪,但保留了弱碱的完整区域,这些区域的两边都是实心碱。因此,每次纠正读取都会产生一个修剪读取。第二种工具通过从修正后的读操作中提取出作为独立序列的所有实基来对读操作进行修剪和分割。

3.结果

3.1数据与计算环境

我们使用了三个不断增长的数据集:一个来自E。大肠杆菌,两个真核生物从酵母和鹦鹉。它们分别包括98Mb、1.5 Gb和6.8Gb的PacBio读取,以及231,451mb和35Gb的Illumina读取。所有细节见补充表S1。
所有的实验都在服务器上运行,服务器有16个内核,运行速度2.53GHz,内存为32GB。运行时由Linux/Unix time命令记录,内存和磁盘使用情况由定期轮询操作系统记录。因为所有的校正工具都支持在多个内核上并行执行,所以我们报告了CPU总时间和运行时间(挂钟)。

3.2评价方法

我们使用两种方法来评估校正的准确性。第一种方法测量读序列与参考基因组的比对程度。第二种方法是比较原始读数和校正读数在比对参考文献时的差异,以评估校正的准确性。
大肠杆菌和酵母数据集,我们使用BLASR (Chaisson and Tesler, 2012)将原始和纠正后的读序列对齐到基因组,对于parrot数据集,我们使用bwam-mem (Li, 2013)。对于较小的数据集,使用BLASR是因为它倾向于更好地桥接长indel,从而报告更长时间的对齐。对于parrot数据集,我们更喜欢BWA-MEM,因为它更快。每次读取,我们都保持其与基因组的最佳比对。然后,我们计算读序列的对齐区域的大小、基因组中对齐区域的大小以及对齐中相同位置的数量。然后计算相同位置的数量除以基因组中对齐区域的长度来确定对齐的一致性。然后,根据可以与基因组比对的区域大小和比对的一致性,通过错误纠正程序对读取结果进行评估。
可以进一步分析原始读数和校正读数的比对,以表征校正的精度。考虑原始读、校正读和相应基因组区域的多重对齐。这种多重比对中的每个位置可以分为真阳性(TP)、假阳性(FP)、真阴性(TN)或假阴性(FN)。如果原始读数有错误,并且已被纠错工具纠正,则位置为TP。原文中未改正的错误位置,为错误否定。在FP位置,纠错工具已经进行了纠错,虽然在原始读取中没有错误,最后,TN位置在原始读取和纠正读取中都是正确的
修正的精度可以用以下几个统计量来测量:
灵敏度=TP/(TP+FN),工具识别错误位置的能力如何?
增益=(TP FP)/(TP+FN),该工具在不引入新错误的情况下如何消除错误
误差校正工具包(Yang et al., 2013)是为比较第二代测序数据的误差校正结果而设计的。作为输入,它需要将原始读操作和纠正后的读操作映射到SAM格式的基因组。我们用BLASR表示E。大肠杆菌和酵母数据以及BWA-MEM为鹦鹉数据产生比对。对于每一对原始读码和校正读码,工具箱计算与参考基因组的差异集,并对这两组进行比较,以确定校正时TP、FP和FN的位置。针对第二代测序的读映射器报告读与基因组的完全匹配,而BLASR和BWA-MEM报告读与基因组的最佳局部比对。我们对工具箱进行了修改,使原始读取和修正读取之间的差异仅在原始读取对基因组的局部比对的基因组区域内计算。
对于大量的indel,比对结果的差异比较并不容易,即使是相同的差异往往产生不同的排列相同的比对的得分。因此,特别是在部分纠正的区域,可能会报告比实际情况更多的差异,因此这种方法可能报告比数据集中实际出现的更多的FPs或FNs。

3.3参数对方法的影响

我们研究了参数对方法的影响在大肠杆菌的数据集。我们每次改变一个参数,记录运行时,并通过计算增益来评估方法的准确性。Fig3显示了本实验在改变5个参数时的结果:k、Illumina数据集中k-mer为solid的阈值、校正区域的最大错误率、分支限制以及从源k-mer中寻路的目标k-mers数量。我们看到k=19对于这个数据集给出了最好的结果,进一步的酵母数据实验证实k=19对于这个数据集也是最优的(数据没有显示)。固体k-mer阈值对校正精度影响不大,阈值越小,校正效果越好。通过在运行时略微增加校正区域的最大错误率,提高了校正精度。增加探索分支的数量或目标k-mers的数量只对增益有很小的影响,而运行时显著增加。基于这些观察,我们在E上运行了我们的方法。大肠杆菌和酵母的数据与以下参数:k, 19;固体k-mers阈值,3;最大错误率0.4;分支限制,200;和目标k-mers的数量,5。对于parrot数据,我们发现k=23在运行时和准确性方面都给出了更好的结果。Supplementary Table S2为每个参数及其默认值提供了解释。

3.4与LSC、PacBioToCA比较

我们将LoRDEC与LSC (Au et al.,2012)和PacBioToCA (Koren et al.,2012)进行了比较。LSC使用默认参数运行,只是我们将短读覆盖深度设置为数据集的估计覆盖范围,即E。大肠杆菌数据集和38为酵母数据集。PacBioToCA使用默认参数运行,除了调优适合我们平台的并行化参数。LoRDEC的参数设置如上所述。

3.4.1大肠杆菌

错误纠正工具的运行时、内存和磁盘使用情况如Table 1(顶部)所示。LoRDEC的速度比LSC快17倍,并且需要的内存比LSC少88%和95%,LSC是这个数据集中前面两个工具中资源效率更高的。Table 1的右侧显示了LSC和LoRDEC的纠错工具包报告的纠错统计数据,我们看到LoRDEC的性能优于LSC。
将读序列与参考基因组比对的统计数据如Table 2(顶部)所示。对于LSC,我们报告了工具报告的完整已更正读集和已修正读集的统计数据。类似地,我们为LoRDEC报告完整读取、在末尾进行修剪的读取以及修剪和分割读取的统计信息(参见Section 2.5)。LSC显然在这三种工具中表现最差,而PacBioToCA和LoRDEC有类似的统计数据。经LoRDEC校正、修剪和分割后,reads的碱基略多一些,相对于reference对齐的碱基比例略小一些,但对齐区域的一致性要高于PacBioToCA校正后的reads。

3.4.2酵母

LSC和PacBioToCA都未能在单个服务器上完成此数据集的更正。我们分割PacBio数据,并在三个服务器上运行LSC,在六个服务器上运行PacBioToCA。PacBioToCA被设计为在多个服务器上分布式运行,而LSC不支持分布式执行。因此,我们选择在LSC中使用尽可能少的服务器,以最小化分布式执行对校正精度的影响。
Table 1(中间)显示了酵母数据集的运行时、内存和磁盘使用统计数据。对于这个数据集,LoRDEC使用的时间或内存至少比PacBioToCA和LSC少一个数量级,磁盘也比PacBioToCA和LSC少两个数量级。例如,LoRDEC的速度是PacBioToCA的6倍,使用的内存和磁盘空间分别比PacBioToCA少93%和99%。LSC的增益和灵敏度保持在532%,而LoRDEC的增益和灵敏度保持在480%。Tabele 2(中间)比较了三种工具的对齐统计数据:LSC (full或trim)使用比LoRDEC更少的标识对更少的基进行对齐。PacBioToCA与LoRDEC (trim+split)相比,在较高的计算成本下,PacBioToCA的对齐效果稍好一些。

3.5鹦鹉数据实验

我们研究了LoRDEC在一个更大的真核数据集上的可伸缩性:parrot数据。由于鹦鹉的基因组是脊椎动物,因此是复杂的基因组,大约是人类基因组长度的三分之一(Supplementary Table S1),它代表了一个解决可扩展性和基因组组织影响问题的真正测试。考虑到LSC和PacBioToCA在较小酵母数据上的运行时间,本实验不包括这些数据。这些数据包含三个PacBio库,我们在各自的服务器上对每个库进行了更正。Table1(底部)显示了由Error Correction Toolkit生成的运行时、内存和磁盘使用情况以及统计数据。基于这些结果,我们可以得出结论,LoRDEC的规模足以纠正大型真核生物基因组在普通计算硬件上的读取。纠错工具包在Table1 Table2中(底部)和一致性统计(底部)表明,校正精度与酵母可比数据集,虽然参考基因组包含更多错误,草案和对齐的统计数据也遭受读取校准的支架只有部分对齐。

3.6基因组组织的影响

对LoRDEC提供的校正的评估表明,它对所有数据集都是全局精确的。然而,基因组组织,特别是重复的存在,可能会影响校正的质量。有人可能会说,在重复区域中,SR的DBG中发现的固体k-mers和路径可能来自于不同的或多个重复的副本,从而误导了校正过程。换句话说,校正的准确性可能随着基因组的不同而不同。如果是这样的话,相对于观察到的基因组覆盖率,读序列的分布应该在原始读序列和修正读序列之间有所不同。为了评估这种可能性,我们计算了对齐的原始读数和校正读数的预期基因组覆盖率和观察基因组覆盖率(Last columns of Table 2)。覆盖率计算为至少一个比对所覆盖的基因组位置数除以基因组长度。E。在大肠杆菌和酵母的情况下,PacBio测序深度理论上足以覆盖整个基因组(预期覆盖范围为1),校正后的效果是将观测到的覆盖范围提高到99%以上。因此,在这两个案例的覆盖率方面没有明显的偏见。parrot数据的情况有所不同。First, PacBio 测序 深度 只有 5.5 , 从而 8 分 不同 的 预期 的 和 观察 到 的 保险 原始 和 纠正 一致 读 (0.92 和 0.84 ;0.98和0.90)。为了评估可能的偏见,我们绘制了对齐读取所覆盖基因组的百分比,作为原始读取和校正读取深度的函数(black squares and circles in Fig4)。我们还绘制了相同的函数,但是在随机化读取位置之后,也就是说,对齐的读取位置就像均匀分布在整个基因组(white squares and circles)的位置一样。首先,实际比对的两条曲线都与随机对照曲线不同,这表明原始reads的基因组分布存在一定的偏差,但校正后仍保持相同的偏差。可能有多种原因可以解释这种偏差,包括测序深度低、局部装配错误或映射偏差。其次,黑色曲线的形状相似,说明读取深度函数的分布不受LoRDEC的影响。请注意,修正后的读数曲线仍然高于原始读数曲线,显示了LoRDEC在所有读取深度上带来的改进。因此,即使是在脊椎动物的基因组上,我们的结论是,由于基因组组织的原因,LoRDEC可以在很小的偏差下准确地纠正PacBio读数

4.结论

由于它们的长度,PacBio读取提供了有趣的信息来连接其他序列,但是,由于它们的高错误率(这在灵敏度和运行时间方面阻碍了对齐和相似性检测),使得这项任务变得相当困难。从实验中可以看出,使用LoRDEC进行纠错后,大部分序列与识别率为497%的序列是一致的。以前的校正程序可以达到类似的精度,但计算资源有限。LoRDEC在这方面提供了一个显著的改进,以至于任何基因组学项目都可以提供PacBio错误纠正,即使是真核物种。此外,混合错误校正仍然有用,因为它可以在项目中组合不同类型的排序。
与其他校正算法相比,LoRDEC提供了一种新的基于图形的校正方法。DBG中的路径搜索允许处理更高的错误率。但是,如果源和目标k-mers之间没有路径或者存在太多路径,那么搜索可能会失败。一些改进似乎是可以实现的。当缺少路径时,我们计划在内部区域的每一侧迭代地使用扩展路径搜索。丢失的路径可能表示剩余的适配器,而本地DBG结构可以帮助识别和删除它。在路径太多的情况下,k的可选值可能会有所帮助:较小的k可以在该区域引入固态k-mers,使得求解时间更短。动态更新DBG顺序(即参数k)的算法在这方面很有用(Cazaux et al.,2014)。
在PacBio RNA-seq reads上的其他实验表明,LoRDEC还可以改善玉米转录本的序列,从而使它们更容易与参考转录数据库对齐(参见补充数据)。LoRDEC使用简单,可伸缩,可以很容易地集成到管道中,并且应该适应其他类型的读取。

本文作者:wangprince2017

目录
相关文章
|
7月前
|
NoSQL 数据挖掘 数据库
Sentieon | 每周文献-Long Read Sequencing-第二十九期
Sentieon | 每周文献-Long Read Sequencing-第二十九期
54 0
|
机器学习/深度学习 算法 数据挖掘
Sentieon | 每周文献-Long Read Sequencing(长读长测序)-第七期
Sentieon | 每周文献-Long Read Sequencing(长读长测序)-第七期
92 1
Sentieon | 每周文献-Long Read Sequencing(长读长测序)-第七期
|
机器学习/深度学习 算法 数据挖掘
Sentieon | 每周文献-Long Read Sequencing(长读长测序)-第七期
Sentieon | 每周文献-Long Read Sequencing(长读长测序)-第七期
85 0
|
7月前
|
JSON JavaScript 前端开发
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
648 0
|
7月前
|
编译器 C语言
c语言中long的作用类型
c语言中long的作用类型
207 0
|
1月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
37 3
|
1月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
61 1
|
1月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
17 0
|
4月前
|
前端开发 Java 数据库
Java系列之 Long类型返回前端精度丢失
这篇文章讨论了Java后端实体类中Long类型数据在传递给前端时出现的精度丢失问题,并提供了通过在实体类字段上添加`@JsonSerialize(using = ToStringSerializer.class)`注解来确保精度的解决方法。