(57)【要約】【課題】ゲノムデータの集計時間を短縮する。【解決手段】遺伝子の変異位置毎の変異パターンをｘ（ｘは１以上の整数）ビットで表したゲノムデータから、変異位置ｙ（ｙは１以上の整数）個のｘビットのデータ毎に、ｘ×ｙビットの抽出データを抽出する抽出部と、ｘ×ｙビットのデータ毎に対応付けられた加算値データを複数格納した加算値テーブルを記憶する記憶部と、前記抽出データに対応する加算値データを、ゲノムデータの集計値を格納する集計値データ内の前記ゲノムデータが対応する位置に、ＳＩＭＤ命令を用いて加算する加算部と、を有する。【選択図】図２
2018045586.tif 000002
【特許請求の範囲】
【請求項１】
遺伝子の変異位置毎の変異パターンをｘ（ｘは１以上の整数）ビットで表したゲノムデータから、変異位置ｙ（ｙは１以上の整数）個のｘビットのデータ毎に、ｘ×ｙビットの抽出データを抽出する抽出部と、
ｘ×ｙビットのデータ毎に対応付けられた加算値データを複数格納した加算値テーブルを記憶する記憶部と、
前記抽出データに対応する加算値データを、ゲノムデータの集計値を格納する集計値データ内の前記ゲノムデータが対応する位置に、ＳＩＭＤ命令を用いて加算する加算部と、
を有する情報処理装置。
【請求項２】
前記加算部が、前記加算値データを、前記集計値データのデータサイズの最大の数まで前記集計値データに加算した場合、前記集計値データを、前記集計値データのデータサイズよりも大きなデータサイズを有する集計結果値データに加算する集計結果部を有する、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記加算値データ、抽出データ、集計値データのデータサイズは１６ビットであることを特徴とする請求項１もしくは２記載の情報処理装置。
【請求項４】
遺伝子の変異位置毎の変異パターンをｘ（ｘは１以上の整数）ビットで表したゲノムデータから、変異位置ｙ（ｙは１以上の整数）個のｘビットのデータ毎に、ｘ×ｙビットの抽出データを抽出し、
ｘ×ｙビットのデータ毎に対応付けられた加算値データを複数格納した加算値テーブルを参照して、前記抽出データに対応する加算値データを、ゲノムデータの集計値を格納する集計値データ内の前記ゲノムデータが対応する位置に、ＳＩＭＤ命令を用いて加算する
処理をコンピュータに実行させるゲノムデータ集計プログラム。
【請求項５】
遺伝子の変異位置毎の変異パターンをｘ（ｘは１以上の整数）ビットで表したゲノムデータから、変異位置ｙ（ｙは１以上の整数）個のｘビットのデータ毎に、ｘ×ｙビットの抽出データを抽出し、
ｘ×ｙビットのデータ毎に対応付けられた加算値データを複数格納した加算値テーブルを参照して、前記抽出データに対応する加算値データを、ゲノムデータの集計値を格納する集計値データ内の前記ゲノムデータが対応する位置に、ＳＩＭＤ命令を用いて加算する、
処理をコンピュータが実行するゲノムデータ集計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ゲノムデータ集計プログラム、及びゲノムデータ集計方法に関する。
【背景技術】
【０００２】
近年、ヒト等のＤＮＡ配列を解析することで、疾患に関連する遺伝子を特定することが行われている。例えば、ヒト等のＤＮＡ配列のビッグデータに基づき、遺伝子に変異が発生する位置の変異パターンの出現回数を集計し、ある特定の疾患に罹患している人の集団と、当該疾患に罹患していない人の集団との間の変異パターンの分布の相違を解析することで、疾患に関連する遺伝子を特定することが行われている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００２−５０９３１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ヒトのＤＮＡ配列では、遺伝子の変異パターンが出現する位置が、一人につき約数千万位置あるため、遺伝子の変異パターンの出現回数の集計に時間を要する。
【０００５】
開示の技術は、ゲノムデータの集計時間を短縮することを目的としている。
【課題を解決するための手段】
【０００６】
開示の技術は、遺伝子の変異位置毎の変異パターンをｘ（ｘは１以上の整数）ビットで表したゲノムデータから、変異位置ｙ（ｙは１以上の整数）個のｘビットのデータ毎に、ｘ×ｙビットの抽出データを抽出する抽出部と、ｘ×ｙビットのデータ毎に対応付けられた加算値データを複数格納した加算値テーブルを記憶する記憶部と、前記抽出データに対応する加算値データを、ゲノムデータの集計値を格納する集計値データ内の前記ゲノムデータが対応する位置に、ＳＩＭＤ命令を用いて加算する加算部と、を有する情報処理装置である。
【発明の効果】
【０００７】
ゲノムデータの集計時間を短縮できる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態に係るデータ集計装置の全体構成の一例を説明する図である。
【図２】本実施形態に係るデータ集計処理の概略を説明する図である。
【図３】本実施形態に係るデータ集計装置のハードウェア構成の一例を示す図である。
【図４】本実施形態に係るデータ集計装置が有するデータ集計処理部の機能構成の一例を示す図である。
【図５】加算値テーブルの一例を説明する図である。
【図６】一時集計テーブルの一例を説明する図である。
【図７】集計結果テーブルの一例を説明する図である。
【図８】本実施形態に係るデータ集計処理の一例を示すフローチャートである。
【図９】本実施形態に係る集計結果テーブルへの反映処理の一例を示すフローチャートである。
【図１０】本実施形態に係るデータ集計処理を用いて、疾患に関連する位置の候補を特定する場合の一例を説明する図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００１０】
まず、本実施形態に係るデータ集計装置１０について、図１を参照しながら説明する。図１は、本実施形態に係るデータ集計装置１０の全体構成の一例を説明する図である。
【００１１】
図１に示すデータ集計装置１０は、例えば、ＰＣ（パーソナルコンピュータ）等の情報処理装置であり、データ集計処理部１００と、データ記憶部２００と、テーブル記憶部３００とを有する。
【００１２】
データ記憶部２００は、複数人のゲノムデータ４００が記憶されている。すなわち、データ記憶部２００には、１人目のゲノムデータ４００−１、２人目のゲノムデータ４００−２、・・・、Ｍ人目のゲノムデータ４００−Ｍが記憶されている。以降では、ゲノムデータ４００−１、ゲノムデータ４００−２、・・・、ゲノムデータ４００−Ｍのそれぞれを区別しないときは、「ゲノムデータ４００」と表す。
【００１３】
ここで、本実施形態に係るゲノムデータ４００とは、ヒト等のＤＮＡ配列においてＳＮＰ（一塩基多型：Single  Nucleotide  Polymorphism）が発生する位置の変異パターンを、当該位置毎に２ビットのビット列で表したデータである。
【００１４】
すなわち、図１に示すように、ヒト等のＤＮＡ配列における特定の位置（これを「位置０」とする。）では、ＳＮＰの変異パターンが「Ａ／Ａ」、「Ａ／Ｃ」、及び「Ｃ／Ｃ」であったとする。この場合、ゲノムデータ４００の「位置０」の変異パターンは、「００」、「０１」、又は「１０」の２ビットのビット列で表すことができる。
【００１５】
同様に、図１に示すように、ヒト等のＤＮＡ配列における他の特定の位置（これを「位置１」とする。）では、ＳＮＰの変異パターンが「Ｃ／Ｃ」、「Ｃ／Ｇ」、及び「Ｇ／Ｇ」であったとする。この場合、同様に、ゲノムデータ４００の「位置１」の変異パターンは、「００」、「０１」、又は「１０」の２ビットのビット列で表すことができる。
【００１６】
このように、ゲノムデータ４００は、ヒト等のＤＮＡ配列においてＳＮＰが発生するＮ個の位置の変異パターンを、当該位置毎に２ビットのビット列で表したデータである。言い換えれば、ゲノムデータ４００は、ＳＮＰが発生する位置の変異パターンを表す２ビットのビット列を整列したデータである。
【００１７】
ただし、ゲノムデータ４００は、これに限られず、例えば、ＣＮＶ（コピー数多型：Copy  Number  Variation）のコピー数を、ＣＮＶが発生する範囲毎に所定のビット数のビット列で表したデータであっても良い。また、ゲノムデータ４００は、例えば、ＶＮＴＲ（Variable  Number  of  Tandem  Repeat）やＳＴＲＰ（Short  Tandem  Repeat  Polymorphism）等の反復回数を、これらが発生する範囲毎に所定のビット数のビット列で表したデータであっても良い。
【００１８】
データ集計処理部１００は、データ記憶部２００に記憶されているゲノムデータ４００のデータ集計処理を行う。すなわち、データ集計処理部１００は、データ記憶部２００に記憶されているゲノムデータ４００について、位置毎の変異パターンの出現回数を集計する。
【００１９】
テーブル記憶部３００は、データ集計処理部１００がゲノムデータ４００の集計処理に用いる各種テーブルを記憶する。テーブル記憶部３００には、加算値テーブル３１０と、一時集計テーブル３２０と、集計結果テーブル３３０とが記憶されている。
【００２０】
加算値テーブル３１０は、変異パターンの出現回数を加算するための加算値データを参照することができるルックアップテーブル（ＬＵＴ：Look  Up  Table）である。一時集計テーブル３２０は、変異パターンの出現回数の一時的な集計値を示す一時集計値データを格納するテーブルである。集計結果テーブル３３０は、変異パターンの出現回数の最終的な集計値を示す集計結果値データを格納するテーブルである。
【００２１】
ここで、本実施形態に係るデータ集計装置１０によるデータ集計処理の概略について、図２を参照しながら説明する。図２は、本実施形態に係るデータ集計処理の概略を説明する図である。
【００２２】
Ｓ１−１）データ集計処理部１００は、ゲノムデータ４００−１の「位置０」〜「位置３」の８ビットのビット列を抽出する。すなわち、データ集計処理部１００は、「位置０」〜「位置３」のビット列「０００１１０１０」を抽出する。
【００２３】
Ｓ１−２）データ集計処理部１００は、加算値テーブル３１０を参照して、抽出したビット列と同一のインデックスに対応する加算値データを、ＳＩＭＤ（Single  Instruction  Multiple  Data）命令により、一時集計テーブル３２０の一時集計値データに加算する。
【００２４】
すなわち、データ集計処理部１００は、加算値テーブル３１０のインデックス「０００１１０１０」に対応する加算値データ「１００００１０００１００００１０」を、ＳＩＭＤ命令により、一時集計テーブル３２０の「位置０」〜「位置３」の一時集計値データに加算する。「１００００１０００１００００１０」の各数値のデータサイズは１６ビットであり、加算値データのデータサイズは１６ビット×１６の２５６ビットである。これにより、一時集計テーブル３２０の「位置０」におけるビット列「００」に対応する一時集計値データに「１」が加算される。同様に、一時集計テーブル３２０の「位置１」におけるビット列「０１」、「位置２」におけるビット列「１０」、及び「位置３」におけるビット列「１０」にそれぞれ対応する一時集計値データに「１」が加算される。
【００２５】
データ集計処理部１００は、上記のＳ１−１）及びＳ１−２）の処理を、ゲノムデータ４００−１の「位置４」〜「位置７」、「位置８」〜「位置１１」、・・・、「位置Ｎ−４」〜「位置Ｎ−１」に対しても行う。同様に、データ集計処理部１００は、上記のＳ１−１）及びＳ１−２）の処理を、ゲノムデータ４００−２〜ゲノムデータ４００−Ｍそれぞれの「位置０」〜「位置３」、・・・、「位置Ｎ−４」〜「位置Ｎ−１」に対しても行う。
【００２６】
なお、ゲノムデータ４００に含まれる位置の数「Ｎ」は４の倍数であるものとする。ただし、「Ｎ」が４の倍数でない場合には、例えば、ビット列が「００」である位置をゲノムデータ４００に適宜付加して、ゲノムデータ４００に含まれる位置の数が４の倍数となるようにすれば良い。
【００２７】
Ｓ２）データ集計処理部１００は、所定の数のゲノムデータ４００を一時集計テーブル３２０に集計すると、当該一時集計テーブル３２０を集計結果テーブル３３０に反映する。すなわち、データ集計処理部１００は、一時集計テーブル３２０の一時集計値データを、集計結果テーブル３３０の集計結果値データに加算する。
【００２８】
これにより、本実施形態に係るデータ集計装置１０は、複数のゲノムデータ４００について、位置毎の変異パターンの出現回数を集計することができる。このとき、本実施形態に係るデータ集計装置１０は、上記のＳ１−２）の処理で説明したように、加算値テーブル３１０を参照して、インデックスに対応する加算値データを、ＳＩＭＤ命令により、一時集計テーブル３２０の一時集計値データに加算する。
【００２９】
ここで、ＳＩＭＤ命令を用いずに「位置０」の変異パターンの出現回数を集計する場合、例えば、「位置０」〜「位置３」のビット列を６ビット右にシフト演算した後、上位６ビットをマスク処理したビット列に対応する一時集計データに「１」を加算する必要がある。同様に、ＳＩＭＤ命令を用いずに「位置１」の変異パターンの出現回数を集計する場合、例えば、「位置０」〜「位置３」のビット列を４ビット右にシフト演算した後、上位６ビットをマスク処理したビット列に対応する一時集計データに「１」を加算する必要がある。
【００３０】
このように、ＳＩＭＤ命令を用いずに位置毎の変異パターンの出現回数を集計するには、位置毎に、シフト演算とマスク処理との２つの命令を行う必要がある。一方で、本実施形態に係るデータ集計装置１０では、上述したように、４位置毎に、１つの命令（ＳＩＭＤ命令）で、これら４位置の変異パターンの出現回数を集計することができる。
【００３１】
したがって、本実施形態に係るデータ集計装置１０は、例えばシフト演算やマスク処理を行うことなく、一時集計値データの加算を行うことができるため、変異パターンの出現回数の集計を高速に行うことができる。
【００３２】
なお、本実施形態に係るデータ集計装置１０は、上述したように、各位置の変異パターンが２ビットで表されたビット列を４位置毎にゲノムデータ４００から抽出するものとして説明するが、これに限られない。すなわち、本実施形態に係るデータ集計装置１０は、ｘを１以上の整数、ｙを１以上の整数とした場合に、各位置の変異パターンがｘビットで表されたビット列をｙ個の位置毎にゲノムデータ４００から抽出する場合にも同様に適用することができる。
【００３３】
ただし、ｙが２以上の整数である場合、本実施形態に係るデータ集計装置１０は、複数の位置の変異パターンの出現回数を同時に加算することができるため、変異パターンの出現回数の集計をより高速に行うことができる。したがって、ｙは２以上の整数であることが好ましい。
【００３４】
次に、本実施形態に係るデータ集計装置１０のハードウェア構成について、図３を参照しながら説明する。図３は、本実施形態に係るデータ集計装置１０のハードウェア構成の一例を示す図である。
【００３５】
図３に示すように、本実施形態に係るデータ集計装置１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、通信Ｉ／Ｆ１４とを有する。また、本実施形態に係るデータ集計装置１０は、ＲＯＭ１５（Read  Only  Memory）と、ＲＡＭ（Random  Access  Memory）１６と、ＣＰＵ（Central  Processing  Unit）１７と、ＨＤＤ（Hard  Disk  Drive）１８とを有する。更に、これらの各ハードウェアは、バスＢで互いに接続されている。
【００３６】
入力装置１１は、キーボードやマウス、タッチパネル等を含み、ユーザが各種操作を行うのに用いられる。表示装置１２は、データ集計装置１０による処理結果を表示する。なお、入力装置１１及び表示装置１２の少なくとも一方は、必要なときにバスＢに接続して利用する形態であっても良い。
【００３７】
通信Ｉ／Ｆ１４は、データ集計装置１０をネットワークに接続するインタフェースである。データ集計装置１０は、通信Ｉ／Ｆ１４を介して、データ通信を行うことができる。
【００３８】
ＨＤＤ１８は、プログラムやデータを格納している不揮発性の記憶装置である。ＨＤＤ１８には、例えば、データ集計装置１０全体を制御する基本ソフトウェアであるＯＳ（Operating  System）、ＯＳ上において各種機能を提供するアプリケーションソフトウェア等が格納されている。また、ＨＤＤ１８には、例えば、データ集計処理部１００を実現するプログラムやゲノムデータ４００等が格納されている。
【００３９】
ＨＤＤ１８は、格納しているプログラムやデータを所定のファイルシステムやＤＢ（データベース）により管理している。
【００４０】
なお、データ集計装置１０は、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えば、ソリッドステートドライブ：ＳＳＤ）等を有していても良い。
【００４１】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。データ集計装置１０は、外部Ｉ／Ｆ１３を介して、記録媒体１３ａの読み取りや書き込みを行うことができる。なお、記録媒体１３ａには、例えば、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００４２】
ＲＯＭ１５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ＲＯＭ１５には、ＯＳ設定、ネットワーク設定等のプログラムやデータ、及びデータ集計装置１０の起動時に実行されるＢＩＯＳ（Basic  Input/Output  System）等が格納されている。ＲＡＭ１６は、プログラムやデータを一時保持する揮発性の半導体メモリである。
【００４３】
ＣＰＵ１７は、ＲＯＭ１５やＨＤＤ１８等の記憶装置からプログラムやデータをＲＡＭ１６上に読み出し、当該プログラムやデータに基づく処理を実行することで、データ集計装置１０全体の制御やその他の機能を実現する演算装置である。本実施形態に係るデータ集計装置１０が有するＣＰＵ１７は、ＳＩＭＤ命令により、２５６ビットのデータを演算することができるものとする。
【００４４】
本実施形態に係るデータ集計装置１０は、図３に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００４５】
次に、本実施形態に係るデータ集計装置１０が有するデータ集計処理部１００の機能構成について、図４を参照しながら説明する。図４は、本実施形態に係るデータ集計装置１０が有するデータ集計処理部１００の機能構成の一例を示す図である。
【００４６】
図４に示すように、本実施形態に係るデータ集計処理部１００は、カウンタ管理部１０１と、データ取得部１０２と、一時集計加算部１０３と、集計結果加算部１０４とを有する。なお、データ集計処理部１００は、データ集計装置１０にインストールされた１以上のプログラムが、ＣＰＵ１７に実行させる処理により実現される。
【００４７】
カウンタ管理部１０１は、データ集計処理に用いられる各種カウンタを管理する。例えば、カウンタ管理部１０１は、データ記憶部２００に記憶されているｍ人目のゲノムデータ４００−ｍを識別するためのカウンタｍを管理する。また、例えば、カウンタ管理部１０１は、ゲノムデータ４００の「位置ｎ」を識別するためのカウンタｎを管理する。
【００４８】
カウンタ管理部１０１は、各種カウンタと、所定の閾値との大小関係を判定する。例えば、カウンタ管理部１０１は、カウンタｍがＭ＋１未満であるか否かを判定する。また、例えば、カウンタ管理部１０１は、カウンタｎがＮ未満であるか否かを判定する。
【００４９】
データ取得部１０２は、データ記憶部２００に記憶されているゲノムデータ４００のうち、カウンタｍにより識別されるゲノムデータ４００−ｍを取得する。
【００５０】
一時集計加算部１０３は、データ取得部１０２により取得されたゲノムデータ４００−ｍにおいて、カウンタｎにより識別される「位置ｎ」〜「位置ｎ＋３」のビット列を抽出する。そして、一時集計加算部１０３は、加算値テーブル３１０を参照して、抽出したビット列と同一のインデックスに対応する加算値データを、ＳＩＭＤ命令により、一時集計テーブル３２０の「位置ｎ」〜「位置ｎ＋３」の一時集計値データに加算する。
【００５１】
ここで、テーブル記憶部３００に記憶されている加算値テーブル３１０について、図５を参照しながら説明する。図５は、加算値テーブル３１０の一例を説明する図である。
【００５２】
図５に示すように、本実施形態に係る加算値テーブル３１０には、８ビットのビット列を示すインデックスに対応付けて、変異パターンの出現回数を加算するための加算値データが格納されている。
【００５３】
本実施形態に係る加算値テーブル３１０は、インデックスが「００００００００」〜「１１１１１１１１」のビット列であることから、２５６エントリの加算値データが格納されている。また、本実施形態に係る加算値テーブル３１０に格納されている加算値データには、１６ビットで表される加算値が１６個含まれる。
【００５４】
したがって、本実施形態に係る加算値テーブル３１０は、例えば、各要素が２５６ビットである配列ｓｕｍ＿ｔａｂｌｅ［２５６］を用いて実現することができる。なお、各要素の添字「０」〜「２５５」を８ビットで表したものがインデックスである。
【００５５】
ここで、加算値データに含まれる各加算値には、当該加算値データに対応付けられているインデックスに応じた値が設定される。
【００５６】
例えば、インデックスを「Ａ００Ａ０１Ａ１０Ａ１１Ａ２０Ａ２１Ａ３０Ａ３１」、加算値データを「Ｘ００Ｘ０１Ｘ０２Ｘ０３Ｘ１０Ｘ１１Ｘ１２Ｘ１３Ｘ２０Ｘ２１Ｘ２２Ｘ２３Ｘ３０Ｘ３１Ｘ３２Ｘ３３」と表すとする。なお、各Ａｉｊは（ｉ＝０、１、２、３及びｊ＝０、１）は１ビット、各Ｘｋｌ（ｋ＝０、１、２、３及びｌ＝０、１、２、３）は１６ビットである。
【００５７】
このとき、各ｉ＝０、１、２、３に対して、「Ａｉ０Ａｉ１」＝「００」のとき、加算値Ｘｉ０、Ｘｉ１、Ｘｉ２、及びＸｉ３は、「Ｘｉ０Ｘｉ１Ｘｉ２Ｘｉ３」＝「１０００」と設定される。
【００５８】
また、各ｉ＝０、１、２、３に対して、「Ａｉ０Ａｉ１」＝「０１」のとき、加算値Ｘｉ０、Ｘｉ１、Ｘｉ２、及びＸｉ３は、「Ｘｉ０Ｘｉ１Ｘｉ２Ｘｉ３」＝「０１００」と設定される。また、各ｉ＝０、１、２、３に対して、「Ａｉ０Ａｉ１」＝「１０」のとき、加算値Ｘｉ０、Ｘｉ１、Ｘｉ２、及びＸｉ３は、「Ｘｉ０Ｘｉ１Ｘｉ２Ｘｉ３」＝「００１０」と設定される。更に、各ｉ＝０、１、２、３に対して、「Ａｉ０Ａｉ１」＝「１１」のとき、加算値Ｘｉ０、Ｘｉ１、Ｘｉ２、及びＸｉ３は、「Ｘｉ０Ｘｉ１Ｘｉ２Ｘｉ３」＝「０００１」と設定される。
【００５９】
以上のように各加算値データに含まれる各加算値の値を設定することで、ＳＩＭＤ命令により、一時集計テーブル３２０に格納されている一時集計値データの加算を行うことができる。
【００６０】
ここで、テーブル記憶部３００に記憶されている一時集計テーブル３２０について、図６を参照しながら説明する。図６は、一時集計テーブル３２０の一例を説明する図である。
【００６１】
図６に示すように、本実施形態に係る一時集計テーブル３２０には、ゲノムデータ４００の位置と、変異パターンを表すビット列とに対応付けて、変異パターンの出現回数の一時的な集計値を示す一時集計値データが格納されている。
【００６２】
本実施形態に係る一時集計テーブル３２０では、各一時集計値データが１６ビットで表されるものとする。したがって、本実施形態に係る一時集計テーブル３２０は、例えば、各要素が２５６ビットである配列ｔｍｐ＿ｔａｂｌｅ［Ｎ／４］を用いて実現することができる。
【００６３】
このとき、配列要素ｔｍｐ＿ｔａｂｌｅ［０］には、「位置０」〜「位置３」の各一時集計値データが格納される。同様に、配列要素ｔｍｐ＿ｔａｂｌｅ［１］には、「位置４」〜「位置７」の各一時集計値データが格納される。以降も同様に、配列要素ｔｍｐ＿ｔａｂｌｅ［（Ｎ／４）−１］には、「位置Ｎ−４」〜「位置Ｎ−１」の各一時集計値データが格納される。
【００６４】
以上により、加算値テーブル３１０に格納されている加算値データには、１６ビットで表される１６個の加算値が含まれている。また、一時集計テーブル３２０の「位置ｎ」〜「位置ｎ＋３」における１６個の一時集計値データは、それぞれ１６ビットで表される。したがって、一時集計加算部１０３は、ＳＩＭＤ命令により、加算値テーブル３１０の加算値データを、一時集計テーブル３２０の「位置ｎ」〜「位置ｎ＋３」の一時集計値データに加算することができる。
【００６５】
集計結果加算部１０４は、カウンタｍが所定の値以上となった場合、一時集計テーブル３２０を集計結果テーブル３３０に反映する。すなわち、集計結果加算部１０４は、一時集計テーブル３２０の一時集計値データを、集計結果テーブル３３０の集計結果値データに加算する。
【００６６】
本実施形態に係る一時集計テーブル３２０の一時集計値データのデータサイズは、１６ビットである。このため、一時集計テーブル３２０の一時集計値データは、０〜６５５３５の範囲（すなわち、１６ビットで表すことができる範囲）で、変異パターンの出現回数を集計することが可能である。したがって、本実施形態に係るデータ集計装置１０では、カウンタｍが、６５５３６以上となった場合に、一時集計テーブル３２０の一時集計値データを、集計結果テーブル３３０の集計結果値データに加算するものとする。なお、上記の６５５３５は、集計値データのデータサイズで表すことができる最大の数の一例である。
【００６７】
ここで、テーブル記憶部３００に記憶されている集計結果テーブル３３０について、図７を参照しながら説明する。図７は、集計結果テーブル３３０の一例を説明する図である。
【００６８】
図７に示すように、本実施形態に係る集計結果テーブル３３０には、ゲノムデータ４００の位置と、変異パターンを表すビット列とに対応付けて、変異パターンの出現回数の最終的な集計値を示す集計結果値データが格納されている。
【００６９】
本実施形態に係る集計結果テーブル３３０では、各集計結果値データが、１６ビットよりも大きいデータサイズ（例えば、２４ビットや３２ビット等）で表されるものとする。すなわち、集計結果値データのデータサイズは、一時集計値データのデータサイズ（１６ビット）よりも大きいものとする。
【００７０】
したがって、本実施形態に係る集計結果テーブル３３０は、例えば、各要素が１６ビットよりも大きいデータサイズである２次元配列ｒｅｓｕｌｔ＿ｔａｂｌｅ［Ｎ］［３］を用いて実現することができる。
【００７１】
このとき、配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［０］［０］〜配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［０］［２］には、「位置０」におけるビット列「００」〜「１０」の集計結果値データがそれぞれ格納される。同様に、配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［１］［０］〜配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［１］［２］には、「位置１」におけるビット列「００」〜「１０」の集計結果値データがそれぞれ格納される。以降も同様に、配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［Ｎ−１］［０］〜配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［Ｎ−１］［２］には、「位置Ｎ−１」におけるビット列「００」〜「１０」の集計結果値データがそれぞれ格納される。
【００７２】
以上により、集計結果テーブル３３０には、ゲノムデータ４００の位置毎の変異パターンの出現回数を集計した集計結果値データが格納される。
【００７３】
なお、集計結果テーブル３３０において、ビット列「１１」に対応付けられた集計結果値データが存在しないのは、ＳＮＰの変異パターンは「００」、「０１」、及び「１０」のビット列で表すことができるためである。ただし、ＳＮＰの変異パターンにおいて、例えば、父系と母系を区別して、「Ａ／Ａ」、「Ａ／Ｃ」、「Ｃ／Ａ」、及び「Ｃ／Ｃ」等と表す場合には、ＳＮＰの変異パターンは「００」、「０１」、「１０」、「１１」のビット列で表すことができる。このような場合、集計結果テーブル３３０には、ビット列「１１」に対応付けられている集計結果値データが格納されていても良い。
【００７４】
次に、本実施形態に係るデータ集計装置１０のデータ集計処理の詳細について、図８を参照しながら説明する。図８は、本実施形態に係るデータ集計処理の一例を示すフローチャートである。
【００７５】
まず、カウンタ管理部１０１は、データ記憶部２００に記憶されているｍ人目のゲノムデータ４００−ｍを識別するためのカウンタｍを「１」に初期化する（ステップＳ８０１）。
【００７６】
次に、カウンタ管理部１０１は、ゲノムデータ４００の「位置ｎ」を識別するためのカウンタｎを「０」に初期化する（ステップＳ８０２）。
【００７７】
次に、データ取得部１０２は、データ記憶部２００に記憶されているゲノムデータ４００のうち、ゲノムデータ４００−ｍを取得して、各要素が８ビットである配列ｐ［Ｎ／４］に格納する（ステップＳ８０３）。
【００７８】
すなわち、データ取得部１０２は、データ記憶部２００からゲノムデータ４００−ｍを取得して、取得したゲノムデータ４００−ｍの「位置０」〜「位置３」のビット列を配列要素ｐ［０］に格納する。同様に、データ取得部１０２は、ゲノムデータ４００−ｍの「位置４」〜「位置７」のビット列を配列要素ｐ［１］に格納する。以降も同様に、データ取得部１０２は、ゲノムデータ４００−ｍの「位置Ｎ−４」〜「位置Ｎ−１」のビット列を配列要素ｐ［（Ｎ／４）−１］に格納する。
【００７９】
これにより、配列要素ｐ［ｉ／４］（ｉ＝０、４、８、・・・、Ｎ−４）には、ゲノムデータ４００−ｍの「位置ｉ」〜「位置ｉ＋３」のビット列が格納される。
【００８０】
次に、一時集計加算部１０３は、配列要素ｐ［ｎ／４］に格納されているビット列を抽出する。そして、一時集計加算部１０３は、加算値テーブル３１０を参照して、抽出したビット列と同一のインデックスに対応する加算値データを、ＳＩＭＤ命令により、一時集計テーブル３２０の「位置ｎ」〜「位置ｎ＋３」の一時集計値データに加算する（ステップＳ８０４）。
【００８１】
すなわち、一時集計加算部１０３は、配列要素ｓｕｍ＿ｔａｂｌｅ［ｐ［ｎ／４］］に格納されている加算値データを、ＳＩＭＤ命令により、配列要素ｔｍｐ＿ｔａｂｌｅ［ｎ／４］に加算する。
【００８２】
これにより、一時集計加算部１０３は、ゲノムデータ４００−ｍの「位置ｎ」〜「位置ｎ＋３」のビット列と同一のインデックスに対応する加算値データを、一時集計テーブル３２０の「位置ｎ」〜「位置ｎ＋３」の一時集計値データに加算することができる。しかも、一時集計加算部１０３は、ＳＩＭＤ命令により、ゲノムデータ４００−ｍの４位置分のビット列に対応する加算値データを、４位置分の一時集計値データに加算することができる。
【００８３】
次に、カウンタ管理部１０１は、カウンタｎに「４」を加算する（ステップＳ８０５）。すなわち、カウンタ管理部１０１は、ｎ＝ｎ＋４とする。
【００８４】
次に、カウンタ管理部１０１は、カウンタｎがＮ未満であるか否かを判定する（ステップＳ８０６）。
【００８５】
ステップＳ８０６において、カウンタ管理部１０１によりカウンタｎがＮ未満であると判定された場合、データ集計処理部１００は、ステップＳ８０４の処理に戻る。すなわち、一時集計加算部１０３は、ｎ＝０、４、８、・・・、Ｎ−４に対して、上記のステップＳ８０４の処理を行う。
【００８６】
一方、ステップＳ８０６において、カウンタｎがＮ未満でないと判定された場合、カウンタ管理部１０１は、カウンタｍに「１」を加算する（ステップＳ８０７）。すなわち、カウンタ管理部１０１は、ｍ＝ｍ＋１とする。
【００８７】
次に、カウンタ管理部１０１は、カウンタｎが６５５３６未満であるか否かを判定する（ステップＳ８０８）。
【００８８】
なお、上記のステップＳ８０８において、カウンタｎが６５５３６未満であるか否かを判定するのは、一時集計値データのデータ溢れを防止するためである。したがって、カウンタ管理部１０１は、例えば、一時集計テーブル３２０の少なくとも１つの一時集計値データが６５５３５となったか否かを判定しても良い。
【００８９】
ステップＳ８０８において、カウンタ管理部１０１によりカウンタｎが６５５３６未満でないと判定された場合、データ集計処理部１００は、集計結果加算部１０４により、一時集計テーブル３２０を、集計結果テーブル３３０に反映する（ステップＳ８０９）。なお、本ステップの集計結果テーブルへの反映処理の詳細は後述する。
【００９０】
一方、ステップＳ８０８において、カウンタ管理部１０１によりカウンタｎが６５５３６未満であると判定された場合、又はステップＳ８０９に続いて、カウンタ管理部１０１は、カウンタｍがＭ＋１未満であるか否かを判定する（ステップＳ８１０）。
【００９１】
ステップＳ８１０において、カウンタ管理部１０１によりカウンタｍがＭ＋１未満であると判定された場合、データ集計処理部１００は、ステップＳ８０２の処理に戻る。すなわち、データ集計処理部１００は、ｍ＝１、２、・・・、Ｍに対して、上記のステップＳ８０２〜ステップＳ８０９の処理を行う。
【００９２】
一方、ステップＳ８１０において、カウンタ管理部１０１によりカウンタｍがＭ＋１未満でないと判定された場合、データ集計処理部１００は、データ集計処理を終了する。これにより、データ集計処理部１００は、ゲノムデータ４００の位置毎の変異パターンの出現回数が集計することができる。
【００９３】
次に、データ集計処理におけるステップＳ８０９の処理（集計結果テーブルへの反映処理）の詳細について、図９を参照しながら説明する。図９は、本実施形態に係る集計結果テーブルへの反映処理の一例を示すフローチャートである。
【００９４】
まず、カウンタ管理部１０１は、ゲノムデータ４００の「位置ｎ」を識別するためのカウンタｎを「０」に初期化する（ステップＳ９０１）。
【００９５】
次に、集計結果加算部１０４は、一時集計テーブル３２０の「位置ｎ」〜「位置ｎ＋３」の一時集計値データを、各要素が６４ビットである配列ｔｍｐ＿ａｇｇ［４］に格納する（ステップＳ９０２）。
【００９６】
すなわち、集計結果加算部１０４は、一時集計テーブル３２０の「位置ｎ」の一時集計値データを配列要素ｔｍｐ＿ａｇｇ［０］に格納する。同様に、集計結果加算部１０４は、一時集計テーブル３２０の「位置ｎ＋１」の一時集計値データを配列要素ｔｍｐ＿ａｇｇ［１］に格納する。以降も同様に、集計結果加算部１０４は、一時集計テーブル３２０の「位置ｎ＋２」及び「位置ｎ＋３」の一時集計値データを、配列要素ｔｍｐ＿ａｇｇ［２］及び配列要素ｔｍｐ＿ａｇｇ［３］にそれぞれ格納する。
【００９７】
次に、カウンタ管理部１０１は、ビット列を示すカウンタｋを「０」に初期化する（ステップＳ９０３）。なお、カウンタｋが示すビット列は、変異パターンを表すビット列であり、カウンタｋを２ビットのビット列で表したものである。したがって、以降では、カウンタｋが示すビット列を「ビット列ｋ」と表す。
【００９８】
次に、集計結果加算部１０４は、一時集計テーブル３２０の「位置ｎ」におけるビット列ｋの一時集計値データを、集計結果テーブル３３０の「位置ｎ」におけるビット列ｋの集計結果値データに加算する（ステップＳ９０４）。
【００９９】
すなわち、集計結果加算部１０４は、配列要素ｔｍｐ＿ａｇｇ［０］を右に１６×ｋビットのシフト演算を行った上で、「０ｘ００００００００００００００ｆｆ」とマスク処理を行って、配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［ｎ］［ｋ］に加算する。
【０１００】
次に、集計結果加算部１０４は、一時集計テーブル３２０の「位置ｎ＋１」におけるビット列ｋの一時集計値データを、集計結果テーブル３３０の「位置ｎ＋１」におけるビット列ｋの集計結果値データに加算する（ステップＳ９０５）。
【０１０１】
すなわち、集計結果加算部１０４は、配列要素ｔｍｐ＿ａｇｇ［１］を右に１６×ｋビットのシフト演算を行った上で、「０ｘ００００００００００００００ｆｆ」とマスク処理を行って、配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［ｎ＋１］［ｋ］に加算する。
【０１０２】
次に、集計結果加算部１０４は、一時集計テーブル３２０の「位置ｎ＋２」におけるビット列ｋの一時集計値データを、集計結果テーブル３３０の「位置ｎ＋２」におけるビット列ｋの集計結果値データに加算する（ステップＳ９０６）。
【０１０３】
すなわち、集計結果加算部１０４は、配列要素ｔｍｐ＿ａｇｇ［２］を右に１６×ｋビットのシフト演算を行った上で、「０ｘ００００００００００００００ｆｆ」とマスク処理を行って、配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［ｎ＋２］［ｋ］に加算する。
【０１０４】
次に、集計結果加算部１０４は、一時集計テーブル３２０の「位置ｎ＋３」におけるビット列ｋの一時集計値データを、集計結果テーブル３３０の「位置ｎ＋３」におけるビット列ｋの集計結果値データに加算する（ステップＳ９０７）。
【０１０５】
すなわち、集計結果加算部１０４は、配列要素ｔｍｐ＿ａｇｇ［３］を右に１６×ｋビットのシフト演算を行った上で、「０ｘ００００００００００００００ｆｆ」とマスク処理を行って、配列要素ｒｅｓｕｌｔ＿ｔａｂｌｅ［ｎ＋３］［ｋ］に加算する。
【０１０６】
次に、カウンタ管理部１０１は、カウンタｋに「１」を加算する（ステップＳ９０８）。すなわち、カウンタ管理部１０１は、ｋ＝ｋ＋１とする。
【０１０７】
次に、カウンタ管理部１０１は、カウンタｋが３未満であるか否かを判定する（ステップＳ９０９）。
【０１０８】
なお、例えば、ＳＮＰの変異パターンにおいて、父系と母系を区別して、例えば、「Ａ／Ａ」、「Ａ／Ｃ」、「Ｃ／Ａ」、及び「Ｃ／Ｃ」等と表す場合には、上記のステップＳ９０８の前に、「位置ｎ＋４」におけるビット列ｋの集計結果値データの加算を行う。また、この場合、上記のステップＳ９０９において、カウンタ管理部１０１は、カウンタｋが４未満であるか否かを判定する。
【０１０９】
ステップＳ９０９において、カウンタ管理部１０１によりカウンタｋが３未満であると判定された場合、データ集計処理部１００は、ステップＳ９０４の処理に戻る。すなわち、データ集計処理部１００は、ｋ＝０、１、２に対して、上記のステップＳ９０９〜ステップＳ９０８の処理を行う。
【０１１０】
一方、カウンタ管理部１０１によりカウンタｋが３未満でないと判定された場合、カウンタ管理部１０１は、カウンタｎに「４」を加算する。（ステップＳ９１０）。すなわち、カウンタ管理部１０１は、ｎ＝ｎ＋４とする。
【０１１１】
次に、カウンタ管理部１０１は、カウンタｎがＮ未満であるか否かを判定する（ステップＳ９１１）。
【０１１２】
ステップＳ９１１において、カウンタ管理部１０１によりカウンタｎがＮ未満であると判定された場合、データ集計処理部１００は、ステップＳ９０２の処理に戻る。すなわち、データ集計処理部１００は、ｎ＝０、４、８、・・・、Ｎ−４に対して、上記のステップＳ９０２〜ステップＳ９１０の処理を行う。
【０１１３】
一方、ステップＳ９１１において、カウンタ管理部１０１によりカウンタｎがＮ未満でないと判定された場合、集計結果加算部１０４は、一時集計テーブル３２０の一時集計値データを「０」に初期化する（ステップＳ９１２）。すなわち、集計結果加算部１０４は、配列要素ｔｍｐ＿ｔａｂｌｅ［０］〜配列要素ｔｍｐ＿ｔａｂｌｅ［（Ｎ／４）−１］を「０」に初期化する。
【０１１４】
以上により、本実施形態に係るデータ集計装置１０は、複数のゲノムデータ４００について、位置毎の変異パターンの出現回数を集計することができる。しかも、本実施形態に係るデータ集計装置１０では、ゲノムデータ４００の４位置（８ビットのビット列）から参照される加算値データを、ＳＩＭＤ命令により、一時集計テーブル３２０に加算する。
【０１１５】
これにより、本実施形態に係るデータ集計装置１０は、ゲノムデータ４００の位置毎の変異パターンの出現回数を一時集計テーブル３２０に集計する際に、例えばシフト演算及びマスク処理を行う必要がない。このため、本実施形態に係るデータ集計装置１０は、ゲノムデータ４００の位置毎の変異パターンの出現回数の集計処理を高速に行うことができる。
【０１１６】
なお、本実施形態に係るデータ集計装置１０は、２５６ビットのデータをＳＩＭＤ命令で演算可能なＣＰＵ１７を有するものとしたが、これに限られず、例えば、５１２ビットのデータをＳＩＭＤ命令で演算可能なＣＰＵ１７を有していても良い。この場合、本実施形態に係るデータ集計装置１０は、ゲノムデータ４００の８位置（１６ビットのビット列）から参照される５１２ビットの加算値データを、ＳＩＭＤ命令により、一時集計テーブル３２０に加算すれば良い。
【０１１７】
このように、本実施形態に係るデータ集計装置１０は、ＣＰＵ１７が演算可能なＳＩＭＤ命令のビット数に応じて、ゲノムデータ４００から抽出するビット列のビット数や加算値テーブル３１０のインデックス及び加算値データのビット数を適宜変更して適用し得る。
【０１１８】
ここで、本実施形態に係るデータ集計処理の一適用例として、疾患に関連する位置の候補を特定する場合について、図１０を参照しながら説明する。図１０は、本実施形態に係るデータ集計処理を用いて、疾患に関連する位置の候補を特定する場合の一例を説明する図である。
【０１１９】
図１０では、データ記憶部２００に記憶されているゲノムデータ４００には、ある特定の疾患に罹患していない健常者のゲノムデータ４１０と、ある特定の疾患に罹患している罹患者のゲノムデータ４２０とが含まれるものとする。
【０１２０】
このとき、本実施形態に係るデータ集計装置１０は、ゲノムデータ４１０について、位置毎の変異パターンの出現回数を集計して、健常者の集計結果テーブル３３０−１を作成する。同様に、本実施形態に係るデータ集計装置１０は、ゲノムデータ４２０について、位置毎の変異パターンの出現回数を集計して、罹患者の集計結果テーブル３３０−２を作成する。
【０１２１】
そして、例えば、集計結果テーブル３３０−１に基づいて、位置毎の変異パターンの出現回数の分布（健常者分布）を作成すると共に、集計結果テーブル３３０−２とに基づいて、位置毎の変異パターンの出現回数の分布（罹患者分布）を作成する。
【０１２２】
これにより、例えば、健常者分布と罹患者分布とに有意差があるか否かを判定することにより、疾患に関連する位置の候補を特定することができる。
【０１２３】
このように、本実施形態に係るデータ集計装置１０は、例えば、ＤＮＡ配列において、ＳＮＰの変異パターンが出現する位置の中から疾患に関連する位置の候補を特定するためのデータ集計処理に用いることができる。ただし、これに限られず、本実施形態に係るデータ集計装置１０は、データ中の出現パターンが所定のビット数のビット列で表すことができる場合に、当該出現パターンの出現回数を集計する処理にも同様に適用することができる。
【０１２４】
以上、本発明の実施形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１２５】
以上の説明に関し、更に以下の項を開示する。
（付記１）
遺伝子の変異位置毎の変異パターンをｘ（ｘは１以上の整数）ビットで表したゲノムデータから、変異位置ｙ（ｙは１以上の整数）個のｘビットのデータ毎に、ｘ×ｙビットの抽出データを抽出する抽出部と、
ｘ×ｙビットのデータ毎に対応付けられた加算値データを複数格納した加算値テーブルを記憶する記憶部と、
前記抽出データに対応する加算値データを、ゲノムデータの集計値を格納する集計値データ内の前記ゲノムデータが対応する位置に、ＳＩＭＤ命令を用いて加算する加算部と、
を有する情報処理装置。
（付記２）
前記加算部が、前記加算値データを、前記集計値データのデータサイズの最大の数まで前記集計値データに加算した場合、前記集計値データを、前記集計値データのデータサイズよりも大きなデータサイズを有する集計結果値データに加算する集計結果部を有する、ことを特徴とする付記１に記載の情報処理装置。
（付記３）
前記加算値データ、抽出データ、集計値データのデータサイズは１６ビットであることを特徴とする付記１もしくは２記載の情報処理装置。
（付記４）
遺伝子の変異位置毎の変異パターンをｘ（ｘは１以上の整数）ビットで表したゲノムデータから、変異位置ｙ（ｙは１以上の整数）個のｘビットのデータ毎に、ｘ×ｙビットの抽出データを抽出し、
ｘ×ｙビットのデータ毎に対応付けられた加算値データを複数格納した加算値テーブルを参照して、前記抽出データに対応する加算値データを、ゲノムデータの集計値を格納する集計値データ内の前記ゲノムデータが対応する位置に、ＳＩＭＤ命令を用いて加算する
処理をコンピュータに実行させるゲノムデータ集計プログラム。
（付記５）
遺伝子の変異位置毎の変異パターンをｘ（ｘは１以上の整数）ビットで表したゲノムデータから、変異位置ｙ（ｙは１以上の整数）個のｘビットのデータ毎に、ｘ×ｙビットの抽出データを抽出し、
ｘ×ｙビットのデータ毎に対応付けられた加算値データを複数格納した加算値テーブルを参照して、前記抽出データに対応する加算値データを、ゲノムデータの集計値を格納する集計値データ内の前記ゲノムデータが対応する位置に、ＳＩＭＤ命令を用いて加算する、
処理をコンピュータが実行するゲノムデータ集計方法。
【符号の説明】
【０１２６】
１０        データ集計装置
１００      データ集計処理部
１０１      カウンタ管理部
１０２      データ取得部
１０３      一時集計加算部
１０４      集計結果加算部
２００      データ記憶部
３００      テーブル記憶部
３１０      加算値テーブル
３２０      一時集計テーブル
３３０      集計結果テーブル
４００      ゲノムデータ
【図１】
2018045586.tif 000003
【図２】
2018045586.tif 000004
【図３】
2018045586.tif 000005
【図４】
2018045586.tif 000006
【図５】
2018045586.tif 000007
【図６】
2018045586.tif 000008
【図７】
2018045586.tif 000009
【図８】
2018045586.tif 000010
【図９】
2018045586.tif 000011
【図１０】
2018045586.tif 000012