説明

進化過程を考慮した保存領域検出システム

【課題】ゲノム解析の対象となる種のゲノム配列から保存領域を検出し、各々の種間の関係や各保存領域の関係を明確に表示することが可能な進化過程を考慮した保存領域検出システムを提供すること。
【解決手段】ゲノム配列に基づいて得られる系統樹を参照して、この系統樹を構成している中間ノードに属するゲノム配列を認識する配列認識手段と、中間ノードに属するゲノム配列において存在する同一の文字列の位置から開始してゲノム配列内の保存領域を検出する保存検出手段を備えたことを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のDNA(またはアミノ酸)配列から、ゲノム配列を比較してゲノム配列中における意味を調べるゲノム解析に関し、特に、進化の過程で保存されている保存領域を見つけ、表示する進化過程を考慮した保存領域検出システムに関する。
【背景技術】
【0002】
従来技術においては、世界中の配列解析プロジェクトによって、ヒトや動植物のゲノム解析が進み、それらの情報は公共データベース等を通して容易に入手できるようになっている。さまざまな生物における種間や種内のDNA配列のうちゲノム解析の対象となるゲノム配列同士を比較することによって、ゲノム配列中で各々の種の特異的な部分や、または全ての種に共通な部分を明らかにすることができ、このような特異的な部分、共通な部分に関する情報を用いることで進化のプロセスや、生物学的意味の解釈に役立てることが可能である。例えば、哺乳類のMHC(the Major
Histocompatibility Complex)領域について調べた文献(Hughes
AL, Yeager M. Natural selection at major histocompatibility complex loci of
vertebrates.Annu Rev Genet.
1998;32:415-35やMcConnell TJ,
Talbot WS, McIndoe RA, Wakeland EK. The origin of MHC class II gene
polymorphism within the genus Mus.Nature.
1988 14;332(6165):651-4.やLawlor DA, Ward
FE, Ennis PD, Jackson AP, Parham P. HLA-A and B polymorphisms predate the
divergence of humans and chimpanzees.Nature.
1988 15;335(6187):268-71.など)では、数百年にわたってMHCがゲノム配列中に存続し機能していることが、各ゲノムを比較することによって明らかとなっている。
【0003】
さて、ゲノム配列を比較するとは、進化の過程においてゲノム配列中に起こる変化(変異)を捉える、即ち、把握することであるが、進化におけるゲノム配列の変化(変異)とは、具体的にはsubstitution・deletion・insertion・inversionが挙げられる。図1乃至4は、これらの変化の様子を示した説明図である。図1は、substitutionの変化の様子を示しており、ゲノム配列中の塩基AがCに置換されている。図2は、insertionの変化の様子を示しており、ゲノム配列中の塩基AとTとの間に、新たに塩基C追加され挿入されている。図3は、deletionの変化の様子を示しており、塩基Tが削除されている。図4は、inversionの変化の様子を示しており、ゲノム配列中のATTがTTAとなっており順序が逆となるように並び替えられている。
【0004】
これらの4種類の変化のうち、substitutionは一塩基単位の変化で起こるが、deletion・insertion・inversionは数百から数万塩基を含むブロック単位の全体で一度に起こることがあり、生物の種の進化の過程でこれらの変化が起こるとゲノム配列中で蓄積してゲノム配列全体に変化を与え、結果的にそれぞれ異なる生物の種を生まれさせていくこととなっている。
【0005】
ゲノム配列を比較してゲノム解析が行われたことにより明らかとなっている重要な事実のひとつは、生物にとって重要なゲノム領域(遺伝子など)では、ゲノム配列の変化を受けていないことが多いことである。これは、そのような部分で変化を受けると、ほとんどの場合にはそのような部分の変化を受けた生物は絶滅することが多いため、結果的に、そのような重要なゲノム領域で変化を受けなかった生物が絶滅せずに現在まで残っており、重要なゲノム領域で変化を受けないことが現在まで存在するために必要であると考えられているからである。異なる種類の生物の種のDNA配列を比較すると、生物の種類によっては変化を受けて互いに異なるDNA配列を有していることもあるがこれらをアミノ酸毎のレベルで調べてみると変化していないことが多い。
【0006】
このような重要なゲノム領域等のゲノム配列の変化を受けていない領域は、保存領域と呼ばれている。研究者は、この保存領域においてゲノム配列の変化を受けていない事実を利用しており、異なる種類の生物の種のゲノム配列を相互に比較して保存領域を見つけこの保存領域に基づいて生物学的な意味を推測するための手がかりとしている。
【0007】
また、別の重要な事実として、ゲノム配列は進化の歴史をとどめており示していることが挙げられる。一般的に近縁の種(ヒトとチンパンジー等)は、遠縁の種(ヒトと酵母等)よりも、ゲノム配列として類似している部分が多い。これは種が分化してから、近縁の種同士ではそれほど時間が経過しておらず、遠縁の種同士では、長時間経過しているからである。また、特定のDNA配列を含む遺伝子の状態の推移を追跡することで進化の歴史を把握することも可能である。
【0008】
図5はこのような遺伝子の状態の推移による進化の歴史を示した説明図である。図5では種1と種2の祖先においてDNA配列を含む或る遺伝子aが重複されて一列に配置されたタンデム(縦列)遺伝子a1とa2を生じ、その後、別々の種類の生物の種に種文化した様子を示している。種1の遺伝子a1と種2の遺伝子a1(または種1の遺伝子a2と種2の遺伝子a2)は共通の祖先のタンデム遺伝子a1(またはタンデム遺伝子a2)を共有することとなっておりこれはオーソログと呼ばれている。一方、種1または種2における遺伝子a1とa2とは遺伝子aの重複によって発生したものであり、これはパラログと呼ばれている。
【0009】
また、図5に示す以外にも遺伝子の状態の推移による進化としてゼノログ(外来)と呼ばれるタイプのものもある。このゼノログでは或る遺伝子がその他のどの遺伝子とも進化的起源を共有していな状態で進化していく場合であり、共生やウィルスによって、類縁のない生物種からもたらされたもの、すなわち水平伝播によって引き起こされたものといわれている。
【0010】
更に、遺伝子以外にも、遺伝子に含まれる配列においてSINEs(short
interspersed repetitive elements)やLINEs(long
interspersed repetitive elements)と呼ばれる特殊な配列がある。これらはゲノム配列中で自分自身を複製し、他の位置にこの複製した配列を挿入する性質を持っており、更に、一旦挿入されると欠失しない性質があるため、これらの特殊な配列も進化の歴史を把握するための手がかりとして利用されている。過去の報告(Verneau O, Catzeflis F, Furano AV. Determination of the evolutionary
relationships in Rattus sensu lato (Rodentia : Muridae) using L1 (LINE-1)
amplification events. J Mol Evol.
1997 45(4):424-36. や Furano AV,
Hayward BE, Chevret P, Catzeflis F, Usdin K. Amplification of the ancient
murine Lx family of long interspersed repeated DNA occurred during the murine
radiation. J Mol Evol. 1994
38(1):18-27.やMurata S, Takasaki N,
Saitoh M, Okada N. Determination of the phylogenetic relationships among
Pacific salmonids by using short interspersed elements (SINEs) as temporal
landmarks of evolution. Proc Natl Acad
Sci U S A. 1993 1;90(15):6995-9.など)によれば、種の文化が起こった後5000万年以内なら、これらの配列は進化を調べるためのマーカーとして使うことができ、研究者はこれらの特殊な配列を用いたマーカーとしての情報を手がかりとして進化の歴史上での出来事を推測することを行っている。
【0011】
実際にゲノム配列内の保存領域や進化の歴史を調べるための手法としては、主に3種類の方法が使用されている。1つ目の手法はドットマトリックス解析と呼ばれる手法で、二つのゲノム配列の間で変化を受けずに共通して存在している保存領域を見つけるために行われる。図6は、ドットマトリックス解析によりATGGCAの配列1とCATTGGCTの配列2に存在する保存領域を解析した様子を示す説明図である。このドットマトリックス解析では、二つの配列の長さに対応した縦6個×横8個のマトリックスを作成しこのマトリックスの縦軸と横軸のそれぞれに沿って配列1と配列2を並べる。そして、縦軸の配列の各要素と横軸の配列の各要素を比較し、縦軸および横軸に同じ要素である塩基(または残基)がある場合にはその同じ塩基の縦軸および横軸の座標に該当するドットに印を付していく。
【0012】
図6においては該当するドットを印として濃色(強調)表示する。そして、配列1および配列2の間で保存領域が存在する場合には印を付したドットが対角線方向に並んで構成されこれを視覚的に確認することで保存領域を把握することができるようになっている。図6の点線で囲まれた部分で示すように、濃色(強調)表示したドットが対角線方向に並んでおり配列1のATGGCと配列2のATTGGCが類似しており保存領域となっていることが明らかとなっている。なお、配列1の塩基を相補鎖の塩基に変換する、すなわち、AをT、TをA、GをC、CをGに変換することによりreverse complement配列と配列2との間の保存領域を明らかとすることも可能である。この場合には、印を付したドットが、配列1の場合とは逆の対角線方向に並んで構成されこれを視覚的に確認することで保存領域を把握することができるようになっている。
【0013】
2つ目の手法は、マルチプルアライメントと呼ばれる手法で、複数の配列を並べたとき同じ要素が1つの列にできるだけ多く集まるような最適な並べ替えを行う手法である。図7は、マルチプルアライメントによる手法を示した説明図である。図7では15個のゲノム配列としてのアミノ酸配列に対してマルチプルアライメントを実行した結果で、各列に同じアミノ酸(類似したアミノ酸)が並ぶように、ギャップ文字(−)を配列中に挿入している。マルチプルアライメントは、そこに含まれるゲノム配列の間の進化的な歴史を表現したものとみることができる。
【0014】
もしミスマッチとして相互に異なるアミノ酸の個数が少なく、非常に良いマルチプルアライメントが得られるならば、それらのアミノ酸配列は共通の祖先から、比較的最近分かれてきたものと推測される。反対に、ミスマッチの個数が多く良いアライメントが得られないグループの間には、より複雑で遠い進化上の関係が存在する。あるゲノム配列はミスマッチの個数が少なく良く似ており、あるゲノム配列はミスマッチの個数が多く似ていない一群のゲノム配列のマルチプルアライメントを求められれば、それらのゲノム配列間の進化的関係を見出すことが可能である。
【0015】
最後に、3つ目の手法は、系統樹解析と呼ばれる手法である。これは互いに類縁のある塩基配列(あるいはアミノ酸配列)が含まれているファミリーの系統を解析し、進化過程でそのファミリーが派生してきた道筋を決定することである。図8は8つの種から得られたファミリーに含まれるゲノム配列に対して系統樹解析を行った様子を示す説明図である。ゲノム配列間の関係を、各ゲノム配列を枝先に配置したツリー構造の木として表し、木の内部における分岐関係を、異なるゲノム配列がどの程度の類縁関係にあるかを反映させて表示している。枝の長さは近縁/遠縁の度合いに対応しており、枝の長さが短いほど近縁の関係であることを示している。
【0016】
この系統樹解析では、類縁関係や近縁/遠縁の度合いを見ることにより個々の生物の種の進化において生じてきた変化の解析のみならず、ゲノム配列のファミリーの進化についても調べることが出来る。それにより、系統樹上の隣り合った枝を占めるゲノム配列が、最も近縁なゲノム配列だと決定できる。ある生物あるいは生物群においてゲノム配列としての遺伝子ファミリーが見出される場合、その遺伝子間の系統関係を調べれば、同じ機能をもつ遺伝子がどれかを予測するのに役立つ。これらの機能予測が得られれば、遺伝学的実験によってその機能を確認できる。系統樹解析は、例えばウィルスのような、急速に変化している生物種のおいて生じている変化を追うためにも使われる。ある集団内での変化の型の系統樹解析は、例えば、ある特定の遺伝子が自然選択を受けているかどうかといった、疫学などの応用にあたって大切な情報を明らかにする。また、従来のバイオチップにおいては、系統樹のノード等に対応して、複数の異なるターゲットの塩基配列に共通して存在する部分配列と特異的にはハイブリダイズするプローブを設計し、スポットしたものが提案されている(例えば、特許文献1参照。)。
【0017】
【特許文献1】特開2002−330768号公報
【発明の開示】
【発明が解決しようとする課題】
【0018】
従来の技術においては、ゲノム配列同士を比較して、そこから生物学的な意味を読み取るためには、上に示したような複数のゲノム配列間で保存されている保存領域を見つけ、そして、それがどのような種で共有されているか、つまりどのような進化を歩んできたかを調べることが必要である。
【0019】
しかしながら、上述のような従来の技術を用いても上に示した三つの方法を駆使しても、保存領域とその進化的な関係について、両者を包括的に理解するのは困難・あるいは非常に煩雑な手間を伴う。ドットマトリックス解析では二つのゲノム配列間の保存領域は分かるが、それはどの進化の段階から保存されているのかわからない。マルチプルアライメント解析では、inversionになって保存されていてもそれを検出することができない。また系統樹解析では、進化の過程は分かるが、具体的にどのようなゲノム配列が類縁関係で保存されているのか、そしてどの進化のレベルでinversionやinsertion、deletionが起こったのかどうかわからない。
【0020】
例えば、比較対象のゲノム配列のうち、進化的に近い生物種のファミリーで、共通した保存領域にはどのようなものがあるかを従来の方法で調べる場合を考える。研究者は、まず系統樹解析を行い、進化的に近いファミリーをみつける。そしてマルチプルアライメントを実行するか、あるいはドットマトリックス解析を行う。しかし、マルチプルアライメントを実行する場合、長い配列(数千塩基以上)を比較するには、実際的な問題として多大な時間を要する。また、マルチプルアライメントは、ある程度類似したゲノム配列を入力とすることが想定されているので、イントロン配列を多く含む場合や、入力配列が遺伝子以外の領域である場合、アライメントはうまくいかない。更にこの解析は、上にも述べたように、ゲノム配列中にinversionが起こっていてもそれを検出することができない。したがって、比較対象となるゲノム配列は非常に限られたものとなってくるという問題があった。
【0021】
またゲノム配列が、マルチプルアライメントに適した配列であったとしても、ファミリーの配列に共通して存在し、ファミリーでない配列には存在しない保存領域を目視で確認する必要がある。一方、ドットマトリックス解析では、この解析手法の性質上、一度に二つのゲノム配列しか比較できない。したがって、ファミリーの生物種で共通した保存領域を見つける場合、ファミリーの配列同士で繰り返しドットマトリックス解析を行って保存領域をみつけ、更にファミリーに属していない配列でその領域が保存されていないことを確かめなければならない。これはファミリーの数や全体の比較するゲノム配列数が大きくなると、ドットマトリックス解析で比較を行う作業量が膨大なものとなり、手に負えないものとなってしまうという問題があった。
【0022】
それ故本発明では、従来技術の問題点を鑑みてなされたものであり、その目的とするところは、ゲノム解析の対象となる種のゲノム配列から保存領域を検出し、各々の種間の関係や各保存領域の関係を明確に表示することが可能な進化過程を考慮した保存領域検出システムを提供することを目的とする。
【課題を解決するための手段】
【0023】
上記課題を解決するために、本発明は、複数のDNA配列のうちゲノム解析の対象となるゲノム配列の中に配列の変化を受けておらず進化的に保存されている保存領域を見つける進化過程を考慮した保存領域検出システムにおいて、
ゲノム配列に基づいて得られる系統樹を参照して、この系統樹を構成している中間ノードに属するゲノム配列を認識する配列認識手段と、
中間ノードに属するゲノム配列において存在している同一の文字列の位置から開始してゲノム配列内の保存領域を検出していく保存検出手段とを備えたことを特徴とする。
【0024】
このような発明においては、配列認識手段が系統樹を構成している中間ノードに属するゲノム配列を認識し、保存検出手段が中間ノードに属するゲノム配列において存在している同一の文字列の位置から開始してゲノム配列内の保存領域を検出していくので、正確にゲノム解析の対象となる種のゲノム配列から配列の変化を受けていない保存領域を検出することができる。
【0025】
また、上述の進化過程を考慮した保存領域検出システムにおいて、
前記保存検出手段は、
中間ノードに属する2つのゲノム配列において存在している同一の文字列の位置から開始してゲノム配列内の保存領域を検出していき、ミスマッチの文字の個数が所定の個数に達するまでの領域を保存領域として検出することとしても良い。
【0026】
このような発明においては、保存検出手段は、中間ノードに属する2つのゲノム配列において存在している同一の文字列の位置から開始してゲノム配列内の保存領域を検出していき、ミスマッチの文字の個数が所定の個数に達するまでの領域を保存領域として検出するので、全体的に略同一で配列の変化を受けておらず保存領域とみなすことができる領域を適切に保存領域として検出することができる。
【0027】
上述の進化過程を考慮した保存領域検出システムにおいて、
前記保存検出手段は、
中間ノードに属する複数のゲノム配列において存在している同一の文字列の位置から開始してゲノム配列内で検出した保存領域に基づいて、中間ノードを変えながら繰り返しこの検出した同一の保存領域を検出していき、全ての中間ノードに属するゲノム配列内の保存領域を検出しても良い。
【0028】
このような発明においては、保存検出手段は、中間ノードを変えながら繰り返しこの検出した同一の保存領域を検出していき、全ての中間ノードに属するゲノム配列内の保存領域を検出するので、系統樹を構成する全ての中間ノードに属するゲノム配列内の保存領域を検出できる。
【0029】
上述の進化過程を考慮した保存領域検出システムにおいて、
前記保存検出手段が検出したゲノム配列内の各保存領域をそれぞれ毎に異なる形態の線により構成し、前記系統樹上の中間ノードを形成する枝を、中間ノードに属するゲノム配列内の各保存領域に対応させた形態の線により構成し、前記各保存領域と系統樹を同時に表示する解析結果表示手段を備えたこととしても良い。
【0030】
このような発明においては、解析結果表示手段が各保存領域をそれぞれ毎に異なる形態の線により構成し、系統樹上の中間ノードを形成する枝を、中間ノードに属するゲノム配列内の各保存領域に対応させた形態の線により構成し、各保存領域と系統樹を同時に表示するので、研究者は各保存領域を明確に区別して参照することができ、また、各保存領域と系統樹上の中間ノードとの対応関係を参照して進化的に保存された保存領域を確認し、進化過程を推測することが可能である。
【0031】
上述の進化過程を考慮した保存領域検出システムにおいて、
前記解析結果表示手段は、
前記各保存領域を、既知のゲノム配列に関する情報と組み合わせて同時に表示することとしてもよい。
【0032】
このような発明においては、各保存領域に組み合わされた既知のゲノム配列に関する情報を参照して進化過程を推測することが可能である。
【0033】
上述の進化過程を考慮した保存領域検出システムにおいて、
前記解析結果表示手段は、
前記各保存領域を、各保存領域が含まれるゲノム配列と組み合わせ、各ゲノム配列間に含まれる同一の保存領域を関連付けて表示しても良い。
【0034】
このような発明においては、関連付けて表示された同一の保存領域の状況を参照して進化的に保存された保存領域を確認し、進化過程を推測することが可能である。
【0035】
上述の進化過程を考慮した保存領域検出システムにおいて、
任意の配列に基づいて、前記系統樹を構成している中間ノードに属するゲノム配列を検索する配列検索手段と、
前記配列検索手段が検索した結果得られたゲノム配列の情報を参照して、前記系統樹を構成している中間ノードに属するゲノム配列に関する情報を特定の表示方法で表示する特定表示手段を備えても良い。
【0036】
このような発明においては、特定の表示方法で表示されたゲノム配列に関する情報を参照して任意の配列が進化的に保存されている様子を確認し、進化過程を推測することが可能である。
【0037】
上述の進化過程を考慮した保存領域検出システムにおいて、
特定表示手段は、
前記配列検索手段が検索した結果得られたゲノム配列を、当該任意の配列部分を関連付けて表示することとしても良い。
【0038】
このような発明においては、関連付けて表示された当該任意の配列部分を参照して保存されている状況を確認し、進化過程を推測することが可能である。
【発明の効果】
【0039】
以上説明したように、本発明によれば、ゲノム解析の対象となる種のゲノム配列から保存領域を検出し、各々の種間の関係や各保存領域の関係を明確に表示することが可能である。
【発明を実施するための最良の形態】
【0040】
以下、図面を参照して本発明の実施の形態を説明する。
【0041】
図14は、本発明にかかる進化過程を考慮した保存領域検出システムの全体構成を示す説明図である。この保存領域検出システム100は、ゲノム解析において、比較される対象となるゲノム配列のデータである対象配列1401と、それらの各対象配列1401を用いて系統樹を構成するための情報である構成情報1413と、ゲノム解析の解析結果を画像等により表示するための表示装置1402と、保存領域検出システム100での数値や文書情報等の情報の入力や選択の操作を行うための入力手段であるキーボード1403やマウス1404と、ゲノム解析の解析結果のデータに参考情報として注釈付けする既知のゲノム配列及びこの既知のゲノム配列に付属する情報が格納されている配列DB1405と、後述するプログラムメモリ1407や図示しない記憶装置に格納されたプログラムを実行することにより保存領域の検出や系統樹のデータの構築や解析結果の表示等の各処理を行う中央処理装置1406(以下、CPU1406という。)と、中央処理装置1406が行う各処理に必要なプログラムを格納するプログラムメモリ1407と、中央処理装置1406での処理の際に必要な演算結果等のデータを一時的に格納するデータメモリ1411とを備えて構成されている。
【0042】
プログラムメモリ1407は、図14に示すように、入力された各対象配列1401からそれらの対象配列1401間で保存されている保存領域を検出する処理を行うための保存領域計算処理部1408と、各対象配列1401を用いて系統樹を構築する処理を行う系統樹計算処理部1409と、これら解析・計算結果を表示する処理を行うための分析結果表示処理プログラム1410とを備えている。これらのプログラムは、CD−ROM、DVD−ROM、MO、フロッピー(登録商標)ディスク等の記録媒体に格納し、CPU1406がこれらの記録媒体から読み出すことにより提供することもできるし、インターネット等の公衆網のネットワークを介してサーバからダウンロードして提供することもできる。
【0043】
配列DB1405は、CPU1406に接続された記憶装置に格納されていてもよいし、遠隔地に設置されたサーバコンピュータが管理する構成とし、そのサーバコンピュータ内のデータベースからインターネット等の公衆網のネットワーク等を介して配列DB1405に含まれている遺伝子データを取得するようにしてもよい。また、データメモリ1411は、プログラムの実行において入力データとして用いられる入力データ1412を含んでいる。
【0044】
図15は、対象配列1401の一例を示す説明図である。ここでは対象配列1401に該当する各ゲノム配列をFASTA形式により表示しており、ゲノム配列を識別するための名称等を「>」の後に表示し、その次の行から、ゲノム配列そのものを表示している。この他にも、ゲノム配列を表す形式として、GenBank形式やEMBL形式で表示することとしてもよい。
【0045】
図16は、各対象配列1401を用いて系統樹を構成するための構成情報1413の一例を示す説明図である。この構成情報1413では系統樹のリーフと枝の長さを対象配列1401の各ゲノム配列の名称に対応付けており一組の括弧及び数値により一つの中間ノードに関する情報を形成している(数値はその中間ノードの上位の位置の中間ノードまでの枝の長さを示している)。そしてその中間ノードが自己の位置よりも下位側に(系統樹上でリーフに近い)更に中間ノードを有しているときは、入れ子構造で表現する形式をとっている。すなわち、BNF記法で表示すると次のようになる。
【0046】
ノード::=(ノード,ノード):この中間ノードからその上位中間ノードまでの枝長|配列名:この葉から上位中間ノードまでの枝長
【0047】
そして、この構成情報1413では、一組の括弧に囲まれた2つの名称または中間ノードによりゲノム配列の近縁関係を示しており、この系統樹のルートに対応する中間ノード間の相対関係に関する情報が構成されている。例えば「(種1:15,種2:10):20」は後述する図9に表示された系統樹の902の部分の中間ノードを示しており、種1(リーフ)から種1と種2の分岐点までの枝長が15、種2から種1と種2の分岐点までの枝長が10、そして、この分岐点とその上の中間ノード(901に対応するノード)までの枝長が20であることを示している。この他にも、系統樹間の関係を表す形式として、Phylip形式・CLUSTAL形式・Distance Matrix形式により表示することとしても良い。
【0048】
図17は、対象配列1401に該当する全てのDNA(またはアミノ酸)配列に関する索引情報を作成するためのデータ構造を示す構成図である。この索引情報に含まれる配列KtupleArrayDはpk個の要素からなる配列で、pは配列を構成する要素の種類数を示しており、すなわちDNA配列の場合は4、アミノ酸配列の場合は20となる。kはtuple(文字列)の長さを示している。配列KtupleArrayDの配列の各要素には各tupleが割り当てられる。例えば対象配列1401がDNA配列で、kが2のとき、配列KtupleArrayDは16個の要素からなり、それぞれの要素には、AA・AT・AG・AC・TA・TT・TG・TC・GA・GT・GG・GC・CA・CT・CG・CCの16種類のtupleが割り当てられる。
【0049】
また、この配列KtupleArrayDの各要素には、その要素に割り当てられたtupleが対象配列1401中に最も後側に現れたtupleの位置を表す。その要素に割り当てられたtupleが配列中にない場合は、0で表す。
【0050】
配列IdxArrayDは対象配列1401と等しい長さの配列であり対象配列1401の各要素に割り当てられた要素からなる配列である。配列IdxArrayDの各要素は対象配列1401上の各位置に割り当てられており、それら各要素に割り当てられた文字から始まるtupleと同じtupleがその要素より前側の配列中に現れた場合には、その現れたもののうちそれら各要素の最も直前に現れた要素の位置を表す。また、もしそれら各要素と同じtupleが前に現れない場合には0で表す。
【0051】
図28は、対象配列1401としての配列GTCTCACGACACTCに対して作成された配列KtupleArrayDとIdxArrayDを表示した説明図である。この配列ではtuple TCは配列中の2番目、4番目、13番目に現れており、配列KtupleArrayDのTCに対応する要素(KtupleArrayD[8])に、tuple TCが対象配列1401中に最後に現れた位置13が表示されている。またIdxArrayD[13]には位置13に現れたtuple TCと同一のTCがその直前に現れた位置である「4」、IdxArrayD[4]には位置4に現れたtuple TCと同一のTCがその直前に現れた位置である「2」が表示されている。したがって、ここで示したように、特定のtupleが配列中のどこにあるかを、二つの配列KtupleArrayDとIdxArrayDを用いることで、高速に検索することが出来る。配列KtupleArrayRおよびIdxArrayRは、配列KtupleArrayDとIdxArrayDと同様に対象配列1401としてのDNA配列(またはアミノ酸配列)のreverse complement配列に対して、作成される。
【0052】
図18は、対象配列1401の保存領域を記録するためのデータ構造を示す説明図である。このデータ構造で示す構造体配列ConservedRegは、各対象配列1401毎に、保存領域が存在していれば作成されるものであり、保存領域を示す位置1800、保存領域の長さ1801、保存領域の向き(順方向か逆方向か)1802の各データから構成されている。
【0053】
図19は、各対象配列1401間の保存領域同士の関係を記録するためのデータ構造体ListOfConservedRegを示す説明図である。このデータ構造体は、構成情報1413上の各中間ノードで、保存領域毎に作られるものである。対象配列1401を識別するための配列名1900、この対象配列1401において作成されているいずれのConservedRegが対応しているかを示すために、配列名1900毎に作成された各構造体配列ConservedRegを識別するためのindex1901の各データから作成されている。
【0054】
図20は、図19で述べた関連する保存領域の集合を表す配列ListOfConservedRegを集めた配列AllOfConservedRegのデータ構造を示す説明図である。この配列AllOfConservedRegの各要素はListOfConservedRegへリンクしたポインタが表示されており、構成情報1413上の各中間ノード毎に、この配列AllOfConservedRegが1つ作成される。この配列AllOfConservedRegに該当する中間ノードに属するゲノム配列で保存されている異なる種類の保存領域のそれぞれを、各要素とListOfConservedRegとでリンクさせてこの配列によって表示している。なお、本実施の形態における進化過程を考慮した保存領域検出システムは、一般に使用されている各種の情報処理を行うための情報処理装置であるパーソナルコンピュータを用いて実現することも可能である。
【0055】
続いて、上述のような構成を有する本実施形態の進化過程を考慮した保存領域検出システムの動作について図21乃至図27に示すフローチャートを用いて詳細に説明する。図21乃至図27に示すフローチャートでは、CPU1406が処理を行うことにより、図9、図10、図11、図12、図13に示す画像のデータを表示させるために必要となる系統樹1413の各リーフに対するConservedRegと、保存領域の関連を保持する配列ListOfConservedRegと、配列AllOfConservedRegを求めるようになっている。以下に説明する動作では、対象配列1401および系統樹1413から、系統樹1413の各中間ノードに対して、これらの三つの配列を得るためのアルゴリズムを説明する。
【0056】
本実施の形態における進化過程を考慮した保存領域検出システム100の概略的な処理の流れを図21に示すフローチャートを用いて説明する。まず、進化過程を考慮した保存領域検出システム100のCPU1406は、研究者がフロッピー(登録商標)ディスクやCD−ROM等の外部記録媒体を用いて入力した対象配列1401と系統樹の構成情報1413のデータを読み込み、データメモリ1411内に格納して入力データ1412として保持する(ステップ2100)。このとき、構成情報1413については系統樹自体の情報を読み込まなくても、系統樹を構成するために必要となるパラメータ情報のみを入力しこのパラメータ情報に基づいてCPU1406が構成情報1413のデータを作成することとしても良い。
【0057】
次に、CPU1406は、保存領域を検出するためのパラメータk, w, mを読み込み、データメモリ1411の入力データ1412として保持する処理を行う(ステップ2101)。ここで、kはtupleの文字列の長さ、wはウィンドウの長さ、mはウィンドウ内で許容されるミスマッチの数、即ち保存領域を検出する2つのゲノム配列で相互に異なる文字の最大限度数を示している。保存領域を検出する際に保存領域として検出を行っている領域中の連続するw個の文字(塩基または残基)に対し、2つの配列で相互に異なる文字であるミスマッチの個数が最大m個までを許容するようになっている。例えば、図29では、ウィンドウサイズwを5、許容されるミスマッチmの数を1としたときの配列Aと配列Bの2つのゲノム配列間の保存領域の場所を示している。この場合、連続する5個の文字のペア毎に同一の文字の配列を検出して保存領域を検出していった際にミスマッチの個数が全ての5個の文字のペア毎で1個以内となっており領域2601は二つの配列間の保存領域になっている。
【0058】
次に、CPU1406は、対象配列1401がDNA配列であり、それをアミノ酸配列として比較したい場合、全てのDNA配列をアミノ酸配列に変換する処理を行う(ステップ2102)。
【0059】
次に、CPU1406は、各対象配列1401に対して上述のように図17乃至図20に示す索引情報、すなわちKtupleArrayD[ ], IdxArrayD[ ], KtupleArrayR[ ], IdxArrayR[ ] を作成する処理を行う(ステップ2103)。この処理の詳細については後述する。
【0060】
次に、CPU1406は、構成情報1413により構成される系統樹の全ての中間ノードに対して、その中間ノードに属するゲノム配列から全ての保存領域を検出したか否かを判定する処理を行う(ステップ2104)。
【0061】
次に、CPU1406は、全ての保存領域を検出していない場合には(ステップ2104のNO)、構成情報1413により構成される系統樹の全ての中間ノードに対して、その中間ノードに属するゲノム配列のうち保存領域を未だ検出していないものを選択する処理を行う(ステップ2105)。
【0062】
次に、CPU1406は、この選択した各ゲノム配列の間で保存されている保存領域を検出する処理を行う(ステップ2106)。この保存領域を検出する処理は後で詳しく述べる。この保存領域を検出する処理が終了すると次にステップ2104の処理を実行する。
【0063】
次に、CPU1406は、全ての保存領域を検出した場合には(ステップ2104のYES)、保存領域に基づいて配列DB1405内を検索し、同一の保存領域を有する種のゲノム配列の情報等の保存領域に関連する情報等があればこの関連情報を以上のゲノム解析の結果に付与する。そして、ゲノム解析の結果を表示装置1402に表示する処理を行い(ステップ2107)、全体の処理を終了する。
【0064】
続いて、上述のステップ2103における、各対象配列1401に対して索引情報、すなわちKtupleArrayD[ ], IdxArrayD[ ], KtupleArrayR[ ], IdxArrayR[ ] を作成する処理について図22に示すフローチャートを用いて詳細に説明する。まず、CPU1406は、個々の対象配列1401に対応するKtupleArrayD[ ], IdxArrayD[ ], KtupleArrayR[ ], IdxArrayR[ ]の全要素を0で初期化する処理を行う(ステップ2200)。
【0065】
次に、CPU1406は、変数j=1を設定する処理を行う(ステップ2201)。
【0066】
次に、CPU1406は、変数jが対象配列1401の配列終端側で最も後側のtupleに該当する要素の位置を示す数値、すなわちj=配列長−kとなっているか否かを判定する(ステップ2202)。j=配列長−kとなっている場合には(ステップ2202のYES)、ステップ2207の処理を実行する。
【0067】
次に、CPU1406は、j=配列長−kとなっていない場合には(ステップ2202のNO)、対象配列1401のj番目からはじまるk個の文字列からなるtupleをKと設定し、このKに割り当てられている配列KtupleArrayD[ ]の要素インデックス(即ち配列KtupleArrayD[ ]内の要素の位置を示す要素番号)を iと設定し、配列KtupleArrayD[ ]の配列中の各要素を構成していく処理を行う(ステップ2203)。例えば図28に示す配列KtupleArrayD[
]では、tuple KがTCの場合には、i は8番目の要素インデックスを示す「8」となっている。
【0068】
次に、CPU1406は、IndexArrayD[j]にKtupleArrayD[i]の数値を代入し、また、KtupleArrayD[i] に j を入力する(ステップ2204、2205)。KtupleArrayD[i]には、常に対象配列1401の配列中の最も後側に現れたtupleの位置を表示するため、この二つのステップ(2204,2205)は、変数jの数値をインクリメントしていき(ステップ2206)、配列中に新しくKに該当するtupleが後側に現れるたびに、KtupleArrayD[i]の数値を更新し、IdxArrayD[j]にその更新前のKtupleArrayD[i]の数値を表示していき、更新していく処理となっている。
【0069】
次に、以上のステップ2202〜2206の処理を全ての変数jに対して実行することにより、図28に示すような、配列IndexArrayD[j]とKtupleArrayD[i]の索引情報を作成する。
【0070】
次に、CPU1406は、以上のステップ2202〜2206の処理を全ての変数jに対して実行し、j=配列長−kとなっている場合には(ステップ2202のYES)、対象配列1401のreverse complement配列を改めて対象配列に設定する処理を行う(ステップ2207)。
【0071】
次に、CPU1406は、このreverse
complement配列に対する索引情報の配列IndexArrayR[j]とKtupleArrayR[i]を作成する処理を行う(ステップ2208〜2213)。CPU1406は、上述の対象配列1401に対して以上のステップ2202〜2206の処理と同様の処理を実行していき配列IndexArrayR[j]とKtupleArrayR[i]を作成する。以上のステップ2208〜2213の処理を全ての変数jに対して実行し、j=配列長−kとなっている場合には(ステップ2209のYES)、処理を終了する。
【0072】
続いて、上述のステップ2106における、選択した各ゲノム配列の間で保存されている保存領域を検出する処理について図23〜図26で一体的に構成されたフローチャートを用いて詳細に説明する。まず、CPU1406は、上述のステップ2105で選択した保存領域の検出対象となる各対象配列1401のそれぞれに対して、対象配列1401を識別する情報seq1, seq2, …, seqMを設定する処理を行う(ステップ2300)。
【0073】
次に、CPU1406は、変数i=1を設定する処理を行う(ステップ2301)。
【0074】
次に、CPU1406は、変数iが配列KtupleArrayDの終端位置を示す数値、すなわちi> pkとなっているか否かを判定する(ステップ2302)。i> pkとなっている場合には(ステップ2302のYES)、処理を終了する。
【0075】
次に、CPU1406は、定数c1にseq1の配列の配列KtupleArrayD[i]の数値を代入する処理を行う(ステップ2303)。上述の2103においてseq1の配列に対して作成したKtupleArrayD[i]の数値をc1に代入する。
【0076】
次に、CPU1406は、c1が0であるか否かを判定する処理を行う(ステップ2304)。c1が0である場合には(ステップ2304のYES)、ステップ2328の処理を実行する。
【0077】
次に、CPU1406は、c1が0でない場合には(ステップ2304のNO)、定数c2にseq2の配列の配列KtupleArrayD[i]の数値を代入する処理を行う(ステップ2305)。上述の2103においてseq2の配列に対して作成したKtupleArrayD[i]の数値をc2に代入する。
【0078】
次に、CPU1406は、c2が0であるか否かを判定する処理を行う(ステップ2306)。c2が0である場合には(ステップ2306のYES)、ステップ2317の処理を実行する。
【0079】
次に、CPU1406は、c2が0でない場合には(ステップ2306のNO)、配列seq1のKtupleArrayD[i]に割り当てられたtupleがseq1およびseq2の配列中に存在することとなっており、これら2つのゲノム配列seq1のc1番目とseq2のc2番目の位置に存在するこの同一のtupleから開始して保存領域を検出していく処理を行う(ステップ2307)。これら2つのゲノム配列seq1、seq2内の検出していく処理の開始位置からアライメントの連続するw個の文字列(塩基または残基)毎に保存領域を検出していき、seq1のc1番目とseq2のc2番目からアライメントを伸張させ保存領域として一致している文字列の個数を伸張させていく。そして、ゲノム配列seq1およびseq2間で相互に異なる文字であるミスマッチの個数がm個以下となっている文字列となっている領域の範囲内で保存領域を拡大させ、ミスマッチの個数がm個より多い文字列が存在した時点でその位置を保存領域の境界位置とする。このようにして保存領域を検出していき保存領域が存在する場合にはこれをCと設定する処理を行う。
【0080】
次に、CPU1406は、ステップ2307において保存領域が存在したか否かを判定する処理を行う(ステップ2308)。保存領域が存在しなかった場合には(ステップ2308のNO)、ステップ2316の処理を実行し、CPU1406は、c2にseq2のKtupleArrayD[c2]を代入する処理を行い、ステップ2306以降の処理を実行する(ステップ2316)。
【0081】
次に、CPU1406は、保存領域が存在した場合には(ステップ2308のYES)、残りの検出対象となる対象配列1401、即ちseq3,…,seqMのゲノム配列中で同一の保存領域Cを検出する処理を行う(ステップ2309)。変数jに対してj=3と設定する処理を行う。
【0082】
次に、CPU1406は、変数jが対象配列1401の最後のゲノム配列を示す数値、すなわちj>Mとなっているか否かを判定する(ステップ2310)。
【0083】
次に、CPU1406は、j>Mとなっていない場合には(ステップ2310のNO)、ゲノム配列seq jの配列中に存在する保存領域Cを検出する処理を行う(ステップ2311)。このseq jの配列中で保存領域Cを検出する処理については、後で詳しく説明する。
【0084】
次に、CPU1406は、ステップ2311において保存領域Cが存在したか否かを判定する処理を行う(ステップ2312)。保存領域Cが存在しなかった場合には(ステップ2312のNO)、ステップ2316の処理を実行し、CPU1406は、c2にseq2のKtupleArrayD[c2]を代入する処理を行い、ステップ2306以降の処理を実行する(ステップ2316)。
【0085】
次に、CPU1406は、保存領域Cが存在した場合には(ステップ2312のYES)、変数jをひとつインクリメントし、ステップ2310以降の処理を再度実行する(ステップ2313)。そして、ステップ2310において、j>Mとなっている場合には(ステップ2310のYES)、ステップ2314の処理を実行し、CPU1406は、以上の処理で検出した各対象配列1401における保存領域CおよびCが配列seq1,…,seqMで現れた位置等の情報をConservedReg[
], ListOfConservedReg[ ], AllOfConservedReg[ ]に登録し、ステップ2316の処理を実行する。
【0086】
次に、CPU1406は、ステップ2306においてc2が0である場合には(ステップ2306のYES)、c2にseq2のKtupleArrayR[i]を代入する処理を行う(ステップ2317)。上述の2103においてseq2の配列に対して作成したKtupleArrayR[i]の数値をc2に代入する。
【0087】
次に、CPU1406は、c2が0であるか否かを判定する処理を行う(ステップ2318)。c2が0である場合には(ステップ2318のYES)、ステップ2315の処理を実行し、CPU1406は、c1にseq1のIdxArrayD[c1]を代入する処理を行い、ステップ2304以降の処理を実行する(ステップ2315)。
【0088】
次に、CPU1406は、c2が0でない場合には(ステップ2318のNO)、配列seq1のKtupleArrayD[i]に割り当てられたtupleがseq1の配列およびseq2のreverse complement配列中に存在することとなっており、これら2つのゲノム配列seq1のc1番目とseq2のreverse complement配列中のc2番目の位置に存在するこの同一のtupleから開始して保存領域を検出していく処理を行う(ステップ2319)。これは上述のステップ2307の処理と同様であり説明を省略する。
【0089】
次に、CPU1406は、ステップ2319において保存領域が存在したか否かを判定する処理を行う(ステップ2320)。保存領域が存在しなかった場合には(ステップ2320のNO)、ステップ2327の処理を実行し、CPU1406は、c2にseq2のIdxArrayR[c2]を代入する処理を行い、ステップ2318以降の処理を実行する(ステップ2327)。
【0090】
次に、CPU1406は、保存領域が存在した場合には(ステップ2320のYES)、残りの検出対象となる対象配列1401、即ちseq3,…,seqMのゲノム配列中で同一の保存領域Cを検出する処理を行う(ステップ2321)。変数jに対してj=3と設定する処理を行う。
【0091】
次に、CPU1406は、変数jが対象配列1401の最後のゲノム配列を示す数値、すなわちj>Mとなっているか否かを判定する(ステップ2322)。
【0092】
次に、CPU1406は、j>Mとなっていない場合には(ステップ2322のNO)、ゲノム配列seq jの配列中に存在する保存領域Cを検出する処理を行う(ステップ2323)。このseq jの配列中で保存領域Cを検出する処理については、後で詳しく説明する。
【0093】
次に、CPU1406は、ステップ2323において保存領域Cが存在したか否かを判定する処理を行う(ステップ2324)。保存領域Cが存在しなかった場合には(ステップ2324のNO)、ステップ2327の処理を実行し、CPU1406は、c2にseq2のIdxArrayR[c2]を代入する処理を行い、ステップ2318以降の処理を実行する(ステップ2327)。
【0094】
次に、CPU1406は、保存領域Cが存在した場合には(ステップ2324のYES)、変数jをひとつインクリメントし、ステップ2322以降の処理を再度実行する(ステップ2325)。そして、ステップ2322において、j>Mとなっている場合には(ステップ2322のYES)、ステップ2326の処理を実行し、CPU1406は、以上の処理で検出した各対象配列1401における保存領域CおよびCが配列seq1,…,seqMで現れた位置等の情報をConservedReg[
], ListOfConservedReg[ ], AllOfConservedReg[ ]に登録し、ステップ2327の処理を実行する。
【0095】
次に、CPU1406は、ステップ2304においてc1が0である場合には(ステップ2304のYES)、c1にseq1のKtupleArrayR[i]を代入する処理を行う(ステップ2328)。上述の2103においてseq1の配列に対して作成したKtupleArrayR[i]の数値をc1に代入する。
【0096】
次に、CPU1406は、c1が0であるか否かを判定する処理を行う(ステップ2329)。c1が0である場合には(ステップ2329のYES)、ステップ2342の処理を実行し、CPU1406は、変数iをひとつインクリメントし、ステップ2302以降の処理を実行する(ステップ2342)。
【0097】
次に、CPU1406は、c2にseq2のKtupleArrayD[i]を代入する処理を行う(ステップ2330)。上述の2103においてseq2の配列に対して作成したKtupleArrayD[i]の数値をc2に代入する。
【0098】
次に、CPU1406は、c2が0であるか否かを判定する処理を行う(ステップ2331)。C2が0である場合には(ステップ2331のYES)、ステップ2343以降の処理を実行する。
【0099】
次に、CPU1406は、c2が0でない場合には(ステップ2331のNO)、seq1のreverse complement配列のKtupleArrayR[i]に割り当てられたtupleがseq1のreverse
complement配列中およびseq2の配列に存在することとなっており、これら2つのゲノム配列seq1のreverse complement配列中のc1番目とseq2のc2番目の位置に存在するこの同一のtupleから開始して保存領域を検出していく処理を行う(ステップ2332)。これは上述のステップ2307の処理と同様であり説明を省略する。
【0100】
次に、CPU1406は、ステップ2332において保存領域が存在したか否かを判定する処理を行う(ステップ2333)。保存領域が存在しなかった場合には(ステップ2333のNO)、ステップ2341の処理を実行し、CPU1406は、c2にseq2のIdxArrayD[c2]を代入する処理を行い、ステップ2331以降の処理を実行する(ステップ2341)。
【0101】
次に、CPU1406は、保存領域が存在した場合には(ステップ2333のYES)、残りの検出対象となる対象配列1401、即ちseq3,…,seqMのゲノム配列中で同一の保存領域Cを検出する処理を行う(ステップ2333)。変数jに対してj=3と設定する処理を行う(ステップ2334)。
【0102】
次に、CPU1406は、変数jが対象配列1401の最後のゲノム配列を示す数値、すなわちj>Mとなっているか否かを判定する(ステップ2335)。
【0103】
次に、CPU1406は、j>Mとなっていない場合には(ステップ2335のNO)、ゲノム配列seq jの配列中に存在する保存領域Cを検出する処理を行う(ステップ2336)。このseq jの配列中で保存領域Cを検出する処理については、後で詳しく説明する。
【0104】
次に、CPU1406は、ステップ2336において保存領域Cが存在したか否かを判定する処理を行う(ステップ2337)。保存領域Cが存在しなかった場合には(ステップ2337のNO)、ステップ2341以降の処理を実行する。
【0105】
次に、CPU1406は、保存領域Cが存在した場合には(ステップ2337のYES)、変数jをひとつインクリメントし、ステップ2335以降の処理を再度実行する(ステップ2338)。そして、ステップ2335において、j>Mとなっている場合には(ステップ2335のYES)、ステップ2339の処理を実行し、CPU1406は、以上の処理で検出した各対象配列1401における保存領域CおよびCが配列seq1,…,seqMで現れた位置等の情報をConservedReg[
], ListOfConservedReg[ ], AllOfConservedReg[ ]に登録し、ステップ2341の処理を実行する。
【0106】
次に、CPU1406は、ステップ2331においてc2が0である場合には(ステップ2331のYES)、c2にseq2のKtupleArrayR[i]を代入する処理を行う(ステップ2343)。上述の2103においてseq2の配列に対して作成したKtupleArrayR[i]の数値をc2に代入する。
【0107】
次に、CPU1406は、c2が0であるか否かを判定する処理を行う(ステップ2344)。c2が0である場合には(ステップ2344のYES)、ステップ2340の処理を実行し、CPU1406は、c1にseq1のIdxArrayR[c1]を代入する処理を行い、ステップ2329以降の処理を実行する(ステップ2340)。
【0108】
次に、CPU1406は、c2が0でない場合には(ステップ2344のNO)、seq1のreverse complement配列のKtupleArrayR[i]に割り当てられたtupleがseq1のreverse
complement配列中およびseq2のreverse complement配列中に存在することとなっており、これら2つのゲノム配列seq1のreverse complement配列中のc1番目とseq2のreverse
complement配列中のc2番目の位置に存在するこの同一のtupleから開始して保存領域を検出していく処理を行う(ステップ2345)。これは上述のステップ2307の処理と同様であり説明を省略する。
【0109】
次に、CPU1406は、ステップ2345において保存領域が存在したか否かを判定する処理を行う(ステップ2346)。保存領域が存在しなかった場合には(ステップ2346のNO)、ステップ2353の処理を実行し、CPU1406は、c2にseq2のIdxArrayR[c2]を代入する処理を行い、ステップ2344以降の処理を実行する(ステップ2353)。
【0110】
次に、CPU1406は、保存領域が存在した場合には(ステップ2346のYES)、残りの検出対象となる対象配列1401、即ちseq3,…,seqMのゲノム配列中で同一の保存領域Cを検出する処理を行う(ステップ2347)。変数jに対してj=3と設定する処理を行う。
【0111】
次に、CPU1406は、変数jが対象配列1401の最後のゲノム配列を示す数値、すなわちj>Mとなっているか否かを判定する(ステップ2348)。
【0112】
次に、CPU1406は、j>Mとなっていない場合には(ステップ2348のNO)、ゲノム配列seq jの配列中に存在する保存領域Cを検出する処理を行う(ステップ2349)。このseq jの配列中で保存領域Cを検出する処理については、後で詳しく説明する。
【0113】
次に、CPU1406は、ステップ2349において保存領域Cが存在したか否かを判定する処理を行う(ステップ2350)。保存領域Cが存在しなかった場合には(ステップ2350のNO)、ステップ2353以降の処理を実行する。
【0114】
次に、CPU1406は、保存領域Cが存在した場合には(ステップ2350のYES)、変数jをひとつインクリメントし、ステップ2348以降の処理を再度実行する(ステップ2351)。そして、ステップ2348において、j>Mとなっている場合には(ステップ2348のYES)、ステップ2352の処理を実行し、CPU1406は、以上の処理で検出した各対象配列1401における保存領域CおよびCが配列seq1,…,seqMで現れた位置等の情報をConservedReg[
], ListOfConservedReg[ ], AllOfConservedReg[ ]に登録し、ステップ2353の処理を実行する。以上のようにして、選択した各ゲノム配列の間で保存されている保存領域を検出する処理を行う。
【0115】
続いて、上述のステップ2311、2323、2336、2349における、ゲノム配列seq jの配列中に存在する保存領域Cを検出するについて図27で示すフローチャートを用いて詳細に説明する。まず、CPU1406は、保存領域C内の最も前側に位置する先頭tupleに該当するindexに変数iを設定する処理を行う(ステップ2400)。
【0116】
次に、CPU1406は、ゲノム配列seq j のKtupleArrayD[i]の値をc1と設定する処理を行う(ステップ2401)。
【0117】
次に、CPU1406は、c1が0であるか否かを判定する処理を行う(ステップ2402)。c1が0である場合には(ステップ2402のYES)、ステップ2406の処理を実行し、CPU1406は、c1にseqjのKtupleArrayR[i]を代入する処理を行い、ステップ2407以降の処理を実行する(ステップ2406)。
【0118】
次に、CPU1406は、c1が0でない場合には(ステップ2402のNO)、保存領域Cの先頭tupleがseqjの配列中に存在することとなっており、ゲノム配列seqjのc1番目から開始して、ステップ2307、2319、2332、2345で検出した保存領域Cのデータに基づいて保存領域を検出していく処理を行う(ステップ2403、2404)。これらゲノム配列seqj内の検出していく処理の開始位置および保存領域C内の先頭位置から文字列を比較していき、アライメントの連続するw個の文字列(塩基または残基)毎に保存領域を検出していき、seqjのc1番目からアライメントを伸張させ保存領域Cと一致している文字列の個数を伸張させていく。そして、ゲノム配列seqjおよび保存領域C間で相互に異なる文字であるミスマッチの個数がm個以下となっている文字列となっている領域の範囲内で保存領域を拡大させ、ミスマッチの個数がm個より多い文字列が存在した時点でその位置をゲノム配列seqj内での保存領域の境界位置とする。このようにして保存領域を検出していき保存領域が存在する場合にはこれを一時的にデータメモリ1411に格納する処理を行う。この検出した保存領域が保存領域Cよりも短い場合であっても、この検出した保存領域を改めてゲノム配列seqjにおける保存領域Cとして設定しデータメモリ1411に格納する処理を行う。
【0119】
次に、CPU1406は、c1にseqjのIdxArrayD[c1]を代入する処理を行い、ステップ2402以降の処理を実行する(ステップ2405)。
【0120】
次に、CPU1406は、ステップ2402においてc1が0である場合には(ステップ2402のYES)、ステップ2406の処理を実行し、CPU1406は、c1にseqjのKtupleArrayR[i]を代入する処理を行う(ステップ2406)。
【0121】
次に、CPU1406は、c1が0であるか否かを判定する処理を行う(ステップ2407)。c1が0である場合には(ステップ2407のYES)、処理を終了する。
【0122】
次に、CPU1406は、c1が0でない場合には(ステップ2407のNO)、保存領域Cの先頭tupleがseqjのreverse
complement配列中に存在することとなっており、ゲノム配列seqjのreverse complement配列中のc1番目から開始して、ステップ2307、2319、2332、2345で検出した保存領域Cのデータに基づいて保存領域を検出していく処理を行う(ステップ2408、2409)。これは上述のステップ2403、2404の処理と同様であり説明を省略する。
【0123】
次に、CPU1406は、c1にseqjのIdxArrayR[c1]を代入する処理を行い、ステップ2407以降の処理を実行する(ステップ2410)。
【0124】
CPU1406が以上説明した進化過程を考慮した保存領域検出システム100の動作を行うことにより、構成情報1413により構成される系統樹に属する中間ノードに属する各リーフに対する対象配列1401内で保存されている保存領域を検出し構造体配列ConservedRegと、保存領域の関連を保持する配列ListOfConservedRegと、配列AllOfConservedRegが求められる。そして、CPU1406は、以下に説明するような図9、図10、図11、図12、図13に示す画像のデータを作成し表示装置1402に表示させる処理を行う。
【0125】
図9は、構造体配列ConservedRegと、配列ListOfConservedRegと、配列AllOfConservedRegのデータを用いて作成した系統樹の様子を示す説明図である。この系統樹では、表示画面の左半分に対象配列1401の名称(例えば種1〜種6)を用いて構成された系統樹、右半分に各対象配列1401に対応するゲノム配列上の保存領域が表示されている。系統樹の各枝は、各対象配列1401毎に異なる色や実線、点線、一点鎖線等の異なる形態の線で表示されている。これにより配列ファミリーを識別するようになっており、例えば、線901は種1、種2、種3、種4のファミリーを表し、線902は種1、種2のファミリーを表している。図9では、各枝を識別するために色と線の形態を変えているが、実際にはこれ以外の表現方法でもよく、例えば、線の近くにタグや番号、名称等を表示する実現方法を用いても良い。
【0126】
また図9の系統樹の右側には、各対象配列1401に対して、保存領域の位置と、その保存領域が系統樹で保存されているレベルを模式的に表示している。系統樹のレベルは、左半分の系統樹の枝の色・線の形態に対応しており、例えば種1と種2でのみ保存されている領域は種1と種2が属している中間ノードを形成する線902と同一の色および形態の線を用いて示した905の部分となっている。同様に、種1、種2、種3、種4でのみ保存されている領域は線901と同一の色および形態の線を用いて示した903に示された部分で、全ての対象配列1401(種1〜種6)で保存されている領域は線901の上位側の線と同一の色および形態の線を用いて示した904に示された部分である。遠縁の種同士で保存されているものは、近縁の種同士でも保存されているはずであり、図9の表示結果では、系統樹において根に近いところの線で表された保存領域は、葉に近いところの全ての対象配列1401内に存在していることが表示されている。
【0127】
図10は、図9で示した対象配列1401としての種1の保存領域を実際の塩基配列(またはアミノ酸配列)として表示した説明図である。図10により研究者は、対象配列1401の保存領域のDNA(またはアミノ酸)配列を知ることが可能となっている。図10の図中で矢印の領域は、種1の配列をインターネット等の公衆網やローカルネットワーク上に設置されたデータベースに対して、このDNA(またはアミノ酸)配列に基づいて検索し、その結果をマッピングすることによって表示したものである(矢印の向きは検索配列の方向)。研究者は、この結果を参照してこの保存領域のDNA(またはアミノ酸)配列と既知の情報の対応関係を知ることもできる。図中では、保存領域で既知の結果が見つかった状況を示しており、研究者はこれにより、保存領域の生物学的意味を知ることができるようになっている。
【0128】
図11は、図9で示した各対象配列1401内の各保存領域の間の関係を示した説明図である。線の色・形状は図9の右半分において保存領域を表示した線に対応している。表示対象となる対象配列1401(図11の場合、種1・種2・種3・種4)を選ぶためには、例えば図9の表示画面上において901等の保存領域が表示されている線をマウス1404により選択操作して、このような表示をするかどうかのメニューを出せばよい。あるいは任意の配列集合を、入力メニューから選択操作して表示させることとしても良い。図11では、画面左寄りのの保存領域1101は種1、種2、種3では同じ向きだが、種4では向きが異なっている。これを参照することにより研究者は、進化のある時点で、種4でのみinversionが起こって向きが変わったか、あるいは種1・種2・種3の全てがinversionによって向きが変わった事実等を推測することが可能となり、これから進化の過程を知る手がかりとすることができる。
【0129】
図12も、図11と同様に図9で示した各対象配列1401内の各保存領域の間の関係を示した説明図である。図12では、図9の系統樹内の種5と種6を対象として表示している。この図12の画面を参照することにより研究者は、領域1201が、種5では2つ、種6ではひとつありこのことから種5が過去に領域1201を重複した事実等を推測できる。同様に領域1202は、過去に種6で同領域が重複した事実等を推測できる。
【0130】
図13は、図9で示した系統樹内の種に対応する保存領域について他の種にも存在している状況を示した説明図である。図13では、種5の1301領域について、これと同様の配列が他の種にあるかどうか検索し、種3と種6でそれが発見された状況を示している。見つかった配列については、種の名称を強調して明確に表示している。ここで図13の画面を参照して研究者は、領域1301が種3でみつかったことの原因として、ひとつは進化系統樹そのものが間違っていたこと、そしてもうひとつは、SINE配列やLINE配列などレトロトランスポゾン配列が挿入されたことが考えられる等の推測を行うことができる。逆にこのことを用いて、系統樹が正しいかどうかを、見つかった保存領域に対して繰り返し検索を行うことで確認する利用形態も実現できる。
【0131】
以上説明したように、本実施の形態における進化過程を考慮した保存領域検出システム100では、CPU1406がゲノム解析の対象となる対象配列1401のデータに対してKtupleArrayD[ ], IdxArrayD[ ], KtupleArrayR[ ], IdxArrayR[ ]の索引情報を作成する処理を行い、構成情報1413により構成される系統樹に属する中間ノードに属する各リーフに対する対象配列1401内で保存されている保存領域を検出し構造体配列ConservedRegと、保存領域の関連を保持する配列ListOfConservedRegと、配列AllOfConservedRegを求める処理を行う。
【0132】
そして、CPU1406は、構造体配列ConservedRegと、配列ListOfConservedRegと、配列AllOfConservedRegのデータを用いて系統樹や系統樹を構成する各対象配列1401の実際のゲノム配列、各対象配列1401内の各保存領域の間の関係を示した表示データを作成し、ゲノム配列同士の保存領域を進化過程と対応付けて系統樹の情報と併せて表示画面1402に表示するので、研究者は、これを参照して各対象配列1401の種の保存領域の進化の過程を推測し、進化の過程を手がかりとして利用することが可能である。そして、より本質的な生物学の理解を得られることが期待される。
【0133】
(他の実施の形態)
図21および図22で示すフローチャートを用いて行った処理では、対象配列1401や構成情報1413のデータをもちいて、保存領域の検出対象となるゲノム配列を選択しているが、これに限られず、対象配列1401以外の任意のゲノム配列の集合に対しても、この処理を実行することが可能である。その場合には、図21のステップ2104の処理を実行せずスキップし、ステップ2105の処理で保存領域の検出対象となるゲノム配列として、対象配列1401以外の「任意の配列の集合」を選ぶようにすれば良い。
【0134】
また、図13のような解析結果を得るには、これは図24に示すフローチャートを用いた処理で説明した「配列seq j内に存在する保存領域Cを検出する処理」を全ての対象配列1401に対して実行すればよい。この処理によって保存領域Cが他の対象配列1401としてのゲノム配列でも検出されれば、そのゲノム配列中の保存領域Cの位置を記録することによって、図13で示す表示結果を得ることができる。
【産業上の利用可能性】
【0135】
複数のDNA(またはアミノ酸)配列から、ゲノム配列を比較してゲノム配列中における意味を調べるゲノム解析に関し、特に、進化の過程で保存されている保存領域を見つけ、表示する進化過程を考慮した保存領域検出システムにおいて利用することが可能である。
【図面の簡単な説明】
【0136】
【図1】進化におけるゲノム配列の変化のうちsubstitutionについて説明する説明図である。
【図2】進化におけるゲノム配列の変化のうちinsertionについて説明する説明図である。
【図3】進化におけるゲノム配列の変化のうちdeletionについて説明する説明図である。
【図4】進化におけるゲノム配列の変化のうちinversionについて説明する説明図である。
【図5】祖先配列のタイプであるオーソログとパラログについて説明する説明図である。
【図6】ドットマトリックス解析の例を示す説明図である。
【図7】マルチプルアライメント解析の例を示す説明図である。
【図8】系統樹解析の例を示す説明図である。
【図9】系統樹と保存領域の関係を組み合わせて表示した画面を示す説明図である。
【図10】保存領域と既知の情報を組み合わせて表示した画面を示す説明図である。
【図11】複数の配列で保存領域を対応付けて表示した画面を示す説明図である。
【図12】複数の配列で保存領域を対応付けて表示した画面を示す説明図である。
【図13】ある配列で見つかった保存領域を、他の配列に対して検索し、その検索結果を表示する、本発明の表示例のひとつである。
【図14】本実施の形態における進化過程を考慮した保存領域検出システム100のシステム構成を概略的に示す機能ブロック図である。
【図15】本実施の形態における進化過程を考慮した保存領域検出システム100の対象配列1401のデータ構成を示す説明図である。
【図16】本実施の形態における進化過程を考慮した保存領域検出システム100の構成情報1413のデータ構成を示す説明図である。
【図17】本実施の形態における進化過程を考慮した保存領域検出システム100において、対象配列1401の索引情報を表示するためのデータ構造を示す説明図である。
【図18】本実施の形態における進化過程を考慮した保存領域検出システム100において、対象配列1401の保存領域を記録するためのデータ構造を示す説明図である。
【図19】本実施の形態における進化過程を考慮した保存領域検出システム100において、対象配列1401間の保存領域同士の対応関係を記録するためのデータ構造体を示す説明図である。
【図20】本実施の形態における進化過程を考慮した保存領域検出システム100において、異なる種類の保存領域を記録するためのデータ構造を示す説明図である。
【図21】本実施の形態における進化過程を考慮した保存領域検出システム100において、全体の処理の流れを概略的に示すフローチャートである。
【図22】本実施の形態における進化過程を考慮した保存領域検出システム100において、各対象配列1401に対して索引情報を作成する処理を詳細に示すフローチャートである。
【図23】本実施の形態における進化過程を考慮した保存領域検出システム100において、保存領域を検出する処理を詳細に示すフローチャートである。
【図24】本実施の形態における進化過程を考慮した保存領域検出システム100において、保存領域を検出する処理を詳細に示すフローチャートである。
【図25】本発明の進化過程を考慮した保存領域検出システムにおいて、保存領域を算出する処理を詳細に示すフローチャートである。
【図26】本実施の形態における進化過程を考慮した保存領域検出システム100において、保存領域を検出する処理を詳細に示すフローチャートである。
【図27】本実施の形態における進化過程を考慮した保存領域検出システム100において、ゲノム配列の中の保存領域を検出する処理の流れを詳細に示すフローチャートである。
【図28】本実施の形態における進化過程を考慮した保存領域検出システム100において、配列データKtupleArrayDとIdxArrayDの一例を示した説明図である。
【図29】本実施の形態における進化過程を考慮した保存領域検出システム100において、二つの配列間の保存領域を検出した状態を示した説明図である。
【符号の説明】
【0137】
100 保存領域検出システム
1401 対象配列
1402 表示装置
1403 キーボード
1404 マウス
1405 配列DB
1406 中央処理装置
1407 プログラムメモリ
1408 保存領域計算処理部
1409 系統樹計算処理部
1410 分析結果表示処理部
1411 データメモリ
1412 入力データ
1413 系統樹
2601 保存領域







