(57)【要約】本発明は、データ構造の目録を作成する方法に関し、好ましくは、データ構造内の探索パターンの存在を検出するためにデータ構造等を通して探索する方法にも関する。本発明の目録を作成する方法は、（データ集合内に存在するデータ要素から変換された）データ項目を記憶アドレスに対応付けるために用いられる目録データ構造の情報を利用する。この目録データ構造は、それにわたる探索を容易にするために整列することが可能である。そのような探索は、受信した探索パターン配列からの複数の探索クエリーの情報を通して実行することが可能であり、そして、これらの探索クエリーの処理の結果が、続く探索パターン配列検出処理に適用されることが可能である。
2008506165.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ記号で構成されるデータ集合の目録を作成する方法であって、
前記データ記号は前記データ集合内で互いに対する定義された順序を有し、
前記方法は、
（１）前記データ集合内に存在する記号の配列の最初から第１データ要素を構成するステップを有し、前記最初のデータ要素は記憶アドレスを有する前記データ集合内の記憶位置において記憶され、
（２）前記第１データ要素を第１データ項目に変換するステップをさらに有し、前記データ項目は他のデータ項目に対する順位付けが可能であり、
（３）複数の順次的に配置される記憶位置を定義する順序付けられた目録データ構造を用いて前記第１データ項目を記憶するステップと、
（４）前記第１データ要素が検索された記憶アドレスを前記第１データ項目に対応付けるステップと、
（５）前記データ集合からの要求された各データ要素についてステップ（１）から（４）を繰り返すステップと、
（６）前記目録データ構造内に記憶された前記データ項目を順位付けることによって順序付けられた目録データ構造を整列するステップと、
をさらに有することを特徴とするデータ集合の目録を作成する方法。
【請求項２】
前記目録データ構造のサイズは、前記データ集合のサイズに実質的に等しい請求項１に記載のデータ集合の目録を作成する方法。
【請求項３】
前記目録データ構造はアレイ（array）で構成される請求項１または２に記載のデータ集合の目録を作成する方法。
【請求項４】
前記データ項目は、並列アドレスデータ構造によって記憶アドレスと対応付けられる請求項１から３のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項５】
前記並列アドレスデータ構造はアレイで構成される請求項４に記載のデータ集合の目録を作成する方法。
【請求項６】
前記データ項目は、前記目録データ構造内の記憶アドレスの記憶によって記憶アドレスと対応付けられる請求項１から３のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項７】
前記データ項目は、重複に基づくデータ構造によって記憶アドレスと対応付けられる請求項１から６のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項８】
前記データ要素に適用される前記変換処理は、数値形式のデータ要素を提供する請求項１から７のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項９】
前記データ要素に適用される前記変換は、直接のハッシュ関数によって実現される請求項１から８のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１０】
前記データ要素に適用される前記変換は、損失の多いハッシュ関数によって実現される請求項１から８のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１１】
前記目録データ構造を用いる探索において検索検証処理が実行される請求項１０に記載のデータ集合の目録を作成する方法。
【請求項１２】
前記データ要素の最上位の記号は、整列された結果の前記目録データ構造内に記憶されない請求項１から１１のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１３】
クラスデータ構造が提供される請求項１から１２のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１４】
前記クラスデータ構造は、データ項目内に存在する固有の最上位の記号の数に等しい多数の記憶位置を定義するアレイによって提供される請求項１３に記載のデータ集合の目録を作成する方法。
【請求項１５】
（７）存在しうる固有のデータ要素の最大数に等しいか、またはより小さい多数の記憶位置を定義する少なくとも１つの順序付けられた内容データ構造を構成するステップと、
（８）少なくとも１つのデータ要素を各記憶位置と対応付けるステップと、
（９）前記記憶位置に対応付けられた前記少なくとも１つのデータ要素が前記データ集合内に存在するか否かに応じて正または負の表示を、前記内容データ構造の各記憶位置内に記憶するステップと、
をさらに有することを特徴とする請求項１から１４のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１６】
前記内容データ構造はアレイで構成される請求項１５に記載のデータ集合の目録を作成する方法。
【請求項１７】
前記目録データ構造は、データ要素の記号配列から生成された複数の探索クエリーを処理することによって特定のデータ要素の記号配列を発見するために用いられる請求項１から１６のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１８】
前記処理される複数の探索クエリーは、スライドするウィンドウ処理を用いて生成される請求項１７に記載のデータ集合の目録を作成する方法。
【請求項１９】
前記複数の探索クエリーの処理によって生成される結果は、探索パターン配列検出処理によって処理される請求項１８に記載のデータ集合の目録を作成する方法。
【請求項２０】
前記探索パターン配列検出処理は、前記探索クエリーによって発見されたデータ要素に対応付けられた記憶アドレスの間の空間的な関係の検査においてパターンの存在を検出する請求項１９に記載のデータ集合の目録を作成する方法。
【請求項２１】
合致するパターン配列が検出されたか否かを検査するためにエラー許容閾値が用いられる請求項２０に記載のデータ集合の目録を作成する方法。
【請求項２２】
請求項１から２１のいずれか１項に記載の方法によって目録が作成されたデータ集合内の探索パターンの存在を検出する方法であって、
（１）探索パターン配列を受信するステップと、
（２）前記受信した探索パターン配列にわたってスライドするウィンドウ処理を実行することによって複数の探索クエリーを構成するステップと、
（３）前記目録データ構造から複数の記憶アドレスを検索するステップと、を有し、前記記憶アドレスは、構成された前記探索クエリーと合致するデータ要素と対応付けられ、
（４）受信した前記記憶アドレスの間の空間的な関係を検査することによって受信した前記探索パターン配列の存在を検出するステップと、
をさらに有する探索パターンの存在を検出する方法。
【請求項２３】
合致するパターン配列が検出されたか否かを検査するためにエラー許容閾値が用いられる請求項２２に記載の探索パターンの存在を検出する方法
【請求項２４】
請求項１から２３のいずれか１項に記載のデータ集合の目録を作成する方法を実行するために使用されるコンピュータ読み取り可能な媒体に記憶されたコンピュータが実行可能な命令。
【請求項２５】
請求項１から２１のいずれか１項に記載のデータ集合の目録を作成する方法を実行するために使用される、コンピュータが実行可能な命令が記憶されたコンピュータ読み取り可能な媒体。
【請求項２６】
添付図面および／または例を参照して実質的に説明され、かつ表わされたデータ集合の目録を作成する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターンのインデックス付けおよび探索のためのシステムおよび方法に関する。特に、本発明は、パターンの探索に有効なインデックスとしてのパック形式のデータ構造を開示する。本発明は、特に、大きなパターンを探索するために有効であるが、他のサイズのパターンも探索可能である。
【背景技術】
【０００２】
多くの分野において、大量のパターンデータが蓄積され、数え切れないデータベースに記憶されてきた。しかし、収集され記憶された莫大な量のデータを利用する機能が不足している。様々な異なるパターンを位置付けるコンパクトで効果的なデータベース探索技術への関心が増している。そのようなパターンは、ヌクレオチド配列、アミノ酸（例えば、ペプチド）配列、地質学上の標本、２進数データ、テキスト形式データ等を含む。生命情報科学の特定の分野において、ペプチド配列を解読する試みとともに、ＤＮＡを含むヌクレオチド配列（および他のヌクレオチド配列）に記憶された情報、および、生物分子へのそれらの合成（translation）を解読する試みが行われている。生命情報科学における非常に多くの応用において、ヌクレオチドおよびアミノ酸の特定の配列（sequence）を探索することが望ましい。配列データベースは幾何級数的に増大しているので、テキストパターン照合は重大な計算上の問題を提示している。
【０００３】
ときどき、“比較ゲノム解析”と呼ばれる技術を用いることによって、異なる種属のゲノムが比較および分析される。研究者はゲノムを比較するとき、異なる特性、すなわち、配列の類似性、遺伝子座（gene location）、遺伝子内の（エクソンと呼ばれる）翻訳領域の長さおよび数、各ゲノムにおける非翻訳ＤＮＡの量、バクテリアと同じぐらい単純な生物および人間と同じぐらい複雑な生物において維持される高度保存領域を検査する。比較ゲノム解析は、複数のゲノムを整列させ、それらの中で類似の領域を探すことが可能なコンピュータプログラムの使用を伴う。そのような類似性の探索を実行するために、（ＮＣＢＩから入手可能な）ＢＬＡＳＴのようなツールが利用可能である。
【０００４】
配列データが生成されると、類似の配列について共用のデータベースがルーチン的に走査される。その後、より大きなコンセンサスを作り上げるために、クラスタ探索を実行することによって配列の断片が集められる。コンセンサス配列および全体のゲノムを作り上げることは、パターン探索が、クラスタ探索および階層メタクラスタ探索に従って、反復領域を発見および隠蔽することを要求する。さらに、比較ゲノム解析は、関連する分子を発見するために多数の異なるゲノムの探索を要求する。現在の配列データの量およびそれが増大する速度を考えると、配列探索は現代のゲノム解析において、多くの場合、速度限界の段階にある。
【０００５】
大多数の現在の探索方法は、単一のアレイ（array）データ構造におけるパターン位置情報を調べる。この単一アレイのインデックスは、多くの場合、探索パターンを数値インデックスにマッピングする関数によって計算される。そして、アレイはインデックスによって表わされる位置において検査される。アレイは、通常、探索されるパターンの位置の参照を含む。例えば、ＳＳＡＨＡ（英国ケンブリッジのSanger Instituteから入手可能なSequence Search and Alignment by Hashing Algorithm）方式は、全ての可能な配列インデックスについて単一のアレイを記憶する。より大きなパターンの長さに対して、単一アレイ方式は、大きな、多くの場合、非常に低密度なアレイを生成する。
【０００６】
大きなパターンについて、この単一アレイデータ構造の大きさおよび長さはかなりのものになりうる。この単一アレイは、探索される各々の可能な固有のパターンについてエントリまたは記憶位置を提供する必要があるが、必ずしもインデックス付けされたデータベース内に存在しなくてもよい。
【０００７】
この方式は、任意の特定のパターンについて高速な探索が完了することを可能とするが大きなパターンサイズについては現実的でない。長い長さのパターンを作り上げるために多数の記号の固有の組み合わせが可能であり、そのような方式を容易にするために用いられるコンピュータシステムのメモリにかなりの要求を提示する。さらに、先行技術における方法で利用されている単一の大きなインデックス付けされたアレイは、データを用いて比較的低密度で生成され、資源の比較的非効率な使用となる。この技術分野の当業者によって理解されるように、そのようなシステムを実装するために用いられるメモリ資源は、探索されるパターンの長さの線形的な増加とともに幾何級数的に増加する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
既存の処理よりも高速にパターンを発見し、かつワードサイズに制限のない処理の必要性が存在する。探索機能は、現在の探索技術による必要メモリと比較してメモリ使用を減少させるために、効果的かつコンパクトであるべきである。
【０００９】
この明細書で引用される特許または特許出願を含む全ての引用文献は、引用してここに組み込まれる。引用が先行技術を構成するとは認められない。引用文献の記載は、それらの著者が主張することを記載しており、出願人は引用文献の正確性および妥当性に異議を申し立てる権利を留保する。ここで多数の先行技術文献が引用されるが、この引用は、これらの文献が、ニュージーランドまたは他の国においてこの技術分野における共通の一般的知識の一部を構成することの承認を構成しないことが明確に理解される。
【００１０】
用語‘具備する’は、様々な裁判権のもとで、排他的または包括的な意味のいずれかに属すると考えられていると認められる。この明細書の目的のために、用語‘具備する’は、他に注釈されるのでなければ、包括的な意味を有する、すなわち、直接的に参照する列挙された構成要素のみでなく、他の規定されていない構成要素または要素の包含を意味すると解釈されるべきである。この原則は、方法または処理における１つまたは複数のステップに関して用語‘具備した’または‘具備する’が用いられるときにも用いられる。
【００１１】
本発明の目的は、上述した課題を解決するために、または、少なくとも有効な選択を公に提供することである。
【００１２】
本発明のさらなる態様および効果は、単なる例として与えられる続く説明から明らかになる。
【課題を解決するための手段】
【００１３】
本発明の一態様によれば、複数のデータ記号で構成されるデータ集合の目録を作成する方法であって、前記データ記号は前記データ集合内で互いに対する定義された順序を有し、前記方法は、
（１）前記データ集合内に存在する記号の配列の最初から第１データ要素を構成するステップを有し、前記最初のデータ要素は記憶アドレスを有する前記データ集合内の記憶位置において記憶され、
（２）前記第１データ要素を第１データ項目に変換するステップをさらに有し、前記データ項目は他のデータ項目に対する順位付けが可能であり、
（３）複数の順次的に配置される記憶位置を定義する順序付けられた目録データ構造を用いて前記第１データ項目を記憶するステップと、
（４）前記第１データ要素が検索された記憶アドレスを前記第１データ項目に対応付けるステップと、
（５）前記データ集合からの要求された各データ要素についてステップ（１）から（４）を繰り返すステップと、
（６）前記目録データ構造内に記憶された前記データ項目を順位付けることによって順序付けられた目録データ構造を整列するステップと、
をさらに有することを特徴とするデータ集合の目録を作成する方法が提供される。
【００１４】
本発明のさらなる態様によれば、
（７）存在しうる固有のデータ要素の最大数に等しいか、またはより小さい多数の記憶位置を定義する少なくとも１つの順序付けられた内容データ構造を構成するステップと、
（８）少なくとも１つのデータ要素を各記憶位置と対応付けるステップと、
（９）前記記憶位置に対応付けられた前記少なくとも１つのデータ要素が前記データ集合内に存在するか否かに応じて正または負の表示を、前記内容データ構造の各記憶位置内に記憶するステップと、
をさらに有することを特徴とする実質的に説明されたデータ集合の目録を作成する方法が提供される。
【００１５】
本発明は、データ集合の目録を作成するための方法、システムおよび装置を提供するために適用される。提供されるシステムおよび装置は、コンピュータ読み取り可能な媒体に記録されたコンピュータが実行可能な一連の命令を読み取るために使用される少なくとも１つのコンピュータシステムを含むことが可能である。これらの命令は、コンピュータシステムによって実行されると、以下で説明する目録を作成する方法を実行するために使用されることが可能である。さらに、目録が作成されるデータ集合は、電子的形態で提供することも可能であり、それによって、それが含むデータをコンピュータシステムが読み取り、かつ目録を作成することを可能とする。
【００１６】
好ましくは、本発明によって生成される目録は、目録が作成されたデータ集合に存在するデータ内で特定のデータまたはパターンを発見するために探索される１つまたは複数の順序付けられたデータ構造から構成される。
【００１７】
好ましい実施形態において、目録が作成されるデータ集合は、電子的データベース内に記憶される。データベース技術はこの技術分野においてよく知られており、大量のデータまたは情報を記憶および検索するために容易に利用可能である。
【００１８】
好ましくは、目録が作成されるデータ集合は、データ集合内で互いに対する定義された順序を有する多数のデータ記号から構成される。さらに好ましい実施形態において、記憶されるデータ記号は、４つの塩基対の記号Ａ，Ｔ，Ｃ，Ｇから得られるヌクレオチド配列である。これらの記号が現れる配列、および、これらの記号の領域または集合が互いに対して配置される配列は、非常に適切である。しかし、この技術分野の当業者は、例えば、ペプチド配列、地質学上の標本データ、テキストに基づくデータ、２進数の形式で表わされうる任意の他の形式のデータのような他の種類のデータ要素は、本発明により目録が作成されるデータ集合内に保持可能であることを理解すべきである。
【００１９】
好ましい実施形態において、データ要素は、スライドするウィンドウ処理を用いて、記憶されたデータ集合の記号から構成することも可能である。用いられるウィンドウのサイズは、結果として提供されるデータ要素のサイズおよびウィンドウに対応付けられるスライドする変位値を反映し、データ集合の記号から生成されるデータ要素の数を決定することが可能である。これらの例において、最初のデータ要素は、ウィンドウまたは構成されるデータ要素の長さに等しいデータ集合内に存在する最初の多数の記号によって構成することが可能である。そして、２番目のデータ要素を構成するために、このウィンドウは、ウィンドウに対応付けられた変位値に等しい多数の記号に沿って移動することが可能であり、この変位値は、最小値において１つの記号に等しいか、または最大値においてウィンドウの長さまたはサイズに等しい。
【００２０】
この技術分野の当業者は、用いられるスライドするウィンドウ技術に対応付けられる変位値がデータ集合から生成または構成されるデータ要素の数を決定することを理解する。このスライドするウィンドウ処理に対応付けられる変位値がデータ要素に与えられる標準の長さに設定されるならば、結果としての目録またはデータ構造は目録が作成されるデータ集合のサイズに実質的に等しいサイズを有する。逆に、より大きな目録データ構造は、使用されるメモリ資源を犠牲にして、そのような目録データ構造を用いて得られた結果を探索するために高い解像度を与えるためのより小さい変位値を設けることが可能である。
【００２１】
好ましくは、データ要素は塩基対の記号の配列として定義され、配列の長さまたは各データ要素に統合される記号の数は、提供される目録に要求される性能によって決定される。以下でさらに説明するように、処理されるデータ要素のサイズが増加するに連れて、本発明のメモリ資源要求は減少する。逆に、要求される目録を提供するためにさらに要求するメモリ資源を犠牲にして、より高い探索の解像度をシステムに与えるために、より小さいデータ要素を処理することが可能である。
【００２２】
便宜のため、この明細書を通して、ヌクレオチド配列の５つの塩基対の記号から構成される単一のデータ要素が参照される。しかし、この技術分野の当業者は、長さまたはサイズが違う異なる種類のデータ要素も用いることが可能であり、この特定の選択は決して限定として見るべきではないことを理解すべきである。
【００２３】
この明細書を通して、対象となる項目または要素の形式に応じて多数の記号から構成されるデータ要素および／またはデータ項目も言及される。この技術分野の当業者は、これらの記号が２進数の記号または任意の他の基数の記号、他の形式の英数字の記号、または任意の他の形式または表現の情報を組み込むことが可能であることを理解すべきである。さらに、そのような記号の順序または優先度または配置は、データ要素または項目の中に含まれる情報を変えることも可能であり、提供される記号の配列は、データ要素または項目よりも重要性、重大性、高い順位、または優先度を与えることが可能な１つまたは複数の最上位の記号を含むことが可能である。
【００２４】
単一のデータ要素は、データ集合内の既知の位置または場所において記憶することが可能である。これらの既知の位置は、ＲＡＭにおけるまたはディスク上のメモリアドレスとすることが可能であり、またはその代わりに、対象となるデータが記憶される場所を示す付加されたオフセットとベースアドレスから構成することも可能である。従って、これらの位置または場所の各々は、対象となるデータ要素を検索するために用いることが可能な対応するアドレスを有することが可能である。
【００２５】
好ましくは、集合の各々のおよび全てのデータ要素は、データ要素からデータ項目を生成する変換操作に従う。生成されるデータ項目は、それらを互いに対して順位付けまたは優先度付けすることが可能な形式を有することが可能である。さらに好ましい実施形態において、データ要素に適用される変換は、生成される数値形式のデータ項目となる情報技術のデータインデックス付けアプリケーションにおいて用いられるハッシュ関数に類似のものとすることが可能である。従って、数値形式のデータ項目は、降順または昇順に互いに対して容易に順位付けまたは優先度付けすることが可能である。
【００２６】
好ましい実施形態において、データ要素に適用される変換は、直接のハッシュ関数である。直接のハッシュ関数は、データ要素内に存在する全ての情報をカプセル化するデータ項目の提供を可能とする。
【００２７】
ある場合において、変換されるデータ要素のサイズまたは長さは、結果として、コンピュータハードウェアにおいて利用可能なメモリ資源によって収容可能であるより大きいデータインデックスとなりうる。そのような場合において、“損失の多いハッシング”の変換操作が利用可能であり、２つの固有なデータ要素に対して生成される同一のデータ項目となりうる。そのような場合において、他のデータ要素から代わりのデータ項目を提供するために、よく知られた再ハッシング技術を利用可能である。しかし、そのような再ハッシング技術は、一般に、結果として目録を作成する処理の計算上のオーバヘッドを増大させ、続く探索処理は、目録データ構造内で現在のデータ項目を発見することが可能となる前に、探索されるデータ要素への複数の変換を実行する必要がある。
【００２８】
損失の多いハッシング変換が用いられるある実施形態において、検索または探索処理の間に検索検証処理を実現することが可能である。各々の記憶されたデータ項目は、データ項目を生成するために用いられるデータ要素の記憶アドレスと対応付けられ、元のデータ要素は、正しいデータ項目が識別されたか否かを検証するために検索されることが可能である。探索されるデータ要素と検索されたデータ要素との間に不一致が存在するならば、ハッシュのコリジョンを防止するために割り当てられる代わりのデータ項目を見つけるために、探索されるデータ要素について続く再ハッシングまたはさらなる変換操作を実行することが可能である。
【００２９】
好ましくは、本発明は、複数の順次的に配置された記憶場所を定義する順序付けられた目録データ構造も用いる。上述したデータ項目は、好ましくは、目録データ構造によって提供される記憶場所内に、好ましくは、順次的に順序付けられた配置でロードおよび記憶される。さらなる好ましい実施形態において、順序付けられた目録データ構造はアレイによって構成することが可能である。アレイは、記憶場所の単一の配列から構成される順序付けられた線形のデータ構造を提供する。
【００３０】
しかし、代わりの実施形態において、記憶される同一のデータ要素に関する多数の重複するデータ項目について、目録データ構造は、さらなる重複に基づくデータ構造へのフラグまたは参照を記憶することが可能である。この重複に基づくデータ構造は、各々の重複するデータ要素の複数の記憶アドレスとデータ項目を対応付けるために用いることが可能である。さらなる実施形態において、そのような重複に基づくデータ構造は、記憶アドレスのアレイに加えて、対象となる単一のデータ項目の値の両方を保持することが可能である。これらの場合において、目録データ構造は、データ項目を直接に記憶するために用いられる目録データ構造とは異なり、さらなる重複に基づくデータ構造の位置へのフラグまたは参照を提供することによってデータ項目を記憶するために効果的に用いることが可能である。
【００３１】
本発明のこの態様は、データ集合の目録を作成し、続いて探索するために必要とされるメモリ資源の消費を減少させるために利用することが可能である。目録データ構造において２分探索または補間探索が用いられる場合、通常、重複するデータ要素についてのデータ項目の同一の値を通して進む多数の冗長な探索ステップが遂行されうる。重複するデータ項目が目録データ構造内に直接に記憶されることを取り除くことによって、そのような冗長な探索ステップを除去することが可能であり、従って、結果として探索処理を高速にすることが可能である。
【００３２】
この明細書を通して、アレイを用いた目録データ構造が参照されるが、この技術分野の当業者は、他の種類の順序付けられたデータ構造が用いられることも可能であり、この明細書を通しての上記のみの参照は決して限定として見られるべきではないことを理解すべきである。
【００３３】
好ましくは、目録データ構造の記憶場所のサイズ、長さ、または数は、これらのデータ要素の長さに等しいスライドするウィンドウ変位値が提供されるとき、データ集合内のデータ要素の数に実質的に等しい。そのような場合において、目録データ構造のサイズは、データ集合のサイズに実質的に等しくすることも可能である。そのような実施形態において、目録データ構造は、パック形式の高度に利用される構造を提供することが可能であり、本発明により必要とされるメモリ資源の使用を最適化することが可能である。好ましくは、生成される各々の結果としてのデータ項目は、データ項目が生成される順序において目録データ構造に実質的にロードされる。しかし、この技術分野の当業者は、目録データ構造は要求される任意の特定の順序または配列においてデータ項目とともに最初にロードすることも可能であることを理解すべきである。
【００３４】
さらに、この技術分野の当業者は、目録データ構造の記憶場所のサイズ、長さ、または数は、スライドするウィンドウのデータ要素の生成処理が、提供されるデータ要素の固定された長さより小さい値のウィンドウ変位値とともに用いられる場合、データ集合のサイズに必ずしも等しいとは限らないことも理解すべきである。そのような実施形態において、より大きい目録データ構造は、実行される探索の結果に、より高い解像度を与えるために提供することが可能である。
【００３５】
好ましくは、各々のおよび全てのデータ項目は、データ項目を生成するために用いられるデータ要素の記憶アドレスと対応付けられる。そのようなデータ項目の記憶アドレスへの対応付けは、互いに対するこれら２つの種類の情報を相互参照することが可能である。
【００３６】
好ましい実施形態において、データ項目は追加の並列アドレスデータ構造の提供によって記憶アドレスと対応付けることが可能である。このアドレスデータ構造は、そのような実施形態において目録データ構造と実質的に同一とすることが可能であり、要求される並列の特性を提供するために、相補的な方法において記憶アドレスに対応付けられたデータ項目を整列することも可能である。そのような実施形態において、目録データ構造に実行される任意の続く整列、変換または変更処理は、データ項目と要求される記憶アドレスとの間の並列の対応付けを維持するようにアドレスデータ構造について実行される。
【００３７】
さらなる好ましい実施形態において、上述した並列アドレスデータ構造は、アレイによって構成することが可能である。目録データ構造を提供するためにアレイが用いられる場合、アレイは、要求されるアドレスデータ構造の並列の特性を実現するためにも用いることが可能である。
【００３８】
この明細書を通して、データ項目を記憶位置と対応付けるために、一組にされたアレイの並列集合を利用する本発明が言及される。しかし、この技術分野の当業者は、要求される同一の目標を達成するために、代わりのデータ構造の実装を利用することが可能であることを理解すべきである。例えば、１つの代わりの実施形態において、関連するデータ項目との対応付けを維持するために、目録データ構造が拡張され、または、記憶アドレスのための記憶場所を含むことが可能である。
【００３９】
好ましくは、目録データ構造が全ての利用可能なデータ項目で満たされると、これらのデータ項目は、各データ項目の順位付けまたは優先度付けに応じて新たな場所に整列することが可能である。例えば、１つの好ましい実施形態において、最低に順位付けされたデータ項目は最初の記憶場所に配置することが可能であり、最高に順位付けされたデータ項目は目録データ構造の最後の記憶場所に配置することが可能である。その代わりに、要求されるならば、他の実施形態において、降順の順位付けの整列を適用することが可能である。
【００４０】
目録データ構造に関して実行される整列操作は、利用される任意の並列アドレスデータ構造に関して実行されることも可能である。同一の整列操作をアドレスデータ構造に適用することによって、これは特定のデータ項目と相互参照される記憶アドレスとの間の対応付けを維持する。
【００４１】
データ項目における整列操作の実行は、目録データ構造において実行される比較的高速な発見の操作を可能とする。例えば、中間の順位付けの値を有するデータ項目について探索が実行されるならば、目録データ構造の中間付近の場所においてこのデータ項目の存在について最初の調査が行われる。
【００４２】
さらなる好ましい実施形態において、データ項目の最上位の記号、ビット、または構成要素は、上述した結果として整列された目録データ構造内に記憶されないことも可能である。この記号または構成要素は目録データ構造の特定の領域内で全てのデータ項目に共通であり、従って、異なるデータ項目の間の識別に適用できないので、この目録データ構造が整列されると、最上位の記号、ビット、または構成要素は除去することが可能である。例えば、数値形式のデータ項目が提供される好ましい実施形態において、数値のデータ項目の最上位の数字は、本発明のメモリ要求を減少させるために記憶されないことが可能である。
【００４３】
好ましい実施形態において、本発明に関してさらなる順序付けされたクラスデータ構造を用いることが可能である。クラスデータ構造は、目録データ構造の区間へのポインタまたは参照を提供するために実現することが可能であり、これらの区間は同様な順位付けを有するデータ項目を含む。
【００４４】
さらなる好ましい実施形態において、そのようなクラスデータ構造は、最上位の記号または構成要素において相違を有するデータ項目を保持する目録データ構造内の各種の区間または場所へのポインタを保持するための記憶場所の集合を定義することが可能である。増加する順位付けの相違を有するデータ項目に関して目録データ構造の全体の領域または区間を分類するために、これらの最上位の記号における相違の最初のインスタンス（instance）へのポインタを作ることが可能である。例えば、数値形式のデータ項目が用いられる実施形態において、記憶されるデータ項目の最上位の数字において変化が存在する目録データ構造の区間へのポインタを保持するカテゴリデータ構造が維持される。
【００４５】
さらなる好ましい実施形態において、クラスデータ構造はアレイによって構成することが可能であり、このアレイは、順位付けデータ項目に用いられる最上位の固有の記号の数に等しい多数の記憶場所を定義する。例えば、１から１０，０００までの範囲の数値を有するデータ項目が提供されるならば、クラスデータ構造は、数百、１０００、２０００等を基準とするカテゴリデータ構造の区間へのポインタを用いて実現することが可能である。
【００４６】
さらなる好ましい実施形態において、本発明に関して少なくとも１つの内容データ構造を利用することが可能である。内容データ構造は、記憶アドレスを検索するために利用される目録データ構造に対して、目録が作成されるデータ集合において保持される現在のデータ要素の概観（overview）を与えるために提供することが可能である。
【００４７】
そのような順序付けされた内容データ構造は、存在しうる固有のデータ要素の最大数以下の多数の記憶場所を定義することが可能である。この技術分野の当業者によって理解されるように、この内容データ構造は比較的大きいことが可能であり、潜在的に、各データ要素の省略時のまたは設定されたサイズが増加するに連れて、サイズが増加する。従って、内容データ構造の最大の長さまたはサイズは、対象となるデータ集合内に含まれうる固有のデータ要素の最大数によって決定される。
【００４８】
好ましくは、少なくとも１つのデータ要素は内容データ構造の各々の記憶場所と対応付けられる。さらなる好ましい実施形態において、複数の固有のデータ要素を内容データ構造の単一の記憶場所と対応付けるために、損失の多いハッシュ関数を用いることが可能である。そのような実施形態において、対象となるデータ記号から構成される全ての単一の固有のデータ要素と対応付けられた記憶場所を有する、比較的小さい、コンパクトな内容データ構造を提供することが可能である。
【００４９】
好ましくは、内容データ構造は、記憶場所に対応付けられた少なくとも１つのデータ要素がデータ集合内に実際に存在するか否かに応じて、各々のその記憶場所内に記憶された正または負の表示を有することが可能である。これらの正または負の表示は、本発明を実現するために用いられるソフトウェアおよびハードウェアプラットフォームに応じて、ある実施形態においてブール（boolean）オブジェクトまたは他の実施形態において整数値によって単一のビット符号化から構成することが可能である。しかし、そのような表示の形式は、完全にロードされた関係する内容データ構造を実現するために必要とされるバイト数を最小化するように選択することが可能であることを理解すべきである。
【００５０】
好ましくは、内容データ構造は、目録データ構造またはアドレスデータ構造に関して上述したものと同様の単一のアレイによって実現される。単一のアレイは、要求される内容データ構造を提供するために適切な表示とともに容易に構成され、かつロードされることが可能である。
【００５１】
好ましくは、内容データ構造は、そのデータ要素に対応付けられた記憶場所の検査において、特定のデータ要素がデータ集合内に存在するか否かを迅速に決定するために用いられる。従って、そのような記憶場所における正または負の表示の存在は、対象となるデータ要素がデータ集合内に存在するか否かを迅速に確認するために用いることが可能である。さらに、複数のデータ要素を内容データ構造の単一の記憶場所と対応付けるために損失の多いハッシュ関数が用いられる実施形態において、この迅速な検査は、記憶場所に対応付けられた少なくとも１つのデータ要素がデータ集合内に存在することを示す。
【００５２】
この技術は、基本的な目録データ構造において実行される探索を高速化するために適用することも可能である。最初の検査は、特定のデータ要素が存在するか否かを決定するために内容データ構造について行われ、存在するならば、関心のあるデータ要素に対応付けられたアドレスを発見するために目録データ構造について探索操作を実行することが可能である。データ要素が存在しないならば、この探索処理は早期に終了することが可能である。
【００５３】
さらなる好ましい実施形態において、複数の内容データ構造は、本発明に従って提供することが可能である。別個の個々の各内容データ構造は、複数の固有のデータ要素を内容データ構造の単一の記憶場所にマッピングするために別個の損失の多いハッシュ関数を利用することが可能である。異なる損失の多いハッシュ関数は内容データ構造の各々にわたって利用されるので、全ての内容データ構造にわたる特定のデータ要素の存在についての検査は、その特定のデータ要素が、目録が作成されたデータ集合内に存在するか否かに関する不確かさを減少させることが可能である。
【００５４】
本発明のさらなる態様によれば、実質的に説明された方法によって目録が作成されたデータ集合内の探索パターンの存在を検出する方法であって、
（１）探索パターン配列を受信するステップと、
（２）前記受信した探索パターン配列にわたってスライドするウィンドウ処理を実行することによって複数の探索クエリーを構成するステップと、
（３）前記目録データ構造から複数の記憶アドレスを検索するステップと、を有し、前記記憶アドレスは、構成された前記探索クエリーと合致するデータ要素と対応付けられ、
（４）受信した前記記憶アドレスの間の空間的な関係を検査することによって受信した前記探索パターン配列の存在を検出するステップと、
をさらに有する探索パターンの存在を検出する方法が提供される。
【００５５】
本発明は、様々な異なる種類のパターンのデータベース記憶および探索のための効果的な技術を提供することが可能である。パターンは、ヌクレオチド配列、ペプチド配列、地質学上の標本、２進数データ、テキストデータ等とすることが可能である。
【００５６】
好ましくは、探索されるパターンまたはデータ要素の記号の配列は、対象となるデータ集合の目録を作成するために用いられるデータ要素のサイズを超えることが可能である。一般的な条件において、探索パターンは、２つ以上のデータ要素において通常見られるより長い長さを有するデータ要素の記号の配列から構成されることが可能である。
【００５７】
好ましい実施形態において、本発明により単一のデータ配列パターンを発見するために複数の探索クエリー（search query）を処理することが可能である。
【００５８】
そのような実施形態において、探索されるデータ配列は、標準とするデータ要素の長さに等しい長さを有する記号の集合に区分することが可能である。様々なデータ要素についての多数のクエリーは、１つからデータ要素内に通常存在するデータ記号の数までの範囲にわたるデータ記号の固定された変位で探索パターンに沿ってウィンドウが順次的に移動する、スライドするウィンドウ処理を用いて構成することが可能である。そのような実施形態において、最初の探索クエリーは、探索される配列内に存在する最初のデータ要素によって構成することが可能である。次の探索クエリーは、スライドするウィンドウについて固定された変位値によって配列の始点から変位した位置において、探索配列から得ることが可能である。この点において、さらなるデータ要素サイズの探索クエリーを生成することが可能であり、ウィンドウ変位値によって再び探索配列を通してウィンドウがスライドし、さらなるデータ要素サイズのクエリーを抽出することが可能である。そして、この処理は、提供される探索配列から、全体の長さとなる、最後のデータ要素サイズの探索クエリーが抽出されるまで継続する。
【００５９】
この技術分野の当業者は、このスライドするウィンドウのアプローチは、小さいウィンドウ変位サイズについて多数の探索クエリーを生成し、ウィンドウの変位値が使用されるデータ要素の長さに等しいとき最小数のクエリーを生成することを理解すべきである。スライドするウィンドウのサイズは、好ましくは、本発明が用いる利用可能なメモリ資源に応じて利用者によって制御される。各ステップにおいて小さいウィンドウ変位を用いることによって、探索クエリーのより広範囲にわたる集合が生成され、結果として比較的多数の探索結果となる。
【００６０】
本発明は、探索パターン配列検出処理を実現することも可能である。この処理は、対応付けられた記憶アドレスを有するデータ要素から構成される一連のヒット（hit）を生成するために目録データ構造を用いて多数の探索クエリーが処理されたときに用いることが可能である。
【００６１】
好ましい実施形態において、データ要素の特定の配列について検索された記憶アドレスの間の空間的な関係の検査によって、探索結果からのパターンの検出を行うことが可能である。例えば、ある場合において、元の探索配列に合致するデータ要素の配列が発見され、検索されたまたは対応付けられた対象となる記憶アドレスによって示されるように、これらのデータ要素がデータ集合内で互いに対して隣接して順次的に記憶されるならば、探索パターンは検出することが可能である。
【００６２】
さらなる好ましい実施形態において、パターンの合致として配列を分類する一方、配列内で最大数の不一致なデータ要素の記号を許容することによって、エラー閾値をそのようなパターンまたは配列検出処理に組み込むことが可能である。そのような場合において、閾値エラーレベルは利用者によって設定されることが可能であり、探索のヒットの集合が検出されたパターンとして分類されることを可能とする、特定の長さの探索配列またはパターンについて最大数の記号の不一致を許容する。
【００６３】
パターン位置は、好ましくは、比較的少ない記憶領域を消費することによってデータベース内で決定される。資源の要求は、実行される探索方法について許容される時間に反比例する。特に、本発明は、パターン照合のワードサイズが増加するに連れて減少するスケーリングおよびサンプリング技術を用いることによってパターン照合のために要求される資源を最適化するために提供される。１つまたは複数の高度に利用されるまたはパック形式のデータ構造の提供によって、本発明は特定のパターンまたはデータ要素の位置が容易に発見されることを可能とする。さらに、パターンまたはデータ要素のサイズまたは長さが増加するに連れて、用いられるメモリ資源における結果としてのロード場所は減少する。逆に、より高い解像度の探索は、要求されるメモリ資源の増加を犠牲にして、データ集合内のより小さい長さのパターンについて実行される。
【００６４】
提供される方法は、資源の要求に依存するサンプリング関数の選択を含むことも可能である。さらに、パターンは、好ましくは、アレイの長さに依存しない探索速度を可能とする方法で、並列アレイの集合に記憶される。本技術は、非常に大きいデータ集合、例えば、ゲノム配列に拡張可能である。本方法は資源の範囲にわたる探索機能のために設計されたが、探索速度をさらに増加させるために追加の計算資源を設けることが可能である。
【００６５】
パターン探索および記憶のために生成されるデータ構造は、好ましくは、配列の位置情報のアレイを用いて一組にされたインデックス値のアレイを含む。最適化されたハッシュ関数は、減少されたハッシュ関数のコリジョンを有する大きなパターンのインデクス付けのために提供することが可能である。データ構造の少なくとも一部は、ＲＡＭ、外部記憶媒体、例えば、ディスク、複数のＣＰＵ、および／または複数のコンピュータシステムに存在することが可能である。
【００６６】
本発明により記憶または探索されるパターンは、幅広い各種の領域で利用することが可能である。例えば、パターンは、データ暗号システムにおける構成要素を構成することが可能である。もう１つの実施形態において、パターンは、通信システムにおいて用いることが可能である。さらに、パターンは、クラスタリングシステムの一部として分析されることが可能である。パターンは、機能割り当て（function assignment）、突然変位探索、ＳＮＰスキャン、コンセンサスまたはゲノム全体の構築、オーソログ（orthologue）の発見について用いることも可能である。さらに他の実施形態において、パターンは、データベースエンジン、画像分析または処理、音声解析または処理、無線または深宇宙周波数分析、海からまたは宇宙から生じるデータまたは信号の分析において用いられる。同時に、パターンは、人間または動物の体の分析、分子像、化学的またはスペクトル分析における使用を見つけることも可能である。
【００６７】
このパターン探索機能は、特に、典型的に、配列比較機能において莫大な投資を必要とする比較ゲノム解析において用いることが望ましい。本発明の一組にされたアレイは、例えば、ゲノム組み立て、データ組み立て、断片組み立て、繰り返されるゲノム領域（“リピート（repeat）”）の発見等のために、パターン比較を実行するために用いることが可能である。
【００６８】
一実施形態において、他の現在のまたは将来の探索処理は、全体の性能を向上させるために本方法およびシステムと組み合わせることが可能である。例えば、ゲノム探索のＳＳＡＨＡ方式は、本方法による並列アレイのパック形式のデータ構造にゲノム情報を効果的に記憶することによって向上される。ＳＳＡＨＡアルゴリズムは、ｋ個のタプルについて４ｋの大きさの低密度の構造を生成する。この構造は、任意のヌクレオチドの部分配列から配列におけるそれらの位置に直接のマッピングを提供する。本発明は、位置情報を効果的に記録し、ｋが増加するに連れて減少し、非常に大きいｋの値が用いられることを可能とする（Ｌ／ｋ）のサイズの密な構造を生成する。
【発明を実施するための最良の形態】
【００６９】
本発明は、添付図面の図における例によって表わされ、図は本発明を限定することを意図するものではない。
【００７０】
本発明は、パターン探索機能を含み、データベースにおけるパターン探索の探索フェーズを行わせるための方法を用いる。本方法の一態様は、与えられたデータベースにおけるパターンのコンパクトな表現を含む。表現は、位置情報にマッピングされるパターン情報を含む。この効果的な表現は、任意の特定のパターンが高速に位置付けられることを可能とする。
【００７１】
本方法は、複数のアレイ、すなわち、位置パターン情報を追跡するための相互参照データを具備する少なくとも２つのアレイを利用することによって前述の単一アレイ技術を向上させる。アレイは、通常、対応付けられるデータの容易な相互参照を可能とするために並列に整列される。しかし、整列の他の方法およびアレイにおけるデータを相互参照する他の方法を用いることが可能である。
【００７２】
第１アレイは、ここで“index[ ] アレイ”と呼び、データベースのデータのパック形式の表現である。第１アレイは“インデックス”値から構成される。第２アレイは、ここで“location[ ] アレイ”と呼び、データベースにおける特定の部分パターンの位置を指し、パターン位置情報を具備する。第１アレイのインデックス値は第２アレイの位置情報と一組にされる。
【００７３】
任意の特定のインデックスを発見するために、index[ ] アレイは、インデックスのアレイにおいて特定のインデックスの位置を発見するために探索されなければならない。合致（match）が発見されると（すなわち、特定のクエリーが存在すると）、一組にされたlocation[ ] アレイが、データベースにおけるパターンの位置を発見するために検査される。本発明のコンパクトなアプローチは、より複雑な探索方法に対して少ないメモリ使用をトレードオフする。アレイは、アレイへのインデックスを単に調べるのではなく、合致するパターンを位置付けるために探索される。
【００７４】
データ構造を生成するために、データベースを重複しない領域（chunk）に分割することによって、index[ ] アレイが生成される。各領域は長さｋを有する。領域はそれぞれインデックス値に変換される。入力パターンから数値インデックスへの変換は“イデックス付け”として知られる処理である。インデックスはいくつかの方法で計算することが可能である。イデックス付け方法の種類は、とりわけ、ワードサイズ（ｋ）、アルファベットサイズ（ａ）、および／または、ヌクレオチドまたはペプチド配列のような探索されるパターンの種類に応じて変わる。
【００７５】
一般に、テンプレートがＣＰＵのワードサイズ（通常３２または６４ビット）に適合するほど十分に小さいならば、領域は基本的な変換を実行することによって直接にインデックスに変換することが可能である。例えば、ヌクレオチドから構成されるパターンについて、各ヌクレオチド塩基はＡ＝０、Ｃ＝１、Ｇ＝２、Ｔ＝３を用いて変換することが可能である。テンプレートがワードサイズに適合するには大き過ぎるならば、領域はハッシュ関数を用いてインデックスに変換することが可能である。
【００７６】
インデックス付けの一実施形態は、インデックス値を割り当てるために直接のマッピング技術を利用することが可能である。６４ビット整数がインデックス値を表わし、ａ＝４のサイズのアルファベットが遺伝子のヌクレオチドを表わす特定の場合においてｋ＝３２の長さのパターン（文字あたり２ビットすなわち２２＝４の可能性を許容することは、６４ビット／２ビット／文字＝３２文字を与える）、または、ｋ＝１２のペプチドのパターン（文字あたり５ビットすなわち２５＝３２の可能性を許容することは、６４ビット／５ビット／文字＝１２文字を与える）を記憶することが可能である。
【００７７】
パターンから数値インデックスへのこの変換処理は、多くの場合、“ハッシング”と呼ばれる。インデックスが最適にまたはほぼ最適に記憶されることが可能である直接のマッピングの間に区別が存在する。ここで“損失の多いハッシング”と呼ばれる技術は、パターンからインデックスへの変換の間に精度が損失する。ゲノムの実例について、ｋ≦３２（ヌクレオチドについてａ＝４）またはｋ≦１２（アミノ酸についてａ＝２０）のときにマッピングは直接であり、あるいは、ｋ＞３２（ａ＝４）またはｋ＞１２（ａ＝２０）のときに損失の多いハッシングを用いる。
【００７８】
オプションの損失の多いハッシング方法は、一貫してパターンを疑似乱数にマッピングする複雑な関数である。直接のマッピング関数からハッシュ関数を区分する鍵となる属性は、インデックスの最大値が予めハッシングにおいて知られていることであり、一方、直接に計算する方法では最大値は潜在的に境界付けられていない。ハッシュのインデックス値は常にある範囲に存在する。さらに、ハッシュ関数の特性は、“ハッシュコリジョン”と呼ばれ、時々、２つのパターンを同一のインデックス値にハッシュすることを引き起こす。
【００７９】
各データ領域について、データベースにおける位置は、対応付けられたlocation[ ] アレイに記憶される。location[ ] アレイは、通常、インデックスアレイと並列に、かつindex[ ] アレイの対応付けられたインデックス値のデータを用いて整列されたその位置データを有して配置される。従って、index[ ] アレイにおいて与えられた特定の位置iについて、index[i]は、アレイでの位置iにおけるインデックス値を示す。対応するlocation[ ] アレイにおいて、location[i]は、位置iにおける位置情報を示す。
【００８０】
データベース全体を処理することによってアレイの組が生成されると、index[ ] アレイのデータが整列され、例えば、昇順で整列される。そのような整列は、大きなパターンを探索するために特に望ましい。従って、一組にされたlocation[ ] アレイは、index[ ] アレイにおけるデータと並列な関係でデータを維持するために整列することも可能である。整列されたindex[ ] アレイは、index[ ] アレイにおいて任意のインデックス値が存在するか否かを迅速に発見するために用いられる。
【００８１】
インデックス探索フェーズの間に、任意の“キー”がindex[ ] アレイに存在するか否かについて迅速な判定を行うことが可能である。キーが存在するか否かの迅速な発見のために各種の効果的な方法を利用することが可能である。
【００８２】
大きな値ｋについて、多くの場合に、特定の正確な合致が発見されない。この共通的な場合を最適化するために、特定のインデックス値がindex[ ]に存在しないかどうかを迅速に判定するために、ここで“bitvector[ ]”と呼ばれるビットベクトルアレイを構成することが可能である。bitvector[ ]は、特定のインデックス値がindex[ ] アレイにおいてどこかで発生するか否かを表わすために単一のビットを記憶する。コンパクトなbitvector[ ]を最初に調べることによって、キーがデータベースに存在しないときにindex[ ] アレイ全体を探索する必要がない。
【００８３】
さらに、index[ ] アレイの効果的な探索は、アレイにおける位置に関して最初の推定（initial guess）とともに補間探索の実行を含むことが可能である。最初の推定はキーの関数として判定される。index[ ] アレイにおけるキーの最も可能性のある位置のこの推定は、標準的な２分探索に対する向上したアプローチである。
【００８４】
任意の特定のキーについて、インデックス探索段階の結果は、インデックスの合致が発見されないこと、あるいは、合致する位置の集合に結合されるインデックスの集合が発見されることを含みうる。
【００８５】
本方法を用いてインデックス付けされたデータベース内での入力探索パターンから合致を発見するために、データベースに対して各パターンを探索することが可能である。探索パターンは、ｋ個の重複する領域（chunk）に区分され、探索パターンを表わす、ここで“search[ ] アレイ”と呼ばれる探索インデックスのアレイに変換される。search[ ] アレイにおけるインデックスのエントリの各々は、上述した方法を用いて探索される。各々のヒット（hit）の探索は多数のヒットを返却しうるので、ここで“chunkhit[ ]”と呼ばれるヒットしたインデックス値の集合が生成される。このアレイの各エントリは、データベース位置情報を記録するエントリである。
【００８６】
ヒットした領域の集合は、その集合をhits[ ]と呼ぶ集合アレイに変換することによって照合することが可能である。hits[ ] アレイにおける各エントリは、領域の度数カウントとともに、探索パターンにおける位置および／またはデータベースにおける位置のような、位置情報への参照である。
【００８７】
ヒットが収集されると、結果の量を減少させるために多数のフィルタ操作が実行される。実行されうる各種のフィルタ操作は、パターン全体の合致をフィルタリングするとともに、特定のヒット（または領域の合致）をフィルタリングすることを含む。フィルタリングすることの特定の種類のいくつかの例は、度数が低過ぎるならば特定のヒットをフィルタリングすること、度数が高過ぎるならば特定のヒットをフィルタリングすること、合致した領域の最大度数が高過ぎるならば全てのヒットを除去すること、ｘ＊（最大度数）−ｙ＊（ヒット）の線型関数に閾値を適用することに基づいて全てのヒットを除去することを含む。
【００８８】
探索が実行された後に、ヒットフィルタリング段階からの結果は、ここで“hits[ ]”と呼ばれるヒットのアレイの形式である。選択的に、この結果について多数の順位付け技術を用いることが可能である。そのような順位付け技術のいくつかは、領域のヒットの総数に基づくもの、上記のフィルタリング段階における線形関数、全体のパターンの合致をヒットした領域の間の距離と組み合わせるデルタギャップ関数がある。
【００８９】
出力探索結果はいくつかの方法で要約することが可能である。例えば、出力は、合致するパターンのリスト、合致するパターンのリストとそれらの整列された点数によって順位付けされたそれらの点数、探索文字列と合致した特定の部分パターン、および／または、（bl2seqのような）サードパーティのツールを用いて整列された部分パターンの集合を含むことが可能である。
【００９０】
＜例１＞
“Ａ  Ｔ  Ｃ  Ｇ  Ｔ  Ｃ  Ｇ  Ｔ  Ｔ  Ｃ  Ａ  Ｇ  Ｃ  Ａ  Ｔ  Ａ  Ｃ  Ｃ  Ｇ  Ｔ”を具備するヌクレオチド配列である元の入力パターンについて探索が実行される。図１の実例１０に表わされているように、入力パターン１２は、それにわたって適用されるｋ＝５の重複しない隣接するウィンドウを有する。入力配列パターンは、４つのデータ領域１４“ＡＴＣＧＴ，ＣＧＴＴＣ，ＡＧＣＡＴ，ＡＣＣＧＴ”に区分される。４つの領域の各々は、図２に表わされているように、並列アレイ表２０のindex[ ] アレイ１６において１０進数のインデックス、例えば３２、５６、４５、１９に変換される。location[ ] アレイ１８は、元のファイルにおける各データ領域の位置を表わすデータを含む。この例において、インデックス３２を有するデータ領域は位置０に存在し、インデックス５６を有する領域は位置５に存在し、インデックス４５を有する領域は位置１０に存在し、インデックス１９を有する領域は位置１５に存在する。
【００９１】
特定のデータ領域の位置を発見するために、正しいインデックスを有する領域が発見され、対応する位置が相互参照される。並列アレイ表によれば、第１行が４５のインデックスを有する領域について検査されるならば、領域は元のファイルにおける位置１０において発見される。
【００９２】
大きなパターンについて、並列アレイ表に（長さｋの）列が存在する。例えば、人間のゲノムのためのアレイ表は約５００，０００，０００個のエントリを有する。並列アレイ表に多数のエントリが存在するとき、単にアレイを走査して合致するインデックスを調べるために時間を消費し過ぎる。より効果的な探索技術が必要とされる。
【００９３】
第１段階は、インデックスによって並列アレイ表を整列する。本来、位置は探索のために用いられるので、多くの場合、表は位置によって整列される。しかし、この場合、位置よりも領域のインデックスが探索のために用いられるので、整列することが望ましい。この例についての整列されたアレイ２２が図３に表わされ、整列されたindex[ ] アレイ１６および整列されたlocation[ ] アレイ１８を具備する。ｋ＝５について８つの要素からなるアレイ表２２が必要とされ、これは領域のインデックスのために４つのアレイおよび位置情報のために４つの並列アレイを含む。要素毎に８バイトが用いられるならば、６４バイトの記憶装置が必要とされる。
【００９４】
比較すると、単一アレイ技術は、通常、ずっと多くの記憶容量を必要とする。例えば、ＳＳＡＨＡは、Ｃを領域の数として、４ｋ＋１＋８Ｃバイトを必要とする（SSAHA、“A Fast Search Method for Large DNA Databases”、Genome Research、２００１年）。これは４１２８バイトを（４０９６＋３２）に変換する。従って、この例によると、ＳＳＡＨＡの処理は、本発明によって整列された同じ構造を記憶するために、本発明の要求する記憶装置より６４倍多くのＲＡＭを必要とする。本発明の使用によって実現される節約は実際のデータにおいてｋが増加するに従って印象的である。
【００９５】
図４は探索方法の一実施形態を表わす。探索の間に、ｋ＝５のテンプレート２６は探索文字列にわたってスライドする。各領域はインデックス値にマッピングされる。
【００９６】
図３に表わされている（インデックス、位置）のアレイにおいてインデックスを発見するために利用可能な多数の効果的なアルゴリズムが存在する。これらの方法は、O(log L)の計算量を有する２分探索を含む。２分探索においては、低い／高い境界が発見され、中間において検査される。位置における値が低過ぎまたは高過ぎるならば、境界は調節され処理は繰り返される。
【００９７】
＜例２＞
現在の探索技術と比較して大きなデータ集合について性能が評価された。ゲノム配列の比較は、本発明を用いておよび現在の探索標準のＢＬＡＳＴを用いて行われた。バルサムポプラの亜種トリコカーパのゲノム５百万ＨＴＧの読み出しの各々が互いに比較された（事実上、２５百万の比較）。結果として、本方法は、全ての配列の比較においてＢＬＡＳＴ法の探索時間より１０，７８２倍高速であった。実験は、２つの６４ビット１．８ＧＨｚプロセッサおよび１２ＧＢのＲＡＭを有し、Linuxが動作するAMD Opteron 244で実行された。本発明を用いると、作業が大きくなるほど、他の現在の探索方法との差が大きくなる。
【００９８】
図５は、本発明の一実施形態によって実行される基本的な目録作成処理のフローチャートを表わす。この処理の最初のステップＡにおいて、目録作成されるデータ集合が、多数の固定長のデータ要素に区分される。
この処理の次のステップＢは、各データ要素についてのデータ項目となるように構成された各要素に変換関数が適用される。好ましくは、この変換は直接のハッシュ関数によって実現される。
ステップＣにおいて、各データ項目は、順序付けられた目録データ構造内に記憶され、好ましくはアレイによって構成される。
ステップＤにおいて、各々の記憶されたデータ項目は、データ項目を構成するために用いられるデータ要素の開始メモリアドレスに対応付けられる。好ましくは、このステップは、これらのアドレスを並列アドレスデータ構造に記憶することによって遂行される。
この処理の最後のステップＥにおいて、目録データ構造および（好ましい実施形態において提供される）対応付けられた並列アドレスデータ構造の両方は、各データ項目の形態によって与えられる順位付け表示に基づいて整列される。
【００９９】
図６は、本発明の一実施形態によって提供される探索およびパターン検出処理の基本的なフローチャートを表わす。
この処理の最初のステップ１００において、探索パターン配列は、このパターンの存在が目録作成されたデータ集合内で検出される場合に受信される。
次のステップ１０１において、受信された探索パターンにスライドするウィンドウ処理を適用することによって、受信された探索パターンから複数の探索クエリーが構成される。構成される探索クエリーの数は、このスライドするウィンドウ処理に割り当てられた変位値に依存する。
次のステップ１０２において、与えられた目録データ構造から複数の記憶アドレスが検索され、検索されたアドレスの各々は、ステップ１０１において構成された探索クエリーと合致するデータ要素に対応付けられる。
最後のステップ１０３において、検索された記憶アドレスの間の空間的関係を検査することによってパターンを検出するために、検索された記憶アドレスにわたってパターン配列検出処理が実行される。
【０１００】
本発明は特定の実施形態および図面を参照して様々な詳細について説明した。しかし、これらの詳細は本実施形態のいくつかの説明に過ぎず、本発明の範囲についての限定として解釈されるべきでない。さらに、本発明の広い範囲から逸脱することなく、説明されたシステムおよびその使用方法に他の変形または代替を行うことが可能であることが理解されるべきである。
本発明の態様は単なる例によって説明され、特許請求の範囲において定義される範囲から逸脱することなく、変形および付加を行うことが可能であると理解すべきである。
【図面の簡単な説明】
【０１０１】
【図１】本発明の好ましい実施形態による入力パターンを区分するための一実施形態を表わす。
【図２】本発明による、図１の入力パターンを表わす並列アレイのブロック図である。
【図３】本発明による、図２の並列アレイを表わす整列されたアレイのブロック図である。
【図４】本発明による、図１に表わされた入力パターンを探索するための一実施形態を表わす。
【図５】本発明の一実施形態によって実行される基本的な目録作成処理のフローチャートを表わす。
【図６】本発明の一実施形態によって提供される基本的な探索およびパターン検出処理のフローチャートを表わす。
【符号の説明】
【０１０２】
１０  実例
１２  入力パターン
１４  データ領域
１６  index[ ] アレイ
１８  location[ ] アレイ
２０  並列アレイ表
２２  整列されたアレイ
２６  テンプレート
【図１】
2008506165.tif 000003
【図２】
2008506165.tif 000004
【図３】
2008506165.tif 000005
【図４】
2008506165.tif 000006
【図５】
2008506165.tif 000007
【図６】
2008506165.tif 000008
【手続補正書】
【提出日】平成18年4月21日(2006.4.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデータ記号で構成されるデータ集合の目録を作成する方法であって、
前記データ記号は前記データ集合内で互いに対する定義された順序を有し、
前記方法は、
（１）前記データ集合内に存在する記号の配列の最初から第１データ要素を構成するステップを有し、前記データ要素は記憶アドレスを有する前記データ集合内の記憶位置において記憶され、
（２）前記第１データ要素を第１データ項目に変換するステップをさらに有し、前記データ項目は他のデータ項目に対する順位付けが可能であり、
（３）複数の順次的に配置される記憶位置を定義する順序付けられた目録データ構造を用いて前記第１データ項目を記憶するステップと、
（４）前記第１データ要素が検索された記憶アドレスを前記第１データ項目に対応付けるステップと、
（５）前記データ集合からの隣接する各データ要素についてステップ（１）から（４）を連続して繰り返すステップと、をさらに有し、続く隣接する各データ要素は前記第１データ要素を構成するために用いられるのと同一の数の記号から構成され、
（６）前記目録データ構造内に記憶された前記データ項目を順位付けることによって順序付けられた目録データ構造を整列するステップをさらに有することを特徴とするデータ集合の目録を作成する方法。
【請求項２】
前記目録データ構造のサイズは、前記データ集合のサイズに実質的に等しい請求項１に記載のデータ集合の目録を作成する方法。
【請求項３】
前記目録データ構造はアレイ（array）で構成される請求項１または２に記載のデータ集合の目録を作成する方法。
【請求項４】
前記データ項目は、並列アドレスデータ構造によって記憶アドレスと対応付けられる請求項１から３のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項５】
前記並列アドレスデータ構造はアレイで構成される請求項４に記載のデータ集合の目録を作成する方法。
【請求項６】
前記データ項目は、前記目録データ構造内の記憶アドレスの記憶によって記憶アドレスと対応付けられる請求項１から３のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項７】
前記データ項目は、重複に基づくデータ構造によって記憶アドレスと対応付けられる請求項１から６のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項８】
前記データ要素に適用される前記変換処理は、数値形式のデータ要素を提供する請求項１から７のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項９】
前記データ要素に適用される前記変換は、直接のハッシュ関数によって実現される請求項１から８のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１０】
前記データ要素に適用される前記変換は、損失の多いハッシュ関数によって実現される請求項１から８のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１１】
前記目録データ構造を用いる探索において検索検証処理が実行される請求項１０に記載のデータ集合の目録を作成する方法。
【請求項１２】
前記データ要素の最上位の記号は、整列された結果の前記目録データ構造内に記憶されない請求項１から１１のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１３】
クラスデータ構造が提供される請求項１から１２のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１４】
前記クラスデータ構造は、データ項目内に存在する固有の最上位の記号の数に等しい多数の記憶位置を定義するアレイによって提供される請求項１３に記載のデータ集合の目録を作成する方法。
【請求項１５】
（７）存在しうる固有のデータ要素の最大数に等しいか、またはより小さい多数の記憶位置を定義する少なくとも１つの順序付けられた内容データ構造を構成するステップと、
（８）少なくとも１つのデータ要素を各記憶位置と対応付けるステップと、
（９）前記記憶位置に対応付けられた前記少なくとも１つのデータ要素が前記データ集合内に存在するか否かに応じて正または負の表示を、前記内容データ構造の各記憶位置内に記憶するステップと、
をさらに有することを特徴とする請求項１から１４のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１６】
前記内容データ構造はアレイで構成される請求項１５に記載のデータ集合の目録を作成する方法。
【請求項１７】
前記目録データ構造は、データ要素の記号配列から生成された複数の探索クエリーを処理することによって特定のデータ要素の記号配列を発見するために用いられる請求項１から１６のいずれか１項に記載のデータ集合の目録を作成する方法。
【請求項１８】
前記処理される複数の探索クエリーは、スライドするウィンドウ処理を用いて生成される請求項１７に記載のデータ集合の目録を作成する方法。
【請求項１９】
前記複数の探索クエリーの処理によって生成される結果は、探索パターン配列検出処理によって処理される請求項１８に記載のデータ集合の目録を作成する方法。
【請求項２０】
前記探索パターン配列検出処理は、前記探索クエリーによって発見されたデータ要素に対応付けられた記憶アドレスの間の空間的な関係の検査においてパターンの存在を検出する請求項１９に記載のデータ集合の目録を作成する方法。
【請求項２１】
合致するパターン配列が検出されたか否かを検査するためにエラー許容閾値が用いられる請求項２０に記載のデータ集合の目録を作成する方法。
【請求項２２】
請求項１から２１のいずれか１項に記載の方法によって目録が作成されたデータ集合内の探索パターンの存在を検出する方法であって、
（１）探索パターン配列を受信するステップと、
（２）前記受信した探索パターン配列にわたってスライドするウィンドウ処理を実行することによって複数の探索クエリーを構成するステップと、
（３）前記目録データ構造から複数の記憶アドレスを検索するステップと、を有し、前記記憶アドレスは、構成された前記探索クエリーと合致するデータ要素と対応付けられ、
（４）受信した前記記憶アドレスの間の空間的な関係を検査することによって受信した前記探索パターン配列の存在を検出するステップと、
をさらに有する探索パターンの存在を検出する方法。
【請求項２３】
合致するパターン配列が検出されたか否かを検査するためにエラー許容閾値が用いられる請求項２２に記載の探索パターンの存在を検出する方法
【請求項２４】
請求項１から２３のいずれか１項に記載のデータ集合の目録を作成する方法を実行するために使用されるコンピュータ読み取り可能な媒体に記憶されたコンピュータが実行可能な命令。
【請求項２５】
請求項１から２１のいずれか１項に記載のデータ集合の目録を作成する方法を実行するために使用される、コンピュータが実行可能な命令が記憶されたコンピュータ読み取り可能な媒体。
【請求項２６】
添付図面および／または例を参照して実質的に説明され、かつ表わされたデータ集合の目録を作成する方法。
【国際調査報告】
2008506165.tif 000009
2008506165.tif 000010
2008506165.tif 000011