具有对压缩数据的快速操作的前缀Burrow-Wheeler变换的制作方法

文档序号:14958998发布日期:2018-07-18 00:08阅读:255来源:国知局

当执行数据处理时,计算机用于获取可被表示为计算机存储器中的结构和/或在持久性计算机存储器上的文件格式的数据,并对数据执行被称为数据操作的操作。一般对数据执行数据操作,该数据一般被区分为被称为数据集的离散集。对在数据处理的过程中的数据集的一般数据操作可包括:搜索,其为数据集的期望子集的取回;分类,其为数据集的重新组织;以及转换,其为将数据集从一个表示转换到另一表示。

随着时间的过去,数据处理可采用的处理能力快速增加,但在很多情况中应用于数据处理技术的数据的数量甚至更快地增加。相应地,数据处理需要搜索、分类、转换和其它数据操作。

通常通过减小用于执行操作的工作存储器的数量或通过提高操作的处理效率以便减小处理时间来提高数据操作。在大部分情况下,工作存储器的数量和处理效率导致优化折衷。减小在操作中的工作存储器的数量常常导致较低的处理效率。相反,增加处理效率导致在处理期间使用的存储器的较大数量。在同一优化中实现减小的存储器利用和较大的处理效率是相对罕见的。

然而,对于大数据集——其为如此大的数据集使得执行数据操作太慢而不能实现交互式处理,以存储器利用为代价提高处理效率可使优化变得不实际。增加非常大的数据集的尺寸可导致所使用的存储器的数量大于可用存储器的数量。相应地,即使对数据操作的处理提高的优化很重要,它也由于可用的数量不够而对实现是不可用的。因此很多优化技术对大数据集应用是不实际的。

目前存在很多大数据集应用。一些例子包括文档处理、图像处理、多媒体处理和生物信息学。例如,在生物信息学的情况下,所处理的数据由定义生物体的基因信息组成。基因信息由一系列碱基对腺嘌呤-胸腺嘧啶和鸟嘌呤-胞嘧啶组成。生物体越复杂,用于定义生物体的碱基对就越多。例如,大肠埃希氏杆菌使用大约4600万碱基对。相反,简单的病毒可用作少至几千个碱基对。

生物信息学的主要应用是在人类中的基因条件的分析中,在用于药物疗法的搜索中。人类的基因信息是320亿碱基对。相应地,被分配到碱基对以便提高处理的每个字节潜在地添加工作存储器的额外3.2gb。当执行序列比较时,使用人类或在分析中的其它生物体的不同实例,在数据处理期间使用的存储器的数量可快速扩大到难处理的数量。

相应地,存在对提高例如在生物信息学中对大数据集的数据操作的处理速度同时减小所使用的存储器的数量的技术的需要。

附图说明

参考附图阐述详细描述。

图1是前缀burrow-wheeler变换的顶级图。

图2是前缀burrow-wheeler变换的示例性性能的流程图。

图3a、3b、3c、3d、3e、3f、3g、3h、3i、3j和3k是经历前缀burrow-wheeler变换的示例性数据集的图示。

图4是在前缀burrow-wheeler变换中的前缀表的示例性压缩数据存储器布局。

图5是对由前缀burrow-wheeler变换来变换的数据的示例性k-mer搜索数据操作的流程图。

图6a、6b、6c、6d和6e是由经由示例性k-mer搜索遍历的前缀burrow-wheeler变换来变换的示例性数据的图示。

图7是前缀burrow-wheeler变换的示例性硬件、软件和通信环境的图。

具体实施方式

前缀burrow-wheeler变换技术的上下文

概述

在本文公开了对为性能时间和存储器都优化的大数据集执行数据操作的系统和方法。具体地,公开了前缀burrow-wheeler变换(“pbwt”)技术。为了帮助公开,这章描述基础pbwt。

数据和数据表示的封闭域

优化数据操作可利用对填充数据集的数据的洞察力。具体地,所有可能的数据的集合可填充被称为数据集的域的数据集。一些域是开放的,其中任何数据可被包括在数据集中。开放域的例子是模拟信号的表示,其中可被表示的信号的频率和振幅最初未被限制。其它域是封闭的,其中只有数据的有限集合可被准许进入数据集内。封闭域的例子是文本数据,其中只有被准许进入的数据是文本字符。在一些系统中,文本字符被限制到美国信息交换标准代码(“ascii”)字符——表示拉丁字母数字字符、标点符号和公共格式化字符的128个字符的预定集合。相应地,可以在信息的七个位(即27=128)中表示每个ascii字符。存在由可包括扩充的二进制编码的十进制交换码(“ebcdic”)字符集和ibm扩充ascii字符集的256个字母数字字符组成的其它封闭域,这两个字符集都具有由信息的八位(即28=256)表示的字符。

注意,封闭域不需要由自然语言的整个字母表组成。如前面提到的,基因碱基对由腺嘌呤-胸腺嘧啶和鸟嘌呤-胞嘧啶对组成。相应地,基因信息的数据域可以是通常被表示为a、t、g和c的腺嘌呤、胸腺嘧啶、鸟嘌呤和胞嘧啶的封闭集合。因为在这个封闭集合中只有四个元素,这些元素可被表示在两对(即22=4)中。

