(57)【要約】【課題】  圧縮した生物情報を復元する必要なく、また、別途インデックスを作成する必要もなく、検索を行うことが可能な生物情報の検索装置を提供する。【解決手段】  検索対象とする検索配列データを３塩基１バイトで記録された形式としておき、検索キーとするキー配列データが入力された場合、１塩基１バイトで記録されたキー配列データの再配置を行い、３塩基１バイトで記録されたキー統合配列データとした後、複数の反復パターンに応じて、キー統合配列データの配列を若干変化させたキー参照配列データを作成し、検索配列データと各キー参照配列データを各バイト単位で照合することにより、全体一致度を算出し、全体一致度の高いものを抽出する。【選択図】  図８
2006163734.tif 000002
【特許請求の範囲】
【請求項１】
生物情報を表現した配列データに対して、隣接する複数の配列要素を１つの配列単位に格納した形式である検索配列データを記憶した検索配列データ記憶手段と、
検索キーとする配列データであるキー配列データを入力するキー配列入力手段と、
前記キー配列入力手段から入力されたキー配列データに対して、隣接する複数の配列要素を１つの配列単位に格納してキー統合配列データを作成する配列再配置手段と、
前記キー統合配列データに対して、所定の方法により変化を加え、１つは前記キー統合配列データと同一のキー統合配列データである、複数のキー参照配列データを作成する参照配列作成手段と、
前記検索配列データを構成する配列単位と、前記各キー参照配列データの配列単位との照合を行い、いずれかのキー参照配列データと一致する配列を探索する配列探索手段と、
前記探索の結果、いずれかのキー参照配列データと一致する配列が前記検索配列データに存在した場合に、その存在位置を出力する出力手段と、
を有することを特徴とする生物情報の検索装置。
【請求項２】
請求項１において、
前記配列探索手段は、所定の規則に従って一致度を付与するものであり、
前記出力手段は、完全一致する配列が存在しない場合は、前記一致度の高い配列の存在位置、およびその一致度を出力するものであることを特徴とする生物情報の検索装置。
【請求項３】
生物情報を表現した配列データに対して、重複する部分配列を部分配列符号化データとして分離して記録した形式である圧縮検索配列データを記憶した圧縮検索配列データ記憶手段と、
検索キーとする配列データに対して、重複する部分配列を部分配列符号化データとして分離して記録した形式である圧縮キー配列データを記憶した圧縮キー配列データ入力手段と、
前記圧縮検索配列データ記憶手段に記憶された圧縮検索配列データ内の部分配列符号化データ、および圧縮キー配列入力手段から入力された圧縮キー配列データ内の部分配列符号化データを照合し、一致する圧縮検索配列データを抽出する部分配列照合手段と、
前記部分配列照合手段により抽出された圧縮検索配列データを出力する出力手段と、
を有することを特徴とする生物情報の検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バイオインフォマティクス、ゲノム創薬、バイオ新素材開発など生物情報データベースの構築、検索、解析を行う分野に関する。
【背景技術】
【０００２】
近年、ヒトゲノムプロジェクトなどバイオインフォマティクス（生物情報科学）の急速な進展に伴い、膨大な生物情報データベースが構築されつつある。特に、ＤＮＡ配列については、完成度が高まっており、現在急ピッチでプロテオーム情報の蓄積が進行している。このように蓄積される大容量のデータベースを活用し、医薬品開発や新規素材開発などに応用するためには、ネットワーク経由の円滑なデータベースの扱いが重要となる。すなわち、蓄積した情報をいかに効率良く検索するかが重要となる。
【０００３】
生物情報の圧縮については、最近では、さまざまな手法が提案されている（例えば、特許文献１、特許文献２参照）。
【特許文献１】特開２００３−１８８７３５号公報
【特許文献２】特開２００４−２４０９７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、効率良く圧縮した場合であっても、その情報を検索する場合には、圧縮した情報を復号してから行うか、別途インデックスを作成してデータベースに登録する必要があり、データベース構築の負荷が生じる。
【０００５】
そこで、本発明は、圧縮した生物情報を復元する必要なく、また、別途インデックスを作成する必要もなく、検索を行うことが可能な生物情報の検索装置を提供することを課題とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、第１の発明では、生物情報の検索装置を、生物情報を表現した配列データに対して、隣接する複数の配列要素を１つの配列単位に格納した形式である検索配列データを記憶した検索配列データ記憶手段と、検索キーとする配列データであるキー配列データを入力するキー配列入力手段と、前記キー配列入力手段から入力されたキー配列データに対して、隣接する複数の配列要素を１つの配列単位に格納してキー統合配列データを作成する配列再配置手段と、前記キー統合配列データに対して、所定の方法により変化を加え、１つは前記キー統合配列データと同一のキー統合配列データである、複数のキー参照配列データを作成する参照配列作成手段と、前記検索配列データを構成する配列単位と、前記各キー参照配列データの配列単位との照合を行い、いずれかのキー参照配列データと一致する配列を探索する配列探索手段と、前記探索の結果、いずれかのキー参照配列データと一致する配列が前記検索配列データに存在した場合に、その存在位置を出力する出力手段を有する構成としたことを特徴とする。
【０００７】
また、第２の発明では、生物情報の検索装置を、生物情報を表現した配列データに対して、重複する部分配列を部分配列符号化データとして分離して記録した形式である圧縮検索配列データを記憶した圧縮検索配列データ記憶手段と、検索キーとする配列データに対して、重複する部分配列を部分配列符号化データとして分離して記録した形式である圧縮キー配列データを記憶した圧縮キー配列データ入力手段と、前記圧縮検索配列データ記憶手段に記憶された圧縮検索配列データ内の部分配列符号化データ、および圧縮キー配列入力手段から入力された圧縮キー配列データ内の部分配列符号化データを照合し、一致する圧縮検索配列データを抽出する部分配列照合手段と、前記部分配列照合手段により抽出された圧縮検索配列データを出力する出力手段を有する構成としたことを特徴とする。
【発明の効果】
【０００８】
第１の発明の生物情報の検索装置によれば、隣接する複数の配列要素を１つの配列単位に格納した形式である検索配列データを検索対象とし、検索キーとしてキー配列データを入力すると、キー配列データに対して、隣接する複数の配列要素を１つの配列単位に格納し、さらに所定の方法により変化を加え、複数のキー参照配列データを作成し、検索配列データを構成する配列単位と、各キー参照配列データの配列単位との照合を行い、いずれかのキー参照配列データと一致する配列を探索するようにしたので、別途インデックスを作成しておく必要なく、高速に検索を行うことが可能となる。
【０００９】
また、第２の発明の生物情報の検索装置によれば、反復する部分配列を部分配列符号化データとして分離して記録した形式である圧縮検索配列データを検索対象とし、検索キーとする配列データに対して反復する部分配列を部分配列符号化データとして分離して記録した形式である圧縮キー配列データを入力するとと、圧縮検索配列データ記憶手段に記憶された圧縮検索配列データ内の部分配列符号化データ、および圧縮キー配列入力手段から入力された圧縮キー配列データ内の部分配列符号化データを照合し、この部分配列符号化データの一部が一致する圧縮検索配列データを抽出するようにしたので、圧縮した生物情報を復元する必要なく、高速に検索を行うことが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態について図面を参照して詳細に説明する。
（生物情報について）
ここで、本発明で検索対象とする生物情報の構造について説明しておく。本発明では、生物情報として、塩基配列、アミノ酸配列等を利用することができる。本実施形態では、塩基配列を検索対象とする場合について説明する。図１（ａ）は、代表的なデータ形式であるＦＡＳＴＡ形式で表現した原塩基配列ファイルを示す図である。図１において、ｔ、ｃ、ａ、ｇ（大文字Ｔ、Ｃ、Ａ、Ｇも同一）は、それぞれチミン、シトニン、アデニン、グアニンの４種類の塩基を示している。なお、ここでは、塩基を示す４文字以外の注釈情報は、<ANNOTATION>として省略して示してあるが、実際には、塩基配列を説明するための注釈情報が記されている。注釈情報を構成する文字、および各塩基は、ＡＳＣＩＩコードで記録されており、１文字の記録に８ビットを要している。
【００１１】
（第１の実施形態）
本発明第１の実施形態について説明する。まず、上記のような原塩基配列ファイルを基に、本発明で検索対象とする検索配列データの準備を行う。まず、原塩基配列ファイル注釈情報を除去して塩基部分だけを抽出する。この時点において、塩基部分は１塩基１バイトで記録されている。この塩基部分の配列データの再配置を行う。具体的には、１塩基１バイトで記録されている塩基配列データの配列構成を、３塩基１バイトで記録される構成に再配置する。すなわち、本実施形態では、配列要素である塩基を３つまとめて１つの配列単位である１バイトに格納することにより再配置を行う。上述のように、塩基は、ａ、ｇ、ｃ、ｔの４種類であるため、図２に示した塩基変換テーブルを利用して、それぞれに「００」「０１」「１０」「１１」を割り当てることにすれば、２ビットで表現できる。例えば、ａｇｃの連続する３塩基は、図３に示すようなビット構成の１バイトデータとして記録することができる。図３において、各枠内の０、１の数字は各ビットの値を示しており、右端が最下位ビット、左端が最上位ビットである。本実施形態では、再配置後の１バイトの構成において、２ビット単位で塩基を記録している。図３の例では、上位から順に、ダミー、Ｃ、Ｇ、Ａとなっている。最上位２ビットのダミーは「００」であり、これは全てのバイトにおいて同一である。下位６ビットにおいては、最下位から順に３つの塩基が記録されることになる。したがって、ａｇｃの連続する３塩基は、図３に示すような記録順で記録されることになる。同様の処理を実行していくことにより、１塩基１バイトで構成された配列データを、３塩基１バイトの検索配列データに変換する。例えば、図４（ａ）に示したような２０３塩基２０３バイトの塩基配列データ（図１（ｃ）に示したものと同一）は、図４（ｂ）に示したような２０３塩基６８バイトの統合配列データに変換されることになる。
【００１２】
（装置構成）
次に、本発明第１の実施形態に係る生物情報の検索装置の構成について説明する。図５は、本発明第１の実施形態に係る生物情報の検索装置の構成図である。図５において、１０は検索配列データ記憶手段、２０はキー配列入力手段、３０は配列再配置手段、４０は参照配列作成手段、５０は配列探索手段、６０は出力手段である。
【００１３】
検索配列データ記憶手段１０は、検索対象となる生物情報の塩基配列を記憶した記憶手段である。検索キーとして外部から入力される配列と区別するため、検索対象とされる塩基配列を検索配列データと呼び、検索キーとして外部から入力される配列をキー配列データと呼ぶことにする。検索配列データ記憶手段１０には、図４（ｂ）に示したような３塩基１バイトの統合配列データ形式の検索配列データが記録されている。
【００１４】
キー配列入力手段２０は、検索キーとする塩基配列を入力するためのものである。配列再配置手段３０は、キー配列入力手段２０により入力されたキー配列データを再配置してキー統合配列データを作成する機能を有している。具体的には、検索配列データを作成する際に、元の塩基配列に対して行った処理と同様の処理を行う。したがって、キー統合配列データの構成は、検索配列データと同様、図４に示したように３塩基１バイトの構成となる。
【００１５】
参照配列作成手段４０は、配列の再配置により得られたキー統合配列データを基に、複数セットのキー参照配列データを作成する機能を有している。配列探索手段５０は、複数セットの各キー参照配列データが、検索配列データ内に存在するかどうかを探索する機能を有している。出力手段６０は、探索により得られた重複配列のアドレスを出力する機能を有している。具体的には、表示出力するディスプレイ装置や、印字出力するプリンタ等が適用できる。図５に示した装置は、現実には、コンピュータに専用のソフトウェアを搭載することにより実現される。また、処理過程において作成される配列データは、コンピュータが管理するメモリの記憶領域に作成される。
【００１６】
（処理動作）
次に、図５に示した検索装置の処理動作について説明する。まず、目的とする配列であるキー配列データをキー配列入力手段２０から入力する。すると、配列再配置手段３０が、入力された１塩基１バイト形式のキー配列データを３塩基１バイト形式のキー統合配列データに再配置する処理を行う。
【００１７】
続いて、参照配列作成手段４０が、配列の再配置により得られたキー統合配列データを基に、複数セットのキー参照配列データを作成する。このキー参照配列データは、生物情報に特有の反復パターンに対応した配列を検出し易くするために作成されるものである。ここで、ある配列と、対応する反復配列の反復パターンについて説明しておく。図６に３つの反復パターンを示す。図６（ａ）〜（ｃ）に示す３つのパターンにおいて、左側は対象とする配列（対象配列）であり、矢印の先の右側が対応する配列（対応配列）である。ここでは対象配列は全て共通で「ＡＧＣＴＡＡ」としている。単純反復とは、そのまま反復する反復パターンであり、図６（ａ）に示すように、対象配列と対応配列は全く同一の配列である。逆方向反復とは、並び順を全く反対にした反復パターンであり、図６（ｃ）に示すように、対象配列と対応配列は全く反対の配列となっている。図６（ｃ）においては、対象配列における１塩基目から６塩基目までの塩基が、対応配列において６塩基目から１塩基目に配置されている。逆方向相補反復（Ｐａｌｉｎｄｒｏｍｅ）とは、逆方向反復となっている配列を、さらに相補的に置き換えたものである。ここで、相補的置き換えとは、その化学的性質により、結び付き易い塩基同士を置き換えたものである。具体的には、ＡとＴ、ＣとＧがそれぞれ結び付き易い性質を持っている。したがって、図６（ｃ）の右側に示した逆方向反復の関係にある対応配列において、ＡとＴ、ＣとＧを相互にそれぞれ置き換えることにより、図６（ｂ）の右側に示すような対応配列が得られることになる。
【００１８】
上述のような、単純反復、逆方向相補反復、逆方向反復の３つの反復パターンに対応した対応配列を検出するため、本実施形態では、参照配列作成手段４０は、キー統合配列データと同一のキー参照配列データを含め、９つのキー参照配列データを作成する。図７にキー参照配列データの一例を示す。図７において、１つの枠は１バイトのデータを示す。図７に示したモード０からモード８の９つのキー参照配列データのうち、モード０〜モード２は、単純反復の対応配列を検出するため、モード３〜モード５は、逆方向相補反復の対応配列を検出するため、モード６〜モード８は、逆方向反復の対応配列を検出するために作成される。
【００１９】
単純反復検出用のキー参照配列データのうち、モード０は、キー統合配列データと同一の構成となっている。モード１は、モード０の塩基配列を１塩基分移動させたものである。すなわち、モード０において２塩基目のＧから順に配置した構成となっている。モード２は、モード０の塩基配列を２塩基分移動させたものである。すなわち、モード０において３塩基目のＣから順に配置した構成となっている。逆方向反復検出用のキー参照配列データのうち、モード６は、キー統合配列データの各バイト内において塩基配列を反転させたものとなっている。モード７は、モード１のキー参照配列データの各バイト内において塩基配列を反転させたものとなっている。モード８は、モード２のキー参照配列データの各バイト内において塩基配列を反転させたものとなっている。逆方向相補反復検出用のキー参照配列データのうち、モード３は、モード６のキー参照配列データの各塩基を相補的に置き換えたものとなっている。モード４は、モード７のキー参照配列データの各塩基を相補的に置き換えたものとなっている。モード５は、モード８のキー参照配列データの各塩基を相補的に置き換えたものとなっている。
【００２０】
参照配列作成手段４０により、複数セットのキー参照配列データが作成されたら、次に、配列探索手段５０が、作成された複数セットのキー参照配列データと一致する配列を探索する。具体的には、キー参照配列データ内の各バイトと検索配列データ内の各バイトを照合し、各バイトの一致度に基づいて、全体一致度を算出する。そして、全体一致度の高かった検索配列データ内の位置を出力する。
【００２１】
例えば、キー参照配列データが１００バイト、検索配列データが１００００バイトの場合を考えてみる。キー参照配列データと検索配列データを照合する場合、キー参照配列データの１バイト目（先頭）を検索配列データの１バイト目（先頭）に固定し、各バイトを照合する。すなわち、キー参照配列データの２バイト目と検索配列データの２バイト目、キー参照配列データの３バイト目と検索配列データの３バイト目、というようにして、キー参照配列データの１００バイト目（最後尾）目と検索配列データの１００バイト目までの照合を行う。
【００２２】
各バイトの一致度については、完全一致の場合に１００％、３塩基中２塩基一致の場合に５０％とする。例えば、図８（ａ）に示すようにキー参照配列データの照合対象とするバイトが「ＡＧＣ」であったとする。この場合、図８（ｂ）に示すように検索配列データの照合対象とするバイトが「ＡＧＣ」であれば、完全一致であるので、１００％と判断する。「ＡＧＣ」に対して、２塩基の位置はそのままで１塩基だけ他の塩基に置換された「＊ＧＣ」「Ａ＊Ｃ」「ＡＧ＊」の場合、１塩基だけ削除された「ＧＣ＊」「ＡＣ＊」「＊ＡＣ」の場合、１塩基だけ他の塩基が挿入された「＊ＡＧ」「Ａ＊Ｇ」「Ｇ＊Ｃ」の場合、はいずれも５０％と判断する。なお、図８において、「＊」は任意の塩基を示す。
【００２３】
上記のようにして、各バイトごとに一致度を算出する。そして、全バイトの一致度の合計を算出し、それを全体一致度とする。同様にして、キー参照配列データを１バイト移動させて、検索配列データとの照合を行う。すなわち、キー参照配列データの１バイト目と検索配列データの２バイト目、キー参照配列データの２バイト目と検索配列データの３バイト目、というようにして、キー参照配列データの１００バイト目（最後尾）と検索配列データの１０１バイト目までの照合を行って全体一致度を算出する。このようにして、キー参照配列データの位置を１バイトずつ移動させながら、キー参照配列データの最後尾と検索配列データの最後尾を照合するまで行う。したがって、この場合、キー参照配列データの１バイト目が検索配列データの９９０１バイト目と照合するまで行うことになり、全体一致度は９９０１個算出されることになる。
【００２４】
検索配列データとの照合は、各モードのキー参照配列データについて行われることになる。したがって、９つのモードのキー参照配列データと照合を行う場合、全部で８９１０９個の全体一致度が算出されることになる。さらに、配列探索手段５０は８９１０９通りのうち、全体一致度が上位から所定数のものについて、その全体一致度、モード、キー参照配列データの先頭と照合した検索配列データの先頭のアドレスを抽出する。
【００２５】
出力手段６０は、抽出された配列情報を出力する。具体的には、全体一致度、モード、検索配列データ内の先頭のアドレスの組を表示出力することになる。なお、上記の例では、配列探索手段５０は、全体一致度が上位から所定数のものを抽出するようにしたが、全体一致度が所定値以上のものを抽出するという設定にしても良いし、完全一致のもののみ抽出するという設定にしても良い。これらの設定にした場合、前述のように、キー参照配列データの最後尾と検索配列データの最後尾までの照合を行う必要が毎回無く、途中で全体一致度が所定値を達成することが不可能と判断できる場合、あるいは完全一致を実現できない不一致な配列が見つかった場合、それ以降の照合処理を省略することができ、検索時間を大幅に短縮することができる。
【００２６】
（第２の実施形態）
続いて、本発明第２の実施形態について説明する。本発明第２の実施形態では、第１の実施形態よりもさらに圧縮したデータを検索する。生物情報の中で、ＤＮＡ配列については、各種の特徴配列が存在することが知られており、特に個人差があるタンデムリピート（縦方向反復）については、解明が進んでおり、本人鑑定（ＤＮＡ鑑定）、遺伝子診断などに使われている。このように、反復（繰り返し）配列を解析することは生物学的な知見を得る上で重要であり、かつデータ圧縮にも活用することが期待できる。
【００２７】
第２の実施形態に係る生物情報の検索装置は、このような反復配列を利用して圧縮した圧縮配列データを検索するためのものであり、反復配列のみを利用して検索を実行するため高速な検索を行うことができる。
【００２８】
（圧縮検索配列データの準備）
まず、検索対象とする圧縮検索配列データの準備を行う。これは、第１の実施形態のように、原塩基配列ファイルから注釈データを分離して、さらに１塩基１バイトの形式を３塩基１バイトの形式に再配置した統合配列データ形式から、さらに以下のような処理を行う。まず、このような統合配列データに対して、上記図７に示したような９通りの参照配列データを作成する。続いて、作成された複数セットの参照配列データを利用して、部分配列と一致する重複配列を探索する。なお、部分配列とは、統合配列データ中の一部分の配列を意味し、重複配列とは部分配列の一部もしくは全部と重複する配列を意味する。部分配列と重複配列の対応関係は、上記図６に示した対象配列と対応配列の関係と同様となっている。具体的な探索処理としては、統合配列データ内の対象とする部分配列より２バイト以上前方に位置し、かつ部分配列と一致する参照配列データ内の重複配列を探索する。例えば、図７に示したように統合配列データにおいてアドレスが「３」である「ＧＣＴ」を対象とする部分配列とした場合、参照配列データモード０内において、アドレスが「０」である「ＡＧＣ」と、アドレスが「１」である「ＴＡＧ」までは比較を行うが、アドレスが「２」である「ＣＴＡ」との比較は行わない。また、参照配列データモード１内において、アドレスが「０」である「ＧＣＴ」と、アドレスが「１」である「ＡＧＣ」までは比較を行うが、アドレスが「２」である「ＴＡＧ」との比較は行わない。また、参照配列データモード２内において、アドレスが「０」である「ＣＴＡ」と、アドレスが「１」である「ＧＣＴ」までは比較を行うが、アドレスが「２」である「ＡＧＣ」との比較は行わない。ここで、１バイト前の配列との比較を行わないのは、１バイト前であると、対象とする部分配列に含まれる塩基と同じものを含むからである。例えば、統合配列データのアドレス「３」の「ＧＣＴ」における「Ｇ」と、参照配列データモード１のアドレス「３」の「ＴＡＧ」における「Ｇ」は共に、元の塩基配列の１０番目の「Ｇ」であり、同じものである。本発明の目的は、自身と同じ配列をもつ自身以外の配列を探すことであるため、１バイト前との比較は行わないことにしている。
【００２９】
そして、１バイト３塩基単位の比較の結果、対象とする部分配列と一致する重複配列が検出されたら、部分配列に直後の１バイト（３塩基）を加えて新たな部分配列とすると共に、重複配列に隣接する１バイトを加えて新たな重複配列とする。隣接する１バイトとは、参照配列データが単純反復の場合、直後の１バイトであり、参照配列データが逆方向相補反復または逆方向反復の場合、直前の１バイトである。新たな部分配列と新たな重複配列がさらに一致する場合、さらに、隣接する１バイトを加え、新たな部分配列と新たな重複配列を比較していく。このようにして、各参照配列データについて処理を行っていき、部分配列の長さが最大となる重複配列を有するモードを検出する。
【００３０】
部分配列の長さが最大となる重複配列およびモードが検出されたら、次に、検出された部分配列の符号化を行う。具体的には、探索の結果、最大となった部分配列の長さをＷｔ（バイト）、重複配列の長さをＷｓ（バイト）、その重複配列が存在した参照配列データのモードをＭ、統合配列データにおける部分配列の先頭位置の絶対アドレスをＰｔ、参照配列データにおける重複配列の先頭位置のＰｔからの相対アドレスをＰｓとする（このＷｔ、Ｗｓ、Ｍ、Ｐｔ、Ｐｓの組を部分配列パラメータと呼ぶ）。そして、この部分配列パラメータを符号化する処理を行う。
【００３１】
ここで、部分配列パラメータの各要素Ｗｔ、Ｗｓ、Ｐｔ、Ｐｓの関係を図９、図１０に示す。図９は、部分配列Ｗｔと重複配列Ｗｓが等しい場合（これを「単一反復」と呼ぶ）を示している。また、図９の例では、部分配列として「ＣＧＡＡＴＧＣＧＡＧＡＡ」が検出された場合を示している。図９（ａ）は、順方向単一反復の場合、すなわち、参照配列データがモード０〜モード２である場合を示している。図９（ｂ）は、逆方向単一反復の場合、すなわち、参照配列データがモード３〜モード８である場合を示している。図９に示すように、Ｗｔは統合配列データにおける部分配列の長さ、Ｗｓは参照配列データにおける重複配列の長さ、Ｐｔは統合配列データにおける部分配列の先頭位置の絶対アドレス、Ｐｓは参照配列データにおける重複配列の先頭位置のＰｔからの相対アドレスを示している。なお、図９において、統合配列データ、参照配列データのいずれも左端は絶対アドレス０の位置を示している。なお、Ｐｔは、先頭からの絶対アドレスを示すが、本実施形態では、圧縮時によりデータ量を削減できる余地を残すために、対象としている部分配列の直前に検出された部分配列の絶対アドレスＰｔとの差分で記録するようにしている。
【００３２】
図１０は、重複配列Ｗｓの配列が連続して複数反復されて、部分配列Ｗｔとなる場合（これを「複数反復」と呼ぶ）を示している。本発明においては、このような関係にある重複配列も探索することを可能としている。図１０の例では、部分配列として「ＣＧＡＡＴＧＣＧＡＡＴＧ」が検出された場合を示している。図１０（ａ）は、順方向複数繰り返しの場合、すなわち、参照配列データがモード０〜モード２である場合を示している。図１０（ｂ）は、逆方向単一繰り返しの場合、すなわち、参照配列データがモード３〜モード８である場合を示している。Ｗｔは統合配列データにおける部分配列の長さ、Ｗｓは参照配列データにおける重複配列の長さ、Ｐｔは統合配列データにおける部分配列の先頭位置の絶対アドレス、Ｐｓは参照配列データにおける重複配列の先頭位置のＰｔからの相対アドレスを示す点は、図９と同様である。ただし、図１０においては、ＷｔとＷｓが等しくなく、部分配列においては、重複配列が複数繰り返されている。なお、図１０においても、統合配列データ、参照配列データのいずれも左端は絶対アドレス０の位置を示している。
【００３３】
図１０においては、ＷｔがＷｓの２倍となっているが、ＷｔがＷｓの整数倍とならない場合についても、部分配列Ｗｔ、重複配列Ｗｓを算出することができる。そのような場合も含めて、次に、重複配列の探索の詳細な処理について説明する。まず、統合配列データにおいて、先頭からの絶対アドレスＰｔを順に変化させ、各Ｐｔにおいて、Ｐｔからの相対アドレスＰｓを変化させて、各Ｐｔ、Ｐｓについて、図１１に示したフローチャートに従って処理を行うことにより、重複配列の探索を行う。以下の処理を行う。なお、本実施形態においては、部分配列より２バイト以上過去のアドレスにおける重複配列の探索を行うものであるため、Ｐｔは「２」から開始され、Ｐｓも「２」から開始される。
【００３４】
図１１は、Ｐｔ、Ｐｓを固定した場合の重複配列探索の詳細を示すフローチャートである。最初に、部分配列の長さを示す変数Ｗｔ、重複配列の長さを示す変数Ｗｓを初期値「０」に設定する（Ｓ１）。続いて、Ｗｓ＝０であるかどうかの判定を行う（Ｓ２）。比較の結果、Ｗｓ＝０である場合には、Ｗ＝Ｗｔとし（Ｓ３）、Ｗｓ＝０でない場合には、Ｗ＝ＷｔｍｏｄＷｓとする（Ｓ４）。なお、Ｗｓは０以上の整数であるため、Ｗｓ＝０でない場合とは、現実にはＷｓ＞０を意味する。また、Ｓ４における“Ｗ＝ＷｔｍｏｄＷｓ”は、ＷｔをＷｓで除算した余りをＷとすることを示している。Ｓ３もしくはＳ４によりＷが決定したら、統合配列要素Ｅ（Ｐｔ＋Ｗｔ）と参照配列要素Ｅ（Ｐｔ−Ｐｓ＋Ｗ）を比較し、両者が一致するかどうかを判定する（Ｓ５）。なお、Ｅ（）は、（）内におけるアドレスで特定されるバイトの値を示す。また、参照配列要素については、順方向反復の場合は、そのアドレスはＰｔ−Ｐｓ＋Ｗとなるが、逆方向反復の場合は、そのアドレスはＰｔ−Ｐｓ−Ｗとなる。Ｓ５において一致する場合は、変数Ｗｔに１を加算した後（Ｓ９）、Ｓ２に戻る。すなわち、Ｓ２、Ｓ５、Ｓ９を通るループは、統合配列の要素と参照配列の要素が一致する限り続くことになる。
【００３５】
Ｓ５において一致しない場合は、Ｗｓ＝０と、Ｗｔ＞０の２つの条件を共に満たすかどうかを判定する（Ｓ６）。２つの条件のどちらか一方でも満たさない場合は、処理を終了する。Ｗｓ＝０でない場合には、所定幅の重複配列が検出されたことを示すため、その時点におけるＷｔ、Ｗｓをそれぞれ部分配列の幅、重複配列の幅として出力する。Ｗｔ＞０でない場合には、統合配列要素と参照配列要素が一つも一致しなかったことを示すため、Ｗｔ＝Ｗｓ＝０として出力される。一方、Ｓ６において２つの条件を共に満たすと判定された場合には、Ｗｓ＝Ｗｔとする（Ｓ７）。次に、統合配列要素Ｅ（Ｐｔ＋Ｗｔ）と参照配列中において、重複配列候補である先頭の要素Ｅ（Ｐｔ−Ｐｓ）を比較し、両者が一致するかどうかを判定する（Ｓ８）。一致しない場合は、変数Ｗｓ、Ｗｔを出力して処理を終了する。一致する場合は、変数Ｗｔに１を加算した後（Ｓ９）、Ｓ２に戻る。Ｓ２、Ｓ８、Ｓ９を通るループは、図１０に示したような複数反復に対応したものとなる。
【００３６】
図１１のフローチャートに示した処理をＰｓを２から２５７まで１ずつ変化させて、各モードの参照配列データに対して行う。この結果、各Ｐｓについて、Ｗｔ、Ｗｓを算出し、Ｗｔが最大となるモードＭを出力する。なお、Ｗｔが所定値以下である場合は、意味のある重複配列ではないと判断されるため、出力しない。このときのＰｔ、Ｐｓ、Ｗｔ、Ｗｓ、Ｍの組み合わせが部分配列を表現した部分配列パラメータとして出力されることになる。
【００３７】
上記のようにして部分配列パラメータが出力されたら、その部分配列パラメータ内のＷｔをＰｔに加算して新たなＰｔとし、そのＰｔについて、部分配列探索処理を行う。一方、部分配列が検出されなかった場合には、Ｐｔに１を加算して新たなＰｔとし、そのＰｔについて、部分配列探索処理を行う。このようにして、統合配列データに対して部分配列の探索処理を行っていき、探索された場合には、部分配列パラメータを出力し、その部分配列パラメータで表現される部分配列を統合配列データから削除する。重複配列の探索前後の統合配列データと、部分配列パラメータの関係を図１２に示す。図１２（ａ）は、重複配列探索前の統合配列データ（図４（ｂ）に示したものと同一）、図１２（ｂ）は、重複配列探索後の統合配列データ、図１２（ｃ）は、統合配列データから検出された部分配列を表現した部分配列パラメータである。図１２において、塩基配列に付された一重の下線は重複配列を示し、二重の下線は部分配列を示している。
【００３８】
図１２（ａ）において、最初の一重下線を付した「ｃｇａｔｔｃａｇｔａｔｃ」と最初の二重下線を付した「ｃｔａｔｇａｃｔｔｇａｃ」は、逆方向単一反復（繰り返し）の関係になっているため、モードＭは「６」であり、幅Ｗｔ、Ｗｓは共に「４」バイトである。また、Ｐｔは先頭からの絶対アドレスを示し、自分より前に部分配列が存在する場合は、そのＰｔとの相対アドレスを示すが、ここでは、最初に登場した部分配列であるので、先頭からの絶対アドレスとなる。したがって、Ｐｔは「５」となる。また、最初の一重下線を付した重複配列は、部分配列と逆方向反復の関係であるため、重複配列中最後尾の「ａｔｃ」の位置が相対アドレスＰｓで表現されることになる。この場合、Ｐｔで特定される部分配列の先頭「ｃｔａ」より２バイト前に位置するため、Ｐｓは「２」となる。以上より、二重下線を付した「ｃｔａｔｇａｃｔｔｇａｃ」の部分配列は、図１２（ｃ）１行目に示しすように、［Ｐｔ：５，Ｗｔ：４，Ｐｓ：２，Ｗｓ：４，Ｍ：６］という部分配列パラメータに変換され、図１２（ｂ）に示すように統合配列データからは削除される。
【００３９】
図１２（ａ）において、二つ目の一重下線を付した「ｔｔｔ」と二つ目の二重下線を付した「ｔｔｔｔｔｔｔｔｔｔｔｔｔｔｔ」は、順方向複数反復（繰り返し）の関係になっているため、モードＭは「０」であり、幅Ｗｔは「５」バイト、幅Ｗｓは「１」バイトである。また、この部分配列の先頭「ｔｔｔ」の先頭からの絶対アドレスは「４５」であるが、２回目に登場した部分配列であるので、直前の部分配列の絶対アドレスＰｔ＝「５」からの相対アドレスで記録され、Ｐｔ＝「４０」となる。また、二つ目の一重下線を付した重複配列は、幅Ｗｓ＝１バイトであり、Ｐｔで特定される部分配列の先頭「ｃｔａ」より４バイト前に位置するため、Ｐｓは「４」となる。以上より、二重下線を付した「ｔｔｔｔｔｔｔｔｔｔｔｔｔｔｔ」の部分配列は、図１２（ｃ）２行目に示しすように、［Ｐｔ：４０，Ｗｔ：５，Ｐｓ：４，Ｗｓ：１，Ｍ：０］という部分配列パラメータに変換され、図１２（ｂ）に示すように統合配列データからは削除される。なお、本実施形態においては、部分配列に対して、同一の重複配列が探索された場合、これらを一対にまとめるようにしている。すなわち、部分配列パラメータにおいて、Ｐｔ、Ｐｓ以外が全て同一である場合は、同一の重複配列に対応したものであるので、隣接して記憶させて、後の部分配列符号化によりデータ量のさらなる削減を行う。
【００４０】
続いて、部分配列パラメータを符号化する。具体的には、Ｐｔを可変長、Ｐｓ、Ｗｔ、Ｗｓ、Ｍを固定長で符号化する。この結果、部分配列符号化データが得られることになる。Ｐｔについては、Ｐｔの値が１２８未満の場合は１バイト、Ｐｔの値が１２８以上で、１６３８４未満の場合は２バイト、Ｐｔの値が１６３８４以上の場合は３バイトで符号化を行う。Ｐｔの値に対応したバイト構成を図１３に示す。図１３に示すように、１バイトの場合は先頭（最上位）のビット値を０として、他の７ビットで数値を表現する。２バイト以上の場合は最下位のバイトの先頭（最上位）のビット値を０とし、バイトの先頭（最上位）のビット値を１とし、各バイトの先頭以外の７ビットで数値を表現する。一方、Ｐｓ、Ｗｔ、Ｗｓ、Ｍについては、各１バイトで０〜２５５の値を表現する。そして、符号化の際には、Ｐｔを先頭として記録する。これにより、復号時の読取の際には、各バイトの先頭のビットを確認し、最初に０が検出された場合に、そこが、Ｐｔの最下位バイトであると認識でき、その後の４要素は固定長であるので、単純に１バイトずつ認識していけば良い。なお、部分配列として探索されなかった配列要素については、３塩基を１バイトとした形式のままとなる。
【００４１】
部分配列として検出された配列については、図１３に示したように符号化されてデータ量が大きく削減される。また、部分配列として探索されなかった配列についても、元の配列データでは、１塩基１バイトで記録されていたのが、３塩基１バイトで記録されることになるため、データ量が削減される。このようにして、元の塩基配列データを圧縮した圧縮配列データが得られる。
【００４２】
（装置構成）
図１４は、第２の実施形態に係る生物情報の検索装置の構成図である。図１４において、１００は圧縮検索配列データ記憶手段、１１０は圧縮キー配列入力手段、１２０は部分配列照合手段、１３０は出力手段である。
【００４３】
圧縮検索配列データ記憶手段１００は、検索対象となる生物情報の塩基配列データを圧縮した圧縮検索配列データを記憶した記憶手段である。検索キーとして外部から入力される配列と区別するため、検索対象とされる塩基配列を圧縮検索配列データと呼び、検索キーとして外部から入力される圧縮配列データを圧縮キー配列データと呼ぶことにする。圧縮検索配列データ記憶手段１１０には、上記のように、部分配列符号化データと、３塩基を１バイトに格納した形式の検索配列データにより構成される圧縮データが記録されている。
【００４４】
圧縮キー配列入力手段１１０は、検索キーとする塩基配列を圧縮した圧縮キー配列データを入力するためのものである。圧縮キー配列データとは、検索キーとする塩基配列を、上記検索配列と同様の処理により圧縮したものであり、部分配列符号化データと、３塩基を１バイトに格納した形式のキー配列データにより構成されている。
【００４５】
部分配列照合手段１２０は、圧縮検索配列データ内の部分配列符号化データと、圧縮キー配列データ内の部分配列符号化データを照合して、一致する部分配列を検出する機能を有している。出力手段１３０は、照合により得られた重複する部分配列のアドレスを出力する機能を有している。図１４に示した装置は、現実には、コンピュータに専用のソフトウェアを搭載することにより実現される。
【００４６】
（処理動作）
続いて、図１４に示した装置の処理動作について説明する。まず、圧縮キー配列入力手段１１０から圧縮キー配列データを入力する。圧縮キー配列データの入力は、例えば、記録媒体に記録された圧縮キー配列データファイルを指定して、実行指示を与えることにより行うことができる。圧縮キー配列データが入力されたら、部分配列照合手段１２０が、入力された圧縮キー配列データ内の部分配列符号化データを抽出する。さらに、部分配列照合手段１２０は、圧縮検索配列データ記憶手段１００に記録された各圧縮検索配列データ内の部分配列符号化データを抽出する。続いて、部分配列照合手段１２０は、圧縮キー配列データ内の部分配列符号化データと、各圧縮検索配列データ内の部分配列符号化データの照合を行う。
【００４７】
部分配列符号化データは、上述のようにＰｔが１〜３バイトの可変長、Ｐｓ、Ｗｔ、Ｗｓ、Ｍが１バイトの固定長で記録された形式となっている。部分配列照合手段１２０は、部分配列符号化データのうち、Ｗｔ、Ｗｓ、Ｍを照合し、一致するかどうかを判定する。ただし、Ｍについては、圧縮キー配列データと圧縮検索配列データとの間で塩基単位のずれを考慮して、Ｍ／３の整数値（すなわち０、１、２のいずれか）で一致判断をする。圧縮キー配列データと圧縮検索配列データのＷｔ、Ｗｓ、Ｍ／３の整数値がいずれも一致する場合には、部分配列の幅、対応する重複配列の幅、方向および相補性が一致するので、配列自体が一致している可能性が高いため、その圧縮ファイル名、Ｐｔ、Ｐｓの値を出力する。これにより、キー配列に含まれていた部分配列に一致する可能性の高い部分配列を有する圧縮ファイルおよび圧縮ファイル内における存在箇所が発見できる。このように、圧縮ファイルから生物情報を復元することなく検索を行うことが可能となる。
【図面の簡単な説明】
【００４８】
【図１】データ分離処理の様子を示す図である。
【図２】塩基変換テーブルの一例を示す図である。
【図３】統合配列データにおける１バイトのビット構成を示す図である。
【図４】配列再配置手段３０による処理の概念を示す図である。
【図５】本発明第１の実施形態に係る生物情報の検索装置の構成を示す図である。
【図６】配列の反復パターンを示す図である。
【図７】参照配列データの一例を示す図である。
【図８】キー参照配列データと検索配列データの各バイトを照合した際の一致度のルールを示す図である。
【図９】ＷｔとＷｓが等しい場合の部分配列パラメータの各要素の関係を示す図である。
【図１０】重複配列が連続して複数反復されて部分配列と同一の配列となる場合の部分配列パラメータの各要素の関係を示す図である。
【図１１】部分配列に対応した重複配列を探索する処理の詳細を示すフローチャートである。
【図１２】重複配列の探索前後の統合配列データと、部分配列パラメータの関係を示す図である。
【図１３】部分配列符号化データのＰｔの値に対応したバイト構成を示す図である。
【図１４】本発明第２の実施形態に係る生物情報の検索装置の構成を示す図である。
【符号の説明】
【００４９】
１０・・・検索配列データ記憶手段
２０・・・キー配列入力手段
３０・・・配列再配置手段
４０・・・参照配列作成手段
５０・・・配列探索手段
６０・・・出力手段
１００・・・圧縮検索配列データ記憶手段
１１０・・・圧縮キー配列入力手段
１２０・・・部分配列照合手段
１３０・・・出力手段
【図１】
2006163734.tif 000003
【図２】
2006163734.tif 000004
【図３】
2006163734.tif 000005
【図４】
2006163734.tif 000006
【図５】
2006163734.tif 000007
【図６】
2006163734.tif 000008
【図７】
2006163734.tif 000009
【図８】
2006163734.tif 000010
【図９】
2006163734.tif 000011
【図１０】
2006163734.tif 000012
【図１１】
2006163734.tif 000013
【図１２】
2006163734.tif 000014
【図１３】
2006163734.tif 000015
【図１４】
2006163734.tif 000016