(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024169825
(43)【公開日】2024-12-06
(54)【発明の名称】インデックス作成用コンピュータプログラム、マッピング用コンピュータプログラム、インデックス作成用コンピュータ装置、マッピング用コンピュータ装置、階層的インデックスのデータ構造。
(51)【国際特許分類】
G16B 15/00 20190101AFI20241129BHJP
G16B 20/00 20190101ALI20241129BHJP
G06F 16/332 20190101ALI20241129BHJP
【FI】
G16B15/00
G16B20/00
G06F16/332
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2023086595
(22)【出願日】2023-05-26
(71)【出願人】
【識別番号】720008140
【氏名又は名称】先端加速システムズ株式会社
(71)【出願人】
【識別番号】501293666
【氏名又は名称】株式会社ダナフォーム
(74)【代理人】
【識別番号】100112689
【弁理士】
【氏名又は名称】佐原 雅史
(74)【代理人】
【識別番号】100128934
【弁理士】
【氏名又は名称】横田 一樹
(72)【発明者】
【氏名】牧野 淳一郎
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA01
5B175FA01
5B175KA06
(57)【要約】
【課題】 参照データを用いて、与えられるクエリデータの解析を高速及び/又は効率的に行う。
【解決手段】 本発明は、クエリ文字列に基づいて参照文字列における部分文字列を同定する際に利用させるインデックスを作成することを実現するインデックス作成用コンピュータプログラムであって、参照文字列の接尾辞配列を階層化した接尾辞木における最上位階層から下位に向かう階層数を所定値に設定することで、当該所定値よりも下位側の階層データを省略するステップを有するようにした。
【選択図】
図7
【特許請求の範囲】
【請求項1】
コンピューティングデバイスに、クエリ文字列に基づいて参照文字列における部分文字列を同定する際に利用されるインデックスを作成させることを実現するインデックス作成用コンピュータプログラムであって、
前記参照文字列の接尾辞配列を階層化した接尾辞木における最上位階層から下位に向かう階層数を所定値に設定することで、当該所定値よりも下位側の階層データを省略するステップを有することを特徴とする、
インデックス作成用コンピュータプログラム。
【請求項2】
前記階層数の前記所定値が1000以下に設定されることを特徴とする、
請求項1に記載のインデックス作成用コンピュータプログラム。
【請求項3】
前記階層数の前記所定値が、前記クエリ文字列の文字数以上に設定されることを特徴とする、
請求項1に記載のインデックス作成用コンピュータプログラム。
【請求項4】
更に、前記接尾辞木を途中階層で分割することによって、前記途中階層よりも上位階層を含む上位木と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)を生成するステップを有することを特徴とする、
請求項1に記載のインデックス作成用コンピュータプログラム。
【請求項5】
前記下位木のデータ量が、前記コンピューティングデバイスにおけるキャッシュメモリに格納可能な値に設定されることを特徴とする
請求項4に記載のインデックス作成用コンピュータプログラム。
【請求項6】
前記下位木のデータ量が、10MB以下に設定されることを特徴とする、
請求項4に記載のインデックス作成用コンピュータプログラム。
【請求項7】
コンピューティングデバイスに、クエリ文字列に基づいて参照文字列における部分文字列を同定する際に利用されるインデックスを作成させることを実現するインデックス作成用コンピュータプログラムであって、
前記参照文字列の接尾辞配列を階層化した接尾辞木を途中階層で分割することによって、前記途中階層よりも上位階層を含む上位木と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)を作成するステップを有することを特徴とする、
インデックス作成用コンピュータプログラム。
【請求項8】
コンピューティングデバイスに、クエリ文字列に基づいて、参照文字列における部分文字列を同定する方法を実現させるためのマッピング用コンピュータプログラムであって、
請求項1~7のいずれか一項のインデックス作成用コンピュータプログラムを一部に含み、
更に前記方法は、
前記クエリ文字列の少なくとも一部と一致する前記参照文字列における部分文字列を同定するために、前記階層的インデックスを参照して、前記参照文字列に対する前記クエリ文字列のマッピングを行うことを含むことを特徴とする、
マッピング用コンピュータプログラム。
【請求項9】
コンピューティングデバイスに、クエリ文字列に基づいて、参照文字列における部分文字列を同定する方法を実現させるためのマッピング用コンピュータプログラムであって、
前記参照文字列に戻づいて生成される階層的インデックスは、途中階層で分割されることで、前記途中階層よりも上位階層を含む上位木と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)と、を有してなり、
前記方法は、
前記クエリ文字列の少なくとも一部と一致する前記参照文字列における部分文字列を同定するために、前記階層的インデックスを参照して、前記参照文字列に対する前記クエリ文字列のマッピングを行うこととを含み、
前記クエリ文字列のマッピングを行うことは、
前記上位木を利用して複数の前記クエリ文字列の照合処理を行うことで、各々の前記クエリ文字列が、前記下位木群におけるどの前記下位木に属するかを判別する判別ステップと、
前記判別ステップによって判別された特定の前記下位木に属する複数の前記クエリ文字列について、特定の前記下位木を利用した照合処理を行うことで、前記参照文字列に対する前記クエリ文字列の出現位置を決定する出現位置決定ステップと、を有することを特徴とする、
マッピング用コンピュータプログラム。
【請求項10】
前記下位木における前記出現位置決定ステップを並列処理することを特徴とする、
請求項9に記載のマッピング用コンピュータプログラム。
【請求項11】
前記判別ステップを並列処理することを特徴とする
請求項9に記載のマッピング用コンピュータプログラム。
【請求項12】
前記出現位置決定ステップにおいて、前記下位木が、前記コンピューティングデバイスにおけるキャッシュメモリに展開されることを特徴とする、
請求項9に記載のマッピング用コンピュータプログラム。
【請求項13】
請求項1~7のいずれか一項のインデックス作成用コンピュータプログラムを一部に含むことを特徴とする、
請求項9に記載のマッピング用コンピュータプログラム。
【請求項14】
記憶装置を含むコンピューティングデバイスを有しており、クエリ文字列に基づいて、参照文字列における部分文字列を同定する際に用いるインデックスを作成するインデックス作成用コンピュータ装置であって、
前記コンピューティングデバイスは、
前記記憶装置に記憶される前記参照文字列を読みだして、該参照文字列の接尾辞配列を階層化した接尾辞木における最上位階層から下位に向かう階層数を所定値に設定し、当該所定値よりも下位側の階層データが省略される部分接尾辞木を生成する部分接尾辞木生成手段を有することを特徴とする、
インデックス作成用コンピュータ装置。
【請求項15】
記憶装置を含むコンピューティングデバイスを有しており、クエリ文字列に基づいて、参照文字列における部分文字列を同定する際に用いるインデックスを作成するインデックス作成用コンピュータ装置であって、
前記コンピューティングデバイスは、
前記記憶装置に記憶される前記参照文字列の接尾辞配列を階層化した接尾辞木を途中階層で分割することによって、上位階層を含む上位木と、前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)を作成する接尾辞木分割手段を有することを特徴とする、
インデックス作成用コンピュータ装置。
【請求項16】
記憶装置を含むコンピューティングデバイスを有しており、クエリ文字列に基づいて、参照文字列における部分文字列を同定するマッピング用コンピュータ装置であって、
前記記憶装置には、前記参照文字列に戻づいて生成される階層的インデックスが途中階層で分割されて生成された、前記途中階層よりも上位階層を含む上位木、及び、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)が保存されており、
前記コンピューティングデバイスは、
前記クエリ文字列の少なくとも一部と一致する前記参照文字列における部分文字列を同定するために、前記上位木及び前記下位木を参照して、前記参照文字列に対する前記クエリ文字列のマッピングを行うマッピング手段を有しており、
前記マッピング手段は、
前記記憶装置に記憶される前記上位木を参照して複数の前記クエリ文字列の照合処理を行うことで、各々の前記クエリ文字列が、前記下位木群におけるどの前記下位木に属するかを判別する判別手段と、
前記判別手段によって判別された特定の前記下位木に属する複数の前記クエリ文字列について、前記記憶装置に記憶される特定の前記下位木を参照して照合処理を行うことで、前記参照文字列に対する前記クエリ文字列の出現位置を決定する出現位置決定手段と、を有することを特徴とする、
マッピング用コンピュータ装置。
【請求項17】
コンピューティングデバイスに、クエリ文字列に基づいて参照文字列における部分文字列を同定する方法を実現させるためのマッピング用コンピュータプログラムで用いられる、前記参照文字列の階層的インデックスのデータ構造であって、
前記参照文字列の接尾辞配列を階層化した接尾辞木であり、かつ、最上位階層から下位に向かう階層数が所定値に設定されており、当該所定値よりも下位側の階層データが省略されていることを特徴とする、
階層的インデックスのデータ構造。
【請求項18】
前記階層的インデックスは、前記接尾辞木が途中階層で分割されることにより、前記途中階層よりも上位階層を含む上位木のデータ片と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木のデータ片を有することを特徴とする、
請求項16に記載の階層的インデックスのデータ構造。
【請求項19】
コンピューティングデバイスに、クエリ文字列に基づいて、参照文字列における部分文字列を同定する方法を実現させるためのマッピング用コンピュータプログラムで用いられる、前記参照文字列の階層的インデックスのデータ構造であって、
前記階層的インデックスは、途中階層で分割されることにより、前記途中階層よりも上位階層を含む上位木のデータ片と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木のデータ片を有することを特徴とする、
階層的インデックスのデータ構造。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲノムの解析に好適なインデックス作成用コンピュータプログラム、マッピング用コンピュータプログラム、これらのプログラムが実行される装置、これらのプログラムに利用される階層的インデックスのデータ構造に関する。
【背景技術】
【0002】
ヒトゲノムは、人が持つ遺伝情報のセットであり、これを担っている物質が、約30億対の塩基が連なったDNA(デオキシリボ核酸)である。塩基は、アデニン(A)、グアニン(G)、シトシン(C)、及びチミン(T)がある。すなわち、人の遺伝情報は、これらの塩基の並び(配列)によって決定される。
【0003】
ヒトゲノムの読み取りにはシークエンサと称される装置が用いられる。シークエンサは、サンプルとなるヒトゲノムを読み取って、これを所定の上限値(数百塩基対程度)に細断して増幅し、数億個となる遺伝情報のデータ片からなる膨大なデータ配列として出力する。現行のシークエンサは、一人分のヒトゲノムを1時間ほどで読み出すことができる。
【0004】
シークエンサにより読み出されるばらばらのデータ片は、人の標準的なゲノム配列として定められたヒトゲノム参照配列と比較されることによって、元の長さのヒトゲノム配列に再構築され解析される。例えば、各データ片が、ヒトゲノム参照配列との比較において、どの位置にあるかが調べられ(マッピング)る。また、マッピング完了後は、どのような変異があるかといった解析がなされる。通常、シーケンサから読み出されるデータ片には誤差が含まれるため、1サンプルあたりヒトゲノム配列一人分の例えば30倍の冗長データを用いて統計処理を行うことにより誤差を小さくしている。したがって、ヒトゲノム配列の解析には膨大な計算量が必要とされるため、典型的には、スーパーコンピュータやクラスタコンピュータ、FPGA(Field-Programmable Gate Array)ベースのコンピュータといった高性能なコンピュータが用いられる。
【0005】
データ片のマッピングには、例えばBWA(Burrow-Wheeler Aligner)といったプログラムツールが用いられる。BWAは、3つのアルゴリズム、BWA-backtrack、BWA-SW、及びBWA-MEMから構成される。このうち、BWA-MEMは、Indel(挿入欠失)に対応した高速アルゴリズムとして広く利用されている。BWA-MEMは、読み出したデータ片に基づくクエリ文字列のうち、ヒトゲノム参照配列に繰り返し現れる部分に対して、接尾辞配列を用いてインデックスを作成し、マッピングを行うアルゴリズムである(非特許文献1)。
【0006】
なお、マッピングされたデータ片は、ヒトゲノム参照配列における同位置の部分配列と照合され、どのような変異があるかが解析される。ヒトゲノム参照配列の部分配列とデータ片との照合には、例えば、アラインメントアルゴリズムが用いられる。アラインメントアルゴリズムでは、動的計画法に従って、アラインメント表と称される配列の各要素について変異度(類似度)を算出しながら、近似文字列を同定する。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】Heng Li, "Aligning sequence reads, clone sequences and assembly contigs with BWA-MEM", May 26, 2013, arXiv:1303.3997 (q-bio.GN)
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述した従来のBWA-MEMは、ギャップを許容しかつ高速マッピングが可能なアルゴリズムとして広く利用されているが、参照配列から作成されるインデックスのサイズが非常に大きくなるため、大量のメモリリソースを必要とするという問題があった。例えば、ヒトゲノムの解析の場合、ヒトゲノム参照配列のインデックスのデータ量は膨大となる。このインデックスは、より高速アクセス可能なキャッシュメモリに一度に収容しきないため、外部メモリ(メインメモリ)に格納しておく必要がある。結果、探索するクエリ文字列の文字数(すなわち、塩基数)に応じた回数だけ、外部メモリへのアクセスが必要となり、プロセッサの処理速度がメモリへのアクセス時間により律速されてしまうという問題があった。
【0009】
より具体的には、BWA-MEMでは、シークエンサによって断片化状態で読み出されたクエリ文字列群が、ヒトゲノム参照配列内に出現する位置を同定するために、メインメモリへのランダムアクセスが、クエリ文字列群の総文字数分の回数だけ実行される。ここで、メインメモリへの1回のランダムアクセスの待ち時間(アクセスが発生してから実際にデータが得られるまでの時間)は、現在のコンピュータでは、1バンクあたり約1μ秒(0.000001秒)かかっている。したがって、30億塩基対のヒトゲノムの解析の場合、冗長性を30とすると、総文字数に対する総アクセス時間Tは、
T=3,000,000,000×0.000001×30=90,000(秒)
となる。つまり、ヒトゲノムの解析において、メインメモリへのランダムアクセスだけで、約9万秒(約25時間)かかることになる。このため、たとえ、高性能なプロセッサを備えたコンピュータを用いたとしても、メモリアクセス時間が制約となって、マッピング時間を短縮するには限界があった。
【0010】
本発明の一つの目的は、マッピング処理に好適な、参照文字列に基づく階層的インデックスを作成する技術を提供することである。また、本発明の一つの目的は、例えば、シークエンサ等によって読み出されたデータ片(クエリ文字列)について、参照配列内に出現する位置を同定するマッピング処理を高速及び/又は効率的に行う技術を提供することである。
【課題を解決するための手段】
【0011】
上記課題を解決するための本発明は、以下に示す発明特定事項乃至は技術的特徴を含んで構成される。
【0012】
すなわち、上記課題に関連する本発明は、コンピューティングデバイスに、クエリ文字列に基づいて参照文字列における部分文字列を同定する際に利用されるインデックスを作成させることを実現するインデックス作成用コンピュータプログラムであって、前記参照文字列の接尾辞配列を階層化した接尾辞木における最上位階層から下位に向かう階層数を所定値に設定することで、当該所定値よりも下位側の階層データを省略するステップを有することを特徴とする、インデックス作成用コンピュータプログラムである。
【0013】
上記インデックス作成用コンピュータプログラムに関連して、前記階層数の前記所定値が1000以下に設定されることを特徴としてもよい。
【0014】
上記インデックス作成用コンピュータプログラムに関連して、前記階層数の前記所定値が、前記クエリ文字列の文字数以上に設定されることを特徴としてもよい。
【0015】
上記インデックス作成用コンピュータプログラムに関連して、更に、前記接尾辞木を途中階層で分割することによって、前記途中階層よりも上位階層を含む上位木と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)を生成するステップを有することを特徴としてもよい。
【0016】
上記インデックス作成用コンピュータプログラムに関連して、前記下位木のデータ量が、前記コンピューティングデバイスにおけるキャッシュメモリに格納可能な値に設定されることを特徴としてもよい。
【0017】
上記インデックス作成用コンピュータプログラムに関連して、前記下位木のデータ量が、10MB以下以下に設定されることを特徴としてもよい。
【0018】
上記課題に関連する本発明は、コンピューティングデバイスに、クエリ文字列に基づいて参照文字列における部分文字列を同定する際に利用されるインデックスを作成させることを実現するインデックス作成用コンピュータプログラムであって、前記参照文字列の接尾辞配列を階層化した接尾辞木を途中階層で分割することによって、前記途中階層よりも上位階層を含む上位木と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)を作成するステップを有することを特徴とする、インデックス作成用コンピュータプログラムである。
【0019】
上記課題に関連する本発明は、コンピューティングデバイスに、クエリ文字列に基づいて、参照文字列における部分文字列を同定する方法を実現させるためのマッピング用コンピュータプログラムであって、上記のインデックス作成用コンピュータプログラムを一部に含み、更に前記方法は、前記クエリ文字列の少なくとも一部と一致する前記参照文字列における部分文字列を同定するために、前記階層的インデックスを参照して、前記参照文字列に対する前記クエリ文字列のマッピングを行うことを含むことを特徴とする、マッピング用コンピュータプログラムである。
【0020】
上記課題に関連する本発明は、コンピューティングデバイスに、クエリ文字列に基づいて、参照文字列における部分文字列を同定する方法を実現させるためのマッピング用コンピュータプログラムであって、前記参照文字列に戻づいて生成される階層的インデックスは、途中階層で分割されることで、前記途中階層よりも上位階層を含む上位木と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)と、を有してなり、前記方法は、前記クエリ文字列の少なくとも一部と一致する前記参照文字列における部分文字列を同定するために、前記階層的インデックスを参照して、前記参照文字列に対する前記クエリ文字列のマッピングを行うこととを含み、前記クエリ文字列のマッピングを行うことは、前記上位木を利用して複数の前記クエリ文字列の照合処理を行うことで、各々の前記クエリ文字列が、前記下位木群におけるどの前記下位木に属するかを判別する判別ステップと、前記判別ステップによって判別された特定の前記下位木に属する複数の前記クエリ文字列について、特定の前記下位木を利用した照合処理を行うことで、前記参照文字列に対する前記クエリ文字列の出現位置を決定する出現位置決定ステップと、を有することを特徴とする、マッピング用コンピュータプログラムである。
【0021】
上記マッピング用コンピュータプログラムに関連して、前記下位木における前記出現位置決定ステップを並列処理することを特徴としてもよい。
【0022】
上記マッピング用コンピュータプログラムに関連して、前記判別ステップを並列処理することを特徴としてもよい。
【0023】
上記マッピング用コンピュータプログラムに関連して、前記出現位置決定ステップにおいて、前記下位木が、前記コンピューティングデバイスにおけるキャッシュメモリに展開されることを特徴としてもよい。
【0024】
上記マッピング用コンピュータプログラムに関連して、上記のいずれか一項のインデックス作成用コンピュータプログラムを一部に含むことを特徴としてもよい。
【0025】
上記課題に関連する本発明は、記憶装置を含むコンピューティングデバイスを有しており、クエリ文字列に基づいて、参照文字列における部分文字列を同定する際に用いるインデックスを作成するインデックス作成用コンピュータ装置であって、前記コンピューティングデバイスは、前記記憶装置に記憶される前記参照文字列を読みだして、該参照文字列の接尾辞配列を階層化した接尾辞木における最上位階層から下位に向かう階層数を所定値に設定し、当該所定値よりも下位側の階層データが省略される部分接尾辞木を生成する部分接尾辞木生成手段を有することを特徴とする、インデックス作成用コンピュータ装置である。
【0026】
上記課題に関連する本発明は、記憶装置を含むコンピューティングデバイスを有しており、クエリ文字列に基づいて、参照文字列における部分文字列を同定する際に用いるインデックスを作成するインデックス作成用コンピュータ装置であって、前記コンピューティングデバイスは、前記記憶装置に記憶される前記参照文字列の接尾辞配列を階層化した接尾辞木を途中階層で分割することによって、上位階層を含む上位木と、前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)を作成する接尾辞木分割手段を有することを特徴とする、インデックス作成用コンピュータ装置である。
【0027】
上記課題に関連する本発明は、記憶装置を含むコンピューティングデバイスを有しており、クエリ文字列に基づいて、参照文字列における部分文字列を同定するマッピング用コンピュータ装置であって、前記記憶装置には、前記参照文字列に戻づいて生成される階層的インデックスが途中階層で分割されて生成された、前記途中階層よりも上位階層を含む上位木、及び、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)が保存されており、前記コンピューティングデバイスは、前記クエリ文字列の少なくとも一部と一致する前記参照文字列における部分文字列を同定するために、前記上位木及び前記下位木を参照して、前記参照文字列に対する前記クエリ文字列のマッピングを行うマッピング手段を有しており、前記マッピング手段は、前記記憶装置に記憶される前記上位木を参照して複数の前記クエリ文字列の照合処理を行うことで、各々の前記クエリ文字列が、前記下位木群におけるどの前記下位木に属するかを判別する判別手段と、前記判別手段によって判別された特定の前記下位木に属する複数の前記クエリ文字列について、前記記憶装置に記憶される特定の前記下位木を参照して照合処理を行うことで、前記参照文字列に対する前記クエリ文字列の出現位置を決定する出現位置決定手段と、を有することを特徴とする、マッピング用コンピュータ装置である。
【0028】
上記課題に関連する本発明は、コンピューティングデバイスに、クエリ文字列に基づいて参照文字列における部分文字列を同定する方法を実現させるためのマッピング用コンピュータプログラムで用いられる、前記参照文字列の階層的インデックスのデータ構造であって、前記参照文字列の接尾辞配列を階層化した接尾辞木であり、かつ、最上位階層から下位に向かう階層数が所定値に設定されており、当該所定値よりも下位側の階層データが省略されていることを特徴とする、階層的インデックスのデータ構造である。
【0029】
上記階層的インデックスのデータ構造に関連して、前記階層的インデックスは、前記接尾辞木が途中階層で分割されることにより、前記途中階層よりも上位階層を含む上位木のデータ片と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木のデータ片を有することを特徴としてもよい。
【0030】
上記課題に関連する本発明は、コンピューティングデバイスに、クエリ文字列に基づいて、参照文字列における部分文字列を同定する方法を実現させるためのマッピング用コンピュータプログラムで用いられる、前記参照文字列の階層的インデックスのデータ構造であって、前記階層的インデックスは、途中階層で分割されることにより、前記途中階層よりも上位階層を含む上位木のデータ片と、前記途中階層よりも下位階層を含み且つ前記上位木の下位側に繋がる複数の下位木のデータ片を有することを特徴とする、階層的インデックスのデータ構造である。
【0031】
なお、本発明は、前記コンピュータプログラムを記憶した記録媒体としても成立する。また、本発明は、前記方法を実行するように構成されたハードウェア及び/又はファームウェアからなる装置としても成立する。更に、前記インデックス作成用コンピュータ装置やマッピング用コンピュータ装置等が、複数のハードウェアコンポーネント(又は特定の機能を実現する機能モジュール)が論理的に協働して実現される場合、これらの装置は、インデックス作成用コンピュータシステムやマッピング用コンピュータシステムとなる。また、インデックス作成用コンピュータ装置やマッピング用コンピュータ装置等が、プロセッサモジュールで実現される場合、これらの装置は、インデックス作成用プロセッサモジュールやマッピング用プロセッサモジュールとなる。つまり各装置や機能モジュールが、単一の筐体内にあるか否かや、単一の機能部品で実現されるか否は特に問わないものである。
【0032】
なお、本明細書等において、手段又は部(unit)とは、単に物理的手段を意味するものではなく、その手段又は部が有する機能をソフトウェアによって実現する場合も含む。また、1つの手段又は部が有する機能が2つ以上の物理的手段により実現されても、2つ以上の手段又は部の機能が1つの物理的手段により実現されても良い。
【発明の効果】
【0033】
本発明の一つによれば、マッピング処理に好適な、参照文字列に基づく階層的インデックスを作成することができる。この階層的インデクスにより、高速及び/又は効率的なマッピング処理を実現できる。
【0034】
また、本発明によれば、シークエンサによって読み出されたデータ片に基づくヒトゲノム参照配列を用いた解析を高速及び/又は効率的に行うことができる。
【0035】
本発明の他の技術的特徴、目的、及び作用効果乃至は利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。本明細書に記載された効果はあくまで例示であって限定されるものではなく、また他の効果があっても良い。
【図面の簡単な説明】
【0036】
【
図1】
図1は、本発明の一実施形態に係るコンピュータシステムの概略的構成の一例を示すブロックダイアグラムである。
【
図2】
図2は、同コンピュータシステムによる近似文字列照合処理の概略の一例を説明するフローチャートである。
【
図3】
図3は、同コンピュータシステムによるインデックス作成処理の一例を説明するフローチャートである。
【
図4】
図4は、同コンピュータシステムにおいて用いられる参照文字列から生成される巡回配列の一例を示す図である。
【
図5】
図5は、同巡回配列をソートした状態の一例を示す図である。
【
図6】
図6は、ソートされた巡回配列に基づいて生成される接尾辞木の構造の一例を示す図である。
【
図7】
図7は、同接尾辞木を利用した部分接尾辞木の生成過程を説明する図である。
【
図8】
図8は、同接尾辞木から生成される部分接尾辞木の構造の一例を示す図である。
【
図9】
図9(A)は、同部分接尾辞木の分割過程を説明する図であり、
図9(B)は分割された上位木の一例を示す図である。
【
図10】
図10は、同コンピュータシステムによるマッピング処理の一例を説明するフローチャートである。
【
図11】
図11は、同コンピュータシステムにおいて用いられるクエリ文字列の一例を示す図である。
【
図12】
図12(A)~(D)は、下位木を利用した同コンピュータシステムによるマッピング処理を説明する図である。
【
図13】
図13(A)~(D)は、下位木を利用した同コンピュータシステムによるマッピング処理を説明する図である。
【
図14】
図14(A)~(D)は、下位木を利用した同コンピュータシステムによるマッピング処理を説明する図である。
【
図16】
図16は、同部分接尾辞木を分割する際の変形例を説明する図である。
【
図17】
図17は、同コンピューティングデバイスのハードウェア構成の一例を示す図である。
【
図18】
図18は、同コンピューティングデバイスのハードウェア構成のプロセッサモジュールの一例を示す図である。
【
図19】
図19は、同コンピューティングデバイスの機能構成の一例を示すブロック図である。
【
図20】
図20は、同コンピュータシステムによるマッピング処理の変形例を説明するフローチャートである。
【発明を実施するための形態】
【0037】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本発明は、その趣旨を逸脱しない範囲で種々変形(例えば各実施形態を組み合わせる等)して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【0038】
図1は、本発明の一実施形態に係るコンピュータシステムの概略的構成の一例を示すブロックダイアグラムである。同図に示すように、コンピュータシステム1は、例えば、上位コンピュータ10と、複数の下位コンピュータ20(1)~20(n)と、データベース30と含み構成される。上位コンピュータ10と下位コンピュータ20(1)~20(n)とは、所定のインタフェースを介して通信可能に接続される。本開示では、コンピュータシステム1は、上位コンピュータ10が複数の下位コンピュータ20(1)~20(n)を統括的に制御する中央集権型コンピュータシステムとして構成されるが、これに限られず、例えば分散型コンピュータシステムとして構成されても良い。分散型コンピュータシステムにおいては、各コンピュータが並列分散処理により協調的に動作し得るが、特定の処理に関しては、代表する一のコンピュータのみが該処理を実行する場合があっても良い。
【0039】
上位コンピュータ10及び下位コンピュータ20で共通する計算ハードウェアは、
図17に例示されるコンピューティングデバイス100となる。コンピューティングデバイス100は、DRAM等の主記憶装置となるメモリモジュール102、中央計算機となるプロセッサモジュール104、プロセッサモジュール104と外部機器の間のブリッジとなるチップセット106、HDDやSDD等の内部ストレージデバイス108、I/Oコントローラ110、出力インタフェース112、入出力インタフェース114、通信インタフェース116、外付けHDD等の外部ストレージデバイス118を有する。
【0040】
更に、
図18に示すように、プロセッサモジュール104は、互いに独立した計算処理を実行する複数のコアA,B,C,Dと、各コアA,B,C,Dに対応して設けられる内部記憶機能の第一キャッシュメモリ(L1キャッシュメモリ)L1a,L1b,L1c,L1d及び第二キャッシュメモリ(L2キャッシュメモリ)L2a,L2b,L2c,L2dと、全コアA,B,C,Dで共有される内部記憶機能の第三キャッシュメモリ(L3キャッシュメモリ)L3nを有する。コアA,B,C,Dによるアクセス待ち時間は、L1キャッシュメモリL1a,L1b,L1c,L1dが最も短く、次いでL2キャッシュメモリL2a,L2b,L2c,L2dが短く、最も長いのがL3キャッシュメモリL3nとなる。一方で、L1,L2,L3キャッシュメモリのアクセス待ち時間は、メモリモジュール(メインメモリ)102よりも大幅に短い。これらの構造により、プロセッサモジュール104内の複数のコアA,B,C,D同士では、並列的にタスクを処理することができる。例えば、複数のコアA,B,C,Dのそれぞれは、与えられた個々のクエリ文字列に基づいて参照文字列との比較において解析処理を行うことができる。なお、ここではキャッシュメモリが、3段階に分割されている場合を例示しているが、本発明はこれに限定されず、1段階または2段階であってもよく、4段階以上であってもよい。以降において、第一キャッシュメモリ(L1キャッシュメモリ)L1a,L1b,L1c,L1d、第二キャッシュメモリ(L2キャッシュメモリ)L2a,L2b,L2c,L2d、第三キャッシュメモリ(L3キャッシュメモリ)L3nは、これらを総称して「キャッシュメモリ」と称することができる。本発明では、プロセッサモジュール104におけるコア数も特に限定されない。コア数は数個から数万個まで、さまざまに選択できる。
【0041】
更に、
図17及び
図18に示す構成は、汎用的なハード構造を例示したが、本発明はこれに限定されない。またこれらのハード構造の全部または一部は、FPGA等によって個別にカスタマイズ(プログラム)されたハードウェアを採用してもよい。更に、以降において、データの記憶できるハードウェアとなる、メモリモジュール102、内部ストレージデバイス108、外部ストレージデバイス118、第一キャッシュメモリ(L1キャッシュメモリ)L1a,L1b,L1c,L1d、第二キャッシュメモリ(L2キャッシュメモリ)L2a,L2b,L2c,L2d、第三キャッシュメモリ(L3キャッシュメモリ)L3nは、これらを総称して「記憶装置」と称することができる。
【0042】
図1に戻って、本開示では、下位コンピュータ20は、上位コンピュータ10の制御の下、並列的にタスクを処理する。例えば、複数の下位コンピュータ20のそれぞれは、与えられた個々のクエリ文字列に基づいて参照文字列との比較において解析処理を行う。以下では、下位コンピュータ20(1)~20(n)について、それらを特に区別する必要がない限り、単に、「下位コンピュータ20」と表記することがある。
【0043】
データベース30は、上位コンピュータ10の制御の下、各種のデータ、例えば参照文字列を格納する。一例として、データベース30は、ヒトゲノム参照配列を格納する。ヒトゲノム参照配列は、人の標準的なゲノム配列として定められた塩基対の配列を示すデータである。また、データベース30は、参照文字列に基づいて作成されたインデックスを格納する。インデックスは、参照文字列を探索するために用いられるある種のデータ配列構造である。なお、図中、データベース30は、上位コンピュータ10にのみアクセス可能に接続される構成となっているが、これに限られず、下位コンピュータ20もまたアクセス可能に接続される構成であっても良い。また、下位コンピュータ20も同様のデータベースを配置してもよい。ここでは、ヒトゲノム参照配列を利用する場合を例示するが、複数の生物(動物)、植物等を一まとめにしたメタゲノム参照配列を利用することもできる。
【0044】
図2は、本発明の一実施形態に係るコンピュータシステム1による近似文字列照合処理の概略の一例を説明するフローチャートである。かかる処理は、例えば、上位コンピュータ10及び複数の下位コンピュータ20が、プロセッサモジュール102において近似文字列照合プログラムを実行することにより、他のハードウェアコンポーネントと協働し、実現される。これにより、コンピュータシステム1、または、上位コンピュータ10、あるいは複数の下位コンピュータ20は、
図19に示す近似文字列照合用コンピュータシステム200として機能する。また、近似文字列照合プログラムは、複数の処理ブロック(サブルーチン)を有しており、その結果として、近似文字列照合用コンピュータシステム200は、更に詳細には、インデックス作成用コンピュータシステム201と、マッピング用コンピュータシステム202と、文字列ペア作成用コンピュータシステム203と、近似文字列導出用コンピュータシステム204を内在する。
【0045】
図2に示すように、まず、上位コンピュータ10は、データベース30に格納された参照文字列を読み出し、読み出した参照文字列に基づいて、インデックスを作成する(インデックス作成処理:S201)。具体的には、上位コンピュータ10は、参照文字列における部分文字列を所定の条件に従って拡張し及び/又はソートして配列化することにより、所定のデータ配列構造を有するインデックスを作成する。データ配列構造は、階層的なツリー構造からなる。本開示では、このようなインデックスを階層的インデックスと称するものとする。上位コンピュータ10は、作成した参照文字列に基づくインデックスをデータベース30に格納する。参照文字列に基づく階層的インデックスの作成処理の詳細は後述する。なお、参照文字列に基づく階層的インデックスが既に作成されており、データベース30に格納されている場合には、インデックス作成処理S201は省略され得る。これにより、コンピュータシステム1は、インデックス作成用コンピュータシステム201として機能する。
【0046】
続いて、上位コンピュータ10は、図示しない外部装置からクエリ文字列を受信し、受信したクエリ文字列に基づいて階層的インデックスを参照し、クエリ文字列の参照文字列へのマッピング処理を実行する(マッピング処理:S202)。一例では、外部装置は、ヒトゲノムを読み出すシークエンサであり、クエリ文字列は、シークエンサから出力される例えば150~200塩基程度の塩基対のデータ片である。クエリ文字列は、一旦、データベース30に格納されてもよい。なお、クエリ文字列の文字数は、50以上であることが好ましく、更に好ましくは100以上とする。一方、クエリ文字列の文字数は、1000以下であることが好ましく、望ましくは300以下、更に望ましくは200以下とする。本開示では、下位コンピュータ20もまた、上位コンピュータ10の制御の下、割り当てられたクエリ文字列に基づいて、階層的インデックスを参照して、マッピングを行う。これにより、コンピュータシステム1は、マッピング用コンピュータシステム202として機能する。
【0047】
マッピングは、クエリ文字列の少なくとも一部と一致する参照文字列における部分文字列(一致文字列)を同定する処理である。つまり、マッピングにより、参照文字列におけるクエリ文字列の少なくとも一部と一致する部分文字列の出現開始位置及び長さ(文字数)が同定される。本開示に係るマッピングでは、クエリ文字列について、階層的インデックスを検索ないしは探索することにより、参照文字列におけるクエリ文字列の出現開始位置が同定される。なお、処理の高速化のため、作成された階層的インデックスは、メモリモジュール102又はプロセッサモジュール104内のキャッシュメモリ等の高速メモリに展開されることが好ましい。
【0048】
なお、上記の例では、上位コンピュータ10及び下位コンピュータ20が、それぞれ、割り当てられたクエリ文字列に従ってマッピングを行っているが、これに限られず、例えば、上位コンピュータ10のみが、割り当てられたクエリ文字列に基づいて、階層的インデックスを参照して、探索を行っても良い。
【0049】
次に、上位コンピュータ10及び下位コンピュータ20は、それぞれ、後述する近似文字列照合のための文字列ペアを作成する(文字列ペア作成処理:S203)。文字列ペアは、マッピングにより同定される一致文字列を含む、参照文字列における被照合文字列とクエリ文字列における照合文字列とからなる。これにより、コンピュータシステム1は、文字列ペア作成用コンピュータシステム203として機能する。
【0050】
具体的には、上位コンピュータ10及び下位コンピュータ20は、マッピングにより同定された一致文字列の先頭及び末尾のそれぞれに、参照文字列における対応する所定長の文字列を追加することにより、被照合文字列を作成する。つまり、被照合文字列は、参照文字列において同定された一致文字列を含む該一致文字列近傍の文字列である。例えば、参照文字列が「CCGATCTGTATACCCTACGA」であって、一致文字列が「TACC」である場合に、例えば前後2文字ずつ追加した文字列「TATACCCT」が被照合文字列となる。ヒトゲノムの解析の場合、参照文字列について、一致文字列の先頭及び末尾に追加する塩基の長さは、それぞれ、例えば50塩基程度であり得る。
【0051】
また、上位コンピュータ10は、一致文字列の末尾にクエリ文字列における対応する所定長の文字列を追加することにより、照合文字列を作成する。ヒトゲノムの解析の場合、クエリ文字列について、一致文字列の末尾に追加する文字列の長さは、例えば50塩基程度である。
【0052】
なお、本開示では、参照文字列について、一致文字列の先頭及び末尾に所定長の文字列が追加されるものとしたが、これに限られず、例えば、先頭又は末尾の一方にのみ所定長の文字列が追加されても良い。また、クエリ文字列について、一致文字列の先頭及び末尾に、それぞれ、所定長の文字列を追加するようにしても良いし、或いは、文字列を追加せずに、一致文字列そのものを照合文字列として扱っても良い。
【0053】
次に、上位コンピュータ10及び下位コンピュータ20は、参照文字列に基づく被照合文字列とクエリ文字列に基づく照合文字列とからなる文字列ペアに基づいて少なくとも1つの近似文字列を導出する(近似文字列導出処理:S204)。近似文字列の導出には、動的計画法を用いた所定のアラインメントが適用される。アラインメントは、2つの配列(文字列)をその要素どうしで置換、挿入及び欠損を許容しつつ比較して、定義されたスコア/ペナルティに従って変異度(類似度)を算出する手法である。アラインメントを実現するアルゴリズムとしては、Smith-WatermanアルゴリズムやNeedleman-Wunschアルゴリズムが知られている。また、動的計画法とは、ある段階で得られた最適解に基づいて次の段階の最適解を算出する手法である。つまり、変異度の算出では、動的計画法に従って、配列状のアラインメント表の各要素に対してスコアが算出され、最大スコアを持つ要素が決定され、これにより、少なくとも1つ以上の近似文字列が導出される。これにより、コンピュータシステム1は、近似文字列導出用コンピュータシステム204として機能する。
【0054】
以上のように、本実施形態の近似文字列照合処理では、参照文字列に基づく階層的インデックスが作成された後、与えられたクエリ文字列に従って、該階層的インデックスを探索することにより一致文字列(及びその長さ)が同定され、同定された一致文字列に基づく被照合文字列と照合文字列とからなる文字列ペアに対して近似文字列照合がなされることにより、近似文字列が導出される。換言すると、本実施形態の近似文字列照合プログラムは、参照文字列に基づくインデックス作成用プログラムと、クエリ文字列に従って階層的インデックスを探索するマッピング用プログラムと、被照合文字列と照合文字列とからなる文字列ペアを作成するプログラムと、文字列ペアを利用して近似文字列照合がなされることにより、近似文字列を導出するアライメント用プログラムを有している。なお、文字列ペアを作成するプログラム及びアライメント用プログラムは、公知のものを採用することができるので、これ以降の詳細説明を省略する。
【0055】
<インデックス作成用プログラム>
図3は、本実施形態に係るコンピュータシステムによるインデックス作成処理の一例を説明するフローチャートである。すなわち、
図3は、
図2に示した階層的インデックスの作成処理(S201)の詳細を示している。また、
図19には、インデックス作成用コンピュータシステム201の機能ブロック構成が示されており、参照文字列受信手段302、接尾辞木生成手段304、部分接尾辞木生成手段306、部分接尾辞木分割手段308を有する。各機能ブロックについて、以下、フローチャート等を参照して説明する。
【0056】
(参照文字列受信手段302)
まず、
図3に示すように、上位コンピュータ10は、階層的インデックスを作成するための参照文字列を受信する(S302)。例えば、ヒトゲノム参照配列であれば、上位コンピュータ10は、データベース30にアクセスし、格納されているヒトゲノム参照配列を読み出す。以下では、理解容易のため、ヒトゲノム参照配列が、4種類の文字「A」、「C」、「G」、及び「T」から構成される20文字の参照文字列「CCGATCTGTATACCCTACGA」であると仮定して説明する。なお、実際のヒトゲノム参照配列は、30憶文字であることに留意されたい。
【0057】
(接尾辞木生成手段304)
次に上位コンピュータ10は、受信した参照文字列について、接尾辞木を生成する(S304)。具体的には、まず、参照文字列の終端文字として例えば「$」を追加する。この終端文字は、参照文字列に含まれておらず、かつ、最も小さな文字とする。この終端文字を含めて21文字となった参照文字列を、1文字ずつ巡回させてることで得られる21個の巡回文字列を生成する(
図4参照)。なお、
図4では、各巡回文字列の先頭(左端)に、巡回文字列の配列番号を付している。各配列番号は、基準となる0番の巡回文字列(参照文字列)を基準とした、各巡回文字列の出現開始位置を意味する。なお、実際のヒトゲノム参照配列が30憶文字となる場合、巡回文字列の数(配列数)は30憶個となる。
【0058】
更に、上位コンピュータ10は、巡回文字列における終端文字「$」より後方の文字列(
図4の網掛け領域参照)をカットしてから、これらの巡回文字列群をソートし(
図5参照)、階層ツリー構造で表現される接尾辞木を生成する。この接尾辞木を
図6に示す。
図6の上部には、接尾辞木の階層数が示されている。なお本実施形態では、ツリー構造において、下位階層側の接点数が1となった段階で残存する文字列は、その末端接点(葉)でひとまとめにしている。結果、終端接点(葉)を含めると、本実施形態の接尾辞木の階層数は3となる。なお、実際のヒトゲノム参照配列の場合、その階層数ははるかに大きい数(例えば約20階層)となる。なお、接尾辞木を生成する上記手順は、参考事例であって、本発明はこれに限定されない。接尾辞木を生成するプログラムは既知の様々な手法を採用できる。
【0059】
(部分接尾辞木生成手段306)
次に上位コンピュータ10は、生成した接尾辞木から部分接尾辞木を生成する(S306)。具体的には、
図7の網掛け領域に示すように、あらかじめ設定される所定階数より下位階層側の階層データを強制的にカットする。下位階層側がかっとされた接尾辞木を、ここでは部分接尾辞木と称し、所定階層数のことをカット階層数と称する。本実施形態では、説明の便宜上、カット階層数が2であり、これよりも下位側の階層データをカットしている。部分接尾辞木を
図8に示す。なお、
図8の部分接尾辞木では、終端接点(葉)に複数文字が格納されている場合、先頭文字(または先頭から所定文字)を残し、それ以降の文字列をカットすることで、木構造を単純化している。接尾辞木では木の節点毎に一致している巡回文字列の位置と長さの情報が必要だが、階層をカットすることでデータ量を大きく増加させずにこれを文字自体に置き換えることができ、検索を高速化できる。
【0060】
図8の部分接尾辞木では、巡回文字列の各配列番号を、部分接尾辞木の末端接点(葉)の右端に付している。例えば、ルート(#)-C-G-Aの系統の場合、本来の接尾辞木(
図7参照)では、これよりも下位側に2つの接点(枝)となる「ルート(#)-C-G-A-$」と「ルート(#)-C-G-A-T・・・」が存在しているため、部分接尾辞木のルート(#)-C-G-Aの葉の右側には、ソート順における上位側(兄側)接点の配列番号17と、下位側(弟側)接点の配列番号1が、この順番で付されることになる。また例えば、ルート(#)-T-A-Cの系統の場合、本来の接尾辞木(
図7参照)では、これよりも下位側に2つの接点(枝)となる「ルート(#)-T-A-C-C・・・」と「ルート(#)-T-A-C-G・・・」が存在しているため、部分接尾辞木のルート(#)-T-A-Cの葉の右側には、ソート順における上位側(兄側)接点の配列番号10と、下位側(弟側)接点の配列番号15が、この順番で付されることになる。これらの場合、同定されたクエリ文字列の出現位置が、2か所に同定されることを意味する。
【0061】
実際のヒトゲノム参照配列の場合、(全体)接尾辞木の階層数が膨大となる。この場合、部分接尾辞木を作成するために設定されるカット階層数の値は、1000以下であることが好ましく、望ましくは500以下、更に好ましくは300以下とし、一層好ましくは200以下とする。一方、カット階層数の値は、30以上であることが好ましく、望ましくは50以上、更に好ましくは80以上とする。また、設定されるカット階層数の値は、クエリ文字列の文字数以上に設定されることが好ましい。例えば、クエリ文字列が150塩基対の場合、カット階層数は150以上に設定される。具体的に、ヒトゲノム参照配列のカット階層数を150に設定した場合、(全体)接尾辞木(データ量約250GB)が、150階層の部分接尾辞木(データ量約100GB)に省略されるため、データ量が大幅に削減できる。
【0062】
なお、
図8の簡略化事例では、部分接尾辞木における19個の終端接点(葉)のうち、「ルート(#)-C-G-A」系統と「ルート(#)-T-A-C」系統の2つに、複数の配列番号が付されているが、ヒトゲノム参照配列に基づいて作成される部分接尾辞木の場合、膨大な階層数が150階層まで削減される結果、各終端接点(葉)には、複数の配列番号が付されるが、この数は3を超えることは稀である。なお、ゲノム検索においては、実際には高確率で変異があるため、配列番号を1つまでしぼると間違った場所に一致することが多くなる。このため、マッピングの精度をあげるためには複数の配列番号が残る段階で木をカットすることが望ましい。
【0063】
更に、上記実施形態では、接尾辞木生成手段304と部分接尾辞木生成手段306の2つの手段を経て、部分接尾辞木が生成される場合を例示しているが、部分接尾辞木の生成手順はこれに限定されない。受信した参照文字列を利用して部分接尾辞木が生成されるあらゆる工程を採用できる。
【0064】
(部分接尾辞木分割手段308)
次に上位コンピュータ10は、部分接尾辞木を途中階層(途中接点)で分割することによって、上位階層を含む上位木と、上位木の下位側に繋がる複数の下位木(以下、下位木群と称する)を作成する(S308)。分割が成立する途中接点の分割条件は、例えば、「終端接点から上位階層に向かって途中接点を遡っていく際に、その途中接点よりも下位階層に属する終端接点(葉)の数が、所定値以下となる場合」とする。例えば、
図9(A)では、「終端接点から上位階層に向かって途中接点を遡っていく際に、その途中接点よりも下位階層に属する終端接点(葉)の数が、2値以下となる場合」に分割した場合を示す。ここでは、部分接尾辞木が、ルート(#)を含む1つの上位木と、この上位木の下位側に繋がる14個の下位木に分割される。また、各下位木には、管理番号となるデータが付与される。この管理番号の付与ルールは任意であるが、例えば、下位木に属する配列番号中における最兄番号(ソート順における最上位番号)を採用できる。具体的に、下位木群をソート順で説明すると、「ルート(#)-$」の接点で分割される管理番号20の第1下位木、「ルート(#)-A-$」の接点で分割される管理番号19の第2下位木、「ルート(#)-A-C」の接点で分割される管理番号11の第3下位木、「ルート(#)-A-T」の接点で分割される管理番号9の第4下位木、「ルート(#)-C-C-C」の接点で分割される管理番号12の第5下位木、「ルート(#)-C-C-G」の接点で分割される管理番号0の第6下位木、「ルート(#)-C-C-T」の接点で分割される管理番号13の第7下位木、「ルート(#)-C-G」の接点で分割される管理番号17の第8下位木、「ルート(#)-C-T」の接点で分割される管理番号14の第9下位木、「ルート(#)-G-A-$」の接点で分割される管理番号18の第10下位木、「ルート(#)-G-A-T」の接点で分割される管理番号2の第11下位木、「ルート(#)-G-A-$」の接点で分割される管理番号18の第10下位木、「ルート(#)-G-T」の接点で分割される管理番号7の第11下位木、「ルート(#)-T-A」の接点で分割される管理番号10の第12下位木、「ルート(#)-T-C」の接点で分割される管理番号4の第13下位木、「ルート(#)-T-G」の接点で分割される管理番号6の第14下位木が生成される。下位木群の各下位木のデータ片のデータ量は、プロセッサモジュール104のキャッシュメモリ(特にL1キャッシュメモリ)に収まるサイズに設定されることが好ましい。換言すると、分割が成立する途中接点の分割条件における「下位階層に属する終端接点(葉)の数(所定値)」は、キャッシュメモリの容量を考慮して、設定することが好ましい。
【0065】
部分接尾辞木において、上位木、分割接点(上位木における終端接点)及び下位木管理番号を残した状態を
図9(B)に示す。このように、上位木のデータ片は、下位木から切り離されることで、データ量が大幅に低減される。この上位木は、メモリモジュール(メインメモリ)に収まるデータ量とすることが好ましく、更に望ましくは、キャッシュメモリに収まるサイズとする。以上の結果、部分接尾辞木が、上位木データ片と下位木データ片群に分割された状態となる階層的インデックスデータが完成する。
【0066】
(階層的インデックスデータのデータ構造)
図9(A)に示すように、本実施形態によって生成される階層的インデックスデータのデータ構造は、参照文字列の接尾辞配列を階層化した接尾辞木構造であり、かつ、最上位階層から下位に向かう階層数を所定値に設定することで、当該所定値よりも下位側の階層データが省略されている。結果、階層的インデックスデータのデータ量を削減することが可能となっている。とりわけ、本実施形態では、最悪では参照文字列長に比例した階層数のデータ構造になるところ、当該所定値を1000以下に設定することで、1000階層以下の部分接尾辞木を用いているので、そのデータ量を飛躍的に削減できる。現在普及しているショットガン・シーケンス法は、シーケンサから出力されるクエリ文字列の文字数が150~200程度であることから、1000階層以下の部分接尾辞木であっても、十分にマッピングできるので、データ量削減とマッピング品質維持を合理的に両立できる。
【0067】
また更に、本実施形態によって生成される階層的インデックスデータのデータ構造は、部分接尾辞木が途中階層で分割されており、この途中階層よりも上位階層を含む上位木のデータ片と、この途中階層よりも下位階層を含み且つ上位木の下位側に繋がる複数の下位木のデータ片を有する構造となっている。なお、「データ片に分割されている」という表現は、コンピュータが、互いに別々のデータとしてメモリモジュール102(記憶装置)に記憶可能な状態、あるいは、プロセッサモジュール104が互いに別々のデータとして処理できる状態であることを意味している。これにより、上位木データ片のデータ量や、各下位木データ片のデータ量を小さくすることができるので、これらを、メモリモジュール102に格納することができ、更には、キャッシュメモリに、各データ片全体を展開させたりできる。結果、いわゆる汎用コンピュータを用いる場合において、プロセッサモジュール104で後述するマッピング処理を並列処理する際、キャッシュメモリ内で探索処理がヒットする確率が極めて高くなり、高速なマッピングを実行できる。
【0068】
なお、本実施形態では、部分接尾辞木における終端接点(葉)から根(ルート(#))に向かう階層の途中に存在する分割段数が1となる場合を例示したが、本発明はこれに限定されない。例えば
図16に示すように、終端接点(葉)から根(ルート(#))に向かう階層の途中に、複数の分割接点(灰色接点)を設けることで、多段分割してもよい。なお、
図16では、「終端接点(葉)から根(ルート(#))にむかって遡っていく際に通過する途中接点で、自身よりも下位階層に属する終端接点(葉)の数が3以下となる場合」に分割するようにしている。更に、この分割接点で分割された下位木については、総接点数を仮想的に1に変換してから、更に、分割接点から上位階層に向かって接点を遡り、同様に、通過する途中接点で、自身よりも下位階層に属する終端接点(葉)の数が、3以下となる場合」に追加分割している。
【0069】
なお、ヒトゲノム参照配列に基づいて、150階層まで削減された部分接尾辞木について、「終端接点から上位階層に向かって途中接点を遡っていく際に、その途中接点よりも下位階層に属する終端接点(葉)の数が、所定値以下となる場合」という分割条件について、上記所定値は、3万~30万の範囲内に設定されることが好ましい。望ましくは所定値を5万~20万に設定する。例えば所定値を3万に設定すると、根(ルート(#))を含む1つの最上位木と、この最上位木に属する約100万個の下位木群に分割できる。例えば所定値を10万に設定すると、根(ルート(#))を含む1つの最上位木と、この最上位木に属する約30万個の下位木群に分割できる。例えば所定値を3万に設定すると、根(ルート(#))を含む1つの最上位木と、この最上位木に属する約10万個の下位木群に分割できる。これらの条件の場合、最上位木のデータサイズが10MB以下(例えば1MB程度)となり、メモリモジュール102(メインメモリ)に十分に展開できるサイズとなる。更にこれらの条件の場合、各下位木のデータ量が10MB以下、望ましくは1MB以下となり、メモリモジュール102(メインメモリ)に十分に展開できるサイズであり、更に、キャッシュメモリにも収まるサイズとなる。
【0070】
<マッピング用プログラム>
図10は、本実施形態に係るコンピュータシステムによるマッピング処理の一例を説明するフローチャートである。すなわち、
図10は、
図2に示したクエリ文字列の参照文字列へのマッピング処理(S202)の詳細を示している。かかるマッピング処理により、クエリ文字列が参照文字列にマッピングされ、参照文字列における出現開始位置が同定される。また、
図19には、マッピング用コンピュータシステム202の機能ブロック構成が示されており、上位木展開手段402、クエリ文字列群受信手段404、クエリ文字列群展開手段405、クエリ文字列群判別手段406、第一繰り返し手段407、下位木及びクエリ文字列群セット展開手段408、メモリ残量判定手段409、クエリ文字列出現位置決定手段410、第二繰り返し手段412を有する。各機能ブロックについて、以下、フローチャート等を参照して説明する。なお、以下では、上位コンピュータ10によるマッピング処理が説明されるが、並列的に動作する下位コンピュータ20によるマッピング処理も同様である。
【0071】
(上位木展開手段402)
図10に示すように、上位コンピュータ10は、データベース30から、階層的インデックスにおける上位木を読み出して、メモリモジュール102上に展開し、記憶する(S402)。上位コンピュータ10は、高速化の観点から、上位木を構成するデータをメモリモジュール102上に連続的に展開し、記憶する。ここで、連続的に展開とは、データが同一バンクにおける連続的なメモリアドレスに配置されることを含む。
【0072】
(クエリ文字列群受信手段404)
次に、上位コンピュータ10は、参照文字列に対してマッピングを行うための複数のクエリ文字列(クエリ文字列群)を受信する(S404)。受信したクエリ文字列は、例えば、データベース30等の記憶手段に一時的に保存される。例えば、参照文字列がヒトゲノム参照配列であれば、クエリ文字列は、シークエンサから読み出される塩基対のデータ片である。以下では、理解容易のため、
図11に示すように、クエリ文字列は3文字で、その数が40個になるものとして説明する。しかし、実際のシークエンサから読み出される塩基対のデータ片のクエリ文字列は約150文字であり、その数は約7憶個になることに留意されたい。なお、ここでは一時的にクエリ文字列群をデータベース30に保存する場合を例示するが、外部装置となるシークエンサ自体がデータベース機能を有する場合は、シークエンサ側のデータベースをそのまま活用してもよい。
【0073】
(クエリ文字列群展開手段405)
次に、上位コンピュータ10は、データベース30に保存されるクエリ文字列群を読み出して、メモリモジュール102上に展開し、記憶する(S405)。上位コンピュータ10は、高速化の観点から、クエリ文字列群を構成するデータをメモリモジュール102上に連続的に展開し、記憶する。ただし、クエリ文字列群の全データ量は大きく、また、上位木展開手段402によるメモリモジュール102への上位木の展開を優先する必要があるため、上位コンピュータ10のメモリモジュール102には、一部のクエリ文字列群を展開する。
【0074】
(クエリ文字列群判別手段406)
次に、上位コンピュータ10は、メモリモジュール102に展開したクエリ文字列群の中からクエリ文字列を一つずつ取り出して、同じメモリモジュール102に展開されている上位木(
図9(B))を参照することで、どの下位木(下位木管理番号)に属するか否かを判別する(S406)。これにより、クエリ文字列の各々に紐づいた下位木管理番号が決定され、そのデータがメモリモジュール102に保存される。結果、
図11に示すように、40個の各クエリ文字列について、所属する下位木管理番号が付された状態で、メモリモジュール102に記憶される。クエリ文字列群の各々に紐づいた下位木管理番号データは、最後に、データベース30に保存される。なお、
図18に示すように、プロセッサモジュールが4個のコアA,B,C,Dを有する場合、上記判別処理を並列処理することで、高速化することが好ましい。
【0075】
(第一繰り返し手段407)
クエリ文字列群展開手段405で述べたように、上位コンピュータ10のメモリモジュール102には、その容量上限によって、一部のクエリ文字列群しか展開できない。従って、上位コンピュータ10は、データベース30を参照して、ステップS406の未判別のクエリ文字列群が残存するか否かを判定する(S407)。データベース30に、未判別のクエリ文字列群が存在する場合は、ステップS405に戻り、残りのクエリ文字列群をメモリモジュール102上に展開して記憶し、各クエリ文字列について、これに紐づいた下位木管理番号を判別する(S406)。
【0076】
一方、ステップS407で未判別のクエリ文字列群が無くなったら、全てのクエリ文字列が、下位木単位でグループ分けされたことになり、ステップS408に進む。なお、
図11に示すクエリ文字列で、網掛けされた文字列は、上位木を参照した判別時に使用されなかった文字列を意味する。
【0077】
(下位木及びクエリ文字列群セット展開手段408)
次いで上位コンピュータ10は、データベース30から、階層的インデックスにおける特定の下位木を読み出して、メインメモリモジュール102上に展開する。更に上位コンピュータ10は、展開された特定の下位木と同じ下位木管理番号に所属するクエリ文字列群についても、同じメモリモジュール102上に展開して記憶する。これにより、特定の下位木とこれに属するクエリ文字列群が、メモリモジュール102にセット展開されることになる(S408)。なお、クエリ文字列群のメモリモジュール102への展開方法は様々である。例えば、クエリ文字列群のクエリ文字列同士が、プロセッサモジュール104によって連続的に読みだされるように、前のクエリ文字列と後のクエリ文字列をポインタで繋ぐことで、クエリ文字列群を配列化してもよい。
【0078】
(メモリ残量判定手段409)
更に上位コンピュータ10は、メモリモジュール102の残量を参照して、まだ、他の特定の下位木及び当該下位木と同じ下位木管理番号に所属するクエリ文字列群を展開できる空き容量がある場合は、ステップS408に戻って、他の特定の下位木及びクエリ文字列群をセット展開する。これにより、メモリモジュール102には、下位木及びクエリ文字列群の複数セットが、同時に展開されることになる。なお、本実施形態では、下位木管理番号11,9,12,0の下位木及びクエリ文字列群の4セットが、メモリモジュール102に展開される。
【0079】
(クエリ文字列出現位置決定手段410)
次に、上位コンピュータ10は、セット展開されたクエリ文字列群の各クエリ文字列を順番に取り出して、所属する下位木を探索し、各クエリ文字列が最終的にどの配列番号(出現位置)に属するか否かを同定する(S410)。
【0080】
より詳細に、例えば、プロセッサモジュールが4個のコアA,B,C,Dを有する場合、下位木管理番号11,9,12,0の下位木及びクエリ文字列群の4セットの同定処理を、各コアA,B,C,Dに割り振ることで、並列処理を行う。各下位木のデータ量は、キャッシュメモリの容量以下に予め設定されているため、
図12(A)~(D)に示すように、同定処理において、各下位木データが4個のL1キャッシュメモリL1a,L1b,L1c,L1d上に展開されることになる。結果、各コアA,B,C,Dにおける各下位木における探索処理が、L1キャッシュメモリL1a,L1b,L1c,L1d内で完結するので、高速処理が実現される。。なお、
図12(A)~(D)では、説明の便宜上、各下位木の上部の上部には階層数が示されており、各下位木の左側には、各下位木の管理番号が付されている。また、各下位木の左側には、下位木の終端接点(葉)毎の配列番号(出現位置)が示されている。コアA,B,C,Dで同定された各クエリ文字列の右側には、最終的な配列番号(出現位置)が示されている。なお、クエリ文字列で網掛けされた文字は、下位木を参照した出現位置決定時に使用されなかった文字(上位木の判別で使用された文字)を意味する。このステップS410では、メモリモジュール102にセット展開された全ての下位木及びクエリ文字列群について出現位置が同定される。その同定結果に関するデータは、データベース30に保存される。
【0081】
(第二繰り返し手段412)
次に、上位コンピュータ10は、データベース30において、未処理の下位木及びクエリ文字列群のセットが残存するか否かを判定する(S412)。
図12では、16個の内の4セットの下位木及びクエリ文字列を処理した状態となるので、ステップS408に戻り、
図13(A)~(D)に示すように、下位木管理番号13,17,14,18の4セットの下位木及びクエリ文字列を、メモリモジュール102にセット展開して記憶する。その後、4個のコアA,B,C,Dで、セット単位で、各クエリ文字列について所属する下位木を参照することで、各クエリ文字列が最終的にどの配列番号(出現位置)に属するか否かを同定する(S410)。更に、未処理の下位木及びクエリ文字列群のセットが残存するか否かを判定する(S412)。まだ、4セットの未処理の下位木及びクエリ文字列が存在するので、ステップS408に戻り、
図14(A)~(D)に示すように、下位木管理番号7,10,4,6の4セットの下位木及びクエリ文字列を、メモリモジュール102にセット展開して記憶し、4個のコアA,B,C,Dで、セット単位で、各クエリ文字列について所属する下位木を参照することで、各クエリ文字列が最終的にどの配列番号(出現位置)に属するか否かを同定する(S410)。次に、未処理の下位木及びクエリ文字列のセットが残存するか否かを判定する(S412)。未処理のセットが無くなったので、マッピング処理を終了する。
【0082】
なお、このS408~S412の処理は、上位コンピュータ10のプロセッサモジュール104における4個のコアA,B,C,Dで並行処理されるので、処理時間を大幅に短縮できる。特に図示しないが、複数の下位コンピュータ20(1)~20(n))でも、このマッピング処理を同時に処理(分散処理)させることで、さらなる時間短縮も実現できる。
【0083】
なお、
図10のマッピング処理では、ステップS407で未処理のクエリ文字列群が残存する場合に、一旦、処理済みのクエリ文字列群に関する情報をデータベース30に書き込んでメモリモジュール102を解放してから、未処理のクエリ文字列群をデータベース30からメモリモジュール102に読み込んで、各クエリ文字列に紐づいた下位木管理番号を判別している(S406)。そして、ステップS407を経て、データベース30における全てのクエリ文字列群の判別処理が完了してから、ステップS408~ステップS412に進んで同定処理を行う場合を例示したが、本発明はこれに限定されない。例えば
図20に示すように、ステップS405でメモリモジュール102に展開したクエリ文字列群を対象に、ステップS406で判別処理が完了したら、そのままステップS408に進み、判別処理で判定された下位木管理番号に対応する全ての下位木を取り込んでセット展開状態とし、ステップ410及びステップ412で同定処理を行うことができる。その後、ステップS407で未処理のクエリ文字列の有無を判別して、もし、未処理のクエリ文字列がある場合は、ステップS405に戻るようにしてもよい。
【0084】
以上のように、本実施形態のマッピング用コンピュータプログラムは、上位コンピュータ10が、データ量が削減された上位木のデータ片を利用して、予め、複数のクエリ文字列が、どの下位木に属するかについて判別するので、高速処理を実現できる。更に、判別完了後は、下位木及びこれに属するクエリ文字列群をセット展開しておくようにし、プロセッサモジュール104のコアA,B,C,Dが、当該特定の下位木に属する複数のクエリ文字列を連続的に探索することで、クエリ文字列の出現位置を連続的に同定できる。同定処理では、各下位木がキャッシュメモリに取り込まれるので、メモリモジュール102に対するランダムアクセスの回数を大幅に減らすことができる。
【0085】
なお、上記マッピング処理では、クエリ文字列の全体と一致する参照文字列を同定する場合を例示したが、本発明はこれに限定されない。例えば、クエリ文字列から一部文字列を抽出し、この一部文字列に対して、マッピング処理を実行してもよい。
【0086】
<階層的インデックスのデータ構造の変形例>
上記実施形態における階層的インデックスで採用される接尾辞木は、ACGTを有する参照文字列を1文字ずつ巡回させて得られる複数個の巡回文字列(
図5参照)について、
図6に示すように、1文字単位で階層化(ツリー化)して接尾辞木を生成する場合を例示したが、本発明はこれに限定されない。巡回文字列(
図5参照)について、複数文字を1セットにして階層化した接尾辞木を生成してもよい。
図15には、巡回文字列(
図5参照)について2文字単位で文字列ペアを形成し、この文字列ペアで接尾辞木を生成する場合を示す。このようにすると、階層数が削減されるので、部分接尾辞、上位木、下位木等のデータ量を更に削減することが可能となる。一方、例えば5文字以上を1セットにして階層化すると、接点数が増大してしまい、かえってデータ量が増大する可能性もある。従って、複数文字列をセットにして接尾辞木を生成する場合、そのセット文字数は2以上且つ4以下程度であることが好ましい。
【0087】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。例えば、本実施形態では、遺伝子情報となる参照文字列について、階層的インデックスを作成したり、マッピングを行ったりする場合を例示したが、本発明はこれに限定されず、遺伝子情報以外の参照文字列について、階層的インデックスを作成したり、マッピングを行ったりする場合に適用することができる。
【0088】
また例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
【0089】
更に上記実施形態では、コンピューティングデバイスのハードウェア構成が、汎用的な構造である場合を例示したが、本発明はこれに限定されない。例えば、FPGA(Field Programmable Gate Array)等によって個別にカスタマイズされたハードウェアを採用してもよい。具体的には、
図19に示される機能ブロックの全部または一部を、FPGAによって実現することができる。
【0090】
また更に、上記実施形態で示した階層的インデックスのデータ構造を実装するにあたっての詳細な表現手法(表記手法)は特に限定されない。例えば、LOUDS(Level-Ordered Unary Degree Sequence)手法によって木構造を表現すると、メモリ量を更に削減することも可能となる。
【0091】
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ(技術的事項)を、適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。
【符号の説明】
【0092】
1 コンピュータシステム
10 上位コンピュータ
20 下位コンピュータ
30 データベース