JP2009244996A - 文字列検索システム及び方法 - Google Patents
文字列検索システム及び方法 Download PDFInfo
- Publication number
- JP2009244996A JP2009244996A JP2008088322A JP2008088322A JP2009244996A JP 2009244996 A JP2009244996 A JP 2009244996A JP 2008088322 A JP2008088322 A JP 2008088322A JP 2008088322 A JP2008088322 A JP 2008088322A JP 2009244996 A JP2009244996 A JP 2009244996A
- Authority
- JP
- Japan
- Prior art keywords
- character
- character string
- digit
- data
- value
- 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.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【解決手段】バイナリ文字列に対する大量の部分和の情報を、2冪進法の桁ごとのデータに分割し、文字位置(文字列先頭からの文字数)の各桁において、部分和の該当桁のみの情報を記憶させることにより、桁ごとのデータ量が上位桁に1つ上がるたびに基数分の1に減少させ、また、各桁において基数個ごとの部分和の情報を一つの累積値と多数の差分値に分けて記憶させることにより、メモリ使用の効率化を図る。また、補助情報の最上位桁から最下位桁までの階層構造に沿って、ランク関数とセレクト関数の値を桁ごとに順次高速に決定する。多種の文字を含む場合は、バイナリ文字列の場合に帰着させて扱う。
【選択図】図1
Description
ランク値及び文字位置(文字列先頭から数えた文字数)を表す整数値を、それらの2進表記を指定したビット幅(w)に区切ることにより、2のw乗進法の桁に分割し、
補助情報全体を、桁ごとの情報に分割した桁データの集まりとして記憶し、
各々の桁データは、文字位置の該当桁の2のw乗個の値に対する補助情報を要素データとして、それらの繰り返しとして記憶し、
各々の要素データは、文字位置の該当桁の2のw乗個の値に対して、
その最後の値(2のw乗マイナス1)に対しては、累積値データとして、対応する文字位置でのランク値の該当桁を記憶し、
それ以外の値(0から2のw乗マイナス2まで)では、差分データとして、対応する文字位置と該当桁の値が1だけ小さい文字位置での、ランク値の該当桁での変化分を記憶することにより、
上位の桁に上がる毎に、桁データのデータ量を繰り返し2のw乗分の1に減少させて、
前記目的を達する補助情報の記憶方法。
対象文字位置の直前の要素データ内の累積値データと、
対象文字位置を含む要素データ内での、対象文字位置までの差分データの総和と、
の和を求め、さらに、それと下位の桁からの繰上り(最下位桁では0)の和を求め、その値をwビット幅の下位桁と上位桁に分割し、その下位桁の値をランク値の該当桁の値とし、その上位桁の値を該当桁から上位の桁への繰り上がりとして計算し、
これを、最下位桁から最上位桁までの各桁に対して順次繰り返すことにより、前記目的を達するランク値の計算方法。
探索文字位置の直前の要素データ内の累積値データと、
対象文字位置を含む要素データ内での、対象文字位置までの差分データの総和と、
の和として、探索文字位置のランク値の該当桁の値を求め、その値がkの該当桁の値(繰上りが必要な場合は、2のw乗を加えた値)以上となり、かつ、
ランク値の該当桁以下の未定の桁の値を、探索文字位置における該当桁より下位の桁の要素データの累積値データとしたときの仮の値がk以上となる、
ような最小の値として、探索文字位置の該当桁の値を決め、そのときランク値の該当桁がkの該当桁の値を越えるときは、一つ下位の桁においては繰上りが必要として、
これを、最上位桁から最下位桁まで順次繰り返すことにより、前記目的を達するセレクト値の計算方法。
それらに対する検索を高速化するための桁データを、最下位を除く上位の桁では、前記(1)の方法を用いて独立に作成し、
また、最下位の桁については、文字列先頭より2のw乗個ごとの文字位置では、文字種ごとのランク値の最下位桁を記憶し、それ以外の文字位置では、現れる文字種を2進符号化して記憶することにより、最下位の桁データを作成し、
塩基配列に対する各文字に関するランク関数とセレクト関数の計算を、それらの桁データからなる補助情報を備えた0と1からなるそれらの文字列に対するランク関数とセレクト関数の計算に帰着させることにより、塩基配列データに対して前記(4)と同様の計算を行う、塩基配列データに対する配列検索方法。
全文字種を2種類に分類して、文字列の各文字がどちらの種類に属するかを0又は1で指定することにより、0と1からなるバイナリ文字列を作成し、また、
2種類の分類のそれぞれに対して、一方の分類のみの文字からなる部分列を抜き出すことにより、文字種が減少した文字列を2つ作り、
後者の2つの文字列に対して、同様の処理を、文字種が2種に減少するまで再帰的に繰り返し、
元の多種の文字を含む文字列に対するランク関数とセレクト関数の計算を、再帰的に得られたバイナリ文字列に対するランク関数とセレクト関数の計算に帰着させる、多種の文字を含むデータに対する配列検索方法。
前記補助情報を利用するランク関数の前記(2)の計算方法と前記(3)のセレクト関数の計算方法を、ビット演算に還元して論理ゲート回路により構成し、
それらのメモリセルと論理ゲート回路とを近接して配置した専用ハードウェアを利用することにより、ランク関数とセレクト関数の計算を高速化する方法。
図1は、本発明の特徴を最も良く現している、ランク関数とセレクト関数の高速計算のための補助情報のデータ構造を表した説明図である。このデータ構造は、計算機主記憶上に構築される。
図2に、このような補助情報を構築するための処理手順を示す。また、図3に、桁のビット幅がw=2のときの構築過程の例を示す。図3において、31は与えられたバイナリ文字列を上から下に向かって縦方向に表記したものである。文字列31を入力し(S20)、その各文字位置で、文字列先頭からの0又は1の並びの累積値を計算することにより(S21)、各文字位置で図3の32のような値を得る。これらの値は2進表記している。次に、これらの2進表記をwビット幅の桁に分割し(S22)、分割後得られたものをセルと呼ぶ。これにより図3の33のような結果を得る。次に、最下位の桁から1桁上がるごとに繰り返し、上位桁のセルを2のw乗分の1に間引く(S23)。即ち、上から数えて2のw乗の倍数番目の位置にあるセルを残して、他のセルを削除する。これにより、図3の34に示すような結果を得る。次に、各列で上から数えて2のw乗の倍数番目以外の位置にあるセルの値を、直前のセルの値との差に変更する(S24)。これにより、図3の35に示すような結果を得る。ここで、その各列を桁データ2とし、その内部の2のw乗個ごとのセルを纏めて要素データ3とする。要素データ3の最後のセルを累積値データ5とし、それ以外のセルを差分データ4とする(S25)。
図3の31と35を比較することにより、入力文字列を記憶するために必要な記憶容量と、補助情報を記憶するために必要となる記憶容量とを比較することができる。補助情報では、バイナリ入力文字列内の2のw乗個の文字(2のw乗ビット)ごとに、累積値データとして、部分和の該当桁(wビット)の情報を余分に記憶する必要がある。さらに、補助情報では、バイナリ入力文字列内の2のw乗個の文字(2のw乗ビット)ごとに、上位1セル(1ビット)を記憶する必要がある。上位の桁においても同様に、2のw乗個のセル(2のw乗ビット)ごとに、累積値データとして、部分和の該当桁(wビット)をさらに記憶する必要がある。また、上位セルが複数あれば、さらに上位方向に同様のセルのための記憶容量が繰り返し必要となる。従って、入力文字列を記憶するために必要な記憶容量を基準として、補助情報を記憶するために必要となる記憶容量の割合は、累積値データのために、1+w/(2のw乗)であり、また、上位桁方向のために、公比r=1/(2のw乗)の無限級数和として1/(1−r)以下となり、最終的には、これらを合成して、(1+wr)/(1−r)以下となる。この値は、例えば、桁のビット幅がw=8のとき、約1.035となる。すなわち、補助情報のために余分に必要となる記憶容量の増加は、僅か約3.5%に抑えられる。
次に、図1に示した補助情報を用いて、バイナリ文字列データ内の文字列検索を行う方法を示す。図4は、そのシステム全体の構成図であり、図5は全体の動作のフローチャートである。
前記実施例では、2種類の文字0と1とからなるバイナリ文字列データ内の文字列の高速検索を行うシステムの例を示した。本実施例では、文字の種類数を2に限定せずに、一般の複数の文字種に対しても同様に、本発明を用いて文字列の高速検索を行うシステムを実現できることを示す。説明を具体的にするために、超並列DNAシーケンサの配列データ解析で必要となる、A,G,C,T,Nの5種類の文字からなる塩基配列データに対して、高速に配列検索を行うシステムを取り上げる。20種類の文字を必要とするアミノ酸配列、又は、全てのアルファベットを用いる一般文書に対しても、同様な検索システムを実現することが出来る。
前記実施例では、文字の種類数を2に限定せずに、一般の複数の文字種に対して、文字列の高速検索を行うための補助情報を、最下位の桁については、全文字種に関する情報を纏めて有する最下位桁データと、それ以外の上位の桁については、文字種ごとに独立に構成した桁データとからなるデータ構造とすることにより、メモリ効率が良い高速な文字列検索が行えることを示した。
前記実施例では、汎用計算機の利用を想定して、ビット幅wを8にして、2のw乗進法の1桁を汎用計算機の1バイトに一致させて、汎用計算機上で効率的に計算できるような方法を説明した。しかし、これまでに説明した方法は、ビット幅wが8以外である場合でも有効である。
2 桁データ
3 要素データ
4 差分データ
5 累積値データ
Claims (7)
- バイナリ文字列データを記憶する記憶装置と、
バイナリ検索文字列を入力する入力装置と、
前記文字列データ中における前記検索文字列の出現位置を計算する演算装置と、
前記演算装置による演算結果を出力する出力装置を備え、
前記演算装置は、
前記文字列データをバローズ・ホィーラー変換するバローズ・ホィーラー変換処理部と、
前記バローズ・ホィーラー変換に対する補助情報を構築する補助情報構築処理部と、
前記補助情報を記憶する領域と、
前記文字列データからサフィックス・アレイを計算するサフィックス・アレイ構築処理部と、
前記サフィックス・アレイ構築処理部によって計算されたサフィックス・アレイの要素を一定間隔に間引く処理を行うサフィックス・アレイ部分配列抽出処理部と、
前記サフィックス・アレイ部分配列抽出処理部によって得られたサフィックス・アレイ部分配列を記憶する領域と、
前記補助情報を用いて、前記文字列データのバローズ・ホィーラー変換後の文字列において、その文字列先頭から指定文字位置までに出現する1の数を当該文字位置におけるランク値として計算するランク関数計算処理部と、
指定した自然数kに対して、前記文字列データのバローズ・ホィーラー変換後の文字列において、k番目に1が現れる文字列先頭からの文字位置を探索文字位置とよぶとき、前記補助情報を用いて前記文字列データのバローズ・ホィーラー変換後の文字列における探索文字位置(セレクト値)を計算するセレクト関数計算処理部と、
ランク関数とセレクト関数を繰り返し用いて前記バローズ・ホィーラー変換された結果と前記サフィックス・アレイの情報から前記文字列データ内での前記検索文字列の出現位置を検索する文字列検索処理部とを有し、
前記補助情報構築処理部は、
前記文字列データのバローズ・ホィーラー変換後の文字列に対して、ランク値及び文字列先頭から数えた文字位置を表す整数値を、それらの2進表記を指定したビット幅(w)に区切ることにより、2のw乗進法の桁に分割し、
補助情報全体を、桁ごとの情報に分割した桁データの集まりとして記憶し、
各々の桁データは、文字位置の該当桁の2のw乗個の値に対する補助情報を要素データとして、それらの繰り返しとして記憶し、
各々の要素データは、文字位置の該当桁の2のw乗個の値に対して、
その最後の値(2のw乗マイナス1)に対しては、累積値データとして、対応する文字位置でのランク値の該当桁を記憶し、
それ以外の値(0から2のw乗マイナス2まで)では、差分データとして、対応する文字位置と該当桁の値が1だけ小さい文字位置での、ランク値の該当桁での変化分を記憶することにより、
上位の桁に上がる毎に、桁データのデータ量を繰り返し2のw乗分の1に減少させて記憶し、
前記ランク関数計算処理部は、
前記文字列データのバローズ・ホィーラー変換後の文字列の対象文字位置におけるランク値を計算するにあたり、
最下位桁から最上位桁までの各桁において、前記補助情報の桁データを参照して、
対象文字位置の直前の要素データ内の累積値データと、
対象文字位置を含む要素データ内での、対象文字位置までの差分データの総和と、
の和を求め、さらに、それと下位の桁からの繰上り(最下位桁では0)の和を求め、その値をwビット幅の下位桁と上位桁に分割し、その下位桁の値をランク値の該当桁の値とし、その上位桁の値を該当桁から上位の桁への繰り上がりとして計算し、
これを、最下位桁から最上位桁までの各桁に対して順次繰り返すことにより、前記対象文字位置におけるランク値を計算し、
前記セレクト関数計算処理部は、
最上位桁から最下位桁までの各桁において、前記補助情報の桁データを参照して、
探索文字位置の直前の要素データ内の累積値データと、
対象文字位置を含む要素データ内での、対象文字位置までの差分データの総和と、
の和として、探索文字位置のランク値の該当桁の値を求め、その値がkの該当桁の値(繰上りが必要な場合は、2のw乗を加えた値)以上となり、かつ、
ランク値の該当桁以下の未定の桁の値を、探索文字位置における該当桁より下位の桁の要素データの累積値データとしたときの仮の値がk以上となる、
ような最小の値として、探索文字位置の該当桁の値を決め、そのときランク値の該当桁がkの該当桁の値を越えるときは、一つ下位の桁においては繰上りが必要として、
これを、最上位桁から最下位桁まで順次繰り返すことにより、与えられた自然数kに対する探索文字位置を計算し、
前記文字列検索処理部は、
前記ランク関数計算処理部に指示してランク関数の計算を繰り返すことにより、前記検索文字列が現れる前記サフィックス・アレイ内の順位の範囲を計算し、前記セレクト関数計算処理部に指示してセレクト関数の計算を繰り返すことにより、前記文字列データにおける前記検索文字列の出現位置を計算することを特徴とするバイナリ文字列検索システム。 - A,G,C,TとNからなる塩基文字列データを記憶する記憶装置と、
塩基検索文字列を入力する入力装置と、
前記文字列データ中における前記検索文字列の出現位置を計算する演算装置と、
前記演算装置による演算結果を出力する出力装置を備え、
前記演算装置は、
前記文字列データをバローズ・ホィーラー変換するバローズ・ホィーラー変換処理部と、
前記バローズ・ホィーラー変換に対する補助情報を構築する補助情報構築処理部と、
前記補助情報を記憶する領域と、
前記文字列データからサフィックス・アレイを計算するサフィックス・アレイ構築処理部と、
前記サフィックス・アレイ構築処理部によって計算されたサフィックス・アレイの要素を一定間隔に間引く処理を行うサフィックス・アレイ部分配列抽出処理部と、
前記サフィックス・アレイ部分配列抽出処理部によって得られたサフィックス・アレイ部分配列を記憶する領域と、
前記補助情報を用いて、各塩基を表す文字種(A,G,C,T,N)に対して、前記文字列データのバローズ・ホィーラー変換後の文字列において、その文字列先頭から指定文字位置までに出現するその塩基の数を当該文字位置におけるランク値として計算するランク関数計算処理部と、
各塩基を表す文字種と指定した自然数kに対して、前記文字列データのバローズ・ホィーラー変換後の文字列において、k番目にその塩基が現れる文字列先頭からの文字位置を探索文字位置とよぶとき、前記補助情報を用いて前記文字列データのバローズ・ホィーラー変換後の文字列における探索文字位置を計算するセレクト関数計算処理部と、
ランク関数とセレクト関数を繰り返し用いて前記バローズ・ホィーラー変換された結果と前記サフィックス・アレイの情報から前記文字列データ内での前記検索文字列の出現位置を検索する文字列検索処理部とを有し、
前記補助情報構築処理部は、
塩基文字列データに対して、各塩基を表す文字種ごとに、その文字を1、他の文字を0に置き換えたバイナリ文字列を作成する手段を有し、
最下位を除く上位の桁については、各塩基を表す文字種ごとに作成された前記バイナリ文字列のバローズ・ホィーラー変換後の文字列に対し、前記請求項1記載の補助情報構築処理部により文字種ごとに独立に桁データを作成することにより、上位の桁データを構築しこれを記憶する手段を有し、
また、最下位の桁については、文字列先頭より2のw乗個ごとの文字位置では、文字種ごとのランク値の最下位桁を記憶し、それ以外の文字位置では、現れる文字種を2進符号化して記憶することにより、最下位の桁データを構築しこれを記憶する手段を有し、
前記ランク関数計算処理部は、
各塩基を表す文字種に対して、前記文字列データのバローズ・ホィーラー変換後の文字列の対象文字位置におけるランク値の計算を、その文字種に対して作成されたバイナリ配列に対する同一文字位置におけるランク関数の計算に帰着させ、その計算を前記請求項1記載のランク関数計算処理部を用いて計算し、
前記セレクト関数計算処理部は、
各塩基を表す文字種と指定した自然数kに対する探索文字位置の計算を、その文字種に対して作成されたバイナリ配列と自然数kに対するセレクト関数の計算に帰着させ、その計算を前記請求項1記載のセレクト関数計算処理部を用いて計算し、
前記文字列検索処理部は、
前記ランク関数計算処理部に指示してランク関数の計算を繰り返すことにより、前記検索文字列が現れる前記サフィックス・アレイ内の順位の範囲を計算し、前記セレクト関数計算処理部に指示してセレクト関数の計算を繰り返すことにより、前記文字列データにおける前記検索文字列の出現位置を計算することを特徴とする塩基文字列検索システム。 - 多数の文字種からなる多文字種文字列データを記憶する記憶装置と、
多文字種検索文字列を入力する入力装置と、
前記文字列データ中における前記検索文字列の出現位置を計算する演算装置と、
前記演算装置による演算結果を出力する出力装置を備え、
前記演算装置は、
前記文字列データをバローズ・ホィーラー変換するバローズ・ホィーラー変換処理部と、
前記バローズ・ホィーラー変換に対する補助情報を構築する補助情報構築処理部と、
前記補助情報を記憶する領域と、
前記文字列データからサフィックス・アレイを計算するサフィックス・アレイ構築処理部と、
前記サフィックス・アレイ構築処理部によって計算されたサフィックス・アレイの要素を一定間隔に間引く処理を行うサフィックス・アレイ部分配列抽出処理部と、
前記サフィックス・アレイ部分配列抽出処理部によって得られたサフィックス・アレイ部分配列を記憶する領域と、
前記補助情報を用いて、各文字種に対して、前記文字列データのバローズ・ホィーラー変換後の文字列において、その文字列先頭から指定文字位置までに出現するその文字種の数を当該文字位置におけるランク値として計算するランク関数計算処理部と、
各文字種と指定した自然数kに対して、前記文字列データのバローズ・ホィーラー変換後の文字列において、k番目にその文字種が現れる文字列先頭からの文字位置を探索文字位置とよぶとき、前記補助情報を用いて前記文字列データのバローズ・ホィーラー変換後の文字列における探索文字位置を計算するセレクト関数計算処理部と、
ランク関数とセレクト関数を繰り返し用いて前記バローズ・ホィーラー変換された結果と前記サフィックス・アレイの情報から前記文字列データ内での前記検索文字列の出現位置を検索する文字列検索処理部とを有し、
前記補助情報構築処理部は、
多文字種文字列データに対して、全文字種を2種類に分類して、文字列の各文字がどちらの種類に属するかを0又は1で指定することにより、0と1からなるバイナリ文字列を作成し、前記2種類の分類のそれぞれに対して、一方の分類のみの文字からなる部分列を抜き出すことにより文字種が半減した文字列を2つ作り、後者の2つの文字列に対して、同様の処理を、文字種が2種に減少するまで再帰的に繰り返す手段を有し、
前記の再帰的な繰り返しの過程で得られる全てのバイナリ文字列に対して、前記請求項1記載の補助情報構築処理部を用いて、バイナリ文字列に対する前記請求項1記載の補助情報を構築し、それらの補助情報を全て記憶し、
前記ランク関数計算処理部は、
各文字種に対して、前記文字列データのバローズ・ホィーラー変換後の文字列の対象文字位置におけるランク関数の計算を、前記の再帰的な文字種の分類の過程におけるバイナリ文字列に対するランク関数の計算に帰着させ、その計算を前記請求項1記載のランク関数計算処理部を用いて計算し、
前記セレクト関数計算処理部は、
各文字種と指定した自然数kに対する探索文字位置の計算を、前記の再帰的な文字種の分類の過程におけるバイナリ文字列に対するセレクト関数の計算に帰着させ、その計算を前記請求項1記載のセレクト関数計算処理部を用いて計算し、
前記文字列検索処理部は、
前記ランク関数計算処理部に指示してランク関数の計算を繰り返すことにより、前記検索文字列が現れる前記サフィックス・アレイ内の順位の範囲を計算し、前記セレクト関数計算処理部に指示してセレクト関数の計算を繰り返すことにより、前記文字列データにおける前記検索文字列の出現位置を計算することを特徴とする多文字種文字列検索システム。 - 演算装置を用いて、バイナリ文字列データにおけるバイナリ検索文字列の出現位置を計算する文字列検索方法において、
前記演算装置は、
入力された文字列データのバローズ・ホィーラー変換を計算し、
前記バローズ・ホィーラー変換に対する補助情報を計算し、
前記文字列データからサフィックス・アレイを計算し、
前記サフィックス・アレイの要素を一定間隔に間引くことによりサフィックス・アレイ部分配列を計算し、
前記文字列データのバローズ・ホィーラー変換後の文字列において、
その文字列先頭から指定文字位置までに1が出現する数を当該文字位置におけるランク値として計算する関数をランク関数とよび、また、
指定した自然数kに対して、1がk番目に現れる文字列先頭からの文字位置を探索文字位置(セレクト値)として計算する関数をセレクト関数とよぶとき、
前記文字列データのバローズ・ホィーラー変換後の文字列に対して、ランク関数の計算を繰り返すことにより、前記検索文字列が現れる前記サフィックス・アレイ内の順位の範囲を計算し、セレクト関数の計算を繰り返すことにより、前記文字列データにおける前記検索文字列の出現位置を計算し、
前記補助情報の計算に当たっては、
前記文字列データのバローズ・ホィーラー変換後の文字列に対して、ランク値及び文字列先頭から数えた文字位置を表す整数値を、それらの2進表記を指定したビット幅(w)に区切ることにより、2のw乗進法の桁に分割し、
補助情報全体を、桁ごとの情報に分割した桁データの集まりとして記憶し、
各々の桁データは、文字位置の該当桁の2のw乗個の値に対する補助情報を要素データとして、それらの繰り返しとして記憶し、
各々の要素データは、文字位置の該当桁の2のw乗個の値に対して、
その最後の値(2のw乗マイナス1)に対しては、累積値データとして、対応する文字位置でのランク値の該当桁を記憶し、
それ以外の値(0から2のw乗マイナス2まで)では、差分データとして、対応する文字位置と該当桁の値が1だけ小さい文字位置での、ランク値の該当桁での変化分を記憶することにより、
上位の桁に上がる毎に、桁データのデータ量を繰り返し2のw乗分の1に減少させて記憶し、
前記ランク関数の計算に当たっては、対象文字位置におけるランク値を計算するにあたり、
最下位桁から最上位桁までの各桁において、前記補助情報の桁データを参照して、
対象文字位置の直前の要素データ内の累積値データと、
対象文字位置を含む要素データ内での、対象文字位置までの差分データの総和と、
の和を求め、さらに、それと下位の桁からの繰上り(最下位桁では0)の和を求め、その値をwビット幅の下位桁と上位桁に分割し、その下位桁の値をランク値の該当桁の値とし、その上位桁の値を該当桁から上位の桁への繰り上がりとして計算し、
これを、最下位桁から最上位桁までの各桁に対して順次繰り返すことにより、前記対象文字位置におけるランク値を計算し、
前記セレクト関数の計算に当たっては、
最上位桁から最下位桁までの各桁において、前記補助情報の桁データを参照して、
探索文字位置の直前の要素データ内の累積値データと、
対象文字位置を含む要素データ内での、対象文字位置までの差分データの総和と、
の和として、探索文字位置のランク値の該当桁の値を求め、その値がkの該当桁の値(繰上りが必要な場合は、2のw乗を加えた値)以上となり、かつ、
ランク値の該当桁以下の未定の桁の値を、探索文字位置における該当桁より下位の桁の要素データの累積値データとしたときの仮の値がk以上となる、
ような最小の値として、探索文字位置の該当桁の値を決め、そのときランク値の該当桁がkの該当桁の値を越えるときは、一つ下位の桁においては繰上りが必要として、
これを、最上位桁から最下位桁まで順次繰り返すことにより、与えられた自然数kに対する探索文字位置を計算することを特徴とするバイナリ文字列検索方法。 - 演算装置を用いて、A,G,C,TとNからなる塩基文字列データにおける塩基検索文字列の出現位置を計算する文字列検索方法において、
前記演算装置は、
入力された文字列データのバローズ・ホィーラー変換を計算し、
前記バローズ・ホィーラー変換に対する補助情報を計算し、
前記文字列データからサフィックス・アレイを計算し、
前記サフィックス・アレイの要素を一定間隔に間引くことによりサフィックス・アレイ部分配列を計算し、
前記文字列データのバローズ・ホィーラー変換後の文字列において、
各塩基に対して、その文字列先頭から指定文字位置までに出現するその塩基の数を当該文字位置におけるランク値として計算する関数をランク関数とよび、また、
各塩基と指定した自然数kに対して、k番目にその塩基が現れる文字列先頭からの文字位置を探索文字位置(セレクト値)として計算する関数をセレクト関数とよぶとき、
前記文字列データのバローズ・ホィーラー変換後の文字列において、ランク関数の計算を繰り返すことにより、前記検索文字列が現れる前記サフィックス・アレイ内の順位の範囲を計算し、セレクト関数の計算を繰り返すことにより、前記文字列データにおける前記検索文字列の出現位置を計算し、
前記補助情報の計算に当たっては、
塩基文字列データに対して、各塩基を表す文字種ごとに、その文字を1、他の文字を0に置き換えたバイナリ文字列を作成して、
最下位を除く上位の桁については、各塩基を表す文字種ごとに作成された前記バイナリ文字列のバローズ・ホィーラー変換後の文字列に対し、前記請求項4記載の補助情報の計算法に従い、文字種ごとに独立に桁データを計算し、それらを上位の桁データとして記憶し、
また、最下位の桁については、文字列先頭より2のw乗個ごとの文字位置では、文字種ごとのランク値の最下位桁を記憶し、それ以外の文字位置では、現れる文字種を2進符号化して記憶することにより、これらを最下位の桁データとして記憶し、
前記ランク関数の計算に当たっては、
各塩基を表す文字種に対して、前記文字列データのバローズ・ホィーラー変換後の文字列の対象文字位置におけるランク値の計算を、その文字種に対して作成されたバイナリ配列に対する同一文字位置におけるランク関数の計算に帰着させ、その計算を前記請求項4記載のランク関数計算方法に従って計算し、
前記セレクト関数の計算に当たっては、
各塩基を表す文字種と指定した自然数kに対する探索文字位置の計算を、その文字種に対して作成されたバイナリ配列と自然数kに対するセレクト関数の計算に帰着させ、その計算を前記請求項4記載のセレクト関数計算方法に従って計算することを特徴とする塩基文字列検索方法。 - 演算装置を用いて、多文字種(多数の文字種からなる)文字列データにおける多文字種検索文字列の出現位置を計算する文字列検索方法において、
前記演算装置は、
入力された文字列データのバローズ・ホィーラー変換を計算し、
前記バローズ・ホィーラー変換に対する補助情報を計算し、
前記文字列データからサフィックス・アレイを計算し、
前記サフィックス・アレイの要素を一定間隔に間引くことによりサフィックス・アレイ部分配列を計算し、
前記文字列データのバローズ・ホィーラー変換後の文字列において、
各文字種に対して、その文字列先頭から指定文字位置までに出現するその文字種の数を当該文字位置におけるランク値として計算する関数をランク関数とよび、また、
各文字種と指定した自然数kに対して、k番目にその文字種が現れる文字列先頭からの文字位置を探索文字位置(セレクト値)として計算する関数をセレクト関数とよぶとき、
前記文字列データのバローズ・ホィーラー変換後の文字列において、ランク関数の計算を繰り返すことにより、前記検索文字列が現れる前記サフィックス・アレイ内の順位の範囲を計算し、セレクト関数の計算を繰り返すことにより、前記文字列データにおける前記検索文字列の出現位置を計算し、
前記補助情報の計算に当たっては、
多文字種文字列データに対して、全文字種を2種類に分類して、文字列の各文字がどちらの種類に属するかを0又は1で指定することにより、0と1からなるバイナリ文字列を作成し、前記2種類の分類のそれぞれに対して、一方の分類のみの文字からなる部分列を抜き出すことにより文字種が半減した文字列を2つ作り、後者の2つの文字列に対して、同様の処理を、文字種が2種に減少するまで再帰的に繰り返し、
前記の再帰的な繰り返しの過程で得られる全てのバイナリ文字列に対して、前記請求項4記載の補助情報構築処理部を用いて、バイナリ文字列に対する前記請求項4記載の補助情報を構築し、それらの補助情報を全て記憶し、
前記ランク関数の計算に当たっては、
各文字種に対して、前記文字列データのバローズ・ホィーラー変換後の文字列の対象文字位置におけるランク関数の計算を、前記の再帰的な文字種の分類の過程におけるバイナリ文字列に対するランク関数の計算に帰着させ、その計算を前記請求項4記載のランク関数計算方法に従って計算し、
前記セレクト関数の計算に当たっては、
各文字種と指定した自然数kに対する探索文字位置の計算を、前記の再帰的な文字種の分類の過程におけるバイナリ文字列に対するセレクト関数の計算に帰着させ、その計算を前記請求項1記載のセレクト関数計算方法に従って計算することを特徴とする多文字種文字列検索方法。 - 請求項1記載の文字列検索システムにおいて、
ビット幅wを1とすることにより、前記補助情報を1ビットの累積値データを保持するメモリセルのみから構成される桁データから構成し、
前記ランク関数計算処理部及びセレクト関数計算処理部を、ビット演算に還元して論理ゲート回路により構成し、
前記メモリセルと前記論理ゲート回路とを近接して配置した専用ハードウェアを備えることを特徴とする文字列検索システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008088322A JP5171346B2 (ja) | 2008-03-28 | 2008-03-28 | 文字列検索システム及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008088322A JP5171346B2 (ja) | 2008-03-28 | 2008-03-28 | 文字列検索システム及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009244996A true JP2009244996A (ja) | 2009-10-22 |
JP5171346B2 JP5171346B2 (ja) | 2013-03-27 |
Family
ID=41306838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008088322A Active JP5171346B2 (ja) | 2008-03-28 | 2008-03-28 | 文字列検索システム及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5171346B2 (ja) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012203456A (ja) * | 2011-03-23 | 2012-10-22 | Hitachi Ltd | 文書検索システム、文書検索方法、及びプログラム |
KR101355254B1 (ko) | 2012-10-22 | 2014-01-28 | 인하대학교 산학협력단 | 접미사 트리의 병렬 생성을 위한 트라이 자료구조 기반 접미사 병렬 분할 방법 |
JP2015099458A (ja) * | 2013-11-19 | 2015-05-28 | パナソニックIpマネジメント株式会社 | 圃場環境観測システム |
CN110162487A (zh) * | 2019-04-15 | 2019-08-23 | 深圳壹账通智能科技有限公司 | 一种快速统计重复次数方法、装置及存储介质 |
WO2020227718A1 (en) * | 2019-05-09 | 2020-11-12 | Catalog Technologies, Inc. | Data structures and operations for searching, computing, and indexing in dna-based data storage |
CN113095042A (zh) * | 2021-03-23 | 2021-07-09 | 广州零端科技有限公司 | 一种字符串加密方法、系统、装置及存储介质 |
US11227219B2 (en) | 2018-05-16 | 2022-01-18 | Catalog Technologies, Inc. | Compositions and methods for nucleic acid-based data storage |
US11286479B2 (en) | 2018-03-16 | 2022-03-29 | Catalog Technologies, Inc. | Chemical methods for nucleic acid-based data storage |
US11306353B2 (en) | 2020-05-11 | 2022-04-19 | Catalog Technologies, Inc. | Programs and functions in DNA-based data storage |
US11379729B2 (en) | 2016-11-16 | 2022-07-05 | Catalog Technologies, Inc. | Nucleic acid-based data storage |
US11535842B2 (en) | 2019-10-11 | 2022-12-27 | Catalog Technologies, Inc. | Nucleic acid security and authentication |
US11763169B2 (en) | 2016-11-16 | 2023-09-19 | Catalog Technologies, Inc. | Systems for nucleic acid-based data storage |
US12001962B2 (en) | 2023-08-04 | 2024-06-04 | Catalog Technologies, Inc. | Systems for nucleic acid-based data storage |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001188791A (ja) * | 1999-12-24 | 2001-07-10 | Internatl Business Mach Corp <Ibm> | 配列の変換方法、構造解析方法、装置、記録媒体及び伝送媒体 |
JP2003228571A (ja) * | 2001-11-28 | 2003-08-15 | Kyoji Umemura | 文字列の出現頻度の計数方法およびその方法を利用可能な装置 |
JP2003256433A (ja) * | 2002-02-27 | 2003-09-12 | Japan Science & Technology Corp | 遺伝子構造解析方法およびその装置 |
-
2008
- 2008-03-28 JP JP2008088322A patent/JP5171346B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001188791A (ja) * | 1999-12-24 | 2001-07-10 | Internatl Business Mach Corp <Ibm> | 配列の変換方法、構造解析方法、装置、記録媒体及び伝送媒体 |
JP2003228571A (ja) * | 2001-11-28 | 2003-08-15 | Kyoji Umemura | 文字列の出現頻度の計数方法およびその方法を利用可能な装置 |
JP2003256433A (ja) * | 2002-02-27 | 2003-09-12 | Japan Science & Technology Corp | 遺伝子構造解析方法およびその装置 |
Non-Patent Citations (2)
Title |
---|
JPN6012063583; N. J. Larsson and K. Sadakane: 'Faster Suffix Sorting' インターネット , 1999 * |
JPN6012063585; R. Gonzalez, S. Grabowski, V. Makinen, and G. Navarro: 'PRACTICAL IMPLEMENTATION OF RANKAND SELECT QUERIES' インターネット , 2005 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012203456A (ja) * | 2011-03-23 | 2012-10-22 | Hitachi Ltd | 文書検索システム、文書検索方法、及びプログラム |
KR101355254B1 (ko) | 2012-10-22 | 2014-01-28 | 인하대학교 산학협력단 | 접미사 트리의 병렬 생성을 위한 트라이 자료구조 기반 접미사 병렬 분할 방법 |
JP2015099458A (ja) * | 2013-11-19 | 2015-05-28 | パナソニックIpマネジメント株式会社 | 圃場環境観測システム |
US11379729B2 (en) | 2016-11-16 | 2022-07-05 | Catalog Technologies, Inc. | Nucleic acid-based data storage |
US11763169B2 (en) | 2016-11-16 | 2023-09-19 | Catalog Technologies, Inc. | Systems for nucleic acid-based data storage |
US11286479B2 (en) | 2018-03-16 | 2022-03-29 | Catalog Technologies, Inc. | Chemical methods for nucleic acid-based data storage |
US11227219B2 (en) | 2018-05-16 | 2022-01-18 | Catalog Technologies, Inc. | Compositions and methods for nucleic acid-based data storage |
CN110162487A (zh) * | 2019-04-15 | 2019-08-23 | 深圳壹账通智能科技有限公司 | 一种快速统计重复次数方法、装置及存储介质 |
WO2020227718A1 (en) * | 2019-05-09 | 2020-11-12 | Catalog Technologies, Inc. | Data structures and operations for searching, computing, and indexing in dna-based data storage |
US11610651B2 (en) | 2019-05-09 | 2023-03-21 | Catalog Technologies, Inc. | Data structures and operations for searching, computing, and indexing in DNA-based data storage |
US11535842B2 (en) | 2019-10-11 | 2022-12-27 | Catalog Technologies, Inc. | Nucleic acid security and authentication |
US11306353B2 (en) | 2020-05-11 | 2022-04-19 | Catalog Technologies, Inc. | Programs and functions in DNA-based data storage |
CN113095042A (zh) * | 2021-03-23 | 2021-07-09 | 广州零端科技有限公司 | 一种字符串加密方法、系统、装置及存储介质 |
CN113095042B (zh) * | 2021-03-23 | 2023-12-19 | 广州零端科技有限公司 | 一种字符串加密方法、系统、装置及存储介质 |
US12002547B2 (en) | 2023-02-09 | 2024-06-04 | Catalog Technologies, Inc. | Data structures and operations for searching, computing, and indexing in DNA-based data storage |
US12001962B2 (en) | 2023-08-04 | 2024-06-04 | Catalog Technologies, Inc. | Systems for nucleic acid-based data storage |
Also Published As
Publication number | Publication date |
---|---|
JP5171346B2 (ja) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5171346B2 (ja) | 文字列検索システム及び方法 | |
Munro et al. | Space-efficient construction of compressed indexes in deterministic linear time | |
Apostolico et al. | Compression of biological sequences by greedy off-line textual substitution | |
Claude et al. | Grammar-compressed indexes with logarithmic search time | |
Beller et al. | Computing the longest common prefix array based on the Burrows–Wheeler transform | |
Barbay et al. | On compressing permutations and adaptive sorting | |
CN107066837B (zh) | 一种有参考dna序列压缩方法和系统 | |
JP2008299867A (ja) | データ構造によるコンピュータ表現及びそれに関連する符号化/復号化方法 | |
Navarro et al. | Faster compressed suffix trees for repetitive collections | |
Belazzougui et al. | Representing the suffix tree with the CDAWG | |
CN111801665A (zh) | 用于大数据应用的分层局部敏感哈希(lsh)分区索引 | |
Sirén | Burrows-Wheeler transform for terabases | |
Najam et al. | Pattern matching for DNA sequencing data using multiple bloom filters | |
Grossi et al. | More haste, less waste: Lowering the redundancy in fully indexable dictionaries | |
Korban et al. | A Novel Genetic Search Scheme Based on Nature--Inspired Evolutionary Algorithms for Self-Dual Codes | |
Dhaliwal et al. | Practical efficient string mining | |
Léonard et al. | On the number of elements to reorder when updating a suffix array | |
KR20010086028A (ko) | 처리 회로 및 검색 프로세서 회로 | |
Kärkkäinen et al. | Full-text indexes in external memory | |
US11736119B2 (en) | Semi-sorting compression with encoding and decoding tables | |
Hacid et al. | Incremental neighborhood graphs construction for multidimensional databases indexing | |
CN109918659B (zh) | 一种基于不保留最优个体遗传算法优化词向量的方法 | |
Hamedanian et al. | An efficient prefix tree for incremental frequent pattern mining | |
Petri et al. | Efficient indexing algorithms for approximate pattern matching in text | |
Policriti et al. | Average linear time and compressed space construction of the Burrows-Wheeler transform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101018 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121211 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121225 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5171346 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |