Sentieon® DNASeq® の実行

このページでは、Sentieon® DNASeq® を二次ゲノム分析用の Google Cloud パイプラインとして実行する方法について説明します。このパイプラインは、Genome Analysis Toolkit(GATK)のベスト プラクティス バージョン 3.7 の結果と一致します。

  • 配置
  • 並べ替え
  • 重複除去
  • ベース品質スコアの再キャリブレーション(BQSR)
  • バリアント コール

入力形式は次のとおりです。

  • fastq ファイル
  • 整列と並べ替え済みの BAM ファイル

目標

このチュートリアルを完了すると、以下のことが行えます。

  • Sentieon® DNASeq® を使用して Google Cloud 上でパイプラインを実行する
  • さまざまな Sentieon® DNASeq® ユースケース用の構成ファイルを作成する

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

  • Compute Engine
  • Cloud Storage

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

  1. Python 2.7 以上をインストールします。pip のシステムへのインストールなど、Python 開発環境の設定について詳しくは、Python 開発環境のセットアップ ガイドをご覧ください。
  2. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  3. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  4. Google Cloud プロジェクトで課金が有効になっていることを確認します

  5. Cloud Life Sciences, Compute Engine, and Cloud Storage API を有効にします。

    API を有効にする

  6. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  7. Google Cloud プロジェクトで課金が有効になっていることを確認します

  8. Cloud Life Sciences, Compute Engine, and Cloud Storage API を有効にします。

    API を有効にする

  9. Google Cloud CLI をインストールします。
  10. gcloud CLI を初期化するには:

    gcloud init
  11. gcloud コンポーネントを更新してインストールします。
    gcloud components update
    gcloud components install beta
  12. git をインストールして、必要なファイルをダウンロードします。

    git のダウンロード

  13. デフォルトで Compute Engine にはリソースの割り当てがあり、不注意による使用を防ぎます。割り当てを増やすことで、より多くの仮想マシンを同時に起動し、スループットを向上させ、ターンアラウンド タイムを短縮できます。

    このチュートリアルでベストな結果を得るには、プロジェクトのデフォルトより多くの追加の割り当てをリクエストする必要があります。割り当ての増加に関する推奨事項は、チュートリアルを実行するために必要な最小限の割り当てとともに、次のリストに記載されています。us-central1 リージョンで割り当てリクエストを作成します。

    • CPUs: 64
    • Persistent Disk Standard(GB): 375

    他の割り当てリクエスト フィールドは空のままにして、現在の割り当てを維持してもかまいません。

Sentieon® 評価ライセンス

このパイプラインを使用すると、Google Cloud で使用するソフトウェアの無料の 2 週間の評価ライセンスが自動的に付与されます。ライセンスを受け取るには、パイプラインの構成時にメールアドレスを EMAIL フィールドに入力します。このフィールドの設定については、入力形式についてをご覧ください。

評価ライセンスの有効期限が切れた後に引き続き Sentieon® を使用するには、support@sentieon.com にお問い合わせください。

ローカル環境を設定し、前提条件をインストールする

  1. virtualenv がインストールされていない場合は、pip を使用し、次のコマンドを実行してインストールします。

    pip install virtualenv
    
  2. 次のコマンドを実行して、隔離された Python 環境を作成し、依存関係をインストールします。

    virtualenv env
    source env/bin/activate
    pip install --upgrade \
        pyyaml \
        google-api-python-client \
        google-auth \
        google-cloud-storage \
        google-auth-httplib2
    

パイプライン スクリプトをダウンロードする

次のコマンドを実行して、サンプル ファイルをダウンロードし、現在のディレクトリを設定します。

git clone https://github.com/sentieon/sentieon-google-genomics.git
cd sentieon-google-genomics

入力形式について

パイプラインは、JSON ファイルで指定されたパラメータを入力として使用します。

ダウンロードしたリポジトリには、次の内容が含まれる examples/example.json ファイルがあります。

{
  "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz",
  "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz",
  "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
  "OUTPUT_BUCKET": "gs://BUCKET",
  "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
  "PROJECT_ID": "PROJECT_ID"
  "REQUESTER_PROJECT": "PROJECT_ID",
  "EMAIL": "YOUR_EMAIL_HERE"
}

