(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-25
(45)【発行日】2025-03-05
(54)【発明の名称】ハッシュテーブルゲノムマッピングのための柔軟性のあるシード伸長
(51)【国際特許分類】
G16B 30/10 20190101AFI20250226BHJP
G16B 50/30 20190101ALI20250226BHJP
C12Q 1/6869 20180101ALI20250226BHJP
【FI】
G16B30/10
G16B50/30
C12Q1/6869 Z
(21)【出願番号】P 2020572747
(86)(22)【出願日】2020-05-22
(86)【国際出願番号】 US2020034395
(87)【国際公開番号】W WO2020243009
(87)【国際公開日】2020-12-03
【審査請求日】2023-05-19
(32)【優先日】2019-05-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500358711
【氏名又は名称】イルミナ インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】マイケル・ルーレ
【審査官】渡邉 加寿磨
(56)【参考文献】
【文献】米国特許出願公開第2014/0288851(US,A1)
【文献】特表2019-510323(JP,A)
【文献】中国特許出願公開第105243297(CN,A)
【文献】中国特許出願公開第106295250(CN,A)
【文献】国際公開第2016/141294(WO,A1)
【文献】特開2013-106567(JP,A)
【文献】特開2012-32975(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
G16B 5/00-99/00
G16C 10/00-99/00
G16Z 99/00
C12Q 1/6869
(57)【特許請求の範囲】
【請求項1】
参照配列へのサンプルリードのマッピングのためのハッシュテーブルを使用するための方法であって、
マッピング及びアライニングユニットによって、ハッシュテーブルのクエリを実行することであって、前記クエリが、第1のシードを含み、前記第1のシードが、前記サンプルリードの特定のリードから取得されたヌクレオチドのサブセットを含む、実行することと、
前記マッピング及びアライニングユニットによって、前記クエリに応答すると判定された前記ハッシュテーブルの位置によって記憶された情報を含む前記実行されたクエリへの応答を取得することと、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、(i)伸長レコード(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、(i)伸長レコード及び(ii)間隔レコードを含むと判定することに基づいて、
前記マッピング及びアライニングユニットによって、伸長テーブルが、前記間隔レコードによって参照される前記伸長テーブル内の1個以上の一致する参照配列位置を取得するためにアクセスされるかどうかを判定することと、
前記伸長テーブルがアクセスされないと判定することに基づいて、
前記マッピング及びアライニングユニットによって、前記間隔レコードを記述す
る第1の情報を最良間隔候補を記述する情報としてメモリデバイスに記憶するかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記伸長レコードを使用して前記第1のシードの伸長である第1の伸長されたシードを生成することと、
前記マッピング及びアライニングユニットによって、前記第1の伸長されたシードを含む後続のハッシュクエリを生成することと、
前記マッピング及びアライニングユニットによって、前記ハッシュテーブルの前記後続のクエリを実行することと、を含む、方法。
【請求項2】
前記方法が、
前記伸長テーブルがアクセスされると判定することに基づいて、
前記マッピング及びアライニングユニットによって、前記伸長テーブルにアクセスして、前記間隔レコードによって参照される前記伸長テーブル内の前記1個以上の一致する参照配列位置を取得することと、
前記マッピング及びアライニングユニットによって、前記1個以上の一致する参照配列位置をシード一致セットに追加することと、をさらに含む、請求項1に記載の方法。
【請求項3】
前記方法が、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、1個以上の一致する参照配列位置を含むと判定することと、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、1個以上の一致する参照配列位置を含むと判定することに基づいて、
前記マッピング及びアライニングユニットによって、前記1個以上の一致する参照配列位置をシード一致セットに追加することと、をさらに含む、請求項1又は2に記載の方法。
【請求項4】
前記マッピング及びアライニングユニットによって、前記間隔レコードを記述する前記第1の情報を最良間隔候補を記述する情報としてメモリデバイスに記憶するかどうかを判定することが、
前記マッピング及びアライニングユニットによって、前記特定のリードに対する最良間隔候補としての間隔レコードを記述する以前の情報が存在しないと判定することと、
前記マッピング及びアライニングユニットによって、前記間隔レコードを記述する前記第1の情報を最良間隔候補を記述する情報として前記メモリデバイスに記憶することと、を含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記方法が、
前記マッピング及びアライニングユニットによって、前記クエリに応答すると判定された前記ハッシュテーブルの位置によって記憶された情報を含む前記後続の実行されたクエリへの応答を取得することと、
前記マッピング及びアライニングユニットによって、前記後続の実行されたクエリへの前記応答が、(i)第2の伸長レコード(ii)第2の間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記後続の実行されたクエリへの前記応答が、(i)前記第2の伸長レコード及び(ii)前記第2の間隔レコードを含むと判定することに基づいて、
前記マッピング及びアライニングユニットによって、伸長テーブルが、前記第2の間隔レコードによって参照される前記伸長テーブル内の1個以上の一致する参照配列位置を取得するためにアクセスされるかどうかを判定することと、
前記伸長テーブルがアクセスされないと判定することに基づいて、
前記マッピング及びアライニングユニットによって、かつ1つ以上のヒューリスティック規則を使用して、前記第2の間隔レコードを記述する第2の情報、又は前記最良間隔候補を記述する前記第1の情報が、前記最良間隔候補として使用されるかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記第2の伸長レコードを使用して前記第1の伸長されたシードの伸長である第2の伸長されたシードを生成することと、
前記マッピング及びアライニングユニットによって、前記第2の伸長されたシードを含む第3のハッシュクエリを生成することと、
前記マッピング及びアライニングユニットによって、前記第2の伸長されたシードを含む前記ハッシュテーブルの前記第3の
ハッシュクエリを実行することと、をさらに含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記マッピング及びアライニングユニットによって、かつ1つ以上のヒューリスティック規則を使用して、前記第2の間隔レコードを記述する前記第2の情報、又は前記最良間隔候補を記述する前記第1の情報が
、最良間隔として使用されるかどうかを判定することが、
前記第2の間隔レコードを記述する前記第2の情報か、又
は最良間隔候補レコードを記述する前記第1の情報のいずれかを、(i)前記間隔レコード及び前記第2の間隔レコードの各々によって返された一致する参照配列位置の数、(ii)参照配列位置の所定の閾値レベル、又は(iii)前記間隔レコード及び前記第2の間隔レコードを記憶してい
るハッシュ位置に到達した前記それぞれのシードの各シード長、を含む複数の要因に基づいて選択することを含む、請求項5に記載の方法。
【請求項7】
前記間隔レコードが、前記クエリの前記第1のシードに一致する参照配列位置を記述するデータを含む、前記シード伸長テーブル内の1個以上の位置を参照する、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記クエリの前記第1のシードに一致する参照配列位置を記述するデータを含む、前記シード伸長テーブル内の前記1個以上の位置が、
伸長テーブル内の、前記クエリの前記第1のシードに一致する参照配列位置の連続する間隔を含む、請求項7に記載の方法。
【請求項9】
ハッシュテーブルを使用して参照配列へのサンプルリードのマッピングを改善するためのシステムであって、
動作可能である命令を記憶している1つ以上のコンピュータ及び1つ以上の記憶デバイスであって、前記命令が、前記1つ以上のコンピュータによって実行されると、前記1つ以上のコンピュータに、
マッピング及びアライニングユニットによって、ハッシュテーブルのクエリを実行することであって、前記クエリが、第1のシードを含み、前記第1のシードが、前記サンプルリードの特定のリードから取得されたヌクレオチドのサブセットを含む、実行することと、
前記マッピング及びアライニングユニットによって、前記クエリに応答すると判定された前記ハッシュテーブルの位置によって記憶された情報を含む前記実行されたクエリへの応答を取得することと、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、(i)伸長レコード(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、(i)伸長レコード及び(ii)間隔レコード、を含むと判定することに基づいて、
前記マッピング及びアライニングユニットによって、伸長テーブルが、前記間隔レコードによって参照される前記伸長テーブル内の1個以上の一致する参照配列位置を取得するためにアクセスされるかどうかを判定することと、
前記伸長テーブルがアクセスされないと判定することに基づいて、
前記マッピング及びアライニングユニットによって、前記間隔レコードを記述す
る第1の情報を最良間隔候補を記述する情報としてメモリデバイスに記憶するかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記伸長レコードを使用して前記第1のシードの伸長である第1の伸長されたシードを生成することと、
前記マッピング及びアライニングユニットによって、前記第1の伸長されたシードを含む後続のハッシュクエリを生成することと、
前記マッピング及びアライニングユニットによって、前記ハッシュテーブルの前記後続のハッシュクエリを実行することと、を含む動作を実行させる、システム。
【請求項10】
前記動作が、
前記伸長テーブルがアクセスされると判定することに基づいて、
前記マッピング及びアライニングユニットによって、前記伸長テーブルにアクセスして、前記間隔レコードによって参照される前記伸長テーブル内の前記1個以上の一致する参照配列位置を取得することと、
前記マッピング及びアライニングユニットによって、前記1個以上の一致する参照配列位置をシード一致セットに追加することと、をさらに含む、請求項9に記載のシステム。
【請求項11】
前記動作が、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、1個以上の一致する参照配列位置を含むと判定することと、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、1個以上の一致する参照配列位置を含むと判定することに基づいて、
前記マッピング及びアライニングユニットによって、前記1個以上の一致する参照配列位置をシード一致セットに追加することと、をさらに含む、請求項9又は10に記載のシステム。
【請求項12】
前記マッピング及びアライニングユニットによって、前記間隔レコードを記述する前記第1の情報を最良間隔候補を記述する情報としてメモリデバイスに記憶するかどうかを判定することが、
前記マッピング及びアライニングユニットによって、前記特定のリードに対する最良間隔候補としての間隔レコードを記述する以前の情報が存在しないと判定することと、
前記マッピング及びアライニングユニットによって、前記間隔レコードを記述する前記第1の情報を最良間隔候補を記述する情報として前記メモリデバイスに記憶することと、を含む、請求項9~11のいずれか一項に記載のシステム。
【請求項13】
前記動作が、
前記マッピング及びアライニングユニットによって、前記クエリに応答すると判定された前記ハッシュテーブルの位置によって記憶された情報を含む前記後続の実行されたクエリへの応答を取得することと、
前記マッピング及びアライニングユニットによって、前記後続の実行されたクエリへの前記応答が、(i)第2の伸長レコード(ii)第2の間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記後続の実行されたクエリへの前記応答が、(i)前記第2の伸長レコード及び(ii)前記第2の間隔レコードを含むと判定することに基づいて、
前記マッピング及びアライニングユニットによって、伸長テーブルが、前記第2の間隔レコードによって参照される前記伸長テーブル内の1個以上の一致する参照配列位置を取得するためにアクセスされるかどうかを判定することと、
前記伸長テーブルがアクセスされないと判定することに基づいて、
前記マッピング及びアライニングユニットによって、かつ1つ以上のヒューリスティック規則を使用して、前記第2の間隔レコードを記述する第2の情報、又は前記最良間隔候補を記述する前記第1の情報が、前記最良間隔候補として使用されるかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記第2の伸長レコードを使用して前記第1の伸長されたシードの伸長である第2の伸長されたシードを生成することと、
前記マッピング及びアライニングユニットによって、前記第2の伸長されたシードを含む第3のハッシュクエリを生成することと、
前記マッピング及びアライニングユニットによって、前記第2の伸長されたシードを含む前記ハッシュテーブルの前記第3の
ハッシュクエリを実行することと、をさらに含む、請求項9~12のいずれか一項に記載のシステム。
【請求項14】
前記マッピング及びアライニングユニットによって、かつ1つ以上のヒューリスティック規則を使用して、前記第2の間隔レコードを記述する前記第2の情報、又は前記最良間隔候補を記述する前記第1の情報が、最良間隔として使用されるかどうかを判定することが、
前記第2の間隔レコードを記述する前記第2の情報か、又
は最良間隔候補レコードを記述する前記第1の情報のいずれかを、(i)前記間隔レコード及び前記第2の間隔レコードの各々によって返された一致する参照配列位置の数、(ii)参照配列位置の所定の閾値レベル、又は(iii)前記間隔レコード及び前記第2の間隔レコードを記憶してい
るハッシュ位置に到達した前記それぞれのシードの各シード長、を含む複数の要因に基づいて選択することを含む、請求項13に記載のシステム。
【請求項15】
前記間隔レコードが、前記クエリの前記第1のシードに一致する参照配列位置を記述するデータを含む、前記シード伸長テーブル内の1個以上の位置を参照する、請求項9~14のいずれか一項に記載のシステム。
【請求項16】
前記クエリの前記第1のシードに一致する参照配列位置を記述するデータを含む、前記シード伸長テーブル内の前記1個以上の位置が、
伸長テーブル内の、前記クエリの前記第1のシードに一致する参照配列位置の連続する間隔を含む、請求項15に記載のシステム。
【請求項17】
1つ以上のコンピュータによって実行可能な命令を含むソフトウェアを記憶している非一時的コンピュータ可読媒体であって、前記命令が、このような実行時に、前記1つ以上のコンピュータに、
マッピング及びアライニングユニットによって、ハッシュテーブルのクエリを実行することであって、前記クエリが、第1のシードを含み、前記第1のシードが
、サンプルリードの特定のリードから取得されたヌクレオチドのサブセットを含む、実行することと、
前記マッピング及びアライニングユニットによって、前記クエリに応答すると判定された前記ハッシュテーブルの位置によって記憶された情報を含む前記実行されたクエリへの応答を取得することと、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、(i)伸長レコード(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、(i)伸長レコード及び(ii)間隔レコード、を含むと判定することに基づいて、
前記マッピング及びアライニングユニットによって、伸長テーブルが、前記間隔レコードによって参照される前記伸長テーブル内の1個以上の一致する参照配列位置を取得するためにアクセスされるかどうかを判定することと、
前記伸長テーブルがアクセスされないと判定することに基づいて、
前記マッピング及びアライニングユニットによって、前記間隔レコードを記述す
る第1の情報を最良間隔候補を記述する情報としてメモリデバイスに記憶するかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記伸長レコードを使用して前記第1のシードの伸長である第1の伸長されたシードを生成することと、
前記マッピング及びアライニングユニットによって、前記第1の伸長されたシードを含む後続のハッシュクエリを生成することと、
前記マッピング及びアライニングユニットによって、前記ハッシュテーブルの前記後続のクエリを実行することと、を含む動作を実行させる、コンピュータ可読媒体。
【請求項18】
前記動作が、
前記伸長テーブルがアクセスされると判定することに基づいて、
前記マッピング及びアライニングユニットによって、前記伸長テーブルにアクセスして、前記間隔レコードによって参照される前記伸長テーブル内の前記1個以上の一致する参照配列位置を取得することと、
前記マッピング及びアライニングユニットによって、前記1個以上の一致する参照配列位置をシード一致セットに追加することと、をさらに含む、請求項17に記載のコンピュータ可読媒体。
【請求項19】
前記動作が、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、1個以上の一致する参照配列位置を含むと判定することと、
前記マッピング及びアライニングユニットによって、前記実行されたクエリへの前記応答が、1個以上の一致する参照配列位置を含むと判定することに基づいて、
前記マッピング及びアライニングユニットによって、前記1個以上の一致する参照配列位置をシード一致セットに追加することと、をさらに含む、請求項17又は18に記載のコンピュータ可読媒体。
【請求項20】
前記マッピング及びアライニングユニットによって、前記間隔レコードを記述する前記第1の情報を最良間隔候補を記述する情報としてメモリデバイスに記憶するかどうかを判定することが、
前記マッピング及びアライニングユニットによって、前記特定のリードに対する最良間隔候補としての間隔レコードを記述する以前の情報が存在しないと判定することと、
前記マッピング及びアライニングユニットによって、前記間隔レコードを記述する前記第1の情報を最良間隔候補を記述する情報として前記メモリデバイスに記憶することと、を含む、請求項17~19のいずれか一項に記載のコンピュータ可読媒体。
【請求項21】
前記動作が、
前記マッピング及びアライニングユニットによって、前記クエリに応答すると判定された前記ハッシュテーブルの位置によって記憶された情報を含む前記後続の実行されたクエリへの応答を取得することと、
前記マッピング及びアライニングユニットによって、前記後続の実行されたクエリへの前記応答が、(i)第2の伸長レコード(ii)第2の間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記後続の実行されたクエリへの前記応答が、(i)前記第2の伸長レコード及び(ii)前記第2の間隔レコードを含むと判定することに基づいて、
前記マッピング及びアライニングユニットによって、伸長テーブルが、前記第2の間隔レコードによって参照される前記伸長テーブル内の1個以上の一致する参照配列位置を取得するためにアクセスされるかどうかを判定することと、
前記伸長テーブルがアクセスされないと判定することに基づいて、
前記マッピング及びアライニングユニットによって、かつ1つ以上のヒューリスティック規則を使用して、前記第2の間隔レコードを記述する第2の情報、又は前記最良間隔候補を記述する前記第1の情報が、前記最良間隔候補として使用されるかどうかを判定することと、
前記マッピング及びアライニングユニットによって、前記第2の伸長レコードを使用して前記第1の伸長されたシードの伸長である第2の伸長されたシードを生成することと、
前記マッピング及びアライニングユニットによって、前記第2の伸長されたシードを含む第3のハッシュクエリを生成することと、
前記マッピング及びアライニングユニットによって、前記第2の伸長されたシードを含む前記ハッシュテーブルの前記第3の
ハッシュクエリを実行することと、をさらに含む、請求項17~20のいずれか一項に記載のコンピュータ可読媒体。
【請求項22】
前記マッピング及びアライニングユニットによって、かつ1つ以上のヒューリスティック規則を使用して、前記第2の間隔レコードを記述する前記第2の情報、又は前記最良間隔候補を記述する前記第1の情報が
、最良間隔として使用されるかどうかを判定することが、
前記第2の間隔レコードを記述する前記第2の情報か、又
は最良間隔候補レコードを記述する前記第1の情報のいずれかを、(i)前記間隔レコード及び前記第2の間隔レコードの各々によって返された一致する参照配列位置の数、(ii)参照配列位置の所定の閾値レベル、又は(iii)前記間隔レコード及び前記第2の間隔レコードを記憶してい
るハッシュ位置に到達した前記それぞれのシードの各シード長、を含む複数の要因に基づいて選択することを含む、請求項21に記載のコンピュータ可読媒体。
【請求項23】
前記間隔レコードが、前記クエリの前記第1のシードに一致する参照配列位置を記述するデータを含む、前記シード伸長テーブル内の1個以上の位置を参照する、請求項17~22のいずれか一項に記載のコンピュータ可読媒体。
【請求項24】
前記クエリの前記第1のシードに一致する参照配列位置を記述するデータを含む、前記シード伸長テーブル内の前記1個以上の位置が、
伸長テーブル内の、前記クエリの前記第1のシードに一致する参照配列位置の連続する間隔を含む、請求項23に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2019年5月24日に出願された米国仮特許出願第62/852,965号の利益を主張し、この出願は、参照によりその全体が本明細書に組み込まれる。
【背景技術】
【0002】
核酸シーケンサは、核酸配列のプロセスを自動化するように構成された器具である。核酸配列決定は、核酸配列中のヌクレオチドの順序を決定するプロセスである。核酸は、デオキシリボ核酸(deoxyribonucleic acid、DNA)又はリボ核酸(ribonucleic acid、RNA)を含み得る。
【0003】
核酸シーケンサは、核酸サンプルを受け取り、核酸サンプル中のヌクレオチドの順序を表す1つ以上の「リード」と呼ばれる出力データを生成するように構成されている。DNAサンプル中のヌクレオチドは、グアニン(G)、シトシン(C)、アデニン(A)、及びチミン(T)を任意の組み合わせで含む1個以上のヌクレオチド塩基を含むことができる。RNAサンプル中のヌクレオチドは、G、C、A、及びウラシル(U)を任意の組み合わせで含む1個以上の塩基を含むことができる。
【0004】
DNAシーケンサによって生成されたリードは、マッピング及びアライニングエンジンを使用して、参照ゲノムのヌクレオチドの既知の配列にマッピングできる。参照ゲノムのヌクレオチドの配列に対するリードのマッピングは、ハッシュテーブルインデックスを使用してマッピング及びアライニングエンジンによって達成できる。
【発明の概要】
【0005】
本開示は、ゲノムマッピング及びアライニングシステムの性能を改善するために、柔軟性のあるシード伸長(seed extension)を容易にするハッシュテーブルインデックスの構築及び使用について記載している。特に、本開示を使用して、(i)計算リソース及び電力の消費を低減し、かつ(ii)本明細書に記載される従来のシード伸長法に関連する問題を解決する手法で、柔軟性のあるシード伸長を実行することができる。これらの利点を達成するために、本開示は、とりわけ、ハッシュテーブル位置に記憶できる「間隔レコード」を提供する。
【0006】
本開示の態様は、マッピング及びアライニングユニットが、間隔レコードを単独で、又は1つ以上の伸長レコードと併せて使用して、シード伸長を通してマッピング及びアライニングユニットによって処理される一致する位置の数を低減することを可能にしながら、同時に、動的なシード伸長を使用して識別される一致する参照位置が正確であるかどうか、又はいくつかの場合、1つ以上の伸長レコードを使用するシード伸長がはたして行われるべきであるかどうかを判定する柔軟性を、マッピング及びアライニングユニットに提供する。これにより、より少ない電力及びより少ない計算リソースを使用する一方で、また従来のシード伸長技術自体を利用する他のマッピング及びアライニングユニットよりも正確であるマッピング及びアライニングユニットがもたらされる。
【0007】
一態様では、本開示は、参照へのサンプルリードのマッピングのためのハッシュテーブルを生成するための方法を提供する。一態様では、方法は、コンピュータシステムによって、参照配列からヌクレオチドの第1のシードを取得することであって、第1のシードが、K個のヌクレオチドの長さを有する、取得することと、コンピュータシステムによって、第1のシードが所定数の参照配列位置よりも多く一致すると判定することと、第1のシードが所定数の参照配列位置よりも多く一致すると判定することに基づいて、コンピュータシステムによって、複数のノードを有するシード伸長ツリーを生成することであって、複数のノードの各ノードが、(i)第1のシードの伸長であり、かつK*のヌクレオチド長を有する伸長されたシードであって、K*が、Kよりも大きい1個以上のヌクレオチドである、伸長されたシードと、(ii)シード伸長テーブル内の、伸長されたシードに一致する参照配列位置を記述するデータを含む、1個以上の位置と、に対応する、生成することと、複数のノードの各ノードについて、コンピュータシステムによって、伸長されたシードのインデックスキーに対応するハッシュテーブルの位置に間隔情報を記憶することであって、間隔情報が、ノードと関連付けられた伸長されたシードに一致する参照配列位置を記述するデータを含む、シード伸長テーブル内の1個以上の位置を参照する、記憶することと、のアクションを含むことができる。
【0008】
他の態様は、コンピュータ可読記憶デバイス上に符号化された命令によって定義されるような、本明細書に開示されるような方法のアクションを実行するための、対応するシステム、装置、及びコンピュータプログラムを含む。
【0009】
これら及び他の態様は、任意で、以下の特徴のうちの1つ以上を含んでもよい。例えば、いくつかの実装形態では、一致する参照配列位置の各々が、第1のシードのK個のヌクレオチドを含む。
【0010】
いくつかの実装形態では、方法は、コンピュータシステムによって、第1のシードとは異なる参照配列からヌクレオチドの第2のシードを取得することと、コンピュータシステムによって、第2のシードが、所定数の参照配列位置よりも多くは一致しないと判定することと、コンピュータシステムによって第2のシードが所定数の参照配列位置よりも多くは一致しないと判定することに基づいて、コンピュータシステムによって、第2のシードに一致する参照配列位置の各々を記述するデータを取得することと、コンピュータシステムによって、第2のシードのインデックスキーに対応するハッシュテーブルの第2の位置に、第2のシードに一致する参照配列位置を記述するデータを記憶することと、をさらに含むことができる。
【0011】
いくつかの実装形態では、伸長されたシードに一致する参照配列位置を記述するデータを含む、シード伸長テーブル内の1個以上の位置が、伸長されたシードに一致する参照配列位置を記述するデータを含む、シード伸長テーブル内の位置の連続する間隔を含むことができる。
【0012】
いくつかの実装形態では、ノードと関連付けられた伸長されたシードに一致する参照配列位置を記述するデータを含む、シード伸長テーブル内の1個以上の位置が、ノードと関連付けられた伸長されたシードに一致する参照配列位置の伸長テーブル内に連続する間隔を含むことができる。
【0013】
いくつかの実装形態では、コンピュータシステムによって、参照配列からヌクレオチドの第1のシードを取得することであって、第1のシードが、K個のヌクレオチドのヌクレオチド長を有するヌクレオチドの配列を表す、取得することが、コンピュータシステムによって、参照配列内のシードアクセス窓の位置を判定することと、コンピュータシステムによって、シードアクセス窓によって識別される参照配列のサブセットを取得することと、を含むことができる。
【0014】
いくつかの実装形態では、方法は、コンピュータシステムによって、シード伸長窓を参照配列に沿って順方向にK個のヌクレオチドだけ調整して、K個のヌクレオチドのヌクレオチド長を有する参照配列からヌクレオチドの第2のシードを識別することと、コンピュータシステムによって、第2のシードを参照配列から取得することと、第2のシードが、所定数の参照配列位置よりも多く一致すると判定することと、第2のシードが所定数の参照配列位置よりも多く一致すると判定することに基づいて、コンピュータシステムによって、複数の第2のノードを有する第2のシード伸長ツリーを生成することであって、複数の第2のノードの各第2のノードが、(i)第2のシードの伸長であり、かつK*のヌクレオチド長を有する第2の伸長されたシードであって、K*が、Kよりも大きい1個以上のヌクレオチドである、第2の伸長されたシードと、(ii)第2のシード伸長テーブル内の、第2の伸長されたシードに一致する参照配列位置を記述するデータを含む、1個以上の第2の位置と、に対応する、生成することと、複数の第2のノードの各第2のノードについて、コンピュータシステムによって、第2の伸長されたシードのインデックスキーに対応するハッシュテーブルの位置に第2の間隔情報を記憶することであって、第2の間隔情報が、第2のノードと関連付けられた第2の伸長されたシードに一致する参照配列位置を記述するデータを含む、第2のシード伸長テーブル内の1個以上の位置を参照する、記憶することと、をさらに含むことができる。
【0015】
いくつかの実装形態では、方法は、複数のノードの各ノードについて、コンピュータシステムによって、シード伸長ツリーのノードが、リーフノードであるかどうかを判定することと、コンピュータシステムによって、伸長ツリーのノードが、リーフノードでないと判定することに基づいて、コンピュータシステムによって、伸長されたシードのインデックスキーに対応するハッシュテーブルの位置に伸長レコードを記憶することと、をさらに含むことができる。
【0016】
いくつかの実装形態では、伸長レコードが、コンピュータシステムによって実行されるとコンピュータシステムに1個以上の追加のヌクレオチドを伸長レコードと関連付けられたシードに追加させる、1つ以上の命令を含む。
【0017】
いくつかの実装形態では、コンピュータシステムによってノード伸長ツリードがリーフノードであると判定することに基づいて、コンピュータシステムによって、伸長されたシードのインデックスキーに対応するハッシュテーブルの位置に伸長レコードを記憶しないこと、をさらに含むことができる。
【0018】
いくつかの実装形態では、方法は、コンピュータシステムによって、シード伸長テーブルを生成することをさらに含むことができる。このような実装形態では、シード伸長テーブルを生成することが、コンピュータシステムによって、第1のシードに一致する参照配列の各シードを識別することと、コンピュータシステムによって、識別されるシードを識別するデータをシード伸長テーブルに記憶することと、を含むことができる。
【0019】
いくつかの実装形態では、方法は、コンピュータシステムによって、シード伸長テーブル内の識別されるシードをソートすることをさらに含むことができる。
【0020】
いくつかの実装形態では、方法は、コンピュータシステムによって、ハッシュテーブルインストールパッケージを生成することであって、ハッシュテーブルインストールパッケージが、ハッシュテーブルインストールパッケージを受信する1つ以上のコンピュータによって処理されると1つ以上のコンピュータに、プログラム可能な論理回路によってアクセス可能であるメモリにハッシュテーブルをインストールさせる命令を含む、生成することをさらに含むことができる。
【0021】
いくつかの実装形態では、ハッシュテーブルインストールパッケージが、シード伸長テーブルを含むことができ、ハッシュテーブルインストールパッケージが、(i)プログラム可能な論理回路又は(ii)別のコンピュータに、プログラム可能な論理回路がアクセス可能であるメモリデバイスにシード伸長テーブルを記憶するように命令する命令を含むことができる。
【0022】
いくつかの実装形態では、コンピュータシステムによって、ハッシュテーブルインストールパッケージを別のコンピュータに提供する。
【0023】
いくつかの実装形態では、他のコンピュータが、(i)プログラム可能な論理回路と通信するように構成されたコンピュータ、又は(ii)プログラム可能な論理回路自体を含むことができる。
【0024】
いくつかの実装形態では、コンピュータシステムは、複数のコンピュータを含むことができる。
【0025】
別の態様では、本開示は、ハッシュテーブルを使用して参照配列へのサンプルリードのマッピングを改善するための方法を提供する。一態様では、方法は、マッピング及びアライニングユニットによって、ハッシュテーブルのクエリを実行することであって、クエリが、第1のシードを含み、第1のシードが、サンプルリードの特定のリードから取得されたヌクレオチドのサブセットを含む、実行することと、マッピング及びアライニングユニットによって、クエリに応答すると判定されたハッシュテーブルの位置によって記憶された情報を含む実行されたクエリへの応答を取得することと、マッピング及びアライニングユニットによって、実行されたクエリへの応答が、(i)伸長レコード(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを判定することと、マッピング及びアライニングユニットによって、マッピング及びアライニングユニットによって実行されたクエリへの応答が(i)伸長レコード及び(ii)間隔レコードを含むと判定することに基づいて、伸長テーブルが、間隔レコードによって参照される伸長テーブル内の1個以上の一致する参照配列位置を取得するためにアクセスされるかどうかを判定することと、伸長テーブルがアクセスされないと判定することに基づいて、マッピング及びアライニングユニットによって、間隔レコードを記述する第1の情報を最良間隔候補を記述する情報としてメモリデバイスに記憶するかどうかを判定することと、マッピング及びアライニングユニットによって、伸長レコードを使用して第1のシードの伸長である第1の伸長されたシードを生成することと、マッピング及びアライニングユニットによって、第1の伸長されたシードを含む後続のハッシュクエリを生成することと、マッピング及びアライニングユニットによって、ハッシュテーブルの後続のハッシュクエリを実行することと、を含むことができる。
【0026】
他のバージョンは、コンピュータ可読記憶デバイス上に符号化された命令によって定義される方法のアクションを実行するための、対応するシステム、装置、及びコンピュータプログラムを含む。
【0027】
本開示のこれら及び他の態様は、以下の特徴のうちの1つ以上を任意で含むことができる。例えば、いくつかの実装形態では、この方法は、伸長テーブルがアクセスされると判定することに基づいて、マッピング及びアライニングユニットによって、伸長テーブルにアクセスして、間隔レコードによって参照される伸長テーブル内の1個以上の一致する参照配列位置を取得することと、マッピング及びアライニングユニットによって、1個以上の一致する参照配列位置をシード一致セットに追加することと、をさらに含むことができる。
【0028】
いくつかの実装形態では、方法は、マッピング及びアライニングユニットによって、実行されたクエリへの応答が、1個以上の一致する参照配列位置を含むと判定することと、マッピング及びアライニングによって、実行されたクエリへの応答が1個以上の一致する参照配列位置を含むと判定することに基づいて、マッピング及びアライニングによって、1個以上の一致する参照配列位置をシード一致セットに追加することと、をさらに含むことができる。
【0029】
いくつかの実装形態では、マッピング及びアライニングユニットによって、間隔レコードを記述する第1の情報を最良間隔候補を記述する情報としてメモリデバイスに記憶するかどうかを判定することが、マッピング及びアライニングユニットによって、特定のリードに対する最良間隔候補としての間隔レコードを記述する以前の情報が存在しないと判定することと、マッピング及びアライニングユニットによって、間隔レコードを記述する第1の情報を最良間隔候補を記述する情報としてメモリデバイスに記憶することと、を含むことができる。
【0030】
いくつかの実装形態では、方法は、マッピング及びアライニングユニットによって、クエリに応答すると判定されたハッシュテーブルの位置によって記憶された情報を含む後続の実行されたクエリへの応答を取得することと、マッピング及びアライニングユニットによって、後続の実行されたクエリへの応答が、(i)第2の伸長レコード(ii)第2の間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むと判定することと、マッピング及びアライニングユニットによって、後続の実行されたクエリへの応答が、(i)第2の伸長レコード又は(ii)第2の間隔レコードを含むと判定することに基づいて、マッピング及びアライニングユニットによって、伸長テーブルが、第2の間隔レコードによって参照される伸長テーブル内の1個以上の一致する参照配列位置を取得するためにアクセスされるかどうかを判定することと、伸長テーブルがアクセスされないと判定することに基づいて、マッピング及びアライニングユニットによって、かつ1つ以上のヒューリスティック規則を使用して、第2の間隔レコードを記述する第2の情報、又は最良間隔候補を記述する第1の情報が、最良間隔候補として使用されるかどうかを判定することと、マッピング及びアライニングユニットによって、第2の伸長レコードを使用して第1の伸長されたシードの伸長である第2の伸長されたシードを生成することと、マッピング及びアライニングユニットによって、第2の伸長されたシードを含む第3のハッシュクエリを生成することと、マッピング及びアライニングユニットによって、第2の伸長されたシードを含むハッシュテーブルの第3のクエリを実行することと、をさらに含むことができる。
【0031】
いくつかの実装形態では、マッピング及びアライニングユニットによって、かつ1つ以上のヒューリスティック規則を使用して、第2の間隔レコードを記述する第2の情報、又は最良間隔候補を記述する第1の情報が、最良間隔として使用されるかどうかを判定することが、第2の間隔レコードを記述する第2の情報か、又は最良間隔候補レコードを記述する第1の情報のいずれかを、(i)間隔レコード及び第2の間隔レコードの各々によって返された一致する参照配列位置の数、(ii)参照配列位置の所定の閾値レベル、又は(iii)間隔レコード及び第2の間隔レコードを記憶しているハッシュ位置に到達したそれぞれのシードの各シード長、を含む複数の要因に基づいて選択することを含むことができる。
【0032】
いくつかの実装形態では、間隔レコードが、シード伸長テーブル内の、クエリの第1のシードに一致する参照配列位置を記述するデータを含む、複数の位置を参照する。
【0033】
いくつかの実装形態では、シード伸長テーブル内の、クエリの第1のシードに一致する参照配列位置を記述するデータを含む複数の位置が、伸長テーブル内に、クエリの第1のシードに一致する参照配列位置の連続する間隔を含むことができる。
【0034】
別途定義されない限り、本明細書で使用される全ての技術用語及び科学用語は、本発明が属する技術分野の当業者によって一般的に理解されるものと同じ意味を有する。本明細書に記載されるものと同様又は同等の方法及び材料を本発明の実施又は試験に使用することができるが、好適な方法及び材料が、以下に記載されている。本明細書で言及される全ての刊行物、特許出願、特許、及び他の参考文献は、参照によりその全体が本明細書に組み込まれる。矛盾の場合、本明細書は、定義を含めて、制御する。加えて、材料、方法、及び実施例は、単なる例示であり、限定することを意図するものではない。
【0035】
本開示のこれら及び他の態様は、添付の図面及び特許請求の範囲を参照して以下の詳細な説明においてより詳細に論じられる。
【図面の簡単な説明】
【0036】
【
図1】ハッシュテーブルゲノムマッピングのための柔軟性のあるシード伸長を容易にするハッシュテーブルインデックスを生成するためのシステムのコンテキスト図である。
【
図2】ハッシュテーブルゲノムマッピングのための柔軟性のあるシード伸長を容易にするハッシュテーブルインデックスを生成するためのプロセスのフローチャートである。
【
図3】ハッシュテーブルゲノムマッピングのためのランタイムの柔軟性のあるシード伸長を実行するためのランタイムシステムのコンテキスト図である。
【
図4】ハッシュテーブルゲノムマッピングのための、ランタイムの柔軟性のあるシード伸長を実行するためのプロセスのフローチャートである。
【
図5】リードの各シードに対するハッシュテーブルゲノムマッピングのための、反復的なランタイムの柔軟性のあるシード伸長を実行するためのプロセスのフローチャートである。
【
図6】ハッシュテーブルゲノムマッピングのための柔軟性のあるシード伸長に関連した本明細書に記載されるシステムを実装するために使用できるシステム構成要素の図である。
【
図7】柔軟性のあるシード伸長法を使用しないシステムと比較した、本明細書に記載されるような柔軟性のあるシード伸長法を使用するシステムにおけるマッピングされないリードの割合の形態をなす試験結果を表すデータを表示する棒グラフの説明図である。
【
図8】柔軟性のあるシード伸長法を使用しないシステムと比較した、本明細書に開示されるような柔軟性のあるシード伸長法を使用するシステムにおけるリードマッピング精度の形態をなす試験結果を表すデータを表示する線グラフの説明図である。
【発明を実施するための形態】
【0037】
本開示は、ゲノムマッピング及びアライニングシステムの性能を改善するために、柔軟性のあるシード伸長(seed extension)を容易にするハッシュテーブルインデックスの構築及び使用について記載している。本明細書で使用される場合、用語「シード」は、核酸リード(「リード」)又は核酸参照配列(「参照配列」)に存在する連続ヌクレオチドのサブセットを指す。例として、リードのための短いシードは、例えば、シーケンサへの生体サンプル入力に基づいて、例えば、核酸シーケンサ(「シーケンサ」)によって生成された150個の塩基又はヌクレオチドのリードから抽出される21個の塩基又はヌクレオチドを有することができる。このような短いシードは、数百の、数千の、数十万の、又はさらに多い参照配列の位置に一致することが可能である。参照配列のシードは、参照配列位置を表す参照配列からの連続ヌクレオチドのサブセットを含むことができる。リードの特定の短いシードに一致するこのような大量の参照配列位置の識別は、参照配列内の多くの位置に発生し得る「...ATATAT...」などの反復配列の発生を含む複数の理由で生じることが可能である。これに代えて、又はこれに加えて、このような多量の一致する参照配列位置は、ゲノム配列の多くの近方コピーが、参照配列内に出現することができるために、発生することが可能である。
【0038】
特定の短いシードに一致するこれらの大量の参照配列位置は、マッピング及びアライニングエンジンが、大量の一致を処理するように強制できるため、従来のハッシュテーブルインデックスを使用して従来のマッピング及びアライニングユニットにひずみを生じさせることができる。特定の短いシードに一致する大量の参照配列位置のこのような過剰な処理は、処理リソース、メモリリソースの酷使を含む計算リソースの不必要な消費と、処理リソース、メモリデバイス、並びに処理リソース及びメモリリソースを冷却するために使用される冷却ユニット、又はそれらの任意の組み合わせに電力を供給するために使用される電力の浪費とをもたらす。
【0039】
従来の方法は、短いシードに一致する大量の参照配列位置の識別及び処理から生じる可能性がある問題に対処するために利用されてきた。例えば、ハッシュテーブル位置に記憶された伸長レコードを利用して、短いシードを反復的に伸長する従来の方法が利用されてきた。このような方法として、例えば、参照により本明細書に組み込まれる米国特許第10,083,276号に記載されたものが挙げられ、これは、ハッシュクエリのシードに対応するハッシュテーブルの位置に記憶された「伸長レコード」を返すことができる。伸長レコードを使用して、シードの各末端に1個以上の塩基又はヌクレオチドを追加することによって、受信されたハッシュクエリ内のシードの長さを対称的に増加させることによって、伸長されたシードを作成することができる。次いで、従来のシステムは、伸長されたシードを含む別のハッシュクエリを使用して、ハッシュテーブルを再度クエリすることができる。伸長されたシードを有するこの他のハッシュクエリは、伸長されたシードがより長いため、伸長されたシードに一致するより少ない参照位置を識別するハッシュ位置に対応する可能性が高い。この反復プロセスは、(i)結果として得られる一致セットが、伸長されたシードに一致する閾値数未満の参照配列位置を含むのに十分に収縮するか、(ii)一致セットが空になるか、(iii)最大シード伸長に到達するか、又は(iv)伸長が、短いシードが基づくリードのエッジを越えて移動するため、次の伸長が可能でないときまで、継続することができる。厳密には、従来のシステムでは、マッピング及びアライニングユニットは、上記の手法(ii)、(iii)、又は(iv)のいずれで終了する場合でもなく、反復プロセスが上記の手法(i)で終了する場合にのみ、一致する参照位置の空でないセットを取得し得る。
【0040】
これらの従来の方法は、短いシードに一致する参照配列位置の量を低減するのに役立つことが可能である。しかしながら、これらの従来の方法は、3つの別異する問題に悩まされる。
【0041】
第1に、従来の方法は、「マッピングされないリードの問題」に陥りやすい可能性がある。マッピングされないリード問題は、従来のシード伸長法が、伸長されたシードに対してゼロ一致を返すときに生じる。このようなゼロ一致結果セットは、伸長されたシードがSNPなどの変異体を組み込んでいる場合、又は伸長されたシードが、伸長されたシードが対応するリードのエッジをオーバーランしている場合に生じる可能性がある。このようなシナリオが、従来の方法を使用したリードの各シード場所に対して生じた場合、リードは、マッピングされない可能性がある。
【0042】
第2に、従来の方法は、「高確度の誤マッピング問題」に陥りやすい可能性がある。このような高確度の誤マッピング問題は、伸長されたシードがSNPなどの変異体を含むが、1個以上の参照位置に依然として一致する場合に生じる。このようなマッピングは、伸長されたシードが不適切にマッピングされても、高MAPQスコアなどの高確度のスコアによって特徴付けできる。これが従来の方法を使用したリードの各シード場所に対して起こる場合、リードは、潜在的に高確度で誤マッピングされ得る。このようなマッピングのために、反対に、エビデンスが失われる可能性がある。高確度の誤マッピングは、低確度の誤マッピングよりも、全体的なマッパーの精度に対して、より有害である可能性がある。MAPQスコアは、マッピングされたリードが誤配置されている確率を定量化する品質スコアを含むことができる。
【0043】
第3に、従来の方法は、「固定された最大一致の問題」に陥りやすい可能性がある。一般に、シード伸長のために構築されたハッシュテーブルは、M=16などの最大一致パラメータMを使用する。このパラメータは、シード伸長ツリーのリーフノードがMのパラメータを超えないことを確実にする。しかしながら、いくつかのアプリケーションは、M=64などの異なる最大一致パラメータM*を使用することから利益を得ることができる。従来のシード伸長法の場合、リーフノードに到達するまで、シードを反復的に伸長させ続ける。したがって、従来の方法を使用したアプリケーションは、最大一致パラメータMが64に設定されるようにハッシュテーブルが再構築されなかった場合、M=64の一致するセットが達成されたときに、シードの伸長を停止させることができない。
【0044】
本開示の革新的な態様を使用して、(i)本明細書に記載されるような計算リソース及び電力の消費を低減し、かつ(ii)上述したそれらの問題などの従来のシード伸長法に関連する問題を解決する手法で、柔軟性のあるシード伸長を実行することができる。これらの利点を達成するために、本開示は、とりわけ、ハッシュテーブル位置に記憶できる「間隔レコード」を提供する。間隔レコードは、特定のシードについて、シード伸長テーブルに記憶された、特定のシードに一致する、参照配列位置の連続するセットを識別する。特定のシードを識別するハッシュクエリを実行すると、マッピング及びアライニングユニットは、クエリに応答するハッシュ位置の内容に基づいて、(i)ハッシュ位置に記憶されたシード伸長レコードに基づいてシードを伸長するか、(ii)シード伸長テーブル内の、特定のシードに一致する参照位置を識別する間隔レコードを記憶するか、又は(iii)シード伸長テーブル内の、ハッシュ位置に記憶された間隔レコードによって識別される参照配列位置にアクセスするかどうかを判定することができる。いくつかの実装形態では、シードを伸長させて間隔を記憶することなどの、これらの動作の組み合わせを実行することができる。
【0045】
したがって、間隔レコードを1つ以上の伸長レコードと併せて使用することにより、マッパー及びアライナが、シード伸長を通してマッピング及びアライニングユニットによって処理される一致する位置の数を低減することを可能にしながら、同時に、動的なシード伸長を使用して識別される一致する参照位置が正確であるかどうか、又はいくつかの場合、1つ以上の伸長レコードを使用するシード伸長がはたして行われるべきであるかどうかを判定する柔軟性を、マッピング及びアライニングユニットに提供する。これにより、より少ない電力及びより少ない計算リソースを使用する一方で、また従来のシード伸長技術自体を利用する他のマッピング及びアライニングユニットよりも正確であるマッピング及びアライニングユニットがもたらされる。
柔軟性のある封止された伸長のためのハッシュテーブルインデックスの生成
【0046】
図1は、ハッシュテーブルゲノムマッピングのための柔軟性のあるシード伸長を容易にするハッシュテーブルインデックスを生成するためのシステム100のコンテキスト図である。システム100は、コンピュータ110、メモリ112、及びメモリ130を含む。
図1にはメモリ112及び130が別個のメモリデバイスとして描示されているが、本開示は、そのように限定される必要はない。代わりに、いくつかの実装形態では、メモリ112及びメモリ130は、同じメモリデバイスとすることができる。例えば、メモリ112及びメモリ130は、単に、単一のメモリデバイス上の2つの別個の記憶位置を指す。これに代えて、メモリ112及びメモリ130は、各々、コンピュータ110によってアクセス可能な別個のハードディスクなどの別個のメモリデバイスに格納できる。別の例として、メモリ112は、参照ゲノムのライブラリを記憶するクラウドベースのサーバのメモリデバイスとすることができ、メモリ130は、コンピュータ110のローカルメモリとすることができる。したがって、
図1では別個のメモリであるメモリ112及びメモリ130の描示は、メモリ112,130自体、又はそれらのメモリの内容に限定されず、これらのメモリが、本開示の任意の特定の実装形態に編成又は格納されなければならないことを要しない。
【0047】
コンピュータ110は、1つ以上のソフトウェア命令を実行することによって動作を実行するように構成された1つ以上の処理ユニットを各々が含むコンピュータ又は複数のコンピュータを含むことができる。1つ以上の処理ユニットは、1つ以上の中央処理ユニット(central processing unit、CPU)、1つ以上のグラフィック処理ユニット(graphical processing unit、GPU)、又はこれらの任意の組み合わせを含むことができる。コンピュータ110は、1つ以上のバス、1つ以上のUSBケーブル、1つ以上のUSB-Cケーブルなど、又はこれらの任意の組み合わせなどの直接接続を介して、メモリ112、メモリ130,又はプログラム可能な回路162と直接相互作用するように構成できる。これに代えて、又はこれに加えて、コンピュータ110は、1つ以上のネットワークを介してメモリ112、メモリ130、又はプログラム可能な回路162と相互作用するように構成できる。1つ以上のネットワークは、有線Ethernetネットワーク、無線ネットワーク、光ネットワーク、LAN、WAN、セルラーネットワーク、インターネット、又はそれらの任意の組み合わせを含むことができる。
【0048】
一例として、一実装形態は、(i)コンピュータ110がアクセス可能な1つ以上のローカルメモリデバイス内に格納されたメモリ112及びメモリ130と相互作用して、シード伸長テーブル132及びハッシュテーブル140を生成し、かつ(ii)1つ以上のネットワークを使用して、生成されたシード伸長テーブル132及びハッシュテーブル140を、別のデバイス160と一体化されたプログラム可能な回路162に伝達するように構成されたコンピュータ110を含むことができる。他のデバイス160は、核酸シーケンサ、クラウドベースのサーバ(単数又は複数)、又は任意の他のコンピュータを含むことができる。いくつかの実装形態では、プログラム可能な回路162は、PCIカードなどの拡張カードを使用して、他のデバイスと統合できる。このような実装形態では、プログラム可能な回路162は、マザーボード上のPCIポートを使用して、シーケンサ、クラウドベースのサーバ、又は他のコンピュータのマザーボードに挿入されたPCIカードのロジックボード上に収容できる。
【0049】
プログラム可能な回路162は、1つ以上のフィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)などの1つ以上のプログラム可能な集積回路を含むことができる。フィールドプログラマブルゲートアレイは、マッピング及びアライニングユニット170などのゲノム解析パイプラインのゲノム解析モジュール、又はハッシュテーブル140などの処理モジュールの一部分などの1つ以上の処理モジュールを実装するように動的に構成可能である、複数のハードウェアデジタル論理ゲート、ハードウェアデジタル論理回路などを含む集積回路である。FPGAは、超高速集積回路ハードウェア記述言語(Very High Speed Integrated Circuit Hardware Description Language、VHDL)、Verilogなどのハードウェア記述言語(hardware description language、HDL)を使用してプログラムできる。FPGAは、ゲノム解析パイプラインの1つ以上のゲノム解析モジュール又はこのゲノム解析モジュールの一部分を含むように事前にプログラムされたFPGAが、1つ以上のゲノム解析モジュール、他の異なるゲノム解析モジュールなどに対する更新を含むように動的に再構成できる点で、柔軟性がある。
【0050】
本明細書に記載されるプログラム可能な回路162の機能性を実現するために、プログラム可能な回路162の代わりに、又はプログラム可能な回路162に加えて、他の種類の集積回路を使用することができる。例えば、1つ以上の特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)を使用して、プログラム可能な回路162の機能性、又は機能性の一部分を実現することができる。ASICは、製造時に構成された複数のハードウェアデジタル論理ゲート、複数のデジタル論理回路などを含む、カスタム集積回路である。ASICは、ハードウェアデジタル論理ゲート、又はASICの複数のデジタル論理回路が、VHDL、Verilogなどのハードウェア記述言語を使用して記述又は設計できる点で、本明細書に記載されるFPGAと同様である。次いで、ASICは、HDLによって記述されるデジタル論理回路又はデジタル回路を含むように製造又は印刷できる。しかしながら、ASICは、製造又は印刷されると、FPGAのように動的に再構成できない。本明細書に記載される実施例は、プログラム可能な回路又はカスタム回路を記載しているが、本開示は、そのように限定される必要はない。いくつかの実装形態では、例えば、プログラム可能な回路162によって実行されるものとして記載される機能性を実現するために、他の種類の集積回路を使用することができる。
【0051】
メモリ112は、1つ以上の参照配列114を記憶することができる。参照配列は、(i)種を代表する全参照ゲノム、(ii)種を代表する参照ゲノムの一部分、又は(iii)複数の種を代表する完全な及び/又は部分的な参照ゲノムを含むことができる。参照配列は、塩基又はヌクレオチドの連続的なリストを含む。参照配列を構成する塩基又はヌクレオチドの連続的なリストは、デジタル核酸配列データベースとしてメモリ112内に編成できる。種を代表するものとして、特定の種の複数の異なるドナーから、人間、コンピュータ、又はその両方によって、特定の参照配列を組み立てることができる。
【0052】
いくつかの実装形態では、特定の参照配列を、特定の集団を代表するものとして組み立てることができ、ここで、特定の集団は、種内の他の集団から特定の集団を一意に区別し得る特定の核酸配列を有する種のサブセットである。種は、ヒト、非ヒト哺乳動物、は虫類、魚、昆虫、植物、細菌、ウイルスなどを含む任意の種を含むことができる。参照配列は、ヒトなどの非絶滅種のサンプルから、又は、恐竜又はマンモスの集団などの現在では絶滅した種から生成できる。恐竜などの絶滅種の参照配列は、化石化、凍結、又は他の方法で保存された絶滅種の残存物内に含有される生物学的物質から取得される試料を使用して組み立てられ得る。絶滅種の参照配列は、(i)絶滅種の化石化された残存物から取得される生物学的残存物の配列決定と、(ii)非絶滅種からの生物学的試料の配列決定と、の組み合わせから組み立てられ得る。参照ゲノム全体は、多くの連続塩基又は連続ヌクレオチドを含むことができる。例えば、ヒト参照ゲノムは、3億もの連続塩基又は連続ヌクレオチドを含むことができる。
【0053】
コンピュータ110は、柔軟性のあるシード伸長を容易にするハッシュテーブル140を生成するように構成されている。コンピュータ110は、メモリ112に記憶された参照配列114にアクセスし、かつ参照配列のシード114-1,114-2,114-3~114-nを取得することによって、ハッシュテーブル140を生成し始め、ここで、nは、0よりも大きい任意の非ゼロ整数である。いくつかの実装形態では、コンピュータ110は、シードアクセス窓を使用して、参照配列114のシード114-1,114-2,114-3~114-nを識別及び取得することができる。コンピュータ110は、シードアクセス窓をシード長さKとなるように初期化することができ、ここで、Kは、各シードに含まれる塩基又はヌクレオチドの数であり、Kは、ゼロよりも大きい任意の非ゼロ整数である。コンピュータ110は、参照配列の開始時に、長さKのシードアクセス窓を位置決めして、シード「GTTTA」114-1などの参照配列にK個のヌクレオチドの第1のセットを包含するように、参照配列114のシードにアクセスし始めることができる。この実施例では、Kは、5に等しいが、Kは、このようなヌクレオチド長に限定されない。代わりに、Kを、ゼロよりも大きい任意の非ゼロ整数に等しくすることができ、いくつかの実装形態では、例えば、7,10,12,15,18,20,21,25個、又はそれより多い塩基又はヌクレオチドに等しくしてもよい。シード114-1,114-2,及び114-3~114-nは、参照配列114のシードの単なる実施例であり、この実施例では、参照配列114の4つの配列シードのセットに対応する必要はない。
【0054】
ハッシュテーブル140を生成するために、コンピュータ110は、参照配列114の各シード114-1,114-2,及び114-3~114-nにアクセスし、かつ各シード114-1,114-2,及び114-3~114-nに対して動作のセットを実行するように構成されている。動作のセットは、ハッシュテーブル140のインデックスキー142に対応するハッシュテーブル140のハッシュ位置144に記憶するための情報を生成するように設計されている。各インデックスキー142は、参照配列114の複数のシード114-1,114-2,114-3~114-n、のそれぞれのシード、シード114-1,114-2,114-3~114-nの各々の逆補体、複数のシード114-1,114-2,114-3~114-nのうちの1つ以上の伸長されたシード、又は伸長されたシードの各々の逆補体に対応することができる。インデックスシード142の各々は、ハッシュ関数143を使用してハッシュ位置144にマッピングできる。
【0055】
コンピュータ110は、それぞれの各シードがアクセスされ、かつ動作のセットを実行するために使用された後に、参照配列114内のシードアクセス窓のK個の位置を前進させることによって、複数のシード114-1,114-2,及び114-3~114-nの各シードを識別し、及びこの各シードにアクセスすることができる。それぞれの各シード114-1,114-2,及び114-3~114-nに対して実行される動作のセットは、以下により詳細に記載される。操作のセットは、生成された情報を使用してハッシュテーブル140の集団を含むことができる。これに代えて、ハッシュテーブル140の集団は、各シードについて動作のセットが完了した後に生じることが可能である。
【0056】
コンピュータ110の動作のセットは、参照配列114の各シード114-1,114-2、及び114-3~114-n上で、コンピュータ110がシードアクセス窓によって識別されるシードを取得することで開始する。
図1の実施例では、シードアクセス窓によって識別される参照配列114のシードが、「GTTTA」114-1であるものとする。
【0057】
コンピュータ110は、取得されたシード「GTTTA」114-1が、所定数の参照配列114の位置よりも多く一致するかどうかを判定することができる。一致する参照配列位置は、シード114-1を含む参照配列114のサブセットを含むことができる。参照配列114のサブセットは、取得されたシード中のK個以上のヌクレオチドである、連続的に順序付けられたヌクレオチドのセットを含むことができる。いくつかの実装形態では、所定数の一致する参照配列位置は、1個の一致する参照配列位置を含むことができる。ただし、他の実装形態では、所定数は、2個以上の一致する参照配列位置に設定できる。
【0058】
シード114-1が、所定数の参照配列位置以下、あるいは一致するとコンピュータ110が判定した場合には、コンピュータは、シード114-1に一致する参照位置(単数又は複数)を、シード「GTTTA」114-1が到達したハッシュ位置144に充填することができる。ハッシュ関数143がハッシュ位置にマップするハッシュキー142にシード114-1が一致する場合、ハッシュ位置144に、シード114-1などのシードが「到達する」ことができる。これに代えて、コンピュータ110が、所定数の一致する参照配列位置が所定数の参照配列位置よりも多いと判定した場合には、コンピュータ110は、シード114-1についてのシード伸長ツリーを生成することができる。
図1の実施例では、コンピュータ110は、シード「GTTTA」114-1が所定数の参照配列位置よりも多く一致すると判定する。したがって、コンピュータ110は、シード114-1についてのシード伸長ツリー120を生成する。
【0059】
コンピュータ110は、ルートノード120から開始してノードごとにシード114-1についてのシード伸長ツリー120を生成することができる。シード伸長ツリー120は、リーフノードによって識別される一致する参照位置のセットが、さらなるシード伸長が可能でない場合、所定の一致限界を超えないように生成できる。シード伸長ツリー120の各ノードは、シード伸長テーブル132内の連続するアドレスのシード及び間隔を含むことができる。いくつかの実装形態では、シード伸長テーブル132は、シードアクセス窓を使用してコンピュータ110によって取得されたシード114-1などのシードに一致する、131-1~131-6の参照配列位置の中心辞書式にソートされたリストを含む。中心辞書式ソートは、例えば、記号場所の優先順位を確立すること、次いで、中心記号から左及び右の外側に交互に入れ替えることを含むことができる。これに代えて、中心辞書式ソートは、例えば、記号場所の優先順位を確立すること、次いで、中心記号から右及び左の外側に交互に入れ替えることを含むことができる。さらに、他の変形例をも使用することができる。
【0060】
図1の実施例では、シード伸長テーブル132は、「GTTTA」のシード114-1に基づいて、133で中心辞書式にソートされている。この実施例は、
図1に示される中央辞書的なソート順序を達成するために、左を1番目とする通常のアルファベットのヌクレオチド順序(すなわち、A、C、G、T)を想定している。コンピュータ110は、所定の閾値数よりも多い一致する参照配列位置を有すると判定された各シード114-1,114-2,114-3,114-nについて、シード伸長テーブル132などのシード伸長テーブルを生成することができる。いくつかの実装形態では、各適格シードについてのシード伸長テーブル132は、コンピュータ110がシードアクセス窓を使用して特定のシードにアクセスした後であって、かつシードについてのシード伸長ツリー120が生成される前に、特定のシードについて生成され得る。
【0061】
上記のシード伸長ツリー120のノードの説明は、各ノードのアドレスの間隔が連続していることを示す。ただし、本開示は、そのように限定される必要はない。代わりに、ノードのアドレスの間隔は、連続していなくてもよい。例えば、特定の実装形態は、シード伸長テーブルの1個以上の連続する位置の複数の異なるセット、又は1つ以上のメモリデバイスに記憶された他のデータ構造の複数の異なるセットを記述するための間隔を使用してもよく、1個以上の連続する位置の各連続するセットは、互いに対して非連続である。すなわち、それぞれの各セットの間に連続性の破断が存在することが可能である。
【0062】
各適格シードについてのシード伸長テーブルは、メモリ130に記憶できる。これにより、n個のシード伸長テーブル、すなわち、参照配列114のn個のシードの各々について1つがもたらされ得る。これに代えて、シード伸長テーブルの数は、シード伸長テーブルが、所定の閾値数よりも多い一致する参照配列位置を有するシードに対してのみ生成及び記憶される場合など、n未満であってもよい。シード伸長テーブルの各々の生成後、シード伸長テーブルの各々のセット132Aを、プログラム可能な回路162を収容するデバイス160に提供し、プログラム可能な回路162がアクセス可能であるメモリ180に記憶することができる。メモリ180は、DRAMメモリ、SRAMメモリ、NANDメモリなどを含むことができる。いくつかの実装形態では、シード伸長テーブルのセット132Aを、プログラム可能な回路162を個々のシード伸長テーブルとして収容するデバイス160に提供することができる。他の実装形態では、シード伸長テーブルのセット132Aは、各シードのそれぞれのシード伸長テーブルの各々の連結から構成される単一のマスターシード伸長テーブルとして提供され得る。シード伸長テーブルのセット132Aは、任意の数のフォーマットで提供できる。いくつかの実装形態では、シード伸長テーブルのセット132Aは、デバイス160に提供されたシード伸長テーブルファイルのサイズを低減し、かつ、次いで、メモリ180に記憶するためにデバイス160、プログラム可能な回路162などによって解凍されるように、コンピュータ110によって圧縮できる。
【0063】
コンピュータ110は、シード「GTTTA」121a及び間隔A 121bを含むためのシード伸長ツリー120のルートノード121を生成することができる。間隔A 121bは、ルートノード121によって表されるシード「GTTTA」121aに一致する参照配列位置を記憶するシード伸長テーブル132内の位置の連続する間隔を識別する。この例では、間隔Aは、131-1~132-6にわたり、かつ「TAGTTTACT」、「TAGTTTATC」、「GAGTTTATG」、「ACGTTTAGT」、「TCGTTTAGT」、及び「ACGTTTAGC」を含む、シード伸長テーブル132の位置を識別する。コンピュータ110は、シード伸長テーブル132にアクセスして、ノード121のシードに一致する参照配列位置を有するシード伸長テーブル132の位置を判定することによって、ノード121などのノードの特定のシードについての適切な間隔又は複数の間隔を判定することができる。
【0064】
いくつかの実装形態では、ノード121などのノードの特定のシードについての間隔121bは、シード伸長テーブル132内の間隔の開始位置アドレスと、シード伸長テーブル132内の間隔の終了位置アドレスと、を使用して記述できる。他の実装形態では、ノード121などのノードの特定のシードについての間隔121bは、シード伸長テーブル132内の間隔の開始位置アドレスと、開始位置アドレスからのオフセットと、を使用して記述できる。このような実装形態では、間隔は、間隔の開始アドレス及び終了アドレス、又は間隔の開始アドレス及びオフセットを使用して、後で計算できる。ただし、本開示は、そのように限定される必要はない。代わりに、間隔レコードは、任意の適切な仕方で構造化又は非構造化された任意の形態の情報を使用して、ハッシュテーブル位置144内に表され得ることが理解される。例えば、いくつかの実装形態では、間隔レコードは、固定サイズ及びフォーマットの1つのレコードを使用して実施できる。他の実装形態では、間隔レコードを、レコードカウントなどを含む異なるサイズの複数のフォーマットの中から選択することによって実装して、ハッシュテーブル140によって消費される記憶スペースを最適化し、ハッシュテーブル140の圧縮性を可能にし、他の間隔レコードフォーマットに対するハッシュクエリの効率を改善するなどすることができる。
【0065】
コンピュータ110は、ルートノードで識別されるシード121aについての塩基又はヌクレオチドの数を伸長することによって、シード伸長ツリー120の生成を継続することができる。例えば、コンピュータ110は、5個の塩基又はヌクレオチドから7個の塩基又はヌクレオチドまで、ルートノードのシード長を伸長し、7個の一致する塩基又はヌクレオチドを有するシード伸長テーブル内の参照配列位置の最大のサブセットを識別することができる。
図1の実施例では、コンピュータ110は、7個の一致するヌクレオチドを有する参照配列位置の最大のサブセットが「CGTTTAG」であると判定することができる。間隔Bは、シード「CGTTTAG」に一致する参照配列位置を記憶する、シード伸長テーブル132内の位置の連続する間隔を識別する。この実施例では、間隔Bは、132-4~132-6にわたり、かつ「ACGTTTAGT」、「TCGTTTAGT」、及び「ACGTTTAGC」を含む、シード伸長テーブル132の位置を識別する。コンピュータ110は、シード伸長テーブル132を使用して判定された情報を使用してノード122を生成することができる。例えば、コンピュータ110は、シード「CGTTTAG」122a及び間隔B 122bを含むノード122を生成することができる。
【0066】
図1の実施例を参照すると、コンピュータ110は、シード伸長テーブル内に、7個の一致する塩基又はヌクレオチドを有する他の参照配列位置が存在するかどうかを判定することによって、シード伸長ツリー120の生成を継続することができる。シード伸長テーブル132内に、7個の一致する塩基又はヌクレオチドを有する他の参照配列位置が存在する場合、コンピュータ110は、7個の一致する塩基又はヌクレオチドを有する、参照配列位置の次の最大のセットを使用して、シード伸長ツリーの次のノードを生成する。
図1の実施例では、コンピュータ110は、参照配列位置の次の最大のサブセットが、7個の一致するヌクレオチドを有すると判定することができる。間隔Eは、シード「AGTTTAT」に一致する参照配列位置を記憶するシード伸長テーブル132内の位置の連続する間隔を識別する。この実施例では、間隔Eは、132-2~132-3にわたり、かつ「TAGTTTATC」及び「GAGTTTATG」を含む、シード伸長テーブル132の位置を識別する。コンピュータ110は、シード伸長テーブル132を使用して判定された情報を使用してノード123を生成することができる。例えば、コンピュータ110は、シード「AGTTTAT」123a及び間隔E 123bを含むノード123を生成することができる。
【0067】
図1の実施例を参照すると、コンピュータ110は、シード伸長テーブル内に、7個の一致する塩基又はヌクレオチドを有する他の参照配列位置が存在するかどうかを判定することによって、シード伸長ツリー120の生成を継続することができる。シード伸長テーブル内の他の参照配列位置が、7個の一致する塩基又はヌクレオチドを有するものとして識別される場合、コンピュータ110は、上述したように、7個の一致する塩基又はヌクレオチドを有する、参照配列位置の次の最大のセットを使用して、シード伸長テーブル120の新たなノードを生成することができる。ただし、
図1の実施例では、シード伸長テーブル132内に、7個の一致する塩基又はヌクレオチドを有する他の参照配列位置は存在しない。したがって、コンピュータ110は、ヌクレオチドの塩基の数を7個から9個に伸長すると判定し、シード伸長テーブル132内の参照配列位置を解析し続けることができる。
【0068】
図1の実施例を参照すると、コンピュータ110は、9個の一致するヌクレオチドを有する参照配列位置の最大のサブセットを識別することができる。この実施例では、9個の一致するヌクレオチドを有する参照配列位置の複数のサブセットが存在する。このような例では、コンピュータ110は、9個の一致する参照配列ヌクレオチドを有する参照配列位置の各セットについてシード伸長ツリーのノードを作成すると判定することができる。いくつかの実装形態では、コンピュータ110は、シード伸長ツリーノードの作成順序をランダムに判定し得る。他の実装形態では、コンピュータ110は、それらの中心辞書式順序に基づいて、後続の伸長ツリーノードを生成し始めることができる。
【0069】
それらの作成順序にかかわらず、コンピュータ110は、9個の一致するヌクレオチドを有する参照配列位置の各サブセットについて、シード伸長テーブルのノードを生成することによって継続することができる。例として、コンピュータ110は、伸長された短いシード「TCGTTTAGT」124a及び間隔C 124bを含むように、シード伸長ツリー120のノード124を生成することができる。間隔C 124bは、短いシード「TCGTTTAGT」124aに一致する参照配列位置を記憶する、シード伸長テーブル132内の位置の、連続する間隔を識別する。この実施例では、間隔Cは、132-5にわたり、かつ「TCGTTTAGT」を含む、シード伸長テーブル132の位置を識別する。コンピュータ110は、シード伸長テーブル132にアクセスして、ノード124の短シードに一致する参照配列位置を有するシード伸長テーブル132の位置を判定することによって、ノード124などのノードの特定の短いシードについての適切な間隔を判定することができる。
【0070】
図1の実施例を参照すると、コンピュータ110は、9個の一致するヌクレオチドを有する参照配列位置の各サブセットについて、シード伸長テーブルのノードを生成することによって継続することができる。例として、コンピュータ110は、伸長された短いシード「ACGTTTAGC」125a及び間隔D 125bを含むように、シード伸長ツリー120のノード125を生成することができる。間隔D 125bは、短いシード「ACGTTTAGC」125aに一致する参照配列位置を記憶する、シード伸長テーブル132内の位置の、連続する間隔を識別する。この実施例では、間隔Dは、132-6にわたり、かつ「ACGTTTAGC」を含む、シード伸長テーブル132の位置を識別する。コンピュータ110は、シード伸長テーブル132にアクセスして、ノード125の短シードに一致する参照配列位置を有するシード伸長テーブル132の位置を判定することによって、ノード125などのノードの特定の短いシードについての適切な間隔を判定することができる。
【0071】
図1の実施例を参照すると、コンピュータ110は、9個の一致するヌクレオチドを有する参照配列位置の各サブセットについて、シード伸長テーブルのノードを生成することによって継続することができる。例として、コンピュータ110は、伸長された短いシード「TAGTTTATC」126a及び間隔F 126bを含むように、シード伸長ツリー120のノード126を生成することができる。間隔F 126bは、短いシード「TAGTTTATC」126aに一致する参照配列位置を記憶する、シード伸長テーブル132内の位置の、連続する間隔を識別する。この実施例では、間隔Fは、132-2にわたり、かつ「TAGTTTATC」を含む、シード伸長テーブル132の位置を識別する。コンピュータ110は、シード伸長テーブル132にアクセスして、ノード126の短シードに一致する参照配列位置を有するシード伸長テーブル132の位置を判定することによって、ノード126などのノードの特定の短いシードについての適切な間隔を判定することができる。
【0072】
本開示は、一致する塩基の最大のセットから一致する塩基の最小のセットへと進行する特定の規則的な順序でシード伸長テーブルを構築する実施例を記載している。ただし、本開示は、この仕方で構築されたシード伸長ツリーの使用に限定される必要はない。代わりに、シード伸長テーブル構造プロセスの結果が、シード伸長テーブルを作り出す限り、シード伸長テーブルを構築するための任意のプロセスを使用することができる。例えば、シード伸長ツリーは、一致する塩基の最小のセットから一致する塩基の最大のセットまで、又は、全く特定の順序なく生成できる。いくつかの実装形態では、シード伸長テーブルがシステム100によって構築される必要なしに、以前に生成されたシード伸長テーブルをシステム100によって生成及び使用することができる。
【0073】
コンピュータ110は、生成されたシード伸長ツリー120を使用して、特定のハッシュインデックスキー142に対応する特定のシード入力が到達するハッシュテーブル140のハッシュ位置144を充填することができる。例として、コンピュータ110は、ノード121がリーフノードであるかどうかを判定することができる。ノード121がリーフノードでないとの判定に基づいて、コンピュータ110は、ルートノード121を使用してハッシュ位置144-yを充填することができ、ここで、yは、任意の非ゼロ整数である。ルートノード121を使用してハッシュ位置144-yを充填することは、シード121aが到達するハッシュテーブル位置144-yに間隔レコード153bを記憶することを含むことができる。間隔レコード153bは、ノード121についての間隔121bを識別する。ハッシュテーブル140は、各シード114-1,114-2,114-3~114-n、各シード114-1,114-2,114-3~114-nの逆補体、又はそれらの組み合わせについてのハッシュテーブルインデックスキー142を含むことができる。各ハッシュテーブルインデックスキー142は、ハッシュ関数143を使用して1個以上のハッシュ位置144にマッピングできる。各ハッシュ位置144は、1つ以上の記憶バケットを使用して実装でき、ここで、記憶バケットは、メモリデバイスの1つ以上の記憶位置のセットに対応する。メモリデバイスの1つ以上の記憶位置の各々は、連続するか、又は非連続であるメモリ位置であり得る。
【0074】
図1の実施例は、シード121,122,123,及び125の前方シードに対応するキー142を有するハッシュテーブル140の一部分のみを示す。しかしながら、本開示は、そのように限定される必要はない。例えば、いくつかの実装形態では、任意のシードの逆補体ヌクレオチド配列が、元の前方シードと同じハッシュをもたらすような仕方で、ハッシュ関数143を使用してシードをハッシュすることができる。ヌクレオチド配列の逆補体は、元のヌクレオチド配列の順序を逆転させ、かつAsをTsと、TsをAと、CsをGsと、及びGsをCsと交換することによって決定できる。例として、元の前方シードGTTTA 121aについてのハッシュキー142は、TAAACであるシードGTTTAの逆補体のためのハッシュキー142と同じハッシュを有することができる。このような実装形態では、一致する参照配列位置が、ハッシュ位置144に、又はシード伸長テーブル132内のエントリとして記憶されると、それらの配列配向は、例えば、逆補体(reverse-complement、RC)フラグを使用してアノテーションできる。ただし、他の実装形態では、シードの逆補体は、異なるハッシュをもたらしてもよく、ハッシュテーブル140又はシード伸長テーブル132のハッシュ位置144に記憶された一致する参照配列位置において、配向がアノテーションされる必要はない。
【0075】
ハッシュテーブル140の位置144を充填することはまた、伸長レコードがハッシュ位置144に充填されるかどうかを判定することを含むことができる。ハッシュ位置144に伸長レコードが充填されるべきかどうかを判定することは、ハッシュ位置を充填するために使用されているシード伸長ツリー120のノードが、リーフノードであるかどうかを判定することを含むことができる。ノードが、リーフノードであると判定された場合には、コンピュータ110は、ノードと関連付けられたシードが到達するハッシュ位置に、伸長レコードを記憶しないと判定することができる。これに代えて、ノードが、リーフノードでないと判定された場合、コンピュータ110は、伸長レコードを生成し、生成された伸長レコードをハッシュテーブル位置144に記憶することができる。
図1の実施例を参照すると、コンピュータ110は、ノード121が、リーフノードでないと判定することができるか、又は以前に判定している。このような例では、コンピュータ110は、シード121aが到達したハッシュテーブル位置144-yに、伸長レコード153aを生成及び記憶することができる。したがって、ハッシュ位置144-yは、伸長レコード153a及び間隔レコード153bを含むことができる。
【0076】
伸長レコードは、ソフトウェア命令を実行する中央処理ユニット(CPU)若しくはグラフィック処理ユニット(GPU)又はプログラム可能な回路162などのコンピュータによって実行されると、CPU、GPU、又はプログラム可能な回路162に、ヌクレオチド1個以上分、伸長レコードを記憶するハッシュ位置に到達した、ハッシュクエリ内で使用されるシードを伸長させることができる。いくつかの実装形態では、伸長レコードが、シードの各端部上で対称にシードを伸長するようにコンピュータに命令するように、伸長レコードを生成することができる。したがって、例として、伸長レコードは、CPU、GPU、又はプログラム可能な回路162などのコンピュータに、ヌクレオチド2個分、ヌクレオチド4個分、ヌクレオチド6個分などシードを伸長するように命令するように生成できる。このような実装形態では、シードの対称的な伸長は、シードのそれぞれの各端部上のヌクレオチド1個分、シードのそれぞれの各端部上のヌクレオチド2個分、シードのそれぞれの各端部上のヌクレオチド3個分など、シードを伸長することによって達成できる。
図1の実施例では、伸長レコード153aは、初期シード121aを塩基2個分、対称に伸長するように構成されている。コンピュータ110は、(i)シードに一致する数参照配列位置、(ii)所望されるランタイムシード伸長反復の数、(iii)各反復について求められる一致する参照配列位置の数などを含む、多様な要因に基づいて、伸長レコードに含めるための伸長長さを判定することができる。ハッシュテーブル140を使用したランタイムの柔軟性のあるシード伸長は、
図3に関連して以下により詳細に記載されている。
【0077】
ヌクレオチドのシードは、一般に、連続ヌクレオチドの連続するセットからなるものとして記載されてきた。同様に、伸長レコードは、連続ヌクレオチドの連続するセットを、対称であれ、非対称であれ、いずれにしても連続し得る仕方で、ヌクレオチドの1個以上の追加分、順次伸長するものとして記載されている。ただし、本開示は、連続ヌクレオチドの連続するセットの使用に限定されない。代わりに、リード又は参照配列のシードを、リード又は参照配列からの非連続であるシードパターンとすることができる。同様に、伸長レコードは、CPU、GPU、又はプログラム可能な回路162によって処理されると、CPU、GPU、又はプログラム可能な回路162に、非連続である近傍の塩基又はヌクレオチドを組み込むように初期シードを伸長させる命令を含むことができる。このような実装形態では、各ルートノードシードについての一致する参照配列位置は、非連続であるシードの使用に見合う仕方で、シード伸長テーブル132内で辞書的にソートされ得る。
【0078】
コンピュータ110は、シード伸長ツリー120の残りの各ノード122,123,124,125,126について、ハッシュ位置144に情報を充填し続けることができる。例として、コンピュータ110は、ノード122が、リーフノードであるかどうかを判定することができる。ノード122が、リーフノードでないとの判定に基づいて、コンピュータ110は、ノード122を使用してハッシュ位置144-3を充填することができる。ノード122を使用してハッシュ位置144-3を充填することは、間隔レコード152bを、シード122aが到達するハッシュテーブル位置144-3に記憶することを含むことができる。間隔レコード152bは、ノード122についての間隔122bを識別する。コンピュータ110は、ノード122が、リーフノードでなく、かつハッシュ位置144-3に記憶するための伸長レコード152aを生成すると判定するか、又は以前に判定している。
図1の実施例では、伸長レコード152aは、シード122aを塩基又はヌクレオチド2個分、対称に伸長する命令を含む。伸長レコード152aのこれらの命令は、例えば、間隔Bが、シード122aについてのクエリに応答してアクセスされない場合、実行時に実行できる。
【0079】
ただし、本開示は、そのように限定されず、CPU、GPU、又はプログラム可能な回路162に、異なる追加のヌクレオチド長(例えば、2個,4個,6個,8個など)分、又は異なる手法で(例えば、1個,3個,5個などの追加のヌクレオチド長を非対称的に使用して)シードを伸長するように命令する他の伸張レコードスキャンも生成できる。
図1の実施例は、ハッシュ位置144-3内の単一の伸長レコードを示しているが、本開示は、そのように限定されない。代わりに、いくつかの実装形態では、複数の伸長レコードを、単一のハッシュ位置144-3に記憶することができる。例えば、コンピュータ110はまた、初期シード122aを塩基4個分、伸長させるように構成されたハッシュ位置144-3に、1つ以上の追加の伸長レコードを記憶することができる。このような実装形態では、CPU、GPU、又はプログラム可能な回路162は、実行時に、最初に初期シード122aを塩基4個分、伸長することを試みることができる。このようなシード伸長が失敗した場合には、ハッシュテーブル140の後続クエリは、実行時に、一致する参照配列位置を作り出さないため、CPU、GPU、又はプログラム可能な回路は、初期塩基を塩基2個分のみ伸長する命令を含む他の伸長レコード152aを取得することができる。これは、一致する参照配列位置が返される可能性を増加させることができる。
【0080】
コンピュータ110は、シード伸長ツリー120の各ノード123,124,125,126についてのハッシュ位置144に、情報を充填し続けることができる。例として、コンピュータは、ノード123がリーフノードであるかどうかを判定することができる。ノード123が、リーフノードでないとの判定に基づいて、コンピュータ110は、ノード123を使用してハッシュ位置144-1を充填することができる。ハッシュ位置144-1を充填することは、間隔レコード150bを、シード123aが到達するハッシュテーブル位置144-1に記憶することを含むことができる。間隔レコード150bは、ノード123についての間隔123bを識別する。コンピュータ110は、ノード123が、リーフノードでなく、かつハッシュ位置144-1に記憶するための伸長レコード150aを生成すると判定するか、又は以前に判定している。この実施例では、伸長レコード150aは、シード123aを塩基又はヌクレオチド2個分、対称に伸長する命令を含む。伸長レコード150aのこれらの命令は、例えば、間隔Eが、シード123aについてのクエリに応答してアクセスされない場合、実行時に実行できる。
【0081】
コンピュータ110は、シード伸長ツリー120の各ノード124,125,126についてのハッシュ位置144に、情報を充填し続けることができる。例として、コンピュータ110は、ノード125が、リーフノードであるかどうかを判定することができる。ノード125が、リーフノードであるとの判定に基づいて、コンピュータ110は、シード「ACGTTTAGC」に一致する間隔D 125bによって識別される一致する参照配列位置155をハッシュ位置144-2に記憶することによってハッシュテーブル140を充填すると判定することができる。これに代えて、他の実装形態では、コンピュータ110は、間隔レコードを、間隔D 125bを識別するハッシュ位置144-2に記憶すると判定することができる。このような判定は、いくつかの実装形態では、リーフノードについてのハッシュテーブル位置144での一致する参照配列位置の各々の記憶が、メモリリソースの最適な使用であるかどうかに基づいて、コンピュータ110によって行われ得る。したがって、リーフノードについてのハッシュテーブル位置144での一致する参照配列位置の記憶が、メモリリソースの所定の閾値使用量を満たさないと判定された場合、コンピュータ110は、一致する参照配列位置を、シード伸長ツリーのリーフノードのシードが到達するハッシュ位置に記憶することができる。そうではなく、このメモリリソース使用閾値を超過する場合、コンピュータ110は、シード伸長ツリーのリーフノードのシードが到達するハッシュ位置144に間隔レコードを記憶することができる。コンピュータ110は、ノード125が、リーフノードであり、かつハッシュ位置144-2に記憶するための伸長レコードを生成しないと判定するか、又は以前に判定している。したがって、この実施例では、実行時に発生するような、シード「ACGTTTAGC」のさらなる伸長はない。
【0082】
上述したように、ハッシュ位置144-2は、シード125aに一致し、かつハッシュキー142-1に対応する一致する参照配列位置のみを記憶することができる。これは、この実施例では、シード125aが、伸長させることができないリーフノード125のシードであるためである。ただし、伸長レコード又は間隔レコードのうちの一方又は両方がない参照配列位置の集団は、リーフノードのシードが到達するハッシュ位置144に限定されない。代わりに、コンピュータ110は、他のインスタンスにおける、伸長レコード又は間隔レコードのうちの一方又は両方がない一致する参照配列位置を有するハッシュ位置144を充填すると判定することができる。例えば、いくつかの実装形態では、コンピュータ110が、特定のシードについてのシード伸長テーブル132が、一致する参照配列位置の閾値数よりも小さい一致する参照配列位置の間隔のみを識別する場合には、コンピュータ110は、伸長レコード又は間隔レコードのうちの一方又は両方がない一致する参照配列位置を有する特定のシードが到達するハッシュ位置144を充填することができる。
【0083】
ハッシュテーブル140のハッシュ位置144に、他の種類の情報を記憶することができる。例えば、コンピュータ110は、1つ以上の「ストップ」レコードをハッシュテーブル140のハッシュ位置144に挿入する命令を受信することができる。このような「ストップ」ハッシュレコードは、(i)間隔レコードか、又は(ii)ハッシュ位置に到達するために使用されたシードのさらなる伸長がない1個以上の一致する参照位置のセットのいずれかを返すために、間隔レコード又は1個以上の一致する参照位置のセットを記憶する特定のハッシュ位置140を生じさせることができる。他の実装形態では、コンピュータ110は、「ストップ」レコードを、既に伸長レコードを含むハッシュ位置に挿入する命令を受信することができる。このような実装形態では、CPU、GPU、又はプログラム可能な回路162が、「ストップ」レコードに遭遇すると、CPU、GPU、又はプログラム可能な回路162は、(i)伸長レコードを破棄し、かつ(i)間隔レコード、又は(ii)「ストップ」レコードを有するハッシュ位置に到達するために使用されるシードに一致する1個以上の一致する参照位置のセットを返すか、又は(ii)伸長レコードによって記述されるシード伸長を実行するかどうかを条件的に判定することができる。いくつかの実装形態では、条件判定は、(i)間隔レコード、又は(ii)1個以上の一致する参照配列位置のセットによって識別される一致する参照配列の数などの1つ以上の要因に基づいて行える。したがって、それぞれの入力シードに応答して1つ以上の「ストップ」レコードを特定のハッシュ位置に挿入する挿入を設計ツールとして使用して、ハッシュテーブル140などのハッシュテーブルを再構築することなく、固定された最大誤一致問題を回避することができる。
【0084】
コンピュータ110は、ノード124,126などのシード伸長ツリー120の残りの各ノードについてのハッシュ位置144に反復的に充填し続けることができる。ノード124,126がノード125のようなリーフノードであるため、これらのリーフノードの各々についてのエントリは、ノード125に関して上述した手法で充填できる。
【0085】
加えて、コンピュータ110は、シード「GTTTA」114-1を参照して
図1の実施例で反復して上述したプロセスを、参照配列114の各シードに適用し続けることができる。例えば、シード「GTTTA」114-1が上述のように処理されると、コンピュータ110は、シードアクセス窓を参照配列内の次の後続のシードに進めることができ、シードにアクセスし、次いで、シード「GTTTA」114-1を参照して上述したプロセスを参照配列のnシードの各々に反復的に実行することができる。これらのプロセスは、シードアクセス窓によって識別されるシードを取得することと、シードが所定数よりも多い一致する参照配列位置を有するかどうかを判定することと、所定数よりも多い一致する参照配列位置が存在する場合、シード伸長ツリーを生成することと、次いで、シード伸長ツリーのノードによって識別されるシード及び間隔を使用してハッシュテーブル144を充填することと、を含むことができる。いくつかの実装形態では、コンピュータ110はまた、参照配列114のn個のシードの各々についての逆補体に対して、シード「GTTTA」114-1を参照して上述した同じプロセスを反復して実行することができる。各参照シード及び各逆補体についてのこれらの反復プロセスの培養は、x個のインデックスエントリ及びy個のハッシュ位置を有するハッシュテーブル140をもたらすことができ、ここでx及びyは各々、ヒトゲノムなどの特定の参照配列について、1億又はさらには10億である。
【0086】
いくつかの実装形態では、1つ以上のCPU、GPU、又はそれらの組み合わせを使用して、実行されると1つ以上のCPU、GPU、又はそれらの組み合わせに
図3及び
図4に関して記載されたプロセスを実行させるソフトウェア命令を実行するように、ソフトウェアでハッシュテーブル140をコンピュータ110などのコンピュータによって使用して、ハッシュテーブル140に対するハッシュクエリを実行することにより、ランタイムの柔軟性のあるシード伸長を実行することができる。他の実装形態では、コンピュータ110は、ハッシュテーブル140をインストールするためのソフトウェア命令と、別のコンピュータ上のシード伸長テーブルのセット132Aと、を含むハッシュテーブルインストールパッケージを生成することができる。例えば、ハッシュテーブルインストールパッケージは、実行されると、
図2のプロセス200によって記載される動作を実行するソフトウェア命令を含むことができる。コンピュータ110は、ソフトウェア命令を含むハッシュテーブルインストールパッケージを他のコンピュータに提供することができる。他のコンピュータは、ハッシュテーブルインストールパッケージを受信し、ハッシュテーブル140及びシード伸長テーブルのセット132Aをインストールすることができる。次いで、他のコンピュータは、1つ以上のCPU、GPU、又はそれらの組み合わせを使用して、実行されると1つ以上のCPU、GPU、又はそれらの組み合わせに
図3及び
図4に関して記載されたプロセスを実行させるソフトウェア命令を実行するように、ソフトウェアでハッシュテーブル140に対するハッシュクエリを実行することによって、ランタイムの柔軟性のあるシード伸長を実行することができる。
【0087】
ただし、いくつかの実装形態では、コンピュータ110は、ハードウェアデジタル論理回路にマッピング及びアライニングユニット170を実装するようにプログラム可能な回路162を構成することができるハードウェアプログラミング言語命令を含むハッシュテーブルインストールパッケージ146を生成することができる。ハードウェアプログラミング言語命令を、バイナリビットストリームファイルなどのファイルの形態とすることができる。バイナリビットストリームファイルは、プログラム可能な回路162によって実装される回路機構を記述するVHDL、Verilogなどのハードウェアプログラミング言語コードをコンパイルすることによって、ハッシュテーブルインストールパッケージ146内に含める前に生成できる。ハッシュテーブルインストールパッケージのハードウェアプログラミング言語命令は、プログラム可能な回路162によって処理されると、プログラム可能な論理回路に、
図3及び
図4に関して記載されるプロセスを使用してハードウェアでハッシュテーブル140に対するハッシュクエリを実行することによって柔軟なシード伸張を実装するように、プログラム可能な論理回路の動的に構成可能な論理回路をプログラムさせることができる。ハッシュテーブルインストールパッケージ146はまた、シード伸長テーブルのセット132Aと、プログラム可能な回路162がアクセス可能なメモリ180内にシード伸長テーブルのセット132Aをインストールするための命令と、を含むことができる。ハッシュテーブルインストールパッケージ146はまた、ハッシュテーブル140と、プログラム可能な回路162がアクセス可能なメモリ180内にハッシュテーブル140をインストールするための命令と、を含むことができる。プログラム可能な回路160は、ハッシュテーブル140をマッピング/アライニングユニット170の一部として使用して、
図3に関して本明細書でより詳細に論じられるように、短いシードの参照配列へのマッピングを実行するようにプログラムすることができる。コンピュータ110は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、クラウドベースのサーバ、シーケンサ、又は1つ以上のネットワーク、1つ以上のバス、USBケーブル、USBーCケーブルなどの直接接続、若しくはそれらの任意の組み合わせを使用してプログラム可能な回路160を収容する他のデバイスなどの、デバイス160に、ハッシュテーブルインストールパッケージを提供することができる。デバイス160は、ハッシュテーブルインストールパッケージを受信し、プログラム可能な回路162をプログラムして、ハッシュテーブルインストールパッケージのハードウェアプログラミング言語命令を使用して、プログラム可能な回路162のハードウェア論理ゲート内にマッピング及びアライニングユニット170を実装することができる。
【0088】
したがって、それぞれのハッシュテーブルインストールパッケージ146を使用して、多様な異なる手法でハッシュテーブル140及びシード伸長テーブルのインストール、使用、及びさらには除去を管理することができる。例えば、いくつかの実装形態では、ハッシュテーブル140及びシード伸長テーブルのセット132Aは、各々、ハードディスク又は他の記憶媒体上のファイルとして記憶でき、次いで、各々は、ランタイムアクセスの前に、
図3及び
図4を参照して本明細書に記載されるプロセスに関して記載されるようなランタイム柔軟性のあるシード伸長を実装するための1つ以上のコンポーネント又はモジュールを含むDRAMなどの共通メモリにロードできる。ただし、他の実装形態では、シード伸長テーブルのハッシュテーブル140又はセット132Aは、各々メモリデバイス内の1つ以上の別異する連続する部分、又はメモリデバイスの非連続である部分として、合わせて又は別個に記憶され得る。同じく、ランタイムマッピング中、又はそれ以外にランタイムマッピング及びアライニングユニット170がハッシュテーブル140及びシード伸長テーブルのセット132Aの両方の選択された部分にアクセスするための何らかの道筋及び方法が存在する限り、シード伸長テーブルのハッシュテーブル140又はセット132Aを、圧縮するか若しくは非圧縮とするか、共通又は別個の記憶媒体及び/若しくはメモリ上に記憶するか、又はキャッシュするか若しくは未キャッシュとすることができる。さらに他の実装形態では、ハッシュテーブル140は、プログラム可能な回路162のハードウェア論理回路内に完全に実装でき、シード伸長テーブルのセット132Aは、DRAMメモリユニットなどのプログラム可能な論理回路162によってアクセス可能なメモリ180に記憶できる。さらに他の実装形態では、ハッシュテーブル140は、DRAMメモリユニットなどのプログラム可能な論理回路162によってアクセス可能であるメモリ180に記憶でき、シード伸長テーブルのセット132Aは、プログラム可能な回路162のハードウェア論理回路内に完全に実装できる。
【0089】
いくつかの実装形態では、コンピュータ110はまた、本明細書に記載されるようなハッシュテーブル及びシード伸長ビルダを含むインストールパッケージを生成することができる。コンピュータ110は、ネットワークを介して別のコンピュータにインストールパッケージを提供することができる。インストールパッケージを使用して、ハッシュテーブル及びシード伸長ビルダを他のコンピュータ又は異なるコンピュータにインストールし、ハッシュテーブル及びシード伸長ビルダを受信及びインストールするパーティが、それ自体の選択された参照配列から、パーティ自体の選択された設定で、パーティ自体のハッシュテーブル及びシード伸長テーブルを構築できるようにすることができる。したがって、ハッシュテーブル及びシード伸長ビルダインストールパッケージの受信者は、受信者自体のハッシュテーブルを受信者の選択された参照からの任意の時点で構築し、そのハッシュテーブルをディスク上に記憶し、プログラム可能な回路162がアクセス可能なメモリ180にそのハッシュテーブルをロードし、プログラム可能な回路162を使用してマッピング及びアライニングを実行することができる。
【0090】
図2は、ハッシュテーブルゲノムマッピングのための柔軟性のあるシード伸長を容易にするハッシュテーブルインデックスを生成するためのプロセス200のフローチャートである。一般に、プロセス200は、コンピュータシステムによって、参照配列からヌクレオチドの特定のシードを取得することであって、特定のシードが、K個のヌクレオチドのヌクレオチド長を有するヌクレオチドの配列を表す、取得すること(210)と、コンピュータシステムによって、特定のシードが所定数の参照配列位置よりも多く一致すると判定すること(220)と、特定のシードが所定数の参照配列位置よりも多く一致すると判定することに基づいて、コンピュータシステムによって、複数のノードを有するシード伸長ツリーを生成することであって、複数のノードの各ノードが、(i)特定のシードの伸長であり、かつK
*のヌクレオチド長を有する伸長されたシードであって、K
*が、Kよりも大きい1個以上のヌクレオチドである、伸長されたシードと、(ii)シード伸張テーブル内の、伸長されたシードに一致する参照配列位置を記述するデータを含む複数の位置と、に対応する、生成すること(230)と、複数のノードの各ノードについて、コンピュータシステムによって、伸長されたシードのインデックスキーに対応するハッシュテーブルの位置に間隔情報を記憶することであって、間隔情報が、ノードと関連付けられた伸長されたシードに一致する参照配列位置を記述するデータを含む、シード伸張テーブル内の複数の位置を参照する、記憶すること(240)と、を含むことにより、ハッシュテーブルを生成することができる。プロセス200を、コンピュータ110などのコンピュータシステムによって実行されるものとして、以下により詳細に記載する。
【0091】
より詳細には、コンピュータシステムは、コンピュータシステムによって、参照配列からヌクレオチドの特定のシードを取得することによって、プロセス200の実行を開始することができ、特定のシードは、K個のヌクレオチドのヌクレオチド長を有するヌクレオチドの配列を表す(210)。いくつかの実装形態では、特定のシードを取得することは、コンピュータシステムによって、参照配列内のシードアクセス窓の位置を判定することを含むことができる。次いで、コンピュータシステムは、シードアクセス窓によって識別される参照配列のサブセットを取得することができる。コンピュータシステムは、1つ以上のコンピュータを含むことができる。
【0092】
コンピュータシステムは、コンピュータシステムによって、特定のシードが、所定数の参照配列位置よりも多く一致するかどうかを判定することによって、プロセス200の実行を継続することができる(220)。コンピュータシステムによって、特定のシードが、所定数の参照配列位置よりも多くは一致しないと判定された場合、コンピュータシステムは、特定のシードについてのシード伸長ツリーを生成しないと判定することができる。代わりに、コンピュータシステムは、第2のシードに一致する参照配列位置の各々を記述するデータを取得することができる。次いで、コンピュータシステムは、特定のシードのインデックスキーに対応するハッシュテーブルの第2の位置に、特定のシードに一致する参照配列位置を記述するデータを記憶することができる。
【0093】
これに代えて、コンピュータシステムによって、特定のシードが、所定数の参照配列位置よりも多く一致すると判定された場合、コンピュータシステムは、複数のノードを有するシード伸長ツリーを生成することができる(230)。複数のノードの各ノードは、(i)特定のシードの伸長であり、かつK*のヌクレオチド長を有する伸長されたシードであって、K*が、Kよりも大きい1個以上のヌクレオチドである、伸長されたシードと、(ii)伸長されたシードに一致する参照配列位置を記述するデータを含む、シード伸張テーブル内の複数の位置と、を表すデータを含むことができる。いくつかの実装形態では、複数の位置は、ノードと関連付けられた伸長されたシードに一致する参照配列位置の、伸長テーブル内の連続する間隔を含むことができる。
【0094】
コンピュータシステムは、シード伸長ツリーの各ノードについて、ハッシュテーブルのハッシュ位置に間隔情報を記憶することによって、プロセス200の実行を継続することができる。いくつかの実装形態では、コンピュータシステムは、シード伸長ツリーの各ノードについて、伸長されたシードのインデックスキーに対応するハッシュテーブルのハッシュ位置に、間隔情報を記憶することにより、ハッシュテーブルを生成することができる(240)。間隔情報は、ノードと関連付けられた伸長されたシードに一致する参照配列位置を記述するデータを含む複数のシード伸長位置への参照を含むことができる。いくつかの実装形態では、間隔情報によって記述される複数のシード伸長テーブル位置は、伸長されたシードに一致する参照配列位置を記述するデータを含む、シード伸長テーブル内の位置の連続する間隔を含むことができる。
ハッシュテーブルゲノムマッピングを使用したランタイムの柔軟性のあるシード伸長
【0095】
図3は、ハッシュテーブルゲノムマッピングのためのランタイムの柔軟性のあるシード伸長を実行するためのランタイムシステム300のコンテキスト図である。ランタイムシステム300は、プログラム可能な論理回路162、マッピング及びアライニングユニット170、ハッシュテーブル140、メモリ18、メモリ180に記憶されたシード伸長テーブル132などの複数のシード伸長テーブルを含む。
図3の実施例は、プログラム可能な論理ユニット162のハードウェア論理回路を使用してハードウェアに実装されたマッピング及びアライニングユニット170及びハッシュテーブル140を記載しているが、本開示はそのように限定されない。代わりに、マッピング及びアライニングユニット170は、メモリユニットに記憶されたハッシュテーブル140にアクセスする1つ以上のCPU、GPU、又はそれらの組み合わせによって実行されるソフトウェア命令を使用して実装されるソフトウェアアプリケーションであってもよい。
【0096】
システム300による、ハッシュテーブルゲノムマッピングのためのランタイムの柔軟性のあるシード伸長の実行は、マッピング及びアライニングユニット170が現在のリード305にアクセスすることによって開始することができる。現在のリード305は、生体サンプルの一次解析を実行した核酸シーケンサによって生成できる。一次解析は、核酸シーケンサによって、血液サンプル、組織サンプル、又は痰などの生体サンプルを受信することと、受信された生体サンプル中の核酸配列中のヌクレオチドの順序を表す1つ以上のリード305などの出力データを生成することと、を含むことができる。いくつかの実装形態では、生体サンプルは、DNAサンプルを含むことができ、核酸シーケンサは、DNAシーケンサを含むことができる。このような実装形態では、核酸シーケンサによって生成される、リード305中の配列決定されたヌクレオチドの順序は、グアニン(G)、シトシン(C)、アデニン(A)、及びチミン(T)のうちの1つ以上を任意の組み合わせで含むことができる。他の実装形態では、核酸シーケンサは、RNAシーケンサを含むことができ、生体サンプルは、RNAサンプルを含むことができる。このような実装形態では、核酸シーケンサによって生成される、リード中の配列決定されたヌクレオチドの順序は、G、C、A、及びウラシル(U)のうちの1つ以上を任意の組み合わせで含むことができる。したがって、
図3の実施例は、DNAサンプルに基づいてDNAシーケンサによって生成されるG、C、A、及びTからなるリードの処理を記載しているが、本開示は、そのように限定されない。代わりに、他の実装形態は、RNAサンプルに基づいてRNAシーケンサによって生成されるC、G、A、及びUからなるリードを処理することができる。
【0097】
一般に、マッピング及びアライニングユニット170は、マッピング及びアライニングユニット170が受信し、マッピングし、及びアライニングするリードのタイプに対してアグノスティックであるように構成できる。例えば、いくつかの実装形態では、同じバイナリコードを使用して、「T」及び「U」を表すことができる。マッピング及びアライニングユニット170によって受信されるリードは、DNA、cDNA、及び/又はRNAを含むことができ、参照を、DNA、cDNA、及び/又はRNAとすることができる。このような実装形態では、リードT及び/又はUが、参照T及び/又はUに一致するように、リード塩基T及び/又はUは、単一のバイナリコードを共有することができる。
【0098】
いくつかの実装形態では、核酸シーケンサは、超高スループット、スケーラビリティ、及び超並列配列決定技術の使用による速度を達成する手法で、所与のサンプルについてのリード305などの配列リードを生成するように構成された次世代シーケンサ(next generation sequencer、NGS)を含むことができる。NGSは、ゲノム全体の迅速な配列決定と、深く配列決定された標的領域にズームするか、RNA配列決定(RNA-Seq)を利用して、新規RNA変異体及びスプライス部位を発見するか、又は遺伝子発現解析、ゲノムワイドDNAメチル化及びDNA-タンパク質相互作用などのエピジェネティック因子の解析、希少体変異体及び腫瘍サブクローンを研究するための癌サンプルの配列決定、並びにヒト又は環境における微生物多様性の研究のためのmRNAを定量化する能力と、を可能にする。
【0099】
核酸シーケンサによって生成されるリード305などの配列リードは、マッピング及びアライニングユニット170などの二次解析ユニットによってアクセス及び処理できる。いくつかの実装形態では、マッピング及びアライニングユニット170などの二次解析ユニットは、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)又は特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)などのプログラム可能な回路162を使用して、デジタル論理回路などのハードウェアで実装できる。他の実装形態では、マッピング及びアライニングユニット170などの二次解析ユニットは、マッピング及びアライニングユニット170の機能を実装するために、1つ以上のCPU、GPU、又はそれらの両方の組み合わせを使用して実装できる。ハッシュテーブル140は、プログラム可能な回路162を使用してマッピング及びアライニングユニット170が実装されるなどのいくつかの実装形態では、ハッシュテーブル140をプログラム可能な回路162のハードウェア論理回路で実装できるが、本開示はそのように限定されない。代わりに、ハッシュテーブル140は、メモリデバイスに記憶でき、(i)マッピング及びアライニングユニット170の機能性を実現するソフトウェア命令を実行するCPU、GPU、又はその両方の組み合わせ、又は(ii)ハードウェアデジタル論理回路で実装されたマッピング及びアライニングユニット170によって、必要時にアクセスできる。
【0100】
いくつかの実装形態では、プログラム可能な回路162は、リード305を生成した核酸シーケンサと統合できる。このような実装形態では、例えば、プログラム可能な回路162は、ペリフェラルコンポーネントインターコネクト(Peripheral Component Interconnect、PCI)伸長カードなどの伸長カードに収容でき、核酸シーケンサにインストールできる。他の実装形態では、例えば、プログラム可能な回路162の各々を、核酸シーケンサとは異なり、かつEthernetケーブル、USBケーブル、USB-Cケーブルなどを使用して核酸シーケンサに直接接続される別のコンピュータの一部とすることができる。さらに他の実装形態では、例えば、プログラム可能な回路162は、ローカルエリアネットワーク(local area network、LAN)、広域ネットワーク(wide area network、WAN)、セルラーネットワーク、インターネット、又はそれらの組み合わせなどの1つ以上の有線又は無線ネットワークを使用してリード305を生成した核酸シーケンサによってリモートアクセス可能であるクラウドベースのサーバに統合できる。
【0101】
マッピング及びアライニングユニット170は、初期シード「GTTTA」310aを含む第1のハッシュクエリ310を受信することができる。いくつかの実装形態では、ハッシュクエリは、単に、ハッシュテーブル140への入力として使用される現在のリード305などのサンプルリードのシードから構成できる。他の実装形態では、追加のデータ、メタデータなどを、サンプルリードのシードに追加して、サンプルを、ハッシュテーブル140を探索するために使用できるフォーマットに変換し得る。
【0102】
図3の実施例では、ハッシュクエリ310に含まれる初期シード「GTTTA」310aは、シードアクセス窓305aを使用して識別される現在のリード
【表1】
305の第1の部分から取得される。マッピング及びアライニングユニット170は、ハッシュテーブル140を使用してハッシュクエリ310を実行して、ハッシュ関数143を使用して短い初期シード310aをハッシュ位置144にマッピングすることができる。
図3の実施例では、ハッシュクエリ310の実行は、シード「GTTTA」310aが、ハッシュ関数143によってハッシュ位置144-yにマッピングされるハッシュインデックスキー「GTTTA」142-2に一致すると判定することができる。
【0103】
マッピング及びアライニングユニット170は、ハッシュテーブル140を使用してハッシュクエリ310への応答310bを生成することができる。応答310bは、ハッシュクエリ310のシード310aが到達するハッシュ位置144-yの内容を含むことができる。マッピング及びアライニングユニット170は、ハッシュクエリ310への応答310bを評価し、内容が、一致する参照配列位置のセット、伸長レコード、間隔レコード、又はそれらの組み合わせを含むかどうかを判定する。応答310bが、伸長レコード又は間隔レコードがない一致する参照配列位置のセットのみを含む場合、マッピング及びアライニングユニット170は、シード一致セット352内の一致する参照配列位置のセットを、一致する参照位置を受信されたクエリのシードと関連付けるメタデータと共に記憶することができる。これに代えて、マッピング及びアライニングユニット170が、応答が間隔レコード、伸長レコード、又はその両方を含むと判定した場合、マッピング及びアライニングユニット170は、間隔レコードによって識別される一致する参照シードを使用するか、又はクエリのシードの伸長を進行させるかどうかを320で判定しなければならない。
【0104】
図3の実施例では、応答310bの評価は、(i)応答が、一致する参照配列位置のセットを含まないこと、及び(ii)応答310bが、伸長レコード153a及び間隔レコード153bを含むことを示す。応答310bに基づいて、マッピング及びアライニングユニット170は、間隔レコード153bによって識別される一致する参照位置がアクセスされるかどうかを320で判定することができる。いくつかの実装形態では、マッピング及びアライニングユニット170は、ハッシュクエリ310への310bなどの応答が、伸長レコード153aを含む場合、間隔レコード153bなどの間隔レコードによって識別される一致する参照配列位置にアクセスしないようになっている。
【0105】
ただし、他の実装形態では、マッピング及びアライニングユニット170は、伸長レコード153bを使用してシード310aを伸長する前に、間隔レコード153bによって識別される一致する参照配列位置の数を評価するように構成できる。このような実装形態では、一致する参照配列位置の数が、所定の閾値を下回る場合には、マッピング及びアライニングユニット170は、間隔レコードによって識別される間隔Aの一致する参照配列位置を310dで出力することができる。一致する参照配列位置を出力することは、マッピング及びアライニングユニット170によって、メモリ180内のシード伸長テーブル132の間隔Aに記憶された一致する参照配列位置にアクセスすることと、アクセスされた一致する参照配列位置をシード一致セットストレージ352に記憶することと、を含むことができる。アクセスされた一致する参照配列位置がシード一致セット352に記憶されると、
図3によって記載されるプロセスが、シード310aのさらなる伸長なしに終了することが可能である。次いで、シードアクセス窓305aを、現在のリード305に沿って1個以上のヌクレオチドだけ順方向に調整することが可能である。シードアクセス窓305aが調整されると、
図3に関連して記載されるプロセスが再び開始し、現在のリード305の全体がクエリされるまで、反復的に続行することができる。一方、この代替実装形態では、一致する参照配列位置の数が、所定の閾値を下回っていないと判定された場合、シード310aは、伸長レコード152aを使用して伸長できる。
【0106】
図3の実施例に戻ると、マッピング及びアライニングユニット170は、間隔レコード153bによって識別される一致に、前述の閾値を適用しない。代わりに、マッピング及びアライニングユニット170は、出力310bが伸長レコード153aを含むため、間隔レコード153bによって識別される一致する参照配列位置を使用しないと320で判定する。したがって、このシナリオでは、マッピング及びアライニングユニット170は、シード310aを伸長すると判定する。
【0107】
伸長されたシードに基づいて後続のクエリを実行することを進行させる前に、マッピング及びアライニングユニットは、間隔A 310cを記述する情報を「最良間隔」ストレージ350に記憶することができる。間隔Aは、プロセスのこの時点で他の間隔が識別及び評価されていないため、シード310aについてのシード伸長テーブル132内の一致する参照配列位置の「最良間隔」と見なせる。ただし、
図3によって記載されるプロセスの後続の反復では、識別される後続の各間隔は、間隔が、初期シード310a又は初期シード310aの伸長されたシードに対する最良間隔ストレージに記憶された既存の間隔よりも良好であるかどうかを判定するために、ヒューリスティックに評価できる。間隔A 310cを記述する情報を最良間隔ストレージ340に記憶することにより、初期シード310aのイベント伸長で回帰される間隔Aの一致する参照配列位置が、未読マッピング問題又は高確度マッピング問題などのマッピング不良を引き起こし得る。間隔A 310cを記述する情報は、初期シードに一致する参照配列位置の連続するリストの開始位置及び終了位置を記述するデータを含むことができる。いくつかの実装形態では、間隔A 310cを記述する情報はまた、間隔Aによって識別される参照配列位置が一致するシードを識別するデータを含むことができる。
【0108】
マッピング及びアライニングユニット170による柔軟性のあるシード伸長の実行は、マッピング及びアライニングユニット170が、伸長レコード153aを使用して初期シード310aの伸長である第1の伸長されたシード312aを生成することを、継続することができる。
図3の実施例では、伸長レコード153aは、マッピング及びアライニングユニット170に、初期シード310aを塩基又はヌクレオチド2個分、対称に伸長するように命令する1つ以上の命令を含むことができる。
図3の実施例では、初期シード「GTTTA」310aを塩基又はヌクレオチド2個分、対称に伸長することにより、リード305の伸長されたシード「CGTTTAG」312aがもたらされる。いくつかの実装形態では、初期シード310aを伸長させるために使用される追加のヌクレオチド「C」及び「G」は、シードアクセス窓305aによって識別される初期シード310aの両側にある、リード305の次のヌクレオチドから取得できる。
【0109】
シードアクセス窓がリード305の先頭にある時などの他の実装形態では、シードアクセス窓の各側に、このシード伸張を容易にするための追加のシードが存在するが、伸長は、リードの境界305を越える初期シードの伸長を引き起こし得る。このような実装形態では、シード伸長は、失敗する可能性があり、ハッシュテーブル140を使用して初期シードを一致する参照配列位置にマッピングするプロセスは、初期シードから開始したクエリサイクルに対して、シード一致セット352に一致する参照配列位置を全く追加することなく終了する可能性がある。ただし、このような実装形態では、シードアクセス窓305aは、リード305に沿って順方向に1個以上のヌクレオチドだけ調整でき、調整されたシードアクセス窓によって識別されるリード305の次のシードは、ハッシュテーブル140を使用する新たなクエリサイクルに対するハッシュクエリの初期シードとして使用するために取得できる。次のシードについての新たなクエリサイクルの実行、及びその後にシードの各々が処理されるまでのシードの各々を使用して、最良間隔ストレージ350を更新するか、シード一致セットストレージ352に一致する参照配列位置の1つ以上のセットを記憶するか、又はその両方を行うことができ、これを評価して、失敗したシード伸長にかかわらず、
図5を参照して記載されるようなリード305の一致する参照配列位置の最適なセットを識別し、したがって、従来の方法では存在する可能性があるマッピングされないリード問題を解決することができる。
【0110】
シードアクセス窓305aがリード305の両端部に向かって進む際に、同様の理由で、同様のシード伸長失敗が起こる可能性がある。本開示は同様に、
図5を参照して記載されるように、リードのためのハッシュクエリの前の反復から、最良間隔ストレージ250、シード一致セット353、又はその両方を評価することによって、これらのシード伸長失敗を解決する。
【0111】
図3の実施例に戻ると、マッピング及びアライニングユニット170は、第1の伸長されたシード312aを含む後続のハッシュクエリ312を生成することができる。マッピング及びアライニングユニット170は、ハッシュクエリ312から第1の伸長されたシード312aを取得し、ハッシュテーブルを使用して、ハッシュ関数143を使用して第1の伸長された短いシード312aをハッシュ位置144にマッピングすることができる。いくつかの実装形態では、第1の伸長されたシード312aを使用したハッシュクエリ312の生成は、クエリを生成することなく、ハッシュテーブル140を使用したシードマッピングのための入力として、第1の伸長されたシード312aをマッピング及びアライニングユニット170に提供することを含むことができる。
図3の実施例では、ハッシュクエリ312の実行は、シード「CGTTTAG」312aが、ハッシュ関数143によってハッシュ位置144-3にマッピングされるハッシュインデックスキー「CGTTTAG」142-xに一致すると判定する。
【0112】
マッピング及びアライニングユニット170は、ハッシュテーブル140を使用してハッシュクエリ312への応答312bを生成することができる。応答312bは、ハッシュクエリ312のシード312aが到達するハッシュ位置144-3の内容を含むことができる。マッピング及びアライニングユニット170は、ハッシュクエリ312への応答312bを評価し、応答312bが、(i)一致する参照配列位置のセットを含まず、かつ(ii)伸長レコード152a及び間隔レコード152bを含むと判定することができる。応答312bに基づいて、マッピング及びアライニングユニット170は、間隔レコード152bによって識別される一致する参照位置がアクセスされるかどうかを330で判定することができる。いくつかの実装形態では、マッピング及びアライニングユニット170は、ハッシュクエリ312への312bなどの応答が、伸長レコード152aを含む場合、間隔レコード152bなどの間隔レコードによって識別される一致する参照配列位置にアクセスしないようになっている。
【0113】
ただし、他の実装形態では、マッピング及びアライニングユニット170は、伸長レコード152bを使用してシード312aを伸長する前に、間隔レコード152bによって識別される一致する参照配列位置の数を評価するように構成できる。このような実装形態では、間隔レコード152bによって識別される一致する参照配列位置の数が、所定の閾値を下回る場合には、マッピング及びアライニングユニット170は、間隔レコード152bによって識別される間隔Bの一致する参照配列位置を312dで出力することができる。一致する参照配列位置を出力することは、マッピング及びアライニングユニット170によって、メモリ180内のシード伸長テーブル132の間隔Bに記憶された一致する参照配列位置にアクセスすることと、アクセスされた一致する参照配列位置をシード一致セットストレージ352に記憶することと、を含むことができる。アクセスされた一致する参照配列位置がシード一致セットストレージ352に記憶されると、
図3によって記載されるプロセスが、シード312aのさらなる伸長なしに終了することが可能である。次いで、シードアクセス窓305aを、現在のリード305に沿って1個以上のヌクレオチドだけ調整することが可能である。シードアクセス窓305aが調整されると、
図3に関連して記載されるプロセスが再び開始し、現在のリード305の全体がクエリされるまで、反復的に続行することができる。一方、この代替実装形態では、一致する参照配列位置の数が、所定の閾値を下回っていないと判定された場合、シード312aは、伸長レコード152aを使用して伸長できる。
【0114】
図3の実施例に戻ると、マッピング及びアライニングユニット170は、間隔レコード152bによって識別される一致に、前述の閾値を適用しない。代わりに、マッピング及びアライニングユニット170は、出力312bが伸長レコード152aを含むため、間隔レコード152bによって識別される一致する参照配列位置を使用しないと330で判定する。したがって、マッピング及びアライニングユニット170は、シード312aを伸長すると判定する。
【0115】
伸長されたシードに基づいて後続のクエリを実行することを進行させる前に、マッピング及びアライニングユニットは、間隔B 312cを記述する情報を「最良間隔」として最良間隔ストレージ350に記憶するかどうかを判定することができる。間隔B 312cを記述する情報を「最良間隔」として記憶するかどうかを判定することは、間隔Bが、第1の伸長されたシードの前の反復について最良間隔ストレージ352に現在記憶されている、この実施例では間隔Aである間隔よりも良好な間隔であるかどうかをヒューリスティックに判定することを含む。一実装形態では、複数の間隔の中からの最良間隔を、各間隔について返された標的ヒットの数を評価することによって判定できる。このような実装形態では、「最良の」間隔は、マルチパート規則に従って選択できる。例として、マッピング及びアライニングユニット170は、少なくとも所定数の一致する参照配列位置を内包する間隔に第1の優先度を割り当てることができ、これは、intvl-target-hits(32)一致などの閾値として称され得る。ただし、各間隔が、intvl-target-hits(32)よりも少ない一致を有する場合には、最も多い一致を有する間隔が、最良間隔として記憶される。さらに、マッピング及びアライニングユニット170は、このような間隔が好ましいため、より長い伸長されたシードと関連付けられた間隔に第2の優先度を割り当てることができる。また、マッピング及びアライニングユニット170が、少なくとも1個の間隔が、少なくともintvl-target-hits(32)一致を有すると判定した場合には、少なくともintvl-target-hits(32)一致を満たす全ての間隔の中から、最も長い伸長されたシードと関連付けられている間隔に基づいて、最良間隔が選択される。本明細書の実施例は、32個の一致を有する閾値intvl-target-hits(32)に言及しているが、本開示は、そのように限定される必要はない。代わりに、閾値intvl-target-hits()を、このマルチパートヒューリスティック規則を実装するために、任意の数の一致する参照配列位置に送ることがきる。
【0116】
図3の実施例では、最良間隔ストレージ350に最良間隔として以前に記憶された間隔Aは、6個の一致する参照配列位置132-1~132-6を識別し、間隔Bは、3個の一致する参照配列位置132-4~132-6を識別する。10個の一致の例示的なintvl-target-hit(10)閾値を適用すると、マッピング及びアライニングユニット170は、マルチパートヒューリスティック規則を適用し、間隔がintvl-target-hit(10)閾値を満たしていると判定することができる。したがって、マルチパートヒューリスティック規則に従い、マッピング及びアライニングユニット170は、間隔Aが、間隔Aと間隔Bとの間の最も多い一致、すなわち6つの一致を有するため、間隔Aを最良間隔として選択することができる。この例示的なマルチパートヒューリスティック規則の適用に基づいて、間隔B 321cを記述する情報は、破棄でき、間隔Aは、最良間隔として記憶されたままである。ただし、マルチパートヒューリスティック規則である必要がない異なるヒューリスティック規則を適用する他の実施例の下では、間隔Bが最良間隔として選択され、間隔Aを置換するために最良間隔ストレージ350に記憶されることが可能である。このような結果を、intvl-target-hits()閾値の設定、1つ以上のヒューリスティック規則の設計などの特定の設計構成に最終的に残すことができる。
【0117】
図3の実施例では、前述のヒューリスティック規則を使用して、最良間隔ストレージ350に以前に記憶された間隔Aと、クエリ312への応答312bに含まれる間隔Bと、を比較する。しかしながら、本開示は、そのように限定される必要はない。例えば、いくつかの実装形態では、ハッシュクエリへの応答は、ハッシュクエリの特定のシードが到達したハッシュ位置144に記憶されていた複数の間隔レコードを含んでもよい。このような実装形態では、マッピング及びアライニングユニット170は、前述のヒューリスティック規則を適用して、複数の間隔レコードのいずれがアクセスされるべきかを判定することができる。同じく、マッピング及びアライニングユニット170はまた、クエリ応答で返された間隔レコードの各々のうちから最良間隔ストレージ450に記憶するために、このようなヒューリスティック規則を使用して、最良間隔を判定することができる。別の例として、マッピング及びアライニングユニット170はまた、このようなヒューリスティック規則を使用して、クエリ応答で返された各間隔レコードと、複数の間隔を返すクエリに使用されるシードの以前の反復について最良間隔ストレージ350に以前に記憶された別の間隔と、のうちから、最良間隔ストレージ450に記憶するための最良間隔を決定することができる。
【0118】
いくつかの実装形態では、システム300は、最良間隔ストレージ350への2個以上の最良間隔の記憶を容易にすることができる。例えば、いくつかの実装形態では、最大2個の最良間隔が、追跡されてもよい。いくつかの実装形態では、最大N個の最良間隔が、追跡されてもよい。このような実装形態では、N>1個の最良間隔が記憶される場合、いずれの間隔が保持されているかを判定するための基準は、N個の最良間隔がリード内で互いに重なり合わない伸長されたシードと関連付けられることを必要とするような、間隔候補、間隔候補の関連付けられた伸長されたシード、又はその両方同士又は間の関係の評価を伴うことができる。
【0119】
マッピング及びアライニングユニット170による柔軟性のあるシード伸長の実行は、マッピング及びアライニングユニット170が、伸長レコード152aを使用して第1の伸張されたシード312aの伸長である第2の伸長されたシード314aを生成することを、継続することができる。
図3の実施例では、伸長レコード152aは、マッピング及びアライニングユニット170に、第1の伸張されたシード312aを塩基又はヌクレオチド2個分、対称に伸長するように命令する1つ以上の命令を含むことができる。
図3の実施例では、第1の伸張されたシード「CGTTTAG」312aを塩基又はヌクレオチド2個分、対称に伸長することにより、リード305の第2の伸長されたシード「ACGTTTAGC」314aがもたらされる。いくつかの実装形態では、第1の伸長されたシード312aを伸長させるために使用される追加のヌクレオチド「A」及び「C」は、第1の伸長されたシード「CGTTTAG」312aの両側にある、リード305の次のヌクレオチドから取得できる。
【0120】
図3の実施例に戻ると、マッピング及びアライニングユニット170は、第2の伸長されたシード314aを含む後続のハッシュクエリ314を生成することができる。マッピング及びアライニングユニット170は、ハッシュクエリ314から第2の伸長されたシード314aを取得し、ハッシュテーブルを使用して、ハッシュ関数143を使用して第2の伸長された短いシード314aをハッシュ位置144にマッピングすることができる。いくつかの実装形態では、第2の伸長されたシード314aを使用したハッシュクエリ314の生成は、クエリを生成することなく、ハッシュテーブル140を使用したシードマッピングのための入力として、第2の伸長されたシード314aをマッピング及びアライニングユニット170に提供することを含むことができる。
図3の実施例では、ハッシュクエリ314の実行は、シード「ACGTTTAGC」314aが、ハッシュ関数143によってハッシュ位置144-2にマッピングされるハッシュインデックスキー「ACGTTTAGC」142-1に一致すると判定する。
【0121】
マッピング及びアライニングユニット170は、ハッシュテーブル140を使用してハッシュクエリ314への応答314bを生成することができる。応答314bは、ハッシュクエリ314の第2の伸張されたシード314aが到達するハッシュ位置144-2の内容を含むことができる。マッピング及びアライニングユニット170は、ハッシュクエリ314への応答314bを評価し、応答314bが、(i)一致する参照配列位置155のセットを含み、かつ(ii)伸長レコードを含まず、かつ(iii)間隔レコードを含まないと判定する。応答314bに基づいて、マッピング及びアライニングユニット170は、一致する参照配列位置155が、シード一致セットストレージ352に記憶されるべきであると判定することができる。
【0122】
応答314bは、伸長レコードを含まないため、リード305のシード「GTTTA」310aについてのランタイムの柔軟性のあるシード伸長プロセスが終了する。シードアクセス窓305aを、
図3に関して記載されるプロセス各々が、リード305のそれぞれの各シードに対して実行されるまで、リード305に沿って、1個以上のヌクレオチドだけ前進させ続けることができる。このプロセスはまた、
図4のフローチャートに関して記載されている。上述したように、シードアクセス窓305aがリード305の端部に向かって伸長すると、マッピング及びアライニングユニット170へのシード入力を伸長する試みが失敗し、潜在的なマッピングされないリード問題を生じる可能性がある。ただし、本開示は、少なくとも
図5に関して記載されるように、リード305の一致する参照配列位置のセットを識別するために、最良間隔ストレージに記憶された1個以上の間隔、シード一致セット352に記憶された1つ以上のリード、又はその両方の組み合わせを使用することができる。
【0123】
図4は、ハッシュテーブルゲノムマッピングのためのランタイムの柔軟性のあるシード伸長を実行するためのプロセス400のフローチャートである。プロセス400を、1つ以上のコンピュータのコンピュータシステムによって実行されるものとして以下に記載する。1つ以上のコンピュータは、例えば、マッピング及びアライニングユニット170を含むことができる。本開示の目的で、1つ以上のコンピュータは、ソフトウェア命令を取得及び実行して、ソフトウェア命令によって記述される特定のプログラムされた機能性を実現するように構成されたCPU又はGPUを含むことができる。これに代えて、又はこれに加えて、1つ以上のコンピュータは、プログラム可能な回路のハードウェアデジタル論理回路が、特定のプログラムされた機能性をハードウェアで実現するように構成されているように構成されているプログラム可能な回路を含むことができる。
【0124】
コンピュータシステムは、ハッシュテーブル405のクエリを実行することによって、プロセス400の実行を開始することができる。クエリは、ヌクレオチドのシードを含むことができる。ヌクレオチドのシードは、リードから取得されたヌクレオチドのサブセットを含むことができる。リードは、核酸シーケンサに入力された生体サンプルに基づいて核酸シーケンサによって生成されたヌクレオチドのセットを含むことができる。生体サンプルは、例えば、血液サンプル、組織サンプル、痰などを含むことができる。
【0125】
例として、生体サンプルに基づいて核酸シーケンサによって生成されたリードは、「ACGTTTAGC」などの一連のヌクレオチドを含むことができる。この実施例は、9個のヌクレオチドのリードを含む。ただし、9ヌクレオチドのリードの使用は、実施例としてのみ使用される。9個のヌクレオチドに限定される代わりに、本開示によって記載されるようなリードは、5個の塩基若しくはヌクレオチド、10個の塩基若しくはヌクレオチド、12個の塩基若しくはヌクレオチド、15個の塩基若しくはヌクレオチド、18個の塩基若しくはヌクレオチド、21個の塩基若しくはヌクレオチド、25個の塩基若しくはヌクレオチド、35個の塩基若しくはヌクレオチド、50個の塩基若しくはヌクレオチド、100個の塩基のヌクレオチド、150個の塩基若しくはヌクレオチド、1,000個の塩基若しくはヌクレオチド、百万個の塩基若しくはヌクレオチド、又はさらに多くの塩基若しくはヌクレオチドを含む任意のヌクレオチド長であることが可能であるが、これらに限定されない。クエリのシードは、「GTTTA」などのリードの部分を含むことができる。プロセス400の第1の反復中に第1のハッシュクエリで使用するためのリードから取得されたシードは、任意の長さKとすることができ、ここで、Kは、リード内の塩基又はヌクレオチドの数よりも小さい。いくつかの実装形態では、Kを、リード長の1/100、リード長の1/10、リード長の1/5などのリードヌクレオチド長よりも実質的に小さくすることができる。
【0126】
コンピュータシステムは、シードを取得することと、シードをハッシュテーブルのハッシュキーと比較することと、によって、シードを含むクエリを実行することができる。ハッシュキーは、各参照配列シード、各参照配列シードの逆補体、参照配列の伸長された各シード、及び参照配列の伸長された各シードの逆補体に対応することができる。参照配列は、例えば、ヒト又は他の動物などの種についての参照ゲノム又は参照ゲノムの一部を含むことができる。クエリのシードに一致するハッシュキーが、コンピュータシステムによって識別されると、コンピュータシステムは、ハッシュ関数を使用して、ハッシュキーを1個以上のハッシュ位置にマッピングすることができる。本開示のいくつかの態様では、1個以上のハッシュ位置は、(i)伸長レコード、(ii)間隔レコード、又は(iii)1個以上の参照配列位置を記憶することができる。コンピュータシステムは、クエリのシードが到達した1個以上のハッシュ位置の内容を含むクエリへの応答を生成することができる。
【0127】
コンピュータシステムは、クエリが到達すると判定されるハッシュテーブルの1個以上の位置によって記憶された情報を含む、実行されたクエリへの応答を取得する(410)ことによって、プロセス400の実行を継続することができる。クエリのシードが、ハッシュ関数を使用して1個以上の位置にマッピングされたハッシュキーに一致すると判定された場合に、ハッシュテーブルの1個以上の位置にクエリが到達すると判定される。
【0128】
コンピュータシステムは、実行されたクエリへの応答が、(i)伸長レコード(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを判定する(415)ことによって、プロセス400の実行を継続することができる。コンピュータシステムによって、実行されたクエリへの応答が、(i)伸長レコード(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを判定する(415)ことは、受信された応答をパースすることと、パースされた応答データを解析することとを含むことができる。コンピュータシステムは、パースされたデータに基づいて、パースされたデータが、(i)伸長レコード、(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を表すかを判定することができる。他の実装形態では、実行されたクエリへの応答が、(i)伸長レコード、(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を含むかどうかを示す1つ以上のデータフラグを含み得る。
【0129】
いくつかの例では、コンピュータシステムは、段階415で、応答が、伸長レコード、間隔レコード、又は1つ若しくは一致する参照配列位置を含まないと判定することによって、プロセス400の実行を継続することができる。コンピュータシステムが、応答は、(i)伸長レコード、(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を含まないと判定した場合には、プロセスは、クエリのシードについてのシード一致セットに任意の一致する参照配列位置を追加することなく、段階420で終了する。例として、シードが伸長されたシードであり、かつシード伸張エラーが存在していた場合、シードを含むクエリへの取得された応答は、(i)伸長レコード、(ii)間隔レコード、又は(iii)の1個以上の一致する参照配列位置を含まなくてもよい。このようなシード伸長エラーは、例えば、コンピュータシステムが、シードが取得されたリードの端部を越えてシードを伸長することを試みる場合に、存在し得る。
【0130】
これに代えて、他の例では、コンピュータシステムは、段階415で、実行されたクエリへの応答が、(i)伸長レコード、(ii)間隔レコード、又は(iii)その両方を含むと判定することによって、プロセス400の実行を継続することができる。このような例では、コンピュータシステムは、間隔レコードによって参照される伸長テーブル内の1個以上の一致する参照配列位置を取得するために伸長テーブルがアクセスされるどうかを判定する(430)ことによって、プロセス400の実行を継続することができる。
【0131】
いくつかの例では、コンピュータシステムは、間隔レコードによって再参照された伸長テーブル内の1個以上の一致する参照配列位置を取得するためにシード伸長テーブルがアクセスされると判定することによって、プロセス400の実行を継続することができる。例えば、いくつかの実装形態では、コンピュータシステムは、一致する参照配列位置の数が所定の閾値を下回る場合、間隔レコードによって識別される1個以上の一致する参照配列位置を取得するために、シード伸長テーブルにアクセスするように構成できる。これに代えて、又はこれに加えて、コンピュータシステムは、実行されたクエリへの応答が、ハッシュクエリのシードが到達したハッシュ位置に記憶された「ストップ」レコードも含んでいた場合、間隔レコードによって識別される1個以上の一致する参照配列位置を取得するために、シード伸長テーブルにアクセスするように構成できる。「停止」レコードは、一致する参照配列位置の数が所定の閾値を下回る場合などに、優先的に、コンピュータシステムに、クエリ内のシードのさらなるシード伸張を実行せず、かつ間隔レコードによって識別される1個以上の一致する参照配列位置にアクセスしないように命令することができる。
【0132】
段階430でシード伸長ステーブルがアクセスされると判定するこのような例では、コンピュータシステムは、コンピュータシステムは、シード伸長テーブルにアクセスして、シード伸長テーブル内の1個以上の参照配列位置を取得する(450)ことによって、プロセス400の実行を継続することができる。コンピュータシステムは、間隔レコードを使用することによって、シード伸長テーブルから取得するために、1個以上の一致する参照配列位置の特定のセットを識別することができる。間隔レコードは、クエリのシードに一致する参照配列位置を記述するデータを含む、シード伸長テーブル内の複数の位置を参照する情報を含むことができる。いくつかの実装形態では、複数の位置を参照する情報は、伸長テーブル内の、クエリの伸長されたシードに一致する参照配列位置の連続する間隔を含むことができる。これに代えて、他の実装形態では、複数の位置を参照する情報は、伸長テーブル内の、クエリのシードに一致する参照配列位置の1個以上の不連続である間隔を含むことができる。
【0133】
このような例では、コンピュータシステムは、間隔レコードを使用して識別されるシード伸長テーブルから1個以上の一致する参照配列位置を取得することができる。取得された1個以上の参照配列位置は、シード一致セットに追加できる(455)。いくつかの実装形態では、1個以上の一致する参照配列位置をシード一致セットに追加することは、シード一致セットストレージに割り当てられたメモリデバイスの位置に、1個以上の一致する参照配列位置を表すデータを取得及び記憶することを含むことができる。他の実装形態では、1個以上の一致する参照配列位置をシード一致セットに追加することは、1個以上の参照配列位置を記憶するシード伸長テーブルの間隔(単数又は複数)を参照する、ポインタなどのデータを記憶することを含むことができる。したがって、シード一致セットを、識別及び取得された一致する参照配列位置のセットを記憶する記憶位置とすることができる。これに代えて、シード一致セットは、1個以上の一致する参照配列位置への参照を記憶する1個以上の記憶位置を含むことができる。コンピュータシステムは、間隔レコードによって識別される1個以上の一致する参照配列位置をシード一致に追加すると、プロセス400のこの例を460で終了することができる。
【0134】
他の例では、コンピュータシステムが、応答は、少なくとも(i)伸長レコード、(ii)間隔レコード、又は(iii)又はその両方を含むと判定した(415)後、コンピュータシステムは、1個以上の一致する参照配列位置を取得するためにシード伸長テーブルがアクセスされないと判定する(430)ことができる。コンピュータシステムによる、シード伸張テーブルが、1個以上の一致する参照配列位置を取得するためにアクセスされないとの判定は、多様な要因に基づき得る。例として、いくつかの実装形態では、コンピュータシステムは、応答が伸長レコードを返した場合、間隔レコードによって識別される一致する参照配列位置を取得するためにシード伸長テーブルにアクセスしないと判定することができる。このような判定は、伸長されたシードが、間隔レコードによって識別される一致する参照配列位置のセットよりも小さい、一致する参照配列位置のセットを作り出す可能性が高いため、好ましい場合がある。
【0135】
別の例として、他の実装形態では、コンピュータシステムは、一致する参照配列位置の数が、一致する参照配列位置の所定の閾値数を超えているとコンピュータシステムが判定した場合に、間隔レコードによって識別される一致する参照配列位置を取得するためにシード伸長テーブルにアクセスしないと判定することができる。同様に、このような実装形態では、間隔によって識別される一致する参照配列位置が一致閾値を超えているとき、コンピュータシステムは、シード伸長テーブルにアクセスしないと判定することができる。
【0136】
コンピュータシステムが、シード伸長テーブルにアクセスしないと430で判定すると、コンピュータシステムは、取得された応答が、間隔レコード及び伸長レコードを含むかどうかを465で判定することによって、プロセス400の実行を継続することができる。コンピュータシステムが、取得された応答は、間隔レコード及び伸長レコードを含むと465で判定した場合には、コンピュータシステムは、間隔レコード、又は実行されたクエリへの応答に含まれる間隔レコードを記述する情報を最良間隔候補として記憶するかどうかを435で判定することができる。まだ伸長されていない初期シードを有するクエリに対するプロセス400の第1の反復の間、コンピュータシステムは、メモリデバイスの最良間隔ストレージに、間隔レコード又は間隔レコードを記述する情報を最良間隔候補として記憶すると判定することができる。このような間隔レコードには、伸長されていない初期シードを有するクエリに対するプロセス400の初期反復中に遭遇するため、1つ以上の後続の伸長されたシードについての他のクエリに応答して遭遇した他の間隔レコードはない。したがって、まだ伸長されていない初期シードを有するクエリに応答して返される第1の間隔は、比較のために識別された他の間隔がまだないため、「最良間隔」でなければならい。
【0137】
ただし、伸長されたシードを有するクエリに対して応答が受信された後のプロセス400による後続のインタラクションのために、コンピュータシステムは、伸長されたシードを有するクエリへの応答から第2の間隔レコードを取得することができる。このような例では、コンピュータシステムは、第2の間隔レコードを使用して、最良間隔ストレージ内の以前に記憶された最良間隔候補を置き換えるために使用されるべきかどうかをヒューリスティックに判定することができる。以前に記憶された最良間隔候補を維持するか、又は最良間隔候補を第2の間隔若しくは間隔を記述する情報で置き換えるかどうかに関する判定は、
図3の実施例を参照して記載されるように、1つ以上のヒューリスティック規則を適用することによって行える。いくつかの実装形態では、ヒューリスティック規則は、1つ以上のマルチパートヒューリスティック規則を含むことができる。
【0138】
本開示のいくつかの実装形態は、クエリのシードが基づく現在のリードについて記憶されるべき単一の最良間隔を判定するために、その後に返された各間隔レコードと以前に記憶された最良間隔候補との対比を反復的に評価することを目的とすることができるが、本開示はそのように限定される必要はない。代わりに、いくつかの実装形態では、全ての間隔を間隔ストレージに保存し、シード一致セットを補完する際に使用するために後で評価することができる。
【0139】
コンピュータシステムは、伸長されたシードを生成する(440)ことによって、プロセス400の実行を継続することができる。伸長されたシードは、クエリに応答して返された伸長レコードに含まれる命令に基づいて生成できる。例として、伸長レコードは、ソフトウェア命令を実行する中央処理ユニット(CPU)若しくはグラフィック処理ユニット(GPU)又はプログラム可能な回路162などのコンピュータによって実行されると、CPU、GPU、又はプログラム可能な回路に、ヌクレオチド1個以上分、伸長レコードを記憶するハッシュ位置に到達した、ハッシュクエリ内で使用されるシードを伸長させることができる。いくつかの実装形態では、伸長レコードが、シードの各端部上で対称にシードを伸長するようにコンピュータに命令するように、伸長されたレコードを生成することができる。したがって、例として、伸長レコードは、CPU、GPU、又はプログラム可能な回路162などのコンピュータに、ヌクレオチド2個分、ヌクレオチド4個分、ヌクレオチド6個分などシードを伸長するように命令するように生成できる。このような実装形態では、シードの対称的な伸長は、シードのそれぞれの各端部上のヌクレオチド1個分、シードのそれぞれの各端部上のヌクレオチド2個分、シードのそれぞれの各端部上のヌクレオチド3個分など、シードを伸長することによって達成できる。ただし、本開示は、シードの対称的な伸長に限定されるべきではない。代わりに、シードの非対称な伸長もまた、本開示によって想到される。
【0140】
コンピュータシステムは、伸長されたシードを含むハッシュクエリを445で生成することによって、プロセス400の実行を継続することができる。次いで、コンピュータシステムは、段階405で、伸長されたクエリを有するクエリを実行することによってプロセス400の別の反復を実行し、次いで、(a)1個以上の一致する参照配列位置をシード一致セットに追加することによって、プロセスが427又は460で終了するまで、プロセス400の実行を継続し、プロセスは、間隔レコードを最良間隔候補として記憶するかどうかを判定した後、475で終了するか、又は(c)プロセスは、(i)伸長レコード、(ii)間隔レコード、又は(iii)1個以上の一致する参照配列位置を含む、実行されたクエリへの応答を受信しないクエリをもたらすシード伸長エラーなどの1つ以上のエラーの結果として、段階420で終了する。
【0141】
これに代えて、段階465で、コンピュータシステムが、取得された応答は、間隔レコード及び伸長レコードの両方を含まないと判定した場合には、コンピュータシステムは、取得された応答が伸長レコードを含むかどうかを判定することによって、プロセス400の実行を継続することができる。
【0142】
コンピュータシステムが、取得された応答は伸長レコードを含むと判定した場合、コンピュータシステムは、段階440で、伸長されたシードを生成することによってプロセス400の実行を継続し、伸長されたシードを含むハッシュクエリ445を生成し、段階405で、伸長されたクエリを有するクエリを実行することによってプロセス400の別の反復を実行することができる。次いで、コンピュータシステムは、(a)プロセスが、427,420,460,475で終了するまでプロセス400の実行を継続することができる。
【0143】
一方、コンピュータシステムが、取得された応答は伸長レコードを含まないと判定した場合には、コンピュータシステムは、段階470で、間隔レコード又は間隔レコードを記述する情報を最良間隔候補として記憶するかどうかを判定することによって、プロセス400の実行を継続することができる。コンピュータシステムは、段階435で間隔レコードを最良間隔候補として記憶するかどうかを判定することに関して記載された同じプロセスを使用して、段階470で、間隔レコードを最良間隔候補として記憶するかどうかを判定することができる。コンピュータシステムが、段階470で、間隔レコードを最良間隔候補として記憶すると判定するかどうかにかかわらず、プロセス400は、段階475で終了する。
【0144】
プロセス400の少なくとも1つの変形例を実装することができ、コンピュータシステムは、代わりに、取得された応答が間隔レコードを含むかどうかを段階470で判定する。このような例では、論理的に、コンピュータシステムが、取得された応答が間隔レコードを含むと判定した場合、コンピュータシステムは、段階470でプロセスの実行を継続することができることとなる。これに代えて、コンピュータシステムが、取得された応答が間隔レコードを含まないと判定した場合には、プロセスは、段階440で、伸長されたシードを生成することによって続行する。プロセス400のプロセスフローの他の変形例は、同様に実装でき、本開示の趣旨及び範囲内に収まることができる。
【0145】
図5は、リードの各シードに対するハッシュテーブルゲノムマッピングのための、反復的なランタイムの柔軟性のあるシード伸長を実行するためのプロセス500のフローチャートである。一般に、プロセス500は、核酸シーケンサによって生成されたリードを取得する(505)ことと、シードアクセス窓の位置を判定することであって、シードアクセス窓が、リードのシードを識別する、判定する(510)ことと、シードアクセス窓によって識別されるシードを含むハッシュクエリを生成する(515)ことと、プロセス400が終了するまで生成されたハッシュクエリを実行し、かつプロセス400の反復実行を継続することによって、段階410において
図4によって記載されるプロセス400の実行を開始する(520)ことと、リードが別のシードを含むかどうかを判定する(525)ことと、を含むことができ、リードが別のシードを含むと判定された(525)場合、シードアクセス窓を調整して他のシード(530)を識別し、段階515を実行して、他のシードを使用してハッシュクエリを生成する(515)。
【0146】
プロセス500は、段階525において、段階505で取得されたリードがプロセス400を使用してマッピング及びアライニングされる別のシードを含まないと判定されるまで、段階515,520,525、及び530の処理ループを実行し続けることができる。このような例では、最良間隔を使用してリードについての現在のシード一致セットを補完するかどうかを判定する(535)ことができる。段階535で最良間隔を使用して現在のシード一致を補完すると判定された場合、プロセス500は、段階540で最良間隔を処理することによって続行する(540)ことができ、最良間隔を使用して識別されるシード伸長テーブルの一部分から取得された1個以上の一致する参照配列位置を使用して、現在のシード一致セットを補完し(545)、プロセス500を使用したマッピング及びアライニングの準備ができている別のリードが存在するかどうかを550で判定する。マッピング及びアライニングの準備ができている別のリードが存在しない場合には、プロセス500は、段階555で終了する。これに代えて、プロセス500を使用したマッピング及びアライニングの準備ができている別のリードが存在する場合には、プロセス500は、段階505で、マッピング及びアライニングの準備ができている他のリードを取得することによって続行する。次いで、プロセス500は、プロセス500を使用したマッピング及びアライニングの準備ができている別のリードが存在しないと段階550で判定されるまで、反復的にプロセス500を実行し続けることができる。
【0147】
プロセス500を、1つ以上のコンピュータのコンピュータシステムによって実行されるものとして、以下により詳細に記載する。1つ以上のコンピュータは、例えば、マッピング及びアライニングユニット170を含むことができる。本開示の目的で、1つ以上のコンピュータは、ソフトウェア命令を取得及び実行して、ソフトウェア命令によって記述される特定のプログラムされた機能性を実現するように構成されたCPU又はGPUを含むことができる。これに代えて、又はこれに加えて、1つ以上のコンピュータは、プログラム可能な回路のハードウェアデジタル論理回路が、特定のプログラムされた機能性をハードウェアで実現するように構成されているように構成されているプログラム可能な回路を含むことができる。
【0148】
コンピュータシステムは、核酸シーケンサによって生成される核酸リード(本明細書では「リード」とも呼ばれる)を表すデータを取得する(505)ことによって、プロセス500の実行を開始することができる。リードは、リードが核酸シーケンサによって生成された後に、入力として核酸シーケンサから、コンピュータシステムによって受信できる。これに代えて、又は加えて、核酸シーケンサによって生成されたリードは、コンピュータシステムがアクセス可能なメモリデバイスに記憶されてもよい。次いで、コンピュータシステム500は、メモリデバイスから1つ以上のリードを取り出すためにメモリにアクセスすることによって、記憶されたリード(単数又は複数)を取得することができる。例として、リードは、「ACGTTTAGC」などのヌクレオチドのセットを含むことができる。この実施例は、9個のヌクレオチドのリードを含む。ただし、9個のヌクレオチドのリードの使用は、実施例としてのみ使用される。9個のヌクレオチドに限定される代わりに、本開示によって記載されるようなリードは、5個の塩基若しくはヌクレオチド、10個の塩基若しくはヌクレオチド、12個の塩基若しくはヌクレオチド、15個の塩基若しくはヌクレオチド、18個の塩基若しくはヌクレオチド、21個の塩基若しくはヌクレオチド、25個の塩基若しくはヌクレオチド、35個の塩基若しくはヌクレオチド、50個の塩基若しくはヌクレオチド、100個の塩基のヌクレオチド、150個の塩基若しくはヌクレオチド、1,000個の塩基若しくはヌクレオチド、百万個の塩基若しくはヌクレオチド、又はさらに多くの塩基若しくはヌクレオチドを含む任意のヌクレオチド長であることが可能であるが、これらに限定されない。
【0149】
コンピュータシステムは、シードアクセス窓の位置を判定する(510)ことによって、プロセス500の実行を継続することができる。シードアクセス窓を使用して、リードのヌクレオチドのサブセットから構成されるヌクレオチドのシードを識別することができる。シードの例は、リード「ACGTTTAGC」のシードである、連続ヌクレオチドのセット「GTTTA」である。連続ヌクレオチドのセット「GTTTA」は、リード「ACGTTTAGC」の連続するシードの例を表すが、本開示は、そのように限定される必要はない。代わりに、いくつかの実装形態では、非連続であるシードは、本開示によって記載されるシステム及びプロセスを使用して取得及び解析できる。例えば、「G_T_A」などの非連続であるシードはまた、リード「ACGTTTAGC」から取得でき、本明細書に記載されるシステム及び方法を使用して解析できる。このような実装形態では、本開示のシステム及び方法は、任意の塩基又はヌクレオチドと一致することが可能であるワイルドカードとして、アンダースコア「_」によって表されるスキップされた位置を取り扱い得る。
【0150】
シードアクセス窓は、リード長さよりも短い任意の塩基又はヌクレオチド長であるように構成できる。シードアクセス窓は、処理のためにリードのシードを識別するために、連続リードに沿って順方向又は逆方向に移動するように構成できる。非連続であるシードが利用される場合、シードアクセス窓は、それに応じて構成できる。例として、シードアクセス窓は、ヌクレオチド位置6及びヌクレオチド位置8に挿入されたワイルドカードで9個のヌクレオチドの非連続であるシードを識別するように構成できる。
【0151】
コンピュータシステムは、シードアクセス窓によって識別されるシードを含むハッシュクエリを生成する(515)ことによって、プロセス500の実行を継続することができる。いくつかの実装形態では、ハッシュクエリは、単に、「ACGTTTAGC」などのリードのシード「GTTTA」から構成できる。他の実装形態では、追加のデータ、メタデータなどを、サンプルのシードに追加して、シードを、ハッシュテーブルを探索するために使用できるフォーマットに変換し得る。
【0152】
コンピュータシステムは、
図4によって記載されるプロセス400を実行することによって、プロセス500の実行を継続して(520)、生成されたクエリのシードを1個以上の参照配列位置にマッピング及びアライニングすることができる。コンピュータシステムは、段階410で、段階515で生成されたハッシュクエリを実行することによって、プロセス400の実行を開始する。次いで、コンピュータシステムは、プロセス400が、場合によっては段階425又は455でシード一致セットに一致する参照配列位置を追加しながら、段階420,427,460,又は475で終了するまで、プロセス400の反復実行を継続することができる。
【0153】
プロセス400が終了した後、コンピュータシステムは、段階505で取得されたリードが別のシードを含むかどうかを判定する(525)ことができる。いくつかの実装形態では、リードが別のシードを含むかどうかを判定することは、リード内の起こり得る全てのシードアクセス窓位置を考慮することを含む。これに代えて、リードが別のシードを含むかどうかを判定することは、偶数のシードアクセス窓位置のみ又は奇数のシードアクセス窓位置のみなどの、全ての起こり得るシードアクセス窓位置の所定のサブセットのみを考慮することを含むことができる。したがって、本開示は、プロセス500を使用してリードの各シードが評価されることを必要としない。代わりに、いくつかの実装形態では、それらコンピュータシステムは、プロセス500を使用して評価されるリードのシードの所定のサブセットの別のシードが存在するかどうかを段階505で判定することができる。
【0154】
コンピュータシステムが、段階525でリードが別のシードを含むと判定した場合、コンピュータシステムは、シードアクセス窓を調整して他のシードを識別する(530)ことができ、コンピュータシステムは、段階515を実行して、調整されたシードアクセス窓によって識別される他のシードを使用してハッシュクエリを生成する(515)ことができる。シードアクセス窓を調整することは、例えば、シードアクセス窓を、段階505で取得されたリードに沿って順方向に、1個以上の塩基又はヌクレオチドの位置だけ移動させることを含み得る。コンピュータシステムは、段階525において、段階505で取得されたリードがプロセス400を使用してマッピング及びアライニングされる別のシードを含まないと判定するまで、段階515,520,525及び段階530の処理ループの実行を継続することができる。
【0155】
コンピュータシステムが、段階505で取得されたリードがマッピング及びアライニングされる別のシードを含まないと判定すると、コンピュータシステムは、最良間隔を使用して、リードについての現在のシード一致セットを補完するかどうかを判定する(535)ことができる。いくつかの例では、コンピュータシステムが、シード一致セットは補完されるべきではないと判定した場合、コンピュータシステムは、プロセス500を使用したマッピング及びアライニングの準備ができている別のリードが存在するかどうかを判定する(550)ことができる。このような例では、コンピューティングシステムが、マッピング及びアライニングの準備ができている別のリードが存在すると判定した場合、コンピュータシステムは、段階505で、マッピング及びアライニングの準備ができている他のリードを取得することによってプロセス500の実行を継続することができる。次いで、コンピュータシステムは、プロセス500を使用したマッピング及びアライニングの準備ができている別のリードが存在しないと段階550で判定されるまで、反復的にプロセス500を実行することができる。
【0156】
これに代えて、他の例では、コンピュータシステムは、リードのための現在のシード一致セットが、最良間隔によって識別される1個以上の一致する参照配列位置を使用して補完されるべきであると判定することができる。コンピュータシステムは、(i)クエリが最良間隔を作り出した伸長されたシーのシード長、(ii)1個以上の一致する参照配列位置のシード長、(iii)生成されたシード鎖の数、又はそれらの組み合わせに、1つ以上のヒューリスティック規則を適用することによって、最良間隔によって識別される1個以上の一致する参照配列位置を使用して現在のシード一致セットが補完されるべきであると判定することができる。いくつかの実装形態では、ヒューリスティック規則は、トリガされた場合にコンピュータシステムに最良間隔を処理させる、1つ以上の独立したトリガ条件を指定することができる。
【0157】
例として、最良間隔のコンピュータシステムによる処理をトリガすることができる第1の独立したトリガ条件は、クエリが最良間隔を作り出した伸長されたシードのシード長が、intvl-seed-length(60)以上の塩基又はヌクレオチド以上であったかどうかを判定することである。この実施例では、閾値intvl-seed-length(60)は、最良間隔を作り出す伸長されたシードの長さを評価するために、コンピュータシステムによって使用できる所定の閾値である。この実施例では、コンピュータシステムが検査する最良間隔を作り出した伸長されたシードのシード長は、60個のヌクレオチドをチェックである。ただし、本開示は、そのように限定される必要はない。代わりに、閾値intvl-seed-length()は、任意のヌクレオチド長に設定できる。コンピュータシステムが、intvl-seed-length()閾値は満たされていないと判定した場合、コンピュータシステムは、他のトリガ条件を評価して、最良間隔が処理されるかどうかを判定することができる。
【0158】
別の例として、最良間隔のコンピュータシステムによる処理をトリガすることができる第2の独立したトリガ条件は、クエリが最良間隔を作り出した伸長されたシードのシード長が、少なくともintvl-seed-longer(8)の塩基又はヌクレオチドによって処理された最長の一致する参照配列位置よりも大きかったかどうかを判定することである。この実施例では、閾値intvl-seed-longer(8)は、(i)クエリが最良間隔を作り出した伸長されたシードのシード長と、(ii)最長の一致する参照配列位置と、の比較を評価するために、コンピュータシステムによって使用できる所定の閾値である。この実施例では、コンピュータシステムが、クエリが最良間隔を作り出した伸長されたシードのシード長は、任意の一致したシードよりも大きい8個以上の塩基又はヌクレオチであると判定した場合、最良間隔の処理が、トリガされる。
【0159】
別の実施例として、最良間隔のコンピュータシステムによる処理をトリガすることができる第3の独立したトリガ条件は、シード鎖の数が、intvl-min-chains(8)よりも小さいかどうかを判定することである。シード鎖は、同様に配置された参照配列位置の一致の群を含むことができる。この実施例では、閾値intvl-min-chains(8)は、生成されたシード鎖の数を評価するために使用できる所定の閾値である。この実施例では、8個より小さいシード鎖が生成された場合には、最良間隔の処理が、トリガされる。
【0160】
シード一致セットを補完するための最良間隔の処理をトリガするための3つの独立したトリガ条件の例が記載されているが、本開示は、そのように限定される必要はない。代わりに、特定のコンピュータシステムが必要とし得るような最良間隔の処理をトリガするように、他のトリガ条件を構築することができる。
例えば最良間隔を処理するためのトリガ条件の1つ以上の閾値が満たされているため、コンピュータシステムが段階535でシード一致を補完すると判定した場合には、コンピュータシステムは、最良間隔を使用して、段階535で現在のシード一致セットを補完すると判定することができる。最良間隔を使用して現在のシード一致セットを補完することは、コンピュータシステムが最良間隔を処理する(540)ことを含むことができる。最良間隔を処理することは、最良間隔によって識別され、かつシード伸長テーブルに記憶された1個以上の一致する参照配列位置を識別するために、1つ以上のヒューリスティック規則を最良間隔に適用することを含むことができる。
【0161】
例として、コンピュータシステムは、最良間隔によって識別される参照配列位置の数が、intvl-max-hits(64)以下である場合、最良間隔によって識別される1個以上の参照配列位置の全てを処理すると判定することができる。この実施例では、コンピュータシステムが、最良間隔は64個以下の一致する参照配列位置を識別したと判定した場合には、コンピュータシステムは、最良間隔を使用したシード伸長テーブルから、最良間隔によって識別される一致する参照配列位置の全てを取得することができる。これに代えて、コンピュータシステムが、最良間隔は64個よりも多い一致する参照配列位置を識別すると判定した場合には、コンピュータシステムは、最良間隔によって識別される一致する参照配列位置のセットから、intvl-sample-hits(32)の一致する参照配列をランダムに取得することができる。
【0162】
32個の一致する参照配列位置の閾値量をランダムに取得することは、最良間隔を使用したシード伸長テーブルから、32個の一致する参照配列位置の閾値量をランダムに、又は決定論的な擬似ランダム選択によって取得することを含むことができる。最良間隔は、(i)シード伸長テーブルの1個以上の停止及び開始位置、(ii)1個以上の開始位置及び1つ以上のオフセット、又はそれらの組み合わせを識別するデータを含むことができる。64個の一致する参照位置及び32個のランダムにサンプリングされたヒットなどの閾値の例が記載されているが、本開示は、そのように限定される必要はない。代わりに、他の数値を有する他の閾値を使用して、本開示の利点を達成することができる。
【0163】
最良間隔を使用して取得された一致する参照配列位置を使用して、現在のシード一致セット545を補完することができる。最良間隔を使用したシード一致セットのこのような補完は、シード一致セットに記憶された一致する参照配列位置をもたらさない可能性があるか、又はシード一致セットに記憶された一致する参照配列位置をごく少数しかもたらさない可能性がある、マッピングされないリード問題又は高確度の誤マッピング問題などの問題を解決することができる。一致する参照配列位置は、最良間隔(540)によって識別されるシード伸長テーブルの一部分から取得されていてもよいか、又はこの一部分から取得できる。
【0164】
シード一致セットが補充されると、コンピュータシステムは、プロセス500を使用したマッピング及びアライニングの準備ができている別のリードが存在するかどうかを判定することができる。マッピング及びアライニングの準備ができている別のリードが存在する場合、コンピュータシステムは、他のリードを取得することによって、プロセス500の実行を継続する。これに代えて、マッピング及びアライニングの準備ができている別のリードが存在しない場合、プロセス500は、555で終了することができる。
【0165】
プロセス500を参照して記載される実施例では、最良間隔は、最良間隔又は最良間隔の一部分を使用してシード一致セットを補完することができるかどうかを判定するために評価される。ただし、最良間隔ストレージに単一の最良間隔のみが記憶される必要はない。いくつかの実装形態では、コンピュータシステムは、最良間隔ストレージへの2個以上の最良間隔の記憶を容易にすることができる。例えば、いくつかの実装形態では、最大2個の最良間隔が、追跡されてもよい。いくつかの実装形態では、最大N個の最良間隔が、追跡されてもよい。このような実装形態では、N>1個の最良間隔が記憶される場合、いずれの間隔が保持されているかを判定するための基準は、N個の最良間隔がリード内で互いに重なり合わない伸長されたシードと関連付けられることを必要とするような、間隔候補、間隔候補の関連付けられた伸長されたシード、又はその両方同士又は間の関係の評価を伴うことができる。いくつかの実装形態では、コンピュータシステムは、複数の異なる最良間隔のうちから一致する参照配列位置を選択することまでも可能である。複数の異なる最良間隔のうちからの一致する参照配列位置のこのような選択は、ランダムに、疑似ランダムに、又は1つ以上のヒューリスティックを適用することによって実行できる。
システム構成要素
【0166】
図6は、ハッシュテーブルゲノムマッピングのための柔軟性のあるシード伸長に関連した本明細書に記載されるシステムを実装するために使用できるシステム構成要素の図である。
【0167】
コンピューティングデバイス600は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことが意図されている。コンピューティングデバイス650は、パーソナルデジタルアシスタント、携帯電話、スマートフォン、及び他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すことが意図されている。これに加えて、コンピューティングデバイス600又は650は、ユニバーサルシリアルバス(Universal Serial Bus、USB)フラッシュドライブを含むことができる。USBフラッシュドライブは、オペレーティングシステム及び他のアプリケーションを記憶することができる。USBフラッシュドライブは、別のコンピューティングデバイスのUSBポートに挿入できる無線送信機又はUSBコネクタなどの入力/出力構成要素を含むことができる。本明細書に示される構成要素、この構成要素の接続及び関係、並びにこの構成要素の機能は、単なる例であることを意味し、本文書に記載及び/又は特許請求される発明の実装形態を限定することを意味するものではない。
【0168】
コンピューティングデバイス600は、プロセッサ602,メモリ604、記憶デバイス608、メモリ604及び高速拡張ポート610に接続する高速インターフェース608、並びに低速バス614及び記憶デバイス608に接続する低速インターフェース612を含む。構成要素602,604,608,608,610,及び612の各々は、様々なバスを使用して相互接続されており、共通のマザーボード上に、又は適宜他の手法で実装できる。プロセッサ602は、メモリ604又は記憶デバイス608上に記憶された命令を含むコンピューティングデバイス600内での実行のための命令を処理して、高速インターフェース608に結合されたディスプレイ616などの外部入力/出力デバイス上のGUIに関するグラフィカル情報を表示することができる。他の実装形態では、複数のプロセッサ及び/又は複数のバスを、適宜、複数のメモリ及び複数種類のメモリと共に使用できる。また、複数のコンピューティングデバイス600を接続して、各デバイスが、例えば、サーババンク、ブレードサーバ群、又はマルチプロセッサシステムとして、必要な動作の部分を提供するようにすることができる。
【0169】
メモリ604は、コンピューティングデバイス600内に情報を記憶する。一実装形態では、メモリ604は、揮発性メモリユニット又は複数の揮発性メモリユニットである。別の実装形態では、メモリ604は、不揮発性メモリユニット又は複数の不揮発性メモリユニットである。メモリ604を、磁気ディスク又は光ディスクなどの別の形態のコンピュータ可読媒体とすることもできる。
【0170】
記憶デバイス608は、コンピューティングデバイス600のための大規模ストレージを提供することができる。一実装形態では、記憶デバイス608は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、若しくはテープデバイス、フラッシュメモリ若しくは他の類似のソリッドステートメモリデバイス、又はストレージエリアネットワーク若しくは他の構成内のデバイスを含むデバイスのアレイなどのコンピュータ可読媒体であり得るか、又はそれを内包することができる。コンピュータプログラム製品は、情報キャリア内に、有形に実施できる。コンピュータプログラム製品はまた、実行されると、上述したものなどの1つ以上の方法を実行する命令を内包することができる。情報キャリアは、メモリ604、記憶デバイス608、又はプロセッサ602上のメモリなどのコンピュータ可読媒体又はマシン可読媒体である。
【0171】
高速コントローラ608は、コンピューティングデバイス600の帯域幅集約動作を管理する一方、低速コントローラ612は、低帯域幅集約動作を管理する。このような機能の割り当ては、一実施例に過ぎない。一実装形態では、高速コントローラ608は、例えば、グラフィックプロセッサ又はアクセラレータを介してメモリ604、ディスプレイ616に、及び様々な拡張カード(図示せず)を受け入れることができる高速拡張ポート610に結合されている。この実装形態では、低速コントローラ612は、記憶デバイス608及び低速拡張ポート614に結合されている。様々な通信ポート、例えば、USB、Bluetooth、Ethernet、無線Ethernetを含むことができる低速拡張ポートは、例えば、ネットワークアダプタを介して、キーボード、ポインティングデバイス、マイクロフォン/スピーカペア、スキャナ、又はスイッチ若しくはルータなどのネットワーキングデバイスなどの1つ以上の入力/出力デバイスに結合できる。コンピューティングデバイス600は、図に示されるように、いくつかの異なる形態で実装できる。例えば、コンピューティングデバイス600は、標準サーバ620として、又はこのようなサーバのグループ内で複数回、実装できる。コンピューティングデバイス600はまた、ラックサーバシステム624の一部として実装できる。加えて、コンピューティングデバイス600は、ラップトップコンピュータ622などのパーソナルコンピュータに実装できる。これに代えて、コンピューティングデバイス600からの構成要素を、デバイス650などのモバイルデバイス(図示せず)内の他の構成要素と組み合わせることができる。このようなデバイスの各々は、コンピューティングデバイス600,650のうちの1つ以上を内包することができ、システム全体を、互いに通信する複数のコンピューティングデバイス600,650から構成することができる。
【0172】
コンピューティングデバイス600は、図に示されるように、いくつかの異なる形態で実装できる。例えば、コンピューティングデバイス600は、標準サーバ620として、又はこのようなサーバのグループ内で複数回、実装することができる。コンピューティングデバイス600はまた、ラックサーバシステム624の一部として実装できる。加えて、コンピューティングデバイス600は、ラップトップコンピュータ622などのパーソナルコンピュータに実装できる。これに代えて、コンピューティングデバイス600からの構成要素を、デバイス650などのモバイルデバイス(図示せず)内の他の構成要素と組み合わせることができる。このようなデバイスの各々は、コンピューティングデバイス600,650のうちの1つ以上を内包することができ、システム全体を、互いに通信する複数のコンピューティングデバイス600,650から構成することができる。
【0173】
コンピューティングデバイス650は、構成要素の中でもとりわけ、プロセッサ652,メモリ664と、ディスプレイ654、通信インターフェース666、及び送受信機668などの入出力デバイスを含む。デバイス650はまた、追加のストレージを提供するために、マイクロドライブ又は他のデバイスなどの記憶デバイスを備えることができる。構成要素650,652,664,654,666,及び668の各々は、様々なバスを使用して相互接続されており、構成要素はのうちのいくつかは、共通のマザーボード上に、又は適宜他の手法で実装できる。
【0174】
プロセッサ652は、メモリ664に記憶された命令を含む、コンピューティングデバイス650内の命令を実行することができる。プロセッサは、別個及び複数のアナログ及びデジタルプロセッサを含むチップのチップセットとして実装できる。これに加えて、プロセッサは、いくつかのアーキテクチャのうちのいずれかを使用して実装できる。例えば、プロセッサ610を、CISC(複合命令セットコンピュータ(Complex Instruction Set Computers))プロセッサ、RISC(縮小命令セットコンピュータ(Reduced Instruction Set Computer))プロセッサ、又はMISC(最小命令セットコンピュータ(Minimal Instruction Set Computer))プロセッサとすることができる。プロセッサは、例えば、ユーザインタフェースの制御、デバイス650によって実行されるアプリケーション、及びデバイス650による無線通信など、デバイス650の他の構成要素の協調を提供することができる。
【0175】
プロセッサ652は、制御インターフェース658とディスプレイ654に結合されたディスプレイインターフェース656とを介してユーザと通信することができる。ディスプレイ654を、例えば、TFT(薄膜トランジスタ液晶ディスプレイ(Thin-Film-Transistor Liquid Crystal Display))ディスプレイ、OLED(有機発光ダイオード(Organic Light Emitting Diode))ディスプレイ、又は他の適切なディスプレイ技術とすることができる。ディスプレイインターフェース656は、ディスプレイ654を駆動してグラフィカル情報及び他の情報をユーザに提示するための適切な回路を含むことができる。制御インターフェース658は、ユーザからコマンドを受信し、このコマンドをプロセッサ652へのサブミット用に変換することができる。加えて、デバイス650と他のデバイスとの近接領域通信を可能にするために、プロセッサ652と通信する外部インターフェース662を提供することができる。外部インターフェース662は、例えば、いくつかの実装形態では有線通信を、又は他の実装形態では無線通信を提供することができ、複数のインターフェースを使用することもできる。
【0176】
メモリ664は、コンピューティングデバイス650内に情報を記憶する。メモリ664は、コンピュータ可読媒体若しくは媒体、揮発性メモリユニット若しくはユニット、又は不揮発性メモリユニット若しくはユニットのうちの1つ以上として実装することができる。また、例えばSIMM(シングルインラインメモリモジュール(Single In Line Memory Module))カードインターフェースを含むことができる、拡張インターフェース672を介して、デバイス650に拡張メモリ674を提供及び接続することができる。このような拡張メモリ674は、デバイス650のための増設記憶空間を提供することができるか、又は、デバイス650のためのアプリケーション又は他の情報を記憶することもできる。具体的には、拡張メモリ674は、上述したプロセスを実行又は補完する命令を含むことができ、セキュアな情報を含むこともできる。したがって、例えば、拡張メモリ674は、デバイス650のためのセキュリティモジュールとして提供でき、デバイス650のセキュアな使用を可能にする命令を用いてプログラムできる。加えて、セキュアなアプリケーションは、SIMMカードを介して、ハッキング不能な手法でSIMMカード上に識別情報を配置するなど、追加情報と共に提供できる。
【0177】
メモリは、例えば、後述するように、フラッシュメモリ及び/又は不揮発性ランダムアクセスメモリ(Non-volatile random-access memory、NVRAM)メモリを含むことができる。一実装形態では、コンピュータプログラム製品は、情報キャリア内で有形に実施される。コンピュータプログラム製品は、実行されると、上述したものなどの1つ以上の方法を実行する命令を内包する。情報キャリアは、例えば送受信機668又は外部インターフェース662を介して受信できるメモリ664,拡張メモリ674又はプロセッサ652上のメモリなどの、コンピュータ可読媒体又はマシン可読媒体である。
【0178】
デバイス650は、必要に応じてデジタル信号処理回路を含むことができる通信インターフェース666を介して無線通信することができる。通信インターフェース666は、とりわけGSM音声通話、SMS、EMS、又はMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、又はGPRSなどの様々なモード又はプロトコル下での通信を提供することができる。このような通信は、例えば、高周波送受信機668を介して行われることが可能である。加えて、Bluetooth、Wi-Fi、又は他のこのような送受信機(図示せず)を使用するなど、短距離通信が行われることが可能である。加えて、GPS(全地球測位システム(Global Positioning System))受信機モジュール670が、デバイス650に追加のナビゲーション関連及び位置関連の無線データを提供することができ、デバイス650は、デバイス650上で作動するアプリケーションによって適宜使用できる。
【0179】
デバイス650はまた、オーディオコーデック660を使用して可聴的に通信することができ、オーディオコーデック660は、ユーザから発話情報を受信し、この発話情報を使用可能なデジタル情報に変換することができる。オーディオコーデック660は同じく、例えばデバイス650のハンドセット内の、スピーカを介してなど、ユーザのための可聴音を生成することができる。このような音は、音声電話通話からの音を含むことができ、録音された音、例えば、音声メッセージ、音楽ファイルなどを含むことができ、また、デバイス650上で動作するアプリケーションによって生成される音を含むこともできる。
【0180】
コンピューティングデバイス650は、図に示されるように、いくつかの異なる形態で実装できる。例えば、コンピューティングデバイス650は、携帯電話680として実装できる。また、コンピューティングデバイス650を、スマートフォン682、パーソナルデジタルアシスタント、又は他の同様のモバイルデバイスの一部として実装することもできる。
【0181】
本明細書に記載されるシステム及び方法の様々な実装形態は、デジタル電子回路、集積回路、専用に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこのような実装形態の組み合わせで実現できる。これらの様々な実装形態は、専用又は汎用であり、記憶システム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ及び命令を受信し、かつこれらにデータ及び命令を送信するように結合された少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能及び/又は解釈可能である1つ以上のコンピュータプログラムでの実装形態を含むことができる。
【0182】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られている)は、プログラム可能なプロセッサのためのマシン命令を含み、高水準手続き型及び/又はオブジェクト指向プログラミング言語で、及び/又はアセンブリ/マシン言語で実装できる。本明細書で使用されるとき、用語「マシン可読媒体」「コンピュータ可読媒体」は、任意のコンピュータプログラム製品、装置、及び/又はデバイス、例えば、磁気ディスク、光ディスク、メモリ、マシン命令及び/又はデータをプログラム可能なプロセッサに提供するために使用されるプログラマブルロジックデバイス(Programmable Logic Device、PLD)を指し、マシン可読信号としてマシン命令を受信するマシン可読媒体を含む。用語「マシン可読信号」は、プログラム可能なプロセッサにマシン命令及び/又はデータを提供するために使用される任意の信号を指す。
【0183】
ユーザとの対話を提供するために、本明細書に記載されるシステム及び技術は、ユーザに情報を表示するためのディスプレイデバイス、例えば、CRT(陰極線管(cathode ray tube))又はLCD(液晶ディスプレイ(liquid crystal display))モニタ、並びにユーザがコンピュータに入力を提供することができるポインティング装置、例えばマウス又はトラックボールを有するコンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとのインタラクションをも提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックとすることができ、ユーザからの入力は、音響入力、発話入力、又は触覚入力を含む任意の形態で受信できる。
【0184】
本明細書に記載されるシステム及び技術は、例えばデータサーバとしての、バックエンド構成要素を含むコンピューティングシステムで、又はミドルウェアコンポーネント、例えば、アプリケーションサーバを含むコンピューティングシステムで、又はフロントエンド構成要素、例えばユーザが介して本明細書に記載されるシステム及び技術の実装形態とインタラクトすることができるグラフィカルユーザインターフェース又はウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステムで、又はこのようなバックエンド、ミドルウェア、又はフロントエンドの構成要素の任意の組み合わせで、実装できる。システムの構成要素は、デジタルデータ通信、例えば通信ネットワークの任意の形態又は媒体によって相互接続できる。通信ネットワークの例として、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、及びインターネットが挙げられる。
【0185】
コンピューティングシステムは、クライアント及びサーバを含むことができる。クライアント及びサーバは一般に、互いにリモートであり、通常、通信ネットワークを介してインタラクトする。クライアントとサーバとの関係は、それぞれのコンピュータ上で作動し、かつ互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
実施例
【0186】
本開示は、特許請求の範囲を限定しない以下の実施例にさらに記載されている。
実施例1:柔軟性のあるシード伸長を使用するシステムと柔軟性のあるシード伸長を使用しないシステムとの間でのマッピングされないリードの割合の比較
【0187】
この実施例では、特定のサンプルを配列するために、HiSeq(登録商標)2500シーケンサ、HiSeq(登録商標)Xシーケンサ、及びNovaSeq(登録商標)シーケンサを含む異なる核酸シーケンサを使用した。次に、DRAGEN(商標)プラットフォームを使用して、本明細書に記載されるような柔軟性のあるシード伸長を用いて、及び柔軟性のあるシード伸長を用いずに、各シーケンサによって生成されたリードをマッピングした。マッピングされると、コンピュータシステムは、各シーケンサに対する各マッピング動作から結果として得られたマッピングされないリードの割合を判定した。
【0188】
DRAGEN(商標)プラットフォームは、フィールドプログラマブルゲートアレイ(FPGA)のハードウェア回路機構で実装されたマッピング及びアライニングユニットである。DRAGEN(商標)v7プラットフォームは、本明細書に記載されるような柔軟性のあるシード伸長を現在利用しないのに対して、DRAGEN(商標)v8プラットフォームは、柔軟性のあるシード伸長を利用する。本明細書で使用されるDRAGEN(商標)プラットフォームは、FPGAで実装されていたが、一般に、DRAGEN(商標)プラットフォームは、特定用途向け集積回路(ASIC)などの他の集積回路ででも実装できる。
【0189】
特に、HiSeq(登録商標)2500シーケンサを使用して、「DNA_Nexus_hiseq2500」サンプルを配列決定し、HiSeq(登録商標)Xシーケンサを使用して、「DNA_Nexus_hiseqX」サンプルをシーケンサし、NovaSeq(登録商標)シーケンサを使用して、「DNA_Nexus_NovaSeq」サンプル、「NovaSeq_NA12878_rep1サンプル」、「NovaSeq_TruSeq-nano-550サンプル」、「AWS_HG005_40x」サンプルを配列決定した。「AWS_HG005_40X」は、被験体HG005に由来するものであった。他のサンプルの全ては、被験体HG001に由来するものであった。
【0190】
図7は、柔軟性のあるシード伸長法を使用しないシステムと比較した、本明細書に記載されるような柔軟性のあるシード伸長法を使用するシステムにおけるマッピングされないリードの割合の形態をなす試験結果を表すデータを表示する棒グラフ700の説明図である。棒グラフ700は、Illumina、Inc.の異なる配列決定デバイスによって生成されたゲノムリードに対して実行されるマッピング動作の結果を比較する試験結果710,720,730,740,750、及び760のグラフ表示である。
【0191】
第1の実施例では、試験結果710は、HiSeq(登録商標)2500シーケンサが「DNA_Nexus_hiseq2500」サンプルを配列決定し、かつマッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用するときに710bで生じるマッピングされないリードの割合が、HiSeq(登録商標)2500シーケンサが、マッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用せずに「DNA_Nexus_hiseq2500」サンプルを配列決定するときに710aで生じる、マッピングされないリードの割合よりも著しく小さいことを示す。
【0192】
第2の実施例では、試験結果720は、NovaSeq(登録商標)シーケンサが「DNA_Nexus_NovaSeq」サンプルを配列決定し、かつマッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用するときに720bで生じるマッピングされないリードの割合が、NovaSeqシーケンサが、マッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用せずに「DNA_Nexus_NovaSeq」サンプルを配列決定するときに720aで生じる、マッピングされないリードの割合よりも著しく小さいことを示す。
【0193】
第3の実施例では、試験結果730は、HiSeq(登録商標)Xシーケンサが「DNA_Nexus_hiseqX」サンプルを配列決定し、かつマッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用するときに730bで生じるマッピングされないリードの割合が、HiSeq(登録商標)Xシーケンサが、マッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用せずに「DNA_Nexus_hiseqX」サンプルを配列決定するときに730aで生じる、マッピングされないリードの割合よりも著しく小さいことを示す。
【0194】
第4の実施例では、試験結果740は、NovaSeq(登録商標)シーケンサが「NovaSeq_NA12878_rep1」サンプルを配列決定し、かつマッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用するときに740bで生じるマッピングされないリードの割合が、NovaSeq(登録商標)シーケンサが、マッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用せずに「NovaSeq_NA12878_rep1」サンプルを配列決定するときに740aで生じる、マッピングされないリードの割合よりも著しく小さいことを示す。
【0195】
第5の実施例では、試験結果750は、NovaSeq(登録商標)シーケンサが「NovaSeq_TruSeq-nano-550」サンプルを配列決定し、かつマッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用するときに750bで生じるマッピングされないリードの割合が、NovaSeq(登録商標)シーケンサが、マッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用せずに「NovaSeq_TruSeq-nano-550」サンプルを配列決定するときに750aで生じる、マッピングされないリードの割合よりも著しく小さいことを示す。
【0196】
第6の実施例では、試験結果760は、NovaSeq(登録商標)シーケンサが「AWS_HG005_40X」サンプルを配列決定し、かつマッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用するときに760bで生じるマッピングされないリードの割合が、NovaSeq(登録商標)シーケンサが、マッピング中に本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を利用せずに「AWS_HG005_40X」サンプルを配列決定するときに760aで生じる、マッピングされないリードの割合よりも著しく小さいことを示す。
【0197】
したがって、本明細書に記載されるハッシュテーブルを使用する柔軟性のあるシード伸長の実装形態は、本明細書に記載されるハッシュテーブルを生成又は使用しない従来の方法と比較したときに、マッピングされないリードを低減する点で、著しい性能改善を達成する。
実施例2:柔軟性のあるシード伸長を使用するシステムと柔軟性のあるシード伸長を使用しないシステムとの間でのリードマッピング精度の比較
【0198】
この実施例2では、DRAGEN(商標)プラットフォームを使用して、核酸シーケンサによって生成されたリードを参照配列にマッピングした。各DRAGEN(商標)プラットフォームは、同じリードセットを同じ参照シーケンサにマッピングした。マッピングが完了すると、コンピュータシステムは、マッピング誤り率の関数として各マッピング動作のリードマッピング精度を判定した。
【0199】
DRAGEN(商標)プラットフォームは、フィールドプログラマブルゲートアレイ(FPGA)のハードウェア回路機構で実装されたマッピング及びアライニングユニットである。DRAGEN(商標)v7プラットフォームは、本明細書に記載されるような柔軟性のあるシード伸長を現在利用しないのに対して、DRAGEN(商標)v8プラットフォーム及びDRAGEN(商標)v8 hi-effortプラットフォームは、柔軟性のあるシード伸長を利用する。
【0200】
本明細書で使用されるDRAGEN(商標)プラットフォームは、FPGAで実装されていたが、一般に、DRAGEN(商標)プラットフォームは、特定用途向け集積回路(ASIC)などの他の集積回路ででも実装できる。
【0201】
DRAGEN(商標)v8プラットフォームとDRAGEN(商標)v8 hi-effortプラットフォームとの間の違いは、ヒューリスティック及び他のパラメータの設定である。DRAGEN(商標)v8プラットフォームは、以下のヒューリスティック、すなわち、intvl-target-hits=32、intvl-max-hits=16、及びintvl-sample-hits=16を使用する。これらのヒューリスティックの各々は、本明細書に記載されている。加えて、DRAGEN(商標)v8プラットフォームは、max-hifreq-hits=16、rescue-hifreq=0、s及びsw-extra-intvl=1の他のパラメータを使用する。max-hifreq-hitsパラメータは、失敗したシード伸長の前に到達した一致間隔から取られたランダムなサンプル一致の最大数を示す(例えば、限度に達するまで、失敗した伸長当たり1つのサンプル)。rescue-hifreqパラメータは、一致間隔からのランダムなサンプルのみによって見出される一致のために高価なレスキュースキャン動作が利用されるかどうかを判定する。レスキュースキャンは、リードアラインメント候補付近の起こり得る嵌合リードアラインメントを探索するための方法である。sw-extra-intvlパラメータは、最良(「エクストラ」)間隔にアクセスすることによって見出されるか、又は一致間隔をランダムにサンプリングすることによって、一致のための高価なSmith-Watermanアラインメントを利用するためのポリシーを判定する。Smith-Watermanは一般に、ギャップなしアラインメントがクリップされていない場合には使用されないが、ギャップレス整列がクリップされている場合は、この設定を含むヒューリスティックに応じて利用され得る。「1」の設定は、Smith-Watermanが、全体がアクセスされるがランダムサンプリングによってはアクセスされない、エクストラ/最良一致間隔からの候補に使用され得ることを意味する。「2」の設定は、Smith-Watermanが、一致間隔のランダムなサンプリングからの候補にも使用され得ることを意味する。「0」の設定であれば、Smith-Watermanが、エクストラ/最良間隔の処理からの、又は一致間隔のランダムサンプリングからの候補のために適用されないことを意味する。
【0202】
一方、DRAGEN(商標)v8 hi-effortプラットフォームは、以下のヒューリスティック、すなわち、intvl-target-hits=32、intvl-max-hits=64、及びintvl-sample-hits=48を使用する。加えて、DRAGEN(商標)v8 hi-effortプラットフォームは、max-hifreq-hits=32、rescue-hifreq=0、及びsw-extra-intvl=2の他のパラメータを使用する。したがって、DRAGEN(商標)v8 hi-effortプラットフォームは、DRAGEN(商標)v8プラットフォームよりも充実したヒューリスティックセットを有する。
【0203】
図8は、柔軟性のあるシード伸長法を使用しないシステムと比較した、本明細書に開示されるような柔軟性のあるシード伸長法を使用するシステムにおけるリードマッピング精度の形態をなす試験結果を表すデータを表示する線グラフ800の説明図である。特に、グラフ800は、受信機動作特性(「ROC(receiver operating characteristic)」)曲線(又は線)の形態をなす精度曲線を使用して、確度メトリックを使用してデータを階層化したときの誤検出と検出漏れとの間のトレードオフを示す。
図8の説明図では、グラフ800の上壁及び左壁に近い曲線(又は線)は、より良好なリードマッピング精度を意味する。
【0204】
マッピング中に本明細書の1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を使用しないDRAGEN(商標)v7プラットフォームのリードマッピング精度を表す曲線810が描示されている。マッピング中に本明細書の1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を使用するDRAGEN(商標)v8プラットフォームのリードマッピング精度を表す曲線820が描示されている。曲線810と曲線820との比較により、曲線820が曲線810よりも上壁及び左壁に近いことを明らかである。したがって、リードマッピング精度の改善は、本明細書における1つ以上の実装形態に記載されるような柔軟性のあるシード伸長を、単に、いくつかの容量で実装することによって達成されている。
【0205】
図8は、「hi-effort」のDRAGEN(商標)実装形態v8を表す曲線830をさらに描示している。DRAGEN(商標)v8実装形態と同じく、DRAGEN(商標)v8 hi-effort実装形態もまた、マッピング中に、本明細書に記載されるような柔軟性のあるシード伸長法を利用する。ただし、上述したように、DRAGEN(商標)v8「hi-effort」実装形態によって利用されるヒューリスティックスは、性能が820曲線によって表されるDRAGEN(商標)v8実装形態を利用するために使用されるヒューリスティックよりも充実している。DRAGEN(商標)の「hi-effort」v8バージョンには、DRAGEN(商標)v8実装形態(例えば、sw-extra-intvl=1)に対して下流でより多くのSmith-Watermanアラインメントワークを実行する意欲を増大させるパラメータ(例えば、sw-extra-intvl=2)が割り当てられる。
図8に示されるように、曲線830は、曲線810及び820の両方よりも上壁及び左壁に近いことにより、DRAGEN(商標)v8 h-effort実装形態によるリードマッピング精度で著しい性能利得を呈している。
【0206】
図8は、また、BWA-MEMソフトウェアマッピングツールによって達成されるリードマッピング精度を表す曲線840を描示している。BWA-MEMソフトウェアマッピングツールは、BWA-MEMソフトウェアマッピングツールのインデックスとして参照ゲノムのBurrows-Wheeler変換(Burrows-Wheeler Transform、BWT)を使用する。参照ゲノムを表すこの方法は、任意の長さの一致に対応する一致の完全なセットを取り出す能力などの、柔軟性のあるシード伸長によって提供されるものと同様の利益を本来的に提供することができる。曲線830及び840によって描示されるように、DRAGEN(商標)v8「hi-effort」実装形態は、ソフトウェアベースのBWAソフトウェアマッピングツールと同じリードマッピング精度を達成することができる。したがって、DRAGEN(商標)v8「hi-effort」は、DRAGEN(商標)v8「hi-effort」が、例えばシードをマップするためのより少ないメモリアクセスを含むDRAGEN(商標)プラットフォームの他の利益も利用するため、ソフトウェアベースのBWAマッピングツールと同等のリードマッピング精度レベルを達成することが可能であることが重要である。ただし、本明細書に記載されるハードウェアベースの柔軟性のあるシード伸長の実装形態の前に、DRAGEN(商標)プラットフォームは、BWAソフトウェアマッピングツールによって達成されるものと同じレベルのリードマッピング精度を達成することができた。
【0207】
したがって、本明細書に記載されるハッシュテーブルを使用する柔軟性のあるシード伸長の実装形態は、本明細書に記載されるハッシュテーブルを生成又は使用しない従来の方法と比較したときに、リードマッピング精度の点で、著しい性能改善を達成する。
他の実施形態
【0208】
いくつかの実施形態が記載された。それにもかかわらず、本発明の趣旨及び範囲から逸脱することなく、様々な変更を行うことができることが理解されるであろう。加えて、図に描示される論理フローは、所望の結果を達成するために、示される特定の順序、又は順次的な順序を必要としない。加えて、記載されたフローから他の工程を提供することができ、又は工程を排除することができ、記載されたシステムに他の構成要素を追加するか、又はそこから除去することができる。したがって、他の実施形態は、以下の特許請求の範囲内にある。
【符号の説明】
【0209】
100 システム
110 コンピュータ
112 メモリ
114 参照配列
120 シード伸長ツリー
121 ノード
122 ノード
123 ノード
124 ノード
125 ノード
126 ノード
130 メモリ
132 シード伸長テーブル
140 ハッシュテーブル
142 インデックスキー
143 ハッシュ関数
144 ハッシュ位置
146 ハッシュテーブルインストールパッケージ
150 レコード
152 レコード
153 レコード
155 参照配列位置
160 デバイス
162 回路
170 マッピング及びアライニングユニット
180 メモリ
300 ランタイムシステム
305 リード
310 ハッシュクエリ
340 最良間隔ストレージ
350 最良間隔ストレージ
600 コンピューティングデバイス
602 プロセッサ
604 メモリ
610 高速拡張ポート
612 低速コントローラ
614 低速拡張ポート
616 ディスプレイ
620 標準サーバ
622 ラップトップコンピュータ
624 ラックサーバシステム
650 デバイス
652 プロセッサ
654 ディスプレイ
656 ディスプレイインターフェース
658 制御インターフェース
660 オーディオコーデック
662 外部インターフェース
664 メモリ
666 通信インターフェース
668 送受信機
670 受信機モジュール
672 拡張インターフェース
674 拡張メモリ
680 携帯電話
682 スマートフォン