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