理解数据集的域并理解域如何在计算机存储器中被表示可帮助识别在数据操作中的效率。例如,考虑计算机程序与仅仅由大写和小写字母字符组成的ascii字符一起工作的例子,即没有数字、标点符号或格式化字符。大写字母“a”由数字65(或在二进制中的0b1000001)表示,以及小写字母“a”由数字97(或在二进制中的0b1100001)表示。注意,小写字符具有比大写字符多32的值。因此相应地切换第六位在大写和小写字母之间切换字符。

在ascii中将小写字母都转换成大写字母的计算机程序可由关于每个字符是否是小写或大写字符来测试它的例程实现。如果字符是小写字符,则程序可调用查找表以将小写字符转换成它的相应大写字符。

然而,可利用下面的知识来实现有效得多和等效的程序:ascii大写和小写字符如何被编码并简单地使(0b0100000)的异或位掩码应用于每个字符。因此,没有存储器将用于查找表,且单个操作(异或)而不是对字盘和对更换进行测试的两个操作需要每字符被使用。相应地,这个实现同时表示在所使用的工作存储器的数量中的提高和在处理效率中的增加。

搜索技术和优化

在下面的讨论中,我们描述了关于如何在存储器中表示数据集的洞察力可用于优化数据操作。关于什么特定的数据操作将被执行的洞察力也可用于优化那个数据操作的实现。例如,搜索是公共数据操作,其中在数据集中检测到模式。然而,搜索数据操作具有不同程度的保真度。

搜索数据操作可以是存在的,其中搜索数据操作简单地确定模式是否存在于数据集中。例如,对在数据集“abbbcccd”中的字母“c”的存在搜索可简单地返回值“真”,因为字母“c”确实在数据集中。

搜索数据操作可以是基本的,其中搜索数据操作不仅对存在进行测试,而且对待检测的模式的实例的数量计数。例如,对在数据集“abbbcccd”中的字母“c”的基本搜索可返回3,因为字母“c”在数据集中出现三次。

搜索操作可以是位置上的,其中搜索数据操作返回待检测的模式的位置。例如,在数据集“abbbcccd”中的字母“c”的位置搜索可返回5,因为在数据集中的字母“c”的第一实例在第五位置上。

因此,如果理解了计算机程序将被优化用于存在搜索而不是基本搜索,则实现可以是扫描数据集,直到它发现模式的第一实例被检测到为止。这与可能扫描整个数据集的基本搜索相反,因为它对待检测的模式的实例的数量计数。因此,由跟随有搜索字母“c”的百万“a”字符的字母“c”组成的数据集将在第一字符处终止,如果它是存在搜索,而基本搜索必须扫描随后的百万“a”字符而没有找到另一“c”字符的保证。这是如何理解数据操作的保真度可用于优化那个数据操作的例子。

数据表示的变换

如上所示,数据集如何在存储器中被表示的信息可用于优化数据操作的实现。然而,计算机程序可以不接收在那个数据操作的优化格式中的数据。常常被称为“原始数据”的数据——当它达到它的原始数据表示时——可转换成为特定的数据操作优化的可选的数据表示。这个转换被称为变换。

变换以很多形式出现。变换可根据预定的惯例来给数据排序。这样的变换被称为“排序”数据操作。其它变换可减小数据表示的尺寸。这样的变换被称为“压缩”数据操作。然而其它变换可产生查找表和/或索引以帮助数据操作的执行。下面的子章节将讨论这些和其它变换。

变换本身是数据操作且相应地可被优化。然而一般,变换将数据转换成为特定的数据操作优化的数据表示。所转换的数据继续存在于被称为“数据格式”或简称“格式”的持久性存储设备中。因为特定的数据操作一般只在优化的数据格式上操作,变换数据有时被称为“预处理数据”。具体地,用于变换数据的处理继续存在于数据格式中,使得每当特定的数据操作被执行时,处理不需要重复。因此,处理本身是优化特定的数据操作的方式。

如上面陈述的,对于大数据集(以及在其它上下文中),期望结果是减小在实现特定的数据操作中使用的工作存储器和增加处理效率。一个途径然后是执行数据变换,其执行压缩并创建为特定的数据操作优化的数据表示。

字典式排序

公共数据操作是执行排序,其为根据预定的惯例将数据集中的数据排序。排序是通常优化搜索的变换。具体地,当数据集是以特定的顺序时,扫描数据集的计算机程序可做出待检测的模式可能在哪里的确定。二进制搜索和多路搜索树是依赖于被排序的数据的搜索算法的公知例子。

字典式排序是一种排序,其中用于将数据集排序的预定惯例是在包括数据集的封闭数据域的字符上断定顺序。在数据集中的数据由被称为“词素”的字符的序列组成。由字母数字字符构成的词素也被称为“字符串”。在数据集中的词素的组被称为“字典”。根据在词素中的字符的顺序和位置来对被字典式排序的词素排序。

字典式排序的公共应用是对字符串执行字母排序。字母表的字母具有假定的顺序,其中每个字母被已知在另一字母之前或后面。在英语中,通常从左到右读字母。因此,被放置到在字符串中的另一字母的左边的字母相对于其它字符串排序在对该字符串时优先。相应地,“do”在“hi”之前,因为按字母表顺序“d”在“h”之前。虽然按字母表顺序“o”在“i”后面,但当执行按字母表顺序排序时在字符串中的最左边的字符优先。

