CN102929900B - 一种字符串匹配的方法及装置 - Google Patents
一种字符串匹配的方法及装置 Download PDFInfo
- Publication number
- CN102929900B CN102929900B CN201210013304.2A CN201210013304A CN102929900B CN 102929900 B CN102929900 B CN 102929900B CN 201210013304 A CN201210013304 A CN 201210013304A CN 102929900 B CN102929900 B CN 102929900B
- Authority
- CN
- China
- Prior art keywords
- character
- string
- matching
- bwt
- coordinate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种字符串匹配的方法,用于提高匹配效率。所述方法包括:为获得的多个待匹配字符串分配不同的标识,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识;针对多个待匹配字符串中每个待匹配字符串的每一个字符,依据BWT搜索算法,以前一个字符的坐标为起始位置与BWT空间中的目标字符串进行匹配,并在字符匹配成功时获得当前字符的坐标;依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中;当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。本发明还公开了用于实现所述方法的装置。
Description
技术领域
本发明涉及电子及计算机技术领域,特别是涉及字符串匹配的方法及装置。
背景技术
Burrows-Wheeler转换(Burrows-Wheeler Transform,BWT,巴罗斯-惠勒转换)又称块分类压缩(block-sorting compression)。这种数据压缩算法技术,将完整的人类基因组序列索引压缩到不到2GB大小(这是当前主流台式机甚至是笔记本电脑都能达到的水平)。因此,目前通常数据库采用BWT格式索引存储完整的人类基因组序列。BWA(Burrows-WheelerAlignment,巴罗斯-惠勒对齐)算法能够将段短片段序列(称为reads)与经BWT压缩过的参考基因组序列进行比对,最终能找出这段短片段序列在参考基因组中的定位。
比对过程主要包括,参见图1所示:
步骤101:从数据库中取出索引和由测序产生的基因短序列,该基因短序列为完整的人类基因组序列的一部分。
步骤102:根据从数据库中查询到的索引和基因短序列中的位置信息运用FM Index算法(保罗.费拉吉纳和乔瓦尔.曼奇尼于2000年提出的压缩索引算法)计算出对应的OCC数组,OCC数组包括了所有碱基四个字符在该位置的OCC值。具体的,对基因短序列中的每个字符,将该字符对应的索引,加上从0到待查询位置之间的该字符的数量,即得到该字符的OCC值。其中,索引的实质为前一个字符的坐标,初值为默认的初始索引,每成功匹配一次,该索引的值更新为当前匹配成功的字符的坐标,以作为下一个字符匹配时的起始位置。
步骤103:根据OCC数组计算出对应的SA Interval(后缀数组间隔)的坐标k和l。对于k,k[aw]=C[a]+OCC[a,k[w]-1]+1;对于l,l=C[a]+OCC[a,l[w]];其中,a为当前匹配的字符,w为基因短序列中a之前的字符串;C(a)表示字符串a在基因短序列中比a小的字符个数;OCC即为输入的OCC数组;k[w]和l[w]为前一个字符的坐标。
最终得到的坐标k和l便为短片段序列在参考基因组中的BWT空间的定位。
目前BWA算法均在CPU中实现,CPU是以reads(基因短序列)为单位进行比对。也就是说,在执行步骤101时,CPU针对短片段序列中的每个字符依次取出索引和基因短序列。当基因短序列的所有字符均执行完步骤101~103时,CPU再针对下一个reads进行匹配,以此类推。该比对过程的效率较低。
发明内容
本发明实施例提供一种字符串匹配的方法及装置,用于提高匹配效率。
一种字符串匹配的方法,包括以下步骤:
为获得的多个待匹配字符串分配不同的标识,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识;
针对多个待匹配字符串中每个待匹配字符串的每一个字符,依据BWT搜索算法,以前一个字符的坐标为起始位置与BWT空间中的目标字符串进行匹配,并在字符匹配成功时获得当前字符的坐标;
依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中;
当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。
一种可编程逻辑装置,包括:
查询控制模块,用于为获得的多个待匹配字符串分配不同的标识,以及将待匹配字符串以字符为单位发送给匹配模块,并将该字符对应的标识发送给合并模块,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识;
匹配模块,用于针对多个待匹配字符串中每个待匹配字符串的每一个字符,依据BWT搜索算法,以前一个字符的坐标为起始位置与BWT空间中的目标字符串进行匹配,并在字符匹配成功时获得当前字符的坐标,并输出给合并模块;
合并模块,用于依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中,并将合并后的匹配路径输出给联结模块;
遍历模块,用于当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。
一种单板,包括:主控模块和多个可编程逻辑模块;
主控模块,用于向每个可编程逻辑模块发送多个待匹配字符串,并接收可编程逻辑模块返回的匹配结果;
可编程逻辑模块,用于为获得的多个待匹配字符串分配不同的标识,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识;针对多个待匹配字符串中每个待匹配字符串的每一个字符,依据BWT搜索算法,以前一个字符的坐标为起始位置与BWT空间中的目标字符串进行匹配,并在字符匹配成功时获得当前字符的坐标;依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中;当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。
本发明实施例中由可编程逻辑器件实现以字符为单位的基于BWT搜索的匹配。一个待匹配字符串中的每个字符均对应该待匹配字符串的标识,将当前获得的字符的坐标与对应同一待匹配字符串的之前已获得的字符的坐标合并;当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。这样,可编程逻辑器件可在一个字符的匹配周期内处理多个字符的匹配,不需要每个匹配环节等待一个待匹配字符串中所有字符均完成之后才能进行下一个环节,明显提高了匹配效率。并且,可编程逻辑器件中的各逻辑门可独立运行,匹配过程的各个环节由不同的逻辑门实现,也就是说匹配过程的各个环节可同步进行,进一步提高了匹配效率。k和l可独立进行计算,提高了并行度。
附图说明
图1为现有技术中字符串匹配的方法流程图;
图2为本发明实施例中单板的结构图;
图3为本发明实施例中可编程逻辑器件的主要结构图;
图4为本发明实施例中可编程逻辑器件的详细结构图;
图5为本发明实施例中目标字符串移位示意图;
图6为本发明实施例中目标字符串排序后的示意图;
图7为本发明实施例中目标字符串形成的搜索树的示意图;
图8为本发明实施例中第一个字符的搜索空间的示意图;
图9为本发明实施例中字符串匹配的主要方法流程图;
图10为本发明实施例中字符串匹配的详细方法流程图。
具体实施方式
本发明实施例中由可编程逻辑器件实现以字符为单位的基于BWT搜索算法的匹配。一个待匹配字符串中的每个字符均对应该待匹配字符串的标识,将当前获得的字符的坐标与对应同一待匹配字符串的之前已获得的字符的坐标合并;当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。这样,可编程逻辑器件可在一个字符的匹配周期内处理多个字符的匹配,不需要每个匹配环节等待一个待匹配字符串中所有字符均完成之后才能进行下一个环节,明显提高了匹配效率。并且,可编程逻辑器件中的各逻辑门可独立运行,匹配过程的各个环节由不同的逻辑门实现,也就是说匹配过程的各个环节可同步进行,进一步提高了匹配效率。
另外,本实施例中在一个单板上可以有多个可编程逻辑器件并行处理字符的匹配,由单板上的主控模块负责各可编程逻辑器件的负载均衡。
参见图2,本实施例中的单板包括主控模块201和多个可编程逻辑模块202。可编程逻辑模块202即为前述的可编程逻辑器件,具体为FPGA(FieldProgrammable Gate Array,现场可编程门阵列)等。主控模块201可具体为CPU、DSP(数字信号处理芯片)或MCU(微处理器)等。
主控模块201用于向每个可编程逻辑模块202发送多个待匹配字符串,并接收可编程逻辑模块202返回的匹配结果。主控模块201还用于在收到匹配结果后,如果有待匹配字符串,则向发送该匹配结果的可编程逻辑模块202发送待匹配字符串。主控模块201依据与可编程逻辑模块202之间的带宽或可编程逻辑模块202的逻辑门数量向可编程逻辑模块202发送多个待匹配字符串,使待匹配字符串占满整个带宽,或使可编程逻辑模块202的所有逻辑门均运行在匹配过程上。并且,较佳的,主控模块201优先向负荷最轻的可编程逻辑模块202发送待匹配字符串,以便负载均衡。主控模块201还可以为多个待匹配字符串分配不同的标识,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识。或者,为多个待匹配字符串分配不同的标识的工作由可编程逻辑模块202实现。
可编程逻辑模块202用于为获得的多个待匹配字符串分配不同的标识,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识;针对多个待匹配字符串中每个待匹配字符串的每一个字符,依据BWT搜索算法,以前一个字符的坐标为起始位置与BWT空间中的目标字符串进行匹配,并在字符匹配成功时获得当前字符的坐标;依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中;当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。
下面对可编程逻辑模块202的内部结构和进行详细介绍。
参见图3,本实施例中可编程逻辑装置包括:查询控制模块301、匹配模块302、合并模块303和遍历模块304。可编程逻辑装置即为前述的可编程逻辑模块202及可编程逻辑器件。可编程逻辑装置中的各模块及模块内的各单元均对应不同的逻辑门,以便实现并行处理。
查询控制(query)模块301用于为获得的多个待匹配字符串分配不同的标识,以及将待匹配字符串以字符为单位发送给匹配模块,并将该字符对应的标识发送给合并模块,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识。
匹配模块302用于针对多个待匹配字符串中每个待匹配字符串的每一个字符,依据BWT搜索算法,以前一个字符的坐标(primary位置)为起始位置与BWT空间中的目标字符串进行匹配,并在字符匹配成功时获得当前字符的坐标。该当前字符的坐标为当前字符之前的字符串在BWT空间中的坐标,并输出给合并模块。字符的前后依据字符串中字符的匹配顺序确定,例如,字符串LOO,如果按照从左到右的顺序读取字符进行匹配,则中间的O的前一个字符为L;如果按照从右到左的顺序读取字符进行匹配,则中间的O的前一个字符为O。
较佳的,匹配模块302在以前一个字符的坐标为起始位置要进行匹配时,针对当前字符分配字符标识,同一字符串中的不同字符对应不同的标识。对当前字符分别进行k和l的计算,然后利用当前字符的字符标识将k和l的计算结果合并得到当前字符的坐标。
合并(merge)模块303用于依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中。匹配路径是指序列联配中查找路径与待匹配字符串之间的映射关系。
遍历(traverse)模块304用于当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。
若匹配模块302在字符匹配过程中匹配不成功,此时存在错配,插入和缺失三种情况,则遍历模块304分别针对三种情况继续在BWT空间进行匹配。
如果有过多的字符匹配不成功,则说明待匹配字符串与目标字符串无法匹配,或者说没有关联。因此需要设置一个错误的容忍度。则若字符匹配不成功时,遍历模块304更新匹配不成功的罚分,并判断当前的罚分是否达到预设的门限值。若未达到,则在BWT空间上继续匹配。若达到预设的门限值,则结束待匹配字符串的匹配,待匹配字符串的匹配失败。对于每个字符,每次匹配不成功均对应有罚分,错配,插入和缺失三种情况的罚分可以不同,也就是三种情况的权重不同,例如错配的罚分为1,插入的罚分为2,缺失的罚分为2。每匹配不成功一次,便将相应的罚分累加,得到更新后的罚分,将其与预设的门限值比较。
由于针对一个字符在第一次匹配不成功时存在错配,插入和缺失三种情况,可能需要尝试三种情况后才能获得正确的结果。但是这样需要大量的匹配操作,设备的负荷较大。为解决该问题,遍历模块304先将待匹配字符串与目标字符串进行初配,针对当前字符,在匹配不成功时,在BWT空间中确定字符当前位置后存在的初配结果中的段数,当段数大于预设门限值时,终止该待匹配字符串的匹配;当等于预设门限值时,根据当前位置后续的初配结果段从所有可能的查询路径中删除相应的查询路径,由于初配结果段会对应错配、插入或缺失的情况,所以这些路径都将被删除,然后从剩余查询路径中继续匹配;当小于预设门限时,则在BWT空间的所有可能路径上继续匹配。其中,所述BWT空间为前缀树或后缀树,查询路径为字符串在树上的查询路径。所有可能的查询路径是在树上针对错配,插入和缺失三种情况的所有查询路径。
初配是指:将待匹配字符串与BWT空间中的目标字符串进行匹配,针对当前字符,在字符匹配不成功时,记录该字符之前的字符串的BWT空间坐标,并以此字符之前匹配成功的字符串记为一段,并从匹配不成功的位置起,继续将当前字符与BWT空间中的目标字符串进行匹配,确定第一次匹配成功的位置,并将下一个字符以该匹配成功的位置为起始位置,继续与BWT空间中的目标字符串进行匹配,直到出现匹配不成功的字符,以此字符之前匹配成功的字符串记为一段,或者直到待匹配字符串的每个字符均匹配完毕。初配可以从待匹配字符串中的不同字符开始进行多次匹配(初始匹配字符可以由用户指定),得到针对不同初始字符的多组片段作为初配结果。每组片段对应一个初始字符关于待匹配字符串的初配结果。
本实施例中BWT空间中的目标字符串可存储在可编程逻辑装置以外的存储设备中,该存储设备可具体为DDR SDRAM(Double Data Rate SynchronousDynamic Random Access Memory双倍速率同步动态随机存储器)。例如,DDR包括两个内存区块(RANK),每个RANK包括8个BANK(存储阵列)。每次访问需要启动一个BANK,并在一段时间内完成访问。BANK一次只能处理一个访问请求,在处理时间内,不能接受新的请求。同时,任意时刻,每个RANK最多有四个BANK处于活动状态。目前在与BWT空间中的目标字符串进行匹配时,对BANK的访问请求是按照接收请求的顺序来处理的,如果多个请求需要访问同一BANK,则需要排队,后续不访问该BANK的请求也不能立即处理。本申请的发明人发现该问题后,为解决该问题,可编程逻辑装置的匹配模块302在访问BANK之前,对当前的所有访问请求散列排队,尤其是针对各访问请求需访问的BANK进行排队,尽可能使连续的多个访问请求访问不同的BANK,从而减少存储设备带宽的空闲。实测结果表明,这一方案可以将数据库访问吞吐量提升四倍左右,这对于算法整体的加速比有重大的贡献。
可编程逻辑装置还包括:缓存模块305,参见图4所示。缓存模块305用于存储初始设置的坐标和获得的多个待匹配字符串。
本申请的发明人发现,当字符匹配应用在基因序列匹配方面时,数据库的访问在顺序上具有依赖关系,所有的访问都是从0或者PRIMARY位置(即前一个字符的坐标)开始。根据每一个当前字符,下一次访问的位置有四种可能(因为基因有四种碱基),对应四种不同字符。这样,可以将数据库的所有位置看做从0和PRIMARY起始的两颗树,树的每个节点有四条分支。这决定了在树的一定深度内,对数据库的访问位置局限在一个小的集合内。由于每个子序列比对的数据库访问都将从这个局部集合起始,并且发明人经统计发现,基因的待匹配字符串的前几个字符相同的情况比较多,因此在所述局部集合存储在某个BANK中时,会需要频繁的访问该BANK,且一次只能处理一个访问请求,影响访问的整体随机性,造成性能下降。
当采用多个可编程逻辑装置时,每个可编程逻辑装置可访问为其唯一配置的DDR SDRAM,以提高访问效率和匹配效率。
为解决该问题,本实施例中缓存模块305包括第一缓存单元和第二缓存单元。第一缓存单元可以是SDRAM(Synchronous Dynamic Random AccessMemory,同步动态随机存储器),用于存储初始设置的坐标和获得的多个待匹配字符串等。第二缓存单元可以是Cache(缓存),用于存储所述局部集合。当BWT空间采用前缀树或后缀树时,所述局部集合包括从根节点开始的3、4层节点的目标字符串及节点间的父子关系。在不使用第二缓存单元时,存储设备的带宽利用率只有70%,0和PRIMARY所在的通道出现阻塞,其他通道可能出现饥饿。使用第二缓存单元时,存储设备带宽的利用率达到90%,提高了所有通道的负载均衡。
匹配模块302包括:数据库查询单元、OCC单元和SA单元。
数据库查询单元用于从数据库中取出BWT格式的初始索引和目标字符串。
OCC单元用于根据BWA算法、初始索引和目标字符串中的位置信息计算出对应的OCC数组。OCC数组包括了所有可能的字符在该位置的OCC值。具体的,对待匹配字符串中的每个字符,将该字符对应的初始索引中的起始索引值,加上初始索引中从0到待查询位置之间的该字符的数量,即得到该字符的OCC值。
SA单元用于根据BWT搜索算法和OCC数组计算出对应的SAInterval的上坐标k和下坐标l。对于k,k[aw]=C[a]+OCC[a,k[w]-1]+1;对于l,l=C[a]+OCC[a,l[w]];其中,a为当前匹配的字符,w为基因短序列中a之前的字符串;C(a)表示字符串a在基因短序列中比a小的字符个数;OCC即为输入的OCC数组;k[w]和l[w]为前一个字符的坐标。
查询控制(query)模块301还可以为每个字符分配标识,则SA单元3023可以针对一个字符分配计算k和l,然后依据该字符的标识将该字符对应的k和l组合。
例如,目标字符串为LEELGE$,字符长度为7,则循环移位后如图5所示,将字符按照大小排序,则排序后的结果如图6所示。经BWT算法可得到搜索树(即BWT空间),如图7所示。待匹配字符串为LE,长度为2。
目标字符串LEELGE$存于单板或外部的内存上。
缓存模块305从主控模块201处获得并存储待匹配字符串LE,以及存储初始配置的坐标k和l的值(0,6)。缓存模块305将坐标k和l的值(0,6)和待匹配字符串GO的长度2发送给遍历模块304。当前遍历模块304中k和l的值只有(0,6),则将(0,6)发送给查询控制模块301。查询控制模块301为缓存模块305中的存储待匹配字符串LE分配标识EID1,以及从缓存模块305处获得存储待匹配字符串中的第一个字符L,则根据遍历模块304指示的查询路径,确定从节点(0,6)的子节点中匹配。查询控制模块301将字符L、坐标(0,6)和搜索方向信息发送给数据库查询单元3021。数据库查询单元3021依据坐标(0,6)和搜索方向信息从数据库中获得节点(0,6)的子节点(1,2)、(4,6)和(3,3),参见图8所示。OCC单元3021依据字符L计算出OCC数组。SA单元3022依据OCC数组计算出k和l的新值(1,2),并将该值发送给合并模块303。合并模块303将值(1,2)合并到EID1对应的默认的空的匹配路径中,记录对应的标识EID1。合并模块303将值(1,2)发送给遍历模块304。此时遍历模块304中有值(0,6)和(1,2),依据BWT搜索算法确定(1,2)存在子节点,并且从缓存模块305中获得第二个字符E,确定继续与(1,2)的子节点匹配。重复上述过程,合并模块303将对应EID1的字符E对应的坐标(4,4)合并到EID1的匹配路径。遍历模块304确定缓存模块305中待匹配字符串的字符均匹配完毕,则输出匹配结果。匹配成功,结果为(1,2),(4,4)。
当有多个待匹配字符串并行匹配时,例如OCC单元3022依据待匹配字符串EID1的第一个字符计算出OCC数组。此时,数据库查询单元3021可以针对待匹配字符串EID2的第一个字符查询数据库。从而实现可编程逻辑装置大概在一个待匹配字符串的匹配周期内实现多个待匹配字符串的匹配。
可编程逻辑装置中各模块之间的逻辑门关系为:例如,采用逻辑门百分比,查询控制模块301、匹配模块302、合并模块303、遍历模块304和缓存模块305对应的逻辑门百分比为:3%~4%、35~40%%、4%~5%、35%~40%和15%~20%,百分比和等于1。该逻辑门的比例关系是依据各模块的运算量设置的,是一种较佳配比方案,当然也可以在适当的范围内调整该配比关系。
以上是单板及可编程逻辑装置的介绍,下面对字符串匹配的过程进行描述。
参见图9,本实施例中字符串匹配的主要方法流程如下:
步骤901:为获得的多个待匹配字符串分配不同的标识,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识。
步骤902:针对多个待匹配字符串中每个待匹配字符串的每一个字符,依据BWT搜索算法,以前一个字符的坐标为起始位置与BWT空间中的目标字符串进行匹配,并在字符匹配成功时获得当前字符的坐标。该当前字符的坐标为当前字符之前的字符串在BWT空间中的坐标。
较佳的,在以前一个字符的坐标为起始位置要进行匹配时,针对当前字符分配字符标识,同一字符串中的不同字符对应不同的标识。对当前字符分别进行k和l的计算,然后利用当前字符的字符标识将k和l的计算结果合并得到上述坐标。
步骤903:依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中。匹配路径是指序列联配中查找路径与待匹配字符串之间的映射关系。
步骤904:当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。
针对多个待匹配字符串中每个待匹配字符串的第一个字符,前一个字符的坐标是初始设置的。
若在字符匹配过程中匹配不成功,此时存在错配,插入和缺失三种情况,则分别针对三种情况继续在BWT空间进行匹配。
如果有过多的字符匹配不成功,则说明待匹配字符串与目标字符串无法匹配,或者说没有关联。因此需要设置一个错误的容忍度。则若字符匹配不成功时,更新匹配不成功的罚分,并判断当前的罚分是否达到预设的门限值。若未达到,则在BWT空间上继续匹配。若达到预设的门限值,则结束待匹配字符串的匹配,待匹配字符串的匹配失败。对于每个字符,每次匹配不成功均对应有罚分,错配,插入和缺失三种情况的罚分可以不同,也就是三种情况的权重不同,例如错配的罚分为1,插入的罚分为2,缺失的罚分为2。每匹配不成功一次,便将相应的罚分累加,得到更新后的罚分,将其与预设的门限值比较。
由于针对一个字符在第一次匹配不成功时存在错配,插入和缺失三种情况,可能需要尝试三种情况后才能获得正确的结果。但是这样需要大量的匹配操作,设备的负荷较大。为解决该问题,先将待匹配字符串与目标字符串进行初配,针对当前字符,在匹配不成功时,在BWT空间中确定字符当前位置后存在的初配结果中的段数,当段数大于预设门限值时,终止该待匹配字符串的匹配;当等于预设门限值时,根据当前位置后续的初配结果段从所有可能的查询路径中删除相应的查询路径,从剩余查询路径中继续匹配;当小于预设门限时,则在BWT空间的所有可能路径上继续匹配。其中,所述BWT空间为前缀树或后缀树,查询路径为字符串在树上的查询路径。所有可能的查询路径是在树上针对错配,插入和缺失三种情况的所有查询路径。
参见图10,本实施例中字符串匹配的详细方法流程如下:
为获得的待匹配字符串分配标识,并将待匹配字符串与BWT空间中的目标字符串进行初配,得到初配结果。
步骤1001:从待匹配字符串中获得一个字符,并为该字符分配标识。
步骤1002:对当前字符分别进行k和l的计算,若均有计算结果且k>l(表示匹配成功),则继续步骤1003,否则继续步骤1004。
步骤1003:利用当前字符的字符标识将k和l的计算结果合并得到当前字符的坐标。继续步骤1010。
步骤1004:更新待匹配字符串对应的匹配不成功的罚分。
步骤1005:判断当前的罚分是否达到预设的门限值,若未达到,则继续步骤1006,否则结束流程。
步骤1006:在BWT空间中确定字符当前位置后存在的初配结果中的段数。
步骤1007:判断确定的段数与预设的门限值的大小关系,若大于,则结束流程,若等于,则继续步骤1008,若小于则继续步骤1009。
步骤1008:根据当前位置后续的初配结果段从所有可能的查询路径中删除相应的查询路径,从剩余查询路径中继续匹配,继续步骤1002。
步骤1009:在BWT空间的所有可能路径上继续匹配,继续步骤1002。
步骤1010:依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中。
步骤1011:判断待匹配字符串中是否有未参与匹配的字符,若有,则继续步骤1001,否则继续步骤1012。
步骤1012:当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。
本发明实施例中由可编程逻辑器件实现以字符为单位的基于BWA算法的匹配。一个待匹配字符串中的每个字符均对应该待匹配字符串的标识,将当前获得的字符的坐标与对应同一待匹配字符串的之前已获得的字符的坐标合并;当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。这样,可编程逻辑器件可在一个字符的匹配周期内处理多个字符的匹配,不需要每个匹配环节等待一个待匹配字符串中所有字符均完成之后才能进行下一个环节,明显提高了匹配效率。并且,可编程逻辑器件中的各逻辑门可独立运行,匹配过程的各个环节由不同的逻辑门实现,也就是说匹配过程的各个环节可同步进行,进一步提高了匹配效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种字符串匹配的方法,其特征在于,包括以下步骤:
为获得的多个待匹配字符串分配不同的标识,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识;
并行处理所述多个待匹配字符串,并针对每个待匹配字符串的每一个字符,依据BWT搜索算法,以前一个字符的坐标为起始位置要进行匹配时,针对当前字符分配字符标识,并依据前一个字符的坐标对当前字符分别进行k和l的计算,利用当前字符的字符标识将k和l的计算结果合并得到当前字符的坐标,其中,同一字符串中的不同字符对应不同的标识,其中k和l分别是BWT空间中后缀数组间隔的开始位置和结束位置;
依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中;
当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。
2.如权利要求1所述的方法,其特征在于,针对多个待匹配字符串中每个待匹配字符串的第一个字符,其前一个字符的坐标是初始设置的。
3.如权利要求1所述的方法,其特征在于,还包括步骤:若在字符匹配过程中匹配不成功,则分别针对错配,插入和缺失三种情况,根据与该三种情况对应的匹配策略,将当前字符继续与BWT空间中的目标字符串进行匹配。
4.如权利要求3所述的方法,其特征在于,分别针对错配,插入和缺失三种情况将当前字符继续与BWT空间中的目标字符串进行匹配之前,还包括步骤:更新匹配不成功的罚分,并判断当前的罚分是否达到预设的门限值;
若未达到门限值,则分别针对错配,插入和缺失三种情况继续与BWT空间中的目标字符串进行匹配。
5.如权利要求4所述的方法,其特征在于,在将待匹配字符串与BWT空间中的目标字符串进行匹配之前,还包括步骤:将待匹配字符串与BWT空间 中的目标字符串进行初配,得到包括多个初配结果段;
在当前的罚分未达到门限值时,还包括步骤:在BWT空间中确定字符当前匹配不成功的位置后存在的初配结果段的段数,并将确定的段数与预设的门限值比较;
当段数大于预设门限值时,终止该待匹配字符串的匹配;
当段数等于预设门限值时,根据当前位置后续的初配结果段从BWT空间的所有可能的查询路径中删除相应的查询路径,从剩余查询路径中继续匹配;
当段数小于预设门限时,则在BWT空间的所有可能路径上继续匹配。
6.一种字符串匹配装置,其特征在于,包括:
查询控制模块,用于为获得的多个待匹配字符串分配不同的标识,以及将待匹配字符串以字符为单位发送给匹配模块,并将该字符对应的标识发送给合并模块,其中一个待匹配字符串中的每个字符均对应该待匹配字符串的标识;
匹配模块,用于并行处理所述多个待匹配字符串,并针对每个待匹配字符串的每一个字符,依据BWT搜索算法,依据前一个字符的坐标对当前字符分别进行k和l的计算,利用当前字符的字符标识将k和l的计算结果合并得到当前字符的坐标,其中,同一字符串中的不同字符对应不同的标识,其中k和l分别是BWT空间中后缀数组间隔的开始位置和结束位置,并输出给合并模块;
合并模块,用于依据待匹配字符串的标识,将当前获得的字符的坐标合并到对应的待匹配字符串的匹配路径中,并将合并后的匹配路径输出给遍历模块;
遍历模块,用于当一个待匹配字符串中所有字符的坐标均合并时,确定该待匹配字符串与目标字符串匹配成功。
7.如权利要求6所述的装置,其特征在于,还包括:缓存模块,用于存储初始设置的坐标和获得的多个待匹配字符串。
8.如权利要求6所述的装置,其特征在于,针对多个待匹配字符串中每 个待匹配字符串的第一个字符,前一个字符的坐标是初始设置的。
9.如权利要求6所述的装置,其特征在于,查询控制模块还用于在以前一个字符的坐标为起始位置要进行匹配时,针对当前字符分配字符标识。
10.如权利要求6所述的装置,其特征在于,匹配模块包括:
数据库查询单元,用于从数据库中取出BWT空间的初始索引和目标字符串;
OCC单元,用于根据BWT搜索算法、初始索引和目标字符串中的位置信息计算出对应的OCC数组;
SA单元,用于根据BWT搜索算法和OCC数组计算出对应的SA Interval的上坐标k和下坐标l,并利用当前字符的字符标识将k和l的计算结果合并得到当前字符的坐标。
11.如权利要求6所述的装置,其特征在于,若在字符匹配过程中匹配不成功,则遍历模块用于分别针对错配,插入和缺失三种情况确定,根据与该三种情况对应的匹配策略,将当前字符继续与BWT空间中的目标字符串进行匹配的查询路径,并通过查询控制模块指示匹配模块依据该查询路径继续匹配。
12.如权利要求11所述的装置,其特征在于,遍历模块还用于:更新匹配不成功的罚分,并判断当前的罚分是否达到预设的门限值,若未达到门限值,则分别针对错配,插入和缺失三种情况确定继续与BWT空间中的目标字符串进行匹配的查询路径。
13.如权利要求12所述的装置,其特征在于,在将待匹配字符串与BWT空间中的目标字符串进行匹配之前,遍历模块还用于:将待匹配字符串与BWT空间中的目标字符串进行初配,得到包括多个初配结果段;
遍历模块还用于:在当前的罚分未达到门限值时,在BWT空间中确定字符当前匹配不成功的位置后存在的初配结果段的段数,并将确定的段数与预设的门限值比较;当段数大于预设门限值时,终止该待匹配字符串的匹配;当段数等于预设门限值时,根据当前位置后续的初配结果段从BWT空间的所有可 能的查询路径中删除相应的查询路径,通过查询控制模块指示匹配模块从剩余查询路径中继续匹配;当段数小于预设门限时,通过查询控制模块指示匹配模块在BWT空间的所有可能路径上继续匹配。
14.如权利要求6所述的装置,其特征在于,各模块对应不同的逻辑门。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210013304.2A CN102929900B (zh) | 2012-01-16 | 2012-01-16 | 一种字符串匹配的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210013304.2A CN102929900B (zh) | 2012-01-16 | 2012-01-16 | 一种字符串匹配的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102929900A CN102929900A (zh) | 2013-02-13 |
CN102929900B true CN102929900B (zh) | 2015-08-12 |
Family
ID=47644699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210013304.2A Expired - Fee Related CN102929900B (zh) | 2012-01-16 | 2012-01-16 | 一种字符串匹配的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102929900B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425739B (zh) * | 2013-07-09 | 2016-09-14 | 国云科技股份有限公司 | 一种字符串匹配方法 |
CN103559017B (zh) * | 2013-10-23 | 2016-08-24 | 东软集团股份有限公司 | 基于gpu异构计算平台的字符串匹配方法及系统 |
CN105404635B (zh) * | 2014-09-16 | 2019-05-28 | 华为技术有限公司 | 字符串匹配的方法、设备和异构计算系统 |
CN104899476A (zh) * | 2015-06-15 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种对多序列bwt索引构建进行并行加速的方法 |
CN107153647B (zh) * | 2016-03-02 | 2021-12-07 | 北京字节跳动网络技术有限公司 | 进行数据压缩的方法、装置、系统和计算机程序产品 |
CN107342102B (zh) * | 2016-04-29 | 2021-04-27 | 上海磁宇信息科技有限公司 | 一种具有搜索功能的mram芯片及搜索方法 |
CN106844565B (zh) * | 2016-12-30 | 2020-07-07 | 上海帝联信息科技股份有限公司 | 数据行之间的字符比较方法及装置 |
CN110020001A (zh) * | 2017-12-29 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 字符串数据的存储、查询方法以及相应的设备 |
CN108595917A (zh) * | 2018-06-29 | 2018-09-28 | 中国科学技术大学苏州研究院 | 基于fpga的面向基因测序串匹配算法的加速平台及设计方法 |
CN111046938B (zh) * | 2019-12-06 | 2020-12-01 | 邑客得(上海)信息技术有限公司 | 基于字符串多模式匹配的网络流量分类识别方法和设备 |
CN111581461B (zh) * | 2020-06-19 | 2023-04-25 | 腾讯科技(深圳)有限公司 | 字符串搜索方法、装置、计算机设备及介质 |
CN112732796B (zh) * | 2021-01-23 | 2023-01-24 | 河北省科学院应用数学研究所 | 一种模糊查询匹配方法 |
CN113435166B (zh) * | 2021-06-09 | 2024-03-19 | 深圳市世强元件网络有限公司 | 一种加下划线方法和系统、计算机装置、可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154228A (zh) * | 2006-09-27 | 2008-04-02 | 西门子公司 | 一种分段模式匹配方法及其装置 |
WO2008132016A1 (en) * | 2007-05-01 | 2008-11-06 | International Business Machines Corporation | Method and system for approximate string matching |
CN101901257A (zh) * | 2010-07-21 | 2010-12-01 | 北京理工大学 | 一种多字符串匹配方法 |
-
2012
- 2012-01-16 CN CN201210013304.2A patent/CN102929900B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154228A (zh) * | 2006-09-27 | 2008-04-02 | 西门子公司 | 一种分段模式匹配方法及其装置 |
WO2008132016A1 (en) * | 2007-05-01 | 2008-11-06 | International Business Machines Corporation | Method and system for approximate string matching |
CN101901257A (zh) * | 2010-07-21 | 2010-12-01 | 北京理工大学 | 一种多字符串匹配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102929900A (zh) | 2013-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102929900B (zh) | 一种字符串匹配的方法及装置 | |
US11842796B2 (en) | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform | |
US20240281439A1 (en) | Level Structure in Query Plan | |
US11043285B2 (en) | Bioinformatics systems, apparatus, and methods executed on an integrated circuit processing platform | |
US10691775B2 (en) | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform | |
CN104866608B (zh) | 一种数据仓库中基于连接索引的查询优化方法 | |
US9014989B2 (en) | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform | |
CN103294831B (zh) | 列存储数据库中基于多维数组的分组聚集计算方法 | |
WO2013155751A1 (zh) | 面向并发olap的数据库查询处理方法 | |
CN103309958A (zh) | Gpu和cpu混合架构下的olap星型连接查询优化方法 | |
AU2024201692A1 (en) | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform | |
CN103995827A (zh) | MapReduce计算框架中的高性能排序方法 | |
CN104778088A (zh) | 一种基于减少进程间通信开销的并行i/o优化方法与系统 | |
WO2018006022A1 (en) | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform | |
AU2021258065B2 (en) | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform | |
KR101757253B1 (ko) | 다차원 데이터를 관리하기 위한 장치 및 그 방법 | |
CN107924399A (zh) | 处理对主机而言数据传输量不明的检索请求的检索处理系统和方法 | |
CN105550284B (zh) | 在Presto计算节点混合使用内存和临时表空间的方法和装置 | |
Chen et al. | MapReduce‐Based Dynamic Partition Join with Shannon Entropy for Data Skewness | |
US20240004882A1 (en) | Handling null values in processing join operations during query execution | |
Rafique | Evaluating NOSQL Technologies for Historical Financial Data | |
Xiao et al. | Cloudgt: A high performance genome analysis toolkit leveraging pipeline optimization on spark | |
Lin et al. | Enhancement of data aggregation using a novel point access method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150812 Termination date: 20160116 |
|
EXPY | Termination of patent right or utility model |