(57)【特許請求の範囲】
【請求項１】
遺伝子情報を表わす遺伝子塩基配列を格納したデータベースを検索するための索引であり、所定の長さである所定長の塩基配列が前記遺伝子塩基配列の中に出現する位置を検索するための索引、を用いて、入力される塩基配列と同じ長さで類似する塩基配列であり前記遺伝子塩基配列に出現する塩基配列である類似塩基配列を検索するための塩基配列検索装置であって、
前記所定長を超える長さの塩基配列を入力する塩基配列入力部と、
前記塩基配列入力部に入力された塩基配列である入力塩基配列に対して、適合しない塩基への置換の操作を行なう塩基の個数を示すハミング距離を入力するハミング距離入力部と、
前記入力塩基配列の部分配列であって、前記所定長の長さを持ち異なる２つの部分配列と、その余の部分と、を特定する特定部と、
前記特定部で特定された部分配列とその余の部分とに、前記ハミング距離入力部で入力されたハミング距離を分割して割り当てる割当部と、
前記特定部で特定された２つの部分配列のうち、前記割当部で割り当てられたハミング距離で示される個数の塩基を適合しない塩基へ置換する操作を前記部分配列に対して行なって生成される塩基配列である置換塩基配列の総数が大きくない方を選択する選択部と、
前記選択部により選択された部分配列に対して、前記割当部で割り当てられたハミング距離をもつ置換塩基配列を生成する置換塩基配列生成部と、
前記置換塩基配列生成部で生成された置換塩基配列を検索キーとして前記索引を用いて検索を行なう検索部と、
を有する塩基配列検索装置。
【請求項２】
前記特定部は、
前記塩基配列入力部で入力された塩基配列の塩基数が前記所定長の２倍以下または２倍未満であれば、前記２つの部分配列のうちの一方の部分配列の端を前記入力塩基配列の一方の端と一致させ、前記２つの部分配列のうちの他方の部分配列の端を前記入力塩基配列の他方の端と一致させ、その余の部分が生じず特定されないことにする第一特定手段を有する請求項１に記載の塩基配列検索装置。
【請求項３】
前記特定部は、
前記塩基配列入力部で入力された塩基配列の塩基数が前記所定長の２倍より大であれば、前記２つの部分配列が重ならないことにして前記２つの部分配列を特定する第二特定手段を有する請求項１または２に記載の塩基配列検索装置。
【請求項４】
前記検索部での検索結果に基づいて、前記置換塩基配列を含んで遺伝子塩基配列に現れる塩基配列である類似候補塩基配列を取得する類似候補塩基配列取得部と、
前記類似候補塩基配列取得部で取得された類似候補塩基配列と前記入力塩基配列とのハミング距離が前記ハミング距離入力部に入力されたハミング距離と同じ、又はそれ未満であるかどうかを判定する判定部と、
を有する請求項１から３のいずれか一に記載の塩基配列検索装置。
【請求項５】
適合しない塩基の組を指定する不適合塩基組入力部を有し、不適合塩基組入力部に入力された塩基の組に基づいて、検索部で検索が行なわれ、また、ハミング距離が求められる請求項４に記載の塩基配列検索装置。
【請求項６】
前記塩基配列入力部に入力された塩基配列と類似塩基配列との対応する塩基の適合の分布を表わす分布情報を入力する適合分布入力部を有し、
前記判定部は、前記適合分布入力部で入力された分布情報が満たされているかどうかを判定する分布判定手段を有する請求項４または５のいずれか一に記載の塩基配列検索装置。
【請求項７】
前記適合分布入力部で入力される分布情報は、塩基配列と類似塩基配列との対応する塩基が連続して適合する長さの下限である請求項６に記載の塩基配列検索装置。
【請求項８】
前記塩基配列入力部に入力される塩基配列の長さは１５から６０であり、前記所定長は、１１から１４である請求項１から７のいずれか一に記載の塩基配列検索装置。
【請求項９】
遺伝子情報を表わす遺伝子塩基配列を格納したデータベースを検索するための索引であって、所定の長さである所定長の塩基配列が前記遺伝子塩基配列の中に出現する位置を検索するための索引、を用いて、入力される塩基配列と同じ長さで類似する塩基配列であり前記遺伝子塩基配列に出現する塩基配列である類似塩基配列を検索するための塩基配列検索方法であって、
前記所定長を超えるの長さの塩基配列を入力する塩基配列入力ステップと、
前記塩基配列入力部に入力された塩基配列である入力塩基配列に対して、適合しない塩基への置換の操作を行なう塩基の個数を示すハミング距離を入力するハミング距離入力ステップと、
前記入力塩基配列の部分配列であって、前記所定長の長さを持ち異なる２つの部分配列と、その余の部分と、を特定する特定ステップと、
前記特定ステップで特定された２つの部分配列とその余の部分とに、前記ハミング距離入力ステップにて入力されたハミング距離を分割して割り当てる割当ステップと、
前記特定ステップで特定された２つの部分配列のうち、前記割当部で割り当てられたハミング距離で示される個数の塩基を適合しない塩基へ置換する操作を前記部分配列に対して行なって生成される塩基配列である置換塩基配列の総数が大きくない方を選択する選択ステップと、
前記選択ステップにより選択された部分配列に対して、前記割当ステップにて割り当てられたハミング距離をもつ置換塩基配列を生成する置換塩基配列生成ステップと、
前記置換塩基配列生成ステップで生成された部分配列を検索キーとして前記索引を用いて検索を行なう検索ステップと、
を含む塩基配列検索方法。
【請求項１０】
アルファベットが一次元に配列した文字列を格納したデータベースを検索するための索引であり、所定の長さである所定長の文字列が前記データベースに格納された文字列の中に出現する位置を検索するための索引、を用いて、入力される文字列と同じ長さで類似する文字列であり前記前記データベースに格納された文字列に出現する文字列である類似文字列を検索するための文字列検索装置であって、
前記所定長を超える長さの文字列を入力する文字列入力部と、
前記文字列入力部に入力された文字列である入力文字列に対して、適合しないアルファベットへの置換の操作を行なうアルファベットの個数を示すハミング距離を入力するハミング距離入力部と、
前記入力文字列の部分文字列であって、前記所定長の長さを持ち異なる２つの部分文字列と、その余の部分と、を特定する特定部と、
前記特定部で特定された部分文字列とその余の部分とに、前記ハミング距離入力部で入力されたハミング距離を分割して割り当てる割当部と、
前記特定部で特定された２つの部分文字列のうち、前記割当部で割り当てられたハミング距離で示される個数のアルファベットを適合しないアルファベットへ置換する操作を前記部分文字列に対して行なって生成される文字列である置換文字列の総数が大きくない方を選択する選択部と、
前記選択部により選択された部分文字列に対して、前記割当部で割り当てられたハミング距離をもつ置換文字列を生成する置換文字列生成部と、
前記置換文字列生成部で生成された置換文字列を検索キーとして前記索引を用いて検索を行なう検索部と、
を有する文字列検索装置。
【請求項１１】
前記文字列は、ペプチド配列である請求項１０に記載の文字列検索装置。
【請求項１２】
遺伝子塩基配列中に繰り返して出現する前記所定長の塩基配列を蓄積するリピート配列蓄積部と、
前記リピート配列蓄積部に蓄積された塩基配列に、その塩基配列の前記遺伝子塩基配列中における出現位置を関連付けた情報であるリピート配列情報を蓄積するリピート配列情報蓄積部と、
を有し、
前記検索部は、
前記置換塩基配列が前記リピート配列蓄積部に蓄積されているかどうかを判定するリピート配列判定手段と、
前記リピート配列判定手段にて前記置換塩基配列が前記リピート配列蓄積部に蓄積されていると判定された場合には、前記リピート配列情報蓄積部に蓄積されたリピート配列情報に基づいて検索を行なうリピート配列検索手段と、
を有する請求項１から８のいずれか一に記載の塩基配列検索装置。
【請求項１３】
前記判定部にて、前記入力塩基配列と、前記類似候補塩基配列取得部により取得された類似候補塩基配列と、のハミング距離が前記ハミング距離入力部に入力されたハミング距離以下であると判定された場合に、前記入力塩基配列と、前記入力塩基配列と前記類似塩基配列とのハミング距離と、前記類似候補塩基配列と、を関連付けて蓄積する類似塩基配列蓄積部を有する請求項４から７のいずれか一に記載の塩基配列検索装置。
【請求項１４】
前記判定部にて、前記類似候補塩基配列取得部により取得された類似候補塩基配列と前記入力塩基配列とのハミング距離が前記ハミング距離入力部に入力されたハミング距離以下であると判定された場合に、前記塩基配列入力部により入力された塩基配列と前記類似候補塩基配列取得部で取得された類似候補塩基配列の会合率を計算する会合率計算部
を有する請求項４から７のいずれか一に記載の塩基配列検索装置。
【請求項１５】
前記所定長を超える長さの塩基配列を取得する塩基配列取得部と、
前記塩基配列取得部で取得された塩基配列の塩基のうち、所定の個数の塩基を置換して得られる塩基配列である無効果候補置換塩基配列を生成する無効果候補置換塩基配列生成部と、
前記無効果候補置換塩基配列生成部で生成された無効果候補置換塩基配列を請求項１４に記載の塩基配列検索装置に入力する無効果候補置換塩基配列入力部と、
所定のハミング距離を前記無効果候補置換塩基配列入力部が無効果候補置換塩基配列を入力した塩基配列検索装置に入力する第二ハミング距離入力部と、
前記無効果候補置換塩基配列生成部で生成された無効果候補置換塩基配列の中から、前記無効果候補置換塩基配列入力部による入力と前記第二ハミング距離入力部による入力とによって前記塩基配列検索装置より得られた会合率の低い塩基配列を選択する選択部と、
を備える無効果塩基配列生成装置。
【請求項１６】
前記所定長を超える長さの塩基配列を取得する第二塩基配列取得部と、
前記第二塩基配列取得部で取得された塩基配列の一部分である部分塩基配列を選択する部分塩基配列選択部と、
前記部分塩基配列選択部で選択された部分塩基配列を請求項４から８のいずれか一に記載の塩基配列検索装置に入力する部分塩基配列入力部と、
所定のハミング距離を前記部分塩基配列入力部が部分塩基配列を入力した塩基配列検索装置に入力する第三ハミング距離入力部と、
前記部分塩基配列入力部による入力と前記第三ハミング距離入力部によるの入力とによって前記塩基配列検索装置より得られた検索の結果に基づいて、前記第二塩基配列取得部により取得された塩基配列を前記遺伝子塩基配列にアラインメントするアラインメント部と、
を有する塩基配列アラインメント装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遺伝子情報を表わす遺伝子塩基配列を検索する装置及び方法に関する。
【背景技術】
【０００２】
ワトソンとクリックとによるＤＮＡ（Doexyribo Nucleic Acid）の構造の解明に基づき、塩基配列に基づく遺伝子情報の研究が発展している。ＤＮＡは、アデニン（Ａ）、シトシン（Ｃ）、グアニン（Ｇ）、チミン（Ｔ）の塩基のいずれかを含むヌクレオチドが並んでいる構造を持ち、細胞の核の中では、通常、ＡとＴ、ＧとＣ、の結合により、二重らせんの構造となっている。遺伝子を表現するＤＮＡのヌクレオチドの配列（以下、「遺伝子塩基配列」と呼ぶ）が、ＲＮＡ（Ribonucleic Acid）に転写され、スプライシングを経て、ｍＲＮＡ（messenger RNA）が生成され、たんぱく質の合成がされることが知られている。ＲＮＡは、Ｄ−リボースを糖成分として、アデニン（Ａ）、シトシン（Ｃ）、グアニン（Ｇ）、ウラシル（Ｕ）を塩基とする核酸である。【０００３】
ところで、近年、ＲＮＡ干渉と呼ばれる現象が発生することが知られるようになった。ＲＮＡ干渉とは、細胞内に特定の２本鎖ＲＮＡが存在することにより、特定の配列のｍＲＮＡが破壊され、遺伝子の発現が抑制される現象である。この現象は、最初、線虫の細胞を用いた実験で発見された。その後、この現象は、哺乳動物細胞でも起きることが知られるようになり、注目を集めることとなった。人為的にＲＮＡ干渉を起こすことにより、特定の遺伝子の働きを抑制することができ、その特定の遺伝子の働きを調べることができるからである。また、ＲＮＡ干渉を利用することにより、特定の遺伝子の働きを抑制する効果を発揮する薬を開発できる可能性も生まれてきた。【０００４】
図１は、ＲＮＡ干渉の過程の概略を示す図である。ＲＮＡ干渉は、以下のようなプロセスを経て発生すると考えられている。およそ２１から２３塩基対の長さのｓｉＲＮＡ（short interfering RNA）１０１がマルチ・タンパク質複合体と結合し、ＲＩＳＣ（RNA-induced silencing complex）１０２を形成する。ＲＩＳＣ（１０２）は、そのｓｉＲＮＡと相同性を持つｍＲＮＡ（１０３）と結合し、そのｍＲＮＡ（１０３）を断片１０４、１０５などへ分解することにより、そのｍＲＮＡ（１０３）が機能しなくなる。ここで、「ある塩基配列（Ｓ）と別の塩基配列（Ｔ）との間に相同性がある」とは、２つの塩基配列（Ｓ、Ｔ）が相補性を有しているか、または、不完全な相補性を有していることをいう。「相補性」とは、二つの塩基配列の全体において、ＡとＴ、ＧとＣ、ＡとＵとの対が完全に形成されていることをいう。したがって、相同性とは、二つの塩基配列の一部に、ＡとＴ、ＧとＣ、ＡとＵ以外の対が発生していることを意味する。なお、どのような場合に、二つの塩基配列の間に相補性を有する塩基対がどれだけの存在すれば、その二つの塩基配列が相同性を有すると判断されるかについて説明すると次のようになる。すなわち、ＲＮＡ干渉の場合には、８０％以上、好ましくは９０％以上、さらに好ましくは９５％以上の場合に、相同性を有すると判断される場合が多い。また、相補性を有する塩基対の割合のみならず、相補性を有する塩基列が塩基配列中にどれだけの個数連続して現れているかを考慮にいれて、二つの塩基配列の間の相同性の有無を判断することもある。また、ＡとＴ、ＧとＣ、ＡとＵとの３種類の相補性を有する塩基対に、ＧとＵとの対が形成される可能性もあることが知られているので、ＧとＵとの塩基対の存在も考慮に入れて相同性の有無を判断することもある。【０００５】
したがって、ＲＮＡ干渉を発生させ、目的とする遺伝子の働きを抑制するためには、ｓｉＲＮＡの配列を設計することが重要である。すなわち、目的とする遺伝子だけに現れ、他の遺伝子の塩基配列と相同性を持たない、ｓｉＲＮＡの配列を設計することが重要である。したがって、ｓｉＲＮＡの配列を設計する際には、ｓｉＲＮＡの配列に似た塩基配列を持つ遺伝子が目的とする遺伝子以外には存在しないことを確認することが必要となる。【０００６】
また、近年、マイクロアレイを用いた遺伝子解析や遺伝子診断などが実施されている。「マイクロアレイ」とは、長さが１５から６０塩基程度のオリゴＤＮＡをガラスなどの基板上に合成したＤＮＡチップの一種である（例えば、非特許文献１参照。）。【０００７】
図２は、マイクロアレイを用いた遺伝子解析や遺伝子診断などの過程を例示する。ガラスなどの基板上に合成したオリゴＤＮＡを持つマイクロアレイ２０１上に、蛍光色素などの標識２０３を付加されたＤＮＡ（２０２）を流すと、そのＤＮＡと相補性あるいは相同性を持つマイクロアレイ上のオリゴＤＮＡとが結合（ハイブリダイズ）する（符号２０４）。どの場所のオリゴＤＮＡとハイブリダイズしたかを、標識の蛍光色素による蛍光を検出することにより、ＤＮＡ（２０２）の種類などを判定する。図２では、マイクロアレイ上に数本のオリゴＤＮＡしか示されていないが、実際のマイクロアレイは、縦横の長さが０．５インチ程度の領域に万のオーダーでオリゴＤＮＡが配置される。【０００８】
したがって、どのような塩基配列を持つオリゴＤＮＡをマイクロアレイに配置するかを決めることは、マイクロアレイの設計において、極めて重要な工程である。【０００９】
従来においては、似た塩基配列が存在するかどうかの検出は、ＢＬＡＳＴ（例えば非特許文献２参照。）と呼ばれるソフトウェアや、Ｓｍｉｔｈ−Ｗａｔｅｒｍａｎと呼ばれるアルゴリズム（例えば、非特許文献３参照。）を用いた、遺伝子情報を表わす遺伝子塩基配列を格納したデータベースの検索により行なわれている場合が多い。
【非特許文献１】杉本直己著、"遺伝子化学"、１９ページ、株式会社化学同人発行、２００２年
【非特許文献２】Ｓ．Ｆ．Ａｌｔｓｃｈｕｌ，Ｗ．Ｇｉｓｈ，Ｗ．Ｍｉｌｌｅｒ，Ｅ．Ｗ．Ｍｙｅｒｓ，ａｎｄ  Ｄ．Ｊ．  Ｌｉｐｍａｎ，“Ｂａｓｉｃ  ｌｏｃａｌ  ａｌｉｇｎｍｅｎｔ  ｓｅａｒｃｈ  ｔｏｏｌ”，Ｊ．Ｍｏｌ．Ｂｉｏｌ．，２１５，４０３−４１０，１９９０
【非特許文献３】Ｔ．Ｆ．Ｓｍｉｔｈ，ａｎｄ  Ｍ．Ｓ．Ｗａｔｅｒｍａｎ，“Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  ｏｆ  ｃｏｍｍｏｎ  ｍｏｌｅｃｕｌａｒ  ｓｕｂｓｅｑｕｅｎｃｅｓ”，Ｊ．Ｍｏｌ．Ｂｉｏｌ．，１４７，１９５−１９７，１９８１
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、ＢＬＡＳＴを使用する方法では、似た塩基配列の存在を見落としてしまうという課題がある。ＢＬＡＳＴは、通常、７塩基が連続して同じになる部分を用いて検索が行なわれる。このため、１９塩基の塩基配列が与えられた場合、例えば、図３の×の位置で塩基の不一致あるいは不適合がある塩基配列を見つけることができず、似た塩基配列の存在を見落としてしまう。【００１１】
また、Ｓｍｉｔｈ−Ｗａｔｅｒｍａｎアルゴリズムを用いれば、似た塩基配列の存在を正しく検出することが可能であるが、必要とされる計算量が大きく、検出までに時間がかかるという課題がある。【００１２】
そこで、本発明は、似た塩基配列の存在を少ない計算量で検出することができる装置及び方法などを提供することを目的とする。
【課題を解決するための手段】
【００１３】
かかる目的を達成するために、本発明では、入力された塩基配列から所定の長さの二つの部分配列とその余の部分とを特定して、対応する塩基が適合しない塩基への置換を行なう塩基の個数であるハミング距離を、それらの部分配列とその余の部分とに分割して割り当てて、２つの部分配列のうち、それぞれの部分配列に対して、割り当てられたハミング距離の個数の塩基を適合しない塩基に置換する操作を加えて得られる塩基配列の総数が大きくないほうを選択して、検索を行なうようにする。【００１４】
これにより、検索に用いる塩基配列であって塩基を置換して生成する塩基配列の数を少なくすることができ、検索のために必要となる計算量を小さくすることができ、課題が解決される。また、ハミング距離が所定の値と同じまたは所定の値未満となる、似た塩基配列の存在を見落とすこともなくなるので、課題が解決される。
【発明の効果】
【００１５】
本発明に係る塩基配列検索装置及び塩基配列検索方法によれば、検索のために必要となる計算量を小さくすることができ、また、ハミング距離が所定の値と同じまたは所定の値未満となる、似た塩基配列の存在を見落とすことも無い。
【発明を実施するための最良の形態】
【００１６】
以下、本発明を実施するための最良の形態について、図を用いて実施形態として説明する。なお、本発明は、これら実施の形態に何ら限定されるものではなく、その要旨を逸脱しない範囲において、種々なる態様で実施し得る。【００１７】
（実施形態１：主に請求項１、９について説明する）【００１８】
本発明の実施形態１として、遺伝子情報を表わす遺伝子塩基配列を格納したデータベースにおける所定長の塩基配列の出現を検索するための索引を用いて、類似塩基配列を検索するための塩基配列検索装置として、入力された塩基配列から所定の長さの二つの部分配列とその余の部分とを特定し、対応する塩基が適合しない塩基への置換を行なう塩基の個数であるハミング距離を、それらの部分配列とその余の部分とに分割して割り当てて、２つの部分配列のうち、それぞれの部分配列に対して、割り当てられたハミング距離の個数の塩基を適合しない塩基に置換する操作を加えて得られる塩基配列の総数が大きくないほうを選択して検索を行なう塩基配列検索装置について説明する。【００１９】
ここに「対応する塩基が適合する」とは、対応する二つの塩基が、所定の二項関係を満たすことをいう。ここでいう二項関係とは、多くの場合、対を構成する塩基が合い等しいことをいう。すなわち、数学の集合論の言葉で説明すれば、二項関係が反射律のみを満たす場合に該当する。また、塩基のＧとＵとが結合しやすいことを考慮に入れた二項関係を用いてもよい。【００２０】
なお、ここに、「所定長」とは所定の長さである。この所定の長さは、遺伝子塩基配列を格納したデータベースの検索を行なうための索引が受け付けることができる塩基配列の長さである。例えば、ＢＬＡＳＴの場合には、通常は、所定長は７となる。また、「類似塩基配列」とは、入力された塩基配列と同じ長さで類似する塩基配列であって、前記遺伝子塩基配列に出現する塩基配列である。「類似する」とは、例えば、後で説明するように、入力された塩基配列とのハミング距離が与えられた値になることである。また、「前記遺伝子塩基配列」とは、データベースに格納されている塩基配列である。なお、索引の構造によっては、所定長は複数存在する場合がある。【００２１】
このような塩基配列検索装置は、例えば、ＷＥＢブラウザに入力された塩基配列と類似の程度（例えば、ハミング距離）を受け取り、遺伝子塩基配列を格納したデータベースに対して問い合わせなどを発行して処理を行ない、結果を前記ＷＥＢブラウザに返信するサーバ装置として実現が可能である。したがって、本発明に係る塩基配列検索装置の構成要素である各部、各手段は、ハードウェア、ソフトウェア、ハードウェアとソフトウェア（プログラム）の両者、のいずれかによって構成することが可能である。たとえば、これらを実現する一例として、計算機を利用する場合には、ＣＰＵ、メモリ、バス、インターフェース、周辺装置などから構成されるハードウェアと、これらのハードウェア上にて実行可能なソフトウェアを挙げることができる。【００２２】
（実施形態１：構成）
図４は、本発明の実施形態１に係る塩基配列検索装置の機能ブロック図を例示する。塩基配列検索装置４００は、塩基配列入力部４０１と、ハミング距離入力部４０２と、特定部４０３と、割当部４０４と、選択部４０５と、置換塩基配列生成部４０６と、検索部４０７と、を有する。【００２３】
「塩基配列入力部」４０１は、所定長を超える長さの塩基配列を入力する。例えば、ＷＥＢブラウザから入力された塩基配列を示す情報を受信する。【００２４】
「ハミング距離入力部」４０２は、入力塩基配列に対して、ハミング距離を入力する。例えば、ＷＥＢブラウザから入力された数値を受信する。ここに、「入力塩基配列」とは、塩基配列入力部４０１に入力された塩基配列である。また、ハミング距離とは、適合しない塩基への置換の操作を行なう塩基の個数を示す値である。ハミング距離は、２つの同じ長さの塩基配列に対して定義され、対応する塩基が適合しない数であり、１つの塩基配列に対してハミング距離を指定することにより、その塩基配列のうち、ハミング距離の個数の塩基を適合しない塩基に置換して得られる塩基配列の集合が定義できる。【００２５】
ハミング距離の例を挙げる。例えば、図５には、１９の塩基からなる塩基配列が上下に並んでいるが、「×」で示される３箇所に対応する塩基が適合していないので、ハミング距離は３となる。図６は、ハミング距離の定義を示す。ＳとＴがｎ個の塩基からなる塩基配列として、Ｓｉをｉ番目の塩基とするときのＳとＴのハミング距離ｄＨ（Ｓ，Ｔ）が定義されている。なお、Ｕを集合とするとき、｜Ｕ｜により集合の要素の数を表わすとし、≠は、両辺の塩基が適合しないことを意味する（例えば、同じでないことを意味する）。したがって、ハミング距離は、負でない整数となる。【００２６】
「特定部」４０３は、入力塩基配列の部分配列であって、所定長の長さを持ち、異なる２つの部分配列と、その余の部分と、を特定する。２つの部分配列は共通部分があってもよい。また、場合によっては、その余の部分は無くてもよい。【００２７】
図７は、特定部４０３により特定される２つの部分配列とその余の部分とを例示する。図７（１）においては、第一の部分配列７１１と第二の部分配列７１２とが共通部分を持たないように入力塩基配列７１０に存在し、入力塩基配列の両端と中央部分に、その余の部分７１３、７１４、７１５がある。図７（２）においては、第一の部分配列７２１と第二の部分配列７２４が入力塩基配列７２０の略中央に共通部分を有し、入力塩基配列７２０の端の部分にその余の部分７２３、７２４がある。図７（３）においては、第一の部分配列７３１が入力塩基配列７３０の左端から伸び、また、第二の部分配列７３２が入力塩基配列７３０の右端から伸び、第一の部分配列７３１と第二の部分配列７３２は、入力塩基配列７３０の略中央部分で共通部分を有している。入力塩基配列がある所定長の２倍を超える場合には、図７（４）に例示されるように、入力塩基配列７４０の略中央がその余の部分７４３となる。なお、第一の部分配列と第二の部分配列の長さは所定長であるが、索引の構造によっては上述のように所定長が複数存在する場合があり、そのような場合には、第一の部分配列の長さと第二の部分配列の長さは同じであってもよいし、異なっていてもよい。【００２８】
「割当部」４０４は、特定部４０３で特定された部分配列とその余の部分とに、ハミング距離入力部４０２で入力されたハミング距離を分割して割り当てる。ここに、「ハミング距離を分割して割り当てる」とは、ハミング距離を負でない整数に分割して、分割で得られた整数を部分配列とその余の部分に割り振ることである。したがって、割り振られた値の総和は、ハミング距離になる。このような処理は、プログラムにより容易に実現することができる。例えば、部分配列とその余の部分の個数分のループを入れ子にするプログラムにより実現することができ、全ての割り振りを得ることができる。【００２９】
図１７は、ハミング距離を分割して割り当てるプログラムの例をＣ言語で記述した例を示す。この例では、部分配列が数字で特定されるとする。例えば、部分配列の個数がＰであれば、Ｐ、Ｐ−１、Ｐ−２、…、１でそれぞれの部分配列が特定されるとし、所定の配列のＰ番目、Ｐ−１番目、…、１番目の要素が、部分配列に対応しているとする。このとき、distributeHammingDistanceの第１引数には、部分配列の個数Ｐを渡し、第２引数には、第１引数に渡された個数の部分配列に割り当てるハミング距離Ｈを渡すと、Ｐ、Ｐ−１、Ｐ−２、…、１でそれぞれ特定される部分配列にハミング距離が割り当てられることになる。なお、distributeHammingDistanceの第３引数には部分配列の総数を、第４引数には、所定の配列を渡す。DistributeHammingDistanceの動作を具体的に説明すると次のようになる。すなわち、所定の配列がｖｅｃで指し示されるとすると、distributeHammingDistanceが一回呼ばれるたびに、ｖｅｃ［Ｐ］、ｖｅｃ［Ｐ−１］、ｖｅｃ［Ｐ−２］、…ｖｅｃ［１］のどれかに、部分配列に割り当てられたハミング距離が代入され、distributeHammingDistanceの再帰呼び出しがされる。例えば、distributeHammingDistanceの或る呼び出しにおいてｖｅｃ［ｑ］に、部分配列ｑに割り当てられたハミング距離が代入されると、ｑが１でなければ、distributeHammingDistanceの第１引数をｑ−１にして再帰呼び出しが行なわれる。最後にｖｅｃ［１］に、ハミング距離が代入されると、全ての部分配列に対するハミング距離の割り当ての一つが完成するので、ｖｅｃ［Ｐ］、ｖｅｃ［Ｐ−１］、ｖｅｃ［Ｐ−２］、…ｖｅｃ［１］の値がｐｒｉｎｔｆという関数を用いて出力される。もちろん、ｐｒｉｎｔｆによる出力を行なう代わりに、ハミング距離の割り当てをメモリに構成されるデータ構造に格納して、選択部４０５がそのデータ構造を参照し、後に説明されるように、部分配列の選択が行なえるようにするのは、当業者にとって容易なことである。【００３０】
なお、図１７のプログラムにおいて、ｉｎｔは、整数のデータ型を表わし、例えば、ｉｎｔ  ｈ；は、ｈという変数が整数のデータ型の値をとることを意味する。また、ｆｏｒ（Ｓ１；Ｓ２；Ｓ３）｛Ｓ４｝は、まずＳ１を実行し、Ｓ２の条件が成り立つ限り、Ｓ４を実行した後にＳ３を実行することを繰り返すことを表わす。なお、DistributeHammingDistance は、図１７に例示されているが、念のために記載すると以下のようになる。distributeHammingDistance(int P, int H, int nSize, int* vec) { int h; if (P==1) {vec[1] = h; /* 全ての部分へのハミング距離の割り当ての一つが完成したので vec に格納されたハミング距離を出力する */ for (int i = 1; i ＜= nSize; i = i + 1) { printf("Part %d th: %d", i, vec[i]); /* セパレータ又はターミネータを出力する */ if (i != nSize) { /* セパレータとしてカンマを出力する */ printf(", "); } else { /* ターミネータとして改行を出力する */ printf("\n"); } } else { for (h = 0; h ＜= H; h = h + 1) { vec[P] = h; distributeHammingDistance(P - 1, H - h, nSize, vec); } } }と定義される。このように、リカーシブコールを行なうことにより、部分配列とその余の部分の個数分のループを入れ子にすることができる。【００３１】
図８は、図７の（１）から（４）の場合に対応して、割当部４０４によるハミング距離の割り振りを説明するための図である。図８（１）において、入力塩基配列の左端の部分から（すなわち、その余の部分、第一の部分配列、その余の部分、第二の部分配列、その余の部分）、ｍ１、ｍ２、ｍ３、ｍ４、ｍ５という値が割り振られたとすると、ｍ１、ｍ２、ｍ３、ｍ４、ｍ５の和が入力ハミング距離となる。ここに、「入力ハミング距離」とは、ハミング距離入力部４０２に入力されたハミング距離である。【００３２】
同様に、図８（２）においても、入力塩基配列の左端の部分から（すなわち、その余の部分、第一の部分配列の左部分、共通部分、第二の部分配列の右部分、その余の部分）、ｍ１、ｍ２、ｍ３、ｍ４、ｍ５が割り振られたとすると、これらの値の和が入力ハミング距離となる。【００３３】
図８（３）においては、入力塩基配列の左端の部分から（すなわち、第一の部分配列の左部分、共通部分、第二の部分配列の右部分）、ｍ１、ｍ２、ｍ３が割り振られたとすると、これら３つの値の和が入力ハミング距離となる。【００３４】
図８（４）においては、入力塩基配列の左端の部分から（すなわち、第一の部分配列、その余の部分、第二の部分配列）、ｍ１、ｍ２、ｍ３が割り振られたとすると、これら３つの値の和が入力ハミング距離となる。【００３５】
「選択部」４０５は、特定部４０３で特定された２つの部分配列のうち、前記割当部で割り当てられたハミング距離で示される個数の塩基を適合しない塩基へ置換する操作を前記部分配列に対して行なって生成される塩基配列である置換塩基配列の総数が大きくない方を選択する。この総数は、式：（適合しない塩基の数）（ハミング距離）×（所定長）Ｃ（ハミング距離）により計算でき、この計算結果に基づいて選択を行なう。しかし、多くの場合には、割当部４０４で割り当てられたハミング距離の大きくない方の部分配列を選択することになる。すなわち、図８（１）の場合には、ｍ２とｍ４とを比較して、例えば、ｍ２の方が大きくなければ、第一の部分配列を選択する。逆に、ｍ４の方が小さければ、第二の部分配列を選択する。ただし、例えば、所定長が４である２つの部分配列に対して、一方にはハミング距離として３が、他方には４が割り当てられたとすると、一方の部分配列の置換塩基配列の総数は次のように計算される。すなわち、適合しない塩基とは、異なる塩基であるとすると、塩基の種類は４であるので、ある塩基と異なる塩基の種類の数は（４−１）となり、一方の部分配列の置換塩基配列の総数は、（４−１）３４Ｃ３＝１０８である。しかしながら、他方の部分配列の置換塩基配列の総数は、(４−１)４４Ｃ４＝８１となり、割り当てられたハミング距離の大きな他方の置換塩基配列の数が少なくなる場合がある。したがって置換塩基配列の総数の大小とハミング距離の大小とは一致しない場合があり、注意が必要である。なお、以下では、説明を簡単にするために、割当部４０４で割り当てられたハミング距離が大きくない場合が、置換塩基配列の総数が大きくないと仮定して説明を行なう。【００３６】
同様に図８（２）の場合には、ｍ２＋ｍ３とｍ３＋ｍ４とを比較して、例えば、ｍ２＋ｍ３の方が大きくなければ、第一の部分配列を選択する。逆に、ｍ３＋ｍ４の方が小さければ、第二の部分配列を選択する。【００３７】
また、図８（３）の場合には、ｍ１＋ｍ２とｍ２＋ｍ３とを比較して、例えば、ｍ１＋ｍ２の方が大きくなければ第一の部分配列を選択する。逆に、ｍ２＋ｍ３の方が小さければ、第二の部分配列を選択する。【００３８】
また、図８（４）の場合には、ｍ１とｍ３とを比較して、例えば、ｍ１の方が大きくなければ、第一の部分配列を選択する。逆に、ｍ３の方が小さければ、第二の部分配列を選択する。【００３９】
図９は、入力ハミング距離が３であるとき、図７（４）のように部分配列とその余の部分が特定された場合の割当部４０４での割り振りと、選択部４０５による選択を示す。図９では、説明を簡略化するために、ｍ１、ｍ２、ｍ３の和が入力ハミング距離３と等しい場合について説明している。ｍ１、ｍ２、ｍ３の和が３になる組合せは、１０通りあるが、選択部４０５で、例えばｍ１≦ｍ３となる選択が行なわれると、選択の結果として６通りの組み合わせが得られる。これからさらに、ｍ１の値の組み合せについて重複を除くと、０と１との組み合わせになる。同様のことが、第二の部分配列とｍ３についても言える。結果として、ｍ３についても、０と１とになる。なお、ｍ１＝ｍ３の場合は除かれるので、ｍ１＞ｍ３となる選択が行なわれる場合の数は、ｍ１≦ｍ３となる選択が行なわれる場合の数よりも少なくなる。このことは、後に説明する置換塩基配列生成部４０６と検索部４０７との動作により、ｍ１が０と１との場合について、また、ｍ３についても０と１との場合について、置換塩基配列生成部４０６で置換塩基配列を生成して検索部で索引を参照して検索を行なえば、ｍ１、ｍ２、ｍ３の和が３になる１０通りの場合についての検索がカバーされることを意味する。【００４０】
また、ハミング距離入力部に入力されたハミング距離が複数の部分に割り当てられ、ｍ１≦ｍ３、ｍ１＞ｍ３のように大きくない方の選択が行なわれるので、上記のパラグラフの記述により得られるｍ１、ｍ３の値の組み合わせは、ハミング距離入力部に入力されたハミング距離未満であっても得られるものである。したがって、ハミング距離Ｈの場合について選択を行なうと、Ｈ未満のハミング距離がハミング距離入力部に入力された場合についての選択も行なわれる。【００４１】
したがって、ｍ１、ｍ２、ｍ３の和が入力ハミング距離３未満である場合についても同様に処理ができる。このように、本発明では、ｍ１、ｍ２、ｍ３の和が入力ハミング距離が与えられた値のみならず、その値未満の場合の処理を一回の処理で実行することができる。【００４２】
図１０は、同じく入力ハミング距離が３であるとき、図７（３）のように部分配列とその余の部分が特定された場合の割当部４０４での割り振りと、選択部４０５による選択を示す。図１０でも、説明を簡略化するために、ｍ１、ｍ２、ｍ３の和が入力ハミング距離３と等しい場合について説明している。ｍ１、ｍ２、ｍ３の和が３になる組み合せは、同じく１０通りであるが、選択部４０５でｍ１＋ｍ２≦ｍ２＋ｍ３となる選択が行なわれると、選択の結果として、６通りの組み合せが得られる。これらの組み合わせから第一の部分配列に割り振られたｍ１＋ｍ２の値について重複を除くと、０、１、２、３の４通りが得られる。同じことが第二の部分配列とｍ２＋ｍ３についても言える。ただし、ｍ１＋ｍ２＝ｍ２＋ｍ３となる場合が除かれるので、ｍ１＋ｍ２＞ｍ２＋ｍ3となる選択が行なわれる場合の数は、ｍ１＋ｍ２≦ｍ２＋ｍ3となる選択がされる場合の数よりも少なくなる。この結果、ｍ２＋ｍ３については、０と１との２通りが得られる。このことは、後に説明する置換塩基配列生成部４０６と検索部４０７との動作により、ｍ１＋ｍ２が０、１、２、３の場合について、また、ｍ２＋ｍ３についても０と１との場合について、置換塩基配列生成部４０６で置換塩基配列を生成して検索部で索引を参照して検索を行なえば、ｍ１、ｍ２、ｍ３の和が３になる１０通りの場合についての検索がカバーされることを意味する。【００４３】
また、上述したのと同じように、ハミング距離入力部に入力されたハミング距離が複数の部分に割り当てられ、ｍ１＋ｍ２＞ｍ２＋ｍ3、ｍ１＋ｍ２≦ｍ２＋ｍ3のように大きくない方の選択が行なわれるので、上記のパラグラフの記述により得られるｍ１＋ｍ２、ｍ２＋ｍ３の値の組み合わせは、ハミング距離入力部に入力されたハミング距離未満であっても得られるものである。したがって、ハミング距離Ｈの場合について選択を行なうと、Ｈ未満のハミング距離がハミング距離入力部に入力された場合についての選択も行なわれる。【００４４】
「置換塩基配列生成部」４０６は、選択部４０５により選択された部分配列に対して、割当部４０４で割り当てられたハミング距離をもつ置換塩基配列を生成する。すなわち、選択部４０５により選択された部分配列の塩基のうち、割当部４０４で割り当てられたハミング距離で示される個数の塩基を適合しない塩基に置換することを行ない、置換塩基配列を生成する。例えば、図９の場合には、第一の部分配列について、ハミング距離が０と１となる部分配列が置換塩基配列として生成される。また、第二の部分配列についても、ハミング距離が０と１となる部分配列が置換塩基配列として生成される。ハミング距離が０であれば、第一の部分配列そのものであり、ハミング距離が１であれば、第一の部分配列の塩基のうちの任意の１つを、適合しない塩基に置き換えて置換塩基配列が生成される。【００４５】
同様に図１０の場合には、第一の部分配列について、ハミング距離が０、１、２、３の置換塩基配列として生成される。また、第二の部分配列についても、ハミング距離が０と１となる部分配列が置換塩基配列として生成される。この場合、入力ハミング距離が３であり、また、ハミング距離が３の置換塩基配列を生成しなければいけないのは、効率が悪いように見える。しかし、３が割り振られたのは、ｍ２であるので、第一の部分配列と第二の部分配列との共通部分に対して、ハミング距離が３となる置換塩基配列を生成すればよい。もし、その共通部分の長さが短ければ、ハミング距離が３となる置換塩基配列の総数は限られたものとなる。このように第一の部分配列と第二の部分配列とが共通部分を持つ場合には、共通部分とそうでない部分とに割り振られたハミング距離を考慮して、共通部分とそうでない部分に個別に置換塩基配列を生成することにより、置換塩基配列の生成の効率を上げることができる。【００４６】
置換塩基配列を生成するプログラムは容易に作成することができ、例えば、ループを入れ子にしたプログラムを作成し、外側のループにより、塩基を適合しない塩基に置換する部分配列の位置を特定し、外側のループにより特定された位置の塩基を適合しない塩基に置換することを内側のループにより行なうようにすればよい。所定長をＬとし、塩基が異なるときを適合しないと定義すれば、図９の場合には、１＋３ＬＣ１通りの置換塩基配列が生成される。図１０の場合には、１＋３ＬＣ１＋３２ＬＣ２＋３３ＬＣ３通りの置換塩基配列が生成されるが、この生成に必要な計算量は、一般にＬは入力塩基配列の長さの値よりも小さいので、入力塩基配列とハミング距離が３となる塩基配列の全てを求める計算量より小さい。【００４７】
図１８は、配列Ｓにより長さがＬの部分配列に２というハミング距離が割り当てられた場合に、その部分配列の置換塩基配列を生成するプログラムを例示する。このプログラムでは、配列の添え字は０から始まり、Ｓ［０］、Ｓ［１］、…、Ｓ［Ｌ−１］に塩基を示すＡ、Ｃ、Ｇ、Ｔのいずれかのシンボルが格納されているとする。また、例えば、ｆｏｒｅａｃｈ  ａ１  ｉｎ  ｛Ａ，Ｃ，Ｇ，Ｔ｝  ｛Ｓ｝は、変数ａ１の値をＡ，Ｃ，Ｇ，Ｔに次々に変化させながら、Ｓを実行することを表わすとしている。図１８において、ｆｏｒ（ｌ１＝０；ｌ１＜Ｌ；ｌ１＝ｌ１＋１）とｆｏｒ（ｌ２＝０；ｌ２＜Ｌ；ｌ２＝ｌ２＋１）とが上記の「外側のループ」を表わし、ｆｏｒｅａｃｈ  ａ１  ｉｎ  ｛Ａ，Ｃ，Ｇ，Ｔ｝とｆｏｒｅａｃｈ  ａ２  ｉｎ  ｛Ａ，Ｃ，Ｇ，Ｔ｝とが上記の「内側のループ」を表わしている。図１８にプログラムが示されているが、念のために明細書にもそのプログラムを記しておく。for (l1 = 0; l1 ＜ L; l1 = l1 + 1) { for (l2 = l1 + 1; l2 ＜ L; l2 = l2 + 1) { foreach a1 in {A, C, G, T} { if (S[l1] != a1 ) { foreach a2 in {A, C, G, T} { if (S[l2] != a2) { S のl1番目の塩基をa1に置換し、Sのl2番目の塩基をa2に置換して得られる置換塩基配列を生成; } } } } } }。【００４８】
「検索部」４０７は、置換塩基配列生成部で生成された置換塩基配列をキーとして前記索引を用いて検索を行なう。多くの場合、索引はハッシュの手法を用いて実現されている。「前記索引」とは、所定長の塩基配列の、遺伝子配列を格納したデータベースにおける出現を検索するための索引である。このような索引による検索により、一般には、置換塩基配列が出現する位置情報（例えば、置換塩基配列の端の塩基が、ＤＮＡの５´端から何番目の位置の塩基になるかを示す情報）が得られる。【００４９】
もし、塩基配列検索装置が遺伝子塩基配列を格納したデータベースを備えていれば、検索部４０７は、そのデータベースに対して問い合わせを行なう。また、他のサーバであって、そのようなデータベースを備えているサーバがあれば、検索部４０７はそのサーバに問い合わせを送信して、結果を受信するようになっていてもよい。【００５０】
（実施形態１：処理の流れ）
図１１は、本実施形態に係る図４の塩基配列検索装置の処理の流れ図を例示する。ステップＳ１１０１において、塩基配列入力部４０１などにより、塩基配列を入力する（塩基配列入力ステップ）。ステップＳ１１０２において、ハミング距離入力部４０２などにより、ハミング距離を入力する（ハミング距離入力ステップ）。ステップＳ１１０３において、特定部４０３などにより、２つの部分配列とその余の部分とを特定する（特定ステップ）。ステップＳ１１０４において、割当部４０４などにより、入力されたハミング距離を分割して割り当てる（割当ステップ）。ステップＳ１１０５において、選択部４０５などにより、割当ステップで割り当てられたハミング距離を有する置換塩基配列の総数の大きくない方の部分配列を重複が発生しないように選択する（選択ステップ）。ステップＳ１１０６において、置換塩基配列生成部４０６などにより、置換塩基配列を生成する（置換塩基配列生成ステップ）。ステップＳ１１０７において、検索部４０７などにより、検索を行なう（検索ステップ）。【００５１】
したがって、塩基配列検索装置は、塩基配列入力ステップ、ハミング距離入力ステップ、特定ステップ、割当ステップ、選択ステップ、置換塩基配列生成ステップ、検索ステップを含む塩基配列検索方法を使用するための装置とみなすこともできる。【００５２】
なお、図１１に例示された流れ図は一例であり、ステップＳ１１０１で入力された塩基配列の一つについて、ステップＳ１１０２で入力されるべきハミング距離を０、１、２、３、４などと変化させながら、その他のステップを繰り返し実行してもよい。また、ステップＳ１１０１を行なった後でステップＳ１１０３を行ない、ステップＳ１１０２を実行して、その他のステップを実行するようになっていてもよい。入力するハミング距離を０、１、２、３、４などと変化させながら、ステップＳ１１０１からステップＳ１１０４までを実行した後に、まとめてステップＳ１１０５以下を実行するようにしてもよい。このようにすることにより、同じ部分配列を用いた検索を再度繰り返すことなく、効率よく計算を進めることができる。【００５３】
（実施形態１：主な効果）
本実施形態により、検索のために必要となる計算量を小さくすることができ、また、ハミング距離が所定の値、もしくはそれ以下、もしくは任意の値の組み合わせとなる、似た塩基配列を漏れなく検索することができる。【００５４】
なお、図４の機能ブロック図により表わされる塩基配列検索装置の構成は、ハードウェアとしては、任意の計算機のＣＰＵ、メモリ、その他のＬＳＩなどにより実現することができる。また、ソフトウェアとしては、メモリにロードされたプログラムなどにより実現することができる。また、ハードウェアとソフトウェアとの連携により実現することもできる。特にソフトウェアが用いられて実現される場合には、そのようなソフトウェアを構成するプログラムを、各種の媒体に記録しておき、必要に応じて塩基配列検索装置を実現するための計算機に機械的に読み取られるようにすることができる。ここで、「媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、フラッシュディスク等の任意の「可搬用の物理媒体」や、各種計算機システムに内蔵されるＲＯＭ、ＲＡＭ、ＨＤ等の任意の「固定用の物理媒体」、あるいはＬＡＮ、ＷＡＮ、インターネットに代表されるネットワークを介してプログラムを送信する場合の通信回線や搬送波のように短期にプログラムを保持する「通信媒体」を含むものとする。なお、ここにいう計算機とは、メインフレーム計算機に限定されることはなく、ワークステーションやパーソナルコンピュータなどの情報処理装置であってもよい。また、そのような情報処理装置には、プリンタやスキャナなどの周辺装置がさらに接続されていてもよい。【００５５】
また、「プログラム」とは、任意の言語や記述方法にて記述されたデータ処理方法であり、ソースコードやバイナリコート等の形式を問わない。なお、「プログラム」は必ずしも単一的に構成されるものに限られず、複数のモジュールやライブラリとして分散構成されるものや、オペレーティングシステムに代表される別個のプログラムと協同してその機能を達成するものをも含む。なお、塩基配列検索装置において媒体を読み取るための具体的な構成、読み取り手段、あるいは、読み取り後のインストール手順等は、周知の構成や手順を用いることができる。例えば、本実施形態に係る塩基配列検索装置の、塩基配列入力部４０１と、ハミング距離入力部４０２と、特定部４０３と、割当部４０４と、選択部４０５と、置換塩基配列生成部４０６と、検索部４０７とは、それぞれプログラムを構成するモジュールとして実現することができる。そのようなモジュールは、当然、計算機のＣＰＵにより制御を受けることとなる。【００５６】
本明細書では図示を省略しているが、塩基配列検索装置は、遺伝子の塩基配列情報等に関する外部データベースの検索などを行なうための外部プログラム等を提供する外部システムに、インターネット等の通信網を介して通信可能に接続された構成であってもよい。かかる構成により、外部プログラムを実行するウェブサイトが提供される。外部システムは、ＷＥＢサーバやＡＳＰサーバ等として構成されてもよい。例えば、塩基配列検索装置が外部システムに通信可能に接続されてもよい。通信網の構成は特には限定されないが、例えば、ルータ等の通信装置や専用線等の有線又は無線の通信回線により構成される。【００５７】
（実施形態２：主に請求項２について説明する）【００５８】
図１２は、本発明の実施形態２に係る塩基配列検索装置の機能ブロック図を例示する。塩基配列検索装置１２００は、塩基配列入力部４０１と、ハミング距離入力部４０２と、特定部４０３と、割当部４０４と、選択部４０５と、置換塩基配列生成部４０６と、検索部４０７と、を有し、特定部４０３は、第一特定手段１２０１を有している。したがって、本実施形態に係る塩基配列検索装置は、実施形態１に係る塩基配列検索装置の特定部が第一特定手段を有した構成となっている。【００５９】
「第一特定手段」１２０１は、塩基配列入力部で入力された塩基配列の塩基数が前記所定長の２倍以下または２倍未満であれば、前記２つの部分配列のうち一方の部分配列の端を前記入力塩基配列の他方の端と一致させ、その余の部分が生じず特定されないことにする。その余の部分が生じず特定されないことにより、割当部では、その余の部分にハミング距離を割り当てることはしないこととなる。【００６０】
すなわち、第一特定手段は、図７（３）のように第一の部分配列と第二の部分配列とを特定する。したがって、このような場合は実施形態１について既に説明されているので、以後の説明は省略する。【００６１】
（実施形態３：主に請求項３について説明する）【００６２】
図１３は、本発明の実施形態３に係る塩基配列検索装置の機能ブロック図を例示する。塩基配列検索装置１３００は、塩基配列入力部４０１と、ハミング距離入力部４０２と、特定部４０３と、割当部４０４と、選択部４０５と、置換塩基配列生成部４０６と、検索部４０７と、を有し、特定部４０３は、第二特定手段１３０１を有している。また、特定部４０３は、実施形態２で説明した第一特定手段を有していてもよい。したがって、本実施形態に係る塩基配列検索装置は、実施形態１または２に係る塩基配列検索装置の特定部が第二特定手段を有した構成となっている。【００６３】
「第二特定手段」１３０１は、塩基配列入力部で入力された塩基配列の塩基数が前記所定長の２倍より大であれば、前記２つの部分配列が重ならないことにして、前記２つの部分配列を特定する。この場合、その余の部分が一つになるようにしてもよいし、２つになるようにしてもよい。例えば、２つの部分配列が入力塩基配列の左右の端に配置されるように特定したり、２つの部分配列が連接されるように入力塩基配列を特定したりする。【００６４】
すなわち、第二特定手段は、図７（４）のように第一の部分配列と第二の部分配列とを特定する。したがって、このような場合は実施形態１について既に説明されているので、以後の説明は省略する。【００６５】
（実施形態４：主に請求項４について説明する）【００６６】
本発明の実施形態４として、検索部での検索結果に基づいて、類似塩基配列の候補を取得して、入力塩基配列とのハミング距離を判定する塩基配列検索装置について説明する。【００６７】
（実施形態４：構成）
図１４は、本発明の実施形態４に係る塩基配列検索装置の機能ブロック図を例示する。塩基配列検索装置１４００は、塩基配列入力部４０１と、ハミング距離入力部４０２と、特定部４０３と、割当部４０４と、選択部４０５と、置換塩基配列生成部４０６と、検索部４０７と、類似候補塩基配列取得部１４０１と、判定部１４０２と、を有している。また、特定部４０３は、実施形態２で説明した第一特定手段と実施形態３で説明した第二特定手段とのいずれか一方または両方を有していてもよい。したがって、本実施形態に係る塩基配列検索装置は、実施形態１から３のいずれか一の塩基配列検索装置が類似候補塩基配列取得部１４０１と、判定部１４０２と、を有している構成となっている。【００６８】
「類似候補塩基配列取得部」１４０１は、検索部４０７での検索結果に基づいて、類似候補塩基配列を取得する。「類似候補塩基配列」とは、置換塩基配列を含んで遺伝子塩基配列に現れる塩基配列である。より具体的に説明すると、例えば、第一の部分配列の置換塩基配列により検索が行なわれ、置換塩基配列の端の塩基の位置が判明したとすると、第一の部分配列が入力塩基配列に占める位置関係を勘案して得られる塩基配列で、入力塩基配列と同じ長さの遺伝子塩基配列を取得する。すなわち、検索で得られる位置が第一の部分配列の左端の塩基の位置であるとすると、第一の部分配列の左側のその余の部分の長さ（もし、そのようなその余の部分がなければ０とする）だけ左の位置から、入力塩基配列と同じ長さの遺伝子塩基配列を取得する。第二の部分配列の置換塩基配列について検索が行なわれた場合も同様に、第二の部分配列の右側のその余の部分の長さだけ右の位置から左に向かって入力塩基配列と同じ長さの遺伝子塩基配列を取得する。この取得は、データベースを検索することにより行なわれる。もし、塩基配列検索装置が、そのようなデータベースを備えていれば、そのデータベースから取得を行ない、別のサーバにそのようなデータベースが備えられていればそのサーバに取得の要求を送信して、類似候補塩基配列を得る。【００６９】
「判定部」１４０２は、類似候補塩基配列取得部で取得された類似候補塩基配列と、前記入力塩基配列と、のハミング距離が、ハミング距離入力部４０２に入力されたハミング距離、もしくはそれ以下、または入力されたハミング距離の組に一致するかどうかを判定する。この判定は、入力塩基配列と類似候補塩基配列との端の塩基から順に比較を行なうことにより行なうことができる。【００７０】
本実施形態に係る塩基配列検索装置の処理の流れ図は、図１１に例示された流れ図のステップＳ１１０７の後に、類似候補塩基配列を取得するステップと、類似候補塩基配列と入力塩基配列とのハミング距離が、入力ハミング距離に等しいかどうかを判定するステップと、を実行する流れ図となる。【００７１】
（実施形態４：主な効果）
本実施形態によれば、入力塩基配列に類似する塩基配列を取得することができ、例えば、ｓｉＲＮＡにより不活性化する目的の遺伝子以外に不活性化される可能性のある遺伝子の情報を得ることが可能となる。【００７２】
（実施形態５：主に請求項５について説明する）【００７３】
本発明の実施形態５として、不適合となる塩基の組合せを指定することができる塩基配列検索装置について説明する。【００７４】
（実施形態５：構成）
図１５は、本発明の実施形態５に係る塩基配列検索装置の機能ブロック図を例示する。塩基配列検索装置１５００は、塩基配列入力部４０１と、ハミング距離入力部４０２と、特定部４０３と、割当部４０４と、選択部４０５と、置換塩基配列生成部４０６と、検索部４０７と、類似候補塩基配列取得部１４０１と、判定部１４０２と、不適合塩基組入力部１５０１と、を有している。したがって、本実施形態に係る塩基配列検索装置は、実施形態４に係る塩基配列検索装置が不適合塩基組入力部１５０１を有している構成となっている。【００７５】
「不適合塩基組入力部」１５０１は、適合しない塩基の組を指定する。例えば適合しないと判断するべき塩基のペアを示すテキスト情報を入力する。あるいは、適合と判断するべき塩基のペア（例えば、ＧとＵ）を入力することにより、間接的に適合しないと判断するべき塩基の組が指定されるようになっていてもよい。【００７６】
本実施形態においては、不適合塩基組入力部１５０１に入力された塩基の組に基づいて検索部で検索が行なわれ、また、ハミング距離が求められる。例えば、不適合塩基組入力部１５０１により入力された塩基の組に基づいて、置換塩基配列が置換塩基配列生成部４０６で生成され、検索部４０７では検索のためのデータベースが選択され、判定部１４０２でハミング距離が求められる。【００７７】
（実施形態５：主な効果）
本実施形態によれば、例えば、ＧとＵのように弱いながらも結合する可能性のある塩基の組合せを考慮することができ、より正確な塩基配列の設計を行なうことが可能となる。【００７８】
（実施形態６：主に請求項６について説明する）【００７９】
本発明の実施形態６として、入力塩基配列と類似塩基配列との塩基の適合の分布を指定することができる塩基配列検索装置について説明する。【００８０】
（実施形態６：構成）
図１６は、本発明の実施形態６に係る塩基配列検索装置の機能ブロック図を例示する。塩基配列検索装置１６００は、塩基配列入力部４０１と、ハミング距離入力部４０２と、特定部４０３と、割当部４０４と、選択部４０５と、置換塩基配列生成部４０６と、検索部４０７と、類似候補塩基配列取得部１４０１と、判定部１４０２と、適合分布入力部１６０１と、を有しており、判定部１４０２は、判定手段１６０２を有している。また、塩基配列検索装置１６００は、実施形態５にて説明した不適合塩基組入力部を有していてもよい。したがって、本実施形態に係る塩基配列検索装置は、実施形態４または５に係る塩基配列検索装置が、適合分布入力部１６０１を有し、判定部１４０２は、判定手段１６０２を有している構成となっている。【００８１】
「適合分布入力部」１６０１は、塩基配列入力部４０１に入力された塩基配列と類似塩基配列との対応する塩基の適合の分布を表わす分布情報を入力する。分布情報の例としては、５´端側の方に塩基の不適合の発生が少ない、あるいは、多い、塩基の不適合がほぼ等間隔で発生していることを示す情報がある。分布情報は、例えば、塩基の適合の分布を判定するプログラムであってもよい。あるいは、あらかじめ塩基の適合の分布の類型をいくつか決めておき、それらを選択するための情報であってもよい。【００８２】
「分布判定手段」１６０２は、適合分布入力部１６０２で入力された分布情報が満たされているかどうかを判定する。【００８３】
判定部１４０２は、例えば、類似塩基配列とともに、分布判定手段での判定の結果を表示するようになっていてもよい。【００８４】
（実施形態６：主な効果）
本実施形態により、より正確な塩基配列の設計を行なうことが可能となる。【００８５】
（実施形態７：主に請求項７について説明する）【００８６】
本発明の実施形態７に係る塩基配列検索装置は、実施形態６に係る塩基配列検索装置において、適合分布入力部１６０１で入力される分布情報を、塩基配列と類似塩基配列との対応する塩基が連続して適合する長さの下限としたものである。【００８７】
２つの塩基配列において、対応する塩基に不適合となるものがあっても、対応する塩基が連続して適合していると、結合（ハイブリダイズ）してしまう場合がある。本実施形態においては、塩基が連続して適合する長さの下限を指定することにより、結合してしまう可能性のある類似塩基配列を検出するようにしたものである。【００８８】
（実施形態８：主に請求項８について説明する）【００８９】
本発明の実施形態８は、実施形態１から７のいずれか一の実施形態において、塩基配列入力部に入力される塩基配列の長さを１５から６０まで、望ましくは１５から２５までとし、所定長を１１から１４とした実施形態である。【００９０】
塩基配列入力部に入力される塩基配列の長さを１５から６０まで、望ましくは１５から２５までとすることにより、本実施形態に係る塩基配列検索装置をｓｉＲＮＡの設計に適したものとすることができる。また、発明者がベンチマークテストに用いたデータベースでは、入力塩基配列の長さが１９または２０のときには、所定長を１１から１４とした場合が、最も高速に検索が行なえた。これは、所定長が小さいと、類似候補塩基配列の候補の数が多くなり、一方、所定長を大きくすると、置換塩基配列生成部での置換塩基配列の生成に計算量が必要となるとともに、索引を構成するハッシュテーブルに対して問い合わせを行なった際のミスヒットが増加する、すなわち、もともとのデータベース中に存在しない配列を問い合わせすることになる場合が増え、計算量が増加するためためであり、その中間点が、所定長が１１から１４である場合と考えられる。また、塩基配列入力部に入力される塩基配列の長さは、１９または２０に限定されることなく、１５から６０までは実用的に検索を行なうことができることが確認できた。なお、６１以上になると急激にパフォーマンスの低下などが発生し実用に堪えなくなるというわけではなく、入力される塩基配列の長さが大きくなるにつれて徐々にパフォーマンスが低下することが確認された。したがって、６０程度の長さのオリゴＤＮＡの配列の決定にも本発明は使用することができることが確認できている。【００９１】
（実施形態９：主に請求項１０、１１について説明する）【００９２】
以上、データベースに格納された遺伝子塩基配列に対する検索について述べたが、本発明の技術は、遺伝子塩基配列に限らず、一般の文字列検索などに応用することができる。すなわち、遺伝子塩基配列は、４つの塩基が一次元に配列したものであるので、それぞれの塩基を、文字列を構成するアルファベットとみなすことにより、遺伝子塩基配列を文字列とみなすことができる。また、上記の説明から判明するように、塩基の数が４である点は、本発明の技術を一般の文字列に対して適用する制限とはならない。【００９３】
したがって、本発明の技術により、データベースに蓄積された文字列から、入力された文字列に類似する文字列を検索することが可能となる。ここに「類似する」とは、入力された文字列から所定のハミング距離となる文字列、または入力された文字列から所定のハミング距離未満となる文字列を意味する。【００９４】
したがって、次の文字列検索装置が提供される。すなわち、アルファベットが一次元に配列した文字列を格納したデータベースを検索するための索引であり、所定の長さである所定長の文字列が前記データベースに格納された文字列の中に出現する位置を検索するための索引、を用いて、入力される文字列と同じ長さで類似する文字列であり前記前記データベースに格納された文字列に出現する文字列である類似文字列を検索するための文字列検索装置であって、前記所定長を超える長さの文字列を入力する文字列入力部と、前記文字列入力部に入力された文字列である入力文字列に対して、適合しないアルファベットへの置換の操作を行なうアルファベットの個数を示すハミング距離を入力するハミング距離入力部と、前記入力文字列の部分文字列であって、前記所定長の長さを持ち異なる２つの部分文字列と、その余の部分と、を特定する特定部と、前記特定部で特定された部分文字列とその余の部分とに、前記ハミング距離入力部で入力されたハミング距離を分割して割り当てる割当部と、前記特定部で特定された２つの部分文字列のうち、前記割当部で割り当てられたハミング距離で示される個数のアルファベットを適合しないアルファベットへ置換する操作を前記部分文字列に対して行なって生成される文字列である置換文字列の総数が大きくない方を選択する選択部と、前記選択部により選択された部分文字列に対して、前記割当部で割り当てられたハミング距離をもつ置換文字列を生成する置換文字列生成部と、前記置換文字列生成部で生成された置換文字列を検索キーとして前記索引を用いて検索を行なう検索部と、を有する文字列検索装置を提供することが可能となる。【００９５】
また、文字列のアルファベットをペプチドとすることにより、本発明の技術をペプチド配列の類似検索、すなわち、入力されたペプチド配列に類似のペプチドを検索することにも使用することができる。【００９６】
（実施形態１０：主に請求項１２について説明する）【００９７】
本発明の実施形態１０として、実施形態１から８のいずれかの塩基配列検索装置について、リピート配列の検索について改良を行なった実施形態について説明する。【００９８】
（実施形態１０：構成）
図１９は、本発明の実施形態１０に係る塩基配列検索装置の機能ブロック図を例示する。本実施形態に係る塩基配列検索装置は、実施形態１から８のいずれかの塩基配列検索装置が、リピート配列蓄積部１９０１と、リピート配列情報蓄積部１９０２と、を有し、検索部４０７が、リピート配列判定手段１９０３と、リピート配列検索手段１９０４と、を有する構成となっている。図１９は、実施形態１に係る塩基配列検索装置が、これらの部、手段を有する場合の機能ブロック図である。【００９９】
「リピート配列蓄積部」１９０１は、遺伝子塩基配列中に繰り返して出現する前記所定長の塩基配列を蓄積する。「前記所定長」とは、塩基配列検索装置が用いる索引によって定まる値であり、塩基配列が遺伝子塩基配列のどの位置に現れるかをその索引により検索できるような塩基配列の長さである。【０１００】
遺伝子塩基配列の中に同じ塩基配列が複数回出現することが知られており、塩基配列によっては、その塩基配列の種類は少ないが、膨大な回数にのぼって遺伝子塩基配列に出現することが知られている。もし、置換塩基配列生成部４０６で生成される置換塩基配列がこのような膨大な回数にのぼって遺伝子塩基配列に出現すると、実施形態１から８の塩基配列検索装置の行なう処理の効率を低下させる。そこで、本実施形態では、置換塩基配列生成部４０６で生成される置換塩基配列が、遺伝子塩基配列中に繰り返して出現する場合を特別に扱うことにする。このために、まず、遺伝子塩基配列中に繰り返して出現する塩基配列をリピート配列蓄積部１９０１に蓄積する。【０１０１】
図２０は、遺伝子塩基配列中に繰り返して出現する塩基配列を表に格納した状態を例示する。遺伝子塩基配列中に繰り返して出現する塩基配列を一意に識別する識別子とその塩基配列を同じ行に格納することにより、識別子と塩基配列を関連づけて表に格納している。【０１０２】
「リピート配列情報蓄積部」１９０２は、リピート配列情報を蓄積する。リピート配列情報とは、リピート配列蓄積部１９０１に蓄積された塩基配列に、その塩基配列の遺伝子配列中における出現位置を関連付けた情報である。【０１０３】
図２１は、リピート配列情報を蓄積するための表を例示する。この表では、図２０の表で使用されている識別子と、塩基配列が遺伝子塩基配列の中に出現する位置と、を同じ行に格納することにより、関連づけを行なっている。「リピート配列識別子」という名前の列には、識別子が格納され、「出現位置」という名前の列には、塩基配列が遺伝子塩基配列の中に出現する位置が格納されている。【０１０４】
「リピート配列判定手段」１９０３は、置換塩基配列生成部４０６で生成された置換塩基配列が、リピート配列蓄積部１９０１に蓄積されているかどうかを判定する。例えば、図２０の表の「リピート配列」という名前の列に、置換塩基配列が格納されているかどうかを調べる。この処理は、キーとして「リピート配列」という名前の列に格納されている塩基配列を持ち、バリューとして「リピート配列識別子」という名前の列に格納されている識別子を持つ索引（例えば、Ｂ＋木により構成されるもの）を用いることにより、高速に行なうことができる。なお、リピート配列判定手段１９０３により、リピート配列蓄積部１９０１に蓄積されていると判定される塩基配列をリピート配列と呼ぶことにする。【０１０５】
「リピート配列検索手段」１９０４は、リピート配列判定手段１９０３にて、置換塩基配列がリピート配列蓄積部１９０１に蓄積されていると判定された場合には、リピート配列情報蓄積部１９０２に蓄積されたリピート配列情報に基づいて検索を行なう。例えば、図２０の表よりリピート配列識別子という列に格納されている識別子を得て、図２１の表より出現位置を求め、遺伝子塩基配列におけるその出現位置の前後の塩基配列を取得して、その塩基配列が入力塩基配列と所定のハミング距離以下であるかどうかの判断を行なうなどして検索を行なう。【０１０６】
（実施形態１０：処理の流れ）
図２２は、本実施形態に係る図１９の塩基配列検索装置の検索部での処理の流れを説明するフローチャートを例示する。ステップＳ２２０１において、リピート配列判定手段により、置換塩基配列がリピート配列であるかどうかを判定する。もし、リピート配列である場合（すなわち、ステップＳ２２０１においてＹＥＳに分岐する場合）ならば、処理をステップＳ２２０２へ進め、リピート配列検索手段１９０４により、リピート配列情報に基づいて検索を行なう。もし、リピート配列でない場合（すなわち、ステップＳ２２０１においてＮＯへ分岐する場合）ならば、ステップＳ２２０３へ処理を進め、実施形態１ないし８による類似塩基配列の検索を行なう。また、リピート配列である場合ならば検索を行なわず、リピート配列でないと判断された場合のみ検索することも可能である。【０１０７】
（実施形態１０：主な効果）
本実施形態では、置換塩基配列がリピート配列である場合には、リピート配列用の検索処理を行なうことにより、リピート配列による検索スピードの低下を防止することができる。【０１０８】
（実施形態１１：主に請求項１３について説明する）【０１０９】
本発明の実施形態１１として、類似塩基配列の検索結果を蓄積する塩基配列検索装置について説明する。【０１１０】
（実施形態１１：構成）
図２３は、本発明の実施形態１１に係る塩基配列検索装置の機能ブロック図を例示する。本実施形態に係る塩基配列検索装置は、実施形態４から７のいずれかの塩基配列検索装置が、類似塩基配列蓄積部２３０１を有する構成となっている。図２３は、実施形態４に係る塩基配列検索装置が、類似塩基配列蓄積部２３０１を有する場合の機能ブロック図である。【０１１１】
「類似塩基配列蓄積部」２３０１は、判定部１４０２にて、入力塩基配列と、類似候補塩基配列取得部１４０１により取得された類似塩基配列と、のハミング距離がハミング距離入力部４０２に入力されたハミング距離以下であると判定された場合、（１）その入力塩基配列と、（２）その入力塩基配列とその類似塩基配列とのハミング距離と、（３）その類似塩基配列と、を関連付けて蓄積する。【０１１２】
図２４は、（１）入力塩基配列と、（２）その入力塩基配列とその類似塩基配列とのハミング距離と、（３）その類似塩基配列と、を関連付けて蓄積するための表の構造を例示する。「入力塩基配列」、「ハミング距離」、「類似塩基配列」という名前のそれぞれの列に、（１）入力塩基配列と、（２）その入力塩基配列とその類似塩基配列とのハミング距離と、（３）その類似塩基配列と、が格納される。【０１１３】
（実施形態１１：処理の流れ）
図２５は、本実施形態に係る塩基配列検索装置の判定部と類似塩基配列蓄積部との処理の流れを説明するフローチャートを例示する。ステップＳ２５０１において、判定部により、入力塩基配列と類似塩基配列とのハミング距離が入力されたハミング距離であるかどうかを判定する。もし、そうであれば、ステップＳ２５０１のＹＥＳの枝へ分岐し、ステップＳ２５０２において、類似塩基配列蓄積部２３０１に、（１）入力塩基配列と、（２）ハミング距離と、（３）類似塩基配列と、を関連付けて蓄積する。ステップＳ２５０１でＮＯの枝へ分岐する場合には、ステップＳ２５０２は実行しない。【０１１４】
（実施形態１１：主な効果）
本実施形態では、塩基配列検索装置の検索結果が類似塩基配列蓄積部２３０１に蓄積されるので、もし、既に検索対象と同じ入力塩基配列と同じハミング距離とに対して検索が行なわれているかどうかを、類似塩基配列蓄積部２３０１に蓄積された情報を検索して判断することにより、類似塩基配列の検索を効率よく行なうことができる。本実施形態に係る塩基配列検索装置は、例えば、インターネットなどにより検索のサービスを多数の人に提供する場合に特に有用である。例えば、第一の人が検索を行ないその後、第二の人が同じ検索を行なった場合、第二の人には、第一の人に対して提供した検索の結果を流用することにより、応答時間の短縮や、塩基配列検索装置の負荷の低減を行なうことができる。【０１１５】
（実施形態１２：主に請求項１４について説明する）【０１１６】
本発明の実施形態１２として、会合率を計算する塩基配列検索装置について説明する。ここに「会合率」とは、２種類の塩基配列を液体の中などの流動性のある環境下に置いた場合、どれだけの割合でその２種類の塩基配列が結合するかを示す値である。このような値は、塩基配列より物理化学的な計算を行なうことにより計算することができる。例えば、上記の非特許文献１として挙げた文献にその計算方法が開示されている。【０１１７】
（実施形態１２：構成）
図２６は、本発明の実施形態１２に係る塩基配列検索装置の機能ブロック図を例示する。本実施形態に係る塩基配列検索装置は、実施形態４から７のいずれかの塩基配列検索装置が、会合率計算部２６０１を有する構成となっている。図２６は、実施形態４に係る塩基配列検索装置が、会合率計算部２６０１を有する場合の機能ブロック図である。【０１１８】
「会合率計算部」２６０１は、類似候補塩基配列取得部１４０１により取得された類似候補塩基配列と塩基配列入力部４０１により入力された入力塩基配列とのハミング距離がハミング距離入力部４０２に入力されたハミング距離以下であると判定された場合に、（１）塩基配列入力部４０１により入力された入力塩基配列と（２）類似候補塩基配列取得部１４０１で取得された類似候補塩基配列との会合率を計算する。例えば、液体の温度、ｐＨなどの条件を設定しておき、その条件での会合率を物理化学的に計算する。なお、会合率を計算する場合には、入力塩基配列を構成する塩基または類似候補塩基配列を構成する塩基を相補的な塩基に置換する。【０１１９】
（実施形態１２：主な効果）
本発明の塩基配列検索装置では、入力塩基配列とハミング距離が所定の値以下の塩基配列を効率よく検索することができ、しかも、実際にウェット実験を行なった場合にどれだけの会合率となるかを得ることができ、実験結果やＲＮＡ干渉を用いた薬の効果の予測などを行なうことができる。【０１２０】
（実施形態１３：主に請求項１５について説明する）【０１２１】
本発明の実施形態１３として、ウェット実験などでコントロールとして用いることができる塩基配列を検索する装置について説明する。【０１２２】
（実施形態１３：構成）
図２７は、本発明の実施形態１３に係る無効果塩基配列生成装置の機能ブロック図を例示する。無効果塩基配列生成装置２７００は、塩基配列取得部２７０１と、無効果候補置換塩基配列生成部２７０２と、無効果候補置換塩基配列入力部２７０３と、第二ハミング距離入力部２７０４と、選択部２７０５と、を有する。【０１２３】
「塩基配列取得部」２７０１は、前記所定長を超える長さの塩基配列を取得する。「前記所定長」とは、実施形態１０で説明したように、実施形態４から７のいずれかに係る塩基配列検索装置が用いる索引によって定まる値であり、塩基配列が遺伝子塩基配列のどの位置に現れるかをその索引により検索できるような塩基配列の長さである。塩基配列取得部は、例えば、通信網を介してクライアント装置と接続され、そのクライアント装置で動作するＷＥＢブラウザなどに入力された塩基配列を取得する。塩基配列取得部２７０１が取得する塩基配列は、例えば、目的とするｍＲＮＡの機能をさせないことが判明した塩基配列である。【０１２４】
「無効果候補置換塩基配列生成部」２７０２は、無効果候補置換塩基配列を生成する。「無効果候補置換塩基配列」とは、塩基配列取得部で取得された塩基配列の塩基のうち、所定の個数の塩基を置換して得られる塩基配列である。例えば、塩基配列の長さが２１であり、所定の個数が３であれば、（４−１）３２１Ｃ３の個数の無効果候補置換塩基配列を生成する（「４−１」の４は、塩基の種類が４であることを示す）。また、全ての無効果候補置換塩基配列するのではなく、特別な知見に基づいて目的とするｍＲＮＡの塩基配列と会合率が低くなると予測される塩基配列を生成するようにしてもよい。また、出現回数の少ない配列を用いて無効化候補置換塩基配列を生成するようにしてもよい。【０１２５】
「無効果候補置換塩基配列入力部」２７０３は、無効果候補置換塩基配列生成部２７０２で生成された無効果候補置換塩基配列を実施形態１２に係る塩基配列検索装置２７０６に入力する。例えば、無効果塩基配列生成装置と実施形態１２に係る塩基配列検索装置とがＬＡＮなどで接続されていれば、実施形態１２に係る塩基配列検索装置へ向けて無効果候補置換塩基配列を表わす情報を送信する。【０１２６】
「第二ハミング距離入力部」２７０４は、無効果候補置換塩基配列入力部２７０３が無効果候補置換塩基配列を入力した塩基配列検索装置２７０６に所定のハミング距離を入力する。例えば、無効果候補置換塩基配列入力部２７０３が無効果候補置換塩基配列を入力するときに所定のハミング距離を入力する。【０１２７】
「選択部」２７０５は、無効果候補置換塩基配列入力部の入力と第二ハミング距離入力部２７０４の入力とにより塩基配列検索装置２７０６より得られた会合率の低い塩基配列を選択する。例えば、ある無効果候補置換塩基配列とそれに類似する類似塩基配列との会合率が５０％であり、別の無効果候補置換塩基配列とそれに類似する類似塩基配列との会合率が１０％であれば、後者の無効果候補置換塩基配列を選択し、効果の無い塩基配列として無効果塩基配列生成装置の利用者に表示などする。【０１２８】
（実施形態１３：処理の流れ）
図２８は、本実施形態に係る無効果塩基配列生成装置の処理の流れを説明するフローチャートを例示する。ステップＳ２８０１において、塩基配列を、塩基配列取得部２７０１により取得する。ステップＳ２８０２において、無効果候補置換塩基配列を、無効果候補置換塩基配列生成部２７０２により生成する。ステップＳ２８０３において、塩基配列検索装置２７０６に、無効果候補置換塩基配列と所定のハミング距離を入力する。ステップＳ２８０３は、個々の無効果候補置換塩基配列に対して一回ずつ行なわれ、個々の無効果候補置換塩基配列に対して会合率が取得される。ステップＳ２８０４においては、会合率の低い無効果候補置換塩基配列を、選択部２７０５により選択する。【０１２９】
（実施形態１３：主な効果）
本実施形態により、与えられた塩基配列に似た塩基配列であって、会合率の低いものを選択することができる。選択により得られた塩基配列は、効果のない塩基配列と推定されるので、ウェット実験におけるコントロールなどとして用いることができる。【０１３０】
（実施形態１４：主に請求項１６について説明する）【０１３１】
本発明の実施形態１４として、本発明の塩基配列検索装置を用いた塩基配列のアラインメントを行なう装置について説明する。【０１３２】
図２９は、本発明の実施形態１４における装置による処理の概要を説明するための図である。遺伝子塩基配列２９０１があるとして、この配列のどの部分に、塩基配列２９０２と似た塩基配列が存在するかを知りたいとする。この場合において、塩基配列２９０２の部分配列２９０３を得る。部分配列２９０３の長さは、本発明の塩基配列検索装置に適した長さであり、望ましくは１５から２５である。そして、本発明の塩基配列検索装置を用いて、部分配列２９０３の類似塩基配列２９０４を遺伝子塩基配列２９０１の中に見つける。その後、部分配列２９０３と類似塩基配列２９０４との前後の塩基の配列を、ダイナミックプログラミングなどによる従来知られている手法を用いて、比較する。このような操作により、遺伝子塩基配列２９０１のどの部分に塩基配列２９０２と似た塩基配列が存在するかを効率良く知ることができる。【０１３３】
（実施形態１４：構成）
図３０は、本発明の実施形態１４に係る塩基配列アラインメント装置の機能ブロック図を例示する。塩基配列アラインメント装置３０００は、第二塩基配列取得部３００１と、部分塩基配列選択部３００２と、部分塩基配列入力部３００３と、第三ハミング距離入力部３００４と、アラインメント部３００５と、を有する。【０１３４】
「第二塩基配列取得部」３００１は、前記所定の長さを超える塩基配列を取得する。【０１３５】
「部分塩基配列選択部」３００２は、第二塩基配列取得部３００１で取得された塩基配列の一部分である部分塩基配列を選択する。例えば、第二塩基配列取得部３００１で取得された塩基配列から長さが１５から２５の長さの塩基配列を選択する。取得される部分塩基配列は、実施形態１２で説明したリピート配列にならないのが望ましい。なぜなら、アラインメントの候補が多数発見されてしまい後に説明するステップＳ３１０４を多くの回数実行しなければいけなくなるからである。そのため、実施形態１２のように、リピート配列蓄積部が塩基配列アラインメント装置に備わっており、そのリピート配列蓄積部に蓄積された内容を参照して、部分塩基配列が取得されるようになっていてもよい。【０１３６】
「部分塩基配列入力部」３００３は、部分塩基配列選択部で選択された部分塩基配列を実施形態４から８のいずれかに係る塩基配列検索装置３００６に入力する。【０１３７】
「第三ハミング距離入力部」３００４は、所定のハミング距離を部分塩基配列入力部が部分塩基配列を入力した塩基配列検索装置３００６に入力する。部分塩基配列入力部３００３と第三ハミング距離入力部３００４とによるそれぞれの入力により、部分塩基配列の類似塩基配列が求まり、遺伝子塩基配列中での位置が求まる。【０１３８】
「アラインメント部」３００５は、部分塩基配列入力部３００３による入力と第三ハミング距離入力部３００４による入力とが行われることによって塩基配列検索装置３００６より得られた検索の結果に基づいて、第二塩基配列取得部３００１により取得された塩基配列を遺伝子塩基配列にアラインメントする。例えば、部分塩基配列が符号２９０３で示される部分であるとして、部分塩基配列の類似塩基配列が符号２９０４で示される部分であることが、塩基配列検索装置３００６により判明したとすると、符号２９０４で示される塩基配列の前後の塩基配列と、符号２９０２で示される塩基配列がどの程度似ているかを示すスコア値などを、ダイナミックプログラミングの手法などを用いて計算する。【０１３９】
（実施形態１４：処理の流れ）
図３１は、本実施形態に係る図３０の塩基配列アラインメント装置の処理の流れを説明するフローチャートを例示する。ステップＳ３１０１において、第二塩基配列取得部３００１により、塩基配列を取得する。ステップＳ３１０２において、部分塩基配列選択部３００２において、部分塩基配列を選択する。ステップＳ３１０３において、部分塩基配列入力部３００３と第三ハミング距離入力部３００４とにより、部分塩基配列とハミング距離を塩基配列検索装置３００６へ入力する。ステップＳ３１０４により、塩基配列検索装置３００６による検索の結果に基づいて塩基配列を遺伝子塩基配列にアラインメントする。ステップＳ３１０４は、ステップＳ３１０３で得られた検索の結果だけ繰り返して実行される。【０１４０】
（実施形態１４：主な効果）
従来のアラインメントの手法では、ＢＬＡＳＴなどが用いられていたが、ＢＬＡＳＴなどを用いると、例えば連続する７ｍｅｒが一致する塩基配列の検索を行なって類似する塩基配列が遺伝子塩基配列のどこに出現するかを求めることになるので、アラインメントを正確に行なうことが困難な場合があった。本発明では、部分塩基配列の類似塩基配列を検索するので、より正確なアラインメントを行なうことができる。
【産業上の利用可能性】
【０１４１】
本発明に係る塩基配列検索装置及び塩基配列検索方法は、検索のために必要となる計算量を小さくすることができ、また、ハミング距離が所定の値以下となり、すなわち、似た塩基配列の存在を見落とすことも無いので、塩基配列などの設計に有用である。例えば、本発明に係る塩基配列検索装置及び塩基配列検索方法を、ｓｉＲＮＡの塩基配列設計に適用した場合、特に、ＲＮＡ干渉（ＲＮＡｉ）効果の高いｓｉＲＮＡを設計可能とする種々の所定ガイドライン（具体的には、Ui-TeiらによるガイドラインUi-Tei,K., Naito,Y., Takahashi,F., Haraguchi,T., Ohki-Hamazaki,H., Juni,A., Ueda,R. and Saigo,K., 'Guidelines for the selection of highly effective siRNA sequences for mammalian and chick RNA interference', Nucleic Acids Research, 2004, Vol. 32, No.3, 936-948等）と組み合わせて適用した場合に、作業に要する時間の短縮及び適切な設計の点から、より有効である。
【図面の簡単な説明】
【０１４２】
【図１】ＲＮＡ干渉の過程の概略を示す図
【図２】マイクロアレイを用いた遺伝子解析や遺伝子診断などの過程を説明するための図
【図３】ＢＬＡＳＴで見落とされる可能性のある塩基配列を説明するための図
【図４】本発明の実施形態１に係る塩基配列検索装置の機能ブロック図
【図５】ハミング距離が３の塩基配列の一例図
【図６】ハミング距離の定義を示す図
【図７】特定される２つの部分配列とその余の部分との一例図
【図８】ハミング距離の割り振りを説明するための図
【図９】割当部によるハミング距離の割り振りと選択部による選択を説明するための図
【図１０】割当部によるハミング距離の割り振りと選択部による選択を説明するための図
【図１１】本発明の実施形態１に係る塩基配列検索装置の処理の流れ図
【図１２】本発明の実施形態２に係る塩基配列検索装置の機能ブロック図
【図１３】本発明の実施形態３に係る塩基配列検索装置の機能ブロック図
【図１４】本発明の実施形態４に係る塩基配列検索装置の機能ブロック図
【図１５】本発明の実施形態５に係る塩基配列検索装置の機能ブロック図
【図１６】本発明の実施形態６に係る塩基配列検索装置の機能ブロック図
【図１７】ハミング距離を分割して割り当てるプログラムの一例図
【図１８】置換塩基配列を生成するプログラムの一例図
【図１９】本発明の実施形態１０に係る塩基配列検索装置の機能ブロック図
【図２０】リピート配列を格納する表の一例図
【図２１】リピート配列情報を蓄積するための表の一例図
【図２２】本発明の実施形態１０に係る塩基配列検索装置の検索部の処理のフローチャート
【図２３】本発明の実施形態１１に係る塩基配列検索装置の機能ブロック図
【図２４】入力塩基配列とハミング距離と類似塩基配列とを関連付けて蓄積するための表の構造図
【図２５】本発明の実施形態１１に係る塩基配列検索装置の判定部と類似塩基配列蓄積部との処理のフローチャート
【図２６】本発明の実施形態１２に係る塩基配列検索装置の機能ブロック図
【図２７】本発明の実施形態１３に係る無効果塩基配列生成装置の機能ブロック図
【図２８】本発明の実施形態１３に係る無効果塩基配列生成装置の処理のフローチャート
【図２９】本発明の実施形態１４における装置による処理の概要図
【図３０】本発明の実施形態１４に係る塩基配列アラインメント装置の機能ブロック図
【図３１】本発明の実施形態１４に係る塩基配列アラインメント装置の処理のフローチャート
【符号の説明】
【０１４３】
４００  塩基配列検索装置
４０１  塩基配列入力部
４０２  ハミング距離入力部
４０３  特定部
４０４  割当部
４０５  選択部
４０６  置換塩基配列生成部
４０７  検索部
【図１】
0004614949.tif 000002
【図２】
0004614949.tif 000003
【図３】
0004614949.tif 000004
【図４】
0004614949.tif 000005
【図５】
0004614949.tif 000006
【図６】
0004614949.tif 000007
【図７】
0004614949.tif 000008
【図８】
0004614949.tif 000009
【図９】
0004614949.tif 000010
【図１０】
0004614949.tif 000011
【図１１】
0004614949.tif 000012
【図１２】
0004614949.tif 000013
【図１３】
0004614949.tif 000014
【図１４】
0004614949.tif 000015
【図１５】
0004614949.tif 000016
【図１６】
0004614949.tif 000017
【図１７】
0004614949.tif 000018
【図１８】
0004614949.tif 000019
【図１９】
0004614949.tif 000020
【図２０】
0004614949.tif 000021
【図２１】
0004614949.tif 000022
【図２２】
0004614949.tif 000023
【図２３】
0004614949.tif 000024
【図２４】
0004614949.tif 000025
【図２５】
0004614949.tif 000026
【図２６】
0004614949.tif 000027
【図２７】
0004614949.tif 000028
【図２８】
0004614949.tif 000029
【図２９】
0004614949.tif 000030
【図３０】
0004614949.tif 000031
【図３１】
0004614949.tif 000032