压缩技术

减小在计算机存储中的数据表示的尺寸的变换是压缩数据操作。变换可以是“有损的”,其中关于特定的数据操作的信息经由变换被失去。变换可以是无损的,其中关于特定的数据操作的信息在变换期间被保存。

压缩的一个例子是行程长度编码。考虑由12个字符“aaabbbbcccccbbb”组成的数据集。可在6字符“3a4b5c3b”中表示该数据集,意味着有“三个a,四个b,五个c,后面是三个b”。注意,用于表示数据集的存储器的数量实际上被减小,即数据集被压缩。

现在考虑被压缩为“3a7b5c”的同一数据集。具体地,关于四个b的行程和三个b的行程的信息被组合。关于存在搜索和基本搜索,变换是无损的。具体地,存在搜索和基本搜索都能够提供具有新的压缩数据操作的准确的结果而没有信息的损失。然而,关于位置搜索,变换是有损的。虽然位置搜索可确定字母“b”在数据集中,它可能不确定在最后一个位置或任何其它位置上是否有b。当这个位置信息被失去时,变换关于位置搜索是有损的。

注意变换关于特定的数据操作是有损的还是无损的。从存在和基本搜索的观点看,那些数据操作不仅能够提供正确的结果,而且它们还能够更快地提供正确的结果。因此,这个数据变换可被认为对存在和基本搜索优化。这样的折衷在对数据表示的设计优化中是常见的。例如,对记录的很多数据库格式折衷性能插入数据操作以换取快速读取/搜索数据操作。

查找/编索引

可通过利用包含关于如何对数据表示的布局执行操作和/或变换的信息的补充数据结构来优化数据操作。这样的补充数据结构被称为“查找”。如果查找在一组元组的形式中,则查找被称为“查找表”。如果查找将数据的位置信息存储在数据表示中,则查找被称为“索引”。

在霍夫曼编码压缩中使用查找的例子。对频率分析在文本数据集中的字符。产生查找,其映射在文本数据集中使用的每个字符与无前缀代码,无前缀代码是位字符串,其中每个字符串被保证从来不是另一位字符串的前缀。更频率的字符在查找中被映射到较短的前缀代码。然后通过按照查找用相应的前缀代码代替字符的每个实例来变换文本数据集。

在霍夫曼编码中的查找一般是以树的形式。然而它也可被表示为表。此外注意,每当霍夫曼编码的数据集被传输时,查找也被传输。以这种方式,接收方可对霍夫曼编码的数据集解码。

转到索引,考虑12字符串“aaabbbbccccc”。如果编程者优化位置搜索数据操作且也知道数据集被保证是按顺序的,则编程者可以用如下的三个记录来准备索引:“a,1”、“b,4”和“c,8”。因此为了找到在数据集中的第一个“b”的位置而不是扫描在数据集中的字符,位置搜索数据操作只需要查找在索引中的位置,导致更快的数据处理。注意,产生在第一位置中的索引可利用在数据集中的字符的完全扫描。然而,通过在预处理期间产生索引并对索引排序,索引提供可被实现的优化,而不管位置搜索数据操作是否被执行。

执行前缀burrows-wheeler变换

概述

本章描述如何执行前缀burrows-wheeler变换(“pbwt”)。pbwt是在块排序压缩中例如在前缀burrows-wheeler变换中使用来对在具有封闭数据域的数据集中的存在搜索优化的技术的新颖修改。如在其它章中描述的,应用延伸出生物信息学。然而,为了例证性目的,下面的讨论将使用生物信息学数据作为示例性上下文来描述pbwt和它的相关数据操作。

图1是pbwt和存在搜索操作的顶级图。在当前图示中,生物信息学序列被示为将被操作的数据。由词素(其由字符的封闭域构成)的数据集组成的原始数据102由pbwt变换例程104接收。pbwt变换例程104将原始数据转换成前缀表106和偏移表108。前缀表106提供查找以识别在数据集中的词素的任何子字符串的所有单个字符前缀。偏移表108提供查找以识别以给定单个字符开始的前缀表中的词素的偏移位置。前缀表106和偏移表108表示原来的原始数据的明显压缩。

存在搜索例程110可搜索字符的域的任意字符串112,可在前缀表106和偏移表108上被执行。存在搜索可相应地确定字符串112是否存在(114)于表示中。经由pbwt,可以比现有技术明显更快地执行存在搜索,而没有准确度的损失。

图2是pbwt的示例性执行的流程图200。图3a到3k示出在执行pbwt时在产生pbwt前缀表和pbwt偏移表示时的不同阶段300a–300k。

接收原始数据

在执行pbwt时,计算设备在块202中接收原始数据。原始数据通常以如图3a所示的数据字符串300a的形式到达。在这里,数据字符串300a是四个基因序列,每个基因序列具有四个核酸。应强调,序列的实际长度可改变,且数据集域可以是任何封闭域,其中包括域的字符具有假定的顺序,适合于字典式排序。

产生每个序列的后缀

一旦原始数据被接收到,所接收的数据就被分析并受到字符旋转技术以识别所有前缀。前缀的同一性和位置将用于产生前缀表。在图2的块204中,每个序列的后缀被产生并添加到数据集。在图3b中示出结果300b。例如,序列actg具有ctg、tg和g的后缀。

