跳到主要内容
访问密钥 NCBI主页 MyNCBI主页 主要内容 主导航
生物信息学。2014年12月15日;30(24): 3476–3483.
2014年11月13日在线发布。 数字对象标识:10.1093/生物信息学/btu756
预防性维修识别码:项目经理4253837
PMID:25398610

SplitEM:一种带有后缀跳过的泛基因组分析图形算法

关联数据

补充资料

摘要

动机:基因组学正在从单一的参考物种范式扩展到一种更全面的泛基因组方法,该方法可以同时分析多个个体。压缩de Bruijn图是一种复杂的数据结构,用于表示整个种群的基因组。它对共享片段、简单的单核苷酸多态性和复杂的结构变异进行了稳健的编码,远远超出了单个线性序列集合所能代表的范围。

结果:我们探索了后缀树和压缩de Bruijn图之间的深层拓扑关系,并引入了一种算法splitMEM,该算法在时间和空间上直接构造压缩de Bruijn图,与给定的最大基因组大小的基因组总数呈线性关系。我们介绍后缀跳过同时遍历多个后缀链接,并使用它们高效地将最大精确匹配分解为图节点。我们通过分析九个菌株的泛基因组来证明splitMEM的实用性炭疽杆菌以及多达62株大肠杆菌揭示了它们的核心基因组属性。

可用性和实施:开源的源代码和文档http://splitmem.sourceforge.net网站

联系人: ude.lhsc@ztahcsm

补充信息: 补充数据可在生物信息学在线。

1简介

1.1背景

在过去的20年里,基因组测序取得了迅速的进展。第一个自由生活的生物体于1995年测序,自那时以来,每年测序的基因组数量以指数速度增长(利奥利奥斯等。,2006年). 目前,在生命树上有近20000个基因组测序,包括数百种真核生物和数千种微生物的参考基因组。参考基因组作为物种的样本序列在基因组学中发挥着重要作用,并在实现基因组重新测序项目、基因发现和许多其他重要应用方面取得了巨大成功。然而,参考基因组也受到影响,因为它们将单个个体或个体的马赛克表示为单个线性序列,使它们成为种群中所有已知基因、变体和其他可变元素的不完整目录。特别是在结构变异和其他大规模变异的情况下,这在建模复杂变异或基因流在人群中的作用时会产生分析差距。例如,对于人类基因组,必须通过几个不同的接口分别查询包括dbSNP、dbVAR、DGV和其他几个数据库在内的多个辅助数据库,以访问变体的全人群状态(麦当劳等。, 2014).

基因组学中的“以参考为中心”方法主要是由于技术和预算方面的考虑而确立的。特别是对于哺乳动物大小的基因组来说,将每个样本组装成一个完整的基因组仍然非常昂贵,而且在技术上具有挑战性从头开始这使得相对于已建立的参考物分析新样品的成本大大降低,也更容易获得。然而,对于某些物种,尤其是医学上或生物学上重要的微生物基因组,同一物种的多个基因组是可用的。在当前版本的国家生物技术信息中心(NCBI)GenBank中,所列1471种细菌中有296种至少存在两种菌株,包括9种炭疽杆菌(炭疽的病原体),62株大肠杆菌(研究最广泛的原核生物模型)和72株沙眼衣原体(性传播的人类病原体)。之所以这样做,是因为尽管属于同一物种,但不同的基因组可能具有根本不同的特性或实质上不同的基因含量:E。大肠杆菌无害,但有些具有高致病性(拉斯科等。,2011年b).

当相同或密切相关物种的多个基因组可用时,可以构建和分析种群的“泛基因组”,作为种群中所有序列和变体的单一综合目录(泰特兰等。, 2005). 提出了几种表示泛基因组的技术和数据结构,即。拉斯科等。(2008)最基本的是将参考基因组与附加到末尾的群体中发现的任何新序列或存储在单独的数据库(如dbVAR)中的新序列进行线性连接。结果是一个相对简单的线性序列,但也损失了大量的人口范围表示值,因此需要使用辅助表来记录串联序列的状态。更重要的是,一个复合线性序列可能会在种群变异如何相互关联的信息上出现模糊或丢失,特别是在种群中个体序列发生分歧的位置,即所有菌株之间共享的序列到任何菌株特定序列之间的分支点,然后再返回。

泛基因组的一种更强大的表示是在图中表示基因组集合:群体中共享或唯一的序列可以表示为节点,而边可以表示共享序列和特定序列之间的分支点(图1). 更具体地说,de Bruijn图是基因组学中一种稳健且广泛使用的数据结构,用于表示序列关系和泛基因组分析(伊克巴尔等。, 2012). 在泛基因组的情况下,我们可以给de Bruijn图上色,以记录哪些输入基因组贡献了每个节点。这样,完整的泛基因组将以紧凑的图形表示法表示,这样,任何子串的共享/应变特定状态都可以立即识别,以及侧翼序列的上下文。该策略还可以对线性表示无法实现的泛基因组进行强大的拓扑分析。

