IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ イルミナ インコーポレイテッドの特許一覧

特表2023-520832ハードウェア加速K-merグラフ生成
<>
  • 特表-ハードウェア加速K-merグラフ生成 図1
  • 特表-ハードウェア加速K-merグラフ生成 図2
  • 特表-ハードウェア加速K-merグラフ生成 図3
  • 特表-ハードウェア加速K-merグラフ生成 図4
  • 特表-ハードウェア加速K-merグラフ生成 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-05-22
(54)【発明の名称】ハードウェア加速K-merグラフ生成
(51)【国際特許分類】
   G16B 30/00 20190101AFI20230515BHJP
【FI】
G16B30/00
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021577062
(86)(22)【出願日】2021-04-07
(85)【翻訳文提出日】2021-12-24
(86)【国際出願番号】 US2021026242
(87)【国際公開番号】W WO2021207403
(87)【国際公開日】2021-10-14
(31)【優先権主張番号】63/006,668
(32)【優先日】2020-04-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】500358711
【氏名又は名称】イルミナ インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】マイケル・ルエール
(57)【要約】
プログラマブルロジックデバイスを使用するK-merグラフのハードウェア加速生成のための方法、システム、及び装置。一態様では、方法は、第1の核酸配列セットを取得する動作と、取得された第1の核酸配列セットを使用し、プログラマブルロジックデバイスの複数の非パイプラインハードウェアロジックユニットを使用してK-merグラフを生成する動作と、制御マシンを用いて、各ハードウェアロジックユニットによる1つ以上の演算の実行後にK-merグラフのグラフ記述データを定期的に更新する動作とを含む。
【特許請求の範囲】
【請求項1】
プログラマブルロジックデバイスを使用するK-merグラフのハードウェア加速生成のための方法であって、
第1の核酸配列セットを取得することであって、前記第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)前記参照配列の一部を含む、前記第1の核酸配列セットを取得することと、
プログラマブルロジックデバイスの複数の非パイプラインハードウェアロジックユニットを使用し、前記取得された第1の核酸配列セットを使用してK-merグラフを生成することであって、各ハードウェアロジックユニットが1つ以上の演算を実行するように構成された異なるハードウェアロジック回路を備え、前記K-merグラフの各ノードがK-merを表し、前記K-merグラフの各エッジがK-merのペアの間のリンクを表し、前記K-merグラフの各エッジの各重みがK-merのペアによって表されるK-mer配列の出現回数を表す、前記K-merグラフを生成することと、
前記K-merグラフの生成中に、
制御マシンを用いて、前記K-merグラフの少なくとも一部を生成するために使用される各ハードウェアロジックユニットによる前記1つ以上の演算の実行後に前記K-merグラフのグラフ記述データを定期的に更新することであって、前記グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表し、前記制御マシンが、前記K-merグラフの生成中に各それぞれのハードウェアロジックユニットの前記1つ以上の演算の実行をトリガすることによって、前記非パイプラインハードウェアロジックユニットを使用して演算のワークフローを作成する、前記グラフ記述データを定期的に更新することと、を含む、方法。
【請求項2】
前記複数のハードウェアロジックユニットの各ハードウェアロジックユニットの出力が、ハッシュテーブルキャッシュを介して記憶される、請求項1に記載の方法。
【請求項3】
前記制御マシンが、前記プログラマブルロジックデバイスのハードウェアロジックユニットを使用して実装される、請求項1に記載の方法。
【請求項4】
前記制御マシンが、1つ以上のCPU又はGPUを使用することによって実装されて前記制御マシンの機能を実現するためにソフトウェア命令を実行する、請求項1に記載の方法。
【請求項5】
前記演算が、
前記生成されたK-merグラフをバリアントコールユニットに提供することを更に含み、前記バリアントコールユニットが、前記K-merグラフを処理して前記複数のリードのうちの1つ以上と前記参照配列との間の候補バリアントを決定する、請求項1に記載の方法。
【請求項6】
ソフトウェア命令が、前記バリアントコールユニットの1つ以上の機能を実現するために1つ以上のCPU又はGPUによって実行される、請求項5に記載の方法。
【請求項7】
前記プログラマブルロジックデバイスが、前記バリアントコールユニットの1つ以上の機能を加速するために使用される、請求項5に記載の方法。
【請求項8】
前記グラフ記述データが、(iii)前記K-merグラフに対してハードウェアロジックを実行した前記複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又は前記K-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含む、請求項1に記載の方法。
【請求項9】
プログラマブルロジックデバイスを使用するK-merグラフのハードウェア加速生成のためのシステムであって、
演算を実行するように構成されたハードウェアデジタルロジック回路を含むハードウェア加速グラフ生成ユニットを備え、前記演算が、
第1の核酸配列セットを取得することであって、前記第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)前記参照配列の一部を含む、前記第1の核酸配列セットを取得することと、
プログラマブルロジックデバイスの複数の非パイプラインハードウェアロジックユニットを使用し、前記取得された第1の核酸配列セットを使用してK-merグラフを生成することであって、各ハードウェアロジックユニットが1つ以上の演算を実行するように構成された異なるハードウェアロジック回路を備え、前記K-merグラフの各ノードがK-merを表し、前記K-merグラフの各エッジがK-merのペアの間のリンクを表し、前記K-merグラフの各エッジの各重みがK-merのペアによって表されるK-mer配列の出現回数を表す、前記K-merグラフを生成することと、
前記K-merグラフの生成中に、
制御マシンを用いて、前記K-merグラフの少なくとも一部を生成するために使用される各ハードウェアロジックユニットによる前記1つ以上の演算の実行後に前記K-merグラフのグラフ記述データを定期的に更新することであって、前記グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表し、前記制御マシンが、前記K-merグラフの生成中に各それぞれのハードウェアロジックユニットの前記1つ以上の演算の実行をトリガすることによって、前記非パイプラインハードウェアロジックユニットを使用して演算のワークフローを作成する、前記グラフ記述データを定期的に更新することと、を含む、システム。
【請求項10】
前記複数のハードウェアロジックユニットの各ハードウェアロジックユニットの出力が、ハッシュテーブルキャッシュを介して記憶される、請求項9に記載のシステム。
【請求項11】
前記演算が、
前記生成されたK-merグラフをバリアントコールユニットに提供することを更に含み、前記バリアントコールユニットが、前記K-merグラフを処理して前記複数のリードのうちの1つ以上と前記参照配列との間の候補バリアントを決定するように構成されている、請求項9に記載のシステム。
【請求項12】
前記システムが、
1つ以上のコンピュータと、
前記1つ以上のコンピュータによって実行されると、前記1つ以上のコンピュータにバリアントコールユニットの第2の演算を実行させる命令を記憶する1つ以上のメモリデバイスとを更に備え、前記第2の演算が、
前記バリアントコールユニットによって、前記生成されたK-merグラフを取得することと、
前記生成されたK-merグラフを処理する前記バリアントコールユニットに基づいて、1つ以上の候補バリアントを識別することを含み、ここで、候補バリアントが、リードのパイルアップにおける1つ以上のリードの塩基呼び出しと、参照ゲノムの特定の位置における前記参照ゲノムのヌクレオチドとの間の差分である、請求項9に記載のシステム。
【請求項13】
前記演算が、
バリアントコールユニットによって、前記生成されたK-merグラフを取得することと、
前記生成されたK-merグラフを処理する前記バリアントコールユニットに基づいて、1つ以上の候補バリアントを識別することを更に含み、ここで、候補バリアントが、リードのパイルアップにおける1つ以上のリードの塩基呼び出しと、参照ゲノムの特定の位置における前記参照ゲノムのヌクレオチドとの間の差分である、請求項9に記載のシステム。
【請求項14】
前記グラフ記述データが、(iii)前記K-merグラフに対してハードウェアロジックを実行した前記複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又は前記K-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含む、請求項9に記載のシステム。
【請求項15】
プログラマブルロジックデバイスにおけるK-merグラフのハードウェア加速生成のための方法であって、
第1の核酸配列セットを取得することであって、前記第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)前記参照配列の一部を含む、前記第1の核酸配列セットを取得することと、
前記第1の核酸配列セットの各特定の核酸配列について、
ハッシュテーブルキャッシュに記憶するために、かつ第1のハードウェアロジックユニットによって、前記特定の核酸配列の各K-merについてのグラフノードを表すデータを生成することと、
制御マシンによって、前記第1のハードウェアロジックユニットが前記特定の核酸配列の各K-merについてのグラフノードの生成を完了したことを検出することと、
前記制御マシンによって、前記生成されたグラフノードのグラフエッジの生成を実行するように第2のハードウェアロジックユニットを構成することと、
前記生成されたグラフノードの1つ以上のペアについて、
前記第2のハードウェアロジックユニットによって、かつグラフハッシュテーブルに記憶するために、前記第1のハードウェアロジックユニットによって生成された、前記生成されたグラフノードの1つ以上のペアの相互間のグラフエッジを表すデータを生成することであって、前記ハッシュテーブルキャッシュに記憶された各K-merについての前記グラフノードを表す前記データ及び前記ハッシュテーブルキャッシュに記憶されたグラフエッジを表す前記データが、前記第1の核酸配列セットのK-merグラフを表す、前記グラフエッジを表すデータを生成することと、を含む、方法。
【請求項16】
前記方法が、
前記制御マシンによって、かつ前記制御マシンがアクセス可能なメモリユニットに、前記K-merグラフのインスタンスのグラフ記述データを定期的に記憶することであって、前記グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表す、前記グラフ記述データを定期的に記憶することを更に含む、請求項15に記載の方法。
【請求項17】
前記第1のハードウェアロジックユニットが、
前記特定の核酸配列の特定のK-merのうちの1つ以上が前記特定の核酸配列の別のK-merと一致するかどうかを判定し、
前記特定の核酸配列の前記1つ以上の特定のK-merが前記特定の核酸配列の別のK-merと一致するという判定に基づいて、前記1つ以上の特定のK-merを非一意的なK-merとしてマークするデータを記憶するように更に構成されている、請求項15に記載の方法。
【請求項18】
前記第2のハードウェアロジックが、
前記K-merグラフの各エッジにエッジ重みを割り当てるように更に構成されている、請求項15に記載の方法。
【請求項19】
前記方法が、
前記プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、
前記ハッシュテーブルキャッシュから前記K-merグラフを表すデータを取得し、
前記K-merグラフを表す前記取得されたデータをバリアントコールユニットに提供するように構成されたハードウェアロジックを実行するように命令することを更に含む、請求項15に記載の方法。
【請求項20】
前記方法が、
前記プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、
前記ハッシュテーブルキャッシュから前記K-merグラフのグラフノードを表すデータ及びグラフエッジを表すデータを選択的に削除するように構成されたハードウェアロジックを実行するように命令することを更に含む、請求項15に記載の方法。
【請求項21】
前記制御マシンが、前記プログラマブルロジックデバイスの第3のハードウェアロジックユニットを使用して実装される、請求項15に記載の方法。
【請求項22】
前記ハッシュテーブルキャッシュが、前記プログラマブルロジックデバイスの第3のハードウェアロジックユニットを使用して実装される、請求項15に記載の方法。
【請求項23】
前記制御マシンが、前記制御マシンの機能を実現するためにソフトウェア命令を実行する1つ以上のCPU又はGPUを使用して実装される、請求項15に記載の方法。
【請求項24】
グラフ記述データが、(iii)前記K-merグラフに対してハードウェアロジックを実行した前記複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又はK-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含む、請求項15に記載の方法。
【請求項25】
前記方法が、
グラフサイクルの存在をチェックするために前記K-merグラフを評価することと、
前記評価中にグラフサイクルが検出された場合に、
k-merグラフの生成を終了するか、又は
前記評価中にグラフサイクルが検出されない場合に、
前記k-merグラフの構造を記述するデータを前記ハッシュテーブルキャッシュから取得することと、
前記k-merグラフの前記構造を記述する前記取得されたデータをバリアントコールモジュールに提供することと、を更に含む、請求項15に記載の方法。
【請求項26】
プログラマブルロジックデバイスを使用するK-merグラフのハードウェア加速生成のためのシステムであって、
演算を実行するように構成されたハードウェアデジタルロジック回路を含むハードウェア加速グラフ生成ユニットを備え、前記演算が、
第1の核酸配列セットを取得することであって、前記第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)前記参照配列の一部を含む、前記第1の核酸配列セットを取得することと、
前記第1の核酸配列セットの各特定の核酸配列について、
ハッシュテーブルキャッシュに記憶するために、かつ第1のハードウェアロジックユニットによって、前記特定の核酸配列の各K-merについてのグラフノードを表すデータを生成することと、
制御マシンによって、前記第1のハードウェアロジックユニットが前記特定の核酸配列の各K-merについてのグラフノードの生成を完了したことを検出することと、
前記制御マシンによって、前記生成されたグラフノードのグラフエッジの生成を実行するように第2のハードウェアロジックユニットを構成することと、
前記生成されたグラフノードの1つ以上のペアについて、
前記第2のハードウェアロジックユニットによって、かつグラフハッシュテーブルに記憶するために、前記第1のハードウェアロジックユニットによって生成された、前記生成されたグラフノードの1つ以上のペアの相互間のグラフエッジを表すデータを生成することであって、前記ハッシュテーブルキャッシュに記憶された各K-merについての前記グラフノードを表す前記データ及び前記ハッシュテーブルキャッシュに記憶されたグラフエッジを表す前記データが、前記第1の核酸配列セットのK-merグラフを表す、前記グラフエッジを表すデータを生成することと、を含む、システム。
【請求項27】
前記演算が、
前記制御マシンによって、かつ前記制御マシンがアクセス可能なメモリユニットに、前記K-merグラフのインスタンスのグラフ記述データを定期的に記憶することであって、前記グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表す、前記グラフ記述データを定期的に記憶することを更に含む、請求項26に記載のシステム。
【請求項28】
前記第1のハードウェアロジックユニットが、
前記特定の核酸配列の特定のK-merのうちの1つ以上が前記特定の核酸配列の別のK-merと一致するかどうかを判定し、
前記特定の核酸配列の前記1つ以上の特定のK-merが前記特定の核酸配列の別のK-merと一致するという判定に基づいて、前記1つ以上の特定のK-merを非一意的なK-merとしてマークするデータを記憶するように更に構成されている、請求項26に記載のシステム。
【請求項29】
前記第2のハードウェアロジックが、
前記K-merグラフの各エッジにエッジ重みを割り当てるように更に構成されている、請求項26に記載のシステム。
【請求項30】
前記演算が、
前記プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、
前記ハッシュテーブルキャッシュから前記K-merグラフを表すデータを取得し、
前記K-merグラフを表す前記取得されたデータをバリアントコールユニットに提供するように構成されたハードウェアロジックを実行するように命令することを更に含む、請求項26に記載のシステム。
【請求項31】
前記演算が、
前記プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、
前記ハッシュテーブルキャッシュから前記K-merグラフのグラフノードを表すデータ及びグラフエッジを表すデータを選択的に削除するように構成されたハードウェアロジックを実行するように命令することを更に含む、請求項26に記載のシステム。
【請求項32】
前記ハッシュテーブルキャッシュが、前記プログラマブルロジックデバイスの第3のハードウェアロジックユニットを使用して実装される、請求項26に記載のシステム。
【請求項33】
グラフ記述データが、(iii)前記K-merグラフに対してハードウェアロジックを実行した前記複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又はK-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含む、請求項26に記載のシステム。
【請求項34】
前記演算が、
グラフサイクルの存在をチェックするために前記K-merグラフを評価することと、
前記評価中にグラフサイクルが検出された場合に、
k-merグラフの生成を終了するか、又は
前記評価中にグラフサイクルが検出されない場合に、
前記k-merグラフの構造を記述するデータを前記ハッシュテーブルキャッシュから取得することと、
前記k-merグラフの前記構造を記述する前記取得されたデータをバリアントコールモジュールに提供することと、を更に含む、請求項26に記載のシステム。
【請求項35】
演算を実行するように構成されたハードウェアデジタルロジック回路を含むハードウェア加速グラフ生成ユニットであって、前記演算が、
第1の核酸配列セットを取得することであって、前記第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)前記参照配列の一部を含む、前記第1の核酸配列セットを取得することと、
プログラマブルロジックデバイスの複数の非パイプラインハードウェアロジックユニットを使用し、前記取得された第1の核酸配列セットを使用してK-merグラフを生成することであって、各ハードウェアロジックユニットが1つ以上の演算を実行するように構成された異なるハードウェアロジック回路を備え、前記K-merグラフの各ノードがK-merを表し、前記K-merグラフの各エッジがK-merのペアの間のリンクを表し、前記K-merグラフの各エッジの各重みがK-merのペアによって表されるK-mer配列の出現回数を表す、前記K-merグラフを生成することと、
前記K-merグラフの生成中に、
制御マシンを用いて、前記K-merグラフの少なくとも一部を生成するために使用される各ハードウェアロジックユニットによる前記1つ以上の演算の実行後に前記K-merグラフのグラフ記述データを定期的に更新することであって、前記グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表し、前記制御マシンが、前記K-merグラフの生成中に各それぞれのハードウェアロジックユニットの前記1つ以上の演算の実行をトリガすることによって、前記非パイプラインハードウェアロジックユニットを使用して演算のワークフローを作成する、前記グラフ記述データを定期的に更新することと、を含む、ハードウェア加速グラフ生成ユニット。
【請求項36】
前記複数のハードウェアロジックユニットの各ハードウェアロジックユニットの出力が、ハッシュテーブルキャッシュを介して記憶される、請求項35に記載のハードウェア加速グラフ生成ユニット。
【請求項37】
前記演算が、
前記生成されたK-merグラフをバリアントコールユニットに提供することを更に含み、前記バリアントコールユニットが、前記K-merグラフを処理して前記複数のリードのうちの1つ以上と前記参照配列との間の候補バリアントを決定するように構成されている、請求項35に記載のハードウェア加速グラフ生成ユニット。
【請求項38】
前記演算が、
バリアントコールユニットによって、前記生成されたK-merグラフを取得することと、
前記生成されたK-merグラフを処理する前記バリアントコールユニットに基づいて、1つ以上の候補バリアントを識別することを更に含み、ここで、候補バリアントが、リードのパイルアップにおける1つ以上のリードの塩基呼び出しと、参照ゲノムの特定の位置における前記参照ゲノムのヌクレオチドとの間の差分である、請求項35に記載のハードウェア加速グラフ生成ユニット。
【請求項39】
前記グラフ記述データが、(iii)前記K-merグラフに対してハードウェアロジックを実行した前記複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又は前記K-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含む、請求項35に記載のハードウェア加速グラフ生成ユニット。
【請求項40】
演算を実行するように構成されたハードウェアデジタルロジック回路を含むハードウェア加速グラフ生成ユニットであって、前記演算が、
第1の核酸配列セットを取得することであって、前記第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード、及び(ii)前記参照配列の一部を含む、前記第1の核酸配列セットを取得す得ることと、
前記第1の核酸配列セットの各特定の核酸配列について、
ハッシュテーブルキャッシュに記憶するために、かつ第1のハードウェアロジックユニットによって、前記特定の核酸配列の各K-merについてのグラフノードを表すデータを生成することと、
制御マシンによって、前記第1のハードウェアロジックユニットが前記特定の核酸配列の各K-merについてのグラフノードの生成を完了したことを検出することと、
前記制御マシンによって、前記生成されたグラフノードのグラフエッジの生成を実行するように第2のハードウェアロジックユニットを構成することと、
前記生成されたグラフノードの1つ以上のペアについて、
前記第2のハードウェアロジックユニットによって、かつグラフハッシュテーブルに記憶するために、前記第1のハードウェアロジックユニットによって生成された、前記生成されたグラフノードの1つ以上のペアの相互間のグラフエッジを表すデータを生成することであって、前記ハッシュテーブルキャッシュに記憶された各K-merについての前記グラフノードを表す前記データ及び前記ハッシュテーブルキャッシュに記憶されたグラフエッジを表す前記データが、前記第1の核酸配列セットのK-merグラフを表す、前記グラフエッジを表すデータを生成することと、を含む、ハードウェア加速グラフ生成ユニット。
【請求項41】
前記演算が、
前記制御マシンによって、かつ前記制御マシンがアクセス可能なメモリユニットに、前記K-merグラフのインスタンスのグラフ記述データを定期的に記憶することであって、前記グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表す、前記グラフ記述データを定期的に記憶することを更に含む、請求項40に記載のハードウェア加速グラフ生成ユニット。
【請求項42】
前記第1のハードウェアロジックユニットが、
前記特定の核酸配列の特定のK-merのうちの1つ以上が前記特定の核酸配列の別のK-merと一致するかどうかを判定し、
前記特定の核酸配列の前記1つ以上の特定のK-merが前記特定の核酸配列の別のK-merと一致するという判定に基づいて、前記1つ以上の特定のK-merを非一意的なK-merとしてマークするデータを記憶するように更に構成されている、請求項40に記載のハードウェア加速グラフ生成ユニット。
【請求項43】
前記第2のハードウェアロジックが、
前記K-merグラフの各エッジにエッジ重みを割り当てるように更に構成されている、請求項40に記載のハードウェア加速グラフ生成ユニット。
【請求項44】
前記演算が、
プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、
前記ハッシュテーブルキャッシュから前記K-merグラフを表すデータを取得し、
前記K-merグラフを表す前記取得されたデータをバリアントコールユニットに提供するように構成されたハードウェアロジックを実行するように命令することを更に含む、請求項40に記載のハードウェア加速グラフ生成ユニット。
【請求項45】
前記演算が、
プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、
前記ハッシュテーブルキャッシュから前記K-merグラフのグラフノードを表すデータ及びグラフエッジを表すデータを選択的に削除するように構成されたハードウェアロジックを実行するように命令することを更に含む、請求項40に記載のハードウェア加速グラフ生成ユニット。
【請求項46】
前記ハッシュテーブルキャッシュが、プログラマブルロジックデバイスの第3のハードウェアロジックユニットを使用して実装される、請求項40に記載のハードウェア加速グラフ生成ユニット。
【請求項47】
グラフ記述データが、(iii)前記K-merグラフに対してハードウェアロジックを実行した前記複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又はK-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含む、請求項40に記載のハードウェア加速グラフ生成ユニット。
【請求項48】
前記演算が、
グラフサイクルの存在をチェックするために前記K-merグラフを評価することと、
前記評価中にグラフサイクルが検出された場合に、
k-merグラフの生成を終了するか、又は
前記評価中にグラフサイクルが検出されない場合に、
前記k-merグラフの構造を記述するデータを前記ハッシュテーブルキャッシュから取得することと、
前記k-merグラフの前記構造を記述する前記取得されたデータをバリアントコールモジュールに提供することと、を更に含む、請求項40に記載のハードウェア加速グラフ生成ユニット。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2020年4月7日に出願された米国仮特許出願第63/006,668号の利益を主張し、その全内容は参照によりその全体が本明細書に組み込まれる。
【背景技術】
【0002】
K-merグラフは、複数の配列決定リードを表すために使用され得る。
【発明の概要】
【課題を解決するための手段】
【0003】
本開示の1つの革新的な態様によれば、プログラマブルロジックデバイスを使用するK-merグラフのハードウェア加速生成のための方法が開示される。一態様では、本方法は、第1の核酸配列セットを取得する動作であって、第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)参照配列の一部を含む、第1の核酸配列セットを取得する動作と、プログラマブルロジックデバイスの複数の非パイプラインハードウェアロジックユニットを使用し、取得された第1の核酸配列セットを使用してK-merグラフを生成する動作であって、各ハードウェアロジックユニットが1つ以上の演算を実行するように構成された異なるハードウェアロジック回路を備え、K-merグラフの各ノードがK-merを表し、K-merグラフの各エッジがK-merのペアの間のリンクを表し、K-merグラフの各エッジの各重みがK-merのペアによって表されるK-mer配列の出現回数を表す、K-merグラフを生成する動作と、K-merグラフの生成中に、制御マシンを用いて、K-merグラフの少なくとも一部を生成するために使用される各ハードウェアロジックユニットによる1つ以上の演算の実行後にK-merグラフのグラフ記述データを定期的に更新する動作であって、グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表し、制御マシンが、K-merグラフの生成中に各それぞれのハードウェアロジックユニットの1つ以上の演算の実行をトリガすることによって、非パイプラインハードウェアロジックユニットを使用して演算のワークフローを作成する、グラフ記述データを定期的に更新する動作と、を含み得る。
【0004】
他のバージョンは、ハードウェア加速グラフ生成ユニットのハードウェアロジック回路によって定義された前述の方法の動作を実行するように構成された対応するシステム及び装置を含む。
【0005】
これらの及び他のバージョンは、任意選択で、以下の特徴のうちの1つ以上を含んでもよい。例えば、いくつかの実装形態では、複数のハードウェアロジックユニットの各ハードウェアロジックユニットの出力は、ハッシュテーブルキャッシュを介して記憶される。
【0006】
いくつかの実装形態では、制御マシンは、プログラマブルロジックデバイスのハードウェアロジックユニットを使用して実装される。
【0007】
いくつかの実装形態では、制御マシンは、1つ以上のCPU又はGPUを使用することによって実装されて制御マシンの機能を実現するためにソフトウェア命令を実行する。
【0008】
いくつかの実装形態では、演算は、生成されたK-merグラフをバリアントコールユニットに提供することを更に含み得、バリアントコールユニットは、K-merグラフを処理して複数のリードのうちの1つ以上と参照配列との間の候補バリアントを決定する。
【0009】
いくつかの実装形態では、ソフトウェア命令は、1つ以上のCPU又はGPUによって実行されて、バリアントコールユニットの1つ以上の機能を実現することができる。
【0010】
いくつかの実装形態では、プログラマブルロジックデバイスは、バリアントコールユニットの1つ以上の機能を加速するために使用される。
【0011】
いくつかの実装形態では、グラフ記述データは、(iii)K-merグラフに対してハードウェアロジックを実行した複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又はK-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含む。
【0012】
本開示の別の革新的な態様によれば、プログラマブルロジックデバイスを使用するK-merグラフのハードウェア加速生成のためのシステムが開示される。一態様では、本システムは、演算を実行するように構成されたハードウェアデジタルロジック回路を含むハードウェア加速グラフ生成ユニットを含み得る。いくつかの実装形態では、演算は、第1の核酸配列セットを取得することであって、第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)参照配列の一部を含む、第1の核酸配列セットを取得することと、プログラマブルロジックデバイスの複数の非パイプラインハードウェアロジックユニットを使用し、取得された第1の核酸配列セットを使用してK-merグラフを生成することであって、各ハードウェアロジックユニットが1つ以上の演算を実行するように構成された異なるハードウェアロジック回路を備え、K-merグラフの各ノードがK-merを表し、K-merグラフの各エッジがK-merのペアの間のリンクを表し、K-merグラフの各エッジの各重みがK-merのペアによって表されるK-mer配列の出現回数を表す、K-merグラフを生成することと、K-merグラフの生成中に、制御マシンを用いて、K-merグラフの少なくとも一部を生成するために使用される各ハードウェアロジックユニットによる1つ以上の演算の実行後にK-merグラフのグラフ記述データを定期的に更新することであって、グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表し、制御マシンが、K-merグラフの生成中に各それぞれのハードウェアロジックユニットの1つ以上の演算の実行をトリガすることによって、非パイプラインハードウェアロジックユニットを使用して演算のワークフローを作成する、グラフ記述データを定期的に更新することと、を含み得る。
【0013】
他のバージョンは、前述の演算を実行するための対応する方法及び装置を含む。
【0014】
これらの及び他のバージョンは、任意選択で、以下の特徴のうちの1つ以上を含んでもよい。例えば、いくつかの実装形態では、複数のハードウェアロジックユニットの各ハードウェアロジックユニットの出力は、ハッシュテーブルキャッシュを介して記憶される。
【0015】
いくつかの実装形態では、演算は、生成されたK-merグラフをバリアントコールユニットに提供することを更に含み得、バリアントコールユニットは、K-merグラフを処理して複数のリードのうちの1つ以上と参照配列との間の候補バリアントを決定するように構成されている。
【0016】
いくつかの実装形態では、本システムは、1つ以上のコンピュータと、1つ以上のコンピュータによって実行されると、1つ以上のコンピュータにバリアントコールユニットの第2の演算を実行させる命令を記憶する1つ以上のメモリデバイスとを更に含み得る。いくつかの実装形態では、バリアントコールユニットの第2の演算は、バリアントコールユニットによって、生成されたK-merグラフを取得することと、生成されたK-merグラフを処理するバリアントコールユニットに基づいて、1つ以上の候補バリアントを識別することとを含み得、ここで、候補バリアントは、リードのパイルアップにおける1つ以上のリードの塩基呼び出しと、参照ゲノムの特定の位置における参照ゲノムのヌクレオチドとの間の差分である。
【0017】
いくつかの実装形態では、演算は、バリアントコールユニットによって、生成されたK-merグラフを取得することと、生成されたK-merグラフを処理するバリアントコールユニットに基づいて、1つ以上の候補バリアントを識別することとを更に含み得、ここで、候補バリアントは、リードのパイルアップにおける1つ以上のリードの塩基呼び出しと、参照ゲノムの特定の位置における参照ゲノムのヌクレオチドとの間の差分である。
【0018】
いくつかの実装形態では、グラフ記述データは、(iii)K-merグラフに対してハードウェアロジックを実行した複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又はK-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含み得る。
【0019】
本開示の別の革新的な態様によれば、ハードウェア加速グラフ生成ユニットが開示される。一態様では、ハードウェア加速グラフ生成ユニットは、演算を実行するように構成されたハードウェアデジタルロジック回路を含み得る。いくつかの実装形態では、演算は、第1の核酸配列セットを取得することであって、第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)参照配列の一部を含む、第1の核酸配列セットを取得することと、プログラマブルロジックデバイスの複数の非パイプラインハードウェアロジックユニットを使用し、取得された第1の核酸配列セットを使用してK-merグラフを生成することであって、各ハードウェアロジックユニットが1つ以上の演算を実行するように構成された異なるハードウェアロジック回路を備え、K-merグラフの各ノードがK-merを表し、K-merグラフの各エッジがK-merのペアの間のリンクを表し、K-merグラフの各エッジの各重みがK-merのペアによって表されるK-mer配列の出現回数を表す、K-merグラフを生成することと、K-merグラフの生成中に、制御マシンを用いて、K-merグラフの少なくとも一部を生成するために使用される各ハードウェアロジックユニットによる1つ以上の演算の実行後にK-merグラフのグラフ記述データを定期的に更新することであって、グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表し、制御マシンが、K-merグラフの生成中に各それぞれのハードウェアロジックユニットの1つ以上の演算の実行をトリガすることによって、非パイプラインハードウェアロジックユニットを使用して演算のワークフローを作成する、グラフ記述データを定期的に更新することと、を含み得る。
【0020】
他の実装形態は、ハードウェア加速グラフ生成ユニットのハードウェア回路の演算を実行するように構成された方法及びシステムを含み得る。
【0021】
これらの及び他のバージョンは、任意選択で、以下の特徴のうちの1つ以上を含んでもよい。例えば、いくつかの実装形態では、複数のハードウェアロジックユニットの各ハードウェアロジックユニットの出力は、ハッシュテーブルキャッシュを介して記憶される。
【0022】
いくつかの実装形態では、演算は、生成されたK-merグラフをバリアントコールユニットに提供することを更に含み得、バリアントコールユニットは、K-merグラフを処理して複数のリードのうちの1つ以上と参照配列との間の候補バリアントを決定するように構成される。
【0023】
いくつかの実装形態では、演算は、バリアントコールユニットによって、生成されたK-merグラフを取得することと、生成されたK-merグラフを処理するバリアントコールユニットに基づいて、1つ以上の候補バリアントを識別することとを更に含み得、ここで、候補バリアントは、リードのパイルアップにおける1つ以上のリードの塩基呼び出しと、参照ゲノムの特定の位置における参照ゲノムのヌクレオチドとの間の差分である。
【0024】
いくつかの実装形態では、グラフ記述データは、(iii)K-merグラフに対してハードウェアロジックを実行した複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又はK-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含み得る。
【0025】
本開示の別の革新的な態様によれば、プログラマブルロジックデバイスにおけるK-merグラフのハードウェア加速生成のための方法が開示される。一態様では、本方法は、第1の核酸配列セットを取得する動作であって、第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)参照配列の一部を含む、第1の核酸配列セットを取得する動作と、第1の核酸配列セットの各特定の核酸配列について、ハッシュテーブルキャッシュに記憶するために、かつ第1のハードウェアロジックユニットによって、特定の核酸配列の各K-merについてのグラフノードを表すデータを生成する動作と、制御マシンによって、第1のハードウェアロジックユニットが特定の核酸配列の各K-merについてのグラフノードの生成を完了したことを検出する動作と、制御マシンによって、生成されたグラフノードについてグラフエッジ生成を実行するように第2のハードウェアロジックユニットを構成する動作と、生成されたグラフノードの1つ以上のペアについて、第2のハードウェアロジックユニットによって、かつグラフハッシュテーブルに記憶するために、第1のハードウェアロジックユニットによって生成された、生成されたグラフノードの1つ以上のペアの相互間のグラフエッジを表すデータを生成する動作であって、ハッシュテーブルキャッシュに記憶された各K-merについてのグラフノードを表すデータ及びハッシュテーブルキャッシュに記憶されたグラフエッジを表すデータが、第1の核酸配列セットのK-merグラフを表す、グラフエッジを表すデータを生成する動作と、を含み得る。
【0026】
他のバージョンは、ハードウェア加速グラフ生成ユニットのハードウェアロジック回路によって定義された前述の方法の動作を実行するように構成された対応するシステム及び装置を含む。
【0027】
これらの及び他のバージョンは、任意選択で、以下の特徴のうちの1つ以上を含んでもよい。例えば、いくつかの実装形態では、方法は、制御マシンによって、かつ制御マシンがアクセス可能なメモリユニットに、K-merグラフのインスタンスのグラフ記述データを定期的に記憶することであって、グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表す、グラフ記述データを定期的に記憶することを更に含み得る。
【0028】
いくつかの実装形態では、第1のハードウェアロジックユニットは、特定の核酸配列の特定のK-merのうちの1つ以上が特定の核酸配列の別のK-merと一致するかどうかを判定し、特定の核酸配列の1つ以上の特定のK-merが特定の核酸配列の別のK-merと一致するという判定に基づいて、その1つ以上の特定のK-merを非一意的なK-merとしてマークするデータを記憶するように更に構成することができる。
【0029】
いくつかの実装形態では、第2のハードウェアロジックは、K-merグラフの各エッジにエッジ重みを割り当てるように更に構成されている。
【0030】
いくつかの実装形態では、本方法は、プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、ハッシュテーブルキャッシュからK-merグラフを表すデータを取得し、K-merグラフを表す取得されたデータをバリアントコールユニットに提供するように構成されたハードウェアロジックを実行するように命令することを更に含み得る。
【0031】
いくつかの実装形態では、本方法は、プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、ハッシュテーブルキャッシュからK-merグラフのグラフノードを表すデータ及びグラフエッジを表すデータを選択的に削除するように構成されたハードウェアロジックを実行するように命令することを更に含み得る。
【0032】
いくつかの実装形態では、制御マシンは、プログラマブルロジックデバイスの第3のハードウェアロジックユニットを使用して実装される。
【0033】
いくつかの実装形態では、ハッシュテーブルキャッシュは、プログラマブルロジックデバイスの第3のハードウェアロジックユニットを使用して実装される。
【0034】
いくつかの実装形態では、制御マシンは、制御マシンの機能を実現するためにソフトウェア命令を実行する1つ以上のCPU又はGPUを使用することによって実装される。
【0035】
いくつかの実装形態では、グラフ記述データは、(iii)K-merグラフに対してハードウェアロジックを実行した複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又はK-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含む。
【0036】
いくつかの実装形態では、本方法は、グラフサイクルの存在をチェックするためにK-merグラフを評価することを更に含み得る。そのような実装形態では、評価中にグラフサイクルが検出された場合には、プロセスは、K-merグラフの生成を終了することを含み得る。あるいは、評価中にグラフサイクルが検出されない場合には、本方法は、K-merグラフの構造を記述するデータをハッシュテーブルキャッシュから取得することと、K-merグラフの構造を記述する取得されたデータをバリアントコールモジュールに提供することとを含み得る。
【0037】
本開示の別の革新的な態様によれば、プログラマブルロジックデバイスを使用するK-merグラフのハードウェア加速生成のためのシステムが開示される。本システムは、演算を実行するように構成されたハードウェアデジタルロジック回路を含むハードウェア加速グラフ生成ユニットを含み得る。一態様では、演算は、第1の核酸配列セットを取得することであって、第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)参照配列の一部を含む、第1の核酸配列セットを取得することと、第1の核酸配列セットの各特定の核酸配列について、ハッシュテーブルキャッシュに記憶するために、かつ第1のハードウェアロジックユニットによって、特定の核酸配列の各K-merについてのグラフノードを表すデータを生成することと、制御マシンによって、第1のハードウェアロジックユニットが特定の核酸配列の各K-merについてのグラフノードの生成を完了したことを検出することと、制御マシンによって、生成されたグラフノードについてグラフエッジ生成を実行するように第2のハードウェアロジックユニットを構成することと、生成されたグラフノードの1つ以上のペアについて、第2のハードウェアロジックユニットによって、かつグラフハッシュテーブルに記憶するために、第1のハードウェアロジックユニットによって生成された、生成されたグラフノードの1つ以上のペアの相互間のグラフエッジを表すデータを生成することであって、ハッシュテーブルキャッシュに記憶された各K-merについてのグラフノードを表すデータ及びハッシュテーブルキャッシュに記憶されたグラフエッジを表すデータが、第1の核酸配列セットのK-merグラフを表す、グラフエッジを表すデータを生成することと、を含み得る。
【0038】
他のバージョンは、前述の演算を実行するための対応する方法及び装置を含む。
【0039】
これらの及び他のバージョンは、任意選択で、以下の特徴のうちの1つ以上を含んでもよい。例えば、いくつかの実装形態では、演算は、制御マシンによって、かつ制御マシンがアクセス可能なメモリユニットに、K-merグラフのインスタンスのグラフ記述データを定期的に記憶することであって、グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表す、グラフ記述データを定期的に記憶することを更に含み得る。
【0040】
いくつかの実装形態では、第1のハードウェアロジックユニットは、特定の核酸配列の特定のK-merのうちの1つ以上が特定の核酸配列の別のK-merと一致するかどうかを判定し、特定の核酸配列の1つ以上の特定のK-merが特定の核酸配列の別のK-merと一致するという判定に基づいて、その1つ以上の特定のK-merを非一意的なK-merとしてマークするデータを記憶するように更に構成される。
【0041】
いくつかの実装形態では、第2のハードウェアロジックは、K-merグラフの各エッジにエッジ重みを割り当てるように更に構成されている。
【0042】
いくつかの実装形態では、演算は、プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、ハッシュテーブルキャッシュからK-merグラフを表すデータを取得し、K-merグラフを表す取得されたデータをバリアントコールユニットに提供するように構成されたハードウェアロジックを実行するように命令することを更に含み得る。
【0043】
いくつかの実装形態では、演算は、プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、ハッシュテーブルキャッシュからK-merグラフのグラフノードを表すデータ及びグラフエッジを表すデータを選択的に削除するように構成されたハードウェアロジックを実行するように命令することを更に含み得る。
【0044】
いくつかの実装形態では、ハッシュテーブルキャッシュは、プログラマブルロジックデバイスの第3のハードウェアロジックユニットを使用して実装される。
【0045】
いくつかの実装形態では、グラフ記述データは、(iii)K-merグラフに対してハードウェアロジックを実行した複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又はK-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含む。
【0046】
いくつかの実装形態では、本方法は、グラフサイクルの存在をチェックするためにK-merグラフを評価することを更に含み得る。そのような実装形態では、評価中にグラフサイクルが検出された場合には、プロセスは、K-merグラフの生成を終了することを含み得る。あるいは、評価中にグラフサイクルが検出されない場合には、本方法は、K-merグラフの構造を記述するデータをハッシュテーブルキャッシュから取得することと、K-merグラフの構造を記述する取得されたデータをバリアントコールモジュールに提供することとを含み得る。
【0047】
本開示の別の革新的な態様によれば、ハードウェア加速グラフ生成ユニットが開示される。ハードウェア加速グラフ生成ユニットは、演算を実行するように構成されたハードウェアデジタルロジック回路を含み得る。一態様では、演算は、第1の核酸配列セットを取得することであって、第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)参照配列の一部を含む、第1の核酸配列セットを取得することと、第1の核酸配列セットの各特定の核酸配列について、ハッシュテーブルキャッシュに記憶するために、かつ第1のハードウェアロジックユニットによって、特定の核酸配列の各K-merについてのグラフノードを表すデータを生成することと、制御マシンによって、第1のハードウェアロジックユニットが特定の核酸配列の各K-merについてのグラフノードの生成を完了したことを検出することと、制御マシンによって、生成されたグラフノードについてグラフエッジ生成を実行するように第2のハードウェアロジックユニットを構成することと、生成されたグラフノードの1つ以上のペアについて、第2のハードウェアロジックユニットによって、かつグラフハッシュテーブルに記憶するために、第1のハードウェアロジックユニットによって生成された、生成されたグラフノードの1つ以上のペアの相互間のグラフエッジを表すデータを生成することであって、ハッシュテーブルキャッシュに記憶された各K-merについてのグラフノードを表すデータ及びハッシュテーブルキャッシュに記憶されたグラフエッジを表すデータが、第1の核酸配列セットのK-merグラフを表す、グラフエッジを表すデータを生成することと、を含み得る。
【0048】
他の実装形態は、ハードウェア加速グラフ生成ユニットのハードウェア回路の演算を実行するように構成された方法及びシステムを含み得る。
【0049】
これらの及び他のバージョンは、任意選択で、以下の特徴のうちの1つ以上を含んでもよい。例えば、いくつかの実装形態では、演算は、制御マシンによって、かつ制御マシンがアクセス可能なメモリユニットに、K-merグラフのインスタンスのグラフ記述データを定期的に記憶することであって、グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表す、グラフ記述データを定期的に記憶することを更に含み得る。
【0050】
いくつかの実装形態では、第1のハードウェアロジックユニットは、特定の核酸配列の特定のK-merのうちの1つ以上が特定の核酸配列の別のK-merと一致するかどうかを判定し、特定の核酸配列の1つ以上の特定のK-merが特定の核酸配列の別のK-merと一致するという判定に基づいて、その1つ以上の特定のK-merを非一意的なK-merとしてマークするデータを記憶するように構成することができる。
【0051】
いくつかの実装形態では、第2のハードウェアロジックは、K-merグラフの各エッジにエッジ重みを割り当てるように更に構成されている。
【0052】
いくつかの実装形態では、演算は、プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、ハッシュテーブルキャッシュからK-merグラフを表すデータを取得し、K-merグラフを表す取得されたデータをバリアントコールユニットに提供するように構成されたハードウェアロジックを実行するように命令することを更に含み得る。
【0053】
いくつかの実装形態では、演算は、プログラマブルロジックデバイスの第3のハードウェアロジックユニットに、ハッシュテーブルキャッシュからK-merグラフのグラフノードを表すデータ及びグラフエッジを表すデータを選択的に削除するように構成されたハードウェアロジックを実行するように命令することを更に含み得る。
【0054】
いくつかの実装形態では、ハッシュテーブルキャッシュは、プログラマブルロジックデバイスの第3のハードウェアロジックユニットを使用して実装される。
【0055】
いくつかの実装形態では、グラフ記述データは、(iii)K-merグラフに対してハードウェアロジックを実行した複数のハードウェアロジックユニットのうちの最後のハードウェアロジックユニット、又はK-merグラフ識別子に関連するパイルアップの核酸配列を表すデータを更に含み得る。
【0056】
いくつかの実装形態では、演算は、グラフサイクルの存在をチェックするためにK-merグラフを評価することと、評価中にグラフサイクルが検出された場合に、k-merグラフの生成を終了するか、又は評価中にグラフサイクルが検出されなかった場合に、k-merグラフの構造を記述するデータをハッシュテーブルキャッシュから取得することと、k-merグラフの構造を記述する取得されたデータをバリアントコールモジュールに提供することとを更に含み得る。
【0057】
本開示のこれら及び他の態様は、添付の図面を参照して以下の詳細な説明においてより詳細に論じられる。
【図面の簡単な説明】
【0058】
図1】K-merグラフのハードウェア加速生成のためのシステムの一例を示す図である。
図2】K-merグラフのハードウェア加速生成のためのプロセスの一例のフローチャートである。
図3】K-merグラフのハードウェア加速生成のためのプロセスの別の例のフローチャートである。
図4】K-merグラフの一例を示す図である。
図5】ハードウェア加速K-merグラフに使用することができるシステム構成要素の一例のブロック図である。
【発明を実施するための形態】
【0059】
本開示は、K-merグラフのハードウェア加速生成に関する。ハードウェア回路を使用するK-merグラフの生成は、K-merグラフの生成に必要な時間量を大幅に削減し、計算集約的なK-merグラフ生成プロセスをソフトウェアプロセッサから集積回路のハードウェアロジック、例えば、フィールドプログラマブルゲートアレイ又はASICにアンロードする。これにより、他のゲノムデータ処理タスクを実行するために使用することができるソフトウェアプロセッサのソフトウェアリソースが解放される。
【0060】
K-merグラフのハードウェア加速生成は、複数の非パイプラインハードウェアロジックユニットによって実行される演算のワークフローを管理するように構成された制御マシンを使用して達成することができる。特に、制御マシンは、複数の非パイプラインハードウェアロジックユニットを使用して、高レベルのパイプライン機能を抽象的に実現することができる。制御マシンは、(i)K-merグラフのインスタンスを識別するK-merグラフ識別子及び(ii)K-merグラフ状態情報を含むグラフ記述データを記憶及び更新することによってこの機能を実現することができる。K-merグラフ状態情報は、例えば、K-merグラフの特定のインスタンスの生グラフデータに基づいて演算を行った最後のハードウェアロジックユニットを示すデータ、最後のハードウェアロジックユニットが演算を中断したかどうかを示すデータ、K-mer長さを示すデータ、K-merノードリストを示すデータ、キャッシュ内のK-merノードを識別するために使用することができるポインタのリストを示すデータ、K-merノードリストの長さ、非一意的なK-merのリストを示すデータ、又はそれらの任意のサブセット若しくは組み合わせを含み得る。制御マシンは、生グラフデータに基づいて演算を実行することになる特定のハードウェアロジックユニットを呼び出し、呼び出されたハードウェアロジックユニットにグラフ記述データの更新されたセットを提供することによって、K-merグラフ生成を管理する。
【0061】
グラフ記述データのこの記憶及び更新により、制御マシンは、非パイプラインハードウェアロジックユニットの各々が異なるK-merグラフに対応するデータに基づいて演算を行うことを可能にする方法で、非パイプラインハードウェアロジックユニットの並列処理を管理することが可能になる。したがって、K-merグラフを生成するためにソフトウェア命令を実行する代わりにハードウェアロジックを使用して達成される高速化という利点に加えて、本開示は、制御マシンによって管理される異なるハードウェアロジックユニットを使用して異なるK-merグラフのセグメントを同時に生成することでスループットを向上させることによって、更に高速化された演算を実現する。
【0062】
図1は、K-merグラフのハードウェア加速生成のためのシステム100の一例である。いくつかの実装形態では、システム100は、核酸シーケンサー110、参照配列データベース120、ハードウェア加速グラフ生成ユニット130、複数のハードウェアロジックユニット131、132、133、134、135、136、137、138、制御マシン140、グラフハッシュテーブルキャッシュ150、DRAM160、及びバリアントコールユニット180を含み得る。いくつかの実装形態では、ハードウェア加速グラフ生成ユニット130は、フィールドプログラマブルゲートアレイ(FPGA)などのプログラマブルロジック回路を使用して実装することができる。他の実装形態では、ハードウェア加速グラフ生成ユニット130は、特定用途向け集積回路(ASIC)を使用して実装することができる。いずれのシナリオでも、ハードウェア加速グラフ生成ユニット130に関して説明された機能、及びその上に実装された各構成要素は、機能を実現するためにソフトウェア命令を実行することなく、本明細書に記載された機能を実現するように構成されたハードウェアロジック回路を使用して実装される。
【0063】
「ユニット」という用語は、本明細書では、指定された機能を実行するために使用されるソフトウェアモジュール、ハードウェアモジュール、又は両方の組み合わせを説明するために使用される。本明細書に記載の特定の「ユニット」がハードウェア、ソフトウェア、又は両方の組み合わせであるかどうかの判定は、その使用の文脈に基づいて行うことができる。例えば、FPGA又はASICを用いて実装されるハードウェア加速グラフ生成ユニット130に常駐する「入力ユニット」131、「グラフノードユニット」132、「グラフエッジユニット」133などは、その機能が、特定の「ユニット」に関して本明細書で説明される機能を実現するように構成されたハードワイヤードデジタルロジックゲート又はハードワイヤードデジタルロジックブロックによって実現されるハードウェアユニットである。別の例として、図1のハードウェア加速グラフ生成ユニット130を使用して実装されない「バリアントコールユニット」180は、その機能が、「バリアントコールユニット」180の機能を定義するソフトウェア命令を実行する1つ以上のコンピュータによって実現されるソフトウェアモジュールである。別の例として、コンピュータ又は処理ユニットは、ソフトウェア命令を処理することによって機能を実現するハードウェアデバイスとすることができ、したがって、そのコンピュータ又は処理ユニットの機能は、ハードウェアとソフトウェアとの組み合わせである。
【0064】
図1の1つ以上の構成要素の例は、「制御マシン」140などのハードウェア実装として本明細書に提供されているが、それは、「制御マシン」が図1ではハードウェア加速グラフ生成ユニット130に実装されているものとして示されているためであって、本開示はそのような例に限定されない。代わりに、「制御マシン」140がソフトウェアにおいて、ソフトウェアモジュール又はハードウェアとソフトウェアの組み合わせとして実装され、コンピュータ又は処理ユニットがソフトウェア命令を実行して本明細書に記載の「制御マシン」140の機能を実現する、他の実装形態を採用することができる。同様に、図1に関してソフトウェアとして説明された特定の構成要素、例えば、「バリアントコールユニット」180がハードウェア実装として実装される本開示の実装形態があり得る。
【0065】
核酸シーケンサー110は、一次解析を行うように構成されたデバイスである。一次解析は、核酸シーケンサー110によって、血液サンプル、組織サンプル、痰、又は核酸などの生体サンプル105を受け取ること、及び、核酸シーケンサー110によって、それぞれが受け取った生体サンプルの核酸配列のヌクレオチドの順序を表す1つ以上のリード112などの出力データを生成することを含み得る。いくつかの実装形態では、核酸シーケンサー110による配列決定は、複数のリードサイクルで実行することができ、第1のリードサイクルは、核酸配列断片の第1の末端からのヌクレオチドの順序を表す塩基呼び出しのストリングを含む1つ以上の第1のリードを生成し、第2のリードサイクルは、核酸配列断片のうちの1つのもう一方の末端からのヌクレオチドの順序を表す塩基呼び出しのストリングを含む1つ以上のそれぞれの第2のリードを生成する。いくつかの実装形態では、リードは、クローン増幅を用いて生成され得る。図1の例において、1つ以上のリード112は、特定の参照ゲノム位置に対するリードのパイルアップを含み得、参照ゲノム位置は、複数の連続した参照ゲノム位置から構成される。
【0066】
したがって、各リードは、動物、昆虫、植物などの生物の核酸ゲノムの一部を表すデータである。約600塩基呼び出しの短い核酸配列断片を想定すると、第1のリードは、核酸配列断片の第1の末端の150個の順序付けられたヌクレオチドを表してもよく、第2のリードは、核酸配列断片のもう一方の末端の150個の順序付けられたヌクレオチドを表してもよい。しかしながら、これらの数は単なる例であり、任意のシーケンシング方法を使用して本明細書に記載のハードウェア加速グラフ生成ユニットによって演算が行われ得るリードを生成するように任意の核酸シーケンサー110を構成することができる。そのようなリードは、本明細書で述べたものとは異なる長さであり得る。例えば、いくつかの実装形態では、本開示は、最大で1000ヌクレオチド又はそれ以上を有する核酸配列断片によって生成されたリードのハードウェア加速K-merグラフを生成するために使用することができ、各リードは、例えば、各断片の末端から50塩基呼び出し、75塩基呼び出し、150塩基呼び出し、200塩基呼び出し、300塩基呼び出し、500塩基呼び出し又はそれ以上を有する。各塩基呼び出しはヌクレオチドに対応し得る。本開示はまた、ロングリードのハードウェア加速K-merグラフを生成するために使用することもできる。したがって、ハードウェア加速グラフ生成ユニット130は、任意のタイプの核酸シーケンサーによって任意の方法で生成された任意のリードのK-merグラフを生成するために使用することができる。
【0067】
いくつかの実装形態では、生体サンプル105は、DNAサンプルを含むことができ、核酸シーケンサー110は、DNAシーケンサーを含むことができる。このような実装形態では、核酸シーケンサーによって生成されたリード中のシーケンシングされたヌクレオチドの順序は、グアニン(G)、シトシン(C)、アデニン(A)、及びチミン(T)のうちの1つ以上を任意の組み合わせで含むことができる。いくつかの実装形態では、核酸シーケンサー110を使用してRNAサンプルを配列決定することができる。いくつかの実装形態では、これはRNA-seqプロトコルを使用して行うことができる。例として、逆転写酵素を使用して相補的DNA(cDNA)を形成するために逆転写を使用してRNAサンプルを前処理することができる。他の実装形態では、核酸シーケンサー110は、RNAシーケンサーを含むことができ、生体サンプルは、RNAサンプルを含むことができる。したがって、図1の例は、DNAサンプルに基づいてDNAシーケンサーによって生成されるG、C、A及びTから構成されるリードを生成する核酸シーケンサーを記載しているが、本開示はそのように限定されない。代わりに、他の実装形態は、RNAサンプルに基づいてRNAシーケンサーによって生成されるC、G、A、及びUから構成されるリードを処理することができる。いくつかの実装形態では、核酸シーケンサーによって生成されたDNAリード又はRNAリードは、塩基呼び出しNを含むことができ、Nは、核酸シーケンサーによって生成された未知の塩基呼び出しを示す。
【0068】
いくつかの実装形態では、核酸シーケンサー110は、超高スループット、スケーラビリティ、及び超並列シーケンシング技術の使用による速度を達成する手法で、所与のサンプルについてのリード112などのシーケンスリードを生成するように構成された次世代シーケンサー(next generation sequencer、NGS)を含むことができる。NGSは、ゲノム全体の迅速なシーケンシングと、深くシーケンシングされた標的領域にズームするか、RNAシーケンシング(RNA-Seq)を利用して、新規RNA変異体及びスプライス部位を発見するか、又は遺伝子発現解析、ゲノムワイドDNAメチル化及びDNA-タンパク質相互作用などのエピジェネティック因子の解析、希少体変異体及び腫瘍サブクローンを研究するための癌サンプルのシーケンシング、並びにヒト又は環境における微生物多様性の研究のためのmRNAを定量化する能力と、を可能にする。
【0069】
核酸シーケンサー110は、参照ゲノムデータベース122から参照ゲノム122を取得することができる。いくつかの実装形態では、参照ゲノム122の一部のみが得られる。得られる参照ゲノム122の部分は、リード112のパイルアップがマッピングされ、アラインメントされる参照ゲノム122の参照位置に対応し得る。参照ゲノムデータベース122は、複数の異なる参照ゲノムのためのストレージを構成するデータストレージを含むことができる。いくつかの実装形態では、参照ゲノムデータベースから選択される特定の参照ゲノム122は、DNAサンプル105のタイプに基づくことができる。いくつかの実装形態では、参照ゲノムデータベース120から選択された参照ゲノム122のタイプは、核酸シーケンサー110のユーザからの入力に基づいて選択され得る。そのような実装形態では、ユーザは、例えば、参照ゲノムデータベース120から特定の参照ゲノム122を選択するために核酸シーケンサー110が使用し得る参照ゲノム120識別子を選択することができる。参照ゲノム122は、例えば、特定の種に関する遺伝子のセットの代表例として作成された核酸配列を含み得る。
【0070】
核酸シーケンサー110によって生成されたリード112のパイルアップと得られた参照ゲノム122との組み合わせは、ハードウェア加速グラフ生成ユニット130への入力として提供され得る。これらの入力は、ハードウェア加速グラフ生成ユニット130のハードウェアロジックユニット131~138のうちの1つ以上によって処理されて、K-merグラフのインスタンスを生成することができる。例えば、ハードウェアロジックユニット131~138の各ハードウェアロジックユニットは、ハードウェア加速グラフ生成ユニット130への入力として含まれるリード112のパイルアップの各リードについてそれぞれの演算を実行するように構成することができる。
【0071】
図1のシステム100は、核酸シーケンサーを含むものとして本明細書に記載されている。いくつかの実装形態、例えば、図1を参照して説明した実装形態では、本システムはシーケンサー110及びハードウェア加速グラフ生成ユニット130を含むことができ、システム100の他の構成要素は核酸シーケンサー110内に統合することができる。ただし、本開示は核酸シーケンサー110内に統合されることに限定されない。代わりに、いくつかの実装形態では、ハードウェア加速グラフ生成ユニット130は、核酸シーケンサー110から離れており、例えば1つ以上の有線又は無線ネットワークを用いることなどにより核酸シーケンサー110に通信可能に結合されているコンピュータ内に統合又は収容されたプログラマブルロジックデバイス又はASICに実装することができる。同様に、データベース120、バリアントコールユニット180、又はその両方は、核酸シーケンサー110の外部に実装されてもよい。同様に、システム100が核酸シーケンサー110を含む必要は全くない。代わりに、いくつかの実装形態では、ハードウェア加速グラフ生成ユニット130、及び図1の他の構成要素は、核酸シーケンサー110を含まないコンピュータシステムに実装することができる。そのような実装形態では、ハードウェア加速グラフ生成ユニットは、ネットワークを介して、1つ以上のメモリデバイスの記憶位置などから、リード112、参照配列122、又はその両方のパイルアップを取得することができる。したがって、システム100は、本開示の一例を示しているが、本開示をシステム構成要素の任意の特定の構成に限定するものではない。
【0072】
ハードウェア加速グラフ生成ユニット130の1つ以上のハードウェアロジックユニットは、入力ユニット131、グラフノードユニット132、グラフエッジユニット133、逆伝播ユニット134、サイクルユニット135、プルーニングユニット136、グラフ出力ユニット137、及び消去ユニット138を含むことができる。いくつかの実装形態では、ハードウェア加速グラフ生成ユニット130によるK-merグラフの生成は、制御マシン140が、ハードウェアロジックユニット131~138の各々を起動及び構成し、キャッシュ150又はDRAM160に記憶されたデータのセットに基づいてそれぞれのハードウェアロジック演算を実行することを含むことができる。他の実装形態では、制御マシン140は、ハードウェアロジックユニット131~138のサブセットのみを起動及び構成して、キャッシュ150又はDRAM160に記憶された生グラフデータのセットに基づくそれぞれのハードウェアロジック演算を実行することができる。
【0073】
例として、いくつかの実装形態では、ハードウェア加速グラフ生成ユニット130を使用して、De Bruijnグラフの特殊な形態を生成することができる。このDe Bruijnグラフの特殊な形態は、非一意的なK-merが、複数のエッジを有する単一のノードによって表されるのではなく、各々が単一のエッジを有するグラフ内の複数のそれぞれのノードを用いて表されるように最適化することができる。これは、部分的には、グラフユニット132を使用して非一意的なK-merを識別し、更なる処理のために非一意的なK-merにフラグを立てることによって達成され得る。非一意的なK-merは、任意の単一のリードにおいて少なくとも2回、又は参照配列において少なくとも2回生じるK-mer配列として定義され得る。一意的なK-merは、同じリード内では2回以上発生しないものの、複数のリード内で発生し得る。
【0074】
ただし、他の実装形態では、一意的なK-merと非一意的なK-merとを区別することなく、De Bruijnグラフを生成することができる。したがって、いくつかの実装形態では、非一意的なK-merを識別することができるグラフノードユニット132は実装される必要がない。更に別の例では、逆伝播ユニット134は、すべてのK-merグラフを生成するために使用される必要はない。代わりに、逆伝播ユニット134は、性能を向上させることができる実装形態に限定されてもよい。一例として、逆伝播ユニット134は、生成されたK-merグラフのシーケンスグラフへの後の変換が予期される場合において、エッジ重みの品質を改善するために使用することができる。
【0075】
図1の例に関して説明したK-merグラフ生成例は、制御マシン140によって起動及び構成され得る各ハードウェアロジックユニット131~138を示している。この説明では、各ハードウェアロジックユニット131~138は、一般に、制御マシン140によって起動され、例えば、制御マシン140によって記憶されたグラフ記述データを使用して制御マシン140によって構成され、生グラフデータを取得し、取得された生グラフデータ又は他のデータに基づいて1つ以上の特定の処理演算を実行し、次いで生グラフデータ、グラフ記述データ、又はその両方を更新するものとして説明したが、本開示はそのように限定されない。ただし、本開示はそのような実装形態に限定されない。代わりに、いくつかの実装形態では、各ハードウェアロジックユニット131~138は、そのそれぞれの機能の複数のインスタンスを実行するように構成することができる。例えば、グラフノードユニット132は、生グラフデータの最大3つの別個のセットを受け入れて、それに基づく演算を同時に実行するように構成することができ、サイクルハードウェアロジックユニット135は、生グラフデータの最大3つの別個のセットを受け入れて、それに基づく演算を同時に実行するように構成することができ、PRUは、生グラフデータの最大2つの別個のセットを受け入れて、それに基づく演算を同時に実行するように構成することができる。異なるK-merグラフにそれぞれ対応する別個のセット又は生グラフデータの数は、特定のハードウェアロジックユニット131~138によって受信及び処理されることができ、システム100に利用可能なハードウェアリソースによってのみ制限される。例えば、十分なレベルのDRAM及びFPGAロジックユニットを使用することが可能であると仮定すると、ハードウェアロジックユニット131~138によって受信され、同時に処理され得る生グラフデータの別個のセットの数は、4以上であり得る。同様に、1つ以上のハードウェアロジックユニット131~138は、そのようなリソースが容易に利用できない場合、又は特定のハードウェアロジックユニットを大量に使用することが予想されない場合には、より少数の生グラフデータセットを受信して、同時に処理するように構成することができる。
【0076】
更に他の実装形態では、各々が異なるK-merグラフに対応する生グラフデータの別個のセットを各々が同時に処理することができる各ハードウェアロジックユニット131~138のインスタンスが1つだけである必要はない。代わりに、いくつかの実装形態では、各ハードウェア加速グラフ生成ユニット130の複数のインスタンスは、ハードウェアロジックユニット131~138のうちの1つ以上の複数のインスタンスを含むように構成することができる。そのような場合、制御マシン140は、各ハードウェアロジックユニット131~138のステータス及び可用性を監視し、次いで、各それぞれのハードウェアロジックユニットにわたる処理演算を負荷分散する方法で、各ハードウェアロジックユニットを起動及び構成するように構成することができる。例えば、いくつかの実装形態では、ハードウェア加速グラフ生成ユニット130は、それぞれが最大3つの別個の生グラフデータセットを受信して、それに基づく演算を同時に実行することができるグラフノードユニット132の3つのインスタンスと、それぞれが最大3つの別個の生グラフデータセットを受信して、それに基づく演算を同時に実行することができるグラフエッジユニット133の3つのインスタンスと、それぞれが最大2つの別個の生グラフデータセットを受信して、それに基づく演算を同時に実行することができる2つの逆伝播ユニット134と、それぞれが最大2つの別個の生グラフデータセットを受信して、それに基づく演算を同時に実行することができる3つのサイクルユニット135とを有するように構成することができる。各ハードウェアロジックユニットの起動/解除、各ハードウェアロジックユニットの構成、各ハードウェアロジックユニットへの入力、各ハードウェアロジックユニットからの出力、及び各ハードウェアロジックユニットによるグラフ記述データの更新は、制御マシン140によって管理及び指示される。
【0077】
入力ユニット
【0078】
入力ユニット131は、生成されたリード112のパイルアップ及び選択された参照ゲノム122を含む入力データを受信することができ、本明細書では、これを生グラフデータと呼ぶ場合がある。選択された参照ゲノム122は、参照ゲノムの一部を含み得る。生グラフデータは、例えば、K-merグラフのインスタンスの生成中に1つ以上のハードウェアロジックユニット131~138によって処理されるデータを含み得る。生グラフデータは、例えば、生成されたリード112及び選択された参照ゲノム122を含む一方で、生グラフデータはまた、例えば、グラフノードユニット132によって生成されたK-merノードやグラフエッジユニット133によって生成されたエッジなども含み得る。入力ユニット131は、生成されたリード112及び得られた参照ゲノム122をDRAM160に記憶するためにフォーマットすることができる。生成されたリードをフォーマットすることは、例えば、DRAM160に記憶するためにリードを符号化することを含み得る。いくつかの実装形態では、リードを符号化することは、リードのヌクレオチドに対応する各塩基呼び出しを4ビット値に符号化することを含み得る。例えば、Aは0000として符号化することができ、Cは0001として符号化することができ、Gは0010として符号化することができ、Tは0011として符号化することができ、Nは0100として符号化することができ、Nは未知の塩基呼び出しである。いくつかの実装形態では、符号化データはまた、MAPQスコア、リード番号、配列長、SAMフラグ、リードの塩基呼び出し若しくはヌクレオチド、MAPQスコア以外のリードの1つ以上の品質指標、又はそれらの任意の組み合わせを表すデータを含み得る。符号化されたリードデータは、リードを記述する16ビット値から64ビット値又はそれ以上の範囲とすることができる。入力ユニット131は、生成されたリードをDRAM160に書き込むことができる。
【0079】
制御マシン140は、生の入力データの受信を検出し、入力ユニット131を起動し、生の入力データに基づいて生成されることになるK-merグラフのインスタンスに対応するグラフ記述データを初期化することができる。入力ユニット131を起動することは、制御マシン140が、入力ユニット131に入力として提供された生データに基づいて、入力ユニット131のハードウェアロジック回路によって定義された演算を実行するように入力ユニット131に命令する1つ以上の制御メッセージを入力ユニット131に送信することを含み得る。いくつかの実装形態では、入力ユニット131などのハードウェアロジックユニットを起動することはまた、制御マシンが、その演算を実行するためにハードウェアロジックユニットを構成するために使用することができるグラフ記述データをハードウェアロジックユニットに提供することを含み得る。ハードウェアロジックユニットを構成することは、例えば、K-merを記憶するキャッシュ記憶位置へのポインタであるK-merノードを提供することと、K-merの長さを記述する情報又はハードウェアロジックユニットが演算を行うために必要な同様の情報を提供することとを含み得る。
【0080】
グラフ記述データを初期化することは、例えば、制御マシン140が、生の入力データのためのK-merグラフ識別子を生成すること、グラフ状態情報データ構造の生成、又はそれらの組み合わせを含み得る。K-merグラフ識別子は、生グラフデータが入力ユニット131によって受信された時点から、少なくとも、特定の生グラフデータセットに関するK-merグラフを完全に生成した後にキャッシュ150、DRAM160、又はその両方からK-merグラフ識別子に関連するデータが消去ユニット138を使用して除去される時点までのK-merグラフ生成プロセス全体を通して、K-merグラフのインスタンスを識別するために使用することができる、1つ以上の文字、1つ以上の数字、又はそれらの組み合わせのデータ列を含む。いくつかの実装形態では、K-merグラフ識別子は、0~63の値を有する6ビット数などの数を含むことができる。いくつかの実装形態では、消去ユニットを使用してキャッシュ150、DRAM160、又はその両方から前述のデータを削除した後、K-merグラフ識別子を使用してK-merグラフを参照することもできる。グラフ状態情報データ構造は、生の入力データの特定のセットに対して生成されることになるK-merグラフのインスタンスの現在の状態を記述するデータを記憶する1つ以上のフィールドを有するデータ構造である。状態情報は、例えば、K-merグラフの特定のインスタンスの生グラフデータに基づいて演算を行った最後のハードウェアロジックユニットを示すデータ、最後のハードウェアロジックユニットが演算を中断したかどうかを示すデータ、K-mer長さを示すデータ、K-merノードリストを示すデータ、キャッシュ内のK-merノードを識別するために使用することができるポインタのリストを示すデータ、K-merノードリストの長さ、非一意的なK-merのリストを示すデータ、キャッシュ又はDRAM内の生の入力データの位置を示すデータ、K-merグラフのインスタンスのノードのDRAM内のベースアドレスを示すデータ、又はそれらの任意のサブセット若しくは組み合わせを含み得る。
【0081】
入力ユニット131は、入力リード112及び参照ゲノム122をフォーマットし、入力リード112及び参照ゲノムをDRAM160に書き込むことができる。制御マシン140は、入力ユニット131が入力リード112及び参照ゲノム122のDRAM160へのフォーマット及び書き込みを完了したときを検出することができる。制御マシン140が入力リード112及び参照ゲノム122のフォーマット及びDRAMへの書き込みの完了を検出すると、制御マシン140は、K-merグラフの第1のインスタンスの第1の生グラフデータに対する入力ユニット131の演算が完了したことを示すようにグラフ状態情報を更新することができる。
【0082】
第1の生グラフデータが入力され、フォーマットされ、DRAM160に記憶されると、制御マシン140は、次に起動及び構成される次のハードウェアロジックユニットを決定することができる。例えば、制御マシン140は、グラフノードユニット132を起動及び構成し、参照ゲノム122の部分及びフォーマットされDRAM160に記憶されたリードのパイルアップに基づいてK-merノードを生成することができる。
【0083】
グラフノードユニット
【0084】
制御マシン140は、グラフノードユニット132を起動及び構成し、DRAMに記憶されたフォーマットされたリード112及び参照ゲノム122を処理することによって、K-merグラフの第1のインスタンスの生成を継続することができる。これは、例えば、制御信号をグラフノードユニット132に送信すること、グラフ記述データをグラフノードユニット132に提供すること、又はそれらの組み合わせを含み得る。グラフ記述データを使用して、演算のためのグラフノードユニット132を構成することができる。例えば、グラフ記述データをグラフノードユニット132に制御マシン140から提供することにより、グラフノードユニット132を、グラフ記述データによって定義される特定のサイズのK-merを識別するように構成することができる。本明細書で説明されるグラフ記述データの他のフィールドは、同様の方法でグラフノードユニット132などのハードウェアロジックユニットを構成するために使用することができる。
【0085】
加えて、制御マシン140は、実質的に並行して、入力ユニット131が第2の生グラフデータを入力として受け取ったことを検出することができる。次に、制御マシン140は、入力ユニット131を起動し、ユニット131に、第2の生グラフデータのリード及び参照ゲノムをフォーマットするように命令し、第2の生グラフデータに基づいて生成されることになるK-merグラフの第2のインスタンスのための第2のグラフ記述データを生成することができる。このように、制御マシン140は、異なる処理段階で生グラフデータの異なるセットに基づいてK-merグラフ生成プロセスを実行している異なるハードウェアロジックユニット131、132の動作を同時に管理することによって、高レベルのスループットを実現することができる。制御マシン140は、ハードウェアロジックユニット131、132、133、134、135、136、137、138の各々にわたってこの並列機能を管理するように構成され、その結果、任意の特定の時点において、生グラフデータの8つの異なるセットに基づいて演算を行う8つものハードウェアロジックユニットが存在することがあり、ハードウェア加速グラフ生成ユニット130は、8つの異なるK-merグラフを同時に生成するように動作する。制御マシン140は、グラフ記述データを使用して、各関連ハードウェアロジックユニットを起動及び構成することによって、全体を通してこのプロセスを管理して、各それぞれのハードウェアロジックユニット相互間に直接的かつ物理的な入出力接続を持たない非パイプラインハードウェアロジックユニット131、132、133、134、135、136、137、138から抽象的に高レベルのパイプライン機能を実現する。同時に実行される8つのK-merグラフの同時生成の例が示されているが、本開示は、例えば、一度に複数のハードウェア加速グラフ生成ユニット130を実装すること、1つ以上のハードウェア加速グラフ生成ユニット130上の複数のハードウェアロジックユニットの複数のインスタンス、又はそれらの組み合わせによって、より多くのK-merグラフの同時生成を実現するように構成することができる。
【0086】
グラフノードユニット132は、リード112のパイルアップの各リードを分析して、リードのK-merのそれぞれを識別することができる。これは、例えば、各リードの各位置に沿ってK-merアクセスウィンドウをスライドさせてそれぞれのリードの各特定のK-merを識別することを含み得る。グラフノードユニット132は、各リードの各識別されたK-merについて、K-merグラフのノードを表すデータをキャッシュ150に記憶することができる。同様に、グラフノードユニット132はまた、ノードポインタのデータ構造内のノードポインタのリストを生成してDRAMに記憶することができ、各ノードポインタはK-merノードキャッシュ位置を指す。グラフノードユニット132はまた、制御マシンによって保持されるグラフ記述データ内の各K-merグラフについてのノードポインタのリストの位置及び長さを示す情報を生成して記憶することができる。これらのポインタは、K-merグラフ生成プロセスの後続部分において別のハードウェアロジックユニットを構成するために、制御マシン140によってグラフ状態情報として使用され得る。キャッシュ150は、キャッシュ150の最も古いオブジェクトを追い出すように構成されたLRUキャッシュコヒーレンシポリシーなどの1つ以上のキャッシュコヒーレンシポリシーを使用することができ、最も古いオブジェクトは、オブジェクトがキャッシュ150に書き込まれた時間に基づいて判定される。
【0087】
グラフノードユニット132によって生成され、キャッシュ150、DRAM160、又はその両方に記憶されるデータの一例を図4を参照して示す。図4は、参照ゲノム410、リード420の一部を示し、De Bruijnグラフ400が提示されている。以下により詳細に記載されるDe Bruijnグラフ400は、ゲノム410及びリード420の一部における各K-merについてのノードと、k-1重複ヌクレオチドを有するノードのペアをリンクするK-merノードの各ペアの間のエッジとを含む。
【0088】
図4の例を参照すると、グラフノードユニット132は、参照ゲノム410の一部及びリード420の受信に基づいて、DeBruijnグラフ400の第1の経路430のノード431、432、433、434、435、436、437、438を表すデータを生成することができ、ノード441、442、443、444を生成することができる。まず、グラフノードユニット132は、図4に示されるように、重複領域を識別するために、参照ゲノム410a、410bの重複部分及びリード420a、420bの重複部分を整列させることができる。グラフノードユニット132は、ゲノム410及びリード420の部分のK-merのそれぞれを識別することができる。これは、アクセスウィンドウによって識別されたK-merを捕捉する参照ゲノム410の部分の最初の位置で、長さk(この例では4に等しい)のアクセスウィンドウを使用し、捕捉されたK-merを含むグラフのノードを表すデータを生成し、ノードを表すデータをキャッシュ150に記憶し、アクセスウィンドウをヌクレオチド1つ分前進させ、以降、このプロセスを反復的に繰り返すことによって達成することができる。この例では、グラフノードユニット132は、参照ゲノム410の部分について、K-mer ATCG、TCGC、CGCC、GCCT、CCTA、CTAG、TAGA、及びAGAAを識別して、それぞれのノード431、432、433、434、435、436、437、438を生成することができ、これらのノードのうちの1つはそれぞれのK-merに対応する。各ノードは、長さk(この例では、4)を有し、次の隣接ノードとk-1個のK-merが重複するように作成される。グラフノードユニット132は、生成されたノードをキャッシュ150、DRAM160、又はその両方に記憶することができる。いくつかの実装形態では、キャッシュはハッシュテーブルキャッシュを含むことができる。そのような実装形態では、ノードはハッシュテーブルの鍵として記憶され得る。グラフノードユニット132は、制御マシン140によって維持されるグラフ記述データ内のK-merノード位置へのポインタを記述するデータを記憶することができる。
【0089】
グラフノードユニット132は、リード420に対して同じ演算を実行することができる。リード420に関して、グラフノードユニット132は、K-mer ATCG、TCGC、CGCG、GCGT、CGTA、GTAG、TAGA、及びAGAAを識別することができる。これは、アクセスウィンドウによって識別されたK-merを捕捉するリード420の部分の最初の位置において、長さk(この例では4に等しい)のアクセスウィンドウを使用し、以降、アクセスウィンドウを前進させ、プロセスを繰り返すことによって同様に達成することができる。グラフノードユニット132は、ゲノム410の一部について各K-merを識別することによって開始することができる。いくつかの実装形態では、グラフノードユニット132は、K-merのそれぞれについて対応するノードを生成することができる。他の実装形態では、グラフノードユニット132は、参照ゲノム410の部分のK-merノードとは異なる識別されたK-merに対応する431、432、433、434、435、436、437、438のみを生成し得る。各シナリオでは、各ノードは、長さk(この例では、4)を有し、次の隣接ノードとk-1個のK-merが重複するように作成される。これは、参照ゲノム410の部分の各K-merについてのノードが作成され、キャッシュ150又はDRAM160に記憶されるまで継続することができる。
【0090】
いくつかの実装形態では、グラフノードユニット132はまた、非一意的なK-merを識別するように構成され得る。そのような実装形態では、グラフノードユニット132は、リードの最初のパイルアップの各特定のリードについて、識別されたK-merが一意的なK-merであるか非一意的なK-merであるかを判定することができる。特定のK-merが一意的なK-merであるとグラフノードユニット132が判定した場合には、グラフノードユニット132は、次のK-merを評価するためにヌクレオチド1つ分アクセスウィンドウを進めることができる。あるいは、グラフノードユニット132が、特定のK-merが非一意的なK-merであると判定した場合には、グラフノードユニット132は、その特定のK-merが非一意的なK-merであることを示すデータを記憶することができる。例えば、グラフノードユニット132は、K-merが非一意的なK-merであることを示すK-merグラフの特定のインスタンスについて制御マシンによって維持されるグラフ記述データ内にデータフラグを記憶することができる。しかしながら、そのようなデータは、ハードウェア加速グラフ生成ユニット130の任意の他の構成要素によって記憶されてもよく、又はハードウェア加速グラフ生成ユニット130の任意の他のメモリユニットに記憶されてもよく、又はそれらを組み合わせてもよい。次いで、後続のハードウェアロジックユニットは、K-merグラフのインスタンスにおけるサイクルを低減又は排除するために、非一意的なK-merを扱う演算を実行することができる。
【0091】
プロセスのこの時点で、グラフノードユニット132は、各K-merについてのK-merグラフのノードを表すデータを、キャッシュ150、DRAM160、又はその両方に記憶する。すなわち、ハードウェア加速グラフ生成ユニット130は、グラフエッジ431a、432a 433a、434a、435a、436a、437a、432b、441a、442a、443a、444a、グラフエッジ重みなどをまだ生成していない。K-merグラフのこのインスタンスのこれらの特徴は、ハードウェア加速グラフ生成ユニット130の1つ以上の他のハードウェアロジックユニットによって生成することができる。
【0092】
制御マシン140は、グラフノードユニット132の演算を監視することができる。グラフノードユニット132が、K-merグラフのこの第1のインスタンスの第1の生グラフデータの各リードの各K-merについてのK-merノードを表すデータを生成すると、制御マシンは、ハードウェア加速グラフ生成ユニット130が第1の生グラフデータに基づくグラフノードユニット132の演算を完了したことを示すように、グラフ記述データを更新することができる。加えて、制御マシン140はまた、例えば、非一意的なK-merの各々を識別するフラグと、K-merのグラフノードの記憶位置と、グラフノードユニット132が演算を完了したことを示すデータとを含むグラフ記述データを記憶することもできる。
【0093】
K-merグラフノードが生成されてキャッシュ150に記憶されると、制御マシン140は、次に起動及び構成するべき次のハードウェアロジックユニットを決定することができる。例えば、制御マシン140は、ノードのペアの相互間のグラフエッジを生成する、重み付けする、又はその両方を行うために、グラフエッジユニット133を起動及び構成することができる。
【0094】
グラフエッジユニット
【0095】
グラフエッジユニット133は、グラフノードユニット132によって生成されたK-merノードのペアの相互間にグラフエッジを生成することができる。制御マシン140は、最初のK-merグラフインスタンスのグラフノードユニット132が完了し、グラフエッジユニット133が利用可能であると判定されると、グラフエッジユニット133を起動することができる。いくつかの実装形態では、制御マシン140は、K-merグラフの特定のインスタンスについてグラフノードユニット132によって生成されたK-merグラフノードを記憶する位置を、グラフエッジユニット133に提供するか、さもなければアクセス可能にすることができる。例えば、制御マシン140は、K-merグラフのインスタンスについてのK-merノードの生成中にグラフノードユニット132によって生成されて記憶されたK-merグラフ記述データにアクセスすることができる。アクセスされたK-merグラフ記述データは、K-merのリストを示すか、さもなければ記述することができる。
【0096】
グラフエッジユニット133がK-merグラフの最初のインスタンスのK-merグラフノードの位置を取得すると、グラフエッジユニットは、K-merノードを表すデータの間に1つ以上のグラフエッジを生成し始めることができる。いくつかの実装形態において、グラフエッジユニット133は、ハッシュテーブルキャッシュからの特定のリードのK-merのそれぞれについてグラフノードを表すデータにアクセスすることができる。グラフエッジユニット133は、ハッシュテーブルキャッシュに記憶するために、K-merについてのグラフノードの間のグラフエッジを表すデータを生成することができる。例えば、グラフエッジを表すデータは、エッジのソースノードのグラフノードレコードの一部としてハッシュテーブルキャッシュに記憶することができる。いくつかの実装形態では、グラフエッジユニット133は、K-merグラフの各エッジにエッジ重みを割り当てることができる。例えば、グラフエッジユニット133は、それぞれのK-merペアをリンクするグラフエッジのそれぞれの生成に対して、+1又は他の重みを加えることができる。
【0097】
例として、グラフエッジユニット133は、制御マシン140から取得されたグラフ記述データを使用して、隣接するノードを特定することができる。ノードは、そのノードがk-1の重複ヌクレオチドを共有するという判定やそのノードがスライドするK-merアクセスウィンドウの2つの連続した位置で観察されるという判定などの様々な因子に基づいて隣接ノードであると判定することができる。例えば、グラフエッジユニット133は、生グラフデータの各リードの各位置に沿ってK-merアクセスウィンドウをスライドさせることができる。いくつかの実装形態では、グラフエッジユニット133は、1つの塩基を除くすべてが重複する2つの連続するK-merがリードにおいて観察されることが判定されたときに、エッジを1つ作成するか、又はエッジ重みを1つ増加させることができる。グラフノード133は、そのようなシナリオにおいて、エッジを作成するか、又はエッジ重みを増分する。なぜなら、このシナリオは、それらの2つの連続するK-merに対応するグラフノードの間のエッジを意味するからである。
【0098】
いくつかの実装形態では、グラフノードを表すデータは、ハッシュテーブルのハッシュ鍵として記憶され得る。かかる実装形態では、グラフエッジユニット133は、第1のノード(又はハッシュ鍵)がマッピングされるハッシュ位置にアクセスし、第2のノード(又はハッシュ鍵)を指すハッシュ位置に記憶するためのポインタを生成することによって、第1のノード(又はハッシュ鍵)から第2のノード(又はハッシュ鍵)へのエッジを生成することができる。後続のエッジを同じ方法で生成することができ、これにより、1つ以上のグラフウォーキングアルゴリズムを使用してウォークすることができるグラフを通る経路430又は440が作成される。
【0099】
図4の例を参照すると、グラフエッジユニット133は、第1の経路430のノード431、432、433、434、435、436、437、438のペア、第2の経路440のノード441、442、443、444のペア、又は第1の経路430及び第2の経路440のノードの1つ以上のペアの相互間の1つ以上のエッジを表すデータを生成することができる。これらのエッジの例は、図4にエッジ431a、432a、433a、434a、435a、436a、437a、432b、441a、442a、443a、444aとして示されている。
【0100】
この例では、ヌクレオチド420の配列はリードと呼ばれる。しかしながら、いくつかの実装形態では、ヌクレオチド420の配列がコンティグ又はリードの一部であるように、低品質の塩基除去が起こり得る。そのような実装形態では、ペアのノードをリンクするグラフエッジは、特定のコンティグ内の1つ以上のリンクの経路のみを作成し、第1のコンティグのK-merノードから第2のコンティグのK-merノードへの経路は作成しない。コンティグは、低品質の塩基が除去された後に生じるヌクレオチドの配列を含み得る。
【0101】
逆伝播ユニット
【0102】
ハードウェア加速グラフ生成ユニット130は、逆伝播ユニット134を含むことができる。ただし、制御マシン140は、特定の実装形態では逆伝播ユニット134を起動及び構成するだけでよい。例えば、制御マシン140は、生グラフデータの現在のセットによって生成されているK-merグラフが後にシーケンスグラフに変換されると制御マシン140が判定したときに、逆伝播ユニット134を起動することができる。起動されると、逆伝播モジュール134は、制御マシン140からグラフ記述データを受信することができる。そのような実装形態では、グラフエッジ重みの調整は、シーケンスグラフによって継承される場合に、重みをより信頼性の高いものにすることができる。
【0103】
グラフエッジユニット133は、キャッシュ150内の対応するK-merノードを識別し、K-merノードをリンクするエッジを生成し、次いでそれぞれの生成に対してエッジの重み+1を増分することによって、コンティグのK-merノードの間にエッジを構築することができる。いくつかの実装形態では、コンティグのK-merノードがK-merグラフに追加され、グラフエッジユニット134を使用して重み付けされた後、逆伝播ユニット134を使用して、K-merグラフのコンティグの開始ノードのグラフエッジ「左」の線形チェーンを介して、+1個のエッジ重みの増分をk-1段階逆伝播することができる。この場合、K-merグラフにおけるコンティグの開始ノードの「左」は、K-merグラフの有向エッジに対向するK-merグラフの方向である。この概念を説明すると、De Bruijnグラフ400内のノード434の「左」は、ノード433、432、及び431である。
【0104】
例えば、いくつかの実装形態では、逆伝播モジュール134は、ハッシュテーブルキャッシュ内で、そのK-merノード、対応するグラフエッジなどを含むK-merグラフを表すデータにアクセスし、次いで、新しいコンティグの開始前に発生するK-1ノードのエッジ重みを調整することができる。逆伝播ユニット135は、この情報を記憶するキャッシュ位置へのポインタを含む制御マシン160から受信したグラフ記述データに基づいて調整する適切なK-merノード及びエッジを見つけることができる。グラフ記述データは、逆伝播中に発生する任意の変更によって更新され得る。
【0105】
いくつかの実装形態では、Nベースのコンティグは一連の(N-K)エッジ重みを増分するだけでよいため、前述の逆伝播を実行する上で有利であり得る。しかしながら、このK-merグラフがこのコンティグに対応する(N-1)個の内部エッジを有するシーケンスグラフに後で変換される場合、第1の(K-1)個のエッジ重みは適切に増分されたエッジ重みを継承しない。前述の逆伝播は、この問題のほとんどの事例に対処する。したがって、K-merグラフがシーケンスグラフに変換されるときに、継承されたエッジ重みの信頼性を高めるために、逆伝播を使用してこの問題に対処することができる。
【0106】
サイクルユニット
【0107】
ハードウェア加速グラフ生成ユニット130は、サイクルユニット135を含むことができる。いくつかの実装形態では、サイクルユニット135は、制御マシン140によって起動及び構成されて、K-merグラフのインスタンスにおけるサイクルを検出することができる。例えば、サイクルユニット135は、入力ユニット131、グラフノードユニット132、グラフエッジユニット133、及び逆伝播ユニット134のうちの1つ以上によって生成されたK-merグラフのインスタンスの生グラフデータのK-merノード及びK-merエッジを評価することができる。サイクルユニット135は、制御マシン140からグラフ記述データを受信するように構成される。サイクルユニット135は、削除のためにヘッドノードに反復的にフラグを立てることができる。ヘッドノードは、いかなるインエッジも含まないノードを含み得る。ここで、インエッジは、第1のノードからその第1のノード自体を指すエッジである。各先頭ノードに削除のフラグが立てられた後、サイクルユニット135は、アウトエッジが指し示すノードが、削除されたノードの結果としてヘッドノードになったか否かを判定することができる。そのようなノードが判定された場合、それらは削除のためにフラグが立てられる。アウトエッジは、第1のノードから別のノードを指すグラフエッジである。サイクルユニット135は、ヘッドノードがなくなるまで、このプロセスの実行を継続することができる。
【0108】
ヘッドノードが残っていないと判定されると、サイクルユニット135は、グラフが空であるか否かを判定することができ、空のグラフは、グラフのすべてのノードに削除のフラグが立てられていることを意味する。ヘッドレスグラフが空の場合、サイクルはなかったことになる。あるいは、ヘッドレスグラフが空でない場合、グラフはサイクルを含んでいるはずである。サイクルは、サイクル外のノードを削除することによってサイクル内のどのノードもヘッドノードにならないので、この種の削除に耐性がある。
【0109】
これらの判定のいずれかを行うと、サイクルユニット135は、サイクルが検出されたか否かに関する指示を制御マシン140に提供することができる。次に、サイクルユニット135から提供された指示に基づいて、制御マシン140は、どのハードウェアロジックユニットを次に起動及び構成すべきかを決定することができる。例えば、サイクルが検出され、K-merグラフのインスタンスの生成が中断されるべきである場合、制御マシン140は、消去ユニット138を起動及び構成することができる。そのような場合、消去ユニットは、中断されたK-merグラフのインスタンスに対応する生グラフデータをキャッシュ150及びDRAM160から削除することができる。あるいは、K-merグラフのインスタンスの生成を続行する場合、制御マシン140は、別のハードウェアロジックユニットを起動及び構成して、生グラフデータに基づく後続の演算を実行し、K-merグラフのインスタンスを生成することができる。例えば、K-merグラフの生成を継続する場合、制御マシン140は、プルーニングユニット136又はグラフ出力ユニット137のいずれかを起動及び構成することができる。
【0110】
サイクルユニット135は、ハードウェア加速グラフ生成ユニット130によって、生成されているK-merグラフのインスタンスにおけるサイクルを検出するために使用され得るが、サイクルユニット135は、逆伝播ユニット134と同様に選択的に起動及び構成され得る。これは、ある種のK-merグラフがサイクルを含み得ることが予測できるからである。しかしながら、特定のタイプのK-merグラフについては、サイクルを有するグラフを有しないことが有益であり得る。したがって、ハードウェア加速グラフ生成ユニット130は、例えば、制御マシン140が、サイクルユニット135をグラフの特定のインスタンスに対して実行すべきか否かを示す入力を受信するように構成することができる。
【0111】
プルーニングユニット
【0112】
ハードウェア加速グラフ生成ユニット130は、プルーニングユニット135を含むことができる。プルーニングユニット136は、逆伝播ユニット134及びサイクルユニット135と同様に、制御マシン160によって選択的に起動及び構成され得る。起動及び構成された場合、プルーニングユニット135は、ハードウェア加速グラフ生成ユニット130によってこの時点までに生成されたK-merグラフのインスタンスについて生グラフデータ内の各グラフエッジの重みを評価することができる。いくつかの実装形態では、プルーニングユニット136が、グラフエッジの重み値が所定の閾値を満たさないと判定した場合、プルーニングユニット136は、グラフエッジ、及びその特定されたグラフエッジの後に発生する任意のK-merノードを削除することができる。あるいは、プルーニングユニット136がグラフエッジの重み値が所定の閾値を満たすと判定した場合、プルーニングユニット136はそのグラフエッジをそのまま残す。
【0113】
他の実装形態では、プルーニングユニット136は、線形チェーンを識別することができ、線形チェーンは、開始ノードと終了ノードとの間のすべての内部ノードが正確に1つのインエッジ及び1つのアウトエッジを有するグラフを通る最大経路である。そのような実装形態では、プルーニングユニット136は、線形チェーンのすべての内部エッジがプルーニング閾値を満たさないかどうかを判定することができる。そのようなシナリオが発生した場合、プルーニングユニット136は、チェーンの開始ノード及び/又は終了ノードを除いて、すべての内部エッジ及びすべての内部ノードを含む線形チェーン全体を削除することができ、それらが非内部エッジを有する場合、プルーニングユニット136は保持することができる。
【0114】
グラフ出力ユニット
【0115】
ハードウェア加速グラフ生成ユニット130は、グラフ出力ユニット137を含むことができる。ハードウェア加速グラフ生成ユニット130は、K-merグラフのインスタンスがグラフ記述データ及びキャッシュデータによって記述されるときに、グラフ出力ユニット137を使用して、K-merグラフのインスタンスの最終バージョン170を生成することができる。例えば、グラフ出力ユニット137は、例えば、K-merグラフデータを記憶するハッシュテーブルキャッシュ内の位置へのポインタを含むグラフ記述データを用いて、ハッシュテーブルキャッシュ150からK-merグラフを表すデータを取得することができる。そして、グラフ出力ユニット137は、K-merグラフ170の最終バージョンを記述したハッシュテーブルキャッシュ150から得られたデータを、バリアントコールユニット180に提供することができる。バリアントコールユニット180は、K-merグラフ170の最終バージョンに基づいてバリアントコール分析を実行して、バリアント190のセットを生成することができる。バリアント190のセットは、1つ以上の候補バリアントを含み得る。バリアントは、生物のゲノムデータの変化である。候補バリアントは、K-merグラフ170の処理に基づいてバリアントコールユニットによって推論される、バリアントコールユニットによる判定のことである。いくつかの実装形態では、候補バリアントは、バリアント判定において閾値レベルの誤差を有する場合がある。
【0116】
バリアントコールユニット180は、K-merグラフ180を処理することにより、候補バリアントを識別することができる。いくつかの実装形態では、例えば、バリアントコールユニット180は、リードのパイルアップ中の塩基呼び出し又はヌクレオチド1つ以上のリードと、参照ゲノムの特定の位置における参照ゲノムのヌクレオチドとが異なるときに候補バリアントを識別することができる。バリアント190のセットを記述するデータは、様々な方法で生成又は決定することができる。例えば、いくつかの実装形態では、バリアントコールの演算は、例えば、その各々の全内容が参照によりその全体として本明細書に組み込まれる、米国特許出願公開第2016/0180019号、同第2016/0306922号、及び同第2019/0259468号により詳細に記載されているように実行することができる。バリアント190のセットを記述するデータは、出力のために様々な方法で提供することができる。例えば、バリアント190のセットを記述するデータは、核酸シーケンサー110のディスプレイ上に表示することができ、異なるコンピュータのディスプレイ上に表示することができ、コンピューティングデバイスの1つ以上のスピーカを介して聴覚的に出力することができ、プリンタを介して出力することができ、又はそれらの任意の組み合わせが可能である。
【0117】
消去ユニット
【0118】
消去ユニット138は、ハードウェア加速グラフ生成ユニット130によるK-merグラフのインスタンスの完了及び出力時にメモリ再生タスクを実行するために使用され得る。例えば、消去ユニットは、ハードウェア加速グラフ生成ユニット130によって完成されて出力されるK-merグラフの特定のインスタンスに関連するすべての生グラフデータを削除することができる。これに代えて、あるいはこれに加えて、消去ユニット138は、制御マシンによって記憶されているグラフィックユニット130の特定のインスタンスに関連するすべてのデータを削除したり、DRAM160に記憶されているグラフィックユニット130の特定のインスタンスに関連するすべてのデータを削除したりすることなどができる。これにより、消去ユニット138は、ハッシュテーブルキャッシュから、K-merグラフのグラフノードを表すデータ及びグラフエッジを表すデータを選択的に削除することができる。このような削除は、キャッシュ、制御マシン、又はDRAMの内容の一部のみを削除する必要があるため、選択的である。更に、グラフがハッシュテーブルとして記憶される場合、ハッシュテーブルはまばらに入力されることが多く、消去ユニット138がハッシュテーブル全体を消去するよりも占有されたハッシュテーブルエントリのみを選択的に消去する方が速く、これにより性能が向上する。
【0119】
ただし、いくつかの実装形態では、グラフに関連付けられた非ハッシュテーブルデータは、項目ごとに消去する必要はない。そのような実装形態では、消去ユニット138は、グラフ記述データにおいてリスト長をゼロに設定したり、コンテンツを消去することなく、割り当てられたメモリ空間を再使用のために単に解放したりすることができる。
【0120】
図2は、K-merグラフのハードウェア加速生成のためのプロセス200の一例のフローチャートである。一般に、プロセス200は、第1の核酸配列セットを取得することであって、第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)参照配列の一部を含む、第1の核酸配列セットを取得すること(210)と、取得された第1の核酸配列セットを使用し、プログラマブルロジックデバイスの複数の非パイプラインハードウェアロジックユニットを使用してK-merグラフを生成することであって、各ハードウェアロジックユニットが1つ以上の演算を実行するように構成された異なるハードウェアロジック回路を備え、K-merグラフの各ノードがK-merを表し、グラフの各エッジがK-merのペアの間のリンクを表し、K-merグラフの各エッジの各重みがK-merのペアによって表されるK-mer配列の出現回数を表す、K-merグラフを生成すること(220)と、K-merグラフの生成中に、制御マシンを用いて、K-merグラフの少なくとも一部を生成するために使用される各ハードウェアロジックユニットによる1つ以上の演算の実行後にK-merグラフのグラフ記述データを定期的に更新することであって、グラフ記述データが(i)K-merグラフ識別子及び(ii)K-merグラフ状態情報を表し、制御マシンが、K-merグラフの生成中に各それぞれのハードウェアロジックユニットの1つ以上の演算の実行をトリガすることによって、非パイプラインハードウェアロジックユニットを使用して演算のワークフローを作成する、グラフ記述データを定期的に更新すること(230)と、K-merグラフをバリアントコールモジュールに提供することであって、バリアントコールユニットがK-merグラフを処理して、複数のリードのうちの1つ以上と参照配列との間の1つ以上の候補バリアントを決定する、K-merグラフをバリアントコールモジュールに提供することと、を含み得る。
【0121】
図3は、K-merグラフのハードウェア加速生成のためのプロセス300の別の例のフローチャートである。一般に、プロセス300は、第1の核酸配列セットを取得することであって、第1の核酸配列セットが、(i)参照配列の活性領域に対応する複数のリード及び(ii)参照配列の一部を含む、第1の核酸配列セットを取得すること(310)と、第1の核酸配列セットの各特定の核酸配列について、ハッシュテーブルキャッシュに記憶するために、かつ第1のハードウェアロジックユニットによって、特定の核酸配列の各K-merについてのグラフノードを表すデータを生成すること(320)と、制御マシンによって、第1のハードウェアロジックユニットが特定の核酸配列の各K-merについてのグラフノードの生成を完了したことを検出すること(330)、制御マシンによって、生成されたグラフノードについてグラフエッジ生成を実行するように第2のハードウェアロジックユニットを構成すること(340)と、生成されたグラフノードの1つ以上のペアについて、第2のハードウェアロジックユニットによって、かつグラフハッシュテーブルに記憶するために、第1のハードウェアロジックユニットによって生成された、生成されたグラフノードの1つ以上のペアの相互間のグラフエッジを表すデータを生成することであって、ハッシュテーブルキャッシュに記憶された各K-merについてのグラフノードを表すデータ及びハッシュテーブルキャッシュに記憶されたグラフエッジを表すデータが、第1の核酸配列セットのK-merグラフを表す、グラフエッジを表すデータを生成すること(350)と、を含み得る。
【0122】
図4は、K-merグラフ400の一例である。この例において、K-merグラフ400は、参照ゲノム410及びリード420の少なくとも一部に基づいて生成される。この例では、K-merグラフ400は、De Bruijnグラフである。
【0123】
K-merグラフ400は、複数のノードと、ノードのペアの間の1つ以上のエッジとを用いて生成される。各ノードは長さkのK-merを表し、この例ではk=4である。各エッジは、エッジによってリンクされたK-merのk-1のヌクレオチドの重複があるという指摘を提供する。K-merグラフ400において、経路430は、参照配列410の部分の各K-merを表す複数のノード及びエッジを含む。次いで、経路440は、参照ゲノム410の部分とは異なるリード420の部分を表す複数のノード及びエッジを含む。
【0124】
図5は、ハードウェア加速K-merグラフに使用することができるシステム500の構成要素の一例のブロック図である。
【0125】
コンピューティングデバイス500は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことが意図されている。コンピューティングデバイス550は、パーソナルデジタルアシスタント、携帯電話(cellular telephone)、スマートフォン、及び他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すことが意図されている。これに加えて、コンピューティングデバイス500又は550は、ユニバーサルシリアルバス(Universal Serial Bus、USB)フラッシュドライブを含むことができる。USBフラッシュドライブは、オペレーティングシステム及び他のアプリケーションを記憶することができる。USBフラッシュドライブは、別のコンピューティングデバイスのUSBポートに挿入できる無線送信機又はUSBコネクタなどの入力/出力構成要素を含むことができる。本明細書に示される構成要素、この構成要素の接続及び関係、並びにこの構成要素の機能は、単なる例であることを意味し、本文書に記載及び/又は特許請求される発明の実装形態を限定することを意味するものではない。
【0126】
コンピューティングデバイス500は、プロセッサ502、メモリ504、記憶デバイス506、メモリ504及び高速拡張ポート510に接続する高速インターフェース508、並びに低速バス514及び記憶デバイス506に接続する低速インターフェース512を含む。構成要素502、504、506、508、510、及び512の各々は、様々なバスを使用して相互接続されており、共通のマザーボード上に、又は適宜他の手法で実装できる。プロセッサ502は、メモリ504又は記憶デバイス508上に記憶された命令を含むコンピューティングデバイス500内での実行のための命令を処理して、高速インターフェース506に結合されたディスプレイ516などの外部入力/出力デバイス上のGUIに関するグラフィカル情報を表示することができる。他の実装形態では、複数のプロセッサ及び/又は複数のバスを、適宜、複数のメモリ及び複数種類のメモリと共に使用できる。また、複数のコンピューティングデバイス500を接続して、各デバイスが、例えば、サーババンク、ブレードサーバ群、又はマルチプロセッサシステムとして、必要な演算の部分を提供するようにすることができる。
【0127】
メモリ504は、コンピューティングデバイス500内に情報を記憶する。一実装形態では、メモリ504は、揮発性メモリユニット又は複数の揮発性メモリユニットである。別の実装形態では、メモリ504は、不揮発性メモリユニット又は複数の不揮発性メモリユニットである。メモリ504を、磁気ディスク又は光ディスクなどの別の形態のコンピュータ可読媒体とすることもできる。
【0128】
記憶デバイス506は、コンピューティングデバイス500のための大規模ストレージを提供することができる。一実装形態では、記憶デバイス506は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、若しくはテープデバイス、フラッシュメモリ若しくは他の類似のソリッドステートメモリデバイス、又はストレージエリアネットワーク若しくは他の構成内のデバイスを含むデバイスのアレイなどのコンピュータ可読媒体であり得るか、又はそれを内包することができる。コンピュータプログラム製品は、情報キャリア内に、有形に実施できる。コンピュータプログラム製品はまた、実行されると、上述したものなどの1つ以上の方法を実行する命令を内包することができる。情報キャリアは、メモリ504、記憶デバイス506、又はプロセッサ502上のメモリなどのコンピュータ可読媒体又はマシン可読媒体である。
【0129】
高速コントローラ508は、コンピューティングデバイス500の帯域幅集約演算を管理する一方、低速コントローラ512は、低帯域幅集約演算を管理する。このような機能の割り当ては、一実施例に過ぎない。一実装形態では、高速コントローラ508は、例えば、グラフィックプロセッサ又はアクセラレータを介してメモリ504、ディスプレイ516に、及び様々な拡張カード(図示せず)を受け入れることができる高速拡張ポート510に結合されている。この実装形態では、低速コントローラ512は、記憶デバイス506及び低速拡張ポート514に結合されている。様々な通信ポート、例えば、USB、Bluetooth、Ethernet、無線Ethernetを含むことができる低速拡張ポートは、例えば、ネットワークアダプタを介して、キーボード、ポインティングデバイス、マイクロフォン/スピーカペア、スキャナ、又はスイッチ若しくはルータなどのネットワーキングデバイスなどの1つ以上の入力/出力デバイスに結合できる。コンピューティングデバイス500は、図に示されるように、いくつかの異なる形態で実装できる。例えば、コンピューティングデバイスは標準サーバ520として実装することができ、又はかかるサーバ群において複数回実装することができる。コンピューティングデバイスはまた、ラックサーバシステム524の一部として実装できる。加えて、コンピューティングデバイスは、ラップトップコンピュータ522などのパーソナルコンピュータに実装できる。これに代えて、コンピューティングデバイス500からの構成要素を、デバイス550などのモバイルデバイス(図示せず)内の他の構成要素と組み合わせることができる。このようなデバイスの各々は、コンピューティングデバイス500、550のうちの1つ以上を内包することができ、システム全体を、互いに通信する複数のコンピューティングデバイス500、550から構成することができる。
【0130】
コンピューティングデバイス500は、図に示されるように、いくつかの異なる形態で実装できる。例えば、コンピューティングデバイスは標準サーバ520として実装することができ、又はかかるサーバ群において複数回実装することができる。コンピューティングデバイスはまた、ラックサーバシステム524の一部として実装できる。加えて、コンピューティングデバイスは、ラップトップコンピュータ522などのパーソナルコンピュータに実装できる。これに代えて、コンピューティングデバイス500からの構成要素を、デバイス550などのモバイルデバイス(図示せず)内の他の構成要素と組み合わせることができる。このようなデバイスの各々は、コンピューティングデバイス500、550のうちの1つ以上を内包することができ、システム全体を、互いに通信する複数のコンピューティングデバイス500、550から構成することができる。
【0131】
コンピューティングデバイス550は、構成要素の中でもとりわけ、プロセッサ552、メモリ564、並びにディスプレイ554、通信インターフェース566、及び送受信機568などの入出力デバイスを含む。デバイス550はまた、追加のストレージを提供するために、マイクロドライブ又は他のデバイスなどの記憶デバイスを備えることができる。構成要素550、552、564、554、566、及び568の各々は、様々なバスを使用して相互接続されており、構成要素はのうちのいくつかは、共通のマザーボード上に、又は適宜他の手法で実装できる。
【0132】
プロセッサ552は、メモリ564に記憶された命令を含む、コンピューティングデバイス550内の命令を実行することができる。プロセッサは、別個及び複数のアナログ及びデジタルプロセッサを含むチップのチップセットとして実装できる。これに加えて、プロセッサは、いくつかのアーキテクチャのうちのいずれかを使用して実装できる。例えば、プロセッサ510を、CISC(Complex Instruction Set Computers、複合命令セットコンピュータ)プロセッサ、RISC(Reduced Instruction Set Computer、縮小命令セットコンピュータ)プロセッサ、又はMISC(Minimal Instruction Set Computer、最小命令セットコンピュータ)プロセッサとすることができる。プロセッサは、例えば、ユーザインターフェースの制御、デバイス550によって実行されるアプリケーション、及びデバイス550による無線通信など、デバイス550の他の構成要素の協調を提供することができる。
【0133】
プロセッサ552は、制御インターフェース558とディスプレイ554に結合されたディスプレイインターフェース556とを介してユーザと通信することができる。ディスプレイ554を、例えば、TFT(Thin-Film-Transistor Liquid Crystal Display、薄膜トランジスタ液晶ディスプレイ)ディスプレイ、OLED(Organic Light Emitting Diode、有機発光ダイオード)ディスプレイ、又は他の適切なディスプレイ技術とすることができる。ディスプレイインターフェース556は、ディスプレイ554を駆動してグラフィカル情報及び他の情報をユーザに提示するための適切な回路を備えることができる。制御インターフェース558は、ユーザからコマンドを受信し、このコマンドをプロセッサ552へのサブミット用に変換することができる。加えて、デバイス550と他のデバイスとの近接領域通信を可能にするために、プロセッサ552と通信する外部インターフェース562を提供することができる。外部インターフェース562は、例えば、いくつかの実装形態では有線通信を、又は他の実装形態では無線通信を提供することができ、複数のインターフェースを使用することもできる。
【0134】
メモリ564は、コンピューティングデバイス550内に情報を記憶する。メモリ564は、コンピュータ可読媒体若しくは複数のコンピュータ可読媒体、揮発性メモリユニット若しくは複数の揮発性メモリユニット、又は不揮発性メモリユニット若しくは複数の不揮発性メモリユニットのうちの1つ以上として実装することができる。また、例えばSIMM(Single In Line Memory Module、シングルインラインメモリモジュール)カードインターフェースを含むことができる、拡張インターフェース572を介して、デバイス550に拡張メモリ574を提供及び接続することができる。このような拡張メモリ574は、デバイス550のための増設記憶空間を提供することができるか、又は、デバイス550のためのアプリケーション若しくは他の情報を記憶することもできる。具体的には、拡張メモリ574は、上述したプロセスを実行又は補完する命令を含むことができ、セキュアな情報を含むこともできる。したがって、例えば、拡張メモリ574は、デバイス550のためのセキュリティモジュールとして提供でき、デバイス550のセキュアな使用を可能にする命令を用いてプログラムできる。加えて、セキュアなアプリケーションは、SIMMカードを介して、ハッキング不能な手法でSIMMカード上に識別情報を配置するなど、追加情報と共に提供できる。
【0135】
メモリは、例えば、後述するように、フラッシュメモリ及び/又はNVRAMメモリを含むことができる。一実装形態では、コンピュータプログラム製品は、情報キャリア内で有形に実施される。コンピュータプログラム製品は、実行されると、上述したものなどの1つ以上の方法を実行する命令を内包する。情報キャリアは、例えば送受信機568又は外部インターフェース562を介して受信できるメモリ564、拡張メモリ574又はプロセッサ552上のメモリなどの、コンピュータ可読媒体又はマシン可読媒体である。
【0136】
デバイス550は、必要に応じてデジタル信号処理回路を含むことができる通信インターフェース566を介して無線通信することができる。通信インターフェース566は、とりわけGSM音声通話、SMS、EMS、又はMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、又はGPRSなどの様々なモード又はプロトコル下での通信を提供することができる。このような通信は、例えば、高周波送受信機568を介して行われることが可能である。加えて、Bluetooth、Wi-Fi、又は他のこのような送受信機(図示せず)を使用するなど、短距離通信が行われることが可能である。加えて、GPS(Global Positioning System、全地球測位システム)受信機モジュール570が、デバイス550に追加のナビゲーション関連及び位置関連の無線データを提供することができ、デバイス550上で作動するアプリケーションによって適宜使用できる。
【0137】
デバイス550はまた、オーディオコーデック560を使用して可聴的に通信することができ、オーディオコーデック560は、ユーザから発話情報を受信し、この発話情報を使用可能なデジタル情報に変換することができる。オーディオコーデック560は同じく、例えばデバイス550のハンドセット内の、スピーカを介してなど、ユーザのための可聴音を生成することができる。このような音は、音声電話通話からの音を含むことができ、録音された音、例えば、音声メッセージ、音楽ファイルなどを含むことができ、また、デバイス550上で動作するアプリケーションによって生成される音を含むこともできる。
【0138】
コンピューティングデバイス550は、図に示されるように、いくつかの異なる形態で実装できる。例えば、コンピューティングデバイスは、携帯電話580として実装できる。また、コンピューティングデバイスを、スマートフォン582、パーソナルデジタルアシスタント、又は他の同様のモバイルデバイスの一部として実装することもできる。
【0139】
本明細書に記載されるシステム及び方法の様々な実装形態は、デジタル電子回路、集積回路、専用に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこのような実装形態の組み合わせで実現できる。これらの様々な実装形態は、専用又は汎用であり、記憶システム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ及び命令を受信し、かつこれらにデータ及び命令を送信するように結合された少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能及び/又は解釈可能である1つ以上のコンピュータプログラムでの実装形態を含むことができる。
【0140】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られている)は、プログラム可能なプロセッサのためのマシン命令を含み、高水準手続き型及び/又はオブジェクト指向プログラミング言語で、及び/又はアセンブリ/マシン言語で実装できる。本明細書で使用されるとき、用語「マシン可読媒体」「コンピュータ可読媒体」は、任意のコンピュータプログラム製品、装置、及び/又はデバイス、例えば、磁気ディスク、光ディスク、メモリ、マシン命令及び/又はデータをプログラム可能なプロセッサに提供するために使用されるプログラマブルロジックデバイス(Programmable Logic Device、PLD)を指し、マシン可読信号としてマシン命令を受信するマシン可読媒体を含む。用語「マシン可読信号」は、プログラム可能なプロセッサにマシン命令及び/又はデータを提供するために使用される任意の信号を指す。
【0141】
ユーザとのインタラクションを提供するために、本明細書に記載されるシステム及び技術は、ユーザに情報を表示するためのディスプレイデバイス、例えば、CRT(cathode ray tube、陰極線管)又はLCD(liquid crystal display、液晶ディスプレイ)モニタ、並びにユーザがコンピュータに入力を提供することができるキーボード及びポインティング装置、例えばマウス又はトラックボールを有するコンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとのインタラクションを提供することもでき、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックとすることができ、ユーザからの入力は、音響入力、発話入力、又は触覚入力を含む任意の形態で受信することができる。
【0142】
本明細書に記載されるシステム及び技術は、例えばデータサーバとしての、バックエンド構成要素を含むコンピューティングシステムで、又はミドルウェアコンポーネント、例えば、アプリケーションサーバを含むコンピューティングシステムで、又はフロントエンド構成要素、例えばユーザが介して本明細書に記載されるシステム及び技術の実装形態とインタラクトすることができるグラフィカルユーザインターフェース又はウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステムで、又はこのようなバックエンド、ミドルウェア、又はフロントエンドの構成要素の任意の組み合わせで、実装できる。システムの構成要素は、デジタルデータ通信、例えば通信ネットワークの任意の形態又は媒体によって相互接続できる。通信ネットワークの例として、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、及びインターネットが挙げられる。
【0143】
コンピューティングシステムは、クライアント及びサーバを含むことができる。クライアント及びサーバは一般に、互いにリモートであり、通常、通信ネットワークを介してインタラクトする。クライアントとサーバとの関係は、それぞれのコンピュータ上で作動し、かつ互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0144】
他の実施形態
【0145】
いくつかの実施形態が記載された。それにもかかわらず、本発明の趣旨及び範囲から逸脱することなく、様々な変更を行うことができることが理解されるであろう。加えて、図に描示される論理フローは、所望の結果を達成するために、示される特定の順序、又は連続的な順序を必要としない。加えて、記載されたフローから他の工程を提供することができ、又は工程を排除することができ、記載されたシステムに他の構成要素を追加するか、又はそこから除去することができる。したがって、他の実施形態は、以下の特許請求の範囲内にある。
【符号の説明】
【0146】
100 システム
110 核酸シーケンサー
120 参照配列データベース
130 ハードウェア加速グラフ生成ユニット
131、132、133、134、135、136、137、138 ハードウェアロジックユニット
140 制御マシン
150 グラフハッシュテーブルキャッシュ
160 DRAM
170 K-merグラフ
180 バリアントコールユニット
図1
図2
図3
図4
図5
【国際調査報告】