执行字典式排序并移除前缀匹配

现在,数据集包括所有后缀,在图2的块206中,数据集是字典式排序的。在图3c中示出字典式排序的结果300c。

虽然字典式排序206用于保证在数据集中的词素的字典式顺序,它也帮助移除词素,其为如在图2的块208中的前缀匹配。具体地,在一个实施方式中,所排序的数据集被线性地扫描。如果词素与紧接着在后面的词素相同或是紧接着在后面的词素的前缀,则它是前缀匹配并被移除。例如,atgc的后缀gc与ccgc的后缀gc相同,且因此副本被移除。类似地,后缀tg是tgc的前缀且也被移除。在图3d中示出所移除的前缀匹配的结果300d。

此外注意,由于初始字典式排序206,前缀匹配被移除的结果300d也是字典式排序的。

执行第一字母旋转

数据集现在受到字母旋转技术,以便确定相对前缀的位置。在图2的块210中,每个词素被复制,且分界符被添加到每个原始词素的末尾。注意,分界符是封闭数据域的成员,但在词素中的所有元素之后是字典式排序的。这被完成,使得词素的字典式顺序对分界符相同,因为它没有分界符。

在图2的块212中,每个新复制词素具有旋转到词素的末尾并由分隔符字符的它的第一字母。分隔符也是封闭数据域的成员,但在词素中的所有元素之前是字典式排序的。再次,这被完成,使得所旋转的词素的字典式顺序对分隔符相同,因为它没有分隔符。

在图3e中示出复制的结果300e、第一字母旋转和分界符和分隔符的添加。在这个图中,分界符是“$”字符,且分隔符是“/”字符。

对所分界的原始和旋转的词素进行字典式排序

在图2的块214中,分界/旋转/分离的词素被字典式排序在一起。一旦这个排序被执行,数据就在条件中产生pbwt前缀表。在图3f中示出字典式排序300f的结果。

产生非旋转和前缀配对的查找表

然后在图2的块216中扫描字典式排序的数据300f以产生前缀对。具体地,以字典式顺序逐个词素地扫描表。词素首先被测试以确定它是否是旋转的或非旋转的词素。这可以容易通过检测分界符来检测。如果有分界符,则它是非旋转词素。否则,它不是。

非旋转词素然后与在本身和前一非旋转词素之间的所有旋转字符相关。例如,在300f中,ccgc$将与“g”相关,因为它是在ccgc$和前一非旋转词素atgc$之间的唯一旋转字符。类似地,在300f中,tgc$将与“”a和“c”相关,因为那两个字符是在tgc$和前一非旋转词素gc$之间的旋转字符。可容易借助于检测分隔符字符来提取旋转字符。在图3g中示出前缀关联的结果300g。

一旦前缀与它们的相应非旋转词素相关,选转副本就可被移除且分界符被移除,如在图2的块218中的。在图3h中示出移除的结果300h。

如可看到的,旋转字符是单字符前缀。由于旋转212和随后的字典式排序214,旋转字符的后缀将在非旋转词素之前,该非旋转词素是旋转字符的后缀。这是为什么单字符前缀将紧接着在非旋转词素之前。

添加词素长度以完成前缀表生成

为了完成前缀表,在数据集中剩余的每个词素的长度被计算,并与那个词素相关,如在图2的块220中的。具体地,在词素中的字符的数量被计数。可经由词素的线性顺序扫描来执行计数。可选地,可检测在存储器中的词素的尺寸,并通过使存储器尺寸除以每个字符的已知固定存储器尺寸来执行字符计数。例如,在c编程语言中,表达式“sizeof(*plexeme)/sizeof(char);”使存储器尺寸包含由指针plexeme指向的词素,并使它除以字符数据类型的尺寸。在基因数据的情况下,数据可以不被表示为字符,但潜在地为两位值,因为只有四个核酸。(注意,可使用额外的位,以便包括分隔符和分界符。)

不考虑词素的长度如在220中的如何被计算,长度接着与词素相关。如下所示,这个长度将以后与被搜索的模式比较以确定搜索是否应被终止,因为词素尺寸小于被搜索的模式。在图3i中示出所添加的词素长度的结果300i。

计算前缀计数

为了使用搜索的前缀表,在每词素基础上为在封闭数据域中的每个字符计算前缀计数。这不需要在预处理期间完成。因为前缀表明显小于它们的原先的原始数据,计算至少一个搜索将被执行的每个会期是也许是实际的。然而,实施者可选择预处理前缀表并计算前缀计数,如在图2的块222中的。

为了计算前缀计数,在数据集中的每个词素与在数据集(减去分界符和分隔符)中的词素中使用的封闭数据域中的前缀计数相应的每个字符相关。数据集以字典式顺序被扫描。对于每个词素,在前一词素中的每个前缀的计数被添加到前一词素的以前前缀计数。例如,在图3j中的前缀计数表示300j中,第一词素是actg。因为在前一词素中没有前缀,实际上没有前一词素以具有在第一位置上的前缀,所有核酸具有0的前缀计数。这对随后的词素atcg和ccgc保持真。但注意,对于cgc,前一词素具有g的前缀。相应地,我们将词素ccg的g的前缀计数增加到1。下一词素ctgc将c的前缀计数增加了1。因为g的前一前缀计数是1,它对于ctgc也保持在1处。这个过程重复,直到最后一个词素为止。