保存图片、插图等的外部文件。对象名称为btu756f1p.jpg

泛基因组的图形表示概述。四个输入基因组(A–D)被分解成共享的或特定于种群中个体的片段,边缘保持片段的邻接

正如最初提出的那样,德布鲁因图对每个不同的长度进行编码k个子串作为一个节点,并包括重叠的子串之间的有向边k个–1个碱基对。然而,只要两个节点之间的路径是非分支的,deBruijn图的许多节点和边都可以“压缩”。这样做通常会大大降低图形复杂性和更易于解释的拓扑结构:在泛基因组图的情况下,压缩后的节点将表示可变长度字符串,直至共享/应变特定状态的发散或重复序列后的序列发散。因此,压缩的de Bruijn图是泛基因组分析的首选数据结构,但不首先构建未压缩图,然后识别和合并可压缩边,构建这样的图并不容易,所有这些都需要大量开销。在这里,我们提出了一种新的时空高效算法splitMEM,用于从输入基因组的广义后缀树构造压缩de Bruijn图。我们的方法依赖于后缀树拓扑和压缩de Bruijn图拓扑之间的深层关系,并利用了我们开发的一种新结构,称为后缀跳过这使得在后缀树中的重叠后缀之间快速导航成为可能。我们应用这些技术研究了所有9个可用菌株的泛基因组炭疽杆菌以及所有62个可用菌株大肠杆菌绘制并比较这些群体的“核心基因组”。所有用于分析的源代码和文档都可以在以下网站上获得:http://splitmem.sourceforge.net网站

1.2问题定义

序列的de Bruijn图表示包含每个不同长度的节点k个子字符串,称为k个-梅尔。两个节点通过定向边连接u个  v(v)对于每个实例k个-mer表示为v(v)发生在k个-mer表示为u个在序列中的任何位置。换句话说,如果u个发生在位置v(v)发生在位置+ 1. 通过构造,相邻节点将重叠k个–1个字符,图形可以包括连接同一对节点的多条边或表示重叠串联重复的自循环。de Bruijn图的这种定义不同于数学文献中描述的传统定义,后者要求图包含所有长度-k个可以由字母组成的字符串,而不仅仅是序列中的字符串。本文中使用的de Bruijn图的公式在序列组装文献中常用,我们遵循相同的约定(金斯福德等。, 2010). 值得注意的是,在将其分解为k个-图的mers对应于通过de Bruijn图的欧拉路径,每个边只访问一次。在泛基因组的情况下,我们首先将由末端字符分隔的单个基因组连接在一起,并丢弃跨越末端字符的任何节点或边。节点被着色以指示节点起源于哪个基因组,这样每个单独的基因组都可以用颜色一致的节点来表示。

通过将节点的非分支链合并为具有较长序列的单个节点,可以“压缩”de Bruijn图。假设节点u个是节点的唯一前身v(v)v(v)是的唯一继承人u个因此,通过合并u个按照以下顺序v(v)到具有前身的单个节点中u个及其继承人v(v).最大化压缩图后,每个节点将在一个“分支点”处终止,这意味着每个节点的入度≥2或其单个前置节点的出度≥2,每个节点的出级≥2或它的单个后继节点的入级≥2。压缩deBruijn图中的节点数最少,压缩图中的路径标签与未压缩图中相同(金斯福德等。, 2010). 这样,泛基因组的压缩de Bruijn图将在序列之间的边界处自然分支,这些序列在种群中的共享量不同。

压缩的deBruijn图通常是从未压缩的对应图构建的,因此需要初始构造和存储更大的图。在极限情况下,基本构造算法可能需要构造和压缩n个节点,而我们将直接输出单个节点。实际上,实际基因组数据的压缩图通常比未压缩图小几个数量级,尽管确切的节省取决于数据。

在本文中,我们提出了一种创新的算法,该算法通过利用压缩de Bruijn图和序列后缀树之间的关系直接构造压缩de Bruijn图。我们的算法总体上实现了O(运行)(n个日志)全长输入序列的时间和空间复杂度n个基因组长度最长因此,对于将splitMEM应用于一组相似大小的基因组的典型应用,运行时间与基因组总数呈线性关系(第3.1节)。或者,我们也在补充材料从长度≥的精确自对齐集构造压缩de Bruijn图k个在基因组中。基于对齐的算法依次考虑每个对齐,并在发现对齐相互重叠时分解图节点以表示较小的子串。最坏的情况是,基因组中成对比对的数量可能是二次的。这两种算法具有相同的基本直觉,更快的后缀树方法是受基于对齐的算法的启发。