次の表で、ファイル内の JSON キーについて説明します。

JSON キー 説明
FQ1 入力 fastq ファイルの最初の読み込みペア。
FQ2 入力 fastq ファイルの 2 番目の読み込みペア。
BAM 入力 BAM ファイル(該当する場合)。
REF 参照ゲノム。設定すると、fastq / BAM インデックス ファイルが存在するものとみなされます。
OUTPUT_BUCKET パイプラインから出力されたデータを格納するためのバケットとディレクトリ。
ZONES ワーカーノードに使用する Google Cloud ゾーンのカンマ区切りのリスト。
PROJECT_ID Google Cloud プロジェクト ID。
REQUESTER_PROJECT リクエスト元による支払いバケットからのデータ転送時に請求するプロジェクト。
EMAIL メールアドレス。

パイプラインの実行

  1. sentieon-google-genomics ディレクトリで examples/example.json ファイルを編集して、BUCKETREQUESTER_PROJECTEMAILPROJECT_ID 変数を Google Cloud プロジェクトの該当するリソースに置き換えます。

    {
      "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz",
      "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz",
      "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
      "OUTPUT_BUCKET": "gs://BUCKET",
      "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
      "PROJECT_ID": "PROJECT_ID",
      "REQUESTER_PROJECT": "PROJECT_ID",
      "EMAIL": "EMAIL_ADDRESS"
    }
    
  2. 使用環境に PROJECT_ID 変数を設定します。

    export PROJECT_ID=PROJECT_ID
    

  3. 次のコマンドを実行して、構成ファイルの入力で指定された小規模なテスト データセットに対して DNASeq® パイプラインを実行します。デフォルトでは、このスクリプトは、パイプラインを開始する前に、入力ファイルが Cloud Storage バケットに存在するか確認します。

    python runner/sentieon_runner.py --requester_project $PROJECT_ID examples/example.json
    

複数のプリエンプティブル試行を指定した場合、そのインスタンスがプリエンプトされるたびにパイプラインが再起動します。パイプラインが終了すると、パイプラインが成功したか失敗したかを示すメッセージがコンソールに出力されます。

多くの場合、次の構成を使用するとターンアラウンド タイムとコストを最適化できます。この構成では、約 $1.25 のコストで 30 倍のヒトゲノムを実行します。所要時間は約 2 時間です。ヒト全エクソームでは、コストは約 $0.35 で所要時間は約 45 分です。これらの推定値はどちらも、パイプラインのインスタンスがプリエンプトされないという前提に基づいています。

{
  "FQ1": "gs://my-bucket/sample1_1.fastq.gz",
  "FQ2": "gs://my-bucket/sample1_2.fastq.gz",
  "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
  "OUTPUT_BUCKET": "gs://BUCKET",
  "BQSR_SITES": "gs://sentieon-test/pipeline_test/reference/Mills_and_1000G_gold_standard.indels.b37.vcf.gz,gs://sentieon-test/pipeline_test/reference/1000G_phase1.indels.b37.vcf.gz,gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz",
  "DBSNP": "gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz",
  "PREEMPTIBLE_TRIES": "2",
  "NONPREEMPTIBLE_TRY": true,
  "STREAM_INPUT": "True",
  "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
  "PROJECT_ID": "PROJECT_ID",
  "EMAIL": "EMAIL_ADDRESS"
}

その他のオプション

次の追加オプションを使用してパイプラインをカスタマイズできます。

入力ファイル オプション

パイプラインでは、次の構成に示すように、カンマ区切りの fastq ファイルが入力として複数サポートされます。

"FQ1": "gs://my-bucket/s1_prep1_1.fastq.gz,gs://my-bucket/s1_prep2_1.fastq.gz",
"FQ2": "gs://my-bucket/s1_prep1_2.fastq.gz,gs://my-bucket/s1_prep2_2.fastq.gz",

パイプラインでは、BAM JSON キーを使用して、カンマ区切りの BAM ファイルを入力として確定します。BAM ファイル内の読み取りは参照ゲノムに整列されません。代わりに、パイプラインのデータ重複排除ステージで開始されます。次のサンプルは、2 つの BAM ファイルを入力として使用する構成を示しています。