在最后一个词素之后,添加哑记录,以考虑在最后一个词素中的任何前缀。在图3j中的前缀计数表示300j中,记下行7的添加,行7显示考虑在最后一个词素tgc中的a和c前缀的总前缀计数。将在搜索期间使用前缀计数,作为计算词素的存在搜索界限。

注意,即时的压缩益处是,pbwt前缀表的尺寸与位移词素的数量而不是在原始词素的所接收的集合中的词素的总数线性地成比例。与现有技术(其中添加额外的冗余词素将增加存储器的数量以存储词素信息)不同,pbwt前缀表将不增加。

应强调,在存在搜索数据操作例如下面所述的k-mer搜索操作和其它相关数据操作中,将只利用前缀、长度和前缀计数信息。相应地,在这样的数据操作期间,词素不需要存储在存储器中。此外,也可经由汇总(rollup)计数来压缩或消除前缀计数信息。关于下面的图4描述了在存储器中的前缀表的压缩数据布局。

产生偏移表

为了存在搜索,使用pbwt,pbwt偏移表也可被预编程,如在图2的块224中的。pbwt偏移表是查找,其将在字典式排序的词素中的第一词素的偏移位置存储在以封闭数据集中的特定字符开始的前缀表中。注意,偏移位置不是基本位置。偏移表示添加到基数的数量以找到期望数据,在这种情况下是特定的词素。因此偏移以0开始,而基本位置以1开始。在图3k中示出前缀表300j的相关pbwt偏移表300k。

如可看到的,在前缀表300j中的以“a”开始的词素的第一实例——在这种情况下是actg——是偏移位置0。相应地,“a”与在偏移表300k中的0相关。类似地,在前缀表300j中的以“c”开始的第一词素——在这种情况下是ccgc——是偏移位置2。相应地,“c”与在偏移表300k中的2相关。该过程对核酸“g”和“t”重复。

如同前缀计数一样,偏移表对计算机是相对廉价的计算机处理方式。相应地,实施者可选择预先计算偏移表,或可选择为每个会期计算偏移表,其中至少一个搜索将被执行。

在存储器中的压缩pbwt数据布局

如上面提到的,pbwt使用于存储词素数据的存储的数量能够被极大地压缩。考虑一组1,000个集合序列,每个具有由单核酸表示的100个碱基对。因为存在四个核酸,也许只有2个位(4=22)需要用于每个核酸。相应地,1,000个序列x每序列100个核酸x每核酸2个位=200,000位。图4提供在pbwt中的压缩的图示400。

