(57)【要約】【課題】変異マスタテーブルの更新を並列に行う場合の情報の一意性の確保を、処理効率の低下を抑制しつつ実現する。【解決手段】変異マスタテーブル２６は、変異ＩＤ、変異パターン及びパターンコードの各列を含み、変異ＩＤ及びパターンコードの列に複合主キー制約が設定されている。複数の処理部１８は、以下の処理を並列に行う。すなわち、変異情報を読み込み、変異情報に含まれる変異位置毎の変異パターンがテーブル２６に未登録か否か検証し、未登録の変異パターン、対応する変異ＩＤ及びテーブル２６に基づき割り当てたパターンコードを含む行情報が、テーブル２６に挿入されるよう試行する。また、挿入を試行した行情報が、他の処理部１８が先に挿入した行情報により複合主キー制約に違反した場合は、パターンコードを更新した新たな行情報の挿入を再試行する。そしてテーブル２６に登録された情報に基づいて変異情報をコード化する。【選択図】図１
2018136607.tif 000002
【特許請求の範囲】
【請求項１】
並列に動作する複数の処理部を含む情報処理装置であって、
前記複数の処理部の各々は、変異位置毎の変異パターンを含む互いに異なる変異情報を読み込み、変異位置の識別情報の列、変異位置に出現した変異パターンの列、及び、前記変異パターンに割り当てたコードの列を含み、前記変異位置の識別情報の列及び前記コードの列に複合主キー制約が設定された変異マスタテーブルに、読み込んだ変異情報に含まれる変異位置毎の変異パターンが、未登録の場合に、前記変異マスタテーブルに対し、前記未登録の変異パターン、対応する変異位置の識別情報、及び、前記変異マスタテーブルに基づき割り当てたコードを含む行情報の挿入を試行し、挿入を試行した前記行情報が、自処理部以外の他の処理部によって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した前記行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行し、前記変異マスタテーブルに登録された情報に基づいて前記変異情報をコード化する情報処理装置。
【請求項２】
前記処理部は、挿入を試行した前記行情報が、前記他の処理部によって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行することを、行情報の挿入が成功する迄繰り返す請求項１記載の情報処理装置。
【請求項３】
前記処理部は、読み込んだ前記変異情報に、前記変異マスタテーブルに未登録の変異パターンが複数含まれる場合に、それぞれの変異パターンに対応する複数の行情報を、変異位置の識別情報及び前記コードの組の値の昇順に、前記変異マスタテーブルへの挿入を試行する請求項１又は請求項２記載の情報処理装置。
【請求項４】
前記処理部は、前記変異マスタテーブルに対して行情報の挿入を試行することを、管理部を経由して行い、
前記管理部は、第１の処理部から第１の行情報の挿入が試行された後、第２の処理部から前記第１の行情報に対して複合主キー制約に違反する第２の行情報の挿入が試行された場合に、前記第１の処理部に対しては第１の行情報の挿入成功を通知し、前記第１の処理部のトランザクションが終了した後、前記第２の処理部に対して前記第２の行情報が複合主キー制約に違反したことを通知する請求項１〜請求項３の何れか１項記載の情報処理装置。
【請求項５】
コンピュータが、複数のプロセスを並列に実行する情報処理方法であって、
前記複数のプロセスの各々は、変異位置毎の変異パターンを含む互いに異なる変異情報を読み込み、変異位置の識別情報の列、変異位置に出現した変異パターンの列、及び、前記変異パターンに割り当てたコードの列を含み、前記変異位置の識別情報の列及び前記コードの列に複合主キー制約が設定された変異マスタテーブルに、読み込んだ変異情報に含まれる変異位置毎の変異パターンが、未登録の場合に、前記変異マスタテーブルに対し、前記未登録の変異パターン、対応する変異位置の識別情報、及び、前記変異マスタテーブルに基づき割り当てたコードを含む行情報の挿入を試行し、挿入を試行した前記行情報が、自プロセス以外の他のプロセスによって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した前記行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行し、前記変異マスタテーブルに登録された情報に基づいて前記変異情報をコード化する情報処理方法。
【請求項６】
コンピュータに、複数のプロセスを並列に実行させるための情報処理プログラムであって、
前記複数のプロセスの各々は、変異位置毎の変異パターンを含む互いに異なる変異情報を読み込み、変異位置の識別情報の列、変異位置に出現した変異パターンの列、及び、前記変異パターンに割り当てたコードの列を含み、前記変異位置の識別情報の列及び前記コードの列に複合主キー制約が設定された変異マスタテーブルに、読み込んだ変異情報に含まれる変異位置毎の変異パターンが、未登録の場合に、前記変異マスタテーブルに対し、前記未登録の変異パターン、対応する変異位置の識別情報、及び、前記変異マスタテーブルに基づき割り当てたコードを含む行情報の挿入を試行し、挿入を試行した前記行情報が、自プロセス以外の他のプロセスによって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した前記行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行し、前記変異マスタテーブルに登録された情報に基づいて前記変異情報をコード化する情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【０００２】
データベース(Database：以下「ＤＢ」という)における一意性制約などの制約条件を保証する第１の技術が提案されている。第１の技術は、或る単位(例えばトランザクション)に対してＤＢ操作時に違反発生及び違反消滅をカウンタを用いて計数し、或る単位の終了時に各制約条件毎のカウンタの値が０のとき、違反なしと判定する。
【０００３】
また、第２の技術は、アンドゥ(undo)処理に備えてＤＢの差分情報を差分表に登録する際に、同じ主キー、又は、ディレクトリに対して同じエントリ又は属性に対する差分情報が複数存在する場合に、最初のデータのみを差分表に保存する。第２の技術は、同じ主キー、又は、ディレクトリに対して同じエントリ又は属性に対する複数の差分情報を差分表へ順次登録する際に、２番目以降の差分情報の登録が主キー制約違反になることを利用している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−８４２７２号公報
【特許文献２】特開２００３−３６１９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
遺伝情報(ＤＮＡの塩基配列)は、個体差を生じさせる部分、すなわち個体によって遺伝情報が相違する部分(これを変異位置という)が数千万箇所存在しており、このうち一部の変異位置は遺伝情報(変異パターン)が特定の疾患の罹患と相関が有る可能性がある。このため、例えば特定の疾患に罹患している個体群と、罹患していない個体群とで変異パターンの出現頻度に有意差があるか否かを個々の変異位置毎に検定することで、前記疾患の罹患と相関が有る変異位置及びその変異パターンを分析する研究等が進められている。
【０００６】
上記の研究のように遺伝情報の分析などを行う場合、各個体の遺伝情報から変異位置毎の変異パターンを抽出して順に並べた個体毎の変異情報が用意されるが、大量の個体の変異情報を扱う場合は、処理時間の短縮のために処理の効率化が求められる。そこで、変異情報に含まれる変異位置毎の変異パターンを、当該変異パターンを表すコードに置き換える(コード化する)ことで、データ量を削減した上で集計などの以降の処理を行うことが考えられる。
【０００７】
但し、処理対象の全個体の変異情報を通じて、個々の変異位置にどのような変異パターンが出現するか、及び、個々の変異位置に出現する変異パターンの種類数などは、変異情報のコード化を始める時点では未知である。このため、変異情報をコード化する際には、個々の変異位置毎に、新たに出現した変異パターンに新たなコードを割り当ててテーブルに追加していくことで、変異位置毎の変異パターンとコードとの対応関係を登録したテーブルも作成・更新していく必要がある。以下では、上記のテーブルを「変異マスタテーブル」と称する。
【０００８】
また、処理の効率化のためには、互いに異なる変異情報を読み込み、上記の変異マスタテーブルの更新及び変異情報のコード化を行うプロセスを、並列に複数動作させることが有効である。しかし、並列に動作する複数のプロセスが変異マスタテーブルの更新を各々行う場合、変異マスタテーブルの更新が競合し、変異マスタテーブルに登録されている情報の一意性が損なわれる可能性がある。また、情報の一意性が損なわれないように、変異マスタテーブルを更新する権利を何れか１つのプロセスに与えるようにした場合には、複数のプロセスによる変異マスタテーブルの更新が実質的に逐次処理になるので処理効率が低下する。
【０００９】
これに対し、前述の第１の技術及び第２の技術は、情報の一意性を確保する技術ではあるものの、例えば複数のプロセス、或いはトランザクションなどによりテーブルの更新が並列に行われる場合については考慮されていない。例えば、第１の技術において、第１のトランザクションからの第１のＤＢ操作に対する応答を返す前に、第２のトランザクションから一意性制約に違反するＤＢ操作を受付けた場合、違反カウンタをＤＢ単位で設けたとすると、前記応答は違反有りと判定される。また、違反カウンタをトランザクション単位で設けたとすると、個々のトランザクション毎の違反カウンタに不整合が生ずる。
【００１０】
また、第２の技術は、１つのクライアントからの一連のコマンドを差分情報として差分表に登録するものであり、或るクライアントが操作のコミットを行う迄の間は、他のクライアントはデータの参照・更新ができないものと推定される。このため、第２の技術は、複数のクライアントによるデータの参照・更新が実質的に逐次処理になるので処理効率が低い。
【００１１】
一つの側面では、本発明は、変異マスタテーブルの更新を並列に行う場合の情報の一意性を確保することを、処理効率の低下を抑制しつつ実現することが目的である。
【課題を解決するための手段】
【００１２】
一つの実施態様では、並列に動作する複数の処理部を含んでおり、複数の処理部の各々は、変異位置毎の変異パターンを含む互いに異なる変異情報を読み込む。変異マスタテーブルは、変異位置の識別情報の列、変異位置に出現した変異パターンの列、及び、前記変異パターンに割り当てたコードの列を含み、前記変異位置の識別情報の列及び前記コードの列に複合主キー制約が設定される。処理部は、読み込んだ変異情報に含まれる変異位置毎の変異パターンが、変異マスタテーブルに未登録の場合に、以下の処理を行う。すなわち、処理部は、変異マスタテーブルに対し、前記未登録の変異パターン、対応する変異位置の識別情報、及び、変異マスタテーブルに基づき割り当てたコードを含む行情報の挿入を試行する。また処理部は、挿入を試行した前記行情報が、自処理部以外の他の処理部によって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した前記行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行する。そして処理部は、変異マスタテーブルに登録された情報に基づいて変異情報をコード化する。
【発明の効果】
【００１３】
一つの側面として、変異マスタテーブルの更新を並列に行う場合の情報の一意性を確保することを、処理効率の低下を抑制しつつ実現できる、という効果を有する。
【図面の簡単な説明】
【００１４】
【図１】変異情報分析支援システムの概略ブロック図である。
【図２】変異情報ＤＢに記憶されている個体別の変異情報の一例を示す概略図である。
【図３】変異情報抽出装置による処理の概要を示すイメージ図である。
【図４】集計結果処理装置による処理の概要を示すイメージ図である。
【図５】特異性が無い変異位置及び特異性が有る変異位置における変異パターンの分布の一例を示す概念図である。
【図６】変異情報処理装置として機能するコンピュータの概略ブロック図である。
【図７】変異情報コード化制御処理の一例を示すフローチャートである。
【図８】変異マスタテーブルの生成を指示するコマンドの一例を示す図である。
【図９】変異情報コード化処理の一例を示すフローチャートである。
【図１０】複数の個体の変異情報を読み込んでメモリに展開する処理を説明する概念図である。
【図１１】変異マスタテーブルを読み込んでメモリに展開する処理を説明する概念図である。
【図１２】変異情報に含まれる個々の変異パターンが変異マスタテーブルに登録されているかを検証する処理を説明する概念図である。
【図１３】変異マスタテーブルに未登録の変異パターンに対応するパターンコードを取得する処理を説明する概念図である。
【図１４】変異マスタテーブルに追加する情報の、未ソートのリスト及びソート済みリストを各々示す概略図である。
【図１５】ソート済みの追加情報のリストに含まれる行情報が変異マスタテーブルに挿入された場合を示す概略図である。
【図１６】変異情報に含まれる変異パターンに対応するパターンコードを個体毎に順に並べた変異型情報を生成する処理を示す概略図である。
【図１７】変異型情報を変異型格納テーブルに格納する処理を示す概略図である。
【図１８】変異マスタテーブル全体をロックして更新する場合(テーブルロック)と本実施形態(提案手法)における、個々の処理部(プロセス)による処理の実行期間の一例を示すタイムチャートである。
【図１９】複合主キー制約違反が発生する状況の一例を示す概略図である。
【図２０】実施形態で説明している態様(変異マスタテーブルへの追加情報のリストをソートする態様)におけるタイミングチャートである。
【図２１】変異マスタテーブルへの追加情報のリストをソートしない場合に発生する問題を説明するためのタイミングチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。なお、以下の実施形態では、一例として、遺伝情報(変異情報)から、分析対象の疾患の罹患と相関が有る変異位置及びその変異パターンを分析する態様を説明する。図１に示す変異情報分析支援システム１０は、本発明に係る情報処理装置の一例である変異情報処理装置１２と、変異情報抽出装置３０及び集計結果処理装置３２と、を含んでいる。
【００１６】
変異情報抽出装置３０は、変異情報ＤＢ３６を記憶する第２記憶部３４及び個体情報ＤＢ４０を記憶する第３記憶部３８が接続されている。変異情報ＤＢ３６には、個体別の変異情報が、個体ＩＤ(IDentifier)と各々対応付けられ、多数の個体について登録されている。一例として、図２に複数の個体の変異情報４１を示すが、変異情報４１の各行に対応する個体別の変異情報４２は、個体の遺伝情報から各変異位置の変異パターンを抽出して順に並べた情報である。図２において、Ｖ0〜Ｖnは個々の変異位置の識別情報の一例である変異ＩＤであり、"Ａ／Ａ","Ｔ／Ｔ","Ａ／Ｃ","Ｇ／Ｇ"などは変異位置毎の変異パターンである。なお、個体別の変異情報４２に代えて個体別の遺伝情報全体をＤＢに記憶させておいてもよい。
【００１７】
個体情報ＤＢ４０には、変異情報ＤＢ３６に変異情報４２が登録されている多数の個体について、属性情報が個体別に登録されている。個体別の属性情報は、少なくとも、個体ＩＤと、個体が罹患している疾患の有無及び罹患している疾患が有る場合はその疾患を表す情報と、を含む。また、個体の性別、年齢、身長、体重、生活習慣(例えば喫煙習慣の有無等)等の情報を更に含んでいてもよい。
【００１８】
変異情報の分析を行う場合、変異情報抽出装置３０には、変異情報４２の抽出条件として、少なくとも、分析対象の疾患を指定する情報が入力される。また、性別や年齢等の抽出条件が追加される場合もある。変異情報抽出装置３０は、抽出条件が入力されると、図３に示すように、変異情報ＤＢ３６と個体情報ＤＢ４０とを照合し、入力された抽出条件に合致する個体群の個体別の変異情報４２を変異情報ＤＢ３６から各々読み出す。ここで個体別の変異情報４２を読み出す個体群は、少なくとも分析対象の疾患に罹患している個体の集合であり、以下では「罹患者群」という。そして、変異情報抽出装置３０は、読み出した個体別の変異情報を、罹患者群の変異情報４２Ａとして変異情報処理装置１２へ出力する。
【００１９】
また、変異情報抽出装置３０は、入力された抽出条件に合致しない個体群、或いは疾患を除く一部の抽出条件にのみ合致する個体群の個体別の変異情報４２を変異情報ＤＢ３６から各々読み出す。ここで個体別の変異情報４２を読み出した個体群は、少なくとも分析対象の疾患に罹患していない個体の集合であり、以下では「非罹患者群」という。そして、変異情報抽出装置３０は、読み出した個体別の変異情報４２を非罹患者群の変異情報４２Ｂとして出力する。
【００２０】
なお、変異情報抽出装置３０は、抽出した変異情報４２を所定の形式へ編集して出力してもよい。所定の形式の一例としてはＶＣＦ(Variant Call Format)が挙げられる。ＶＣＦは変異情報の形式として一般的な形式であるが、これに限らず、ＶＣＦ以外の他の形式へ編集してもよい。
【００２１】
図１に示すように、変異情報処理装置１２は、変異情報処理部１４、集計部２０、ＤＢ管理部２２、変異マスタテーブル２６及び変異型格納テーブル２８を記憶する第１記憶部２４を含んでいる。また、変異情報処理部１４は制御部１６及び複数の処理部１８を含んでいる。ＤＢ管理部２２は、例えばＳＱＬ(Structured Query Language)などで記述されたコマンドの入力に応じてＤＢ(本実施形態では変異マスタテーブル２６など)を操作する処理を行う。
【００２２】
変異情報処理部１４の制御部１６は、変異マスタテーブル２６の生成を指示するコマンドをＤＢ管理部２２へ出力する。これにより、ＤＢ管理部２２は変異マスタテーブル２６を生成し、第１記憶部２４に記憶させる。詳細は後述するが、変異マスタテーブル２６は、変異位置を表す変異ＩＤ、変異位置に出現した変異パターン、及び、変異パターンに割り当てたパターンコードの各列を含み、変異ＩＤの列及びパターンコードの列に複合主キー制約が設定される。また、制御部１６は、変異情報抽出装置３０から入力された罹患者群の変異情報４２Ａ及び非罹患者群の変異情報４２Ｂが全てコード化されて変異型格納テーブル２８に格納されるように、複数の処理部１８の起動を制御する。
【００２３】
制御部１６によって起動された複数の処理部１８は、以下の変異情報コード化処理を互いに並列に行う。すなわち、処理部１８は、処理対象の変異情報４２を読み込み、読み込んだ変異情報４２に含まれる変異位置毎の変異パターンが、変異マスタテーブル２６に登録されているか否かを検証する。また処理部１８は、変異マスタテーブル２６に未登録の変異パターンについて、当該変異パターン、対応する変異ＩＤ及びパターンコードを含む行情報(レコード)を変異マスタテーブル２６に挿入させるコマンドをＤＢ管理部２２へ出力する。
【００２４】
ここで、挿入対象の行情報が、変異マスタテーブル２６に既に登録されている情報に対して複合主キー制約に違反していなければ行情報の挿入は成功するが、挿入対象の行情報が複合主キー制約に違反している場合には、ＤＢ管理部２２から制約違反が通知される。この場合、処理部１８は、先に挿入を試行した行情報に含まれるパターンコードを更新した新たな行情報を変異マスタテーブル２６に挿入させるコマンドをＤＢ管理部２２へ出力する。また、未登録の変異パターンが変異情報に含まれていなかった場合、又は、変異情報に含まれる未登録の変異パターンに対応する行情報の挿入に成功した場合、処理部１８は、変異マスタテーブル２６に基づいて処理対象の変異情報をコード化する。そして処理部１８は、コード化後の変異型情報を変異型格納テーブル２８に格納する。
【００２５】
集計部２０は、変異型格納テーブル２８に格納された変異型情報をＤＢ管理部２２を通じて読み出し、読み出した変異型情報における個々の変異位置毎かつコード毎のコードの出現数を、罹患者群と非罹患者群とに分けて集計する。また集計部２０は、第１記憶部２４に記憶された変異マスタテーブル２６に基づき、個々の変異位置毎に、処理対象の全個体における変異パターンの種類毎の変異パターンの出現数を、罹患者群と非罹患者群とに分けて集計する。そして集計部２０は、例として図４に示すように、罹患者群の変異位置毎の集計結果４４Ａ及び非罹患者群の変異位置毎の集計結果４４Ｂを集計結果処理装置３２に各々出力する。
【００２６】
集計結果処理装置３２は、入力された集計結果４４Ａ,４４Ｂに基づき、罹患者群と非罹患者群とで各変異パターンの出現頻度(変異パターン毎の出現数の分布)に有意差があるか否かを、カイ自乗検定等の統計手法により個々の変異位置毎に検定する。一例として図５に「特異性ない変異分布の例」として示すように、罹患者群と非罹患者群とで変異パターン毎の出現数の分布が類似している変異位置については、有意差が無い、すなわち分析対象の疾患の罹患と相関が無いと判断できる。一方、一例として図５に「特異性ある変異分布の例」として示すように、罹患者群と非罹患者群とで変異パターン毎の出現数の分布が非類似の変異位置については、有意差が有るので、分析対象の疾患の罹患と相関が有る可能性がある。
【００２７】
集計結果処理装置３２は、変異パターン毎の出現数の分布の有意差が大きい順に変異位置を順位付けし、有意差の降順に所定数の変異位置の情報を出力する。分析者は、集計結果処理装置３２から出力された情報に基づいて、分析対象の疾患の罹患と相関が有る変異位置及びその変異パターンを分析する。
【００２８】
また、本実施形態において、変異情報処理装置１２は、図６に示すコンピュータ５０で実現される。コンピュータ５０は、ＣＰＵ５２、メモリ５４、不揮発性の記憶部５６、入力部５８、表示部６０、記録媒体６４に対するデータの読み出しおよび書き込みを行う読出書込装置(Ｒ／Ｗ)６２、及び、通信Ｉ／Ｆ部６６を含む。ＣＰＵ５２、メモリ５４、記憶部５６、入力部５８、表示部６０、Ｒ／Ｗ６２及び通信Ｉ／Ｆ部６６は、バス６８を介して互いに接続されている。変異情報処理装置１２は、通信Ｉ／Ｆ部６６に接続されたネットワークを経由して変異情報抽出装置３０及び集計結果処理装置３２と通信可能とされている。
【００２９】
記憶部５６はＨＤＤ(Hard Disk Drive)、ＳＳＤ(Solid State Drive)、フラッシュメモリ等によって実現される。記憶部５６には、コンピュータ５０を変異情報処理装置１２として機能させるための変異情報処理プログラム７０及びＤＢ管理プログラム８０が記憶されている。ＣＰＵ５２は、変異情報処理プログラム７０及びＤＢ管理プログラム８０を記憶部５６から読み出してメモリ５４に展開し、変異情報処理プログラム７０に含まれる各プロセスを順次実行すると共に、ＤＢ管理プログラム８０を実行する。
【００３０】
変異情報処理プログラム７０は、変異情報処理プロセス７２及び集計プロセス７８を含み、変異情報処理プロセス７２は制御プロセス７４及び処理プロセス７６を含む。
【００３１】
ＣＰＵ５２は、変異情報処理プロセス７２を実行することで、図１に示す変異情報処理部１４として動作する。すなわち、ＣＰＵ５２は、制御プロセス７４を実行することで、図１に示す制御部１６として動作する。また、処理プロセス７６は再入可能(reentrant)とされており、ＣＰＵ５２は、処理プロセス７６を並列に複数実行することで、図１に示す複数の処理部１８として動作する。また、ＣＰＵ５２は、集計プロセス７８を実行することで、図１に示す集計部２０として動作する。また、ＣＰＵ５２は、ＤＢ管理プログラム８０を実行することで、図１に示すＤＢ管理部２２として動作する。
【００３２】
これにより、変異情報処理プログラム７０及びＤＢ管理プログラム８０を実行したコンピュータ５０が変異情報処理装置１２として機能することになる。変異情報処理プログラム７０は開示の技術に係る情報処理プログラムの一例である。
【００３３】
また、記憶部５６には変異マスタテーブル記憶領域８２、変異型格納テーブル記憶領域８４、集計テーブル記憶領域８６が設けられている。変異マスタテーブル記憶領域８２には変異マスタテーブル２６が記憶され、変異型格納テーブル記憶領域８４には変異型格納テーブル２８が記憶される。これにより、記憶部５６は図１に示す第１記憶部２４として機能する。
【００３４】
なお、変異情報処理装置１２は、例えば半導体集積回路、より詳しくはＡＳＩＣ（Application Specific Integrated Circuit）等で実現することも可能である。
【００３５】
次に本実施形態の作用として、まず図７を参照し、変異情報処理部１４の制御部１６によって実行される変異情報コード化制御処理を説明する。ステップ１５０において、制御部１６は、変異ＩＤ、変異パターン及びパターンコードの各列を含み、変異ＩＤの列及びパターンコードの列に複合主キー制約を設定した変異マスタテーブル２６を生成するコマンドをＤＢ管理部２２へ出力する。
【００３６】
ステップ１５０で制御部１６からＤＢ管理部２２へ出力されるコマンドの一例を図８に示す。図８に示すコマンドは、変異ＩＤ(id)、パターンコード(pat_code)及び変異パターン(pat_string)の各列を含む変異マスタテーブル２６(variant_master_tbl)の生成を指示するコマンドである。このコマンドに含まれる"PRIMRY KEY(id,pat_code)"は、変異ＩＤの列及びパターンコードの列に複合主キー制約を設定することを意味している。なお、図８に示すコマンドは単なる一例であり、ＤＢ管理部２２が受け付け可能なコマンドの書式に応じて適宜変更してもよい。
【００３７】
ＤＢ管理部２２は、上記のようなコマンドが入力されると、例えば図１１に示すような変異マスタテーブル２６を生成し、第１記憶部２４に記憶させる。なお、図１１は変異マスタテーブル２６に情報が登録された状態を示しているが、この時点では変異マスタテーブル２６は空である。
【００３８】
また、図１１は変異マスタテーブル２６に設定されている複合主キー制約を明示していない。しかし、ＤＢ管理部２２は、変異ＩＤ、パターンコード及び変異パターンを含む挿入対象の行情報を変異マスタテーブル２６へ挿入するコマンドを受け取ると、挿入対象の行情報と変異ＩＤ及びパターンコードが同一のレコードを検索する。そして、該当するレコードが変異マスタテーブル２６に既に存在している場合、ＤＢ管理部２２は、コマンドの出力元に対して、挿入対象の行情報が複合主キー制約に違反していることを通知する。
【００３９】
次のステップ１５２において、制御部１６は、予め設定された同時起動プロセス数Ｙを記憶部５６等から読み込む。また制御部１６は、プロセス(処理部１８)の起動回数を表すカウンタｉ及び起動中のプロセスの数を表すカウンタｙに各々０を設定する。なお、同時起動プロセス数Ｙにはコンピュータ５０の性能に応じた値が設定される。
【００４０】
次のステップ１６４において、制御部１６は、値ｉｍが全個体の数に達したか否かを判定することで、全ての個体の変異情報４２のコード化を処理部１８に指示したか否か判定する。ステップ１６４の判定が否定された場合はステップ１６６へ移行し、ステップ１６６において、制御部１６は、カウンタｙの値が同時起動プロセス数Ｙに達したか否かを判定する。
【００４１】
ステップ１６６の判定が否定された場合はステップ１６８へ移行し、ステップ１６８において、制御部１６は、処理部１８を起動し、起動した処理部１８に対して個体ｉｍ〜(ｉ＋１)ｍ−１の変異情報４２のコード化を指示する。これにより、起動された処理部１８(プロセス)により、個体ｉｍ〜(ｉ＋１)ｍ−１(ｍ個の個体)の変異情報４２に対して後述する変異情報コード化処理が行われる。
【００４２】
次のステップ１７０において、制御部１６は、カウンタｙ及びカウンタｉの値を各々１だけインクリメントし、ステップ１６４に戻る。上記のように、ステップ１６４,１６６の判定が各々否定されている間は、ステップ１６８,１７０が繰り返されるので、起動されて変異情報コード化処理を実行する処理部１８(プロセス)の数は１ずつ増加する。
【００４３】
また、カウンタｙの値が同時起動プロセス数Ｙに達すると、ステップ１６６の判定が肯定されてステップ１７２へ移行する。ステップ１７２において、制御部１６は、起動した何れかの処理部１８(プロセス)において変異情報コード化処理が終了したか否か判定する。ステップ１７２の判定が否定された場合は、判定が肯定される迄ステップ１７２を繰り返す。ステップ１７２の判定が肯定されるとステップ１７４へ移行し、ステップ１７４において、制御部１６は、カウンタｙの値を１だけデクリメントし、カウンタｉの値を１だけインクリメントする。そして、ステップ１７４の処理を行うとステップ１６４に戻る。
【００４４】
上記により、変異情報コード化処理を並列に実行する処理部１８(プロセス)の数は同時起動プロセス数Ｙ以下に維持される。そして、全ての個体の変異情報４２のコード化を処理部１８に指示すると、値ｉｍが全個体の数に達することでステップ１６４の判定が肯定され、変異情報コード化制御処理を終了する。
【００４５】
次に図９を参照し、制御部１６によって起動された処理部１８によって実行される変異情報コード化処理を説明する。変異情報コード化処理のステップ２００において、処理部１８は、制御部１６から処理対象として通知された個体ｉｍ〜(ｉ＋１)ｍ−１の変異情報４２を読み込み、メモリ５４に展開する。一例として図１０には、ｍ＝４個の個体の変異情報４２を読み込んでメモリ５４に展開した場合を示す。メモリ５４に展開した１つの個体の変異情報１００は、各変異位置の変異ＩＤ(＝Ｖ0〜Ｖn)と、各変異位置毎の変異パターンと、を含んでおり、個々の個体の変異情報１００は、それぞれ異なる個体ＩＤと対応付けられている。
【００４６】
ステップ２０２において、処理部１８は、トランザクションを開始するコマンドをＤＢ管理部２２へ出力する。これにより、起動中の処理部１８がＤＢ管理部２２からトランザクションとして認識される。なお、トランザクションを開始するコマンドの一例は"BEGIN"であるが、これに限定されるものではない。
【００４７】
次のステップ２０４において、処理部１８は、変異マスタテーブル２６を読み込むコマンドをＤＢ管理部２２へ出力し、ＤＢ管理部２２を経由して読み込んだ変異マスタテーブル２６をメモリ５４に展開する。変異マスタテーブル２６を読み込むコマンドの一例は、
"SELECT id,pat_code,pat_string FROM variant_master_tbl"
である。但し、上記のコマンドに限定されるものではなく、ＤＢ管理部２２が受け付け可能なコマンドの書式に応じて適宜変更してもよい。
【００４８】
一例として図１１には、変異マスタテーブル２６を読み込んでメモリ５４に展開した場合を示す。図１１は、変異マスタテーブル２６を、変異位置毎に変異パターンをパターンコードと対応付ける複数のテーブル１０２に分けて展開しており、個々のテーブル１０２はそれぞれ異なる変異ＩＤと対応付けられている。なお、図１１は変異マスタテーブル２６に情報が登録された状態を示しているが、変異情報コード化処理が最初に実行された時点では変異マスタテーブル２６は空である。
【００４９】
次のステップ２０６において、処理部１８は、先のステップ２００でメモリ５４に展開した個体ｉｍ〜(ｉ＋１)ｍ−１の変異情報１００に含まれる個々の変異パターンが、変異マスタテーブル２６に全て登録されているかを検証する。例として図１２は、変異情報１００に含まれる変異パターンを、変異ＩＤ＝Ｖ0から順にかつ個体毎に変異マスタテーブル２６と照合し、変異マスタテーブル２６に登録済みの変異パターンを対応するパターンコードに置き換えた場合を示している。図１１に示す情報が変異マスタテーブル２６に登録されているとすると、図１２に示す個体ＩＤ＝３の変異情報１００のうち変異ＩＤ＝Ｖ1の変異パターン"C/C"については、図１１に示す変異マスタテーブル２６に未登録と判定される。
【００５０】
但し、ステップ２０６において、変異マスタテーブル２６に登録済みの変異パターンをパターンコードに置き換えることは必須の処理ではない。例えば個々の変異パターンが変異マスタテーブル２６に登録済みか否を順次判定し、未登録と判定した変異パターンについては情報を記憶する処理を行うようにしてもよい。
【００５１】
ステップ２０８において、処理部１８は、ステップ２０６における変異パターンの検証において、変異マスタテーブル２６に未登録の変異パターンが有ったか否か判定する。ステップ２０８の判定が肯定された場合はステップ２１０へ移行する。
【００５２】
ステップ２１０において、処理部１８は、変異マスタテーブル２６に未登録の変異パターンに対応する変異ＩＤ、パターンコード及び変異パターンを含む行情報を、未登録の変異パターンの数と同数含む、変異マスタテーブル２６への追加情報のリストを作成する。なお、未登録の１つの変異パターンに対応する行情報のうち、変異ＩＤ及び変異パターンは変異情報１００から取得することができる。また、未登録の１つの変異パターンに対応する行情報のうちのパターンコードは、例として図１３に示すように、変異マスタテーブル２６を展開したテーブル１０２から、パターンコードの最大値を取得し、取得した最大値に１を加算することで得られる。一例として図１３は、変異ＩＤ＝Ｖ1のパターンコードの最大値が"１"であり、変異ＩＤ＝Ｖ1の未登録の変異パターン"C/C"に対応する行情報のうちのパターンコードとして、最大値に１を加算した"２"が得られた例を示している。これにより、例として図１４に示すような未ソートのリスト１０４が得られる。
【００５３】
また、ステップ２１０で作成される追加情報のリストは、当該リストに含まれる行情報が、例えば、ｍ個の個体の変異情報１００から、変異マスタテーブル２６に未登録の変異パターンが出現した順に並んでいる。このため、次のステップ２１２において、処理部１８は、追加情報のリストに含まれる行情報を、変異ＩＤとパターンコードの組の値の昇順に並ぶようにソートする。例えば図１４に示す未ソートのリスト１０４では、変異ＩＤ＝Ｖm、パターンコード＝３の行情報が、変異ＩＤ＝Ｖm、パターンコード＝２の行情報よりも前に位置しているが、図１４に示すソート済みリスト１０６では両者が入れ替わることになる。なお、追加情報のリストをソートする理由については後述する。
【００５４】
次のステップ２１４において、処理部１８は、ソート済みの追加情報のリスト１０６のうち変異マスタテーブル２６に未挿入の先頭の行情報を、変異マスタテーブル２６に挿入するよう指示するコマンドをＤＢ管理部２２へ出力する。なお、変異マスタテーブル２６に挿入する行情報が、例えば変異ＩＤ＝Ｖ1、パターンコード＝２、変異パターン＝"C/C"の場合、当該行情報を変異マスタテーブル２６に挿入するコマンドの一例は以下の通りである。
"INSERT INTO variant_master_tbl VALUES(V1,2,C/C)"
但し、上記のコマンドに限定されるものではなく、ＤＢ管理部２２が受け付け可能なコマンドの書式に応じて適宜変更してもよい。
【００５５】
ステップ２１６において、処理部１８は、ステップ２１４で出力したコマンドに対してＤＢ管理部２２から応答が入力されたか否か判定する。ステップ２１６の判定が否定された場合はステップ２１６の判定を繰り返す。ＤＢ管理部２２から応答が入力されると、ステップ２１６の判定が肯定されてステップ２１８へ移行し、ステップ２１８において、処理部１８は、ＤＢ管理部２２から複合主キー制約違反が通知されたか否か判定する。
【００５６】
以下では、まず変異マスタテーブル２６への行情報の挿入を指示した処理部１８において、複合主キー制約違反が通知されることなく、挿入を指示した行情報が変異マスタテーブル２６に挿入された場合を説明する。例として図１５には、ソート済みの追加情報のリスト１０６のうちの先頭の行情報が変異マスタテーブル２６に挿入された場合を示す。ＤＢ管理部２２から応答が入力され、かつＤＢ管理部２２から複合主キー制約違反が通知されなかった場合、ステップ２１８の判定が否定されてステップ２２０へ移行する。
【００５７】
ステップ２２０において、処理部１８は、追加情報のリストに含まれる全ての行情報の変異マスタテーブル２６への挿入が完了したか否か判定する。ステップ２２０の判定が否定された場合はステップ２１４へ戻り、ステップ２２０の判定が肯定される迄、ステップ２１４〜ステップ２２０を繰り返す。追加情報のリストに含まれる全ての行情報を変異マスタテーブル２６へ挿入すると、ステップ２２０の判定が肯定されてステップ２２２へ移行する。
【００５８】
ステップ２２２において、処理部１８は、前述のステップ２０４と同様に、変異マスタテーブル２６を読み込むコマンドをＤＢ管理部２２へ出力し、ＤＢ管理部２２を経由して読み込んだ変異マスタテーブル２６をメモリ５４に展開する。次のステップ２２４において、処理部１８は、トランザクションを終了するコマンドをＤＢ管理部２２へ出力する。なお、トランザクションを終了するコマンドの一例は"COMMIT"であるが、これに限定されるものではなく、ＤＢ管理部２２が受け付け可能なコマンドの書式に応じて適宜変更可能である。
【００５９】
ステップ２２６において、処理部１８は、変異マスタテーブル２６に基づいて、ステップ２００でメモリ５４に展開した処理対象の個体ｉｍ〜(ｉ＋１)ｍ−１の変異情報１００に含まれる個々の変異パターンに対応するパターンコードを取得する。次に、処理部１８は、取得したパターンコードを順に並べた変異型情報を個体毎に生成する。例として図１６には、個体毎の変異情報１００に含まれる個々の変異パターンに対応するパターンコードを、個体毎の変異情報１００に付加した後に、パターンコードを順に並べた変異型情報１０８を個体毎に生成する例を示す。そして処理部１８は、例として図１７に示すように、個体毎に生成した変異型情報１０８を、変異型格納テーブル２８に格納する。ステップ２２６の処理を行うと変異情報コード化処理を終了する。
【００６０】
プロセス(処理部１８)の起動回数を表すカウンタｉの値が小さい間は、処理対象の個体ｉｍ〜(ｉ＋１)ｍ−１の変異情報１００に含まれる変異パターンの殆どは変異マスタテーブル２６に未登録である。特にｉ＝０のときに起動されたプロセス(処理部１８)は全ての変異パターンが変異マスタテーブル２６に未登録である。
【００６１】
このため、カウンタｉの値が小さい期間は、起動された複数(Ｙ個以下)のプロセス(処理部１８)によって変異マスタテーブル２６への行情報の挿入が各々試行され、後で説明する複合主キー制約違反が比較的高い頻度で発生する。結果として、カウンタｉの値が小さい期間は、起動された複数のプロセス(処理部１８)のうち、起動時のカウンタｉの値がより小さい(より早期に起動された)一部のプロセス(処理部１８)により、全ての変異位置について１〜数個の変異パターンが登録される。
【００６２】
なお、図１８には、カウンタｉの値が小さい期間に、変異マスタテーブル２６への変異パターンの登録を行う一部のプロセス(処理部１８)を、「提案手法」の図のプロセス０,１として示している。一例として図１８の「提案手法」の図は、変異マスタテーブル２６への変異パターンの登録を行うプロセス(処理部１８)の数＝２の場合を示しているが、２以外の数になることも生じ得ることは言うまでもない。
【００６３】
ここで、仮に、起動された個々の処理部１８が、変異マスタテーブル２６全体をロックして変異マスタテーブル２６を更新する場合、複数の処理部１８が並列に動作したとしても、更新権を有しない処理部１８はロックが解放される迄処理が待たされることになる。このため、図１８に「テーブルロック」として示すように、複数の処理部１８による処理(図１８ではプロセス０〜７と表記)は実質的に逐次処理になる。
【００６４】
これに対して本実施形態では、変異マスタテーブル２６の変異ＩＤの列及びパターンコードの列に複合主キー制約を設定し、複数の処理部１８が、複合主キー制約に違反しない範囲で変異マスタテーブル２６を並列に更新すること(行情報の挿入)を許容している。これにより、カウンタｉの値が大きくなり、変異マスタテーブル２６に登録された変異パターンの数が増えてくると、起動された複数の処理部１８による処理はほぼ並列に実行され、処理効率が向上することで処理時間が短くなる。図１８に示す「提案手法」の図は、起動されて処理がほぼ並列に実行される複数の処理部１８を、プロセス２〜７と表記して示している。
【００６５】
但し、本実施形態においても、複合主キー制約に違反する変異マスタテーブル２６の更新は排除される。図１８に「提案手法」として示す図では、プロセス４と表記している処理部１８による変異マスタテーブル２６の更新に対し、プロセス５と表記している処理部１８による変異マスタテーブル２６の更新が複合主キー制約違反になった場合を示している。以下、変異マスタテーブル２６に挿入する行情報が複合主キー制約違反になる場合を説明する。
【００６６】
図１９に示すように、ソート済みの追加情報のリスト１０６のうち、変異ＩＤ＝Ｖm、パターンコード＝２、変異パターン＝"A/C"の行情報を変異マスタテーブル２６に挿入する場合を考える。図１９に示す変異マスタテーブル２６には、上記の行情報と変異ＩＤ及びパターンコードが重複するレコード、すなわち変異ＩＤ＝Ｖm、パターンコード＝２、変異パターン＝"A/A"のレコードが既に存在している。
【００６７】
このため、ＤＢ管理部２２は、上記の行情報の挿入を指示するコマンドが入力された場合、挿入を指示された行情報が複合主キー制約に違反している可能性を検知する。但し、変異マスタテーブル２６に存在する対象レコードの挿入を指示した処理部１８のトランザクションが終了する迄の間は、複合主キー制約違反は確定していない。従って、ＤＢ管理部２２は、対象レコードの挿入を指示した処理部１８のトランザクションが終了する迄の間は、複合主キー制約に違反する行情報の挿入を指示した処理部１８に対する応答を保留する。
【００６８】
図２０を参照し、複合主キー制約違反が発生する状況を更に説明する。図２０では、「先行プロセス」と表記した処理部１８が、変異ＩＤ＝Ｖm、パターンコード＝０、変異パターン＝"A/A"の行情報１１０Ａと、変異ＩＤ＝Ｖm、パターンコード＝１、変異パターン＝"A/C"の行情報１１０Ｂと、を含むリスト１１０を生成している。また、「後続プロセス」と表記した処理部１８が、変異ＩＤ＝Ｖm、パターンコード＝０、変異パターン＝"A/C"の行情報１１２Ａと、変異ＩＤ＝Ｖm、パターンコード＝１、変異パターン＝"A/A"の行情報１１２Ｂと、を含むリスト１１２を生成している。
【００６９】
図２０では、「先行プロセス」と表記した処理部１８が生成したリスト１１０に含まれる行情報１１０Ａと、「後続プロセス」と表記した処理部１８が生成したリスト１１２に含まれる行情報１１２Ａと、の変異ＩＤ及びパターンコードが重複している。なお、変異ＩＤ及びパターンコードの重複は、「先行プロセス」が変異マスタテーブル２６を読み込んでから行情報１１０Ａを挿入する迄の間に、「後続プロセス」が変異マスタテーブル２６を読み込むことで発生する。
【００７０】
ここで、図２０に示すように、「先行プロセス」が変異マスタテーブル２６に行情報１１０Ａを挿入した後に、「後続プロセス」が変異マスタテーブル２６への行情報１１２Ａの挿入を試行した場合、ＤＢ管理部２２は、複合主キー制約違反の可能性を検知する。そして、ＤＢ管理部２２は、「先行プロセス」のトランザクションが終了する迄の間は、「後続プロセス」に対する応答を保留する。これは、「先行プロセス」が、例えば障害の発生などを原因として、変異マスタテーブル２６への行情報の挿入をキャンセルするコマンド(例えば"rollback"など)をＤＢ管理部２２へ出力する可能性があり、行情報１１０Ａの挿入が確定していないためである。
【００７１】
従って、変異マスタテーブル２６への行情報１１２Ａの挿入を試行した「後続プロセス」は、「先行プロセス」のトランザクションが終了する迄の間、ＤＢ管理部２２からの応答待ちで待機する。この間、「先行プロセス」は、障害の発生などが無ければ、続いて変異マスタテーブル２６に行情報１１０Ｂを挿入する処理を含む処理を行った後に、トランザクションを終了する。
【００７２】
「先行プロセス」のトランザクションが終了すると、変異マスタテーブル２６への行情報１１０Ａ,１１０Ｂの挿入が確定し、「後続プロセス」が変異マスタテーブル２６への挿入を試行した行情報１１２Ａの複合主キー制約違反も確定する。そこで、ＤＢ管理部２２は、「後続プロセス」に対して行情報１１２Ａが複合主キー制約違反であることを通知する応答を返す。
【００７３】
「後続プロセス」に相当する処理部１８は、ＤＢ管理部２２から上記の応答が返ってくると、図９のステップ２１６の判定が肯定され、ステップ２１８の判定が肯定されることでステップ２０４に戻る。この場合、ステップ２０４で変異マスタテーブル２６を再度読み込み、以降の処理が再度行われることで、変異マスタテーブル２６への挿入を試行する行情報に含まれるパターンコードは、複合主キー制約に違反しない新たなパターンコードに更新される。これにより、複合主キー制約違反が再度発生することが抑制され、変異マスタテーブル２６に登録されている情報の一意性が確保されることになる。
【００７４】
次に、変異マスタテーブル２６への追加情報のリストを、ステップ２１２でソートしている理由について、図２１を参照して説明する。図２１は、「後続プロセス」のリスト１１２がソートされておらず、リスト１１２に含まれる行情報１１２Ａ,１１２Ｂの順序が図２０に示す順序と逆になっている場合を示している。従って、図２１において、「後続プロセス」は変異マスタテーブル２６への行情報１１２Ｂの挿入を試行した後に、変異マスタテーブル２６への行情報１１２Ａへの挿入を試行する。なお、図２０では説明を省略したが、「先行プロセス」のリスト１１０に含まれる行情報１１０Ｂと、「後続プロセス」のリスト１１２に含まれる行情報１１２Ｂと、についても変異ＩＤ及びパターンコードが重複している。
【００７５】
図２１に示す例では、「先行プロセス」が変異マスタテーブル２６に行情報１１０Ａの挿入を試行した後に、「後続プロセス」が変異マスタテーブル２６への行情報１１２Ｂの挿入を試行することになるが、これらの挿入では複合主キー制約違反は発生しない。しかし、その後、「先行プロセス」が変異マスタテーブル２６に行情報１１０Ｂの挿入を試行すると、ＤＢ管理部２２により、「後続プロセス」が変異マスタテーブル２６に既に挿入した行情報１１２Ｂに対して複合主キー制約違反の可能性が検知される。このため、「先行プロセス」に対する応答は「後続プロセス」のトランザクションが終了する迄保留される。
【００７６】
また、その後、「後続プロセス」が変異マスタテーブル２６に行情報１１２Ａの挿入を試行すると、ＤＢ管理部２２により、「先行プロセス」が変異マスタテーブル２６に既に挿入した行情報１１０Ａに対して複合主キー制約違反の可能性が検知される。このため、「後続プロセス」に対する応答は「先行プロセス」のトランザクションが終了する迄保留される。これにより、「先行プロセス」及び「後続プロセス」が、それぞれ相手のトランザクションが終了する迄処理を再開できない、いわゆるデッドロックの状態に陥る。
【００７７】
これに対し、本実施形態では、変異マスタテーブル２６への追加情報のリストをステップ２１２でソートした後に、ソート後のリストに含まれる、変異マスタテーブル２６に未挿入の先頭の行情報から順に、変異マスタテーブル２６への挿入を試行する。これにより、図２０に示すように、変異マスタテーブル２６の更新を先に開始した処理部１８による行情報の挿入が、変異マスタテーブル２６の更新を後から開始した処理部１８により既に挿入された行情報に対して複合主キー制約違反となる可能性が排除される。従って、デッドロックの状態に陥ることを抑制することができる。
【００７８】
なお、カウンタｉの値が大きくなり、処理部１８による変異情報コード化処理の実行回数が増えてくると、変異マスタテーブル２６に未登録の変異パターンが出現する頻度が低下し、ステップ２０８の判定が否定される頻度が増大する。ステップ２０８の判定が否定された場合はステップ２２４へ移行し、変異マスタテーブル２６への行情報の挿入を行うことなく、トランザクションを終了する。従って、カウンタｉの値が大きくなると、複合主キー制約違反が発生する頻度も低下し、処理効率が更に向上する。
【００７９】
上記のように、本実施形態では、変異情報処理装置１２が並列に動作する複数の処理部１８を含んでおり、複数の処理部１８の各々は、変異位置毎の変異パターンを含む互いに異なる変異情報を読み込む。変異マスタテーブル２６は、変異ＩＤの列、変異位置に出現した変異パターンの列、及び、前記変異パターンに割り当てたパターンコードの列を含み、前記変異位置のＩＤの列及びパターンコードの列に複合主キー制約が設定されている。処理部１８は、読み込んだ変異情報に含まれる変異位置毎の変異パターンが、変異マスタテーブル２６に未登録の場合に、以下の処理を行う。すなわち、処理部１８は、変異マスタテーブル２６に対し、前記未登録の変異パターン、対応する変異ＩＤ、及び、変異マスタテーブル２６に基づき割り当てたパターンコードを含む行情報の挿入を試行する。また処理部１８は、挿入を試行した前記行情報が、自処理部１８以外の他の処理部１８によって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した行情報に含まれるパターンコードを更新した新たな行情報の挿入を再試行する。そして処理部１８は、変異マスタテーブル２６に登録された情報に基づいて変異情報をコード化する。これにより、変異マスタテーブル２６の更新を並列に行う場合の情報の一意性を確保することを、処理効率の低下を抑制しつつ実現することができる。
【００８０】
また、本実施形態において、処理部１８は、挿入を試行した行情報が、他の処理部１８によって先に挿入された行情報により複合主キー制約に違反した場合は、以下の処理を行う。すなわち、処理部１８は、先に挿入を試行した行情報に含まれるパターンコードを更新した新たな行情報の挿入を再試行することを、行情報の挿入が成功する迄繰り返す。これにより、変異マスタテーブル２６に未登録の変異パターン及び対応する変異位置のＩＤを、複合主キー制約に違反しないパターンコードと共に、行情報として変異マスタテーブル２６に確実に挿入することができる。
【００８１】
また、本実施形態において、処理部１８は、読み込んだ変異情報に、変異マスタテーブル２６に未登録の変異パターンが複数含まれる場合に、以下の処理を行う。すなわち、処理部１８は、それぞれの変異パターンに対応する複数の行情報を、変異ＩＤ及びパターンコードの組の値の昇順に、変異マスタテーブル２６への挿入を試行する。これにより、並列に動作する複数の処理部１８がデッドロックの状態に陥ることを抑制することができる。
【００８２】
また、本実施形態において、処理部１８は、変異マスタテーブル２６に対して行情報の挿入を試行することを、ＤＢ管理部２２を経由して行う。ＤＢ管理部２２は、第１の処理部１８から第１の行情報の挿入が試行された後、第２の処理部１８から第１の行情報に対して複合主キー制約に違反する第２の行情報の挿入が試行された場合に、以下の処理を行う。すなわち、ＤＢ管理部２２は、第１の処理部１８に対しては第１の行情報の挿入成功を通知し、第１の処理部１８のトランザクションが終了した後、第２の処理部１８に対して第２の行情報が複合主キー制約に違反したことを通知する。このように、既存のＤＢ管理部２２の機能を利用することで、変異マスタテーブル２６の情報の一意性を確保することを簡易な構成、或いは処理で実現することができる。
【００８３】
なお、上記では、追加情報のリストに含まれる行情報を、変異ＩＤとパターンコードの組の値の昇順に並ぶようにソートし、ソート済みの追加情報のリストに含まれる行情報を、先頭から順に変異マスタテーブル２６に挿入する態様を説明した。しかし、これに限定されるものではない。例えば、追加情報のリストに含まれる行情報を、変異ＩＤとパターンコードの組の値の降順に並ぶようにソートし、ソート済みの追加情報のリストに含まれる行情報を、末尾から順に変異マスタテーブル２６に挿入してもよい。
【００８４】
また、追加情報のリストに含まれる行情報をソートすることなく、変異マスタテーブル２６に挿入する都度、追加情報のリストから未挿入でかつ変異ＩＤとパターンコードの組の値が最小の行情報を検索して挿入するようにしてもよい。追加情報のリストに含まれる個々の行情報が未挿入か挿入済みかの判別は、追加情報のリストに含まれる行情報のうち変異マスタテーブル２６に挿入済みの行情報にフラグなどを付加しておくことで実現することができる。
【００８５】
また、上記では変異マスタテーブルに登録されているパターンコードの最大値を取得し、取得した最大値に１を加算した値を新たなパターンコードとする態様を説明したが、パターンコードのビット数については特に説明していない。パターンコードのビット数については、例えば本願出願人が特願２０１６−３０２６８号で提案しているように、初期値を２ビットとし、現在のビット数で表現可能な変異パターンの種類数を超える変異パターンが出現する度に、２ビットずつ増やしてもよい。また、パターンコードのビット数を２ビットよりも大きくした変異位置については、上記の特願２０１６−３０２６８号で提案しているように、追加ビットの値を変異型情報の末尾に格納するようにしてもよい。
【００８６】
また、上記では本発明を人間の変異情報に適用した態様を説明したが、これに限定されるものではなく、人間以外の生物に適用してもよい。
【００８７】
また、上記では、本発明に係る情報処理プログラムの一例である変異情報処理プログラム７０が記憶部５６に予め記憶（インストール）されている態様を説明した。しかし、本発明に係る情報処理プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ、メモリカード等の記録媒体に記録されている形態で提供することも可能である。
【００８８】
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【００８９】
以上の実施形態に関し、更に以下の付記を開示する。
【００９０】
（付記１）
並列に動作する複数の処理部を含む情報処理装置であって、
前記複数の処理部の各々は、変異位置毎の変異パターンを含む互いに異なる変異情報を読み込み、変異位置の識別情報の列、変異位置に出現した変異パターンの列、及び、前記変異パターンに割り当てたコードの列を含み、前記変異位置の識別情報の列及び前記コードの列に複合主キー制約が設定された変異マスタテーブルに、読み込んだ変異情報に含まれる変異位置毎の変異パターンが、未登録の場合に、前記変異マスタテーブルに対し、前記未登録の変異パターン、対応する変異位置の識別情報、及び、前記変異マスタテーブルに基づき割り当てたコードを含む行情報の挿入を試行し、挿入を試行した前記行情報が、自処理部以外の他の処理部によって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した前記行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行し、前記変異マスタテーブルに登録された情報に基づいて前記変異情報をコード化する情報処理装置。
【００９１】
（付記２）
前記処理部は、挿入を試行した前記行情報が、前記他の処理部によって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行することを、行情報の挿入が成功する迄繰り返す付記１記載の情報処理装置。
【００９２】
（付記３）
前記処理部は、読み込んだ前記変異情報に、前記変異マスタテーブルに未登録の変異パターンが複数含まれる場合に、それぞれの変異パターンに対応する複数の行情報を、変異位置の識別情報及び前記コードの組の値の昇順に、前記変異マスタテーブルへの挿入を試行する付記１又は付記２記載の情報処理装置。
【００９３】
（付記４）
前記処理部は、前記変異マスタテーブルに対して行情報の挿入を試行することを、管理部を経由して行い、
前記管理部は、第１の処理部から第１の行情報の挿入が試行された後、第２の処理部から前記第１の行情報に対して複合主キー制約に違反する第２の行情報の挿入が試行された場合に、前記第１の処理部に対しては第１の行情報の挿入成功を通知し、前記第１の処理部のトランザクションが終了した後、前記第２の処理部に対して前記第２の行情報が複合主キー制約に違反したことを通知する付記１〜付記３の何れか１項記載の情報処理装置。
【００９４】
（付記５）
コンピュータが、複数のプロセスを並列に実行する情報処理方法であって、
前記複数のプロセスの各々は、変異位置毎の変異パターンを含む互いに異なる変異情報を読み込み、変異位置の識別情報の列、変異位置に出現した変異パターンの列、及び、前記変異パターンに割り当てたコードの列を含み、前記変異位置の識別情報の列及び前記コードの列に複合主キー制約が設定された変異マスタテーブルに、読み込んだ変異情報に含まれる変異位置毎の変異パターンが、未登録の場合に、前記変異マスタテーブルに対し、前記未登録の変異パターン、対応する変異位置の識別情報、及び、前記変異マスタテーブルに基づき割り当てたコードを含む行情報の挿入を試行し、挿入を試行した前記行情報が、自プロセス以外の他のプロセスによって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した前記行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行し、前記変異マスタテーブルに登録された情報に基づいて前記変異情報をコード化する情報処理方法。
【００９５】
（付記６）
前記プロセスは、挿入を試行した前記行情報が、前記他のプロセスによって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行することを、行情報の挿入が成功する迄繰り返す付記５記載の情報処理方法。
【００９６】
（付記７）
前記プロセスは、読み込んだ前記変異情報に、前記変異マスタテーブルに未登録の変異パターンが複数含まれる場合に、それぞれの変異パターンに対応する複数の行情報を、変異位置の識別情報及び前記コードの組の値の昇順に、前記変異マスタテーブルへの挿入を試行する付記５又は付記６記載の情報処理方法。
【００９７】
（付記８）
前記プロセスは、前記変異マスタテーブルに対して行情報の挿入を試行することを、管理部を経由して行い、
前記管理部は、第１のプロセスから第１の行情報の挿入が試行された後、第２のプロセスから前記第１の行情報に対して複合主キー制約に違反する第２の行情報の挿入が試行された場合に、前記第１のプロセスに対しては第１の行情報の挿入成功を通知し、前記第１のプロセスのトランザクションが終了した後、前記第２のプロセスに対して前記第２の行情報が複合主キー制約に違反したことを通知する付記５〜付記７の何れか１項記載の情報処理方法。
【００９８】
（付記９）
コンピュータに、複数のプロセスを並列に実行させるための情報処理プログラムであって、
前記複数のプロセスの各々は、変異位置毎の変異パターンを含む互いに異なる変異情報を読み込み、変異位置の識別情報の列、変異位置に出現した変異パターンの列、及び、前記変異パターンに割り当てたコードの列を含み、前記変異位置の識別情報の列及び前記コードの列に複合主キー制約が設定された変異マスタテーブルに、読み込んだ変異情報に含まれる変異位置毎の変異パターンが、未登録の場合に、前記変異マスタテーブルに対し、前記未登録の変異パターン、対応する変異位置の識別情報、及び、前記変異マスタテーブルに基づき割り当てたコードを含む行情報の挿入を試行し、挿入を試行した前記行情報が、自プロセス以外の他のプロセスによって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した前記行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行し、前記変異マスタテーブルに登録された情報に基づいて前記変異情報をコード化する情報処理プログラム。
【００９９】
（付記１０）
前記プロセスは、挿入を試行した前記行情報が、前記他のプロセスによって先に挿入された行情報により複合主キー制約に違反した場合は、挿入を試行した行情報に含まれる前記コードを更新した新たな行情報の挿入を再試行することを、行情報の挿入が成功する迄繰り返す付記１記載の情報処理プログラム。
【０１００】
（付記１１）
前記プロセスは、読み込んだ前記変異情報に、前記変異マスタテーブルに未登録の変異パターンが複数含まれる場合に、それぞれの変異パターンに対応する複数の行情報を、変異位置の識別情報及び前記コードの組の値の昇順に、前記変異マスタテーブルへの挿入を試行する付記１又は付記２記載の情報処理プログラム。
【０１０１】
（付記１２）
前記プロセスは、前記変異マスタテーブルに対して行情報の挿入を試行することを、管理部を経由して行い、
前記管理部は、第１のプロセスから第１の行情報の挿入が試行された後、第２のプロセスから前記第１の行情報に対して複合主キー制約に違反する第２の行情報の挿入が試行された場合に、前記第１のプロセスに対しては第１の行情報の挿入成功を通知し、前記第１のプロセスのトランザクションが終了した後、前記第２のプロセスに対して前記第２の行情報が複合主キー制約に違反したことを通知する付記１〜付記３の何れか１項記載の情報処理プログラム。
【符号の説明】
【０１０２】
１０  変異情報分析支援システム
１２  変異情報処理装置
１４  変異情報処理部
１６  制御部
１８  処理部
２２  ＤＢ管理部
２６  変異マスタテーブル
２８  変異型格納テーブル
５０  コンピュータ
５２  ＣＰＵ
５４  メモリ
５６  記憶部
７０  変異情報処理プログラム
【図１】
2018136607.tif 000003
【図２】
2018136607.tif 000004
【図３】
2018136607.tif 000005
【図４】
2018136607.tif 000006
【図５】
2018136607.tif 000007
【図６】
2018136607.tif 000008
【図７】
2018136607.tif 000009
【図８】
2018136607.tif 000010
【図９】
2018136607.tif 000011
【図１０】
2018136607.tif 000012
【図１１】
2018136607.tif 000013
【図１２】
2018136607.tif 000014
【図１３】
2018136607.tif 000015
【図１４】
2018136607.tif 000016
【図１５】
2018136607.tif 000017
【図１６】
2018136607.tif 000018
【図１７】
2018136607.tif 000019
【図１８】
2018136607.tif 000020
【図１９】
2018136607.tif 000021
【図２０】
2018136607.tif 000022
【図２１】
2018136607.tif 000023