(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-28
(54)【発明の名称】ソフトウェアで加速されたゲノムリードマッピング
(51)【国際特許分類】
G16B 30/10 20190101AFI20230921BHJP
【FI】
G16B30/10
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022576163
(86)(22)【出願日】2021-09-15
(85)【翻訳文提出日】2022-12-09
(86)【国際出願番号】 US2021050557
(87)【国際公開番号】W WO2022060910
(87)【国際公開日】2022-03-24
(32)【優先日】2020-09-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】500358711
【氏名又は名称】イルミナ インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ギヨーム・アレクサンドル・パスカル・リツク
(57)【要約】
ソフトウェアで加速されたゲノムデータリードマッピングのための方法、システム、装置、及びコンピュータプログラムが開示される。一態様では、方法は、ゲノムデータリードからk-merシードを取得することと、取得したk-merシードに基づいてゲノムシグネチャーを生成することと、ハッシュデータ構造を使用してk-merシードの少なくとも一部と一致する参照配列箇所を決定することであって、ハッシュデータ構造が、所定のゲノムシグネチャーを記憶する第1の部分と、所定のゲノムシグネチャーが導出されたk-merシードの少なくとも一部と一致する参照配列箇所の第1の出現に対応する値を記憶する第2の部分とを含むN個のデータセルを含む、ことと、1つ以上のアライメントスコアに基づいて、決定した参照配列箇所を、取得したk-merシードの実際のアライメントとして選択することと、のアクションを含むことができる。
【特許請求の範囲】
【請求項1】
ソフトウェアで加速されたゲノムデータリードマッピングのための方法であって、
1つ以上のコンピュータによって、ゲノムデータリードからk-merシードを取得することと、
前記1つ以上のコンピュータによって、前記取得したk-merシードに基づいてゲノムシグネチャーを生成することと、
1つ以上のコンピュータによって、ハッシュデータ構造を使用して前記k-merシードの少なくとも一部と一致する参照配列箇所を決定することであって、前記ハッシュデータ構造が、所定のゲノムシグネチャーを記憶する第1の部分と、前記所定のゲノムシグネチャーが導出された前記k-merシードの少なくとも一部と一致する参照配列箇所の第1の出現に対応する値を記憶する第2の部分とを含むN個のデータセルを含む、ことと、
1つ以上のコンピュータによって、1つ以上のアライメントスコアに基づいて、前記決定した参照配列箇所を前記取得したk-merシードの実際のアライメントとして選択することと、を含む、方法。
【請求項2】
前記所定のゲノムシグネチャーが、メモリ記憶の1バイトを占める、請求項1に記載の方法。
【請求項3】
前記値が、メモリ記憶の4バイトを占める、請求項1又は2に記載の方法。
【請求項4】
前記ハッシュデータ構造が、N個のデータセルの単一のアレイである、請求項1~3のいずれか一項に記載の方法。
【請求項5】
1つ以上のコンピュータによって、前記ゲノムデータリードの1つ以上のk-merシードに対応する第1の値のセットに基づいて、前記ゲノムデータリードをフィルタリングすることを更に含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記第1の値のセットが、前記ゲノムデータリードの前記1つ以上のk-merシードに適用された所定の動作の結果を含み、前記第1の値のセットが、前記ゲノムデータリードから前記k-merシードを取得するために使用される、請求項5に記載の方法。
【請求項7】
前記所定の動作が、前記ゲノムデータリードの前記1つ以上のk-merシード及びハッシュ関数に基づいてハッシュ値を生成することを含む、請求項6に記載の方法。
【請求項8】
前記参照配列箇所を決定することが、
1つ以上のコンピュータによって、前記ゲノムデータリードの前記k-merシードのための第1の位置を計算することであって、前記第1の位置が、前記ゲノムデータリード内の前記k-merシードの箇所に対応する、ことと、
1つ以上のコンピュータによって、前記k-merシードのための第2の位置を計算することであって、前記第2の位置が、参照ゲノムデータ内の前記k-merシードの箇所に対応し、前記第2の位置が、前記ハッシュデータ構造に基づいて計算される、ことと、を含む、請求項1~7のいずれか一項に記載の方法。
【請求項9】
1つ以上のコンピュータによって、前記ハッシュデータ構造及び前記ゲノムデータリードに基づいて前記1つ以上の参照配列箇所をソーティングすることを更に含む、請求項1~8のいずれか一項に記載の方法。
【請求項10】
1つ以上のコンピュータによって、前記1つ以上の参照配列箇所をソーティングすることに基づいて前記1つ以上のアライメントスコアを生成することを更に含む、請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記決定した参照配列箇所のうちの少なくとも1つを前記取得したk-merシードの前記実際のアライメントとして選択することが、前記1つ以上のアライメントスコアを閾値と比較することを含む、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記1つ以上のアライメントスコアが、前記ゲノムデータリードからの前記取得したk-merシードと前記参照配列箇所との間のミスマッチの数を表す数値を含む、請求項1~11のいずれか一項に記載の方法。
【請求項13】
前記所定のゲノムシグネチャーが導出された前記k-merシードの少なくとも一部と一致する参照配列箇所の第1の出現後の各後続の出現は破棄される、請求項1~12のいずれか一項に記載の方法。
【請求項14】
ソフトウェアで加速されたゲノムデータリードマッピングのためのシステムであって、方法は、
1つ以上のコンピュータと、
前記1つ以上のコンピュータによって実行されると、前記1つ以上のコンピュータに動作を実行させる命令を記憶する1つ以上のメモリデバイスと、を含み、前記動作は、
前記1つ以上のコンピュータによって、ゲノムデータリードからk-merシードを取得することと、
前記1つ以上のコンピュータによって、前記取得したk-merシードに基づいてゲノムシグネチャーを生成することと、
前記1つ以上のコンピュータによって、ハッシュデータ構造を使用して前記k-merシードの少なくとも一部と一致する参照配列箇所を決定することであって、前記ハッシュデータ構造が、所定のゲノムシグネチャーを記憶する第1の部分と、前記所定のゲノムシグネチャーが導出された前記k-merシードの少なくとも一部と一致する参照配列箇所の第1の出現に対応する値を記憶する第2の部分とを含むN個のデータセルを含む、ことと、
前記1つ以上のコンピュータによって、1つ以上のアライメントスコアに基づいて、前記決定した参照配列箇所を前記取得したk-merシードの実際のアライメントとして選択することと、を含む、システム。
【請求項15】
前記所定のゲノムシグネチャーが、メモリ記憶の1バイトを占める、請求項14に記載のシステム。
【請求項16】
前記値が、メモリ記憶の4バイトを占める、請求項14又は15に記載のシステム。
【請求項17】
前記ハッシュデータ構造が、N個のデータセルの単一のアレイである、請求項14~16のいずれか一項に記載のシステム。
【請求項18】
前記動作が、
前記1つ以上のコンピュータによって、前記ゲノムデータリードの1つ以上のk-merシードに対応する第1の値のセットに基づいて、前記ゲノムデータリードをフィルタリングすることを更に含む、請求項14~17のいずれか一項に記載のシステム。
【請求項19】
前記第1の値のセットが、前記ゲノムデータリードの前記1つ以上のk-merシードに適用された所定の動作の結果を含み、前記第1の値のセットが、前記ゲノムデータリードから前記k-merシードを取得するために使用される、請求項18に記載のシステム。
【請求項20】
前記所定の動作が、前記ゲノムデータリードの前記1つ以上のk-merシード及びハッシュ関数に基づいてハッシュ値を生成することを含む、請求項19に記載のシステム。
【請求項21】
前記参照配列箇所を決定することが、
前記1つ以上のコンピュータによって、前記ゲノムデータリードの前記k-merシードのための第1の位置を計算することであって、前記第1の位置が、前記ゲノムデータリード内の前記k-merシードの箇所に対応する、ことと、
前記1つ以上のコンピュータによって、前記k-merシードのための第2の位置を計算することであって、前記第2の位置が、参照ゲノムデータ内の前記k-merシードの箇所に対応し、前記第2の位置が、前記ハッシュデータ構造に基づいて計算される、ことと、を含む、請求項14~20のいずれか一項に記載のシステム。
【請求項22】
前記動作が、
前記1つ以上のコンピュータによって、前記ハッシュデータ構造及び前記ゲノムデータリードに基づいて前記1つ以上の参照配列箇所をソーティングすることを更に含む、請求項14~21のいずれか一項に記載のシステム。
【請求項23】
前記動作が、
1つ以上のコンピュータによって、前記1つ以上の参照配列箇所をソーティングすることに基づいて前記1つ以上のアライメントスコアを生成することを更に含む、請求項14~22のいずれか一項に記載のシステム。
【請求項24】
前記決定した参照配列箇所のうちの少なくとも1つを前記取得したk-merシードの前記実際のアライメントとして選択することが、前記1つ以上のアライメントスコアを閾値と比較することを含む、請求項14~23のいずれか一項に記載のシステム。
【請求項25】
前記1つ以上のアライメントスコアが、前記ゲノムデータリードからの前記取得したk-merシードと前記参照配列箇所との間のミスマッチの数を表す数値を含む、請求項14~24のいずれか一項に記載のシステム。
【請求項26】
前記所定のゲノムシグネチャーが導出された前記k-merシードの少なくとも一部と一致する参照配列箇所の第1の出現後の各後続の出現は破棄される、請求項14~25のいずれか一項に記載のシステム。
【請求項27】
1つ又は複数のコンピュータによって実行されると、1つ以上のコンピュータにソフトウェアで加速されたゲノムデータリードマッピングのための動作を実行させる命令を記憶するコンピュータ可読媒体であって、前記動作は、
ゲノムデータリードからk-merシードを取得することと、
前記取得したk-merシードに基づいてゲノムシグネチャーを生成することと、
ハッシュデータ構造を使用して前記k-merシードの少なくとも一部と一致する参照配列箇所を決定することであって、前記ハッシュデータ構造が、所定のゲノムシグネチャーを記憶する第1の部分と、前記所定のゲノムシグネチャーが導出された前記k-merシードの少なくとも一部と一致する参照配列箇所の第1の出現に対応する値を記憶する第2の部分とを含むN個のデータセルを含む、ことと、
1つ以上のアライメントスコアに基づいて、前記決定した参照配列箇所を前記取得したk-merシードの実際のアライメントとして選択することと、を含む、コンピュータ可読媒体。
【請求項28】
前記所定のゲノムシグネチャーが、メモリ記憶の1バイトを占める、請求項27に記載のコンピュータ可読媒体。
【請求項29】
前記値が、メモリ記憶の4バイトを占める、請求項27又は28に記載のコンピュータ可読媒体。
【請求項30】
前記ハッシュデータ構造が、N個のデータセルの単一のアレイである、請求項27~29のいずれか一項に記載のコンピュータ可読媒体。
【請求項31】
前記動作が、
前記ゲノムデータリードの1つ以上のk-merシードに対応する第1の値のセットに基づいて、前記ゲノムデータリードをフィルタリングすることを更に含む、請求項27~30のいずれか一項に記載のコンピュータ可読媒体。
【請求項32】
前記第1の値のセットが、前記ゲノムデータリードの前記1つ以上のk-merシードに適用された所定の動作の結果を含み、前記第1の値のセットが、前記ゲノムデータリードから前記k-merシードを取得するために使用される、請求項31に記載のコンピュータ可読媒体。
【請求項33】
前記参照配列箇所を決定することが、
前記ゲノムデータリードの前記k-merシードのための第1の位置を計算することであって、前記第1の位置が、前記ゲノムデータリード内の前記k-merシードの箇所に対応する、ことと、
前記k-merシードのための第2の位置を計算することであって、前記第2の位置が、参照ゲノムデータ内の前記k-merシードの箇所に対応し、前記第2の位置が、前記ハッシュデータ構造に基づいて計算される、ことと、を含む、請求項27~32のいずれか一項に記載のコンピュータ可読媒体。
【請求項34】
前記動作が、
前記ハッシュデータ構造及び前記ゲノムデータリードに基づいて前記1つ以上の参照配列箇所をソーティングすることを更に含む、請求項27~33のいずれか一項に記載のコンピュータ可読媒体。
【請求項35】
前記動作が、
前記1つ以上の参照配列箇所をソーティングすることに基づいて前記1つ以上のアライメントスコアを生成することを更に含む、請求項27~34のいずれか一項に記載のコンピュータ可読媒体。
【請求項36】
前記決定した参照配列箇所のうちの少なくとも1つを前記取得したk-merシードの前記実際のアライメントとして選択することが、前記1つ以上のアライメントスコアを閾値と比較することを含む、請求項27~35のいずれか一項に記載のコンピュータ可読媒体。
【請求項37】
前記1つ以上のアライメントスコアが、前記ゲノムデータリードからの前記取得したk-merシードと前記参照配列箇所との間のミスマッチの数を表す数値を含む、請求項27~36のいずれか一項に記載のコンピュータ可読媒体。
【請求項38】
前記所定のゲノムシグネチャーが導出された前記k-merシードの少なくとも一部と一致する参照配列箇所の第1の出現後の各後続の出現は破棄される、請求項27~37のいずれか一項に記載のコンピュータ可読媒体。
【請求項39】
ソフトウェアで加速されたゲノムデータリードマッピングのためのハッシュテーブルを生成するための方法であって、
1つ以上のコンピュータによって、ゲノムデータを受信することであって、前記ゲノムデータが、親ゲノムデータから導出される、ことと、
前記1つ以上のコンピュータによって、前記ゲノムデータに基づいて第1の値のセットを生成することと、
1つ以上のコンピュータによって、前記第1の値のセットに基づいて前記ゲノムデータのサブセットを生成することと、
1つ以上のコンピュータによって、前記ゲノムデータの前記サブセットの各k-merのためのシグネチャーを計算することであって、前記シグネチャーが、第1のハッシュ関数に基づいて計算される、ことと、
1つ以上のコンピュータによって、前記ゲノムデータの前記サブセットの各k-merのためのインデックスを計算することであって、前記インデックスが、第2のハッシュ
関数に基づいて計算される、ことと、
1つ以上のコンピュータによって、
前記ゲノムデータの前記サブセットの各k-merのための前記インデックスに基づいて前記ゲノムデータの前記サブセットの各k-merのための前記シグネチャー及び第1の属性をハッシュデータ構造内に記憶することと、を含む、方法。
【請求項40】
前記ゲノムデータの前記サブセットの各k-merが、1つ以上のヌクレオチドのストリングを表すk個の文字を含むk-merである、請求項39に記載の方法。
【請求項41】
前記第1の値のセットが、前記ゲノムデータの所与のk-merが前記親ゲノムデータ内で出現する回数の表現を含む、請求項39又は40に記載の方法。
【請求項42】
前記第1の値のセットが、前記ゲノムデータの対応するk-merに基づいて計算されたハッシュ値の表現を含む、請求項39~41のいずれか一項に記載の方法。
【請求項43】
前記サブセットの所与のk-merの前記シグネチャーを記憶するために使用されるメモリ割り当てサイズが、前記所与のk-merを記憶するために使用されるメモリ割り当てサイズよりも小さい、請求項39~42のいずれか一項に記載の方法。
【請求項44】
前記方法が、
前記1つ以上のコンピュータによって、前記ハッシュデータ構造に対応するデータをデータパッケージとして第1のデバイスに送信することを更に含む、請求項39~43のいずれか一項に記載の方法。
【請求項45】
前記第1のデバイスが、メモリ記憶デバイスである、請求項44に記載の方法。
【請求項46】
第2のデバイスが、前記ハッシュデータ構造に対応する前記データを前記第1のデバイスから読み取り、前記第2のデバイスが、前記ハッシュデータ構造に対応する前記データに基づいて第2のハッシュデータ構造を生成する一連の動作を実行する、請求項44又は請求項45に記載の方法。
【請求項47】
ソフトウェアで加速されたゲノムデータリードマッピングのためのハッシュテーブルを生成するためのシステムであって、
1つ以上のコンピュータと、
前記1つ以上のコンピュータによって実行されると、前記1つ以上のコンピュータに動作を実行させる命令を記憶する1つ以上のメモリと、を含み、前記動作は、
前記1つ以上のコンピュータによって、ゲノムデータを受信することであって、前記ゲノムデータが、親ゲノムデータから導出される、ことと、
前記1つ以上のコンピュータによって、前記ゲノムデータに基づいて第1の値のセットを生成することと、
前記1つ以上のコンピュータによって、前記第1の値のセットに基づいて前記ゲノムデータのサブセットを生成することと、
前記1つ以上のコンピュータによって、前記ゲノムデータの前記サブセットの各k-merのためのシグネチャーを計算することであって、前記シグネチャーが、第1のハッシュ関数に基づいて計算される、ことと、
前記1つ以上のコンピュータによって、前記ゲノムデータの前記サブセットの各k-merのための第1の属性を計算することであって、前記第1の属性が、前記ゲノムデータの配列内での前記ゲノムデータの所与のk-merの位置を含む、ことと、
前記1つ以上のコンピュータによって、前記ゲノムデータの前記サブセットの各k-merのためのインデックスを計算することであって、前記インデックスが、第2のハッシュ関数に基づいて計算される、ことと、
前記1つ以上のコンピュータによって、前記ゲノムデータの前記サブセットの各k-merのための前記インデックスに基づいて前記ゲノムデータの前記サブセットの各k-merのための前記シグネチャー及び第1の属性をハッシュデータ構造内に記憶することと、を含む、システム。
【請求項48】
前記ゲノムデータの前記サブセットの各k-merが、1つ以上のヌクレオチドのストリングを表すk個の文字を含むk-merである、請求項47に記載のシステム。
【請求項49】
前記第1の値のセットが、前記ゲノムデータの所与のk-merが前記親ゲノムデータ内で出現する回数の表現を含む、請求項47又は48に記載のシステム。
【請求項50】
前記第1の値のセットが、前記ゲノムデータの対応するk-merに基づいて計算されたハッシュ値の表現を含む、請求項47~49のいずれか一項に記載のシステム。
【請求項51】
前記サブセットの所与のk-merの前記シグネチャーを記憶するために使用されるメモリ割り当てサイズが、前記所与のk-merを記憶するために使用されるメモリ割り当てサイズよりも小さい、請求項47~50のいずれか一項に記載のシステム。
【請求項52】
前記動作が、
前記1つ以上のコンピュータによって、前記ハッシュデータ構造に対応するデータをデータパッケージとして第1のデバイスに送信することを更に含む、請求項47~51のいずれか一項に記載のシステム。
【請求項53】
前記第1のデバイスが、メモリ記憶デバイスである、請求項52に記載のシステム。
【請求項54】
第2のデバイスが、前記ハッシュデータ構造に対応する前記データを前記第1のデバイスから読み取り、前記第2のデバイスが、前記ハッシュデータ構造に対応する前記データに基づいて第2のハッシュデータ構造を生成する一連の動作を実行する、請求項52又は請求項53に記載のシステム。
【請求項55】
1つ以上のコンピュータによって実行されると、前記1つ以上のコンピュータにソフトウェアで加速されたゲノムデータリードマッピングのためのハッシュテーブルを生成するための動作を実行させる命令を記憶するコンピュータ可読媒体であって、前記動作は、
ゲノムデータを受信することであって、前記ゲノムデータが、親ゲノムデータから導出される、ことと、
前記ゲノムデータに基づいて第1の値のセットを生成することと、
前記第1の値のセットに基づいて前記ゲノムデータのサブセットを生成することと、
前記ゲノムデータの前記サブセットの各k-merのためのシグネチャーを計算することであって、前記シグネチャーが、第1のハッシュ関数に基づいて計算される、ことと、
前記ゲノムデータの前記サブセットの各k-merのための第1の属性を計算することであって、前記第1の属性が、前記ゲノムデータの配列内での前記ゲノムデータの所与のk-merの位置を含む、ことと、
前記ゲノムデータの前記サブセットの各k-merのためのインデックスを計算することであって、前記インデックスが、第2のハッシュ関数に基づいて計算される、ことと、
前記ゲノムデータの前記サブセットの各k-merのための前記インデックスに基づいて前記ゲノムデータの前記サブセットの各k-merのための前記シグネチャー及び第1の属性をハッシュデータ構造内に記憶することと、を含む、コンピュータ可読媒体。
【請求項56】
前記ゲノムデータの前記サブセットの各k-merが、1つ以上のヌクレオチドのストリングを表すk個の文字を含むk-merである、請求項55に記載のコンピュータ可読媒体。
【請求項57】
前記第1の値のセットが、前記ゲノムデータの所与のk-merが前記親ゲノムデータ内で出現する回数の表現を含む、請求項55又は56に記載のコンピュータ可読媒体。
【請求項58】
前記第1の値のセットが、前記ゲノムデータの対応するk-merに基づいて計算されたハッシュ値の表現を含む、請求項55~57のいずれか一項に記載のコンピュータ可読媒体。
【請求項59】
前記サブセットの所与のk-merの前記シグネチャーを記憶するために使用されるメモリ割り当てサイズが、前記所与のk-merを記憶するために使用されるメモリ割り当てサイズよりも小さい、請求項55~58のいずれか一項に記載のコンピュータ可読媒体。
【請求項60】
前記動作が、
前記ハッシュデータ構造に対応するデータをデータパッケージとして第1のデバイスに送信することを更に含む、請求項55~59のいずれか一項に記載のコンピュータ可読媒体。
【請求項61】
前記第1のデバイスが、メモリ記憶デバイスである、請求項60に記載のコンピュータ可読媒体。
【請求項62】
第2のデバイスが、前記ハッシュデータ構造に対応する前記データを前記第1のデバイスから読み取り、前記第2のデバイスが、前記ハッシュデータ構造に対応する前記データに基づいて第2のハッシュデータ構造を生成する一連の動作を実行する、請求項60又は請求項61に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2020年9月15日に出願された米国特許出願第63/078,890号の優先権を主張し、この出願は、参照によりその全体が組み込まれる。
【背景技術】
【0002】
ゲノムリードマッピングは、場合によっては、遺伝子の遺伝子座及び遺伝子間の距離を特定する方法を説明する。コンピュータを使用して、ゲノムデータの1つ以上のセットを分析し、一連のヌクレオチドなどの分子マーカーの集合体を所与の参照ゲノム上でのそれぞれの位置と互いに関係付けることができる。このように、コンピュータを使用して、分子マーカーの集合体を参照ゲノム上に「マッピング」することができる。
【発明の概要】
【課題を解決するための手段】
【0003】
本開示は、ソフトウェアで加速されたゲノムリードマッピングのための方法、システム、及びコンピュータプログラムを対象とする。一態様では、本開示は、ソフトウェアで加速されたゲノムリードマッピングを容易にするハッシュテーブルの生成に関する。ハッシュテーブルは、ゲノムデータシグネチャーを使用してインデックス付けされた参照ゲノムを表すデータを含むことができる。いくつかの実装形態では、生成されたハッシュテーブルを使用して、受信されたゲノムリードと参照ゲノムとの間のマッピングを決定することができる。
【0004】
本開示の革新的な一態様によれば、ソフトウェアで加速されたゲノムデータリードマッピングのための方法が開示される。一態様では、方法は、1つ以上のコンピュータによって、ゲノムデータリードからk-merシードを取得することと、1つ以上のコンピュータによって、取得したk-merシードに基づいてゲノムシグネチャーを生成することと、1つ以上のコンピュータによって、ハッシュデータ構造を使用してk-merシードの少なくとも一部と一致する参照配列箇所を決定することであって、ハッシュデータ構造が、所定のゲノムシグネチャーを記憶する第1の部分と、所定のゲノムシグネチャーが導出されたk-merシードの少なくとも一部と一致する参照配列箇所の第1の出現に対応する値を記憶する第2の部分とを含むN個のデータセルを含む、ことと、1つ以上のコンピュータによって、1つ以上のアライメントスコアに基づいて、決定した参照配列箇所を、取得したk-merシードの実際のアライメントとして選択することと、のアクションを含むことができる。
【0005】
他のバージョンとしては、前述の方法のアクションを実行するように構成されている、対応するシステム、装置、及びコンピュータプログラムが挙げられる。
【0006】
これらの及び他のバージョンは、任意選択で、以下の特徴のうちの1つ以上を含んでもよい。例えば、いくつかの実装形態では、所定のゲノムシグネチャーは、メモリ記憶の1バイトのみを占めることができる。
【0007】
いくつかの実装形態では、この値は、メモリ記憶の4バイトのみを占めることができる。
【0008】
いくつかの実装形態では、ハッシュデータ構造は、N個のデータセルの単一のアレイである。
【0009】
いくつかの実装形態では、方法は、1つ以上のコンピュータによって、ゲノムデータリードの1つ以上のk-merシードに対応する第1の値のセットに基づいて、ゲノムデータリードをフィルタリングすることを更に含むことができる。
【0010】
いくつかの実装形態では、第1の値のセットは、ゲノムデータリードの1つ以上のk-merシードに適用された所定の動作の結果を含むことができ、第1の値のセットは、ゲノムデータリードからk-merシードを取得するために使用される。
【0011】
いくつかの実装形態では、所定の動作は、ゲノムデータリードの1つ以上のk-merシード及びハッシュ関数に基づいてハッシュ値を生成することを含むことができる。
【0012】
いくつかの実装形態では、参照配列箇所を決定することは、1つ以上のコンピュータによって、ゲノムデータリードのk-merシードのための第1の位置を計算することであって、第1の位置が、ゲノムデータリード内のk-merシードの箇所に対応する、ことと、1つ以上のコンピュータによって、k-merシードのための第2の位置を計算することであって、第2の位置が、参照ゲノムデータ内のk-merシードの箇所に対応し、第2の位置が、ハッシュデータ構造に基づいて計算される、ことと、を含むことができる。
【0013】
いくつかの実装形態では、方法は、1つ以上のコンピュータによって、ハッシュデータ構造及びゲノムデータリードに基づいて1つ以上の参照配列箇所をソーティングすることを更に含むことができる。
【0014】
いくつかの実装形態では、方法は、1つ以上のコンピュータによって、1つ以上の参照配列箇所をソーティングすることに基づいて1つ以上のアライメントスコアを生成することを更に含むことができる。
【0015】
いくつかの実装形態では、方法は、決定した参照配列箇所のうちの少なくとも1つを、取得したk-merシードの実際のアライメントとして選択することが、1つ以上のアライメントスコアを閾値と比較することを含むこと、を更に含むことができる。
【0016】
いくつかの実装形態では、方法は、1つ以上のアライメントスコアが、ゲノムデータリードから取得したk-merシードと参照配列箇所との間のミスマッチの数を表す数値を含むことを更に含むことができる。
【0017】
いくつかの実装形態では、所定のゲノムシグネチャーが導出されたk-merシードの少なくとも一部と一致する参照配列箇所の第1の出現後の各後続の出現は破棄される。
【0018】
本開示の革新的な別の態様によれば、ソフトウェアで加速されたゲノムデータリードマッピングのためのハッシュテーブルを生成するための方法が開示される。一態様では、方法は、1つ以上のコンピュータによって、ゲノムデータを受信することであって、ゲノムデータが、親ゲノムデータから導出される、ことと、1つ以上のコンピュータによって、ゲノムデータに基づいて第1の値のセットを生成することと、1つ以上のコンピュータによって、第1の値のセットに基づいてゲノムデータのサブセットを生成することと、1つ以上のコンピュータによって、ゲノムデータのサブセットの各k-merのためのシグネチャーを計算することであって、シグネチャーが、第1のハッシュ関数に基づいて計算される、ことと、1つ以上のコンピュータによって、ゲノムデータのサブセットの各k-merのための第1の属性を計算することであって、第1の属性が、ゲノムデータの配列内でのゲノムデータの所与のk-merの位置を含む、ことと、1つ以上のコンピュータによって、ゲノムデータのサブセットの各k-merのためのインデックスを計算することであって、インデックスが、第2のハッシュ関数に基づいて計算される、ことと、1つ以上のコンピュータによって、ゲノムデータのサブセットの各k-merのためのインデックスに基づいてゲノムデータのサブセットの各k-merのためのシグネチャー及び第1の属性をハッシュデータ構造内に記憶することと、のアクションを含むことができる。
【0019】
他のバージョンとしては、前述の方法のアクションを実行するように構成されている、対応するシステム、装置、及びコンピュータプログラムが挙げられる。
【0020】
これらの及び他のバージョンは、任意選択で、以下の特徴のうちの1つ以上を含んでもよい。例えば、いくつかの実装形態では、ゲノムデータのサブセットの各k-merは、1つ以上のヌクレオチドのストリングを表すk個の文字を含むk-merである。
【0021】
いくつかの実装形態では、第1の値のセットは、ゲノムデータの所与のk-merが親ゲノムデータ内で出現する回数の表現を含むことができる。
【0022】
いくつかの実装形態では、第1の値のセットは、ゲノムデータの対応するk-merに基づいて計算されたハッシュ値の表現を含む。
【0023】
いくつかの実装形態では、サブセットの所与のk-merのシグネチャーを記憶するために使用されるメモリ割り当てサイズが、所与のk-merを記憶するために使用されるメモリ割り当てサイズよりも小さい。
【0024】
いくつかの実装形態では、方法は、1つ以上のコンピュータによって、ハッシュデータ構造に対応するデータをデータパッケージとして第1のデバイスに送信することを更に含むことができる。
【0025】
いくつかの実装形態では、第1のデバイスはメモリ記憶デバイスである。
【0026】
いくつかの実装形態では、第2のデバイスが、ハッシュデータ構造に対応するデータを第1のデバイスから読み取る。そのような実装形態では、第2のデバイスは、ハッシュデータ構造に対応するデータに基づいて第2のハッシュデータ構造を生成する一連の動作を実行することができる。
【0027】
本明細書で使用されるとき、シードは、一般に、ゲノムデータリードから特定されるか、取得されるか、又は抽出される一連の塩基コール又はヌクレオチドを指す。
【0028】
本明細書でk-merシードとも呼ばれる、k-merは、塩基コール又はヌクレオチドなどの要素の配列であり、所与のk-merに対する配列内の要素、例えば、塩基コール又はヌクレオチドの数は「k」によって定義される。
【0029】
ゲノムデータリードは、一般に、核酸シーケンサによってシーケンスされたサンプルゲノムの一部の塩基コール又はヌクレオチドに対応する、核酸シーケンサによって生成されたデータを含む。
【0030】
本明細書でシグネチャーとも呼ばれる、ゲノムシグネチャーは、ハッシュテーブル箇所、例えば、バケット、スロット、又はセルを特定するデータであるか、又はそれを含む。そのようなデータはまた、ハッシュキー、例えば、ゲノムハッシュキーとも呼ばれ得る。シグネチャーは、ゲノムデータから生成されるか、又はゲノムデータを特定する箇所を指し示す場合、ゲノムシグネチャーである。
【0031】
参照配列箇所は、参照配列、例えば、参照核酸配列の特定の部位又は部分を指す。
【0032】
ハッシュデータ構造は、データを連想的な方法で記憶しており、ハッシュ関数を使用してハッシュキーをメモリ箇所、バケット、又はセルにマッピングするデータ構造を含むことができる。
【0033】
アライメントスコアは、特定の参照配列にマッピングされるゲノムデータリード又はk-merシードが実際にその特定の参照配列箇所に対応することの信頼レベルを示すデータであるか、又はそれを含む。
【0034】
ゲノムデータは、被検体、例えば、ヒト被検体のゲノムに関連する任意のデータを含むことができる。
【0035】
親ゲノムデータは、ゲノムデータのサブセットが抽出されるゲノムデータの任意のスーパーセットを含むことができる。例えば、ゲノムデータリードは、k-merシードを抽出することができる親ゲノムの一例とすることができる。
【0036】
特定のゲノムデータに「基づく」値は、そのゲノムデータから導出される値である。
【0037】
第1のハッシュ関数は、複数のハッシュ関数が使用される場合のハッシュ関数の最初の出現を含むことができる。第1のハッシュ関数という用語の使用は、第1のハッシュ関数が、使用される任意の後続のハッシュ関数とは異なることを意味するものではないが、異なるものであってもよい。
【0038】
インデックスは、他のデータの記憶箇所を特定するために使用することができる任意のデータである。
【0039】
第2のハッシュ関数は、複数のハッシュ関数が使用される場合のハッシュ関数の後続の出現を含むことができる。第2のハッシュ関数という用語の使用は、第2のハッシュ関数が、以前に使用された関数を有する任意の前のものとは異なることを意味するものではないが、異なるものであってもよい。
【0040】
本明細書に記載の生成されたハッシュテーブル、及びそれらの使用は、いくつかの技術的利益を提供することができる。技術的利益には、従来の方法よりも速く、かつより少ないメモリ及び記憶要件を必要とする、ソフトウェアで加速されたゲノムリードマッピングアルゴリズムが含まれ得る。これらの利益は、ハッシュキーとして使用する1バイトのゲノムデータシグネチャーにゲノムリードをコード化すること、及び単一アレイハッシュテーブルを使用することに、少なくとも部分的に基づいて、達成することができる。本開示の他の利点はまた、考慮中の参照箇所の数を減らすのに役立ついくつかのフィルタリング段階によって達成される。
【0041】
別途定義されない限り、本明細書で使用されるすべての技術用語及び科学用語は、本発明が属する技術分野の当業者によって一般的に理解されるものと同じ意味を有する。本明細書に記載されるものと同様又は同等の方法及び材料を本発明の実施又は試験に使用することができるが、好適な方法及び材料が、以下に記載されている。本明細書で言及されるすべての刊行物、特許出願、特許、及び他の参考文献は、参照によりその全体が本明細書に組み込まれる。矛盾が生じる場合、本明細書が、定義を含めて優先する。加えて、材料、方法、及び実施例は、単なる例示であり、限定することを意図するものではない。
【0042】
本発明の1つ以上の実施形態の詳細が、添付の図面及び以下の発明を実施するための形態に記載されている。本発明の他の特徴及び利点は、発明を実施するための形態、図面、及び特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【0043】
【
図1】ソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを生成するためのシステムの例を示す図である。
【
図2】ソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを生成するためのプロセスの例を示すフロー図である。
【
図3】ソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを使用するためのシステムの例を示す図である。
【
図4】ソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを生成するためのプロセスの例を示すフロー図である。
【
図5】ソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを生成するためのシステムを実装するために使用することができるコンピュータシステム構成要素、及びソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを生成するためのシステムの図である。
【発明を実施するための形態】
【0044】
様々な図面における同様の参照番号及び名称は、同様の要素を示す。
【0045】
本開示は、ソフトウェアで加速されたゲノムリードマッピングのための方法、システム、及びコンピュータプログラムを対象とする。一態様では、本開示は、ソフトウェアで加速されたゲノムリードマッピングを容易にするハッシュテーブルの生成に関する。ハッシュテーブルは、ゲノムデータシグネチャーを使用してインデックス付けされた参照ゲノムを表すデータを含むことができる。次いで、生成されたハッシュテーブルを使用して、受信されたゲノムリードと参照ゲノムとの間のマッピングを決定することができる。生成されたハッシュテーブル及びその使用は、従来の方法よりも速く、かつより少ないメモリ及び記憶要件を必要とする、ソフトウェアで加速されたゲノムリードマッピングアルゴリズムを含むいくつかの技術的利益を提供する。これらの利益は、ハッシュキーとして使用する1バイトのゲノムデータシグネチャーにゲノムリードをコード化すること、及び単一アレイハッシュテーブルを使用することに、少なくとも部分的に基づいて、達成することができる。本開示の他の利点は、考慮中の参照箇所の数を減らすのに役立ついくつかのフィルタリング段階によって達成される。
【0046】
いくつかの実装形態では、本開示の態様は、参照ベースのゲノムデータ圧縮アルゴリズムの性能を改善するために使用することができる。例えば、本開示は、参照ベースのfastq圧縮内で使用することができる。ただし、本開示は、そのように限定されない。代わりに、ソフトウェアで加速されたゲノムリードマッパーは、バリアントコーラーへの入力のためのマッピング及びアライメントされたゲノムリードの生成中、又は三次分析の1つ以上の段階への入力のためのマッピング及びアライメントされたゲノムリードの生成中になど、いくつかの他の動作において使用することができる。
【0047】
参照ベースの圧縮アルゴリズムでの使用中など、いくつかの実装形態では、ソフトウェアで加速されたゲノムリードマッパーは、精度のレベルを損なうが、マッピング速度の増加に有利であるように構成することができる。しかしながら、他の実装形態では、ソフトウェアで加速されたゲノムリードマッパーは、マッピング速度を犠牲にしてより正確なマッピングを提供するように構成することができる。一般に、変数及び他のパラメータは、本明細書に記載の所与の実装形態に基づいて変更又は最適化されて、より正確な結果を提供するか、又は結果をより迅速に提示することができる。
【0048】
いくつかの実装形態では、1つ以上のフィルタリング段階を使用して、1つ以上の異なるタイプのそれぞれのフィルタを適用して、ハッシュテーブルを生成するために使用される参照ゲノムデータのサブセットを生成することができる。参照ゲノムデータのフィルタリングされたサブセットは、メモリ使用量を低減し、計算を高速化するために使用することができる。次いで、参照ゲノムデータのフィルタリングされたサブセットは、ハッシュテーブルに記憶することができる。
【0049】
ソフトウェアで加速されたゲノムリードマッピングは、ゲノムリードを受信し、次いで生成されたハッシュテーブルをクエリして、ゲノムリードの所与のk-merに対応する参照ゲノムデータ内の箇所を見つけるコンピュータを使用して達成することができる。ハッシュテーブルは、(i)ゲノムシグネチャーをハッシュキーとして記憶するために使用されるメモリ、及びゲノムシグネチャーと一致する参照配列箇所の対応するセル又はバケットを低減し、かつ(ii)単一のアレイを使用して構造化されるように、構成されているため、ハッシュテーブルは、ソフトウェアで加速されたゲノムリードマッピングを容易にする。本明細書に記載のシステム、方法、及び特徴は、生成されたハッシュテーブルに、少なくとも部分的に基づいて、1つ以上の候補アライメントを決定し、候補アライメントを処理して、所与の基準を満たすアライメントを迅速に見つけるために使用することができる。
【0050】
図1は、ソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを生成するためのシステム100の例を示す図である。システム100は、コンピュータ106、ハッシュ演算モジュール108、出現カウンタモジュール114、及びハッシュテーブル生成モジュール120を含む。コンピュータ106は、ハッシュ演算モジュール108、出現カウンタモジュール114、及びハッシュテーブル生成モジュール120にデータを提供するように、及びそれらからデータを受信するように構成されている。いくつかの実装形態では、コンピュータ106は、ハッシュ演算モジュール108、出現カウンタモジュール114、及びハッシュテーブル生成モジュール120のうちの1つ以上の処理動作をコンピュータ106上でローカルに処理することができるように、そのような1つ以上のモジュールをホストする。他の実装形態では、ハッシュ演算モジュール108、出現カウンタモジュール114、及びハッシュテーブル生成モジュール120のうちの1つ以上は、コンピュータ106に接続された1つ以上の他のコンピュータによってホストされ得る。
【0051】
ハッシュ演算モジュール108は、ゲノムデータに対応する1つ以上のハッシュ値を生成することができる。場合によっては、ゲノムデータは、k-merの形態のヌクレオチド配列を含み得る。出現カウンタモジュール114は、所与の形態のゲノムデータが、そのゲノムデータが基づく親ゲノムデータ内で出現する回数をカウントすることができる。これは、例えば、所与のk-merが、ヌクレオチドのリード配列に沿って複数の箇所に現れることがあるためである。k-merによって表される連続ヌクレオチドのストリングがヌクレオチドのリード配列内で出現する回数は、出現カウンタモジュール114によって取得され得る。次いで、ハッシュテーブル生成モジュール120は、ハッシュ演算モジュール108及び出現カウンタモジュール114によって処理されたゲノムデータに対応するハッシュテーブルを生成することができる。
図1の例は、段階Aから段階Eまでの段階において以下に説明される。
【0052】
本明細書内では、所与のk-merは、連続ヌクレオチドの配列として定義され、所与のk-merの配列中のヌクレオチドの数は「k」によって定義され、これらのヌクレオチド(又は、より一般的には塩基)は、定義済みの語彙に由来した文字からなるストリングによって表される。例えば、所与のk-merは配列「ATGCG」を表し得、記号:{A、C、G、T}は、デオキシリボ核酸(DNA)中に存在する4種類のヌクレオチド、具体的には、アデニン、シトシン、グアニン、及びチミンを表す。リボ核酸(RNA)では、チミンはウラシル(U)によって置き換えられている。
【0053】
本開示において言及されるゲノムデータは、例えば、限定としてではないが、ヌクレオチド配列、デオキシリボ核酸(DNA)配列、又はリボ核酸を含むことができる。
【0054】
図1の例の段階Aでは、ゲノムデータ102に基づく、k-merセット104は、コンピュータ106に送信される。この例では、ゲノムデータ102は、1人以上の科学者によって生物用に組み立てられたDNA配列などの参照ゲノム(本明細書では参照配列とも呼ばれ得る)を含むことができ、k-merセット104内の各k-merは、ヌクレオチド長kを有する、ゲノムデータ102内に存在する特定の配列サブセットに対応し、kは、0よりも大きい任意の正の整数である。例えば、k-merセット104のk-mer AAGT...ATは、長さkのヌクレオチドのヌクレオチド配列「AAGT...AT」を有するゲノムデータリード、又はその一部に対応する。ゲノムデータ102は、k-mer AAGT...ATの少なくとも1つのインスタンスを含み、これは、「AAGT...AT」に対応するヌクレオチドのストリングとして定義されるk-mer AAGT...ATの配列が、ゲノムデータ102に対応するヌクレオチド配列内で少なくとも1回出現することを意味する。いくつかの実装形態では、参照配列は、更なる処理を考慮してリードの圧縮性を改善するために、少なくとも部分的に、考えられた合成配列からなる。
【0055】
いくつかの実装形態では、k-merセット104内のk-merは、16ヌクレオチドのk-mer長を有することができる。しかしながら、本開示は、16ヌクレオチドのk-mer長を有するk-merを使用する実装形態に限定されない。一般に、k-merセットの所与のk-merに対して任意の数のヌクレオチドが使用され得る。いくつかの実装形態では、より短いシードは、参照ゲノム上でより大きい出現カウントを有し、より長い計算時間をもたらし得る。短いシードはまた、高感度につながり得る。k-merセット104のk-mer内のヌクレオチドの数に対応するシード長は、性能最適化などの最適化目的のために調整され得る。
【0056】
コンピュータ106は、k-merセット104を受信する。実装形態に応じて、コンピュータ106は、1つ以上の他のコンピュータと通信して、k-merセット104を受信し得る。例えば、前処理コンピュータ又は他のデバイスは、ゲノムデータ102を処理し、k-merセット104を生成し得る。次いで、前処理コンピュータ又は他のデバイスは、好適な通信ネットワークを介してコンピュータ106と通信し得る。他のデバイスの前処理コンピュータは、k-merセット104をコンピュータ106に送信し得る。いくつかの実装形態では、コンピュータ106は、前処理コンピュータ又は他のデバイスの動作を実行する。例えば、コンピュータ106は、ゲノムデータ102を受信し、ゲノムデータ102に基づいてk-merセット104を生成することができる。
【0057】
いくつかの実装形態では、コンピュータ106によって受信されるデータは、非ゲノムデータの形態である。例えば、情報をコンピュータ106によって受信することができる。次いで、情報を1つ以上の段階で処理することができる。場合によっては、情報は、ハッシュ演算モジュール108、出現カウンタモジュール114、又はハッシュテーブル生成モジュール120などの1つ以上のモジュールによって処理することができる。
【0058】
いくつかの実装形態では、コンピュータ106によって受信された情報に関連するデータが、1つ以上の処理動作を変更するために使用される。例えば、受信された情報は、ハッシュ演算モジュール108、出現カウンタモジュール114、又はハッシュテーブル生成モジュール120など、コンピュータ106の任意の動作モジュールの動作を変更するために使用され得る。例えば、コンピュータ106は、情報を受信することができる。コンピュータ106は、受信された情報から1つ以上のアイテムを抽出することができる。コンピュータ106は、抽出された1つ以上のアイテムに基づいて、受信された情報に適用される特定の処理方法を決定することができる。場合によっては、特定の処理方法は、1つ以上の処理モジュールを含み得、1つ以上の処理モジュールは、抽出された1つ以上のアイテムに基づいた特定の方法でデータを処理するために、パラメータ変更又は動作変更を用いて調整される。
【0059】
例えば、ゲノムデータに関連するハッシュテーブルを生成する際に、コンピュータ106は、ゲノムデータを受信し得る。コンピュータ106は、受信されたゲノムデータから、1つ以上のアイテム(例えば、特定の長さkiの1つ以上のk-mer)を抽出し得る。次いで、コンピュータ106は、抽出されたデータに基づいて、1つ以上のモジュールの動作方法を変更し得る。例えば、コンピュータ106は、k-mer内の塩基コール又はヌクレオチドの数を示す整数kを表す閾値を変更することによって、出現カウンタモジュール114を変更し得る。コンピュータ106によって設定された閾値を満たさないアイテムは、フィルタリングで除去され得る。
【0060】
いくつかの実装形態では、k-merセット104は、ゲノムデータ102に由来する、それぞれが長さkの、複数のk-mer核酸配列を含むことができ、これらは参照配列を含むことができる。いくつかの実装形態では、コンピュータ106は、直接接続(例えば、USB接続、USB-C接続など)を介して、又は1つ以上のネットワーク接続(例えば、LAN、WAN、イーサネット、WiFi、セルラーネットワーク、インターネットなど)を介して、k-merセット104を受信することができる。いくつかの実装形態では、コンピュータ106は、核酸シーケンシングデバイスとすることができ、核酸シーケンシングデバイスは、ゲノムデータ102を受信、取得、又はそれに別様にアクセスし、k-merセット104を生成することができる。
【0061】
したがって、いくつかの実装形態では、本開示のソフトウェアで加速されたゲノムマッピング及びアライニングは、次世代DNAシーケンシングデバイスなどのシーケンシングデバイス上に実装して、ゲノムデータリードのマッピング及びアライニングなどの二次分析動作をシーケンシングデバイス上で実行することができる。他の実装形態では、本開示のソフトウェアで加速されたゲノムデータマッピング及びアライニングは、ゲノムデータを取得し、k-merセット104を生成し、k-merセット104、又はその一部を使用して、本明細書で以下に説明される他の動作のうちの1つ以上を実行する、シーケンシングデバイス以外の別のコンピュータ上に実装することができる。
【0062】
段階Bでは、ハッシュ演算モジュール108は、k-merセット104を受信する。
図1に示す例のコンピュータ106は、ハッシュ演算モジュール108に通信可能に接続され得る。ハッシュ演算モジュール108は、k-merセット104に基づいて1つ以上の動作を実行することができる。例えば、
図1に示すように、k-merセット104の各k-merを使用して、対応するハッシュ値を生成することができる。ハッシュ値は、任意の値であり得る。
図1の例では、ハッシュ値は、0~2
64-1の値となるように決定される。
【0063】
ハッシュ演算モジュール108は、計算されたハッシュ値112を生成することができる。計算されたハッシュ値112は、受信されたk-merセット104をフィルタリングするために処理することができる。例えば、ハッシュ演算モジュール108は、計算されたハッシュ値112を使用して、
図1の例に示されるk-merセット104のサブセットを第2のk-merセット110として決定することができる。いくつかの実装形態では、第1のフィルタリング段階は、モジュロ関数を使用してk-merセット104のサブセットを決定することによって実施することができる。いくつかの実装形態では、計算されたハッシュ値112は、所定のマッピングに対応するハッシュ演算モジュール108によって生成することができる。例えば、
図1に示すように、マッピングは、以下のように定義され得る。
【0064】
【0065】
式1は、1つ以上のハッシュ値を計算するためにハッシュ演算モジュール108によって使用され得るハッシュ関数の例である。式1は、k-merセット104の所与のk-merの対応するハッシュ値へのマッピングを記述しており、この場合、ハッシュ値は0~264-1の値であり、ハッシュ値は、64ビットの符号なしの整数によって表すことができる。いくつかの実装形態では、他のマッピング又はハッシュ関数が使用され、異なるハッシュ値をもたらす。例えば、64ビットの符号なしの整数の代わりに、32ビットの符号ありの整数が使用され得る。本開示は、ハッシュ関数モジュール108によって使用されるマッピング又はハッシュ関数の形態を限定しない。場合によっては、ハッシュ関数のタイプは、コンピュータ106によって受信されたデータ又はハッシュ演算モジュール108によって受信されたデータに応じて変化し得る。
【0066】
k-merセット104を処理する際に、
図1のハッシュ演算モジュール108は、1つ以上の動作を実行することができる。いくつかの実装形態では、1つ以上の動作は、1つ以上の値を計算することを含むことができる。
図1の例では、ハッシュ演算モジュール108は、k-merセット104の各k-merのハッシュ値を計算することができる。ハッシュ演算モジュール108によって実行されるハッシュ値計算の例は、式2に示されている。
H
k-mer(GTTA...AC)=98778...789 (2)
【0067】
式2は、
図1の例、及びk-merセット104の第1のk-mer、「GTTA...AC」を対象とする。式1では、ハッシュ演算モジュール108は、ハッシュ関数H
k-mer及びk-mer GTTA...ACに基づいてハッシュ値98778...789を計算し、値98778...789は、1~2
64-1の値を表し、「GTTA...AC」は、k-merセット104のk-merによって定義されるゲノムデータリード、又はその一部を表す。ハッシュ関数H
k-merは、当業者によって理解されるように、任意の好適なハッシュ関数とすることができる。ハッシュ関数H
k-merは、式1に示されるように、k-merセット104のk-merを値範囲内の特定の値にマッピングするように構成することができる。
【0068】
ハッシュ演算モジュール108は、k-merセット104に基づいて更なる動作を実行することができる。
図1の例では、ハッシュ演算モジュール108は、k-mer GTTA...ACに対応するハッシュ値98778...789を生成することができる。ハッシュ演算モジュールは、式3に示されるように、ハッシュ値に基づいて別の値を計算することができる。
H
k-mer(GTTA...AC)modulo seedModValue=98778...789 modulo 8=0 (3)
【0069】
式3は、
図1の例のハッシュ演算モジュール108によって実行される計算を示す。k-mer GTTA...ACに対応するハッシュ値98778...789を使用して、第2の値を計算する。第2の値は、ハッシュ値98778...789に対して実行されたモジュロ演算の結果である。このモジュロ演算は、ハッシュ値98778...789及びseedModValueに基づいている。seedModValueは、事前に決定されるか、又はk-merセット104に応じてハッシュ演算モジュール108又はコンピュータ106によって決定される。
図1の例では、seedModValueは整数の8である。しかしながら、seedModValueは任意の整数であり得る。seedModValueは、最適化動作又は他の使用事例に基づいて最適化又は変更することができる。seedModValueは、実装形態に応じて任意の値であり得る。
【0070】
ハッシュ演算モジュール108は、計算されたハッシュ値112及びseedModValueに基づいて第2のk-merセット110を生成することができる。第2のk-merセット110を生成するために、任意の好適なルールセットがハッシュ演算モジュール108によって適用され得る。
図1の例では、ハッシュ演算モジュール108は、ハッシュ値98778...789を生成し、本例では8に等しいseedModValueに基づいて、ハッシュ値98778...789に対してモジュロ演算を実行することができる。モジュロ演算及び結果は、式3に示されている。結果は0である。
図1に示すハッシュ演算モジュール108の内部ルールによれば、0の結果は、ハッシュ演算モジュール108に、対応するk-mer、この場合、k-mer GTTA...ACを第2のk-merセット110に含めさせる。k-mer GTTA...ACには斜線が引かれてなく、第2のk-merセット110がk-mer GTTA...ACを含むことを示している。
【0071】
ハッシュ演算モジュール108はまた、k-merセット104に含まれる他のk-merに対してハッシュ値を計算することができる。k-merセット104のk-mer TATA...CGは、計算されたハッシュ値112のハッシュ値65432...611を計算するために使用される。上述のように、ハッシュ演算モジュール108は、seedModValueを使用してモジュロ演算を実行することができる。この場合、ハッシュ演算モジュール108は、2の値を計算することができる。ハッシュ演算モジュール108は、ハッシュ値65432...611に適用されたモジュロ演算の結果の値に基づいて、k-mer TATA...CGを第2のk-merセット110に含めないと決定することができる。
図1の例では、k-mer TATA...CGに斜線が引かれており、k-mer TATA...CGが第2のk-merセット110に含まれないことを示している。
【0072】
ハッシュ演算モジュール108は、k-merセット104の他のk-merに対して対応するハッシュ値を計算することができる。上述のように、ハッシュ演算モジュールは、k-merセット104のk-merに対する動作を実行することによって、k-merセット104のk-merをフィルタリングすることができる。
図1の例では、ハッシュ演算モジュール108は、ハッシュ値を計算し、計算されたハッシュ値に適用されたモジュロ演算の結果を計算することができる。モジュロ演算の結果に基づいて、ハッシュ演算モジュール108は、k-merセット104のk-merをフィルタリングし、第2のk-merセット110を生成することができる。いくつかの実装形態では、第2のk-merセット110など、k-merのフィルタリングされたセットは、ハッシュ演算(例えば、モジュロ8演算又は他の好適な演算)が0の計算結果をもたらしたk-merの各々を含む。すなわち、ハッシュ演算モジュール108によって演算されたときに0とは異なる結果をもたらしたハッシュ値を有するk-merの各々が、フィルタリングで除去される。第2のk-merセット110は、k-merセット104のサブセットである。しかしながら、本開示は、フィルタ動作を実行するために、ハッシュ値に対するモジュロ8演算の使用又はモジュロ演算の使用に全く限定されない。当業者によって理解されるように、様々な他のフィルタリング技術が使用され得る。
【0073】
いくつかの実装形態では、フィルタリングは、コンピュータ上で実行される様々なコンピュータプログラムを含むことができる。例えば、以下のアルゴリズム1に示されるように、コンピュータプログラムは、1つ以上のシステム変数を開始し、1つ以上のシステム変数に基づいて1つ以上の動作を実行することができる。場合によっては、フィルタリングされるアイテムを決定するために、「if」ステートメント又は他の条件付きコーディング動作を使用することができる。
【0074】
【0075】
いくつかの実装形態では、ゲノムデータから1つ以上のアイテムを抽出するために、フィルタリング技術が使用され得る。例えば、抽出モジュールは、親データストア、例えば、ゲノム配列、ゲノムデータを含むデータ構造、又は他の形態の順序付けられたデータストア内において所定の間隔でk-merを抽出することができる。いくつかの実装形態では、抽出モジュールは、配列内での第1のk-merの位置を特定することができる。次いで、抽出モジュールは、配列内での第2のk-merの位置を特定することができ、第2のk-merは、第1のk-merから所定のヌクレオチド数sだけ離れている。この場合、sは、0よりも大きい整数とすることができる。第3のk-merは、第1のk-merに基づいて第2のk-merを見つけるのに使用されたのと同じ間隔sを使用して決定され得る。この動作は、所定の終了条件が満たされるまで、例えば、所定の数のk-merが見つかるか、又は抽出モジュールが配列の最後に達するまで、継続し得る。いくつかの実装形態では、上記の例は、他の形態のデータストアをフィルタリングするために使用され得る。例えば、固定間隔を使用して、k-merセット104から1つ以上の要素を抽出し、それによってk-merセット104をフィルタリングすることができる。抽出モジュールは、k-merセット104などのデータ構造内での第1のk-merの位置を特定し、次いで、k-merセット104内での第2のk-merの位置を特定することができ、第2のk-merは第1のk-merから所定の数のインデックスiだけ離れている。インデックスのないデータストアでは、隣接する抽出された要素の間の固定された距離を示すために、カウント又は他の値が使用され得る。
【0076】
いくつかの実装形態では、順序付けられたデータセット内のアイテムを、所定の間隔を使用するフィルタリング方法の1つ以上の条件に基づいて選択することができる。例えば、上述のように、順序付けられたデータセットを、順序付けられたデータセットから抽出された1つ以上のアイテムに基づいてフィルタリングすることができる。順序付けられたデータセットから抽出された1つ以上のアイテムの隣接するアイテムは、所定の間隔だけ互いに離れ得る。いくつかの実装形態では、第1の値は、順序付けられたデータセットの1つ以上のアイテムを所定の間隔に基づいて選択するように選択される。場合によっては、第1の値は、2つ以上の入力データセットに対して同様のフィルタリングされたセットを生成するために、少なくとも2つ以上の入力データセットにわたって同様の様式又は同等の仕様で選択される。
【0077】
いくつかの実装形態では、
図1のシステム100などのシステムの性能を改善するために、フィルタリングのハッシュ方法が使用される。例えば、ハッシュ動作モジュール108によって、ハッシュ関数を参照ゲノムのk-mer及びゲノムリードのk-merに適用することができる。一定のハッシュ関数及びモジュロ演算に基づいてk-merを参照ゲノム及びゲノムリードの両方にわたってフィルタリングすることにより、ハッシュ演算モジュール108によって、参照ゲノム及びゲノムリードから同じタイプのk-merを選択することができる。フィルタリングのハッシュ方法を使用することにより、メモリ使用量及び処理時間は、インデックス付けされる必要があるk-merセットをフィルタリングすること、フィルタリング動作内でk-merのサブセットのみをクエリすること、及び上記の参照ゲノムとゲノムリードとの間の同様の選択に基づいて低減させることができる。
【0078】
段階Cでは、出現カウンタモジュール114は、第2のk-merセット110を使用して、第2のフィルタ段階をk-merセット104に適用することができる。いくつかの実装形態では、出現カウンタモジュール114は、第2のk-merセット110の1つ以上のk-merに対してゲノム出現数118を計算することによって、第2のフィルタリング段階を実施することができる。各k-merのゲノム出現数118は、例えば、特定のk-merが参照ゲノム(参照配列とも呼ばれる)に現れる回数を含むことができる。いくつかの実装形態では、出現カウンタモジュール114は、各k-merの出現数を閾値と比較することができる。
図1の例では、閾値は20として定義される。他の実装形態では、閾値は、任意の適用可能な値であり得る。
【0079】
第2のフィルタリング段階は、参照配列内でのk-merの出現数を決定するために本明細書に記載されているが、本開示の第2のフィルタリング段階は、そのように限定されない。代わりに、第2のフィルタリング段階には、他のフィルタもまた使用することができる。更に、いくつかの実装形態では、本開示は、0個のフィルタリング段階、1つのフィルタリング段階、又は2つ以上のフィルタリング段階を使用し得る。フィルタリング段階が本開示の限定的な特徴となることはなく、フィルタリング段階は、特定の実装形態のためのハッシュテーブル124を生成する際の使用に適した第3のk-merセット116を達成するために、ソフトウェアで加速されたゲノムデータマッピングアルゴリズムの設計中にカスタマイズ可能である。
【0080】
図1の例では、出現カウンタモジュール114は、k-mer GTTA...ACが参照配列などのゲノムデータ102内で15回出現すると判定する。k-mer TATA...CGは、k-mer TATA...CGが第1のフィルタリング段階中にモジュロ演算に基づいてフィルタリングで除去されているため、計算されない。k-mer CCGA...GTは、ゲノムデータ102内で23回出現し、k-mer AAGT...ATは、ゲノムデータ102内で11回出現する。
【0081】
ゲノム出現数118に基づいて、出現カウンタモジュール114は、第3のk-merセット116に含める、第2のk-merセット110の各k-merシードを決定することができる。ゲノム出現数118の各エントリは、閾値MaxSeedOccurrenceと比較される。MaxSeedOccurrence値は、20などの整数値を有することができる。ゲノム出現数118のアイテムが閾値以上である場合、対応するk-merは、第3のk-merセット116に含められない。ゲノム出現数118のアイテムが閾値未満である場合、対応するk-merは、第3のk-merセット116に含められる。k-mer GTTA...AC及びk-mer AAGT...ATは、対応する出現数15及び11がどちらも閾値MaxSeedOccurrenceを満たすので、両方とも第3のk-merセット116に含められる。第2のk-merセット110の示されていない他のk-merもまた、第3のk-merセット116に含められ得る。k-mer CCGA...GTは、対応する出現数23が閾値MaxSeedOccurrenceを満たさないので、第3のk-merセット116に含められない。
【0082】
上述のように、ハッシュ演算モジュール108及び出現カウンタモジュール114によって実行される動作の少なくとも一部は、参照配列データなどの受信されたゲノムデータ102に適用されるそれぞれのフィルタリング段階として説明することができる。いくつかの実装形態では、フィルタリングは、例えば、メモリ使用量を減少させ、受信されたデータに対応する動作全体の計算時間を減少させることを含むいくつかの理由のために使用することができる。いくつかの実装形態では、他の形態のフィルタリングが、受信されたデータのサブセットを生成するために使用され得る。例えば、ランダムアルゴリズムなどのアルゴリズムが、受信されたデータで使用されているインデックスに対応するインデックスのリストを生成することができる。インデックスがランダムアルゴリズムの出力に含まれる場合、受信されたデータの対応する値は、データのサブセットに含めるか、又は含めないことができる。このようにして、受信されたデータのサブセットを生成することができる。当業者には明らかであるように、乱数生成を伴う他の方法も使用され得る。
【0083】
いくつかの実装形態では、フィルタリングは、データの関連する特性に基づいて、受信されたゲノムデータ102をフィルタリングするために使用することができる。例えば、
図1に示すように、第2のk-merセット110は、ゲノムデータ102内での各k-merの出現に基づいて、出現カウンタモジュール114によってフィルタリングすることができる。いくつかの実装形態では、出現カウントの高いk-merは、品質スコアの低いアライメントをもたらす候補アライメント位置を生成する可能性を高くする傾向があるため、これは妥当なフィルタであり得る。本明細書の動機のうちの1つは、良好な候補アライメントを生成することなので、
図1の例では20回を超える出現として定義されている、高い出現数を有するk-merは、ハッシュテーブルの生成に含められる生成されたサブセットには含まれない。
【0084】
図1の段階Dでは、ハッシュテーブル生成モジュール120は、第3のk-merセット116に基づいてハッシュテーブルを生成することができる。
図1の例では、ハッシュテーブル生成モジュール120は、シグネチャー値及び箇所値を含むデータブロックからなる1次元アレイとして表されるハッシュテーブル124を生成する。ハッシュテーブル生成モジュール120は、ハッシュ演算モジュール108及び発生カウンタモジュール114のフィルタリング工程を通過したk-merのみをハッシュテーブル124に記録する。例えば、k-mer GTTA...AC及びk-mer AAGT...ATはハッシュテーブル124に記録されるが、k-mer TATA...CG及びk-mer CCGA...GTは記録されない。
【0085】
ハッシュテーブル124に記録されたk-merに対応する値は、ゲノムデータ102内での所与のk-merの位置を含むことができる。いくつかの実装形態では、ゲノムデータ内でのk-merの最初の出現のみが、所与のk-merに対するハッシュテーブルの値データセクションに含められる。次いで、そのような実装形態では、他の位置は破棄される。k-mer GTTA...ACに対応して生成された値の概念例を、アイテム126に示す。参照126bは、第1の出現126aにおいてk-mer GTTA...ACと対応することが示されている。
図1の例では、参照126bは、ゲノムデータ102に対応する。参照126bの示された部分は、k-mer GTTA...ACに対応する配列、具体的には、「GTTA...AC」によって表される配列内のヌクレオチドの配列を含む。配列「GTTA...AC」は参照126b上の他の位置でも出現し得るが、配列「GTTA...AC」の最初の出現のみが、ハッシュテーブル124内でのk-mer GTTA...ACに対応する値として記憶される。
【0086】
いくつかの実装形態では、アイテムをハッシュテーブル124に挿入することは、コンピュータ上で実行される様々なコンピュータプログラムを含むことができる。例えば、以下のアルゴリズム2に示されるように、コンピュータプログラムは、1つ以上のシステム変数を開始し、1つ以上のシステム変数に基づいて1つ以上の動作を実行することができる。場合によっては、フィルタリングされるアイテムを決定するために、「if」ステートメント又は他の条件付きコーディング動作を使用することができる。
【0087】
【0088】
k-mer GTTA...ACに対応するシグネチャーは、ハッシュ関数を使用して計算される。
図1の例では、ハッシュ関数は、所与のk-merを0~255の範囲にマッピングする。アイテム128に示すように、k-mer GTTA...ACは、ハッシュ関数H_sigの入力として使用される。ハッシュテーブル生成モジュール120は、ハッシュ関数H_sigを使用して、k-mer値を値248にマッピングする。次いで、値248は、ハッシュテーブル124内でのk-mer GTTA...ACに対応するキーとして使用される。
【0089】
k-mer値を0~255の範囲の数にマッピングすることにより、ハッシュテーブル生成モジュール120は、ハッシュテーブル124に記憶されるデータの量を減らすことができる。16ヌクレオチド長のk-merの場合、対応するデータをデータ構造内で表現するために、32ビットが必要とされ得る。k-mer値を別の値、例えば、アイテム内に示されているような0~255の値にマッピングすることにより、必要とされる空間は減少する。例えば、k-mer GTTA...ACが16個のヌクレオチドを含み、かつマッピング動作から結果として得られるシグネチャーが、8ビットで表現可能な数248である場合、ハッシュテーブル124内に記憶されるデータのメモリフットプリントは、4分の1に低減される。
【0090】
いくつかの実装形態では、対応するキーを小さくしてハッシュテーブルサイズを低減するために、他の方法を使用することができる。例えば、ハッシュ関数を使用して受信データの所与の値をマッピングする代わりに、値の下×桁を使用して、データ構造内の表現可能な箇所を表すことができる。ハッシュテーブルのデータを圧縮する他の同様の方法は、当業者には明らかであろう。
【0091】
いくつかの実装形態では、ハッシュテーブル124は、指定された長さのアレイとすることができる。例えば、ハッシュテーブル124は、N個の連続セルを含む単一のアレイを含むことができる。ハッシュテーブル124はまた、衝突解決のための線形探索技術を使用することができる。いくつかの実装形態では、ハッシュテーブル124のアレイ構成に対応する構成は、たった一度のキャッシュミス及び他の同様の方法よりも改善された性能をもたらすことができる。ハッシュテーブル124の性能を改善することにより、システム300など、リードを参照ゲノムにマッピングするためのシステムは、システムが、他のマッピング方法と比較してより高い精度及びより短い時間でマッピング結果を生成することができるように、改善することができる。
【0092】
k-mer GTTA...ACに対応するインデックスは、ハッシュ関数を使用して計算することができる。
図1の例では、ハッシュ関数H_tabが使用され、H_tabは、シグネチャーを生成するために使用されるH_sigハッシュ関数と同一ではない。いくつかの実装形態では、H_tabハッシュ関数はまた、k-merを入力として使用することができるが、異なる範囲の値に出力を生成することができる。H_tabハッシュ関数によって出力される値の範囲は、ハッシュテーブル124内で利用可能なインデックスの数に対応することができる。いくつかの実装形態では、ハッシュテーブル124は、インデックス付けされ得る2
28個程度のセルを含むことができる。アイテム130に示すように、H_tabハッシュ関数は、k-mer GTTA...ACに対して演算し、ハッシュテーブル124内でのインデックスに対応する268435456の値を出力することができる。アイテム126及び128にそれぞれ示されている値及びシグネチャーは、ハッシュテーブル124内のインデックス箇所268435456に記憶することができる。
【0093】
ハッシュテーブル内のセルをクエリするとき、特定のk-merを保持するセルを特定するために、セルのシグネチャーが使用され得る。特定のシグネチャーを有するセルが見つかると、関連する値、インデックス、又は他のパラメータが返され得る。いくつかの実装形態では、複数の異なるk-merが、同じシグネチャーに対応し得る。例えば、ハッシュテーブル124は、第1のシグネチャーに対応する第1のk-merと、第2のシグネチャーに対応する第2のk-merとを含み得、第1のシグネチャー及び第2のシグネチャーを表す値が同等である。そのような実装形態では、第1のk-merの第1のシグネチャー及び対応する情報を見つけるためにハッシュテーブルをクエリすると、ハッシュテーブル124が第2のk-merに関連する情報を出力することがあり得る。
【0094】
ハッシュテーブル124は、低いメモリ使用量及び高速なクエリのために設計することができる。例えば、
図1のハッシュテーブル124は、キー値対のリストを記憶するように設計され、キーは、k-merを特定するために使用されるものであり、値は、ゲノムデータ102内でのk-mer位置である。いくつかの実装形態では、k-merごとにゲノムデータ102内での1つの位置が記憶される。いくつかの実装形態では、他の位置が記憶される。例えば、ゲノムデータ102内での所与のk-merの1つおきの位置、例えば、奇数番目の位置などを、所与のk-merに対応するハッシュテーブルに記憶することができる。
【0095】
いくつかの実装形態では、ハッシュテーブル124は、段階Eで将来の使用のためにコンピュータ106のメモリ内に記憶することができる。例えば、ハッシュテーブル124は、
図3に示されるような候補アライメント箇所及び評価の用途に使用され得る。他の実装形態では、ハッシュテーブル124は、段階Eにおいて、コンピュータ106によって、コンピュータ106に通信可能に接続されたデバイスに送信することができる。そのようなデバイスは、1つ以上の直接接続を介して、又はインターネット経由でなどの1つ以上のネットワーク接続を介してコンピュータ106に通信可能に接続することができる。いくつかの実装形態では、ハッシュテーブル124は、コンピュータ106によって生成し、段階Eで、サムドライブ、ハードドライブ、又は他の形態の電子データ記憶などのデータ記憶エンティティ内に記憶することができる。場合によっては、データ記憶エンティティは、ハッシュテーブル124をクエリ又は編集することができるプロセッサに接続されている。
【0096】
いくつかの実装形態では、コンピュータ106は、ハッシュテーブル124に関連する他のデータを別のプロセス又はデバイスに送信することができる。例えば、ハッシュテーブル124を送信する代わりに、コンピュータ106は、計算システム、アルゴリズムなどを、別のプロセス又はデバイスに送信することができる。いくつかの実装形態では、コンピュータ106は、ハッシュテーブル124、又はハッシュテーブル124に関連するデータ、を含むデータをメモリデバイス上に記憶することができ、このメモリデバイスは、ハッシュテーブル124からデータを読み取るために、又はハッシュテーブル124に関連するデータに基づいてハッシュテーブル124と同様のハッシュテーブルを生成するために使用され得る。例えば、コンピュータ106は、ハッシュ演算モジュール108、出現カウンタモジュール114、又はハッシュテーブル生成モジュール120などの1つ以上のモジュールに関連するデータを別のプロセス又はデバイスに送信することができる。1つ以上のモジュールに関連するデータは、1つ以上のモジュールに関連するデータに基づいて1つ以上の他のハッシュテーブルを生成するために、別のシステム又はシステム100によって使用され得る。
【0097】
いくつかの実装形態では、コンピュータ106は、ハッシュテーブル124を別のコンピュータ上にインストールするためのソフトウェア命令と、ゲノムデータ102と、を含むハッシュテーブルインストールパッケージを生成することができる。他の実装形態では、コンピュータ106は、受信側のコンピュータが既にゲノムデータのコピーを有する場合があるので、ソフトウェア命令のみを提供することがある。いくつかの実装形態では、ハッシュテーブルインストールパッケージは、実行されると、
図2のプロセス200によって記載される動作を実行するソフトウェア命令を含むことができる。他のコンピュータは、ハッシュテーブルインストールパッケージを受信し、ハッシュテーブルインストールパッケージを実行し、ハッシュテーブル124をインストールすることができる。次いで、他のコンピュータは、
図3及び
図4に関して本明細書に記載されるプロセスを使用して、ソフトウェアで加速されたゲノムリードマッピングを実行することができる。
【0098】
いくつかの実装形態では、ハッシュテーブル124は、オープンアドレッシングを使用することができる。例えば、ハッシュ衝突は、標的セルが見つかるか、又は未使用のセルが見つかるまで、ハッシュテーブル124のアレイ内の代替箇所を探索することによって解決することができる。セルは、データを記憶することができるハッシュテーブル124内の箇所であり得る。いくつかの実装形態では、線形プロービング、又は二次プロービング、ダブルハッシングプログラムなどの他の形態のプロービングを使用して、所与のk-merに対応するデータを記憶するためのインデックスを決定することができる。いくつかの実装形態では、キャッシュ局所性の改善のために線形プロービングを使用することができ、線形プロービングを利用しない実装形態よりも高い性能になり得る。
図1の例では、キー及び値の両方がハッシュテーブル124のアレイに一緒に記憶される。キー及び値を一緒に記憶することにより、キャッシュ局所性を更に高めることができる。
【0099】
いくつかの実装形態では、プロービングの形態は、新しいインデックスを生成するために使用することができる。例えば、線形プロービングを使用する実装形態では、第1のk-merがハッシュ関数H_tabに基づいて特定のインデックスにマッピングされ、そのインデックスが、第1のk-merに対してハッシュ関数H_sigによって計算されたシグネチャーと同じシグネチャーを有する占有されたセルを含む場合、新しいインデックスが計算され得る。線形プロービングでは、所与のインデックスでのシグネチャー値が、第1のk-merに対するH_sig演算の出力に対応するシグネチャー値と等しくなくなるまで、インデックス値を1ずつ増加させることができる。当然のことながら、任意の他の好適なプロービングが、所与の実装形態で使用され得る。
【0100】
いくつかの実装形態では、ハッシュテーブル124は、所定のメモリサイズのセルを含むことができる。例えば、ハッシュテーブル124は、5バイトのメモリを含むメモリセルを含むことができる。いくつかの実装形態では、アイテム128及びアイテム126にそれぞれ示されるように、1バイトがシグネチャー値に充てられ、4バイトが箇所値に充てられる。しかしながら、実装形態に応じて他のメモリレイアウトを使用することができる。
【0101】
いくつかの実装形態では、シグネチャーを生成し、ハッシュテーブル124に記憶することができる。例えば、k-mer GTTA...ACなどの所与のk-merに基づくシグネチャーを生成し、ハッシュテーブル124に記憶することができる。いくつかの実装形態では、生成されたシグネチャーは、k-mer自体のバイナリ表現よりもデータ使用量に関して小さくなることができる。このようにして、メモリ使用量は更に低減し得、性能は向上し得る。
図1の例では、k-mer GTTA...ACに対応するシグネチャーは、アイテム128に示されるようにハッシュ関数を使用して生成される。この場合、ハッシュ関数H_sigが使用される。
【0102】
いくつかの実装形態では、ハッシュテーブルの他の形態が、ハッシュテーブル生成モジュール120によって生成される。例えば、単一のアレイとして表される1次元ベクトルの代わりに、ハッシュテーブル生成モジュール120は、複数のアレイを使用して多次元ベクトルを生成することができる。場合によっては、ハッシュテーブル生成モジュール120によって生成されるハッシュテーブルの形態は、
図1の例ではk-merセット104である、受信されたデータに基づいて決定することができる。例えば、ハッシュテーブル生成モジュール120は、ハッシュテーブルの形態を、特定の特性を有する1次元アレイから、それぞれ異なる特性を有する多次元ベクトル、テーブル、1次元アレイ、又はハッシュ化されてインデックス付けされたデータベースの別の形態に変更することができる。しかしながら、単一のアレイとして表される1次元ベクトルを使用する実装形態は、ハッシュクエリをたった一度のキャッシュミスだけで解決することができるような特定の技術的利益を提供する。
【0103】
いくつかの実装形態では、コンピュータ106は、ハッシュ演算モジュール108、出現カウンタモジュール114、及びハッシュテーブル生成モジュール120に起因するアクションを実行するように構成することができる。他の実装形態では、ハッシュ演算モジュール108、出現カウンタモジュール114、及びハッシュテーブル生成モジュール120のうちの1つ以上は、コンピュータ106に通信可能に接続された1つ以上のデバイス上で実行することができる。いくつかの実装形態では、コンピュータ106に通信可能に接続された1つ以上のデバイスは、他のコンピュータ、サーバ、核酸シーケンサ、又は他のデバイスを含むことができる。
【0104】
いくつかの実装形態では、
図1の例に示されるような処理工程の前又は後に1つ以上の処理工程を実行することができる。例えば、k-merセット104は、コンピュータ106によって受信された後、ハッシュ演算モジュール108の動作が起こる前に、k-merセット104の形式を変更するために前処理され得る。
【0105】
いくつかの実装形態では、
図1の例に示される動作のうちの1つ以上は、本明細書の範囲から逸脱することなく除去され得る。例えば、場合によっては、ハッシュ演算モジュール108は、出現カウンタモジュール114によっていかなる動作も実行されることなく、出力データをハッシュテーブル生成モジュール120に直接送信することができる。他の様々な修正が、当業者によって考慮され得る。
【0106】
別の例として、いくつかの実装形態では、システム100は、完全な異なるk-merセット110、116の連続的な生成なしに実装することができる。代わりに、ハッシュ演算モジュール108、出現カウンタモジュール114、及びハッシュテーブル生成モジュール120のプロセスは、パイプライン化された様式で実装することができる。例えば、ハッシュ演算モジュール108は、k-mer GTTA...ACに対応するハッシュ値98778...789を計算し、ハッシュ値98778...789のモジュロseedModValueの結果を計算することによって第1のフィルタリング段階を実行することができる。モジュロ演算の結果が0である場合、出現カウンタモジュール114は、k-mer GTTA...ACを直接受信し、k-mer GTTA...ACに対応するゲノム出現数を決定し、k-mer GTTA...ACに対応するゲノム出現数に基づいて第2のフィルタ段階を実行することができる。ハッシュテーブル生成モジュール120は、同様に、k-mer GTTA...ACが出現カウンタモジュール114の第2のフィルタリング段階を通過すると、本明細書に記載されるように、k-mer GTTA...ACを受信し、その動作を実行することができる。したがって、いくつかの実装形態は、k-merデータなどの受信データの別個のセットを生成する必要はない。代わりに、本開示のモジュールは、パイプライン化された様式で動作するように構成することができ、前の処理モジュールの出力が生成された後に、後続の処理モジュールが前の処理モジュールの出力に対して演算する。このパイプライン化された動作は、ソフトウェアで加速されたゲノムデータマッピングアルゴリズムのより速い実行をもたらすことができる。
【0107】
図2は、ソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを生成するためのプロセス200の例を示すフロー図である。プロセス200は、1つ以上の電子システム、例えば、
図1のシステム100によって実行することができる。
【0108】
システム100は、1つ以上のコンピュータによって、ゲノムデータを受信して、プロセス200の実行を開始することができ、ゲノムデータは親ゲノムデータに由来する(202)。いくつかの実装形態では、ゲノムデータは、1つ以上のk-merにパースされる。k-merは、1つ以上のフィールドを含むデータ構造とすることができ、各フィールドは、k個の核酸ヌクレオチド又は塩基のうちの1つ以上を表すことができる。
【0109】
プロセス200は、1つ以上のコンピュータによって、ゲノムデータに基づいて第1の値のセットを生成することを含む(204)。いくつかの実装形態では、第1の値のセットは、ハッシュ値、ハッシュ関数、又はその両方に基づく。例えば、第1の値のセットは、ゲノムデータの第1のk-merに基づく第1の値を含むことができる。第1の値は、ハッシュ値に対して演算するモジュロ演算子の結果とすることができ、ハッシュ値は、ハッシュ関数によってゲノムデータの第1のk-merから生成することができる。いくつかの実装形態では、第1の値のセットを生成するために、他の動作又は方法が使用され得る。例えば、第1の値のセットは、ゲノムデータの所与のk-merの出現カウントを含むことができる。
【0110】
プロセス200は、1つ以上のコンピュータによって、第1の値のセットに基づいてゲノムデータのサブセットを生成することを含む(206)。例えば、第1の値のセットは、第1の数のk-merを含むゲノムデータをフィルタリングしてゲノムデータのサブセットを生成するために使用されるフィルタリングデータの形態とすることができ、ゲノムデータのサブセットは、第1の値のセットによって通知されるフィルタリングに基づいて、より少ないk-merを含む。
【0111】
プロセス200は、1つ以上のコンピュータによって、ゲノムデータのサブセットの各アイテムのためのシグネチャーを計算することを含み、シグネチャーは、第1のハッシュ関数に基づいて計算される(208)。いくつかの実装形態では、ハッシュ関数は、事前に決定することができる。次いで、事前に決定したハッシュ関数を使用して、ゲノムデータのサブセットの所与のアイテムに基づいてシグネチャーを生成することができる。いくつかの実装形態では、シグネチャーは、ゲノムシグネチャーである。いくつかの実装形態では、シグネチャーは、所与のk-merに関連するデータと共に記憶され、
図1に示されるように、所与のk-merに関連するデータを所与のk-merに対応するデータとして特定するために使用される。
【0112】
プロセス200は、1つ以上のコンピュータによって、ゲノムデータのサブセットの各アイテムのための第1の属性を計算することを含み、第1の属性は、ゲノムデータの配列内でのゲノムデータの所与のアイテムの位置を含む(210)。この文脈では、アイテムは、k-merシードを含むことができる。いくつかの実装形態では、第1の属性は、配列内でのゲノムデータの所与のアイテムの第1の出現のみを含む。例えば、ゲノムデータの所与のアイテムは、配列内に1回以上出現し得る。ハッシュテーブルなどのデータ構造にゲノムデータを記憶するのに必要とされるメモリの量を減らすために、システム100など、プロセス200を実装するシステムは、第1の出現のみを記憶し、所与のアイテムの後続の出現は記憶しないことができる。いくつかの実装形態では、ゲノムデータ表現は、所与の方向にコンピュータによってパースされる。所与の方向は、どの出現が「第1の」出現として選択されるかを決定する。
【0113】
プロセス200は、1つ以上のコンピュータによって、ゲノムデータのサブセットの各アイテムのためのインデックスを計算することを含み、インデックスは、第2のハッシュ関数に基づいて計算される(212)。いくつかの実装形態では、第2のハッシュ関数は、システム100によって事前に決定される。いくつかの実装形態では、第2のハッシュ関数は、ハッシュテーブル124などのハッシュテーブル内での所与のk-merに対応するデータの位置を特定するためのインデックスを生成するために使用される。インデックスは、ハッシュテーブル124に関連付けられたメモリ内での特定の箇所を指し示すことができる。
【0114】
プロセス200は、1つ以上のコンピュータによって、ゲノムデータのサブセットの各アイテムのためのインデックスに基づいてゲノムデータのサブセットの各アイテムのためのシグネチャー及び第1の属性をハッシュデータ構造内に記憶することを含む(214)。例えば、
図1に示すように、システム100は、アイテム128に示されるようなk-mer GTTA...ACのシグネチャー、及びアイテム126に示されるようなk-mer GTTA...ACに対応する値を記憶することができる。いくつかの実装形態では、ハッシュテーブル124は、単一のアレイの単一の次元に沿って要素内にシグネチャー及び値を記憶する単一のアレイである。いくつかの実装形態では、ハッシュテーブル124内で使用されるシグネチャーは、単一のバイトとして記憶され、シグネチャーに関連付けられたk-merの箇所など、第1の属性として記憶される値は、4バイトのメモリユニットとして記憶される。いくつかの実装形態では、ゲノムデータのサブセットの所与のk-merは、ゲノムデータのサブセットの各アイテムがハッシュテーブル124のセル内で5バイトのメモリを占めるように、5バイトのメモリユニットでハッシュテーブル124内に記憶される。
【0115】
図3は、ソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを使用するためのシステム300の例を示す図である。システム300は、コンピュータ306、この例では、ハッシュ演算モジュール308及び出現カウンタモジュール310を含む、フィルタモジュール307、候補生成モジュール316、ソーティングモジュール322、並びにスコアリング及び出力モジュール326を含む。いくつかの実装形態では、
図1のコンピュータ106は、コンピュータ306に通信可能に接続されている。いくつかの実装形態では、コンピュータ306は、コンピュータ106によって実行されるプロセスに基づいて、ハッシュテーブル124又は関連データを取得する。いくつかの実装形態では、コンピュータ306及びコンピュータ106は、同じデバイスを指す。いくつかの実装形態では、コンピュータ106、コンピュータ306のどちらか、又はその両方を核酸シーケンサとすることができる。
【0116】
図3の例では、ゲノムデータリード302は、核酸配列リードである。コンピュータ306は、ゲノムデータリード302を受信し、受信されたゲノムデータリード302を、
図1及び
図2を参照して説明されたシステム、プロセス、又はその両方のうちの1つ以上を使用して生成されたハッシュテーブル内に記憶された参照ゲノムにマッピングすることができる。例えば、
図1で生成されたハッシュテーブル124は、参照ゲノムを記憶するために使用され得る。次いで、後続のゲノムデータのリードは、
図3又は
図4に示されるようなプロセスを使用して、ハッシュテーブル124の参照ゲノムにマッピングされ得る。
【0117】
図3の段階Aでは、コンピュータ306は、ゲノムデータリード302に基づいて生成されたk-merセット304を取得することができる。
図1と同様に、k-merセット304は、ゲノムデータリード302内で少なくとも1回表現される1つ以上のヌクレオチド配列を含む。コンピュータ306は、処理のためにk-merセット304を受信することができる。
図3の例では、k-merセット304は、ゲノムデータリード302のリード内で特定されたk-merを表すことができる。ゲノムデータリード302は、
図1で生成されたハッシュテーブル124などのハッシュテーブルを使用して、参照ゲノムにマッピングすることができる。
【0118】
図3の段階Bでは、ハッシュ演算モジュール308及び出現カウンタモジュール310は、
図1のハッシュ演算モジュール108及び出現カウンタモジュール114を参照して説明した動作と同様の動作を実行することができる。例えば、ハッシュ演算モジュール308及び出現カウンタモジュール310は、k-merセット304に対してフィルタリングを実行するが、ハッシュ演算モジュール108及び出現カウンタモジュール114は、k-merセット104に対してフィルタリングを実行する。本明細書内で論じられるとき、ゲノムデータが詳細に説明されているが、他の形態の受信データが、コンピュータ106及びコンピュータ306などのエンティティによって受信され得る。他の形態の受信データは、関連するモジュールによって同様に処理することができる。処理工程は、他の形態の受信データに基づいて変更され得る。コンピュータ306又はコンピュータ106は、論じられるように、コンピュータ306又はコンピュータ106が受信するデータの形態、タイプ、又は値に応じて動作を変更し得る。
【0119】
いくつかの実装形態では、他の形態のフィルタリングを使用することができる。例えば、ハッシュ演算モジュール308及び出現カウンタモジュール310の両方をk-merセット304に対して動作させる代わりに、ハッシュ演算モジュール308は、ハッシュ値を生成し、このハッシュ値に基づいて、ここでは第2のk-merセット314と呼ばれるk-merセット304のサブセットを決定する単独のフィルタプロセスを実行し得る。場合によっては、ハッシュ演算モジュール308又は出現カウンタモジュール310の代わりに、又はそれに加えて、別の形態のフィルタリングが使用される。
【0120】
いくつかの実装形態では、フィルタリングは、コンピュータ上で実行される様々なコンピュータプログラムを含むことができる。例えば、以下のアルゴリズム3に示されるように、コンピュータプログラムは、1つ以上のシステム変数を開始し、1つ以上のシステム変数に基づいて1つ以上の動作を実行することができる。場合によっては、フィルタリングされるアイテムを決定するために、「if」ステートメント又は他の条件付きコーディング動作を使用することができる。
【0121】
【0122】
上述のフィルタリングプロセスと同様に、1つ以上のハッシュ値、及びk-merセット304の各k-merがゲノムデータリード302内に出現する出現数を表す1つ以上の値を計算するために、1つ以上のk-merを含むk-merセット304を使用することができる。ハッシュ値は、所与のk-merのハッシュ値に基づいて、ハッシュ演算モジュール308が、システム300内の更なるプロセスにそのk-merを含めるか、又はそのk-merを含めないように、ハッシュ演算モジュール308によって生成及び処理することができる。出現は、所与のk-merの出現数に基づいて、出現カウンタモジュール310が、システム300内の更なるプロセスにそのk-merを含めるか、又はそのk-merを含めないように、出現カウンタモジュール310によって生成及び処理される。出現カウンタモジュール310によって生成される出現値は、所与のk-mer、すなわち、k-merのヌクレオチド配列が、ゲノムデータリード302のより大きな配列内に現れる回数とすることができる。
【0123】
いくつかの実装形態では、ハッシュ演算モジュール308は、
図1を参照して論じられたモジュロ演算と同様のモジュロ演算を使用することができる。ハッシュ演算モジュール308は、所与のハッシュ値のモジュロseedModValueを計算し得る。場合によっては、seedModValueは、8などの整数に等しい。本明細書は、いかなる特定の数にも限定されない。seedModValueの値は、最適化動作又は他の様々なパラメータに基づいて変更され得る。
【0124】
いくつかの実装形態では、本明細書で論じられる1つ以上の変数の特定の値範囲は、他の可能な値範囲よりも有利であり得る。例えば、MaxSeedOccurrenceは、より多くのk-merがハッシュテーブル124などの所与のハッシュテーブル内にインデックス付けされることを可能にするために、増加させられ得る。しかしながら、MaxSeedOccurrenceを増加させることは、ハッシュテーブル124のメモリ使用量及びサイズを潜在的に増加させる可能性があり、これは、処理時間をある程度増加させ得る。非常に低い値は、ハッシュテーブルに基づいてリードと一致するデータポイントがより少なくなる、より小さなハッシュテーブルをもたらし得、それによって、ハッシュテーブルに基づいて得られた結果の精度を低下させる可能性がある。様々な他のトレードオフ及び効果は、1つ以上の関連する変数に依存し得る。例えば、所与のk-mer若しくはシードの長さを示すシード長、所与のリードの長さを示すリード長、使用される特定の参照ゲノム、ハッシュテーブル内に記憶された位置の数、又は関連する変数を含む1つ以上の変数が、処理状態、ユーザ選好、性能、又は他の条件に基づいて変更され得る。
【0125】
図1及び
図3の例で使用されるseedModValueを参照して、いくつかの実装形態では、seedModValueに関連した値が低減されて、結果として得られるフィルタリングされたk-mer又は他のアイテムのセットのサイズを増加させ得る。例えば、極端な場合、seedModValueは、1の値に低減することができ、この場合、本明細書で論じられるモジュロ演算は0に等しくなる。所与のk-merがフィルタリングされたセットに含められると決定する値が0である実装形態では、1のモジュロ値は、k-mer又は他のアイテムのセット全体が最終のフィルタリングされたセットとして使用されることを意味する。いくつかの実装形態では、より大きい数が、seedModValueに使用され得る。例えば、極端な場合、seedModValueは、100の値に増加させることができる。高いseedModValue値で結果として得られるフィルタリング動作は、より少ない数のアイテムを最終のフィルタリング結果に残す。場合によっては、これは、より多くのマッピングされていないリードをもたらす可能性がある。約100ヌクレオチドのリード長の場合、100を超えるseedModValueの値は、マッピングされていないリードが多くなりすぎる原因となる可能性があり、したがって、一般に、効果的な処理をもたらさない。しかしながら、1000ヌクレオチド程度の、より長いリードの場合、より高い値のseedModValueは、潜在的に、より有利であり得る。
【0126】
MaxSeedOccurrence及びseedModValueはどちらもハッシュテーブルサイズに直接影響を与える可能性がある。所与のハッシュテーブルのメモリ使用量は、フィルタリング後に保持されたシード又はk-mersの数に、ハッシュテーブル内の各セルのサイズと所与の量の値に対して十分なセルを生成するために使用される負荷係数との両方を乗じたものとして定義することができる。1バイトのシグネチャー及び4バイトの値が1セルあたり5バイトをもたらす場合を考慮すると、ハッシュテーブル124などのハッシュテーブル内の各セルは、メモリの5バイトを占め得る。例示目的で、ヒトゲノムの例を考察する。ヒトゲノムは、約30億個のヌクレオチドを含む。場合によっては、ヒトゲノムから、約30億個のk-merが、シード長を含む1つ以上の変数に応じて導出され得る。
図1及び
図3の例で論じられたハッシュ又は出現フィルタリングなどのフィルタリングがない場合、ヒトゲノムに関連するk-merのフィルタリングされたセットは、ヒトゲノムに関連するk-merの初期セット、すなわち、約30億に等しい。5バイトのセルに相当するk-merが記憶され、ハッシュテーブルが2の負荷係数に基づいて生成される場合、ヒトゲノムは、30ギガバイトのハッシュテーブルに記憶され得る。フィルタリングがある場合、例えば、8のseedModValueを使用するハッシュフィルタリング及び20のMaxSeedOccurrenceを使用する出現フィルタリングがある場合、同じヒトゲノムは、約1.4ギガバイトで記憶され得る。seedModValueの値を4に変更すると、メモリ使用量はほぼ2倍になり得る。いくつかの実装形態では、値は、所与の用途の所望のメモリ使用量に基づいて選択され得る。最も有利な値は、seedModValue、MaxSeedOccurrence、シード長、リード長、シーケンシングエラー率、又は任意の他の関連パラメータを含む1つ以上の値の値を自動的に変化させることを含む1つ以上の最適化プロセスに基づいて選択され得る。
【0127】
いくつかの実装形態では、出現カウンタモジュール310は、
図1の出現カウンタモジュール114と同様の出現閾値を使用することができる。例えば、出現カウンタモジュール310は、k-merセット304の各k-merに対して計算された各出現値を出現閾値と比較することができる。出現値と出現閾値との比較に基づいて、出現カウンタモジュール310は、所与の出現値に対応してシステム300を使用する更なるプロセスに、そのk-merを含めるか、又はそのk-merを含めない。
【0128】
図3の例では、k-merセット304をフィルタリングして、第2のk-merセット314を生成することができる。第2のk-merセット314は、k-merセット304のサブセットである。いくつかの実装形態では、第2のk-merセット314は、他のフィルタリング技術に基づいて生成される。例えば、ハッシュ演算モジュール308及び出現カウンタモジュール310によって処理する代わりに、システム300は、乱数生成器を含み、この乱数生成器の出力を使用して、k-merセット304のサブセットを生成することができる。また、当該技術分野において既知の他のフィルタリング技術を使用して、後続のデータセットが初期データセットよりも少ないアイテムを含むように、所与のデータセット内のアイテムの数を減らすこともできる。いくつかの実装形態では、ランダムアルゴリズム又は固定ストライド長インデキシングなど、
図1を参照して論じたフィルタリング技術もまた、使用され得る。
【0129】
図3の段階Cでは、候補生成モジュール316は、候補アライメント箇所320を生成する。場合によっては、候補アライメント箇所は、参照配列箇所と称され得る。候補アライメント箇所320は、ゲノムデータリード302によって表されるリードに対応するデータが参照ゲノム内で出現する場所に対応する情報を含む。いくつかの実装形態では、システム300は、k-merセット304内のゲノムデータリード302に対応するk-merを使用して、k-merセット304内でのそのk-merの位置に基づいて、ゲノムデータリード302によって表されるリードが参照ゲノムと一致する場所を決定することができる。参照ゲノムは、
図1に示されるようにハッシュテーブルに記憶され得る。このハッシュテーブルは、k-merセット304の1つ以上のk-merに対して対応する位置を決定するために、システム300によって使用され得る。
【0130】
候補生成モジュール316は、第2のk-merセット314のk-merに基づいて候補アライメント箇所320を生成することができる。例えば、
図3に示すように、k-mer CATT...GGは、参照ゲノム上でのゲノムデータリード302の箇所「箇所X」に対応する。アイテム318は、k-mer CATT...GGに対応する候補アライメント箇所を生成するプロセスを示す。k-mer CATT...GGが1つ以上のフィルタリング工程を通過した後、k-mer CATT...GGは、ハッシュテーブル318cでクエリされる。いくつかの実装形態では、ハッシュテーブル318cは、
図1のハッシュテーブル124と同等である。k-mer CATT...GGに対応する参照ゲノム位置に対応する、値318bは、候補生成モジュール316によって得ることができる。候補生成モジュール316はまた、アイテム318aに示されるように、ゲノムデータリード302内でのk-mer CATT...GGの箇所も得る。アイテム318aに示される、ゲノムデータリード302内でのk-mer CATT...GGの箇所、及びハッシュテーブル318cに対応するアイテム318bに示される、参照ゲノム内でのk-mer CATT...GGの箇所に基づいて、候補生成モジュール316は、k-mer CATT...GGに対応する参照ゲノム上にマッピングされたゲノムデータリード302のマッピングに対応する箇所「箇所X」を決定することができる。
【0131】
いくつかの実装形態では、候補生成モジュール316は、1つ以上の得られた箇所に基づいて1つ以上の箇所を計算することができる。例えば、k-mer CATT...GGの場合、候補生成モジュール316は、アイテム318aに示される、ゲノムデータリード302内でのk-mer CATT...GGの箇所、及びハッシュテーブル318cに対応するアイテム318bに示される、参照ゲノム内でのk-mer CATT...GGの箇所を得、2つの箇所に基づいて箇所「箇所X」を計算することができる。例えば、一致する配列の箇所が、2つ以上のリード間の一致する配列の開始として記憶される実装では、候補生成モジュール316は、参照ゲノムに対応するハッシュテーブル318c内でのk-mer CATT...GGの位置から、ゲノムデータリード302内でのk-mer CATT...GGの位置を減算することに基づいて、箇所「箇所X」を生成することができる。候補生成モジュール316は、同様の方法を使用して、k-mers CATT...GG、AGTC...CT、及びGGAT...CCの箇所を生成することができる。
【0132】
図3の段階Dでは、ソーティングモジュール322は、候補アライメント箇所320をソーティングすることができる。一般に、任意の好適なソーティング技術が使用され得る。
図3の例では、ソーティングモジュール322は、計算されたカウントに基づいて候補アライメント箇所320をソーティングすることができる。計算されたカウントは、候補アライメント箇所320のうちの所与の候補アライメント箇所に対して支持するk-merの数を表す。例えば、候補アライメント箇所320内の箇所のうちの1つ以上は、第2のk-merセット314の2つ以上のk-merが、ハッシュテーブル318cによって表される参照ゲノム上でのゲノムデータリード302の同じアライメントに対応することを示す重複物であり得る。2つのk-merが同じアライメントに対応する場合、そのアライメントのカウントは2である。
図3の例では、箇所「箇所X」のカウントはカウントXであり、箇所「箇所Y」のカウントはカウントYであり、箇所「箇所Z」のカウントはカウントZである。アライメントは、カウントX及びカウントZよりも大きいカウントYが、箇所X及び箇所Zよりも上に記憶されている箇所Yをもたらすように、降順でソーティングすることができる。同様に、カウントXはカウントXよりも大きく、その結果、箇所Xは箇所Zよりも上に記憶される。
図3の例では、アライメント箇所は降順でソーティングすることができるが、本明細書では他の可能なソーティング順序が企図される。
【0133】
アライメント処理工程を最適化するために、アライメントを降順に基づいてソーティングすることが使用され得る。例えば、より多くの支持するk-merを有するアライメントは、より少ない支持するk-merを有するアライメントよりも少ないミスマッチを有する傾向がある。各k-merは、最終アライメントを選択する前に、ミスマッチの数を決定するために調査され得る。一連の基準に合格する可能性がより高いアライメントを先に処理することにより、システム300は、アライメントの処理を高速化することができる。
【0134】
段階Eでは、スコアリング及び出力モジュール326は、箇所Yに対応するソーティングされた候補アライメントリスト324の第1の箇所を取得することができる。箇所Yは、ハッシュテーブル318cに対応する参照ゲノムに基づいてスコアリングされる。
図3の例では、スコアリング及び出力モジュール326は、箇所Yに関連付けられたk-mer AGTC...CTに対応する、ゲノムデータリード302などのゲノムデータと、参照ゲノムデータがハッシュテーブル318cを生成するために使用されている、ハッシュテーブル318cに対応する参照ゲノムデータとの間のミスマッチの数を計算することができる。ミスマッチは、ゲノムデータリード302のヌクレオチドが参照ゲノムデータのヌクレオチドに一致しないことを指し得る。例えば、照合された配列に沿った所与の位置において、一方の配列はヌクレオチドAに対応し得るが、他方の配列はヌクレオチドGに対応し得る。そのようなミスマッチが、スコアリング及び出力モジュール326によって計算され得る。
【0135】
スコアリング及び出力モジュール326は、アライメント箇所Yに対応するミスマッチの総数を生成することができ、また、スコアAが少なくともいくつかのミスマッチを表す、スコアAを生成することができる。場合によっては、スコアAを含むスコア328を生成するために、他のパラメータ又は値が使用され得る。
図3の例では、スコアリング及び出力モジュール326は、スコアAを閾値330と比較することができる。閾値330は、一般に、任意の好適な値であり得る。
図3の例では、閾値330は値4に等しく、4はミスマッチの数を表す。いくつかの実装形態では、他の値が使用され得る。例えば、閾値330の別の好適な値を決定するために、最適化プロセスが使用され得る。スコアリング及び出力モジュール326は、スコアAを閾値330と比較することに基づいて、スコアAが閾値を満たさず、したがって箇所Yは選択されないと判定することができる。次いで、スコアリング及び出力モジュール326は、1つ以上の他の箇所を処理することができる。
【0136】
スコアリング及び出力モジュール326は、アライメント箇所Xに対応するミスマッチの総数を生成することができ、また、スコアBが少なくともいくつかのミスマッチを表す、スコアBを生成することができる。
図3の例では、スコアリング及び出力モジュール326は、スコアBを閾値330と比較することができる。スコアリング及び出力モジュール326は、スコアBと閾値330との比較に基づいて、スコアBが閾値330を満たすと判定することができる。スコアBが閾値330を満たすと判定することに基づいて、スコアリング及び出力モジュール326は、選択された候補332を出力することができる。選択された候補332は、k-mer CATT...GG、箇所X、又はスコアBを表すデータを含み得る。
【0137】
いくつかの実装形態では、基準を満たすスコアがない。この場合、所与の基準に基づいてスコア328の中から1つのスコアが選択され得る。例えば、所与の基準は、スコア328のうちの1つ以上を比較して、最も少ない量のミスマッチを有するアライメントを表す最小のスコアを決定することを含み得る。次いで、最低スコアに対応する箇所を、選択された候補として出力することができる。
【0138】
段階Fでは、コンピュータ306は、選択された候補332を取得し、選択された候補332を表すデータ334を別のエンティティ又はプロセスに送信することができる。場合によっては、コンピュータ306は、通信ネットワークを介して別のエンティティ又はデバイスにデータ334を送信することができる。例えば、別のデバイスは、ゲノムデータリード302に関連する選択された候補の要求を送信することができる。次いで、コンピュータ306は、この他のデバイスに、選択された候補332を送信することができる。
【0139】
図4は、ソフトウェアで加速されたゲノムリードマッピングのためのハッシュテーブルを生成するためのプロセス400の例を示すフロー図である。プロセス400は、1つ以上の電子システム、例えば、
図3のシステム300によって実行され得る。
【0140】
プロセス400は、1つ以上のコンピュータによって、ゲノムデータリードからk-merシードを取得することを含む(402)。いくつかの実装形態では、k-merシードは、ゲノムデータリードに関連付けられたより長いヌクレオチドの配列に基づくヌクレオチドの配列の表現である。いくつかの実装形態では、ゲノムデータリードは、コンピュータ又はハードウェアで加速されたデバイス上で実行されるリード分析動作の結果である。
【0141】
プロセス400は、1つ以上のコンピュータによって、取得したk-merシードに基づいてゲノムシグネチャーを生成することを含む(404)。いくつかの実装形態では、
図3の候補生成モジュール316は、取得したk-merシードのシグネチャーを生成するために、部分的に、使用される。いくつかの実装形態では、取得したk-merシードのシグネチャーは、ハッシュ関数に基づいて生成される。例えば、ハッシュ関数は、取得したk-merシードの表現に対して演算することができる。ハッシュ関数は、ゲノムシグネチャーとして使用され得る結果を生成することができる。いくつかの実装形態では、ハッシュ関数が結果を生成する前又はその後に、1つ以上の中間処理工程を用いることができる。例えば、ハッシュ関数は結果を生成することができ、この結果には、ゲノムシグネチャーを生成するために第2の動作を適用することができる。
【0142】
プロセス400は、1つ以上のコンピュータによって、ハッシュデータ構造を使用してk-merシードの少なくとも一部に一致する1つ以上の参照配列箇所を決定することを含む(406)。いくつかの実装形態では、ハッシュデータ構造は、所定のゲノムシグネチャーを記憶する第1の部分と、所定のゲノムシグネチャーが導出されたk-merシードの少なくとも一部と一致する1つ以上の参照配列箇所を記憶する第2の部分とを含むN個のデータセルを含む。いくつかの実装形態では、所定のゲノムシグネチャーは、メモリ記憶の1バイトを占める。いくつかの実装形態では、ハッシュデータ構造は、
図1に示されるハッシュテーブル124を生成するプロセスと同様に生成される。
【0143】
プロセス400は、1つ以上のコンピュータによって、1つ以上のアライメントスコアに基づいて、決定した参照配列箇所のうちの少なくとも1つを、取得したk-merシードの実際のアライメントとして選択することを含む(408)。いくつかの実装形態では、1つ以上のアライメントスコアに基づいて、取得したk-merシードの実際のアライメントを決定するために、1つ以上の箇所が決定され、1つ以上の箇所をスコアリングする方法が使用される。例えば、所与のアライメントのミスマッチの数を計算することができ、ミスマッチの数は、参照ヌクレオチド配列の1つ以上のヌクレオチドに一致しない、リードの1つ以上のヌクレオチドを含むことができる。ミスマッチは、リードの1つ以上のヌクレオチドの表現及び参照ヌクレオチド配列の1つ以上のヌクレオチドの表現、並びに参照ヌクレオチド配列に対するリードの所与の候補開始箇所に基づいたこの2つの表現間の比較に基づいて計算され得る。
【0144】
図5は、多変量順序データに基づいたジョイントモデルを使用して医学分析を生成するためのシステムを実装するために使用することができるコンピュータシステム500の構成要素の図である。
【0145】
コンピューティングデバイス500は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことが意図されている。コンピューティングデバイス550は、パーソナルデジタルアシスタント、携帯電話(cellular telephone)、スマートフォン、及び他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すことが意図されている。加えて、コンピューティングデバイス500又は550は、ユニバーサルシリアルバス(Universal Serial Bus、USB)フラッシュドライブを含むことができる。USBフラッシュドライブは、オペレーティングシステム及び他のアプリケーションを記憶することができる。USBフラッシュドライブは、別のコンピューティングデバイスのUSBポートに挿入できる無線送信機又はUSBコネクタなどの入力/出力構成要素を含むことができる。本明細書に示される構成要素、この構成要素の接続及び関係、並びにこの構成要素の機能は、単なる例であることを意味し、本文書に記載及び/又は特許請求される発明の実装形態を限定することを意味するものではない。
【0146】
コンピューティングデバイス500は、プロセッサ502、メモリ504、記憶デバイス506、メモリ504及び高速拡張ポート510に接続する高速インターフェース508、並びに低速バス514及び記憶デバイス506に接続する低速インターフェース512を含む。構成要素502、504、506、508、510、及び512の各々は、様々なバスを使用して相互接続されており、共通のマザーボード上に、又は適宜他の様式で装着することができる。プロセッサ502は、メモリ504内に又は記憶デバイス506上に記憶した命令を含む、コンピューティングデバイス500内での実行のための命令を処理して、高速インターフェース508に連結されたディスプレイ516などの外部入力/出力デバイス上でGUI用のグラフィカル情報を表示することができる。他の実装形態では、複数のプロセッサ及び/又は複数のバスを、適宜、複数のメモリ及び複数種類のメモリと共に使用できる。また、複数のコンピューティングデバイス500を接続して、各デバイスが、例えば、サーババンク、ブレードサーバ群、又はマルチプロセッサシステムとして、必要な演算の部分を提供するようにすることができる。
【0147】
メモリ504は、コンピューティングデバイス500内に情報を記憶する。一実装形態では、メモリ504は、揮発性メモリユニット又は複数の揮発性メモリユニットである。別の実装形態では、メモリ504は、不揮発性メモリユニット又は複数の不揮発性メモリユニットである。メモリ504はまた、磁気ディスク又は光ディスクなどの、別の形態のコンピュータ可読媒体であり得る。
【0148】
記憶デバイス506は、コンピューティングデバイス500のための大容量ストレージを提供することができる。一実装形態では、記憶デバイス506は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、若しくはテープデバイス、フラッシュメモリ若しくは他の類似のソリッドステートメモリデバイス、又はストレージエリアネットワーク若しくは他の構成内のデバイスを含むデバイスのアレイなど、コンピュータ可読媒体とすることができるか、又はそれを内包することができる。コンピュータプログラム製品は、情報キャリア内に、有形に実施できる。コンピュータプログラム製品はまた、実行されると、上述したものなどの1つ以上の方法を実行する命令を内包することができる。情報キャリアとは、メモリ504、記憶デバイス506、又はプロセッサ502上のメモリなど、コンピュータ可読媒体又はマシン可読媒体である。
【0149】
高速コントローラ508は、コンピューティングデバイス500の帯域幅集約演算を管理する一方、低速コントローラ512は、低帯域幅集約演算を管理する。このような機能の割り当ては、一実施例に過ぎない。一実装形態では、高速コントローラ508は、例えば、グラフィックプロセッサ又はアクセラレータを経てメモリ504、ディスプレイ516へ、及び様々な拡張カード(非表示)を受け入れることができる高速拡張ポート510へ連結されている。この実装形態では、低速コントローラ512は、記憶デバイス506及び低速拡張ポート514に連結されている。様々な通信ポート、例えば、USB、Bluetooth、Ethernet、無線Ethernetを含むことができる低速拡張ポートは、例えば、ネットワークアダプタを介して、キーボード、ポインティングデバイス、マイクロフォン/スピーカペア、スキャナ、又はスイッチ若しくはルータなどのネットワーキングデバイスなどの1つ以上の入力/出力デバイスに結合できる。コンピューティングデバイス500は、図に示されるように、いくつかの異なる形態で実装することができる。例えば、コンピューティングデバイスは標準サーバ520として実装することができ、又はかかるサーバ群において複数回実装することができる。コンピューティングデバイスはまた、ラックサーバシステム524の一部として実装できる。加えて、コンピューティングデバイスは、ラップトップコンピュータ522などのパーソナルコンピュータに実装できる。あるいは、コンピューティングデバイス500からの構成要素を、デバイス550などのモバイルデバイス(非表示)内の他の構成要素と組み合わせることができる。このようなデバイスの各々は、コンピューティングデバイス500、550のうちの1つ以上を内包することができ、システム全体を、互いに通信する複数のコンピューティングデバイス500、550から構成することができる。
【0150】
コンピューティングデバイス500は、図に示されるように、いくつかの異なる形態で実装することができる。例えば、コンピューティングデバイスは標準サーバ520として実装することができ、又はかかるサーバ群において複数回実装することができる。コンピューティングデバイスはまた、ラックサーバシステム524の一部として実装できる。加えて、コンピューティングデバイスは、ラップトップコンピュータ522などのパーソナルコンピュータに実装できる。あるいは、コンピューティングデバイス500からの構成要素を、デバイス550などのモバイルデバイス(非表示)内の他の構成要素と組み合わせることができる。このようなデバイスの各々は、コンピューティングデバイス500、550のうちの1つ以上を内包することができ、システム全体を、互いに通信する複数のコンピューティングデバイス500、550から構成することができる。
【0151】
コンピューティングデバイス550は、構成要素の中でもとりわけ、プロセッサ552、メモリ564、並びにディスプレイ554、通信インターフェース566、及び送受信機568などの入出力デバイスを含む。デバイス550はまた、追加のストレージを設けるために、マイクロドライブ又は他のデバイスなどの、記憶デバイスを設けることができる。構成要素550、552、564、554、566、及び568の各々は、様々なバスを使用して相互接続されており、構成要素はのうちのいくつかは、共通のマザーボード上に、又は適宜他の手法で実装できる。
【0152】
プロセッサ552は、メモリ564に記憶された命令を含む、コンピューティングデバイス550内の命令を実行することができる。プロセッサは、別個及び複数のアナログ及びデジタルプロセッサを含むチップのチップセットとして実装できる。これに加えて、プロセッサは、いくつかのアーキテクチャのうちのいずれかを使用して実装できる。例えば、プロセッサ510を、CISC(Complex Instruction Set Computers、複合命令セットコンピュータ)プロセッサ、RISC(Reduced Instruction Set Computer、縮小命令セットコンピュータ)プロセッサ、又はMISC(Minimal Instruction Set Computer、最小命令セットコンピュータ)プロセッサとすることができる。プロセッサは、例えば、ユーザインターフェースの制御、デバイス550によって実行されるアプリケーション、及びデバイス550による無線通信など、デバイス550の他の構成要素の協調を提供することができる。
【0153】
プロセッサ552は、制御インターフェース558と、ディスプレイ554に連結されたディスプレイインターフェース556とを経て、ユーザと通信することができる。ディスプレイ554を、例えば、TFT(Thin-Film-Transistor Liquid Crystal Display、薄膜トランジスタ液晶ディスプレイ)ディスプレイ、OLED(Organic Light Emitting Diode、有機発光ダイオード)ディスプレイ、又は他の適切なディスプレイ技術とすることができる。ディスプレイインターフェース556は、ディスプレイ554を駆動してグラフィカル情報及び他の情報をユーザに提示するための適切な回路を備えることができる。制御インターフェース558は、ユーザからコマンドを受信し、このコマンドをプロセッサ552への転送のために変換することができる。加えて、デバイス550と他のデバイスとの近距離無線通信を可能にするために、外部インターフェース562を、プロセッサ552との通信に提供することができる。外部インターフェース562を、例えば、いくつかの実装形態では有線通信用に、又は他の実装形態では無線通信用に提供することができ、多重インターフェースもまた使用することができる。
【0154】
メモリ564は、コンピューティングデバイス550内に情報を記憶する。メモリ564は、コンピュータ可読媒体(複数可)、揮発性メモリユニット(複数可)、又は不揮発性メモリユニット(複数可)のうちの1つ以上として実装され得る。また、例えばSIMM(Single In Line Memory Module、シングルインラインメモリモジュール)カードインターフェースを含むことができる、拡張インターフェース572を介して、デバイス550に拡張メモリ574を提供及び接続することができる。このような拡張メモリ574は、デバイス550のための増設記憶空間を提供することができるか、又は、デバイス550のためのアプリケーション若しくは他の情報を記憶することもできる。具体的には、拡張メモリ574は、上述したプロセスを実行又は補完する命令を含むことができ、セキュアな情報を含むこともできる。したがって、例えば、拡張メモリ574は、デバイス550のためのセキュリティモジュールとして設けることができ、デバイス550のセキュアな使用を可能にする命令を用いてプログラムすることができる。加えて、セキュアなアプリケーションは、SIMMカードを介して、ハッキング不能な手法でSIMMカード上に識別情報を配置するなど、追加情報と共に提供できる。
【0155】
メモリは、例えば、後述するように、フラッシュメモリ及び/又はNVRAMメモリを含むことができる。一実装形態では、コンピュータプログラム製品は、情報キャリア内で有形に実施される。コンピュータプログラム製品は、実行されると、上述したものなどの1つ以上の方法を実行する命令を内包する。情報キャリアは、例えば、送受信機568又は外部インターフェース562を介して受信できるメモリ564、拡張メモリ574又はプロセッサ552上のメモリなどの、コンピュータ可読媒体又はマシン可読媒体である。
【0156】
デバイス550は、必要な場合、デジタル信号処理回路を含むことができる通信インターフェース566を経て無線通信することができる。通信インターフェース566はとりわけ、GSM音声通話、SMS、EMS、又はMMSメッセージング、CDMA、TDMA、PDC、WCDMA、CDMA2000、又はGPRSなど、様々なモード又はプロトコルの下での通信を提供することができる。このような通信は、例えば、無線周波数トランシーバ568を経て行うことができる。加えて、Bluetooth、Wi-Fi、又は他のこのような送受信機(図示せず)を使用するなど、短距離通信が行われることが可能である。加えて、GPS(Global Positioning System、全地球測位システム)受信機モジュール570が、デバイス550に追加のナビゲーション関連及び位置関連の無線データを提供することができ、デバイス550上で動作するアプリケーションによって適宜使用できる。
【0157】
デバイス550はまた、オーディオコーデック560を使用して可聴的に通信することができ、オーディオコーデック560は、ユーザから発話情報を受信し、この発話情報を使用可能なデジタル情報に変換することができる。オーディオコーデック560は同じく、例えば、デバイス550のハンドセット内の、スピーカを経るなど、ユーザのために可聴音を生成することができる。このような音は、音声電話通話からの音を含むことができ、録音された音、例えば、音声メッセージ、音楽ファイルなどを含むことができ、また、デバイス550上で動作するアプリケーションによって生成される音を含むこともできる。
【0158】
コンピューティングデバイス550は、図に示されるように、いくつかの異なる形態で実装することができる。例えば、コンピューティングデバイスは、携帯電話580として実装できる。また、コンピューティングデバイスを、スマートフォン582、パーソナルデジタルアシスタント、又は他の同様のモバイルデバイスの一部として実装することもできる。
【0159】
本明細書に記載されるシステム及び方法の様々な実装形態は、デジタル電子回路、集積回路、専用に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこのような実装形態の組み合わせで実現できる。これらの様々な実装形態は、専用又は汎用であり、記憶システム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ及び命令を受信し、かつこれらにデータ及び命令を送信するように結合された少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能及び/又は解釈可能である1つ以上のコンピュータプログラムでの実装形態を含むことができる。
【0160】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られている)は、プログラム可能なプロセッサのためのマシン命令を含み、高水準手続き型及び/又はオブジェクト指向プログラミング言語で、及び/又はアセンブリ/マシン言語で実装できる。本明細書で使用されるとき、用語「マシン可読媒体」「コンピュータ可読媒体」は、任意のコンピュータプログラム製品、装置、及び/又はデバイス、例えば、磁気ディスク、光ディスク、メモリ、マシン命令及び/又はデータをプログラム可能なプロセッサに提供するために使用されるプログラマブルロジックデバイス(Programmable Logic Device、PLD)を指し、マシン可読信号としてマシン命令を受信するマシン可読媒体を含む。用語「マシン可読信号」は、プログラム可能なプロセッサにマシン命令及び/又はデータを提供するために使用される任意の信号を指す。
【0161】
ユーザとのインタラクションを提供するために、本明細書に記載されるシステム及び技術は、ユーザに情報を表示するためのディスプレイデバイス、例えば、CRT(cathode ray tube、陰極線管)又はLCD(liquid crystal display、液晶ディスプレイ)モニタ、並びにユーザがコンピュータに入力を提供することができるキーボード及びポインティング装置、例えばマウス又はトラックボールを有するコンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとのインタラクションを提供することもでき、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックとすることができ、ユーザからの入力は、音響入力、発話入力、又は触覚入力を含む任意の形態で受信することができる。
【0162】
本明細書に記載されるシステム及び技術は、例えばデータサーバとしての、バックエンド構成要素を含むコンピューティングシステムで、又はミドルウェアコンポーネント、例えば、アプリケーションサーバを含むコンピューティングシステムで、又はフロントエンド構成要素、例えばユーザが介して本明細書に記載されるシステム及び技術の実装形態とインタラクトすることができるグラフィカルユーザインターフェース又はウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステムで、又はこのようなバックエンド、ミドルウェア、又はフロントエンドの構成要素の任意の組み合わせで、実装できる。システムの構成要素は、デジタルデータ通信、例えば通信ネットワークの任意の形態又は媒体によって相互接続できる。通信ネットワークの例として、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、及びインターネットが挙げられる。
【0163】
計算システムは、クライアント及びサーバを含むことができる。クライアント及びサーバは一般に、互いにリモートであり、通常、通信ネットワークを介してインタラクトする。クライアントとサーバとの関係は、それぞれのコンピュータ上で作動し、かつ互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0164】
いくつかの実施形態を記載してきた。しかしながら、本発明の趣旨及び範囲から逸脱することなく、様々な変更を行うことができることが理解されるであろう。加えて、図に描示される論理フローは、所望の結果を達成するために、示される特定の順序、又は連続的な順序を必要としない。加えて、他の工程を提供することができ、又は記載されたフローから工程を排除することができ、記載されたシステムに他の構成要素を追加するか、又は記載されたシステムから除去することができる。したがって、他の実施形態は、以下の特許請求の範囲内にある。
【0165】
本明細書に記載の本発明の実施形態、及び機能動作のすべては、本明細書に開示されている構造、及びこれらの構造的同等物を含む、デジタル電子回路、若しくはコンピュータソフトウェア、ファームウェア若しくはハードウェア、又はこれらのうちの1つ以上の組み合わせに実装することができる。本発明の実施形態は、1つ以上のコンピュータプログラム製品、例えば、データ処理装置による実行のために、又はデータ処理装置の動作を制御するためにコンピュータ可読媒体にコード化されるコンピュータプログラム命令のうちの1つ以上のモジュールとして実装することができる。コンピュータ可読媒体は、機械可読格納デバイス、機械可読格納基板、メモリデバイス、機械可読伝搬信号に影響を及ぼす組成物(composition of matter)、又はこれらのうちの1つ以上の組み合わせであり得る。「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、又は複数のプロセッサ若しくはコンピュータを含む、データを処理するためのすべての装置、デバイス、及び機械を包含する。装置は、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を作り出すコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、又はこれらのうちの1つ以上の組み合わせを構成するコードを含むことができる。伝播信号は、人工的に生成された信号、例えば、適切な受信装置への伝送のための情報をコード化するために生成される機械生成された電気、光学、又は電磁信号である。
【0166】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られる)は、コンパイル型言語又はインタープリタ型言語を含む任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、又はモジュール、コンポーネント、サブルーチンとして、又は計算環境での使用に適した他のユニットとしてを含む任意の形態で展開することができる。コンピュータプログラムは、必ずしもファイルシステム内のファイルに対応しない。プログラムを、他のプログラム若しくはデータを保持するファイルの一部(例えば、マークアップ言語のドキュメントに格納される1つ以上のスクリプト)に、問題のプログラム専用の単一のファイルに、又は複数の連携ファイル(例えば、1つ以上のモジュール、サブプログラム又はコードの一部を保存するファイル)に格納できる。コンピュータプログラムを展開して、1つの場所にある、若しくは複数の場所に分散して、通信網によって相互接続される、1つのコンピュータ又は複数のコンピュータ上で実行することができる。
【0167】
本明細書に記載のプロセス及び論理フローは、入力データを処理して出力を生成することによって機能を実行するために、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって実行され得る。プロセス及び論理フローはまた、特殊用途論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)、又はASIC(特定用途向け集積回路)によって実行され得、及び装置はまた、特殊用途論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)、又はASIC(特定用途向け集積回路)として実装され得る。
【0168】
コンピュータプログラムの実行に適しているプロセッサは、例えば汎用及び特殊用途両方のマイクロプロセッサ、並びに任意の種類のデジタルコンピュータのうちの1つ以上の任意のプロセッサを含む。一般にプロセッサは、命令及びデータを、読み取り専用メモリ若しくはランダムアクセスメモリ、又は両方から受け取る。コンピュータの必須の要素は、命令を実行するためのプロセッサ、並びに命令及びデータを格納するための1つ以上のメモリデバイスである。一般に、コンピュータはまた、データを格納するための1つ以上の大容量記憶デバイス、例えば、磁気、光磁気ディスク若しくは光ディスクからデータを受け取る、大容量記憶デバイスへデータを送信する、若しくは両方のために、大容量記憶デバイスを含む、又は大容量記憶デバイスに動作可能に連結される。しかし、コンピュータはこのようなデバイスを備えている必要はない。更にコンピュータは、別のデバイス、例えば、いくつか例を挙げてみると、タブレットコンピュータ、携帯電話、パーソナルデジタルアシスタント(PDA)、携帯オーディオプレーヤ、全地球測位システム(GPS)受信器に組み込むことができる。コンピュータプログラム命令及びデータを格納するのに適したコンピュータ可読媒体には、不揮発性メモリ、媒体、及びメモリデバイスのすべての形態が含まれ、例えば、EPROM、EEPROM、及びフラッシュメモリデバイスなどの半導体メモリデバイス、例えば、内部ハードディスク又は取り外し可能なディスクなどの磁気ディスク、磁気光学ディスク、並びにCD ROM及びDVD-ROMディスクなどが含まれる。プロセッサ及びメモリは、特殊用途論理回路により補うことができる、又は特殊用途論理回路に組み込むことができる。
【0169】
ユーザとのインタラクションを提供するために、本発明の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、例えば、CRT(cathode ray tube、陰極線管)又はLCD(liquid crystal display、液晶ディスプレイ)モニタ、並びにユーザがコンピュータに入力を提供することができるキーボード及びポインティングデバイス、例えばマウス又はトラックボールを有するコンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとのインタラクションを提供することもでき、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックとすることができ、ユーザからの入力は、音響入力、発話入力、又は触覚入力を含む任意の形態で受信することができる。
【0170】
本発明の実施形態は、例えばデータサーバとしての、バックエンド構成要素を含む計算システムで、又はミドルウェア構成要素、例えば、アプリケーションサーバを含む計算システムで、又はフロントエンド構成要素、例えばユーザが本発明の実装形態とインタラクションできるグラフィカルユーザインターフェース若しくはウェブブラウザを有するクライアントコンピュータを含む計算システムで、又は1つ以上のこのようなバックエンド、ミドルウェア、若しくはフロントエンドの構成要素の任意の組み合わせで、実装できる。システムの構成要素は、デジタルデータ通信、例えば通信ネットワークの任意の形態又は媒体によって相互接続できる。通信ネットワークの例として、ローカルエリアネットワーク(「LAN」)、及び広域ネットワーク(「WAN」)、例えば、インターネットが挙げられる。
【0171】
計算システムは、クライアント及びサーバを含むことができる。クライアント及びサーバは一般に、互いにリモートであり、通常、通信ネットワークを介してインタラクトする。クライアントとサーバとの関係は、それぞれのコンピュータ上で作動し、かつ互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0172】
本明細書は多くの詳細を含むが、これらは、本発明の、又は特許請求され得るものの範囲を制限するとして解釈されてはならず、むしろ本発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書に記載されている特定の特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈で説明される様々な特徴はまた、複数の実施形態で別々に、又は任意の好適な部分組み合わせで実装され得る。更に、特徴が特定の組み合わせで機能するものと上述される場合があり、最初にそのように特許請求されていたとしても、特許請求された組み合わせからの1つ以上の特徴は、場合によっては組み合わせから削除することができ、特許請求された組み合わせは、部分的組み合わせ、又は部分的組み合わせの変形に関し得る。
【0173】
同様に、動作は、特定の順序で図面に表されるが、このような動作が、所望の結果を得るために、示される特定の順序で若しくは順次実行される、又はすべての例示の動作が実行される必要があると理解されるべきではない。特定の状況では、マルチタスク及び並列処理が有利であり得る。更に、上述の実施形態の種々のシステム構成要素の分離は、すべての実施形態でこのような分離を必要とするとして理解されてはならず、記載したプログラムコンポーネント及びシステムは通常、単一のソフトウェア製品に一緒に統合することができる、又は複数のソフトウェア製品内にパッケージ化することができることを理解すべきである。
【0174】
HTMLファイル形式が言及されている各例では、他のファイルタイプ又はフォーマットが代わりに用いられ得る。例えば、HTMLファイルは、XML、JSON、プレーンテキスト、又は他のタイプのファイルによって置き換えられ得る。更に、テーブル又はハッシュテーブルが言及されている場合、他のデータ構造(スプレッドシート、リレーショナルデータベース、又は構造化ファイルなど)が使用され得る。
【0175】
他の実施形態
本発明の特定の実施形態を記載してきた。他の実施形態は、以下の特許請求の範囲内にある。例えば、特許請求の範囲に列挙される工程は、異なる順序で実行することができ、それでも望ましい結果を達成することができる。
【符号の説明】
【0176】
100 システム
102 ゲノムデータ
104 k-merセット
106 コンピュータ
108 ハッシュ演算モジュール
110 k-merセット
112 ハッシュ値
114 出現カウンタモジュール
116 k-merセット
118 ゲノム出現数
120 ハッシュテーブル生成モジュール
124 ハッシュテーブル
126 アイテム
128 アイテム
130 アイテム
【国際調査報告】