1.3后缀树、后缀数组和最大精确匹配

后缀树是一种数据结构,有助于线性时间解决计算生物学中的许多常见问题,例如基因组比对、寻找基因组中最长的公共子串、全对后缀-前缀匹配和定位所有最大重复(古斯菲尔德,1997). 它是一个紧凑的trie,表示底层文本的所有后缀。的后缀树T型t吨1t吨2 ⋯ t吨n个是一棵有根的定向树n个叶子,每个后缀一个。在构造后缀树之前,将一个特殊字符“$”附加到字符串中,以确保每个后缀都以树中的一片叶子结尾。除根节点外,每个内部节点都至少有两个子节点。每个边都标记有一个非空的子字符串T型节点的两条边都不能以相同的字符开头。从根到叶的路径拼写后缀T型[n个].

后缀树可以相对于它所表示的字符串在线性时间和空间中构造(Ukkonen,1995年). 后缀链接是一种实现技术,它支持线性时间和空间后缀树构造算法。后缀链接有助于快速导航到树中较远但相关的部分。后缀链接是来自表示字符串的内部节点的指针x秒到另一个表示字符串的内部节点S公司,其中x个是单个字符,并且S公司可能是空字符串。

一种密切相关的数据结构,称为后缀数组,是1到范围内的整数数组n个指定的词典顺序n个字符串后缀T型。它可以在线性时间内从后缀树中获得T型通过执行深度优先遍历,按照边缘标签的词汇顺序遍历兄弟姐妹。(古斯菲尔德,1997)对于任何节点u个在后缀树中,子树的根位于u个在后缀数组中以连续的间隔为每个后缀包含一个叶。该间隔是从根到节点的路径标签开始的后缀集u个(卡赛等。, 2001).

最大精确匹配(MEM)是序列中的精确匹配,如果不引入不匹配,则无法将其扩展到左侧或右侧。根据构造,MEM是后缀树中的内部节点,具有左向后代,即表示后缀的叶子,这些后缀在序列中前面有不同的字符。因此,MEM节点可以通过树的自下而上遍历在线性时间内进行标识,跟踪每个节点处植根的子树叶之前的字符集。因为每个MEM都是后缀树中的内部节点,所以最多有n个长度字符串中的最大重复次数n个(古斯菲尔德,1997). 我们的算法通过分解MEM并提取长度≥k个

1.4现有方法

我们引入了新的概念和算法,用于直接构建压缩的德布鲁因图来表示泛基因组。一些替代工具实现了类似的目标,尽管它们的具体目标不同,还有它们的算法技术。首次对泛基因组进行分析是在2005年泰特兰等。(2005)评估六种菌株的组成无乳链球菌。他们使用FASTA对草图集合中的基因序列进行了比对(皮尔逊和利普曼,1988年)与菌株特异性基因相比,发现所有菌株中存在的基因的“核心基因组”。他们的方法仅针对基因序列及其在人群中的频率,但没有试图分析两侧的调控区域或基因组的其余部分。

自那时以来,有几种替代方法构建了像我们这样的整个泛基因组的图形表示,包括也使用de Bruijn图作为其分析基础的其他方法。重要的是,以前所有使用de Bruijn图的泛基因组分析算法都是从对个体的详尽分析开始的k个-mers,即未压缩的deBruijn图,而我们直接从后缀树中标识的MEM计算压缩的de-Bruijn图。例如,西贝利亚(明金等。, 2013)首先构建未压缩的de Bruijn图,然后对其进行迭代细化,以确定不精确的关系,例如小indels和单核苷酸多态性,以及基因组之间的精确比对。作者最近的一篇文章卡佐等。(2014)提出了一种算法,用于从序列的后缀树在线性时间内识别压缩de Bruijn图中的节点和边,尽管这也需要对每个节点和边进行详尽的计算k个-序列中的mer。它们也没有提供它们描述的抽象算法的实现。其他方法,如HAL(希基等。, 2013),可以通过将多序列比对分解为一组编码为断点图的成对比对来编码不同基因组的多序列比对。

最近围绕de Bruijn图的一个关注领域是减少它们的空间消耗,例如使用Bloom过滤器或其他简洁的数据结构,这些结构可以用最少2个字符来表示图n个位,例如。,等。(2012),Chikhi和Rizk(2013),希基等。(2014)罗德兰(2013)然而,这些技术并没有直接扩展到泛基因组分析,因为它们的空间效率要求它们只存储有限的信息,通常只存储拓扑和固定长度的信息k个-de Bruijn图的mer序列。我们的分析需要其他属性,特别是每个节点的原始基因组位置和可变长度节点序列,这些基本上不受这些技术的支持(希基等。, 2014). 如果没有它们,我们就无法从图中计算泛基因组的主要属性,例如构成每个节点序列的基因组数量,共享特定基因的基因组数量或图中序列位于核心基因组中的最近邻居的基因组数量。

