用于實(shí)施字符串搜索的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的制作方法
【專(zhuān)利摘要】本發(fā)明提供了用于實(shí)施字符串搜索的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。在使用中,標(biāo)識(shí)第一字符串和第二字符串。此外,利用第一字符串和第二字符串實(shí)施字符串搜索。
【專(zhuān)利說(shuō)明】用于實(shí)施字符串搜索的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及字符串,并且更具體地,涉及實(shí)施字符串搜索。
【背景技術(shù)】
[0002]字符串搜索是現(xiàn)代計(jì)算技術(shù)的重要方面。例如,字符串搜索可用來(lái)實(shí)施web搜索、對(duì)大部分文本的數(shù)據(jù)庫(kù)查詢(xún)、基因組測(cè)序等等。然而,用于實(shí)施字符串搜索的當(dāng)前技術(shù)已與各種限制相關(guān)聯(lián)。
[0003]例如,用于實(shí)施字符串搜索的當(dāng)前方法可能利用大量的存儲(chǔ)器并可能花費(fèi)相當(dāng)多的時(shí)間和資源來(lái)實(shí)施。因此存在對(duì)解決與現(xiàn)有技術(shù)相關(guān)聯(lián)的這些和/或其他問(wèn)題的需求。
【發(fā)明內(nèi)容】
[0004]提供了用于實(shí)施字符串搜索的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。在使用中,標(biāo)識(shí)第一字符串和第二字符串。此外,利用第一字符串和第二字符串實(shí)施字符串搜索。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0005]圖1示出根據(jù)一個(gè)實(shí)施例的、用于實(shí)施字符串搜索的方法。
[0006]圖2不出根據(jù)另一實(shí)施例的、用于利用微小空間中的全文索引(FM-1ndex)實(shí)施基因組測(cè)序的方法。
[0007]圖3示出根據(jù)另一實(shí)施例的、用于利用經(jīng)分區(qū)的表和經(jīng)分區(qū)的讀序段(readsegment)實(shí)施基因組測(cè)序的方法。
[0008]圖4示出其中可實(shí)現(xiàn)各種先前實(shí)施例的各種架構(gòu)和/或功能性的示例性系統(tǒng)?!揪唧w實(shí)施方式】
[0009]圖1示出根據(jù)一個(gè)實(shí)施例的、用于實(shí)施字符串搜索的方法100。如操作102所示,標(biāo)識(shí)第一字符串和第二字符串。在一個(gè)實(shí)施例中,第一字符串可包括被實(shí)現(xiàn)為字節(jié)數(shù)組的字符序列。在另一實(shí)施例中,第一字符串可表示特定元素。例如,第一字符串可表示一個(gè)或多個(gè)網(wǎng)頁(yè)的內(nèi)容。在另一示例中,第一字符串可表示文本的大部分。
[0010]在又一示例中,第一字符串可表示基因組的全部或一部分。例如,第一字符串可表示組織的遺傳信息的全部或一部分,并可包括基因和DNA、RNA的非編碼序列等中的一個(gè)或多個(gè)。在另一實(shí)施例中,第一字符串可表示參考基因組(reference genome)。例如,第一字符串可表示數(shù)字核酸序列,代表基因的示例性集合。
[0011]此外,在一個(gè)實(shí)施例中,第二字符串可包括搜索字符串。例如,第二字符串可包括要在第一字符串內(nèi)被搜索的字符串。在另一實(shí)施例中,第二字符串可表示基因組的全部或一部分。例如,第二字符串可表示讀序(read)(例如從基因組內(nèi)的特定位置讀取的基因組的一部分)。在又一實(shí)施例中,第二字符串可表示與由第一字符串所表示的基因組分開(kāi)的基因組的一部分。例如,第二字符串可表示經(jīng)采樣的基因組的一部分,并且第一字符串可表示與經(jīng)采樣的基因組不同的參考基因組的整體。在另一實(shí)施例中,第一字符串和第二字符串可通過(guò)從存儲(chǔ)器讀取第一字符串和第二字符串來(lái)標(biāo)識(shí)。
[0012]進(jìn)一步地,如操作104所示,利用第一字符串和第二字符串實(shí)施字符串搜索。在一個(gè)實(shí)施例中,實(shí)施字符串搜索可包括在第一字符串內(nèi)實(shí)施針對(duì)第二字符串的搜索以確定第一字符串是否包含第二字符串。在另一實(shí)施例中,實(shí)施字符串搜索可包括比對(duì)第二字符串與第一字符串。
[0013]仍進(jìn)一步地,在一個(gè)實(shí)施例中,實(shí)施字符串搜索可包括將第一字符串存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)內(nèi)。例如,實(shí)施字符串搜索可包括將第一字符串存儲(chǔ)在FM-1ndex中。例如,第一字符串可基于Burrows-Wheeler變換來(lái)存儲(chǔ)在經(jīng)壓縮的全文子字符串索引中。在另一實(shí)施例中,第一字符串可分區(qū)成子字符串,并且這種子字符串可存儲(chǔ)在FM-1ndex內(nèi)。
[0014]并且,在一個(gè)實(shí)施例中,實(shí)施字符串搜索可包括將第一字符串存儲(chǔ)在存儲(chǔ)器中。例如,實(shí)施字符串搜索可包括將第一字符串存儲(chǔ)在片上存儲(chǔ)器中,將第一字符串存儲(chǔ)在隨機(jī)存取存儲(chǔ)器(RAM)中等。在另一實(shí)施例中,實(shí)施字符串搜索可包括將第二字符串分成多個(gè)部分。例如,實(shí)施字符串搜索可包括將第二字符串分成多個(gè)非重疊段。
[0015]此外,在一個(gè)實(shí)施例中,實(shí)施字符串搜索可包括在存儲(chǔ)第一字符串的數(shù)據(jù)結(jié)構(gòu)內(nèi)實(shí)施針對(duì)第二字符串的多個(gè)部分中的每一個(gè)的一個(gè)或多個(gè)查找(例如搜索等)以確定第二字符串的多個(gè)部分中的每一個(gè)是否存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)內(nèi)。在另一實(shí)施例中,實(shí)施字符串搜索可包括基于一個(gè)或多個(gè)查找確定第一字符串和第二字符串之間的差異。
[0016]此外,在一個(gè)實(shí)施例中,當(dāng)實(shí)施字符串搜索時(shí)可使用過(guò)濾器(例如在存儲(chǔ)第一字符串的數(shù)據(jù)結(jié)構(gòu)上實(shí)施針對(duì)第二字符串的一個(gè)或多個(gè)查找之前等)。例如,布隆過(guò)濾器(Bloomfilter)(例如節(jié)省空間的概率型數(shù)據(jù)結(jié)構(gòu))可用來(lái)測(cè)試第二字符串是否位于存儲(chǔ)第一字符串的數(shù)據(jù)結(jié)構(gòu)內(nèi)。在另一示例中,如果過(guò)濾器指示第二字符串不位于存儲(chǔ)第一字符串的數(shù)據(jù)結(jié)構(gòu)內(nèi),那么可不在數(shù)據(jù)結(jié)構(gòu)上實(shí)施針對(duì)第二字符串的一個(gè)或多個(gè)查找。
[0017]仍進(jìn)一步地,在一個(gè)實(shí)施例中,實(shí)施字符串搜索可包括將第一字符串存儲(chǔ)在哈希表(例如使用哈希函數(shù)將鍵(key)映射到相關(guān)聯(lián)值的數(shù)據(jù)結(jié)構(gòu)等)內(nèi)。在另一實(shí)施例中,實(shí)施字符串搜索可包括將存儲(chǔ)第一字符串的哈希表分區(qū)成多個(gè)段。在又一實(shí)施例中,實(shí)施字符串搜索可包括將多個(gè)段中的每一個(gè)分類(lèi)。例如,多個(gè)段中的每一個(gè)可被排序,使得對(duì)于一個(gè)或多個(gè)因素鄰近的段比不鄰近的段更類(lèi)似。在另一示例中,多個(gè)段中的每一個(gè)可與多個(gè)預(yù)定的類(lèi)中的一個(gè)相關(guān)聯(lián)。
[0018]并且,在一個(gè)實(shí)施例中,實(shí)施字符串搜索可包括構(gòu)建多個(gè)新哈希表,其中每個(gè)新哈希表與預(yù)定的類(lèi)相關(guān)聯(lián)。在另一實(shí)施例中,實(shí)施字符串搜索可包括將與特定類(lèi)相關(guān)聯(lián)的全部段存儲(chǔ)在與該特定類(lèi)相關(guān)聯(lián)的新哈希表中。在又一實(shí)施例中,新哈希表可小于其中存儲(chǔ)第一字符串的哈希表。
[0019]此外,在一個(gè)實(shí)施例中,實(shí)施字符串搜索可包括將第二字符串分區(qū)成多個(gè)子字符串。在另一實(shí)施例中,實(shí)施字符串搜索可包括將多個(gè)子字符串分類(lèi)。例如,多個(gè)子字符串中的每一個(gè)可被排序,使得對(duì)于一個(gè)或多個(gè)因素鄰近的子字符串比不鄰近的子字符串更類(lèi)似。在另一示例中,多個(gè)子字符串中的每一個(gè)可與多個(gè)預(yù)定的類(lèi)(例如,與存儲(chǔ)多個(gè)段的新哈希表相關(guān)聯(lián)的多個(gè)預(yù)定的類(lèi)等)中的一個(gè)相關(guān)聯(lián)。在又一實(shí)施例中,可使用基數(shù)排序?qū)⒍鄠€(gè)子字符串中的每一個(gè)與多個(gè)預(yù)定的類(lèi)中的一個(gè)相關(guān)聯(lián)。[0020]進(jìn)一步地,在一個(gè)實(shí)施例中,實(shí)施字符串搜索可包括將新哈希表中的一個(gè)加載到存儲(chǔ)器中。例如,新哈希表中的一個(gè)可被加載到片上存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器(RAM)等中。在另一實(shí)施例中,實(shí)施字符串搜索可包括標(biāo)識(shí)與經(jīng)加載的哈希表相關(guān)聯(lián)的類(lèi),并標(biāo)識(shí)與該類(lèi)相關(guān)聯(lián)的一個(gè)或多個(gè)子字符串。在又一實(shí)施例中,實(shí)施字符串搜索可包括在加載到存儲(chǔ)器中的新哈希表內(nèi)實(shí)施針對(duì)第二字符串的一個(gè)或多個(gè)子字符串中的每一個(gè)的一個(gè)或多個(gè)查找(例如,搜索等)以確定第二字符串的多個(gè)子字符串中的每一個(gè)是否存儲(chǔ)在新哈希表內(nèi)。
[0021]仍進(jìn)一步地,在一個(gè)實(shí)施例中,多個(gè)新哈希表中的每一個(gè)可被加載到與不同處理器相關(guān)聯(lián)的存儲(chǔ)器中,并且每個(gè)不同處理器可利用與其特定新哈希表的類(lèi)相關(guān)聯(lián)的一個(gè)或多個(gè)子字符串,在哈希表上實(shí)施字符串搜索。通過(guò)該方式,可由多個(gè)處理器并行地實(shí)施字符串搜索。此外,可減少實(shí)施字符串搜索必需的存儲(chǔ)器數(shù)量。進(jìn)一步地,可通過(guò)在較小數(shù)量的較快存儲(chǔ)器中實(shí)施字符串搜索來(lái)增加性能。
[0022]現(xiàn)在將關(guān)于前述框架根據(jù)用戶(hù)意愿可以或可以不采用其實(shí)現(xiàn)的各種可選架構(gòu)和特征來(lái)闡述更多示例性信息。應(yīng)特別注意的是,闡述下面的信息是出于示例性目的并且不應(yīng)視為以任何方式加以限制。任何下面的特征可以可選地與所描述的其他特征合并或?qū)⑵渑懦?br>
[0023]圖2示出根據(jù)另一實(shí)施例的、用于利用FM-1ndex實(shí)施基因組測(cè)序的方法200。作為選項(xiàng),可在圖1的功能性的上下文中實(shí)行方法200。然而當(dāng)然,可在任何期望的環(huán)境中實(shí)現(xiàn)方法200。還應(yīng)注意的是,可在本描述期間應(yīng)用前述限定。
[0024]如操作202所示,標(biāo)識(shí)經(jīng)采樣的基因組和參考基因組。在一個(gè)實(shí)施例中,參考基因組可包括數(shù)字核酸序列,代表基因的示例性集合。在另一實(shí)施例中,經(jīng)采樣的基因組可包括經(jīng)采樣用于與參考基因組比較的數(shù)字核酸序列。
[0025]此外,如操作204所示,從經(jīng)采樣的基因組產(chǎn)生讀序。在一個(gè)實(shí)施例中,可通過(guò)從經(jīng)采樣的基因組內(nèi)的位置讀取來(lái)產(chǎn)生讀序。進(jìn)一步地,如操作206所示,參考基因組存儲(chǔ)在FM-1ndex中。在一個(gè)實(shí)施例中,將參考基因組存儲(chǔ)在FM-1ndex中可包括確定用于參考基因組的多個(gè)子字符串。例如,F(xiàn)M-1ndex可構(gòu)造在用于參考基因組的m=20連續(xù)堿基(contiguous bases)的全部可能的子字符串之上。
[0026]仍進(jìn)一步地,在一個(gè)實(shí)施例中,參考基因組可存儲(chǔ)在存儲(chǔ)器中的FM-1ndex中。例如,參考基因組可存儲(chǔ)在片上存儲(chǔ)器中的、隨機(jī)存取存儲(chǔ)器(RAM)等中的FM-1ndex中。并且,如操作208所示,比對(duì)讀序與存儲(chǔ)在FM-1ndex中的參考基因組。在一個(gè)實(shí)施例中,比對(duì)讀序與參考基因組可包括將讀序分成非重疊段。例如,讀序可被分成每m個(gè)堿基對(duì)的n/m個(gè)非重疊段。
[0027]此外,在一個(gè)實(shí)施例中,比對(duì)讀序與參考基因組可包括實(shí)施針對(duì)FM-1ndex中的每個(gè)段的查找。通過(guò)該方式,將FM-1ndex用來(lái)存儲(chǔ)參考基因組可最小化存儲(chǔ)參考基因組必需的存儲(chǔ)數(shù)量。進(jìn)一步地,存取參考基因組的速度可增加。
[0028]仍進(jìn)一步地,在一個(gè)實(shí)施例中,當(dāng)比對(duì)讀序與參考基因組時(shí)可使用布隆過(guò)濾器。例如,可在查找中使用布隆過(guò)濾器以確定每個(gè)段是否位于FM-1ndex中。在另一示例中,如果布隆過(guò)濾器查找不返回段在FM-1ndex內(nèi)的結(jié)果(例如,如果布隆過(guò)濾器查找針對(duì)段是否定的等等),那么針對(duì)該段的FM-1ndex查找可被避免。通過(guò)該方式,可加快、并可更高效地實(shí)施讀序與參考基因組的比對(duì)。[0029]并且,在一個(gè)實(shí)施例中,可利用可擴(kuò)展核苷酸比對(duì)程序(scalable nucleotidealignment program, SNAP)實(shí)施比對(duì)。參見(jiàn)例如(Zaharia 等人的)“DNA SequenceAlignment with SNAP”,在此通過(guò)援引的方式對(duì)其全文加以合并。
[0030]圖3示出根據(jù)另一實(shí)施例的、利用經(jīng)分區(qū)的表和經(jīng)分區(qū)的讀序段實(shí)施基因組測(cè)序的方法300。作為選項(xiàng),可在圖1-2的功能性的上下文中實(shí)行方法300。然而當(dāng)然,可在任何期望的環(huán)境中實(shí)現(xiàn)方法300。還應(yīng)注意的是,可在本描述期間應(yīng)用前述限定。
[0031]如操作302所示,標(biāo)識(shí)經(jīng)采樣的基因組和參考基因組。此外,如操作304所示,從經(jīng)采樣的基因組產(chǎn)生讀序。進(jìn)一步地,如操作306所示,參考基因組存儲(chǔ)在表中。在一個(gè)實(shí)施例中,將參考基因組存儲(chǔ)在表中可包括確定用于參考基因組的多個(gè)子字符串。例如,表(例如哈希表、FM-1ndex等)可構(gòu)造在用于參考基因組的m=20連續(xù)堿基的全部可能的子字符串之上。
[0032]仍進(jìn)一步地,如操作308所示,參考基因組存儲(chǔ)在其中的表被分區(qū)。在一個(gè)實(shí)施例中,將表分區(qū)可包括將表分成多個(gè)較小的表。在另一實(shí)施例中,將表分區(qū)可包括將參考基因組分成段。
[0033]并且,如操作310所示,經(jīng)分區(qū)的表被分類(lèi)。在一個(gè)實(shí)施例中,較小的表中的每一個(gè)可根據(jù)P堿基對(duì)的集合(例如[2,8]中的P,并且其中集合可由第一 p堿基對(duì)來(lái)形成或是P個(gè)定位的特定集合等)來(lái)分類(lèi),并可構(gòu)造4~p個(gè)不同的表,一個(gè)針對(duì)段的每一類(lèi)。
[0034]此外,如操作312所示,從經(jīng)采樣的基因組產(chǎn)生的讀序被分區(qū)。在一個(gè)實(shí)施例中,將讀序分區(qū)可包括將讀序分成多個(gè)部分。進(jìn)一步地,如操作314所示,與經(jīng)分類(lèi)的經(jīng)分區(qū)的表相對(duì)應(yīng)地將經(jīng)分區(qū)的讀序分類(lèi)。在一個(gè)實(shí)施例中,讀序的每一部分中可根據(jù)P堿基對(duì)的集合(例如[2,8]中的p,并且其中集合可由第一 p堿基對(duì)來(lái)形成或是p個(gè)定位的特定集合等)來(lái)分類(lèi)。
[0035]在另一實(shí)施例中,每個(gè)經(jīng)分區(qū)的讀序部分可與較小的表中的一個(gè)共享分類(lèi),使得每個(gè)經(jīng)分區(qū)的讀序具有唯一對(duì)應(yīng)的較小的表。在又一實(shí)施例中,經(jīng)分區(qū)的讀序部分可通過(guò)使用基數(shù)排序采用線性復(fù)雜度0(N*p)來(lái)分類(lèi),其中N是段的數(shù)目。
[0036]在另一實(shí)施例中,經(jīng)分區(qū)的表可包括FM-1ndex,并且FM-1ndex內(nèi)的參考基因組的段的定位可用來(lái)對(duì)它們加以分類(lèi)。例如,F(xiàn)M-1ndex內(nèi)的參考基因組的段可被分區(qū)成映射到FM-1ndex中的不同間隔[j, k]的部分,并且可針對(duì)每個(gè)部分構(gòu)建單獨(dú)的哈希表。在另一實(shí)施例中,可使用一個(gè)或多個(gè)FM-1ndex遍歷步驟來(lái)分類(lèi)經(jīng)分區(qū)的讀序部分,直到與讀序部分相關(guān)聯(lián)的搜索范圍足夠小到僅觸及一或二個(gè)部分。
[0037]仍進(jìn)一步地,如操作316所示,根據(jù)分類(lèi)來(lái)比對(duì)經(jīng)分區(qū)的讀序與經(jīng)分區(qū)的表。在一個(gè)實(shí)施例中,每個(gè)經(jīng)分區(qū)的讀序部分可與和經(jīng)分區(qū)的讀序部分共享分類(lèi)的相對(duì)應(yīng)的較小的表比對(duì)。在另一實(shí)施例中,比對(duì)經(jīng)分區(qū)的讀序與經(jīng)分區(qū)的表可包括在相對(duì)應(yīng)的較小的表中實(shí)施針對(duì)每個(gè)經(jīng)分區(qū)的讀序部分的查找。
[0038]通過(guò)該方式,在具有小數(shù)量的快速存儲(chǔ)器的處理器架構(gòu)上,較小的表可逐一地加載到存儲(chǔ)器中。此外,在具有數(shù)個(gè)處理器的平臺(tái)上,每個(gè)處理器可通過(guò)僅加載與經(jīng)分區(qū)的讀序部分共享分類(lèi)的相對(duì)應(yīng)的較小的表來(lái)處理經(jīng)分區(qū)讀序部分的不同分類(lèi)。
[0039]圖4示出其中可實(shí)現(xiàn)各種先前實(shí)施例的各種架構(gòu)和/或功能性的示例性系統(tǒng)400。如所示,提供了系統(tǒng)400,包括連接到通信總線402的至少一個(gè)主機(jī)處理器401。系統(tǒng)400還包括主存儲(chǔ)器404。控制邏輯(軟件)和數(shù)據(jù)存儲(chǔ)在可采用隨機(jī)存取存儲(chǔ)器(RAM)形式的主存儲(chǔ)器404中。
[0040]系統(tǒng)400還包括圖形處理器406和顯示器408,即計(jì)算機(jī)監(jiān)視器。在一個(gè)實(shí)施例中,圖形處理器406可包括多個(gè)著色器模塊、光柵模塊等。前述模塊中的每一個(gè)實(shí)際上可置于單個(gè)半導(dǎo)體平臺(tái)上以形成圖形處理單元(GPU)。
[0041 ] 在本描述中,單個(gè)半導(dǎo)體平臺(tái)可以指基于單一半導(dǎo)體的集成電路或芯片。應(yīng)注意的是,術(shù)語(yǔ)單個(gè)半導(dǎo)體平臺(tái)還可以指具有增加的連接性的多芯片模塊,其仿真片上操作,并在對(duì)常規(guī)中央處理單元(CPU)和總線實(shí)現(xiàn)方案的利用上進(jìn)行大量改進(jìn)。當(dāng)然,各種模塊還可根據(jù)用戶(hù)意愿分開(kāi)安置或以半導(dǎo)體平臺(tái)的各種組合的方式安置。還可通過(guò)可包括(但不限于)現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)的可重新配置的邏輯來(lái)實(shí)現(xiàn)系統(tǒng)。
[0042]系統(tǒng)400還可包括二級(jí)存儲(chǔ)410。二級(jí)存儲(chǔ)410包括例如硬盤(pán)驅(qū)動(dòng)器和/或表示軟盤(pán)驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、壓縮光盤(pán)驅(qū)動(dòng)器等的可移動(dòng)存儲(chǔ)驅(qū)動(dòng)器。可移動(dòng)存儲(chǔ)驅(qū)動(dòng)器以眾所周知的方式從可移動(dòng)存儲(chǔ)單元讀取和/或?qū)懭氲娇梢苿?dòng)存儲(chǔ)單元。
[0043]計(jì)算機(jī)程序或計(jì)算機(jī)控制邏輯算法可存儲(chǔ)在主存儲(chǔ)器404和/或二級(jí)存儲(chǔ)410中。這種計(jì)算機(jī)程序當(dāng)被執(zhí)行時(shí)使能系統(tǒng)400實(shí)施各種功能。存儲(chǔ)器404、存儲(chǔ)410和/或任何其他存儲(chǔ)是計(jì)算機(jī)可讀介質(zhì)的可能的示例。
[0044]在一個(gè)實(shí)施例中,可在主機(jī)處理器401、圖形處理器406、具有主機(jī)處理器401和圖形處理器406 二者的至少部分能力的集成電路(未示出)、芯片集(即設(shè)計(jì)為作為實(shí)施相關(guān)功能的單元來(lái)工作和銷(xiāo)售的集成電路組等)和/或就其而言的任何其他集成電路的上下文中實(shí)現(xiàn)各種先前圖的架構(gòu)和/或功能性。
[0045]仍然,可在通用計(jì)算機(jī)系統(tǒng)、電路板系統(tǒng)、專(zhuān)用于娛樂(lè)目的的游戲控制臺(tái)系統(tǒng)、專(zhuān)用系統(tǒng)和/或任何其他期望的系統(tǒng)的上下文中實(shí)現(xiàn)各種先前圖的架構(gòu)和/或功能性。例如,系統(tǒng)400可采取臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)和/或任何其他類(lèi)型的邏輯的形式。仍然,系統(tǒng)400可采取各種其他設(shè)備的形式,包括但不限于個(gè)人數(shù)字助理(PDA)設(shè)備、移動(dòng)電話設(shè)備、電視機(jī)等。
[0046]進(jìn)一步地,雖然未示出,但系統(tǒng)400可耦連到網(wǎng)絡(luò)[例如電信網(wǎng)絡(luò)、局域網(wǎng)絡(luò)(LAN)、無(wú)線網(wǎng)絡(luò)、諸如互聯(lián)網(wǎng)的廣域網(wǎng)(WAN)、點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)、有線網(wǎng)絡(luò)等]以用于通信目的。
[0047]雖然上文已描述各種實(shí)施例,但應(yīng)理解的是,僅通過(guò)示例而非限制的方式將其加以呈現(xiàn)。因此,優(yōu)選實(shí)施例的寬度和范圍不應(yīng)被上文所述的任何示例性實(shí)施例所限制,而僅應(yīng)根據(jù)下面的權(quán)利要求和其等同物加以限定。
【權(quán)利要求】
1.一種方法,包括: 標(biāo)識(shí)第一字符串和第二字符串;以及 利用所述第一字符串和所述第二字符串實(shí)施字符串搜索。
2.根據(jù)權(quán)利要求1所述的方法,其中所述第一字符串表示一個(gè)或多個(gè)網(wǎng)頁(yè)的內(nèi)容。
3.根據(jù)權(quán)利要求1所述的方法,其中所述第一字符串表示基因組的全部或一部分。
4.根據(jù)權(quán)利要求1所述的方法,其中所述第一字符串表示參考基因組。
5.根據(jù)權(quán)利要求1所述的方法,其中所述第二字符串包括要在所述第一字符串內(nèi)被搜索的字符串。
6.根據(jù)權(quán)利要求1所述的方法,其中所述第二字符串表示與由所述第一字符串所表示的基因組分開(kāi)的基因組的一部分。
7.根據(jù)權(quán)利要求1所述的方法,其中實(shí)施所述字符串搜索包括比對(duì)所述第二字符串與所述第一字符串。
8.根據(jù)權(quán)利要求1所述的方法,其中實(shí)施所述字符串搜索包括將所述第一字符串存儲(chǔ)在 FM-1ndex 中。
9.根據(jù)權(quán)利要求1所述的方法,其中實(shí)施所述字符串搜索包括將所述第一字符串存儲(chǔ)在隨機(jī)存取存儲(chǔ)器(RAM)中。
10.根據(jù)權(quán)利要求1所述的方法,其中實(shí)施所述字符串搜索包括在存儲(chǔ)所述第一字符串的數(shù)據(jù)結(jié)構(gòu)內(nèi)實(shí)施針對(duì)所述第二字符串的多個(gè)部分中的每一個(gè)的一個(gè)或多個(gè)查找以確定所述第二字符串的所述多個(gè)部分中的每一個(gè)是否存儲(chǔ)在所述數(shù)據(jù)結(jié)構(gòu)內(nèi)。
11.根據(jù)權(quán)利要求1所述的方法,其中當(dāng)實(shí)施所述字符串搜索時(shí)使用過(guò)濾器。
12.根據(jù)權(quán)利要求1所述的方法,其中布隆過(guò)濾器用來(lái)測(cè)試所述第二字符串是否位于存儲(chǔ)所述第一字符串的數(shù)據(jù)結(jié)構(gòu)內(nèi)。
13.根據(jù)權(quán)利要求1所述的方法,其中實(shí)施所述字符串搜索包括將所述第一字符串存儲(chǔ)在哈希表內(nèi)。
14.根據(jù)權(quán)利要求13所述的方法,其中實(shí)施所述字符串搜索包括將存儲(chǔ)所述第一字符串的所述哈希表分區(qū)成多個(gè)段。
15.根據(jù)權(quán)利要求14所述的方法,其中實(shí)施所述字符串搜索包括將所述多個(gè)段中的每一個(gè)分類(lèi)。
16.根據(jù)權(quán)利要求15所述的方法,其中所述多個(gè)段中的每一個(gè)與多個(gè)預(yù)定的類(lèi)中的一個(gè)相關(guān)聯(lián)。
17.根據(jù)權(quán)利要求16所述的方法,其中實(shí)施所述字符串搜索包括構(gòu)建多個(gè)新哈希表,其中每個(gè)新哈希表與預(yù)定的類(lèi)相關(guān)聯(lián)。
18.一種具體化在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品,包括: 用于標(biāo)識(shí)第一字符串和第二字符串的代碼;以及 用于利用所述第一字符串和所述第二字符串實(shí)施字符串搜索的代碼。
19.一種系統(tǒng),包括: 處理器,用于標(biāo)識(shí)第一字符串和第二字符串,并且利用所述第一字符串和所述第二字符串實(shí)施字符串搜索。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中所述處理器經(jīng)由總線耦連到存儲(chǔ)器。
【文檔編號(hào)】G06F17/30GK103810229SQ201310533497
【公開(kāi)日】2014年5月21日 申請(qǐng)日期:2013年10月31日 優(yōu)先權(quán)日:2012年11月1日
【發(fā)明者】雅各布·潘塔萊奧尼, 戴維·塔里亞 申請(qǐng)人:輝達(dá)公司