"生物配列情報の先頭から、KKは任意の整数文字の文字列である部分配列情報を1文字ずつずらして取得する取得部と、アセンブリング前処理を実行するプロセスが前記部分配列情報に関するアセンブリング前処理を担当するか否かを判定する担当判定部と、前記プロセスが前記部分配列情報に関するアセンブリング前処理を担当すると判定された場合、前記生物配列情報における前記部分配列情報の位置を示す位置情報を配列位置格納部に登録する登録部と、を備えることを特徴とするアセンブリング前処理装置。前記担当判定部は、前記部分配列情報のハッシュ値を算出し、前記ハッシュ値を第1の値で割ったときの剰余値を算出する算出部と、算出した前記剰余値が、第2の値であるか否かを判定する剰余判定部と、を備えることを特徴とする請求項1に記載のアセンブリング前処理装置。前記登録部は、前記算出した前記剰余値が前記第2の値であると判定された場合、前記取得した部分配列情報が、該部分配列をキーとする連想配列を格納する連想配列格納部に登録されているか否かを判定する部分配列判定部と、を備えることを特徴とする請求項2に記載のアセンブリング前処理装置。前記登録部は、さらに、前記部分配列情報が前記連想配列格納部に登録されている場合、前記生物配列情報における該部分配列情報の位置情報と、該連想配列格納部に登録されている部分配列情報の前記生物配列情報における位置情報と、を関係付けて前記配列位置格納部に登録する配列位置登録部を備えることを特徴とする請求項3に記載のアセンブリング前処理装置。コンピュータに、生物配列情報の先頭から、KKは任意の整数文字の文字列である部分配列情報を1文字ずつずらして取得し、アセンブリング前処理を実行するプロセスが前記部分配列情報に関するアセンブリング前処理を担当するか否かを判定し、前記プロセスが前記部分配列情報に関するアセンブリング前処理を担当すると判定された場合、前記生物配列情報における前記部分配列情報の位置を示す位置情報を配列位置格納部に登録する、処理を実行させるアセンブリング前処理プログラム。アセンブリング前処理を担当するか否かの判定において、前記コンピュータは、前記部分配列情報のハッシュ値を算出し、前記ハッシュ値を第1の値で割ったときの剰余値を算出し、算出した前記剰余値が、第2の値であるか否かを判定する処理を実行させる請求項5に記載のアセンブリング前処理プログラム。前記登録する処理において、前記コンピュータは、前記算出した前記剰余値が前記第2の値であると判定された場合、前記取得した部分配列情報が、該部分配列をキーとする連想配列を格納する連想配列格納部に登録されているか否かを判定する処理を実行させる請求項6に記載のアセンブリング前処理プログラム。前記登録する処理において、前記コンピュータは、前記部分配列情報が前記連想配列格納部に登録されている場合、前記生物配列情報における該部分配列情報の位置情報と、該連想配列格納部に登録されている部分配列情報の前記生物配列情報における位置情報と、を関係付けて前記配列位置格納部に登録する処理を実行させる請求項6に記載のアセンブリング前処理プログラム。アセンブリングの前処理を複数のコンピュータで実行するコンピュータクラスタシステムの制御方法であって、前記複数のコンピュータのそれぞれは、生物配列情報の先頭から、KKは任意の整数文字の文字列である部分配列情報を1文字ずつずらして取得し、アセンブリング前処理を実行するプロセスが前記部分配列情報に関するアセンブリング前処理を担当するか否かを判定し、前記プロセスが前記部分配列情報に関するアセンブリング前処理を担当すると判定された場合、前記生物配列情報における前記部分配列情報の位置を示す位置情報を配列位置格納部に登録することを特徴とするコンピュータクラスタシステムの制御方法。上述したように、コンピュータを用いて、DeBruijnGraphを作成する場合、その前処理に用いるKmerインデックステーブルの作成に際して、例えば、数十~数百ギガバイトのオーダで大量のメモリ容量が消費される。したがって、そのような膨大なデータを処理するために、処理時間が長くなる。また、分散KVSを用いて、複数のKVSサーバにKmerインデックステーブルの作成を実行させる場合でも、KVSクライアントにそれらのKVSサーバに処理を分散させる処理が集中する。そのため、KVSクライアントでの分散処理がボトルネックとなり、処理の高速化を図ることができない可能性がある。そこで、本実施形態の一側面によれば、生物配列断片のインデックス作成処理の高速化を図る情報処理装置を提供する。本実施形態の一側面にかかるアセンブリング前処理装置は、取得部、担当判定部、登録部を含む。取得部は、生物配列情報の先頭から、KKは任意の整数文字の文字列である部分配列情報を1文字ずつずらして取得する。担当判定部は、アセンブリング前処理を実行するプロセスが部分配列情報に関するアセンブリング前処理を担当するか否かを判定する。登録部は、プロセスが部分配列情報に関するアセンブリング前処理を担当すると判定された場合、生物配列情報における部分配列情報の位置を示す位置情報を配列位置格納部に登録する。本実施形態の一側面によれば、生物配列断片のインデックス作成処理の高速化を図ることができる。図1は、Kmerインデックステーブルを説明するための図である。図1の例では、Read配列は、上段より、Read配列0、Read配列1、Read配列3、Read配列4、で示される。Read配列は、位置0~位置27までの28個の塩基配列で表される。ここで、Aはアデニンを示す。Gはグアニンを示す。Tは、チミンを示す。Cは、シトシンを示す。Kmernn0,1,2,は、Read配列を1文字ずらしで長さKの文字列に区切った部分配列である。例えば、Kmer0は、Read配列0の位置0から6文字切り取った部分配列である。Kmer1は、Read配列0の位置1から6文字切り取った部分配列である。Kmer2は、Read配列0の位置2から6文字切り取った部分配列である。このように、i番目のRead配列およびそのRead配列のj番目の位置によって、KmerがどのRead配列のどの場所に存在するかを特定することができる。このように、各KmerがどのRead配列のどの場所に存在するかの情報を保持するテーブルが、Kmerインデックステーブルである。図2及び図3は、Kmerインデックステーブルの作成を説明するための図である。コンピュータを用いて、Kmerインデックステーブルを作成する場合について考える。この場合、CPUCentralProcessingUnitは、Read配列を読み込むと、図2に示すように、Read配列の先頭から順次Kmerを取得する。CPUは、順次取得したKmerをキーとし、Kmerの位置情報Readi、Positionjを値として、連想配列格納部に格納していく。ここで、位置情報Readi、Positionjは、i番目のRead配列、およびそのRead配列のj番目の位置を示す。また、連想配列格納部はコンピュータ上のメモリに配置される。例えば、Kmer0の場合、キーとしてACGTGTが格納され、値としてRead0、Position0が格納される。例えば、Kmer1の場合、キーとしてCGTGTTが格納され、値としてRead0、Position1が格納される。例えば、Kmer2の場合、キーとしてGTGTTCが格納され、値としてRead0、Position2が格納される。図3に示すように、Read配列から取得したKmer対象Kmerと同一のKmer基準Kmerが連想配列格納部に既に存在していた場合、CPUはKmerインデックステーブルに、基準Kmerの位置情報と対象Kmerの位置情報を関係付けて登録する。例えば、Read0、Position15にあるKmerCGTGTTを連想配列格納部に格納する場合について考える。この場合、KmerCGTGTTは既に連想配列格納部に登録されているので、Read0Position15のKmerがRead0Position1のKmerと同一であることを示す情報をKmerインデックステーブルに登録する。このようにして、連想配列格納部及びKmerインデックステーブルが作成される。ところが、Read配列が大量に存在する場合、Kmerも大量になり、大量のKmerを処理することになる。その結果、連想配列格納部が肥大化し、コンピュータ上のメモリを大量に消費することになる。また、コンピュータの処理量も増加するので、処理時間が長くなる可能性もある。そこで、処理時間を短縮させるために、CPUの処理効率を向上させることが考えられる。例えば、複数のスレッドが同時に動作するマルチスレッド方式を用いた場合には、各スレッドが、自身が担当するRead配列について処理を行う。しかしながら、マルチスレッド方式の場合、各スレッドは、同一プロセス内で動作しているため、メモリ空間を共有している。したがって、複数のスレッドは、共有メモリ上にある同一の連想配列格納部を更新することになる。そのため、例えば、連想配列格納部において、同じキーを有するエントリを更新する場合にはスレッド間の競合が生じるので、排他制御を行う。排他制御とは、あるスレッドに資源を独占的に利用させている間は、他のスレッドが利用できないようにする事で整合性を保つ処理をいう。排他制御の結果、あるスレッドが資源を利用している間は、競合する他のスレッドはその利用が終了するまで待つことになり、待ち時間が発生する。そのため、処理時間が遅延する。また、複数のスレッドを用いて処理をしても、各スレッドはプロセスメモリ空間を共有するため、プロセスメモリ空間を分離できない。したがって、プロセス当たりのメモリ使用量は変わらない。そこで、プロセス当たりの処理量を軽減させる方法の1つとして、分散KVSを利用することが考えられる。しかしながら、分散KVSを用いて、複数のKVSサーバにKmerインデックステーブルの作成を実行させる場合でも、KVSクライアントにそれらのKVSサーバに処理を分散させる処理が集中する。そのため、KVSクライアントがボトルネックとなり、処理の高速化を図ることができない可能性がある。そこで、本実施形態では、以下に説明するように、生物配列断片のインデックス作成処理の高速化を図る情報処理装置を提供する。図4は、本実施形態におけるアセンブリング前処理装置の構造の一例を示す。アセンブリング前処理装置10は、複数存在する。アセンブリング前処理装置10は、取得部11、担当判定部12、登録部15を含む。取得部11は、生物配列情報21の先頭から、KKは任意の整数文字の文字列である部分配列情報Kmerを1文字ずつずらして取得する。取得部11の一例として、図9のS13、S14の処理がある。生物配列情報21は、シーケンサ装置が出力したDNARNA等の生物配列Read配列である。担当判定部12は、アセンブリング前処理を実行するプロセスが部分配列情報に関するアセンブリング前処理を担当するか否かを判定する。担当判定部12の一例として、図9のS15~S17の処理がある。登録部15は、プロセスが部分配列情報に関するアセンブリング前処理を担当すると判定された場合、生物配列情報21における部分配列情報の位置を示す位置情報を配列位置格納部20に登録する。登録部15の一例として、図9のS18、S20の処理がある。このように構成することにより、各プロセスは、自身の担当するKmerを対象にしてKmerインデックステーブルを作成することができるので、プロセス当たりの処理量が減少すると共に、処理の並列化を図ることができる。したがって、生物配列断片のインデックス作成処理の高速化を図ることができる。担当判定部12は、算出部13、剰余判定部14を含む。算出部13は、部分配列情報のハッシュ値を算出し、ハッシュ値を第1の値で割ったときの剰余値を算出する。第1の値は、アセンブリング前処理装置の数、またはプロセス数を示す。ここでのプロセスとは、取得部11、算出部12、剰余判定部13、部分配列判定部14、及び登録部15により実行される一連の処理を実行するプロセスを示す。算出部13の一例として、図9のS15、S16の処理がある。剰余判定部14は、算出した剰余値が、第2の値であるか否かを判定する。剰余判定部14の一例として、図9のS17の処理がある。このように構成することにより、Kmerにより一意に処理を担当するプロセスが決定され、同一のKmerは、同一のプロセスにより処理することができる。登録部15は、部分配列判定部16を含む。部分配列判定部16は、算出した剰余値が第2の値であると判定された場合、取得した部分配列情報が、部分配列をキーとする連想配列を格納する連想配列格納部18に登録されているか否かを判定する。部分配列判定部16の一例として、図9のS18の処理がある。連想配列格納部18の一例として、連想配列格納部43がある。このように構成することにより、Kmerインデックステーブル作成のために用いる連想配列を作成することができる。また、プロセス単位で連想配列格納部へKmerを登録することができるので、マルチスレッド方式を採用した場合の競合の問題も生じない。登録部15は、配列位置登録部17を含む。配列位置登録部17は、部分配列情報が連想配列格納部18に登録されている場合、生物配列情報における部分配列情報の位置情報と、連想配列格納部に登録されている部分配列情報の生物配列情報21における位置情報とを関係付けて配列位置格納部20に登録する。配列位置登録部17の一例として、S19の処理がある。配列位置格納部20の一例として、例えば、Kmerインデックステーブル56がある。このように構成することにより、Kmerインデックステーブルを作成することができる。図5は、本実施形態における複数のプロセスによる並列処理を実現する方法の一例を示す。各プロセスは、ハッシュ関数を用いて、生体配列から読み出したKmerのハッシュ値を算出する。各プロセスは、そのハッシュ値をプロセス数で割った剰余に応じて、自身がそのKmerについてのKmerインデックステーブル作成処理を担当するか否かを判定する。そのプロセスがそのKmerについてのKmerインデックステーブル作成処理を担当すると判定した場合、そのプロセスは、そのKmerについてのKmerインデックステーブル作成処理を行う。これにより、Kmerのハッシュ値をプロセス数で割った剰余に応じて、KmerについてのKmerインデックステーブル作成処理を担当するプロセスを動作させることができる。例えば、図5に示すように、Kmerインデックステーブル作成処理を4つのプロセスで行うとする。Kmerインデックステーブル作成処理では、各プロセスは、自身が担当するKmerであると判定した場合、そのKmerが連想配列格納部に登録されていなければ、そのKmerを連想配列格納部に登録する。各プロセスは、自身が担当するKmerであると判定した場合、そのKmerが連想配列格納部に登録されていれば、次の処理を行う。すなわち、そのプロセスは、KmerインデックステーブルにKmerの位置情報と、連想配列格納部21に登録されているKmerの位置情報を関係付けて登録する。なお、各プロセスは、自身の担当するKmerを判別するために、予め固有の値担当Noを保持している。例えば、図5の場合、プロセス0は、値0を有している。プロセス1は、値1を有している。プロセス2は、値2を有している。プロセス3は、値3を有している。Kmerのハッシュ値をプロセス数で割った剰余が、各プロセスが予め有している値と同じであれば、そのプロセスがそのKmerについてのKmerインデックステーブル作成処理を担当する。例えば、図5において、各プロセスは、Read配列からKmernを読み出し、ハッシュ関数を用いてKmernのハッシュ値を計算し、計算したハッシュ値を4で割った場合の剰余を計算する。剰余が0である場合、プロセス0がそのKmernについてのKmerインデックステーブル作成を担当する。担当プロセスを決定するときの指標は、Kmerのハッシュ値をプロセス数で割って得られる剰余以外でも、次の条件を満たせばよい。その条件とは、1Kmerにより一意の値が決まる、2担当プロセスが少なくとも1つ存在する、3Kmerがノード毎に十分に分散一様分布に近ければ近いほどよいである。図6は、本実施形態におけるKmerインデックス作成処理の全体のフローを示す。上述の通り、各プロセスは、予め担当Noを有している。例えば、図6の場合、プロセス031-0は、担当Noとして値0を有している。プロセス131-1は、担当Noとして値1を有している。プロセス231-2は、担当Noとして値2を有している。プロセス331-3は、担当Noとして値3を有している。各プロセス0~331-0~31-3は、Read配列30を読み込み、Kmerインデックス部分テーブル作成処理S1S1-0~S1-3を行う。ここで、Kmerインデックス部分テーブル作成処理S1とは、次の処理をいう。すなわち、各プロセスは、Read配列30から読み出したKmerのハッシュ値をハッシュ関数を用いて算出する。そのハッシュ値をプロセス数で割った剰余に応じて、そのプロセスが、自身が担当するKmerについての処理であるかを判定する。そのプロセスが担当するKmerについての処理であると判定した場合、そのプロセスは、そのKmerが連想配列格納部に登録されていなければ、そのKmerを連想配列格納部に登録する。そのKmerが連想配列格納部に登録されていなければ、そのプロセスは、次の処理を行う。すなわち、そのプロセスは、Kmerインデックス部分テーブル3232-0~32-3にKmerの位置情報と、連想配列格納部に登録されているKmerの位置情報を関係付けて登録する。各プロセス0~3において、Kmerインデックス部分テーブル作成処理S1S1-0~S1-3の終了後、特定のプロセスは、次の処理を行う。すなわち、特定のプロセスは、各プロセスで作成されたKmerインデックス部分テーブルを連結して、Kmerインデックステーブル33を作成するコンカーチネート処理S2。なお、特定のプロセスは、プロセス0~3のいずれかでもよいし、プロセス0~3とは別のプロセスでもよい。図7は、本実施形態の一実施例におけるアセンブリング前処理システムの一例を示す。アセンブリング前処理システムは、計算機4040-0~40-3及びストレージ装置50を含む。計算機4040-0~40-3及びストレージ装置50は、ネットワーク57で接続されている。計算機40は、CPU4141-0~41-3、メモリ4242-0~42-3を含む。CPU41は、計算機全体の動作を制御する。メモリ42は、データを格納する記憶装置である。メモリ4242-0~42-3は、連想配列格納部4343-0~43-3を保持する。計算機40-0のメモリ42-0は、さらに、担当管理テーブル44を保持する。担当管理テーブル44は、担当Noと、各計算機40-0を識別する計算機識別情報とが関係付けられて格納されている。なお、担当管理テーブル44のエントリをカウントすれば、プロセス数を得ることができる。ストレージ装置50は、CPU51、メモリ52、共有ディスク53を含む。CPU51は、ストレージ装置50全体の動作を制御する。メモリ52は、データを格納する記憶装置である。共有ディスク53は、ネットワーク57を介して、計算機40-0~40-3が共有で利用する大容量記憶装置である。共有ディスク53は、Read配列54、Kmerインデックス部分テーブル55、Kmerインデックステーブル56を格納する。図8は、本実施形態の一実施例におけるKmerインデックス部分テーブル及びKmerインデックステーブルのデータ構造を示す。Kmerインデックス部分テーブル55及びKmerインデックステーブル56のデータ構造は同一であるので、以下では、Kmerインデックス部分テーブル55について説明する。Kmerインデックス部分テーブル55は、基準KmerのRead配列の番号61、基準KmerのRead配列における位置62、対象KmerのRead配列の番号63、対象KmerのRead配列における位置64を含む。ここで、基準Kmerとは、連想配列格納部4343-0~43-3に格納されているKmerをいう。具体的には、基準Kmerは、各プロセス計算機40において処理を実行する場合に、各プロセス計算機40でRead配列から1文字ずつずらして読み出して得られた同一のKmerのうち、最初に検出されたKmerのことである。対象Kmerとは、各プロセス計算機40でRead配列から1文字ずつずらして読み出して得られた同一のKmerのうち、2番目以降に検出されたKmerのことである。基準KmerのRead配列の番号61及び基準KmerのRead配列における位置62には、連想配列格納部4343-0~43-3に格納されているKmer基準KmerのRead配列の番号、及びそのRead配列における位置が格納される。対象KmerのRead配列の番号63、及び対象KmerのRead配列における位置64は、基準Kmerの検出後に検出された、基準Kmerと同一のKmer対象KmerのRead配列の番号、及びそのRead配列における位置が格納される。図9は、本実施形態の一実施例における並列化された各プロセス各計算機が行うKmerインデックス部分テーブル作成処理フローを示す。CPU41は、担当Noとプロセス数Pを取得するS11。本実施形態では、CPU41-1~41-3は、計算機40-0にアクセスして、自身の計算機識別番号をキーとして担当管理テーブル44から自身の担当Noを取得し、担当管理テーブル44のエントリをカウントしてプロセス数Pを取得する。計算機40-0については、CPU41-0は、メモリ42-0にアクセスし、自身の計算機識別番号をキーとして担当管理テーブル44から自身の担当Noを取得し、担当管理テーブル44のエントリをカウントしてプロセス数Pを取得する。CPU41-0は、担当Noとして値0を取得する。CPU41-1は、担当Noとして値1を取得する。CPU41-2は、担当Noとして値2を取得する。CPU41-3は、担当Noとして値3を取得する。なお、担当Noとプロセス数Pは、各計算機40に予め設定しておいてもよい。なお、プロセス数Pは、本実施例では、4である。CPU41は、初期化処理を行うS12。すなわち、CPU41は、変数i0、j=0を設定すると共に、空の連想配列格納部43を作成する。CPU41は、ストレージ装置50の共有ディスク53にアクセスし、i番目のRead配列54を読み込むS13。それから、CPU41は、そのi番目のRead配列におけるj番目のKmerを取得するS14。CPU41は、予めメモリ42に展開したハッシュ関数を用いて、取得したKmerのハッシュ値Hを算出するS15。CPU41は、算出したハッシュ値Hをプロセス数Pで割って得られる剰余を算出するS16。CPU41は、得られた剰余が、担当Noと等しいか否かを判定するS17。得られた剰余が担当Noと等しくない場合S17でNo、S21の処理に進む。得られた剰余が担当Noと等しい場合S17でYes、CPU41は、その取得したKmerが連想配列格納部43に登録されているか否かを判定するS18。その取得したKmerが連想配列格納部43に登録されていない場合S18でNo、CPU41は、その取得したKmer基準Kmerの位置i,jを、連想配列格納部43に登録するS19。その取得したKmerが連想配列格納部43に登録されている場合S18でYes、CPU41は、次の処理を行う。CPU41は、取得したKmer対象Kmerの位置i,jと、連想配列格納部43に登録されているKmer基準Kmerの位置とを関係付けて、ストレージ装置50の共有ディスク53内のKmerインデックス部分テーブル55に登録するS20。Kmerインデックス部分テーブル55は、ストレージ装置50の共有ディスク53内に計算機40毎に構築される。S17でNoの場合、またはS20もしくはS21の終了後、CPU41は、変数jをインクリメントするS21。CPU41は、そのi番目のRead配列におけるj番目のKmerが存在するか否かを判定するS22。そのi番目のRead配列におけるj番目のKmerが存在する場合S22でYes、S14の処理へ戻る。そのi番目のRead配列におけるj番目のKmerが存在しない場合S22でNo、CPU41は、変数iをインクリメントするS23。CPU41は、i番目のRead配列が存在するか否かを判定するS24。i番目のRead配列が存在する場合S24でYes、S14の処理へ戻る。i番目のRead配列が存在しない場合S24でNo、本フローは終了する。これにより、各プロセス各計算機40で作成されたKmerインデックス部分テーブル55が、ストレージ装置50の共有ディスク53内に格納される。計算機40-0は、ストレージ装置50の共有ディスク53内にある各プロセス各計算機40で作成されたKmerインデックス部分テーブル55を連結して、Kmerインデックステーブル56を作成し、共有ディスク53に格納する。なお、S20において、CPU41は、対象Kmerの位置と、基準Kmerの位置とを関係付けて、ストレージ装置50の共有ディスク53内の、対応するKmerインデックス部分テーブル55に登録したが、これに限定されない。例えば、各CPU41は、対象Kmerの位置と、基準Kmerの位置とを関係付けて、ストレージ装置50の共有ディスク53内の、共有のKmerインデックステーブル55に登録するようにしてもよい。この場合、Kmerインデックステーブル55を管理するDBMSDataBaseManagementSystemによって、Kmerインデックステーブル55に対する各計算機40からのエントリの追加処理が制御される。図10は、本実施形態を適用したコンピュータのハードウェア環境の構成ブロック図である。コンピュータ70は、本実施形態の処理を行うプログラムを読み込むことにより、アセンブリング前処理装置10、または計算機40として機能する。コンピュータ70は、出力I/F71、CPU72、ROM73、通信I/F74、入力I/F75、RAM76、記憶装置77、読み取り装置78、バス79を含む。コンピュータ70は、出力機器81、及び入力機器82と接続可能である。ここで、CPUは、中央演算装置を示す。ROMは、リードオンリメモリを示す。RAMは、ランダムアクセスメモリを示す。I/Fは、インターフェースを示す。バス79には、出力I/F71、CPU72、ROM73、通信I/F74、入力I/F75、RAM76、記憶装置77、読み取り装置78が接続されている。読み取り装置78は、可搬型記録媒体を読み出す装置である。出力機器81は、出力I/F71に接続されている。入力機器82は、入力I/F75に接続されている。記憶装置77としては、ハードディスクドライブ、フラッシュメモリ装置、磁気ディスク装置など様々な形式の記憶装置を使用することができる。記憶装置77またはROM73には、例えば、本実施形態で説明した処理を実現するアセンブリング前処理プログラム、連想配列格納部43が格納されている。また、記憶装置77またはROM73は、担当管理テーブル、Read配列、Kmerインデックス部分テーブル55、Kmerインデックステーブル56等を記憶することもできる。CPU72は、記憶装置77等に格納した本実施形態で説明した処理を実現するプログラムを読み出し、当該プログラムを実行する。具体的には、CPU72は、当該プログラムを実行することにより、取得部11、担当判定部12、登録部15として機能する。本実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク80、および通信I/F74を介して、例えば記憶装置77に格納してもよい。また、本実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置78にセットされて、CPU72によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはCD-ROM、フレキシブルディスク、光ディスク、光磁気ディスク、ICintegratedcircuitカード、USBUniversalSerialBusメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置78によって読み取られる。また、入力機器82には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレット、タッチパネルなどを用いることが可能である。また、出力機器81には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク80は、インターネット、LAN、WAN、専用線、有線、無線等の通信網であってよい。なお、本実施形例では、シングルプロセッサを有する計算機を用いて、アセンブリング前処理を行ったが、マルチプロセッサを有する計算機を用いてアセンブリング前処理を行ってもよい。本実施形態によれば、コンピュータクラスタ等の分散メモリ型のコンピュータシステムを用いて、Kmerインデックステーブル作成のプロセスを並列化することができる。これにより、CPU当たりのメモリ消費量を削減することができる。また、CPU当たりの処理するKmerの数が削減される。ハッシュ値が完全に分散していることを条件に、プロセス数に比例して実行時間の短縮を図ることができる。また、各プロセスが完全に独立しているので、プロセス間においてリソースの競合の発生を回避することができる。これにより、処理速度の低下を防止することができる。また、あるコンピュータから複数のコンピュータに対して、各コンピュータが担当するKmerを振り分ける処理がないので、当該振分処理によるボトルネックの問題も生じない。なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。"