2方法

在本节中,我们描述了我们的算法,用于构建基因组的压缩de Bruijn图O(运行)(n个日志)时间和空间。算法1概述了这一点。我们算法的基础是从MEM集导出压缩的de Bruijn图节点集k个后缀树中的节点,即表示长度≥MEM的内部节点k个在基因组中。底层算法的灵感来自于使用后缀树来计算匹配统计信息,如下所述古斯菲尔德(1997)

注意,压缩德布鲁因图中的每个节点都由长度≥k个其与相同或不同的基因组子串没有内部重叠,长度≥k个与未压缩的对应项一样,边连接具有长度后缀前缀匹配的子字符串k个基因组中的-1。压缩de Bruijn图中的节点分为两类:唯一节点表示泛基因组中唯一的子序列,并具有单一的起始位置和repeatNodes(重复节点)表示在泛基因组中至少出现两次的子序列,可以是单个基因组中的重复序列,也可以是泛基因组群体中多个基因组共享的片段。唯一节点可以认为是连接repeatNodes(重复节点)因此,我们的图构造算法首先确定repeatNodes(重复节点),从中构造必要的边和唯一节点一路走来。

MEM集合k个repeatNodes(重复节点)代表基因组的相同子序列,尽管没有一对一的对应关系,特别是在重叠或嵌套的MEM的情况下(图2). 一个MEMk个可能需要分成几个repeatNodes(重复节点)当它具有长度≥的子序列时k个与自身或另一个MEM相同k个.一些repeatNodes(重复节点)正是基因组中的MEM,而其他repeatNodes(重复节点)是MEM的一部分,位于两个嵌入式MEM之间。长度≥的任何最大子序列k个在MEM之间共享的必然是MEM。因此,我们的算法处理MEM集k个然后把它们分成repeatNodes(重复节点)通过提取最小长度的公共子序列k个其中之一。每当MEM被拆分以删除共享repeatNode(重复节点),分割会导致至少一个MEM作为结果段,而另一个段可能对此MEM是唯一的。

保存图片、插图等的外部文件。对象名称为btu756f2p.jpg

顺序中MEM的不同重叠配置。彩色块代表基因组序列中的MEM。不同的MEM使用不同的颜色

2.1算法

splitMEM算法使用基因组的后缀树来高效计算repeatNodes(重复节点)它按照Ukkonen算法在线性时间内构建泛基因组的后缀树(Ukkonen,1995年). 然后标记后缀树的内部节点,表示长度≥的MEM(或最大重复)k个,在后缀树中使用MUMmer的线性时间技术(库尔茨等。, 2004)并对线性时间内的恒定时间最低标记祖先(LMA)查询的后缀树进行预处理。然后它构造了一组repeatNodes(重复节点)通过迭代MEM集合k个在后缀树中。

挑战在于确定MEM共享的区域k个s和分解MEMk个s转换为正确的repeatNodes(重复节点).如果12是MEMk个s和1发生在2,然后1是某个后缀的前缀2因此,splitMEM可以使用后缀链接迭代2与LMA查询一起查找最长的MEMk个s出现在每个后缀的开头。每个MEM细分为repeatNodes(重复节点)一次,提取任何嵌入式MEM而不进行检查。因此,在多个MEM之间共享的子序列只分解一次。我们描述了一种构造repeatNodes(重复节点)第2.2节。

例如,图3显示MEM的情况k个包含另一个MEMk个里面。两个新的重复节点为创建x个z(z)αβ一个是第一个后面的前缀k个–1个字符,共α(显示为“α)另一个是以最后一个开头的后缀k个–1个字符,共α(显示为α’). 较小的MEMk个 α单独处理。

保存图片、插图等的外部文件。对象名称为btu756f3p.jpg

基因组后缀树的一部分(左)与压缩de Bruijn图的相应部分(右)。后缀树和后缀链接中的两个MEM,用于将较大的MEM分解为至少三个重复节点,右侧图形中的紫色节点。x、 y和z是字符。α,βγ是字符串。后缀链接显示为红色

MEM在基因组中出现的位置,以及MEM的起始位置repeatNodes(重复节点),可以通过考虑从内部节点到子树中每个叶子的距离以及它们所代表的基因组间隔来快速计算。为了提高计算效率,我们为pan-genome构建了一个后缀数组,并将其对应的间隔存储在每个后缀树节点的后缀数组中。