"BAM": "gs://my-bucket/s1_prep1.bam,gs://my-bucket/s1_prep2.bam"

全エクソーム データまたは大規模なデータセットの構成

推奨構成の設定は、ヒト全ゲノムサンプルを 30 倍の平均カバレッジに配列するように最適化されています。標準的な全ゲノム データセットと比べてファイルが大幅に小さい場合や大幅に大きい場合、インスタンスで利用可能なリソースを増減できます。大規模なデータセットで最適な結果を得るには、次の設定を使用します。

{
  "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz",
  "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz",
  "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
  "OUTPUT_BUCKET": "gs://BUCKET",
  "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
  "PROJECT_ID": "PROJECT_ID",
  "EMAIL": "EMAIL_ADDRESS",
  "DISK_SIZE": 600,
  "MACHINE_TYPE": "n1-highcpu-64",
  "CPU_PLATFORM": "Intel Broadwell"
}

次の表で、使用されている設定について説明します。

JSON キー 説明
DISK_SIZE ワーカーノードで使用可能な SSD 領域。
MACHINE_TYPE 使用する Compute Engine 仮想マシンの種類。デフォルトは n1-standard-1 です。
CPU_PLATFORM リクエストする CPU プラットフォーム。有効な Compute Engine CPU プラットフォーム名(「Intel Skylake」など)を指定する必要があります。

プリエンプティブル インスタンス

PREEMPTIBLE_TRIES JSON キーを設定することで、パイプラインでプリエンプティブル インスタンスを使用できます。

デフォルトでは、プリエンプティブ試行が失敗した場合、または NONPREEMPTIBLE_TRY JSON キーが 0 に設定されている場合、ランナーは標準インスタンスでパイプラインを実行しようとします。次の構成で示すように、NONPREEMPTIBLE_TRY キーを false に設定することで、この動作をオフにできます。

"PREEMPTIBLE_TRIES": 2,
"NONPREEMPTIBLE_TRY": false

次の表で、使用されている設定について説明します。

JSON キー 説明
PREEMPTIBLE_TRIES プリエンプティブル インスタンス使用時にパイプラインを試行する回数。
NONPREEMPTIBLE_TRY プリエンプティブル試行が失敗した後、標準インスタンスでパイプラインを実行するかどうかを指定します。

リードグループ

リードグループは、Sentieon® BWA を使用して fastq ファイルを参照ゲノムと同調する際に追加されます。複数のリードグループをカンマで区切って指定できます。リードグループの数は入力 fastq ファイルの数と一致させる必要があります。デフォルトのリードグループは @RG\\tID:read-group\\tSM:sample-name\\tPL:ILLUMINA です。リードグループを変更するには、次の構成に示すように READGROUP キーを JSON 入力ファイルで設定します。

"READGROUP": "@RG\\tID:my-rgid-1\\tSM:my-sm\\tPL:ILLUMINA,@RG\\tID:my-rgid-2\\tSM:my-sm\\tPL:ILLUMINA"

次の表で、使用されている設定について説明します。

JSON キー 説明
READGROUP サンプル メタデータを含むリードグループ。

リードグループの詳細については、リードグループをご覧ください。

Cloud Storage からのストリーミング入力

Cloud Storage から fastq ファイルをストリーミング入力できます。これにより、パイプラインの合計実行時間を短縮できます。Cloud Storage から fastq ファイルをストリーミング入力するには、次のように JSON キー STREAM_INPUTTrue に設定します。

"STREAM_INPUT": "True"

次の表で、使用されている設定について説明します。

JSON キー 説明
STREAM_INPUT Cloud Storage から fastq ファイルを直接ストリーミング入力するかどうかを指定します。

重複マーキング

デフォルトでは、パイプラインで BAM ファイルからの重複している読み取りは削除されます。この動作は、次の構成に示すように、DEDUP JSON キーを設定することで変更できます。

"DEDUP": "markdup"

次の表で、使用されている設定について説明します。

