用于实施字符串搜索的系统、方法和计算机程序产品的制作方法

文档序号:6517520阅读:287来源:国知局
用于实施字符串搜索的系统、方法和计算机程序产品的制作方法
【专利摘要】本发明提供了用于实施字符串搜索的系统、方法和计算机程序产品。在使用中,标识第一字符串和第二字符串。此外,利用第一字符串和第二字符串实施字符串搜索。
【专利说明】用于实施字符串搜索的系统、方法和计算机程序产品
【技术领域】
[0001 ] 本发明涉及字符串,并且更具体地,涉及实施字符串搜索。
【背景技术】
[0002]字符串搜索是现代计算技术的重要方面。例如,字符串搜索可用来实施web搜索、对大部分文本的数据库查询、基因组测序等等。然而,用于实施字符串搜索的当前技术已与各种限制相关联。
[0003]例如,用于实施字符串搜索的当前方法可能利用大量的存储器并可能花费相当多的时间和资源来实施。因此存在对解决与现有技术相关联的这些和/或其他问题的需求。

【发明内容】

[0004]提供了用于实施字符串搜索的系统、方法和计算机程序产品。在使用中,标识第一字符串和第二字符串。此外,利用第一字符串和第二字符串实施字符串搜索。
【专利附图】

【附图说明】
[0005]图1示出根据一个实施例的、用于实施字符串搜索的方法。
[0006]图2不出根据另一实施例的、用于利用微小空间中的全文索引(FM-1ndex)实施基因组测序的方法。
[0007]图3示出根据另一实施例的、用于利用经分区的表和经分区的读序段(readsegment)实施基因组测序的方法。
[0008]图4示出其中可实现各种先前实施例的各种架构和/或功能性的示例性系统。【具体实施方式】
[0009]图1示出根据一个实施例的、用于实施字符串搜索的方法100。如操作102所示,标识第一字符串和第二字符串。在一个实施例中,第一字符串可包括被实现为字节数组的字符序列。在另一实施例中,第一字符串可表示特定元素。例如,第一字符串可表示一个或多个网页的内容。在另一示例中,第一字符串可表示文本的大部分。
[0010]在又一示例中,第一字符串可表示基因组的全部或一部分。例如,第一字符串可表示组织的遗传信息的全部或一部分,并可包括基因和DNA、RNA的非编码序列等中的一个或多个。在另一实施例中,第一字符串可表示参考基因组(reference genome)。例如,第一字符串可表示数字核酸序列,代表基因的示例性集合。
[0011]此外,在一个实施例中,第二字符串可包括搜索字符串。例如,第二字符串可包括要在第一字符串内被搜索的字符串。在另一实施例中,第二字符串可表示基因组的全部或一部分。例如,第二字符串可表示读序(read)(例如从基因组内的特定位置读取的基因组的一部分)。在又一实施例中,第二字符串可表示与由第一字符串所表示的基因组分开的基因组的一部分。例如,第二字符串可表示经采样的基因组的一部分,并且第一字符串可表示与经采样的基因组不同的参考基因组的整体。在另一实施例中,第一字符串和第二字符串可通过从存储器读取第一字符串和第二字符串来标识。
[0012]进一步地,如操作104所示,利用第一字符串和第二字符串实施字符串搜索。在一个实施例中,实施字符串搜索可包括在第一字符串内实施针对第二字符串的搜索以确定第一字符串是否包含第二字符串。在另一实施例中,实施字符串搜索可包括比对第二字符串与第一字符串。
[0013]仍进一步地,在一个实施例中,实施字符串搜索可包括将第一字符串存储在数据结构内。例如,实施字符串搜索可包括将第一字符串存储在FM-1ndex中。例如,第一字符串可基于Burrows-Wheeler变换来存储在经压缩的全文子字符串索引中。在另一实施例中,第一字符串可分区成子字符串,并且这种子字符串可存储在FM-1ndex内。
[0014]并且,在一个实施例中,实施字符串搜索可包括将第一字符串存储在存储器中。例如,实施字符串搜索可包括将第一字符串存储在片上存储器中,将第一字符串存储在随机存取存储器(RAM)中等。在另一实施例中,实施字符串搜索可包括将第二字符串分成多个部分。例如,实施字符串搜索可包括将第二字符串分成多个非重叠段。
[0015]此外,在一个实施例中,实施字符串搜索可包括在存储第一字符串的数据结构内实施针对第二字符串的多个部分中的每一个的一个或多个查找(例如搜索等)以确定第二字符串的多个部分中的每一个是否存储在数据结构内。在另一实施例中,实施字符串搜索可包括基于一个或多个查找确定第一字符串和第二字符串之间的差异。
[0016]此外,在一个实施例中,当实施字符串搜索时可使用过滤器(例如在存储第一字符串的数据结构上实施针对第二字符串的一个或多个查找之前等)。例如,布隆过滤器(Bloomfilter)(例如节省空间的概率型数据结构)可用来测试第二字符串是否位于存储第一字符串的数据结构内。在另一示例中,如果过滤器指示第二字符串不位于存储第一字符串的数据结构内,那么可不在数据结构上实施针对第二字符串的一个或多个查找。
[0017]仍进一步地,在一个实施例中,实施字符串搜索可包括将第一字符串存储在哈希表(例如使用哈希函数将键(key)映射到相关联值的数据结构等)内。在另一实施例中,实施字符串搜索可包括将存储第一字符串的哈希表分区成多个段。在又一实施例中,实施字符串搜索可包括将多个段中的每一个分类。例如,多个段中的每一个可被排序,使得对于一个或多个因素邻近的段比不邻近的段更类似。在另一示例中,多个段中的每一个可与多个预定的类中的一个相关联。
[0018]并且,在一个实施例中,实施字符串搜索可包括构建多个新哈希表,其中每个新哈希表与预定的类相关联。在另一实施例中,实施字符串搜索可包括将与特定类相关联的全部段存储在与该特定类相关联的新哈希表中。在又一实施例中,新哈希表可小于其中存储第一字符串的哈希表。
[0019]此外,在一个实施例中,实施字符串搜索可包括将第二字符串分区成多个子字符串。在另一实施例中,实施字符串搜索可包括将多个子字符串分类。例如,多个子字符串中的每一个可被排序,使得对于一个或多个因素邻近的子字符串比不邻近的子字符串更类似。在另一示例中,多个子字符串中的每一个可与多个预定的类(例如,与存储多个段的新哈希表相关联的多个预定的类等)中的一个相关联。在又一实施例中,可使用基数排序将多个子字符串中的每一个与多个预定的类中的一个相关联。[0020]进一步地,在一个实施例中,实施字符串搜索可包括将新哈希表中的一个加载到存储器中。例如,新哈希表中的一个可被加载到片上存储器、随机存取存储器(RAM)等中。在另一实施例中,实施字符串搜索可包括标识与经加载的哈希表相关联的类,并标识与该类相关联的一个或多个子字符串。在又一实施例中,实施字符串搜索可包括在加载到存储器中的新哈希表内实施针对第二字符串的一个或多个子字符串中的每一个的一个或多个查找(例如,搜索等)以确定第二字符串的多个子字符串中的每一个是否存储在新哈希表内。
[0021]仍进一步地,在一个实施例中,多个新哈希表中的每一个可被加载到与不同处理器相关联的存储器中,并且每个不同处理器可利用与其特定新哈希表的类相关联的一个或多个子字符串,在哈希表上实施字符串搜索。通过该方式,可由多个处理器并行地实施字符串搜索。此外,可减少实施字符串搜索必需的存储器数量。进一步地,可通过在较小数量的较快存储器中实施字符串搜索来增加性能。
[0022]现在将关于前述框架根据用户意愿可以或可以不采用其实现的各种可选架构和特征来阐述更多示例性信息。应特别注意的是,阐述下面的信息是出于示例性目的并且不应视为以任何方式加以限制。任何下面的特征可以可选地与所描述的其他特征合并或将其排除。
[0023]图2示出根据另一实施例的、用于利用FM-1ndex实施基因组测序的方法200。作为选项,可在图1的功能性的上下文中实行方法200。然而当然,可在任何期望的环境中实现方法200。还应注意的是,可在本描述期间应用前述限定。
[0024]如操作202所示,标识经采样的基因组和参考基因组。在一个实施例中,参考基因组可包括数字核酸序列,代表基因的示例性集合。在另一实施例中,经采样的基因组可包括经采样用于与参考基因组比较的数字核酸序列。
[0025]此外,如操作204所示,从经采样的基因组产生读序。在一个实施例中,可通过从经采样的基因组内的位置读取来产生读序。进一步地,如操作206所示,参考基因组存储在FM-1ndex中。在一个实施例中,将参考基因组存储在FM-1ndex中可包括确定用于参考基因组的多个子字符串。例如,FM-1ndex可构造在用于参考基因组的m=20连续碱基(contiguous bases)的全部可能的子字符串之上。
[0026]仍进一步地,在一个实施例中,参考基因组可存储在存储器中的FM-1ndex中。例如,参考基因组可存储在片上存储器中的、随机存取存储器(RAM)等中的FM-1ndex中。并且,如操作208所示,比对读序与存储在FM-1ndex中的参考基因组。在一个实施例中,比对读序与参考基因组可包括将读序分成非重叠段。例如,读序可被分成每m个碱基对的n/m个非重叠段。
[0027]此外,在一个实施例中,比对读序与参考基因组可包括实施针对FM-1ndex中的每个段的查找。通过该方式,将FM-1ndex用来存储参考基因组可最小化存储参考基因组必需的存储数量。进一步地,存取参考基因组的速度可增加。
[0028]仍进一步地,在一个实施例中,当比对读序与参考基因组时可使用布隆过滤器。例如,可在查找中使用布隆过滤器以确定每个段是否位于FM-1ndex中。在另一示例中,如果布隆过滤器查找不返回段在FM-1ndex内的结果(例如,如果布隆过滤器查找针对段是否定的等等),那么针对该段的FM-1ndex查找可被避免。通过该方式,可加快、并可更高效地实施读序与参考基因组的比对。[0029]并且,在一个实施例中,可利用可扩展核苷酸比对程序(scalable nucleotidealignment program, SNAP)实施比对。参见例如(Zaharia 等人的)“DNA SequenceAlignment with SNAP”,在此通过援引的方式对其全文加以合并。
[0030]图3示出根据另一实施例的、利用经分区的表和经分区的读序段实施基因组测序的方法300。作为选项,可在图1-2的功能性的上下文中实行方法300。然而当然,可在任何期望的环境中实现方法300。还应注意的是,可在本描述期间应用前述限定。
[0031]如操作302所示,标识经采样的基因组和参考基因组。此外,如操作304所示,从经采样的基因组产生读序。进一步地,如操作306所示,参考基因组存储在表中。在一个实施例中,将参考基因组存储在表中可包括确定用于参考基因组的多个子字符串。例如,表(例如哈希表、FM-1ndex等)可构造在用于参考基因组的m=20连续碱基的全部可能的子字符串之上。
[0032]仍进一步地,如操作308所示,参考基因组存储在其中的表被分区。在一个实施例中,将表分区可包括将表分成多个较小的表。在另一实施例中,将表分区可包括将参考基因组分成段。
[0033]并且,如操作310所示,经分区的表被分类。在一个实施例中,较小的表中的每一个可根据P碱基对的集合(例如[2,8]中的P,并且其中集合可由第一 p碱基对来形成或是P个定位的特定集合等)来分类,并可构造4~p个不同的表,一个针对段的每一类。
[0034]此外,如操作312所示,从经采样的基因组产生的读序被分区。在一个实施例中,将读序分区可包括将读序分成多个部分。进一步地,如操作314所示,与经分类的经分区的表相对应地将经分区的读序分类。在一个实施例中,读序的每一部分中可根据P碱基对的集合(例如[2,8]中的p,并且其中集合可由第一 p碱基对来形成或是p个定位的特定集合等)来分类。
[0035]在另一实施例中,每个经分区的读序部分可与较小的表中的一个共享分类,使得每个经分区的读序具有唯一对应的较小的表。在又一实施例中,经分区的读序部分可通过使用基数排序采用线性复杂度0(N*p)来分类,其中N是段的数目。
[0036]在另一实施例中,经分区的表可包括FM-1ndex,并且FM-1ndex内的参考基因组的段的定位可用来对它们加以分类。例如,FM-1ndex内的参考基因组的段可被分区成映射到FM-1ndex中的不同间隔[j, k]的部分,并且可针对每个部分构建单独的哈希表。在另一实施例中,可使用一个或多个FM-1ndex遍历步骤来分类经分区的读序部分,直到与读序部分相关联的搜索范围足够小到仅触及一或二个部分。
[0037]仍进一步地,如操作316所示,根据分类来比对经分区的读序与经分区的表。在一个实施例中,每个经分区的读序部分可与和经分区的读序部分共享分类的相对应的较小的表比对。在另一实施例中,比对经分区的读序与经分区的表可包括在相对应的较小的表中实施针对每个经分区的读序部分的查找。
[0038]通过该方式,在具有小数量的快速存储器的处理器架构上,较小的表可逐一地加载到存储器中。此外,在具有数个处理器的平台上,每个处理器可通过仅加载与经分区的读序部分共享分类的相对应的较小的表来处理经分区读序部分的不同分类。
[0039]图4示出其中可实现各种先前实施例的各种架构和/或功能性的示例性系统400。如所示,提供了系统400,包括连接到通信总线402的至少一个主机处理器401。系统400还包括主存储器404。控制逻辑(软件)和数据存储在可采用随机存取存储器(RAM)形式的主存储器404中。
[0040]系统400还包括图形处理器406和显示器408,即计算机监视器。在一个实施例中,图形处理器406可包括多个着色器模块、光栅模块等。前述模块中的每一个实际上可置于单个半导体平台上以形成图形处理单元(GPU)。
[0041 ] 在本描述中,单个半导体平台可以指基于单一半导体的集成电路或芯片。应注意的是,术语单个半导体平台还可以指具有增加的连接性的多芯片模块,其仿真片上操作,并在对常规中央处理单元(CPU)和总线实现方案的利用上进行大量改进。当然,各种模块还可根据用户意愿分开安置或以半导体平台的各种组合的方式安置。还可通过可包括(但不限于)现场可编程门阵列(FPGA)的可重新配置的逻辑来实现系统。
[0042]系统400还可包括二级存储410。二级存储410包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、压缩光盘驱动器等的可移动存储驱动器。可移动存储驱动器以众所周知的方式从可移动存储单元读取和/或写入到可移动存储单元。
[0043]计算机程序或计算机控制逻辑算法可存储在主存储器404和/或二级存储410中。这种计算机程序当被执行时使能系统400实施各种功能。存储器404、存储410和/或任何其他存储是计算机可读介质的可能的示例。
[0044]在一个实施例中,可在主机处理器401、图形处理器406、具有主机处理器401和图形处理器406 二者的至少部分能力的集成电路(未示出)、芯片集(即设计为作为实施相关功能的单元来工作和销售的集成电路组等)和/或就其而言的任何其他集成电路的上下文中实现各种先前图的架构和/或功能性。
[0045]仍然,可在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他期望的系统的上下文中实现各种先前图的架构和/或功能性。例如,系统400可采取台式计算机、膝上型计算机和/或任何其他类型的逻辑的形式。仍然,系统400可采取各种其他设备的形式,包括但不限于个人数字助理(PDA)设备、移动电话设备、电视机等。
[0046]进一步地,虽然未示出,但系统400可耦连到网络[例如电信网络、局域网络(LAN)、无线网络、诸如互联网的广域网(WAN)、点对点网络、有线网络等]以用于通信目的。
[0047]虽然上文已描述各种实施例,但应理解的是,仅通过示例而非限制的方式将其加以呈现。因此,优选实施例的宽度和范围不应被上文所述的任何示例性实施例所限制,而仅应根据下面的权利要求和其等同物加以限定。
【权利要求】
1.一种方法,包括: 标识第一字符串和第二字符串;以及 利用所述第一字符串和所述第二字符串实施字符串搜索。
2.根据权利要求1所述的方法,其中所述第一字符串表示一个或多个网页的内容。
3.根据权利要求1所述的方法,其中所述第一字符串表示基因组的全部或一部分。
4.根据权利要求1所述的方法,其中所述第一字符串表示参考基因组。
5.根据权利要求1所述的方法,其中所述第二字符串包括要在所述第一字符串内被搜索的字符串。
6.根据权利要求1所述的方法,其中所述第二字符串表示与由所述第一字符串所表示的基因组分开的基因组的一部分。
7.根据权利要求1所述的方法,其中实施所述字符串搜索包括比对所述第二字符串与所述第一字符串。
8.根据权利要求1所述的方法,其中实施所述字符串搜索包括将所述第一字符串存储在 FM-1ndex 中。
9.根据权利要求1所述的方法,其中实施所述字符串搜索包括将所述第一字符串存储在随机存取存储器(RAM)中。
10.根据权利要求1所述的方法,其中实施所述字符串搜索包括在存储所述第一字符串的数据结构内实施针对所述第二字符串的多个部分中的每一个的一个或多个查找以确定所述第二字符串的所述多个部分中的每一个是否存储在所述数据结构内。
11.根据权利要求1所述的方法,其中当实施所述字符串搜索时使用过滤器。
12.根据权利要求1所述的方法,其中布隆过滤器用来测试所述第二字符串是否位于存储所述第一字符串的数据结构内。
13.根据权利要求1所述的方法,其中实施所述字符串搜索包括将所述第一字符串存储在哈希表内。
14.根据权利要求13所述的方法,其中实施所述字符串搜索包括将存储所述第一字符串的所述哈希表分区成多个段。
15.根据权利要求14所述的方法,其中实施所述字符串搜索包括将所述多个段中的每一个分类。
16.根据权利要求15所述的方法,其中所述多个段中的每一个与多个预定的类中的一个相关联。
17.根据权利要求16所述的方法,其中实施所述字符串搜索包括构建多个新哈希表,其中每个新哈希表与预定的类相关联。
18.一种具体化在计算机可读介质上的计算机程序产品,包括: 用于标识第一字符串和第二字符串的代码;以及 用于利用所述第一字符串和所述第二字符串实施字符串搜索的代码。
19.一种系统,包括: 处理器,用于标识第一字符串和第二字符串,并且利用所述第一字符串和所述第二字符串实施字符串搜索。
20.根据权利要求19所述的系统,其中所述处理器经由总线耦连到存储器。
【文档编号】G06F17/30GK103810229SQ201310533497
【公开日】2014年5月21日 申请日期:2013年10月31日 优先权日:2012年11月1日
【发明者】雅各布·潘塔莱奥尼, 戴维·塔里亚 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1