一旦算法计算出所有repeatNodes(重复节点),它对每个节点中出现的基因组起始位置集进行排序,以便在一次遍历该列表的过程中在它们之间构建必要的边集。它还创建唯一节点以弥合相邻之间的任何间隙repeatNodes(重复节点)在排序列表中。它通过遍历存储在每个节点中的startPos开始位置的排序列表来实现这一点。假设startPos[] = .它计算连续的开始位置,succ,来自以及包含.如果成功是现有节点的起始位置,它必须位于+排序列表中的1,并且不能出现在中继器节点.如果启动位置[+1]是一个不同的值,算法创建一个唯一节点缩小startPos之间的差距[]和startPos[+ 1]. 然后创建一条边以连接起始位置无论是在repeatNode(重复节点)或a唯一节点。如果唯一节点创建后,它还创建了一条边来连接新的唯一节点致startPos的继任者[+ 1].

所有MEM的总长度在基因组中可以是二次的。然而,算法1的总时间复杂度取决于所有重复节点的总长度,该长度受基因组大小的限制。算法1运行O(运行)(n个日志)时间和O(运行)(n个+ |CD类G公司|)空间,其中|CD类G公司|是压缩de Bruijn图的大小。我们在下一小节中描述了一种技术,它使算法1能够实现这种时间复杂性。

2.2计算repeatNodes(重复节点)快速跳过后缀

在本节中,我们描述了O(运行)(n个日志)导出集合的时间算法repeatNodes(重复节点)来自MEMk个后缀树中的s。它模拟了迭代遍历后缀链接和在遍历的每个节点上执行LMA查询的步骤。其基本形式如图3,此过程总共需要O(运行)(n个2)时间,在基因组中所有MEM的总长度中呈线性。

加快流程O(运行)(n个日志)时间,我们介绍后缀跳过以推广后缀链接。后缀跳过修剪c(c)从根到内部节点的路径开头的字符,并导航到中相应的内部节点O(运行)(日志c(c))时间,而不是O(运行)(c(c))迭代遍历时间c(c)后缀链接(请参见补充图S2). 后缀跳跃类似于许多并行算法中使用的指针跳跃技术(贾贾,1992年).

为了计算后缀跳过,该算法在每个节点创建一个后缀跳过指针表u个,带⌊日志2(str深度(u个))⌋条目,其中strdepth(u个)是从根到节点的路径长度u个.条目对应于通过遍历2可以到达的节点节点的后缀链接,0≤≤⌊log2(str深度(u个))⌋. 使用条目0中的原始后缀链接初始化表,然后迭代更新,以便条目节点的u个已分配条目–节点指向的节点之一u个–第1个指针,即u后缀跳过[]=u后缀跳过[– 1] 后缀跳过[– 1]. 我们使用宽度优先搜索来计算第一级后缀跳过,后缀跳过[1]。作为增加时,具有后缀的节点集在级别上跳过指数收缩,如图所示补充表S2第3章作为迭代时需要更新的节点分布在树的中间,我们只维护指向这些节点的指针数组。在计算完所有所需的后缀跳跃后,我们从数组中删除一个节点,从而快速减少每次迭代中需要更新的节点数量,并大大减少总时间,而不是每次迭代中的广度优先搜索。

补充算法S3描述了后缀跳过在中O(运行)(n个日志)导出的时间过程repeatNodes(重复节点)来自后缀树中的MEM。该算法迭代标记为MEM的内部节点集。对于不是根的子级的MEM,我们扩展节点以包含从根到内部节点的路径。第一个LMA查询标识潜在的前缀MEM。然后,通过LMA查询识别嵌入式MEM,并通过遍历提取后缀跳过.ArepeatNode(重复节点)是为了弥合嵌入式MEM之间的差距而创建的。如果在任何时候发现一个标记的祖先延伸到整个MEM的末尾,则该过程完成。否则,最后一步是创建repeatNode(重复节点)跨越MEM的其余后缀。

我们观察到,如果一个节点的祖先都是MEM,那么它就是MEM。当我们将MEM分解为repeatNodes(重复节点)。我们使用深度优先搜索迭代后缀树节点以找到MEMk个s.到达节点时u个管柱深度≥k个并且不是MEM,我们绕过根位于的子树u个

我们存储辅助表以及后缀跳过,因此,我们的算法可以利用后缀跳过,而不会丢失任何嵌套的MEM。除了存储在节点上的每个后缀跳过之外,我们还保留了一个指向绕过的LMA的指针,该LMA最接近目标节点的末端,同时其基对也接近节点的末端。的加速后缀跳过生成一个算法O(运行)(n个日志)时间复杂性,但需要额外的O(运行)(n个日志)工作空间。为了节省空间,我们只存储可以遍历的节点的后缀跳过和辅助表,以便将MEM分解为repeatNodes(重复节点),即字符串深度小于或等于最长MEM深度的内部节点k个并且可以位于MEM的后缀链接路径上k个到根部

算法1从后缀树构造压缩de Bruijn图

输入:基因组序列,k个