JSON キー 説明
DEDUP 重複マーキングの動作。
有効な値:
  • デフォルト構成では、重複としてマークされている読み取りは削除されます。
  • markdup を指定すると、重複はマークされますが、削除はされません。
  • nodup を指定すると、重複マーキングがスキップされます。

ベース品質スコアの再キャリブレーション(BQSR)および既知のサイト

BSQR には、遺伝的変異の既知のサイトが必要です。デフォルトの動作では、パイプラインのこの段階はスキップされます。ただし、既知のサイトに JSON キー BQSR_SITES を指定することで、BSQR を有効にできます。DBSNP ファイルが指定されている場合、このファイルを使用して、バリアントの呼び出し中に出力バリアントに注釈を付けることができます。

"BQSR_SITES": "gs://my-bucket/reference/Mills_and_1000G_gold_standard.indels.b37.vcf.gz,gs://my-bucket/reference/1000G_phase1.indels.b37.vcf.gz,gs://my-bucket/reference/dbsnp_138.b37.vcf.gz",
"DBSNP": "gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz"

次の表で、使用されている設定について説明します。

JSON キー 説明
BSQR_SITES BSQR を有効にし、指定されたカンマ区切りのファイルのリストを既知のサイトとして使用します。
DBSNP バリアントの呼び出し中に使用する dbSNP ファイル。

間隔

ターゲット配列または全エクソーム配列のような用途では、ゲノムの一部のみが対象となります。そのような場合、ターゲット間隔のファイルを指定することで、処理の高速化と低品質のオフターゲットのバリアント呼び出しの削減が可能になります。間隔を使用するには、JSON キー INTERVAL_FILE および INTERVAL を指定します。

"INTERVAL_FILE": "gs://my-bucket/capture-targets.bed",
"INTERVAL": "9:80331190-80646365"

次の表で、使用されている設定について説明します。

JSON キー 説明
INTERVAL_FILE 処理するゲノム間隔が含まれるファイル。
INTERVAL 処理するゲノム間隔が含まれる文字列。

出力オプション

デフォルトでは、パイプラインでは前処理された BAM、品質管理メトリック、バリアント呼び出しが生成されます。NO_BAM_OUTPUTNO_METRICSNO_HAPLOTYPER の各 JSON キーを使用することで、これらの出力を無効にできます。NO_HAPLOTYPER 引数が未指定であるか NULL の場合、JSON キー GVCF_OUTPUT を使用して VCF 形式ではなく gVCF 形式でバリアント呼び出しを生成できます。

"NO_BAM_OUTPUT": "true",
"NO_METRICS": "true",
"NO_HAPLOTYPER": "true",
"GVCF_OUTPUT": "true",

次の表で、使用されている設定について説明します。

JSON キー 説明
NO_BAM_OUTPUT 前処理された BAM ファイルを出力するかどうかを指定します。
NO_METRICS ファイル メトリックを出力するかどうかを指定します。
NO_HAPLOTYPER バリアント呼び出しを出力するかどうかを指定します。
GVCF_OUTPUT バリアント呼び出しを gVCF 形式で出力するかどうかを指定します。

Sentieon® DNASeq® のバージョン

Sentieon® DNASeq® ソフトウェア パッケージの最新バージョンは、次のように SENTIEON_VERSION JSON キーを指定すると、Cloud Life Sciences API と一緒に使用できます。

"SENTIEON_VERSION": "201808.08"

有効なバージョンは次のとおりです。

  • 201711.01
  • 201711.02
  • 201711.03
  • 201711.04
  • 201711.05
  • 201808
  • 201808.01
  • 201808.03
  • 201808.05
  • 201808.06
  • 201808.07
  • 201808.08

クリーンアップ

チュートリアルが終了したら、Google Cloud で作成したリソースをクリーンアップして、今後料金が発生しないようにします。以下のセクションでは、このようなリソースを削除または無効にする方法を説明します。

プロジェクトの削除

課金を停止する最も簡単な方法は、チュートリアル用に使用したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. Google Cloud コンソールでプロジェクト ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[プロジェクトの削除] をクリックします。 プロジェクト名の横にあるチェックボックスをオンにし、[プロジェクトの削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ

  • パイプラインに関する質問がある場合や問題が発生した場合は、support@sentieon.com までメールでご連絡ください。