第三代测序(3GS)技术可以产生数千个碱基的长序列。然而,其目前的错误率估计在15-40%,明显高于目前流行的下一代测序(NGS)技术(不到1%)。基本的生物信息学任务,如基因组从头组装和变异呼叫,需要从这些长但错误的3GS序列中提取高质量的序列。
结果。我们描述了一个通用和高效的线性复杂度共识算法Sparc,以促进基因组从头组装。Sparc利用目标基因组区域的序列集合构建稀疏k-mer图。通过稀疏诱导重加权图搜索最接近最可能基因组序列的最重路径作为共识序列。Sparc支持将NGS和3GS数据结合使用,这大大提高了成本效率和计算效率。
Sparc实验表明,利用PacBio和Oxford Nanopore测序技术,我们的算法可以有效地提供高质量的一致序列。Sparc仅使用30× PacBio数据,可以达到0.5%的误差率。对于更具挑战性的Oxford Nanopore数据,Sparc也可以在与NGS数据结合时获得类似的错误率。
与现有方法相比,Sparc计算一致性的准确性更高,内存和时间减少约80%。
摘要:
Sparc软件通过高效的线性复杂度一致性算法,将目标基因组区域的序列构建k聚体图,帮助基因组的从头组装。权重最大的路径最近似于基因组真实序列,通过稀疏分解诱导的算法对序列图谱不断重新调整权重,从而得到一致性序列。Sparc 能够支持同时使用NGS和3GS数据,极大改善成本和计算方法有效性。
使用测序深度为30× 的PacBio 数据,Sparc能够达到错误率低于0.5%;使用更具有挑战性的OxfordNanopore 数据,Sparc能够达到和NGS数据相似的错误率。与现行方法相比,Sparc对于一致序列的计算更加准确,并且节省80%的内存和时间。
前言:
与前面几代测序技术相比,三代测序技术在每个片段能够提供5-120kb的读长。然而,根据2012年和2015年两篇文献的介绍,Pac Bio测序错误率大约为15%(2012年),OxfordNanopore 测序的错误率高达40%(2015年),高的测序错误率为使用3GS测序进行基因组拼接提出了很大的挑战。
使用三代测序数据进行基因组的从头组装,主要需克服三个瓶颈:1)找到重复序列;2)序列对比;3)序列优化/序列纠错。高效地纠正这些长错误序列是个重大的难题,下图显示这三个主要挑战,其中最后一步是这篇文献的主要解决的问题:
一致性算法对于基因组拼接非常关键,有以下几个原因:1)一致性算法是汇编程序产生高质量输出结果的必要部分。2)纠错程序提高了输入序列的准确 度。每个组装重叠序列(或者称为主干序列-backbone)作为靶序列,每次测序结果作为查询序列(query sequences)与靶序列对比。另一种情形,每个长错误测序结果作为靶序列,NGS或者3GS序列作为查询序列;通过同时使用NGS数据和3GS数据,即混合组装方法,是广泛采用的组装方法。由于NGS短序列的成本更低、准确率更高,因此将两种数据结合可以降低成本,并且缓解整个管线的计算压力。3)最后一个步骤占用了大部分的计算时间,因此,高效的一致性算法极大地加速了基因组组装过程。
我们借助了着名的de Bruijn/k聚体图,针对3GS数据设计了一种更简便的方 法。在我们的sparc算法中,每个节点是一个k聚体,为节省内存,同一位置的k聚体进行合并,k聚体之间的连接的得分代表连接的可靠性,因此,最终得分 最高的路径是最近似于一致序列。Sparc可以在低内存的条件下提供极好的结果,而不用使用其他作图简化技术。由于技术的简便性,此算法相比较主流的 3GS测序项目PBdagcon,速度加快五倍,内存也节省五倍。此外,由于主流NGS测序数据的准确性(>99%)更高,所以利用成本更低的NGS代替部分高成本的3GS数据是值得的,在混合情形下,Sparc能够提供高质量的结果。
实验方法:
1、搭建原始图
首先搭建一个原始的k聚体图,称为backbone(骨 架),即靶序列,k聚体是位置特异的,不同的位置相互独立。将k聚体分配到每个位置占用大量内存,特别是在下一个实验步骤。为了节省内存,我们构建一个稀疏k聚体图,在每g个碱基存储一个k聚体,从而减少高达1/g的内存消耗。同时我们记录k聚体节点之间的连接,连接的得分代表相应路径的置信度。在原始图 中,连接的多样性是1,因此连接的得分是1。
2、与靶序列对比,建立全景图
(i) 如果查询序列显示新的路径,我们建立一个 分支,分配新的k聚体节点和连接。如下图3b中显示,当我们将Seq1的最后六个碱基与靶序列对照时,两个新的连接ACC和AAA 的复杂性是1,分配一 个k聚体节点。(ii) 如果查询序列和现有序列完美契合,我们不分配新的节点,而是增加连接的得分,我们也可以从下图3b中看出,当我们对照Seq1序 列的前五个碱基时,节点AC, GG和连接 TGG 和原靶序列重合,并且连接得分增加1分。当我们和现有图对照Seq2的最后六个碱基时,节点和连接与 Seq1重合,连接得分增加1分。这个构图过程和de Bruijn做图方法相似,但是我们区分了节点以及他们的位置。
3、调整图的权重得分通 过上一步骤,得分最高的路径具有最高的置信度,也就是最接近于真实的序列。然而,直接使用这个结果可能导致错误,一个简单的例子是长的插入错误,为了避免这种情况的发生,我们将连接得分减去一部分,减去的这部分取决于覆盖率。同时引入参数b增加可靠连接的权重(b=5~10)。
4、输出结果
Sparc已经在多种数据集上进行了测试,我们的实验是基于对PacBio数据集和OxfordNanopore数据集的测试。Sparc是一个碱基水平的一致性算 法,公平起见,我们用我们的程序和最相似的项目PBdagcon(主要用在HGAP和MHAP管线用来纠正序列)做了对比。
两个程序都输入一样的数据,得到组装骨架和用DBG2OLC收集每一个骨架有关联的序列。Blasr用来序列对比,最后的一致错误率通过MUMmer3里的ednadiff方程来计算。所有的实验都在一个用AMD Opteron2425HE CPUs的工作站(800MHz)。在一些实验中,我们提供二代和三代测序数据,在这些混合的组合中,50XIllumina汇编重叠群也包含在内,边界权重增长b=5~10。测序深度为 50X的Illumina提供中等的覆盖度从而允许现成的基于deBruijn图谱的汇编程序来汇编高质量重叠群。
在PacBio数据集,我们设置k=1,g=1,并运行一致算法四轮。每一个碱基的错误率在1/2/4轮次后在表1和2中分别报告为ERR1,ERR2和ERR4。在第一个实验中,我们使用大肠杆菌PacBio数据集和用不同的覆盖度测试其准确性。DBG2OLC用10X/30X的测序深度得到的最长骨架分别是1.3Mb和4.6Mb。 一个重要的汇编情境就是当我们既有二代又有三代测序数据时,我们发现Sparc可以实现混合汇编,而且使它们都有很高的计算效率和很好的成本效率。两轮之后,Sparc在混合数据处理方面只用10X的测序深度就可以达到0.09%的错误率,相比PBdagcon的0.64%的错误率是一个明显的飞跃。当用30X的测序深度时,结果正如预期一样更好(0.02%)。算法运行两轮以上结果将更加改善,表1和表2中有其各自运行两轮的时间。
Sparc对大量数据的测序表现更好,我们展示了Sparc和PBdagcon在一个更大的20X的PacBio A.thaliana 数据集 (基因组大小:120 Mbp)。DBG2OLC得到的最长骨架是7.1Mbp。Sparc跑完用了PBdagcon五分之一的时间和内存,但却产生了更精确的结果。这里我们用一个由MHAP得到的纯PacBio全基因用作参考系来计算错误率。
在Oxford Nanopore数据集中,考虑到较高的误码率我们设置k=2,g=2,运行一致算法四轮。每一个碱基的错误率在1/2/4轮次后在表3中被报告为ERR1/2/4。第一、二行为仅使用Oxford Nanopore(ON)的数据,第三、四行为使用混合数据的结果。
即使原始错码率可能高达40%,我们程序的测试错码率都低于0.5%。与此相反,非混合数据得到的结果则不那么有用。在本次测试中最长的骨架是4.6 MBP。两个程序运行四轮的时间报告在表3中。
Sparc对不同参数相对不是很敏感,因此即使对初用者来说也很容易使用。我们在第二轮变换了参数,只用PacBio数据。表4中报告了不同k、g相对应的内存、时间和结果质量。使用稍大尺寸的k聚体会增加每个碱基测序的准确性,这个效应对多倍基因组更明显。但是,这也增加了内存的使用,因为支链节点也相应产生。设置一个大一点的g可以帮助我们减少内存的消耗,不同的权重增加的对二代测序数据在混合一致数据中的影响可以在表5中得见。经验得出,在不影响准确性的前提下,这个参数被设置为b=5~15比较安全。实践中,我们将它设为一个比较低的值(b=5~10),从而更好地使用三代测序数据。
实验结论:
一致模型是一个重叠-布局-一致汇编程序框架的关键组成部分。随着三代测序技术的引入,它的重要性在进一步提高。在这项工作中,我们验证了一个简单但是高效的一致算法:使用k聚体作为基础模块和从位点特异的k聚体图谱可以产出高质量一致序列,它支持混合测序这一点使得成本效率和计算效率大大提高。该方法可望显着扩大其在测序纠错和变异发现方面的应用。一致测序质量也可以通过平台特异性、信号信息的整合进一步得到提高。