输出:基因组的压缩前向de Bruijn图。

计算一组repeatNodes(重复节点)

构建基因组后缀树

在后缀树中标记表示长度≥的MEM的内部节点k个

预处理LMA查询的后缀树

将MEM拆分为repeatNodes(重复节点)

为所有人标记的节点

        查找与其他MEM或此MEM共享的k-mer

虽然节点.str深度≥k个

  如果节点已标记祖先然后

   创造repeatNode(重复节点)表示自上次删除内部MEM以来被后缀链接遍历跳过的MEM子字符串

   遵循后缀链接从节点修剪LMA

   继续遍历后缀链接遍历期间遇到的任何已标记祖先的后缀链接(如果它们进一步扩展)

  其他的

   跟随后缀链接

  结束条件为

结束while

创造repeatNode(重复节点)表示扩展到上一个嵌入MEM之后的MEM后缀

结束

开始位置的排序列表repeatNodes(重复节点),带有指向相应节点的指针。

计算每个节点的传出边。构造唯一节点一路走来。

为所有人startPos(启动位置)[]=

计算继任者的开始位置j个

如果startPos(启动位置)[+ 1] ≡ j个 然后

  从节点创建边到节点j个

其他的

  创造唯一节点表示来自的子序列j个直到startPos[+1]

  从节点创建边到节点j个

结束条件为

结束

3结果

我们实现了算法1以及补充算法S3并将其作为splitMEM软件开源。该代码已针对泛基因组和多基因组进行了优化-k个-mer分析,以便它可以为以下几个值构造图形k个无需重建后缀树即可进行迭代。所有测试都是在冷泉港实验室的64核Xeon E5-4650服务器的单核上执行的,该服务器运行频率为2.70 GHz,总RAM为1.5 TB。

使用该软件,我们为两个物种的主要染色体的泛基因组构建了压缩de Bruijn图:炭疽杆菌和任意选择的九个菌株大肠杆菌使用k个-mer长度为25、100和1000 bp(补充表S1). 三个不同的k个-mer长度为图的本地化提供了不同的上下文:较短的值提供了更高的分辨率,而较长的值将更适合重复,并将非常接近的变化链接到单个事件中。泛基因组图的总体特征如所示表1图的渲染如所示补充图S5–S10

表1。

大肠杆菌炭疽杆菌泛基因组图特征

物种K(K)节点边缘平均学位时间(分钟)空间(GB)
炭疽杆菌25103 926138 4681.337:0327.18
炭疽杆菌10041 34354 9541.326:5927.18
炭疽杆菌1000662786591.307:3327.18
大肠杆菌25494 783662 0811.335:2121.57
大肠杆菌100230 996308 2561.334点56分21.57
大肠杆菌100011 90015 6951.313:4521.57

尽管对于给定的值为k个这个大肠杆菌图中节点和边的数量是炭疽杆菌在这两种情况下,节点长度分布呈指数分布,如补充图S11第12节例如炭疽杆菌具有k个-长度为100的mers为382bp,最长可达451679bp。199 bp处的峰值出现在突变的富集中,其中群体中的亚群或单个菌株的分离单核苷酸差异大于k个+相隔1个基点。在这些站点上,图形中将形成一个“气泡”,其中一对节点为2*k个−1 bp长捕获所有k个-与变体相交的mers。多个碱基的突变会形成节点为2的气泡*k个 − 1 + v(v)-bp长,其中v(v)是变量的长度。拷贝数和其他结构变量导致更复杂的图拓扑,但都编码在泛基因组图中。

图4显示了泛基因组压缩de Bruijn图节点之间的种群范围基因组共享水平k个-摩尔长度。中的共享炭疽杆菌远高于中的大肠杆菌跨基因组共享水平。这自然是由于大肠杆菌菌株(拉斯科等。, 2008),而许多可用的序列炭疽杆菌与Amerithrax炭疽病毒袭击事件密切相关并进行了序列分析(拉斯科等。,2011年a).

保存图片、插图等的外部文件。对象名称为btu756f4p.jpg

9个菌株的泛基因组图节点中的基因组共享水平炭疽杆菌(顶部)和大肠杆菌(底部)。图中显示了具有每个共享级别的节点的比例

图形化泛基因组表示的一个主要优势是,除了确定共享或基因组特异性序列外,该图还编码不同片段的序列上下文。我们定义核心基因组是泛基因组的子序列,其出现在至少70%的基础基因组中。我们使用NetworkX计算了python中每个非核心节点到核心基因组的距离,使用Dijkstra的最短路径算法直观地进行了分支定界搜索。请注意,宽度优先搜索是不够的,因为两个节点在跳数方面可能距离更远,而实际上,它们在分隔它们的路径上的基距方面是更近的邻居。它遍历源节点发出的所有不同路径,直到到达核心节点或发现当前节点已被较短的路径访问。一旦找到从源节点到核心基因组的路径,它就会使用该距离来限定其他候选路径的最大搜索距离。