【特許請求の範囲】
【請求項1】
複数のDNA配列のうちゲノム解析の対象となるゲノム配列の中に配列の変化を受けておらず進化的に保存されている保存領域を見つける進化過程を考慮した保存領域検出システムにおいて、
ゲノム配列に基づいて得られる系統樹を参照して、この系統樹を構成している中間ノードに属するゲノム配列を認識する配列認識手段と、
中間ノードに属するゲノム配列において存在している同一の文字列の位置から開始してゲノム配列内の保存領域を検出していく保存検出手段とを備えたことを特徴とする進化過程を考慮した保存領域検出システム。
【請求項2】
請求項1に記載の進化過程を考慮した保存領域検出システムにおいて、
前記保存検出手段は、
中間ノードに属する2つのゲノム配列において存在している同一の文字列の位置から開始して一定の文字列毎にゲノム配列内の保存領域を検出していき、ミスマッチの文字の個数が所定の個数以下の文字列が存在している領域を保存領域として検出することを特徴とする進化過程を考慮した保存領域検出システム。
【請求項3】
請求項1に記載の進化過程を考慮した保存領域検出システムにおいて、
前記保存検出手段は、
中間ノードに属する複数のゲノム配列において存在している同一の文字列の位置から開始してゲノム配列内で検出した保存領域に基づいて、中間ノードを変えながら繰り返しこの検出した同一の保存領域を検出していき、全ての中間ノードに属するゲノム配列内の保存領域を検出することを特徴とする進化過程を考慮した保存領域検出システム。
【請求項4】
請求項3に記載の進化過程を考慮した保存領域検出システムにおいて、
前記保存検出手段が検出したゲノム配列内の各保存領域をそれぞれ毎に異なる形態の線により構成し、前記系統樹上の中間ノードを形成する枝を、中間ノードに属するゲノム配列内の各保存領域に対応させた形態の線により構成し、前記各保存領域と系統樹を同時に表示する解析結果表示手段を備えたことを特徴とする進化過程を考慮した保存領域検出システム。
【請求項5】
請求項4に記載の進化過程を考慮した保存領域検出システムにおいて、
前記解析結果表示手段は、
前記各保存領域を、既知のゲノム配列に関する情報と組み合わせて同時に表示することを特徴とする進化過程を考慮した保存領域検出システム。
【請求項6】
請求項5に記載の進化過程を考慮した保存領域検出システムにおいて、
前記解析結果表示手段は、
前記各保存領域を、各保存領域が含まれるゲノム配列と組み合わせ、各ゲノム配列間に含まれる同一の保存領域を関連付けて表示することを特徴とする進化過程を考慮した保存領域検出システム。
【請求項7】
請求項6に記載の進化過程を考慮した保存領域検出システムにおいて、
任意の配列に基づいて、前記系統樹を構成している中間ノードに属するゲノム配列を検索する配列検索手段と、
前記配列検索手段が検索した結果得られたゲノム配列の情報を参照して、前記系統樹を構成している中間ノードに属するゲノム配列に関する情報を特定の表示方法で表示する特定表示手段を備えたことを特徴とする進化過程を考慮した保存領域検出システム。
【請求項8】
請求項7に記載の進化過程を考慮した保存領域検出システムにおいて、
特定表示手段は、
前記配列検索手段が検索した結果得られたゲノム配列を、当該任意の配列部分を関連付けて表示することを特徴とする進化過程を考慮した保存領域検出システム。





【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate


【公開番号】特開2007−209305(P2007−209305A)
【公開日】平成19年8月23日(2007.8.23)
【国際特許分類】
【出願番号】特願2006−35486(P2006−35486)
【出願日】平成18年2月13日(2006.2.13)
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】