混合和可扩展的纠错算法,用于长读的插入缺失和替换错误
- Arghya Kusum Das,
- 萨彦·高斯瓦米( Sayan Goswami)
- 李基成&
- 承钟公园
BMC基因组学 卷 20,产品编号: 948(2019)
-
895次访问
-
1高度
抽象
背景
长读测序显示出有望通过提供更完整的装配来克服第二代测序的短长度限制。但是,与短读相比,长测序读段的计算面临着更高的错误率(例如13%vs. 1%)和更高的成本(每Mbp 0.3美元vs.0.03美元)的挑战。
方法
在本文中,我们提出了一种新的混合错误纠正工具,称为ParLECH(使用混合方法的并行长读取错误纠正)。ParLECH的纠错算法本质上是分布式的,可以有效利用高通量Illumina短读序列的k- mer覆盖信息来纠正PacBio长读序列.ParLECH首先从短读中构建一个de Bruijn图,然后在基于短读取的de Bruijn图中,将长读取的indel错误区域替换为其对应的最宽路径(或最大最小覆盖路径)。然后,ParLECH利用k短读的mer覆盖信息将每个长读分为低覆盖区域和高覆盖区域,然后进行多数表决以纠正每个替换的错误基础。
结果
在实际的PacBio数据集上,ParLECH的性能优于最新的混合错误校正方法。我们的实验评估结果表明,ParLECH可以准确,可扩展的方式纠正大规模的现实世界数据集。ParLECH可以使用128个计算节点在不到29小时的时间内用Illumina短读数(452 GB)纠正人类基因组PacBio长读数(312 GB)的插入缺失错误。ParLECH可以将大肠杆菌PacBio数据集的92%以上碱基与参考基因组比对,证明了其准确性。
结论
ParLECH可以使用数百个计算节点扩展到超过TB的测序数据。提出的混合纠错方法是新颖的,并且纠正了原始长读或短读新引入的插入缺失和取代错误。
背景
基因组测序技术的迅速发展已成为基因组发现的主要动力。第二代测序技术(例如,Illumina,Ion Torrent)一直以极低的成本(0.03美元/百万碱基)为研究人员提供了所需的通量,从而使人们能够发现许多新的物种和变体。尽管它们被广泛用于理解复杂的表型,但由于读取长度短,它们通常无法解析各种基因组(例如,真核基因组)中常见的长重复元件[ 1 ]。
为了解决读取长度短的问题,最近已经开始出现第三代测序技术(例如PacBio,Oxford Nanopore)。通过产生大于10 kbp的长读,这些第三代测序平台为研究人员提供了明显更少的碎片组装,并有望提供更好的下游分析。但是,这些长序列的生产成本几乎比短读序列的生产成本高10倍,而且对这些长读序列的分析受到较高错误率的严重限制。
因此,我们开发了ParLECH(使用混合方法的并行长读取错误校正)。ParLECH使用MapReduce和分布式NoSQL的功能来扩展TB级的排序数据[ 2 ]。利用这些大数据编程模型的强大功能,我们开发了完全分布式的算法来替换长读的indel和替换错误。为了纠正indel错误,我们首先根据Illumina的短读创建了de Bruijn图。然后,用最宽路径算法代替长读取的indel误差,该算法使de Bruijn图中两个顶点之间的最小k- mer覆盖率最大化。为了更正替换错误,我们通过利用序列的中位数统计将长读分为一系列低覆盖和高覆盖区域Illumina短读的k- mer覆盖信息。然后,在那些低覆盖范围和高覆盖范围的区域中分别替换替换的错误基准。
与现有的纠错工具相比,ParLECH可以实现更高的准确性和可伸缩性。例如,ParLECH成功地对齐了95%的大肠杆菌长读序列,与现有工具相比,可保持更大的N50。我们通过在不到29小时的时间内在128个节点上利用452 GB Illumina数据集(校正312 GB人类基因组PacBio数据集)来证明ParLECH的可扩展性。
相关工作
第二代测序平台以1-2%的错误率产生短读[ 3 ],其中大多数错误是替换错误。但是,低廉的生产成本导致数据覆盖率高,从而可以在不使用任何参考基因组的情况下对错误进行自我校正。利用基本事实,即与实际的k- mers相比,由错误库产生的k- mers覆盖率会大大降低,因此提出了许多纠错工具,例如Quake [ 4 ],Reptile [ 5 ],Hammer [ 6 ]。 ,RACER [ 7 ],珊瑚[ 8 ],打火机[ 9 ],步枪[ 10 ],SHREC [11 ],DecGPU [ 12 ],Echo [ 13 ]和ParSECH [ 14 ]。
与第二代测序平台不同,第三代测序平台,如PacBio和Oxford Nanopore测序仪,可产生长读段,而indel(插入/缺失)错误占主导地位[ 1 ]。因此,为短读的替换错误而设计的纠错工具不能为长读产生准确的结果。但是,通常利用短阅读序列的较低错误率来提高长阅读的质量。
这些混合错误纠正工具在提高长读质量的同时,还通过利用互补的低成本和高质量短读降低了管道的成本。LoRDEC [ 15 ],Jabba [ 16 ],Proovread [ 17 ],PacBioToCA [ 18 ],LSC [ 19 ]和ColorMap [ 20 ]是混合错误校正工具的一些示例。LoRDEC [ 15 ]和Jabba [ 16 ]使用基于de Bruijn图(DBG)的方法进行纠错。两种工具都可以从Illumina的短读中构建DBG。然后,LoRDEC通过DBG上的本地程序集纠正长读中的错误区域,而Jabba使用不同大小的k-mer迭代以抛光长读的未对齐区域。一些混合错误纠正工具使用基于对齐的方法来纠正长读。例如,PacBioToCA [ 18 ]和LSC [ 19 ]首先将短读段映射到长读段以创建重叠图。然后通过基于共识的算法纠正长读。Proovread [ 17 ]通过迭代比对程序达成共识,该迭代比对程序在每次迭代中递增地增加了长读取的敏感性。色彩图[ 20]在重叠图的每个边缘上保留共识相异的信息,然后利用Dijkstra的最短路径算法纠正indel错误。尽管这些工具在成功对齐后会产生准确的结果,但它们的错误校正过程本质上是有损的,从而降低了所得数据集的覆盖范围。例如,Jabba,PacBioToCA和Proovread使用主动修整长读的错误区域而不是对其进行校正,从而在校正后损失了大量碱基[ 21 ],从而限制了所得数据集的实际使用。此外,这些工具使用独立的方法来改善长读的碱基质量,而该问题存在可扩展性问题,这些问题限制了它们在大规模基因组中的实际采用。
相反,ParLECH本质上是分布式的,可以扩展到数百个计算节点上的TB排序数据。ParLECH利用DBG像LoRDEC一样进行纠错。但是,为了提高纠错精度,我们提出了一种最宽路径算法,该算法将DBG的两个顶点之间的最小k- mer覆盖范围最大化。通过利用k在DBG上进行本地组装时,由于覆盖了更多信息,ParLECH能够产生比LoRDEC更准确的结果。与Jabba,PacBioToCA和Proovread不同,ParLECH不使用主动修剪来避免有损校正。ParLECH通过在indel错误的混合校正过程中校正原始长读中存在的或短读新引入的替换错误,进一步提高了基本质量。虽然有几种工具来纠正为第二代序列(替代错误例如,[ 4,5,9,13]),此阶段在为长时间读取而开发的纠错工具中通常被忽略。但是,此阶段对于混合错误校正很重要,因为Illumina读取会引入大量替换错误。现有的管道依赖于抛光工具,例如Pilon [ 22 ]和Quiver [ 23 ],以进一步提高校正后的长读质量。与ParLECH的分布式纠错管道不同,这些抛光工具是独立的,无法随着大型基因组扩展。
LorMA [ 24 ],CONSENT [ 25 ]和Canu [ 26是一些自纠错工具,这些工具仅利用长读来纠正其中的错误。这些工具可以自动绕过短读的替换错误,并能够产生准确的结果。然而,长阅读的每碱基测序成本非常高,因此获得高覆盖率的长阅读将是令人望而却步的,这对于没有参考基因组的纠错至关重要。尽管Canu通过使用tf-idf加权方案将长读段的覆盖率要求降低到LorMA和CONSENT的一半,但PacBio序列昂贵的成本却高出近10倍,仍然是将其用于大型基因组的主要障碍。由于这一实际限制,我们在本文中没有报告这些自纠错工具的准确性。
方法
indel纠错的原理
由于我们利用Illumina读取的较低错误率来纠正PacBio indel错误,因此,我们首先描述Illumina序列的错误模型及其对这些读取构成的DBG的后果。我们首先观察到k -mers,即固定长度k的DNA单词,在阅读过程中往往具有相似的丰度。这是k - mer的众所周知的特性,它源自源自DNA单一来源分子的每次读取[ 27 ]。让我们考虑代表基因组相同区域的两个读段R 1和R 2,并且R 1具有一个错误碱基。假设在位置p之间的k -merso s begin和p o s end表示R 1中的错误区域,其中错误基准位于p Ø小号È - [R [R ö ř=p ØsÈ Ñ d+p Ø小号b ë克我ñ2pØsË[R[RØ[R=pØsËñd+pØsbËG一世ñ2,我们可以提出以下主张。
权利要求1:至少一个的覆盖ķ的-mer - [R 1在之间的区域中p Ò小号开始和p ö小号端比任何的覆盖下ķ中的相同区域中聚体- [R 2。在附加文件1中可以找到该索赔的简要理论依据 。图 1显示了索赔背后的理由。
替代错误更正的基本原理
用Illumina读数校正插入缺失后,由于PacBio读数在Illumina短读数序列中占主导地位,因此在PacBio读数中引入了大量取代错误。为了纠正这些错误,我们首先将每个PacBio的长读片段划分为较小的子区域,如短读片段。接下来,我们仅将那些子区域分类为错误,其中大多数k -mers具有较高的覆盖率,而只有少数低覆盖率的k -mers作为异常值存在。
具体来说,我们使用Pearson的偏度系数(或中值偏度系数)对真实和误差子区域进行分类。图 2显示了基因组数据集中三种不同类型的子区域的直方图。图 2 a具有低和高的覆盖类似数量ķ聚体,使得该分区域几乎为零的偏度。因此,它不被视为错误。图 2 B也分类为真,因为该分区域大多与低覆盖填充ķ聚体。图 2 c为分类为错误,因为该分区域朝向高覆盖率很大程度上倾斜ķ聚体,并且只有少数低覆盖率ķ-mers作为异常值存在。现有的替代纠错工具不分析相邻的覆盖ķ聚体,并经常进行分类的真实又低覆盖率ķ聚体(例如,图 2 B中的错误。
我们基于中位数的方法的另一个主要优点是该方法的精度对k值的依赖性较低。中值很健壮,因为对于相对较小的k值,一些替换错误不会改变读取的中位k- mer丰度[ 28 ]。但是,这些错误会增加读取的偏斜度。在附加文件1中以数学方式显示了存在测序错误时中值的鲁棒性 。
基因组错误校正中的大数据框架
序列数据的纠错不仅是数据和计算密集型的,而且是搜索密集型的,因为k- mer谱的大小几乎随k的值(即最多4 k个唯一的k- mers)的增加而呈指数增长,我们需要在巨大的搜索空间中进行搜索。例如,具有100万个读取的长度为5000 bp的大型基因组,在一组近100亿个独特的k聚体中涉及超过50亿次搜索。由于现有的混合纠错工具并非针对诸如人类基因组之类的大规模基因组序列数据而设计,因此我们将ParLECH设计为配备了Hadoop和Hazelcast的可扩展的分布式框架。
Hadoop是Google MapReduce的开源抽象,MapReduce是用于大规模计算的完全并行和分布式框架。它从称为Hadoop分布式文件系统(HDFS)的分布式文件系统中以小子集读取数据。在Map阶段,对每个子集执行Map函数,以键值对的形式产生输出。然后,根据唯一键对这些中间键值对进行分组。最后,在每个组上执行Reduce函数,从而在HDFS上生成最终输出。
Hazelcast [ 29 ]是一个NoSQL数据库,它使用键值格式将大规模数据存储在分布式内存中。Hazelcast使用MummurHash在多个节点上平均分配数据并减少冲突。可以在O(1)时间内使用哈希表函数(例如get和put)从Hazelcast中存储和检索数据。多个Map和Reduce函数可以同时且独立地访问此哈希表,从而提高了ParLECH的搜索性能。
纠错流程
图 3显示了ParLECH的indel错误校正流水线。它包括三个阶段:1)构造一个de Bruijn图,2)在长时间读取中定位错误,以及3)纠正错误。我们将原始测序读段存储在HDFS中,而Hazelcast用于存储从Illumina短读段创建的de Bruijn图。我们遵循MapReduce编程模型开发图形构造算法,并为此使用Hadoop。在随后的阶段中,我们将同时使用Hadoop和Hazelcast来定位和纠正插入错误。最后,我们将经indel纠错的读取写入HDFS。我们将在后续部分中详细描述每个阶段。
如图4所示,ParLECH具有三个主要步骤,用于indel错误的混合校正 。第一步,我们从Illumina短读中构造DBG,并在每个顶点中存储每个k- mer的覆盖率信息。在第二步中,我们基于存储在DBG中的k- mer覆盖范围信息,将每个PacBio长读段划分为一个强和弱区域(或者分别是正确和错误区域)序列。我们在DBG中分别选择两个连续的强区域的左右边界k聚体作为源和目标顶点。最后,在第三步中,我们替换了两个边界k之间的长读的每个弱区域(即indel错误区域)DBM在DBG中具有相应的最宽路径,从而最大化了这两个顶点之间的最小k- mer覆盖范围。
图 5显示了ParLECH的替代错误校正管道。它具有两个不同的阶段:1)定位错误和2)校正错误。像indel纠错一样,相位的计算完全由Hadoop分配。这些基于Hadoop的算法在最后阶段生成并存储在HDFS中的indel错误校正读取的基础上工作。由Illumina短读产生并存储在Hazelcast中的相同k- mer光谱也用于校正取代错误。
De Bruijn图的构造和计数k -mer
算法1说明了用于建立de Bruijn图的MapReduce算法,图 6显示了该算法的工作。映射函数扫描数据集的每次读取,并发出每个k- mer作为中间键,并发出其前一个和下一个k- mer作为值。中间键表示de Bruijn图中的一个顶点,而中间值中的前k个和后k个mers分别表示输入边缘和输出边缘。关联的出现次数(1)也作为中间值的一部分发出。映射功能完成后,随机播放阶段会根据中间键(k-mer)。最后,reduce函数将与密钥对应的所有先前的k- mers和接下来的k- mers分别累积为传入和传出边缘。相同的reduce函数还将该特定k- mer发出的所有中间计数(即1)加在一起。在reduce函数的最后,使用Hazelcast的put方法将整个图形结构和每个k -mer的计数存储在Hazelcast的NoSQL数据库中。为了提高性能,我们仅发出单个核苷酸字符(即A,T,G或C,而不是整个k-mer)以存储传入和传出边缘。实际ķ聚体可以通过预先计算来获得/附加与该字符ķ -1前缀/后缀顶点ķ聚体。
查找长时间阅读的indel错误
为了找到PacBio长读中的错误,ParLECH使用了存储在Hazelcast中的de Bruijn图中的k- mer覆盖率信息。整个过程以令人尴尬的并行方式设计,并作为仅Hadoop Map的工作而开发。每个图任务扫描每个PacBio读数,并生成与de Bruijn图中k值相同的k -mers 。然后,对于每个k-mers,我们在图中搜索覆盖率。如果覆盖率降到预定义的阈值以下,我们会将其标记为弱,表示长读中存在插入缺失错误。长时间读取可能会发现多个连续错误。在这种情况下,我们将整个区域标记为弱。如果覆盖范围超出预定义的阈值,则表示该区域为强或正确的。为了纠正薄弱区域,ParLECH使用下一部分描述的最宽路径算法。
纠正插入错误
就像定位错误一样,我们的校正算法也令人尴尬地并行化,并开发为仅Hadoop Map的工作。像LoRDEC一样,我们使用一对强k聚体,将长读的弱区域围起来作为DBG中的源和目标顶点。在这两个顶点之间的DBG中的任何路径都表示一个序列,该序列可以通过短读进行组合。我们为此本地程序集实现最宽路径算法。最宽路径算法可最大化DBG中路径的最小k- mer覆盖范围。我们使用基于我们的假设最宽的路径具有的概率ķ从具有序列错误的阅读所产生的路径中,具有最小覆盖率的Mermer比从基因组中相同区域的没有测序错误的阅读所产生的路径更高。换句话说,即使一条路径中有一些k- mer具有高覆盖率,路径也很可能包含一些低覆盖率的k- mer,这将成为选择最宽路径的障碍。图 1。
因此,ParLECH配备了最宽路径技术,可以找到更准确的序列来校正长读中的弱区域。算法2显示了我们在ParLECH中实现的最宽路径算法,这是对Dijkstra最短路径算法的稍加修改,其中使用了优先级队列,从而导致时间复杂度为O(E log V)。ParLECH而不是计算最短路径,而是遍历图形并更新从源顶点开始的每个路径的宽度,作为该路径上任何边的最小宽度(第15行)。
查找替换错误
算法3显示了定位替代基础错误的过程。为了定位长读段中的替换错误,我们首先将长读段分成较短的片段。由于较小子区域中的k- mer倾向于具有相似的丰度[ 27 ],因此会将较长的读段分为高覆盖率片段和低覆盖率片段序列。如果片段属于基因组的低覆盖率区域,则该片段中的大多数k-mer预计覆盖率较低。否则,预期k聚体具有高覆盖率。这种方法使ParLECH能够更好地区分真正的低覆盖率和错误的高覆盖率k-mers。默认情况下,ParLECH使用短读段的长度作为短片段的长度。但是,可以使用用户定义的长度轻松修改它。长读取的最后一个片段的长度可以小于默认(或用户定义的)长度。为了纠正替换错误,该片段始终被忽略,因为它被认为不足以收集任何统计信息。
将长读段划分为较短的片段后,我们将每个片段的k- mer覆盖率的皮尔逊偏斜系数(在算法3中称为skewThreshold)作为阈值,以将这些片段分类为真还是错误。如果片段的偏斜系数处于一定间隔内,则将片段分类为真实片段,而不会出现任何错误。此外,大部分具有低覆盖率k -mers的片段也被忽略。所有其他片段(即,高度偏向高覆盖率k - mers的片段)被分类为错误的。通过这种分类,即使基因组的所有低覆盖率区域均具有低覆盖率k,也将被认为是正确的-mers,但几乎与相邻的k -mers相似。
将片段分类为是和错误后,我们将所有错误片段划分为高覆盖率和低覆盖率。如果片段的中位k- mer覆盖范围大于整个k- mer光谱的中位覆盖范围,则将该片段分类为高覆盖率。否则,该片段属于低覆盖区域。ParLECH使用真实和错误k-mers模式来定位错误,并以最大可能使所有k-mers变为真的方式搜索校正集。
纠正替代错误
为了纠正替换错误,ParLECH使用与Quake [ 4 ]类似的多数投票算法。但是,我们有两个主要区别。首先,ParLECH的多数表决算法是完全分布式的,可以扩展到数百个节点。其次,与Quake不同,ParLECH对基因组的低和高覆盖区域使用不同的阈值以提高准确性。对于前一阶段中检测到的每个错误碱基,ParLECH用所有不同的核苷酸字符(即A,T,G和C)替换碱基,并计算该碱基对所有k -mers的覆盖率。最后,将误差基替换为所有的k具有该碱基的-mers大于或等于该区域的指定阈值。
结果
在本节中,我们显示使用各种现实世界序列数据集的ParLECH的实验结果。
数据集
我们针对四个真实数据集(包括大肠杆菌,酵母,果蝇和人类基因组)评估ParLECH 。数据集的详细信息汇总在表 1中。其中的前三个是相对较小的基因组。我们使用它们将ParLECH的准确性与现有的混合纠错工具(例如LoRDEC,Jabba和Proovread)进行比较。这些数据集还用于分析可伸缩性,并比较其他资源消耗统计信息,例如内存需求和CPU小时。
表1数据集
第四是最大的。它是一个庞大的人类基因组数据集,包含近764 GB的测序读物,包括Illumina和PacBio序列。我们用它来展示ParLECH的扩展能力,以及数百个计算节点上数百GB的测序读取。在我们的实验中,其他现有工具无法产生数据集的结果。
计算环境
为了评估ParLECH,我们使用SuperMic [ 30 ] HPC集群,表 2总结了其配置。一个作业最多可以使用128个计算节点。每个节点有20个内核,64 GB主内存和一个250 GB硬盘驱动器(HDD)。请注意,在基于磁盘的HDFS上运行的Hadoop作业的主要瓶颈是I / O吞吐量,因为每个节点仅配备一个HDD。我们期望通过在每个节点和/或SSD上使用多个HDD可以显着提高ParLECH的性能。我们之前的工作[ 31 – 33 ]演示了各种计算环境对大规模数据处理的影响。
表2实验环境
准确性指标
我们按以下三个方面评估ParLECH的准确性:1)%对齐的读数和2)%对齐的碱基:这些准确性指标表明校正后的长阅读与参考基因组的对齐程度。我们以读取总数和数据集中存在的总碱基数为单位报告百分比比对。对于除人类基因组以外的所有数据集,我们使用BLASR [ 34 ]将长的读段与参考基因组进行比对,因为它通过桥接长的indel误差报告了更长的比对。但是,对于大型人类基因组,我们使用BWA-mem [ 35 ]快速获得比对结果。
2)N50统计数据:在校正后的数据集中保留输入读取深度也很重要。较短的读数和/或减小的深度可能会显示更好的对齐方式,但可能对下游分析产生负面影响。因此,我们测量数据集的N50统计量以指示对长读取的错误进行丢弃或修整,而不是对其进行纠正。
3)增益:我们还使用增益度量[ 5 ]来测量ParLECH有效纠正的误差的比例。增益定义为
其中TP(真-正)是成功纠正的错误基准数,FP(假-正)是错误更改的真基准数,FN(假-负)是错误基准的数错误地检测为正确。
为了测量TP,FP和FN,我们遵循[ 36 ]中描述的过程。令r为原始读数,r c为校正后的读数。我们通过将r映射到参考基因组并记录差异来推导实际测序误差E m的集合。然后,我们测量Ë - [R ,该组中剩余的错误- [R Ç,通过应用之间的全局对准ř Ç并且其中所述基因组区域ř被映射到和记录在对准的差异。最后,我们计算TP = | È米∖ ë [R |,˚F P = | E r ∖ E m |,而F N = | Ë [R ∩ ê米|。
与现有工具的比较
表 3比较了ParLECH与LoRDEC,Jabba和Proovread的准确度,以对齐读取和对齐碱基的百分比表示。另一方面,表 4比较了增益方面的精度。我们通过并行运行BLASR的多个实例以有效处理大型数据集,使用BLASR测量准确性指标。
表3精度比较(对齐)
表4精度比较(增益)
结果表明,在对齐碱基和增益方面,ParLECH可以比LoRDEC更准确地纠正indel错误。与LoRDEC一样,ParLECH不能纠正没有强k聚体的长读。但是,ParLECH会在所有读取中搜索强k聚体,而不管它们的长度如何,而LoRDEC会过滤掉长度小于阈值的读取。
尽管与ParLECH相比,Jabba可以获得更高的对准精度,但是以降低深度为代价获得了这种较高的对准精度。这是因为,与ParLECH不同,Jabba选择丢弃一些未更正的读取,而不是对其进行纠正。如表3所示, 与Jabba相比,ParLECH中得到的错误校正数据集中的读取总数明显更高。
与ParLECH相比,Proovread可获得几乎类似的对齐精度。但是,它会修剪每个读取中的许多错误区域,并在错误区域中断错误的较长读取,从而产生多个较短的读取。因此,与ParLECH相比,Proovread产生的N50明显更低。
通过纠正长读的替换错误,我们进一步提高了准确性。LoRDEC中不存在此阶段。但是,它对提高数据质量具有重大影响。如表3和表 4所示,通过校正替换误差,ParLECH从indel误差校正后的输出中就对齐和增益而言将数据集的质量提高了1-3%。
可扩展性
图 7展示了ParLECH不同阶段的可伸缩性。图 7a展示了果蝇数据集的ParLECH indel纠错管道的每个阶段的可伸缩性。结果表明,随着计算节点数量的增加,所有三个阶段的处理时间(即构造一个de Bruijn图,定位长读取中的错误以及纠正长读取中的错误)几乎线性地改善。因此,随着我们添加更多的计算节点,ParLECH的总体执行时间也显示出几乎线性的可伸缩性。
图 7 B描述了对同一果蝇数据集ParLECH的替代纠错管线的不同阶段的可扩展性。像indel错误校正阶段一样,这些阶段也可以随着节点数量的增加而线性扩展。
图 8将ParLECH与现有的纠错工具进行了比较。如图8a所示 ,在相同大肠杆菌数据的单个节点上,ParLECH的执行速度比Jabba快1.5倍,比Proovread快7.5倍。在单个节点上,LoRDEC的性能比ParLECH稍好(快1.2倍),因为这两个工具的渐近复杂度相似(O(E log v)),而ParLECH有一些分布式计算开销。但是,利用Hadoop和Hazelcast的强大功能,ParLECH的令人尴尬的并行算法可以轻松地分布在多个节点上,并最终在性能上优于LoRDEC,这不是为分布式计算而设计的。即使LoRDEC的校正算法可以在每个长读取中独立工作,但由于缺少适当的调度程序,因此无法分配计算量。
图 8 b相地震[取代纠错管道比较4 ],现有的工具来纠正的Illumina短的取代错误读序列。由于上面提到的类似原因,当ParLECH分布在多个节点上时,其性能要比Quake好几个数量级。为了与Quake进行公平的比较,我们仅将E. coli Illumina数据集用于此实验。由于ParLECH的主要动机是纠正长时间读取的错误,因此我们没有报告ParLECH和Quake之间的准确性比较结果。
讨论区
不同遍历算法对indel纠错的影响
为了更好地理解我们最宽路径算法(ParLECH WP)的好处,我们将其准确性与该领域中流行的其他两种图形遍历算法的准确性进行了比较。第一个是Dijkstra的最短路径算法(ParLECH SP),另一个是贪婪的遍历算法(ParLECH Greedy)。表 5报告了在实际PacBio数据集上所有三种算法的准确性结果。
表5不同遍历算法的影响
ParLECH SP用对应于DBG中最短路径的序列替换长读中的弱区域。在遍历期间,ParLECH Greedy始终在所有相邻顶点之间选择覆盖率最大的顶点。对于ParLECH Greedy而言,遍历通常以一条死路结束。因此,我们使用分支因子b(默认为100),以便从源顶点遍历b个连续的顶点之后,如果算法不能满足目标顶点,则回溯。使用此分支因子访问源顶点的所有后继节点时,该算法将中止。
尽管ParLECH SP具有与ParLECH WP类似的性能,但是由于最短路径的反直观特性以及校正所需的强(高覆盖率)k -mer,它无法直接利用k- mer覆盖率信息前进的方式,对准确性产生不利影响。另一方面,ParLECH Greedy可以利用k- mer覆盖率信息的优势,但是其准确性很大程度上取决于分支因子的较高值,这对其性能造成了严重限制。
我们最宽的路径算法不仅可以优化性能,而且可以更好地利用k- mer覆盖信息。该算法使路径中k- mer的最小覆盖范围最大化。与ParLECH SP和ParLECH Greedy相比,ParLECH WP更好地平衡了DBG特定路径中所有k- mers的覆盖范围,从而提高了所得数据集的准确性。
如表5所示 ,最宽的路径与贪婪算法相比显示出近15%到25%的对齐精度,后者在所有算法中表现最差。与最短路径算法相比,最宽路径对数据集显示了近6%到13%的改进。
资源消耗统计
利用Hadoop和Hazelcast的功能,ParLECH能够在CPU时间和DRAM利用率之间进行权衡。也就是说,基于数据大小和可用资源,可以调整ParLECH以利用磁盘空间,但需要花费更多的执行时间。
表 6将ParLECH与现有纠错工具相对于E. coli数据集的CPU-小时和DRAM资源消耗进行了比较。对于最佳的(最短的)执行时间,ParLECH消耗的CPU时间几乎与LoRDEC相似,与Jabba和Proovread相比要少得多。为了达到这一性能,ParLECH需要DRAM中的整个k- mer光谱。因此,它利用了将近32GB的DRAM。但是,如果配置正确,ParLECH可以处理相同的大肠杆菌数据,而消耗的DRAM数量要少得多(仅5GB)。但是,由于DRAM和硬盘之间的上下文切换,该过程需要花费更多时间才能完成。
表6将ParLECH的资源消耗与现有的纠错工具针对大肠杆菌数据集进行比较
处理大规模人类基因组
为了展示具有数百GB测序数据的ParLECH的数据处理能力及其在数百个计算节点上的扩展能力,我们分析了一个大型人类基因组数据集。312 GB的PacBio数据集包括超过2300万个长读段,平均长度为6587个碱基对。相应的Illumina数据集大小为452 GB,包含超过14亿次读取,读取长度为101个碱基对。要分析此大型数据集(累积764 GB),我们使用128个SuperMic群集节点。我们调整了ParLECH以获得最佳性能。这意味着我们将整个de Bruijn图分布在整个集群的可用内存中。
如表7所示,插入缺失纠错过程大约需要28.6小时 。插入/缺失错误纠正后,78.3%的读数和75.4%的碱基成功地与参考基因组比对。替代错误校正过程又花费了26.5小时,成功地将79.73%的读数和80.24%的碱基与参考基因组比对。
表7校正人类基因组
结论
在本文中,我们为PacBio长读提供了一个分布式混合错误校正框架,称为ParLECH。为了对大规模序列数据进行高效且可扩展的分析,ParLECH使用了Hadoop和Hazelcast。ParLECH使用de Bruijn图和来自短读的k- mer覆盖信息来纠正长读的错误。我们开发了最宽路径算法的分布式版本,以最大化从Illumina短读构建的de Bruijn图的路径中的最小k- mer覆盖率。我们将长读中的indel错误区域替换为其相应的最宽路径。为了提高替代准确性,我们开发了一种基于中值统计的策略,该策略考虑了相对k-基因组特定区域中的多聚体丰度,以分别照顾高和低覆盖率区域。我们的实验结果表明,ParLECH可以扩展成百上千个计算节点,并可以准确地提高大规模测序数据集的质量。在纠正错误的同时,ParLECH会分别照顾测序读数的高覆盖率和低覆盖率区域,并且能够更好地根据邻域平衡k- mer覆盖率。因此,我们认为这是检测和纠正RNA和元基因组序列错误的良好起点。
数据和资料的可用性
缩略语
CCT:
计算技术中心
DBG:
德布赖恩图
脱氧核糖核酸:
脱氧核糖核酸
DRAM:
动态随机存取存储器
GB:
千兆字节
硬盘:
硬盘驱动器
HDFS:
Hadoop分布式文件系统
HPC:
高性能计算
LSU:
路易斯安那州立大学
NoSQL:
不仅SQL
Parlech:
使用混合方法并行并行读取错误纠正
RNA:
核糖核酸
固态硬盘:
固态硬盘
威斯康星州:
威斯康星大学
参考文献
- 1个
古德温(Goodwin S),麦克弗森(McPherson)JD,麦康比(McCombie)时代的到来:十年的下一代测序技术。Nat Rev Genet。2016; 17(6):333–51。
- 2
达斯·阿克(Das AK),李·K(Lee K),朴善俊(Park SJ)。Parlech:使用hadoop并行并行读取错误。在:2018 IEEE国际生物信息学和生物医学会议(BIBM)。IEEE:2018年。341–8。https://doi.org/10.1109/bibm.2018.8621549。
- 3
Lou DI,Hussmann JA,McBee RM,Acevedo A,Andino R,Press WH,Sawyer SL。使用圆环测序可将高通量dna测序错误减少几个数量级。Proc Natl Acad科学。2013; 110(49)。https://doi.org/10.1073/pnas.1319590110。
- 4
Kelley DR,Schatz MC,Salzberg SL。雷神之锤:质量意识的检测和序列错误的纠正。基因组生物学。2010。https ://doi.org/10.1186/gb-2010-11-11-r116。
- 5
Yang X,Dorman KS,Aluru S. Reptile:具有代表性的平铺,用于短读取错误校正。生物信息学。2010; 26(20)。https://doi.org/10.1093/bioinformatics/btq468。
- 6
Medvedev P,Scott E,Kakaradov B,PevznerP。覆盖范围不统一的高通量测序数据集的错误校正。生物信息学。2011; 27(13)。https://doi.org/10.1093/bioinformatics/btr208。
- 7
Ilie L,Molnar M. Racer:快速准确地纠正读取错误。生物信息学。2013。https ://doi.org/10.1093/bioinformatics/btt407。
- 8
Salmela L,SchröderJ。通过多次比对纠正短读中的错误。生物信息学。2011; 27(11)。https://doi.org/10.1093/bioinformatics/btr170。
- 9
Song L,Florea L,LangmeadB。更轻:无需计数即可进行快速且高效存储的序列错误校正。基因组生物学。2014; 15(11)。https://doi.org/10.1186/s13059-014-0509-9。
- 10
Liu Y,SchröderJ,Schmidt B.Musket:基于多阶段k-mer光谱的照明序列数据纠错器。生物信息学。2013; 29(3)。https://doi.org/10.1093/bioinformatics/bts690。
- 11
SchröderJ,SchröderH,Puglisi SJ,Sinha R,Schmidt B.Shrec:一种短读错误校正方法。生物信息学。2009; 25. https://doi.org/10.1093/bioinformatics/btp379。
- 12
Liu Y,Schmidt B,Maskell DL。Decgpu:使用cuda和mpi在大规模并行图形处理单元上进行分布式错误校正。BMC生物信息学。2011; 12(1)。https://doi.org/10.1186/1471-2105-12-85。
- 13
Kao WC,Chan AH,Song YS。回声:无参考的短读纠错算法。基因组研究。2011; 21(7)。https://doi.org/10.1101/gr.111351.110。
- 14
Das AK,Shams S,Goswami S,Platania R,Lee K,Park SJ。Parsech:使用hadoop对大规模基因组进行并行测序错误校正。在:第9届国际BICob会议论文集。ISCA:2017年。https://www.searchdl.org/PagesPublic/ConfPaper.aspx ? ConfPprID = 26C12DF8-87DB-E711-A40B-E4B3180586B9 。
- 15
Salmela L,Rivals E. Lordec:准确高效的长读错误校正。生物信息学。2014; 30(24):3506-14。
- 16
Miclotte G,Heydari M,Demeester P,Audenaert P,Fostier J.Jabba:使用最大精确匹配对长测序读数进行混合错误校正。在:国际生物信息学算法研讨会。施普林格:2015年。175–88。https://doi.org/10.1007/978-3-662-48221-6_13。