使用这种方法,我们在后代之间执行向前搜索,在前辈之间执行向后搜索,以确定到最近核心节点的距离,并在两个泛基因组图中选择这两个距离中的最小值。此搜索需要O(运行)()每个源节点的时间,其中是图形中不同边的数量。因此,此计算需要的总运行时间为O(运行)(*)总的来说图中的节点。为了保持搜索的可控性,我们将搜索限制在每个节点周围1000个hop的半径范围内。补充图S13显示了图形中距离的分布。总的来说B。炭疽病,大多数节点位于核心基因组中,因为菌株非常相似,或者到核心基因组的路径非常短。相比之下大肠杆菌显示到核心基因组的距离分布遵循指数分布,表明突变的复杂进化历史。

3.1缩放注意事项

我们还对越来越多的菌株进行了splitMEM大肠杆菌直到我们将NCBI上的所有62个菌株都包括在内(补充表S4). 如中所示图5,软件的时间和空间复杂性在所分析的基因组总数中是线性的。更具体地说,我们算法的运行时间是O(运行)(n个日志⁡|maxMEM|),其中最长MEM的长度,|maxMEM|<n个,受最长单个应变的大小限制,而不是整个泛基因组的长度。随着运行时间和空间需求与基因组数量呈线性增长,这些结果表明我们的服务器可能已经处理了500多株大肠杆菌在<12小时内。

保存图片、插图等的外部文件。对象名称为btu756f5p.jpg

splitMEM在数量递增的泛基因组图上的运行时间和峰值记忆大肠杆菌菌株k个-mer长度为25。每个点代表在五次试验中记录的最小值,以减少由服务器的竞争活动引入的测量噪声。该线表示点的线性回归

为了将结果放到上下文中,我们还应用了Sibelia算法(明金牌手表等。, 2013)到相同硬件上的相同62应变数据集。Sibelia还显示,尽管这两种算法之间存在明显的时空权衡,但随着菌株数量的增加,其时间和空间要求近似为线性:splitMEM速度要快得多,但需要额外的RAM(补充图S4).

4讨论

比较基因组学一直是并将继续是我们了解物种基因组的最强大工具之一。现在基因组数据变得越来越丰富,我们开始远离参考基因组,看到泛基因组学的兴起。已经有数百种微生物物种拥有多个完整基因组,通过PacBio和其他公司的长阅读测序技术的兴起,我们预计额外完整基因组的可用性将快速增长(罗伯茨等。, 2013). 在种群中高度保守或分离的序列可以揭示其表型作用的线索,而综合泛基因组方法允许我们直接测量侧翼序列的保守性。图形泛基因组方法还将有关复杂结构变异和基因流动的所有可用信息整合到一个统一的框架中。

我们的新拆分MEM该算法利用后缀树和压缩de Bruijn图之间的深层关系,有效地计算泛基因组的图形表示。MEM很容易在后缀树中识别,并通过分割MEM算法有效地转换为压缩de Bruijn图的节点和边。该算法有效地将基因组学中最广泛使用的序列数据结构统一为一个包含后缀树、后缀数组、FM-index和现在压缩的de Bruijn图的单一家族。为了实现这一目标,我们提出了一种新的构造,称为后缀跳过,它将后缀链接的成熟概念推广到相互关联更为遥远的后缀树部分。

为了证明该算法的实用性,我们将其应用于分析所有9个泛基因组炭疽杆菌以及所有62个大肠杆菌基因组。有趣的是,当比较九个样本时大肠杆菌九个基因组炭疽杆菌基因组中,两个泛基因组图中节点长度的分布是相似的,而其他性质则有显著差异,例如共享水平的分布或到核心基因组的距离。这表明我们只对炭疽杆菌,未来的实验工作仍需检验可变区域的功能意义。

未来的工作仍需改进splitMEM并进一步统一序列索引族。虽然我们当前的实现可以在一个公共服务器上轻松扩展到几十或数百个基因组,但最理想的是减少更多基因组的空间消耗的技术。使用Bloom过滤器或其他技术直接应用最近的方法来节省空间是不可能的(希基等。, 2014)但这是一个值得考虑的有趣的研究问题。我们目前还正在研究从基于字符串图汇编器算法的FM-index构建泛基因组的技术(Simpson和Durbin,2012年)用短文组装基因组。如果没有对每个k个-基因组中的mer,但可能有办法从后缀树中推广我们的算法。我们还旨在研究泛基因组的额外下游分析算法,特别是开发一种可以直接与图结构对齐的序列比对器。最后,我们还打算扩展splitMEM算法,使其在存在不完整基因组的情况下变得更加稳健,从而可以更容易地分析片段草图基因组。