考虑第一行。例如402cgc,它具有3的长度404和c的前缀406。所有前面的行(未示出)对a、c和t具有0的前缀计数408,并对g具有1的前缀计数408。因为在存在搜索中不使用词素本身,词素cgc根本不需要被编码。长度可在7位中被编码(假设我们从不具有大约128的计数(128=27)。在这里,长度是3,所以二进制编码是0000011。至于对与词素406相关的前缀402编码,我们可创建位掩码,其中位相应于四个核酸acgt中的每个。因为我们没有a、g和t的前缀,第1、第3和第4个位置是0。但因为我们有c的前缀,第2个位置被设置为1。相应地,acgt前缀位图可在四个位0100中被编码。

转到前缀计数,注意,前缀计数可动态地产生且因此不需要被编码。考虑第二行ctgc。使用上面的技术,它可被编码为0000100(长度404)和1000(前缀相关的406)。在读取第一行cgc之后,在工作存储器中而不是在持久性存储器中,pbwt例程将对g存储1的计数并对a、c和t存储0。当读取行cgc的c前缀时,它将在工作存储器中将c的前缀计数增加到1。因此在工作存储器中,pbwt例程将对前缀c和g存储1的计数并对a和t存储0。关键益处是,持久存储不需要存储前缀计数,从而节省存储器以换取处理时间。跟踪计数的这种技术可被称为“汇总技术”。

注意,前面提到的汇总技术描述存储(持久)存储器相对于处理时间的纯折衷。现有技术文献描述例如关于fm索引和burrowswheeler变换(bwt)的汇总的变形。在一些变形中,工作位可在存储器中被添加到每第n个记录以帮助汇总。

然而,在前面提到的汇总技术中,注意,在存储器中,每记录只有11位被使用,而不是每记录200位。因此我们的1,000个序列只需要在原始形式中的11,000位而不是200,000位,在这个例子中实现94.5%压缩,而没有准确度的损失。

对由前缀burrows-wheeler变换所变换的数据的示例性操作

存在搜索、k-mer搜索和前缀burrows-wheeler变换

如前面提到的,对存在搜索优化pbwt。例如,在生物信息学中,封闭数据域由四个核酸——腺嘌呤、胸腺嘧啶、鸟嘌呤和胞嘧啶组成,这四个核酸分别由它们的第一个字母a、c、g和t表示。数据集一般是这些核酸的序列。k-mer是以序列的形式的这些核酸的置换。k-mer搜索是在数据集中的特定k-mer模式的存在搜索。

执行存在搜索

为了执行存在搜索,经由预处理提前或在前缀计数和偏移表的情况下可能交互地计算前缀表、前缀计数和偏移表。图5是使用pbwt的示例性存在搜索的流程图500,而图6a到6f示出遍历pbwt数据的不同阶段600a-600f,其中pbwt数据关于图1和图2a到2k被准备。

初始化

pbwt存在搜索以使用具有前缀计数的前缀表的第一个和最后一个记录分别作为开始和结束边界来产生搜索边界开始。注意,最后一个记录是哑记录,同时准备在图2的块222中的前缀计数。当我们重复时,我们使界限走得更接近,并一起更接近,直到我们确定我们发现搜索模式为止或搜索模式在数据集中不存在。

我们可使用下面的记号来表示搜索边界:[x,y),其中x表示开始边界,以及y表示经过数据集的末尾的一个词素,其为结束边界。注意,方括号表示包括界限,以及收尾括号表示不包括,其中y不一定是词素,且可以是哑记录。

考虑对在图6的600a中的前缀表中的gtgc的搜索。我们通过将x设置为0并将y设置为7来在图5的块502中初始化。

从搜索模式取回字符并修改搜索边界

为了使用pbwt来执行存在搜索,搜索模式从右到左被扫描。在图5的块504中,我们从搜索模式取回字符。因此,从gtgc取回的第一字符是字母“c”。

为了修改搜索边界,我们首先看与搜索边界相关的前缀计数,如在图5的块506中的。对于开始边界x,注意在图6a的前缀表600a中,在行x(这里的0)中,“c”的前缀计数是0。我们接着添加相应于偏移表中的“c”(这里的2)的偏移,并具有2的新开始边界。

类似地对于结束边界y,注意在图6a中的前缀表600a中,在行y(这里的7)中,“c”的前缀计数是3。再次,相应于偏移表中的“c”的偏移是2。通过添加,我们有5的新结束边界。

因此,我们将搜索边界修改为[2,5),如在图6b中的前缀表600b中所示的。

如在图5的决策块508中的,我们测试以查看与开始边界x相关的尺寸是否大于或等于我们到现在为止已处理的搜索模式的尺寸。在我们的例子中,开始边界是2,且与开始边界x(在2处)相关的尺寸是4。因为我们此时只处理了“c”,我们到现在为止已处理的搜索模式是1。因为4>=1,我们继续处理。如果搜索模式的尺寸较大,则我们将增加x。这是指示我们针对存在而搜索的搜索模式大于词素且因此不存在于数据集中的方式,如将在图5的决策块510中看到的。

如果在搜索模式中有随后的字符,如在块510中测试的,我们回来在块504中继续处理。否则,我们在块512中评估结果。

在图5的决策块512中,我们测试以查看是否x<y。如果是,我们推断出搜索模式存在于如在块514中的数据集中。否则,我们报告搜索模式不存在于如在块516中的数据集中。

为了继续例子,在gtgc中的下一字符是“g”。所以在图5的块504中,我们取回“g”。如在块506中的,在x=2处,g的前缀计数是0,且在y=5处,g的前缀计数是1。我们检查“g”的偏移表,且注意,我们应将5添加到x和y,导致[5,6)的新搜索边界。我们在图6c中的结果600c中示出此。

如在图5中的块508中的,我们检查以查看词素的尺寸到现在为止是否大到足以适应我们的搜索模式。因为搜索模式的长度到现在为止是2(即gc的长度),与x相关的尺寸(这里的5)是2且2>=2,我们推断出,词素到现在为止可适应我们的搜索模式。因为我们有在搜索模式中的额外字符要处理,我们继续回来处理到块304。

进一步继续例子,在图5的块504中,我们取回在gtgc中的下一字符,其为“t”。如在块506中的,在x=5处,t的前缀计数是0,且在y=6处,t的前缀计数是1。我们检查“t”的偏移表,且注意,我们应将6添加到x和y,导致[6,7)的新搜索边界。我们在图6d中的结果600d中示出此。

如在图5中的块508中的,我们检查以查看词素的尺寸到现在为止是否大到足以适应我们的搜索模式。因为搜索模式的长度到现在为止是3(即gc的长度),与x相关的尺寸(这里的6)是3且3>=3,我们推断出,词素到现在为止可适应我们的搜索模式。因为我们有在搜索模式中的额外字符要处理,我们继续回来处理到块504。

在这个例证性搜索模式例子中的最后字符中,我们示出,搜索字符串不存在于数据集中。在图5的块504中,我们取回在gtgc中的下一字符,其为“g”。如在块306中的,在x=6处,g的前缀计数是1,且在y=7处,t的前缀计数是1。我们检查“t”的偏移表,且注意,我们应将5添加到x和y,导致[6,6)的新搜索边界。我们在图6d中的结果600d中示出此。

如在图5中的块508中的,我们检查以查看词素的尺寸到现在为止是否大到足以适应我们的搜索模式。因为搜索模式的长度到现在为止是4(即gc的长度),与x相关的尺寸(这里的6)是3,其小于4,我们每块508将x增加1。这导致[7,6)的搜索边界。因为x>y,我们推断出,词素到现在为止可适应gtcg的我们的搜索模式并中止处理。如在块514中的,我们报告ctgc在我们的数据集中不存在。

注意,处理操作的数量相对于在搜索模式中的字符的数量是线性的。这是因为我们对在搜索模式中的每个字符重复。然而注意,搜索该搜索模式的时间保持恒定,而不考虑pbwt表示的尺寸。因为pbwt搜索依赖于偏移且因为偏见简单地随着新数据的添加而增加,搜索的时间独立于pbwt表示的尺寸,因此不考虑数据库的尺寸,搜索特定的搜索模式的时间的数量保持相同。因此pbwt的优点是,性能将不通过添加更多的数据而受损,从而适合于优良的可扩展性。

示例性硬件、软件和通信环境

计算设备

图7示出pbwt技术的硬件、软件和通信环境700的几个可能的实施方式。

客户端设备702是任何计算设备。示例性计算设备没有限制地包括个人计算机、平板计算机、智能电话和智能电视机和/或媒体播放器。

pbwt技术具有非常紧凑和对处理非常有效的优点。虽然可促使pbwt技术对访问远程服务器的一般联网客户端设备702有影响,pbwt可以现实地在独立计算机上实现。相应地,pbwt可以在客户端设备702上,客户端设备702是便携式膝上型计算机或便携式嵌入式系统或独立台例如电话亭。例如,在本领域中的研究者可具有包含运行pbwt的集成计算机的定制计算设备。可选地,研究实验室可具有也包含运行pbwt的集成计算机的围住的台。

客户端设备702可具有处理器704和存储器706。客户端设备702的存储器706是可存储包括应用708和/或操作系统710的几个软件组件的任何计算机可读介质。通常,软件组件是作为分离的整体而存储在一起的一组计算机可执行指令。软件组件的例子包括二进制可执行指令,例如静态库、动态链接的库和可执行文件。软件组件的其它例子包括在运行时间执行的所解释的可执行文件,例如服务器端小程序、小应用、p-代码库和java库。软件组件可在内核模式和/或用户模式中运行。

计算机可读介质包括至少两种类型的计算机可读介质,即计算机存储介质和通信介质。计算机存储介质包括在任何方法或技术中实现的用于存储信息例如计算机可读指令、数据指令、程序模块或其它数据的易失性和非易失性、移动和不可移动介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其它存储器技术、cd-rom、数字通用盘(dvd)或其它光学存储器、磁盘、磁带、磁盘存储器或其它磁性存储设备或可用于存储由计算机设备访问的信息的任何其它非传输介质。相反,通信介质可体现计算机可读指令、数据结构、程序模块或在已调制数据信号例如载波或其它传输机制中的其它数据。如在本文定义的,计算机存储介质不包括通信介质。

为了参与通信环境,用户设备702可具有网络接口712。网络接口712可以是一个或多个网络接口,包括以太网、wi-fi或任何数量的其它物理和数据链路标准接口。在用户只需要对独立单个机器完成操作的情况下,网络接口712是可选的。

客户端-服务器/多层

客户端702可与服务器716通信。服务器716是可参与网络的任何计算设备。网络没有限制地可以是局域网(“lan”)、虚拟专用网(“vpn”)、蜂窝网络或互联网。客户端网络接口712可经由网络接口718最终将远程联网存储器714连接到服务器716。服务器网络接口718可以是如关于客户端网络接口712所述的一个或多个网络接口。

服务器716还具有处理器720和存储器722。按照关于客户端设备702的前面的讨论,存储器722是任何计算机可读介质,包括计算机存储介质和通信介质。

特别是,存储器722存储可包括应用724和/或操作系统726的软件。存储器718还可存储可没有限制地包括应用服务器和数据库管理系统的应用724。以这种方式,客户端设备702可配置有应用服务器和数据管理系统以支持多层配置。

服务器716可包括由数据管理系统访问的数据贮存器728。数据贮存器728可被配置为关系数据库、面向对象的数据库、nosql数据库和/或柱状数据库或支持可扩展的持久性的任何配置。

服务器716不需要在现场或由客户端企业操作。服务器716可在互联网中被托管在云设施730中。云设施730可代表提供虚拟web应用服务器732功能和虚拟数据库734功能的多个分解的服务器。云730的服务732、734可经由云基础设施736变得可用。云基础实施736不仅提供对云服务732、734的访问,而且提供开账单服务。云基础设施536可提供额外的服务抽象,例如平台几服务(“paas”)、基础设施即服务(“iaas”)和软件即服务(“saas”)。

前缀burrows-wright变换的应用

pwbt应用的公共上下文

pbwt技术可有利地应用于具有有序字符集的大数据集,其中字符集是有限的,以及其中搜索数据操作显示在数据集中的待搜索的项目的实例的存在,而不是特定的位置。

有序和有限字符集的规定是pbwt与字符串搜索技术的关系的结果。然而,非字符串数据可被编码到有限的有序字符集,且pbwt技术应用于编码。例如,来自蜂窝电话的信号波数据可被采样,振幅被编码成字符串,且结果编码的字符串使用pbwt被搜索。这样的技术可用于检测在手机中的功率/传输损失的模式。

pbwt技术在信息内容本身未失去的意义上是无损的。然而,pbwt技术可在子字符串的位置可能被失去的意义上被考虑为有损的。相应地,pbwt在搜索实例的存在而不是位置的情形中具有强的可应用性。例如,pbwt可能能够确定在蜂窝传输中有错误,但它可能不能够确定错误出现在数据集中哪里。这样的情形的例子如下。

剽窃搜索

剽窃是将另一作者的作品假装作为自己的作品。一般地,通常用引用标记另一作者的作品的部分。有版权的材料通常与版权通知相关,其中来自原作者或作者的代理的许可被得到。然而,在剽窃的情况下,剽窃者滥用另一作者的语句的信用。

剽窃存在于职业和学术出版界中。由于可被剽窃的大量材料,检测剽窃很难。相应地,剽窃检测自动化的候选项。

剽窃检测可通过选择被怀疑剽窃的段落作为搜索模式来利用pbwt技术。本领域的已知文献的全集然后被处理成pbwt,且选定段落被搜索。如果存在匹配,则剽窃可能被检测到。

虽然pbwt执行确切的匹配,这样改述的剽窃可能不被检测到,pbwt由于它的压缩而具有快速、轻便的优点,并能够对照已知文献的大得多的全集进行比较。

开放源清理

开放源清理涉及公司确保它们的专有软件不包含开放源。开发者常常从互联网和其它源复制源代码而不知道源代码受限于开放源许可证。因为很多开放源许可证强制知识产品的让与,这样的添加可导致被规定为私有的代码失去那些知识产权。这种现象被称为“污染”。

开放源清理是在释放专有源代码以检测任何开放源是否被添加之前由公司进行的尽职调查搜索。可通过对照被压缩到pbwt前缀表和便宜表内的开放源代码的全集设置可疑代码片断来施加pbwt技术。

如同剽窃检测器一样,pbwt将不检测剽窃的或修改的源代码。然而,它将检测简单的剪切和粘贴的源代码,并将具有能够对已知来自开放源仓库的源代码的非常大的全集执行比较的优点。

前缀burrows-wright变换的生物信息学特定应用

基因组组装

pbwt技术在高速dna测序的上下文中是特别有用的。dna测序涉及读取被称为“读序”的、作为基因组的一部分的短序列,以及然后将读序重新组装到原始基因组内。通常可经由两个策略之一来执行dna测序。一个策略是在映射测序中,其中读序被映射到现有的脊骨基因组结构,类似于基因组到基因组的概要的映射细节。另一策略是在全新基因组装,其中通过经由搜索预定序列使一个读序匹配到另一读序来组装读序。全新基因组组装从因而产生的序列是新颖序列的可能性得到它的名称。

在映射和全新测序中,考虑将分别被匹配到脊骨上的位置或另一读序的读序。可在k-mer搜索中使用pbwt技术以在映射测序的情况下找出脊骨位置且在全新组装的情况下找到另一读序。例如,在全新组装的情况下,所有读序可以以pbwt格式存储在存储器中。与另一读序匹配的读序具有被识别为用作搜索模式的k-mer。所识别的k-mer通常是在读序之间的已知重叠。这个预定的重叠k-mer然后使用pbwtk-mer搜索在存储在存储器中的所有读序上被搜索,从而识别匹配是否存在。相应地,可在表示用于重构基因组的可能重叠的图解数据结构例如读序重叠图形和debruijn图形的构造中使用这个信息。

在全新组装的情况下,一般大量读序与其它读序匹配。因为pbwt格式仅仅被搜索而不是被修改,多个读序的匹配可并行地被执行。相应地,使用并行技术例如映射-归约的调度程序可产生并行读序匹配操作,从而明显加速全新测序。

搜索基因组缺陷

在生物信息学中应用pbwt技术的另一例子是在对基因组缺陷的搜索中。考虑怀疑核酸的特定基因序列是特定的先天缺陷的标志的研究者的情况。研究者可接着将那个特定的基因序列设置为搜索模式,并接着对在研究中的人执行k-mer搜索。如果序列被检测到,则它可于是与对在研究中的人中的先天缺陷的发生率或缺乏关联。

值得观察到的是,存在执行k-mer搜索的很多其它方式。然而,pbwt技术的出现使处理能够在少量天而不是几个月内被执行。相应地,pbwt技术提供到目前为止对现有技术不可得到的在处理速度中的提高的几个因素。

搜索植物标签

pbwt技术的另一潜在的生物信息学应用是搜索在植物中的生物标签。政府可设法跟踪植物性植物的源。例如,一些植物可从基因方面被修改并受到某些规章。作为另一例子,一些州使大麻合法化并可能希望跟踪植物源作为规章的一部分。跟踪植物的一种方式是将基因标签添加到待跟踪的植物。稍后,如果管制者或法律实施官员没收一些植物,它们可使用pbwt被快速分析。具体地,以k-mer的形式的生物标签被设置为搜索模式。使用pbwtk-mer搜索,我们可识别标签或在植物中的基因标签的缺乏。相应地,可容易识别植物的源或植物的违禁品源。

再次,值得观察的是,pbwt的速度和效率使这样的情形变得可能。使用现有技术方法,处理的缓慢将产生基因标签搜索的大量积压,使得处理变得不实际。然而,使用pbwt,压缩数据容易存储在甚至嵌入式系统中,且执行k-mer搜索的时间的数量足够小,以便使基因标记变得实际,作为监管工具。

结论

虽然以结构特征和/或方法行动特有的语言描述了主题,应理解,在所附权利要求中限定的主题不一定限于上面所述的特定特征或行动。更确切地,上面所述的特定特征和行动作为实现权利要求的示例形式而被公开。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1