最近开发了几种长读纠错方法。 这些方法可以分为两类:要么长读长通过对齐自我校正 [PBDAG-Con ( Chin et al. , 2013 ), PBcR ( Berlin et al. , 2015 )],或者使用混合策略和互补短读。 在这种情况下,短读可以与长读对齐 [Nanocorr ( Goodwin et al. , 2015 ), CoLoRMap ( Haghshenas et al. , 2016 )],也可以组装成与长读对齐的组装 contig [ HALC( 鲍和兰,2017 )]。 De Bruijn 基于图的方法,通过遍历图的路径纠正长读取,最近开始发展,混合 [LoRDEC ( Salmela and Rivals, 2014 ), Jabba ( Miclotte et al. , 2016 )] ,以及非混合 [LoRMA ( Salmela et al. , 2017 ), Daccord (Tischler and Myers, 2017, unpublished)]。 NaS ( Madoui et al. , 2015 ) 不要用短读来纠正长读,而是用长读作为模板来招募短读,并将其组装成重叠组来纠正序列。 这种方法需要将短读与长读对齐,才能找到与长读对齐的种子。 然后将种子与所有其他短读进行比较,以招募与长读相对应的低质量区域的新短读。
1.2 贡献
我们介绍了 HG-CoLoR,这是一种新的长读混合纠错方法,它结合了短读与长读对齐(如 CoLoRMAp),以及使用 de Bruijn图,从短读(如在) LoRDEC 和 Jabba 中)构建。 但与这些方法不同,HG-CoLoR 使用可变阶 de Bruijn 图,而不是经典图。 因此,HG-CoLoR 专注于种子和扩展方法,将短读与长读对齐找到的种子用作可变阶 de Bruijn 图上的锚。 然后将种子链接在一起,以纠正短读未覆盖的长读区域。 我们的实验表明,与最先进的混合和非混合长读纠错方法相比,HG-CoLoR 它为运行时间和结果质量提供了最佳平衡,是唯一能有效扩展到真核基因组的基因组。 他们还表示,HG-CoLoR 纠错效率是指令人满意的装配效果。
变阶de Bruijn图
2.1 de Bruijn 图
de Bruijn 图是一种广泛应用于组装工具中的数据结构。 它的节点被定义为读段 k -mers,它的边表示由节点表示 k-mers 之间长度为 k-1 前缀-后缀重叠。 然而,尽管它很有用,但众所周知,de Bruijn 因为 k -mer 施工时固定尺寸。一方面,选择更大的 k 图纸可以更好地处理重复区域,但会导致覆盖不足区域的边缘丢失。 另一方面,选择较小的 k 图片的边缘将被允许在覆盖不足的区域正确检索,但在重复的区域会导致更多的分支,从而带来更多的困难。
为了克服这些问题,现代装配器通常构建多个不同的阶级 de Bruijn 图。 虽然这种方法可以提高组装集的质量,但由于需要构建和存储多张图片,它也大大增加了运行时间和内存消耗。
最近,一些方法代表权的所有方法de Bruijn图,最多为K,在单个数据结构中。 在单个数据结构中 例如,流形 de Bruijn 图 ( Lin and Pevzner, 2014 ) 将任何子串与节点相关,而不是关联 k -mers。 但由于尚未实施,这种结构主要具有理论意义。 提出了可变阶 de Bruijn 另一种实现图 Boucher 等人 (2015 年) 。 它依赖于 Bowe 等人对 de Bruijn 图片的简洁表示。 (2012) ,并支持其他允许动态更改图形顺序的操作。 然而,目前的实现只支持最多的建设 64 这太严格了,因为我们不想限制最大的顺序。
因此,我们引入了可变阶 de Bruijn 图片的新实现。 它依赖于 PgSA ( Kowalski et al. , 2015 ),关于一组阅读的各种查询的索引结构允许回答。
2.2 PgSA 概述
PgSA 它是一种允许索引一组读取的数据结构,以回答给定的字符串 f :
读什么? f ?
读多少次? f ?
位置是 f 什么?
出现的次数是 f 多少?
读什么? f 只出现一次?
读多少次? f 只出现一次?
出现的位置是什么? f 在 reads 只出现一次
在这些查询中, f 可以作为 DNA 符号序列给出,也可以作为一对数字给出,分别表示读取 ID 和 f 在该读取中的起始位置。
如前所述,为了回答这些查询,必须建立读取索引。 PgSA 如下构建它。 首先,将所有具有重叠的读数与这些重叠连接起来,以获得假基因组。 如果在创建假基因组后留下了一些没有发现重叠的读数,它们会在其末尾简单地连接起来。 然后,计算伪基因组的稀疏后缀数组,以及允许从伪基因组中的原始集合检索读数的辅助数组。 该辅助数组的每条记录都将原始读取集合中的读取 ID 与伪基因组中的读取偏移相关联,并且还包含标志数据,这些数据带来关于读取的补充信息,用于处理查询。 查询是通过对后缀数组进行简单的二进制搜索来处理的,并使用此补充信息。
由于在假基因组计算期间读数重叠,并且由于 PgSA 不记录任何有关其长度的信息,它只允许索引和查询一组恒定长度的读数。 但是,查询字符串的长度不是在编译时设置的,因此 PgSA 支持 f 对可变长度
2.3 变阶de Bruijn图表示
最大阶 K ,并且读取的 K -mers 用 PgSA 索引,以便能够表示所有 de Bruijn 图的节点,直到这个最大阶。 阶的 de Bruijn 图,给定节点的边 k ≤ K 是通过查询索引来检索的,使用第三个查询(即 f 什么?),后缀长度为 k - 1 的 k -mer。 查询返回一组数字对,每对代表一个 K -mer ID 和查询字符串在该 K -mer 中的出现位置。 然后处理这些对,并且仅保留那些位置分量不代表 k -1 的 K 那些(以便可以将出现向右扩展为 k -mer)。 这些扩展的出现表示 k 的前缀-后缀重叠的 k - 1 。 mer 与由当前考虑的节点表示的 k-mer,因此定义了该节点的边缘
由于通过查询索引来检索边,因此向后遍历图也很容易。 对于给定的订单 k ,不是使用节点表示的 k -mer 的后缀来查询,而是简单地使用它们的前缀来查询索引。 然后以与前向遍历相同的方式处理返回的对集合,除了仅保留其位置分量不代表 k -1 的 K 来定义边。 的 de Bruijn 图中检索任何给定节点(向前或向后)的边的 k ≤ K 中给出了允许在 补充算法 S1 。
3.1 概述
如前所述,HG-CoLoR 结合了最先进的两个想法:短读取与长读取的对齐,以及使用具有可变顺序的特殊性的 de Bruijn 图。 为此,它专注于种子和扩展方法,通过将短读取与长读取对齐来发现种子。 种子被定义为一个 5 元组( id 、 pos 、 len 、 score 、 seq ),其中: id 是与种子关联的长读的 id , pos 是长读上对齐的开始位置, len 是比对的长度, score 是比对的分数, seq 是在这个位置与长读比对的短读的实际共有序列。 一旦种子被检索到,它们通过扩展它们的序列连接在一起,在前面描述的可变阶 de Bruijn 图的帮助下。 该图是从短读中构建的,通过选择最大顺序 K 并用 PgSA 索引它们的 K -mers,并通过查询索引进行遍历,如前所述。 对于每次长读,遍历图以将相关种子链接在一起,这些种子用作锚点。 因此,将两个种子链接在一起所遵循的图形路径指示了长读的未覆盖区域的校正序列。 最后,一旦所有的种子都链接起来,通过进一步遍历图来扩展获得的序列的尖端,以到达原始长读的末端。 HG-CoLoR 的工作流程总结在 图 1 及其四个主要步骤如下所述。
HG-CoLoR 的工作流程。 首先,使用 QuorUM 纠正短读取,以尽可能多地消除测序错误。 然后, K 为该图选择 K KMC3 获得来自校正的短读数 为了进一步降低错误率,对校正的短读数应用过滤步骤,并 K 去除 出于同样的原因,只有来自校正的短读数的固体 K -mer 用 PgSA 进行索引,以表示可变阶 de Bruijn 图。 然后在 BLASR 的帮助下将先前过滤的更正短读取与长读取对齐,以找到种子。 然后独立处理每个长读取。 对于它们中的每一个,遍历该图以将相关种子链接在一起,用作锚点,以便检索长读取的未覆盖区域的校正序列。 然后,将所有种子链接在一起后获得的序列的尖端通过遍历图在两个方向上扩展,以到达初始长读的末端。 最后输出校正后的长读
是 LoRDEC)具有高度相似性,但使用源自种子的序列作为图上的锚点与 尤其 ( 使用 来自长读。 事实上,在高度错误的长读取的情况下,即使是短的、可靠 k -mers 也很有可能出错。 这种错误 k -mer 将导致使用错误的锚点,从而导致不满意的校正结果。 然而,由于短读取是准确的,它们产生的种子可以用作可靠的锚,几乎没有错误的机会。 此外,使用这些种子作为锚点还允许直接构建具有较大 k ,而无需执行多轮校正,并且在每一步都增加 k ,与 LoRMA 的方式相同。
3.2 短读校正和图构建
尽管在进行任何校正之前短读数已经准确,但它们仍然包含一小部分错误。 由于 HG-CoLoR 试图从短读取中构建高最大阶的可变阶 de Bruijn 图,因此必须从该数据中删除尽可能多的错误,以避免图中的错误路径。 为此,在 QuorUM (Marçais et al., 2015) 的帮助下纠正 了 短 读 ,在我们测试的所有短读纠错工具中,它提供了运行时间和纠正质量之间的最佳权衡。
最大阶数 K 然后为该图选择 Kokot KMC3 从校正的短读数中提取 K-mers ( et al. , 2017 )。 为了进一步降低short reads的错误率,从而避免图上的错误种子和嵌合路径,包含弱 K -mers(即 用于 出现小于某个阈值的K-mers)的short reads被过滤掉,不 以下步骤,并且仅使用实心 K -mers 来构建图形。
一旦为所有长读找到并合并了种子,HG-CoLoR 就会独立处理每个长读,并尝试通过将它们视为对并遍历图来将它们相关联的种子链接在一起。 对于给定的对,具有最左侧对齐位置的种子称为 源 ,具有最右侧对齐位置的种子称为 目标 。 为了将一对种子链接在一起,源的最右边 K -mer 和目标的最左边的 K -mer 被用作图上的锚点。 然后遍历该图,以找到两个锚点之间的路径。 当找到这样的路径时,它所指示的序列被用作对长读的未覆盖区域的校正。 搜索两个种子之间的路径首先从源到目标执行,如果找不到路径,则再次执行搜索,从目标到源。 搜索是双向进行的,因为根据遍历的起点,可能会探索到图的不同部分,从而导致不同的遍历。
HG-CoLoR 从最高阶开始遍历可变阶 de Bruijn 图。 仅当该节点没有当前订单的任何边时,或者如果其当前订单的所有边都已被探索并且不允许到达目标,则该订单在给定节点处减少。 当图的阶数减少时,来自源和来自目标的 k -mers 的大小也相应减小,因此它们仍然可以用作锚点。 还设置了最小顺序,因此 HG-CoLoR 不会遍历表示短且可能无意义的重叠的 de Bruijn 图。
当面对给定阶 数 k ,HG-CoLoR 执行贪心选择。 的节点的边 k 总是首先探索通向代表具有最高出现次数 太多节点 k ,尽管有校正和过滤步骤,但可能包含测序错误。 阶的 de Bruijn 图探索边之后 k < K ,由于没有找到较大阶的边,因此 K 在继续遍历之前, 为了避免探索太多的分支路径。