补充材料

补充数据:

致谢

作者想感谢史蒂文·斯基纳、阿特·德切尔、亚当·菲利普、科尔·特拉内尔、米海·波普和史蒂文·萨尔茨伯格为这项工作所做的有益讨论。

基金:该项目得到了美国国立卫生研究院奖的部分支持[R01-HG006677型]和国家科学基金会奖[DBI-126383号; DBI-1350041号文件致M.C.S。

利益冲突:未声明。

参考文献

  • Bowe A等人。第十二届生物信息学算法国际会议论文集,斯洛文尼亚卢布尔雅那。柏林,海德堡:斯普林格·弗拉格;2012.简明图形;第225–235页。[谷歌学者]
  • Cazaux B等人。从索引数据结构到de-bruijn图。2014http://hal-lirmm.ccsd.cnrs.fr/lirmm-00950983[谷歌学者]
  • Chikhi R,Rizk G.基于bloom过滤器的空间有效且精确的de-bruijn图表示。分子生物学算法。2013;8:22. [PMC免费文章][公共医学][谷歌学者]
  • Chikhi R等人。关于de bruijn图的表示。重组。2014;第8394卷:35–55. [谷歌学者]
  • 古斯菲尔德D。字符串、树和序列的算法——计算机科学和计算生物学。纽约州纽约市:剑桥大学出版社;1997[谷歌学者]
  • Hickey G,et al.Hal:用于存储和分析多基因组比对的分层格式。生物信息学。2013;29:1341–1342. [PMC免费文章][公共医学][谷歌学者]
  • Iqbal Z等人。使用彩色De Bruijn图对变体进行从头组装和基因分型。自然基因。2012;44:226–232. [PMC免费文章][公共医学][谷歌学者]
  • 贾贾·J。并行算法简介。马萨诸塞州波士顿:Addison-Wesley;1992[谷歌学者]
  • Kasai T等人。CPM公司。后缀数组中的线性时间最长公共前缀计算及其应用;第181-192页。[谷歌学者]
  • Kingsford C等人,《使用短阅读的原核基因组组装复杂性》。BMC生物信息学。2010;11:21。 [PMC免费文章][公共医学][谷歌学者]
  • Kurtz S等人。用于比较大型基因组的通用开放软件。基因组生物学。2004;5:R12。 [PMC免费文章][公共医学][谷歌学者]
  • Liolios K等人,基因组在线数据库(gold)v.2:全球基因组项目的监测。核酸研究。2006;34(补充1):D332–D334。 [PMC免费文章][公共医学][谷歌学者]
  • 麦克唐纳JR等人,《基因组变异数据库:人类基因组结构变异的精选集》。核酸研究。2014;42:D986–D992。 [PMC免费文章][公共医学][谷歌学者]
  • Minkin I等人。WABI公司。2013年,Sibelia:一种可扩展且全面的合成块生成工具,用于密切相关的微生物基因组;第215-229页。[谷歌学者]
  • Pearson WR,Lipman DJ。生物序列比较的改进工具。程序。美国国家科学院。科学。美国。1988;85:2444–2448. [PMC免费文章][公共医学][谷歌学者]
  • Rasko DA等人大肠杆菌:比较基因组分析大肠杆菌共生和致病菌株。细菌杂志。2008年;190:6881–6893。 [PMC免费文章][公共医学][谷歌学者]
  • Rasko DA等人。炭疽杆菌比较基因组分析以支持amerishrax调查。程序。美国国家科学院。科学。美国。2011年a;108:5027–5032. [PMC免费文章][公共医学][谷歌学者]
  • Rasko DA等人大肠杆菌导致德国溶血性尿毒症综合征暴发的菌株。新英语。医学杂志。2011年b;365:709–717. [PMC免费文章][公共医学][谷歌学者]
  • Roberts R等人,smrt测序的优点。基因组生物学。2013;14:405. [PMC免费文章][公共医学][谷歌学者]
  • 罗德兰EA。基因组读取组装的k-mer de bruijn图的紧凑表示。BMC生物信息学。2013;14:313.doi:10.1186/1471-2105-14-313。[PMC免费文章][公共医学][谷歌学者]
  • Simpson JT,Durbin R.使用压缩数据结构进行大基因组的高效从头组装。基因组研究。2012;22:549–556. [PMC免费文章][公共医学][谷歌学者]
  • Tettelin H等。无乳链球菌多重致病菌株的基因组分析:微生物泛基因组的意义。程序。美国国家科学院。科学。美国。2005;102:13950–13955. [PMC免费文章][公共医学][谷歌学者]
  • Ukkonen E.后缀树的在线构造。算法。1995;14:249–260. [谷歌学者]

文章来自生物信息学由以下人员提供牛津大学出版社