DeepVariant の実行

このページでは、Google Cloud Platform 上で DeepVariant を実行する方法を説明します。DeepVariant は、ディープ ニューラル ネットワークを使用して次世代 DNA 配列データから遺伝的バリアントをコールする解析用パイプラインです。

目標

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

  • GCP で DeepVariant を実行する
  • 異なる DeepVariant ユースケース用の構成ファイルを作成する
  • さまざまな DeepVariant パイプライン構成のコストとターンアラウンド タイムを見積もる

料金

このチュートリアルでは、以下を含む GCP の課金対象となるコンポーネントを使用しています。

  • Compute Engine

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。 Cloud Platform を初めて使用する方は、無料トライアルをご利用いただけます。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  3. プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

  4. 必要な Cloud Genomics および Compute Engine APIを有効にします。

    APIを有効にする

  5. Cloud SDK をインストールして初期化します。
  6. gcloud コンポーネントを更新し、インストールします。
    gcloud components update &&
    gcloud components install alpha

DeepVariant を実行する

GCP で DeepVariant を実行するには、Cloud Genomics Pipelines API を呼び出すスクリプトを実行する必要があります。

  1. 以下のテキストをコピーして、script.sh という名前のファイルに保存します。変数は、実際の GCP プロジェクトの該当するリソースに置き換えてください。OUTPUT_BUCKET 変数は、パイプラインの出力ファイルと中間ファイルを保持する Cloud Storage バケットを指定します。STAGING_FOLDER_NAME 変数は、バケット内のディレクトリの一意の名前です。パイプラインの実行ごとに変数を設定できます。

    #!/bin/bash
    set -euo pipefail
    # Set common settings.
    PROJECT_ID=PROJECT_ID
    OUTPUT_BUCKET=gs://OUTPUT_BUCKET
    STAGING_FOLDER_NAME=STAGING_FOLDER_NAME
    OUTPUT_FILE_NAME=output.vcf
    # Model for calling whole genome sequencing data.
    MODEL=gs://deepvariant/models/DeepVariant/0.7.2/DeepVariant-inception_v3-0.7.2+data-wgs_standard
    IMAGE_VERSION=0.7.2
    DOCKER_IMAGE=gcr.io/deepvariant-docker/deepvariant:"${IMAGE_VERSION}"
    COMMAND="/opt/deepvariant_runner/bin/gcp_deepvariant_runner \
      --project ${PROJECT_ID} \
      --zones us-west1-* \
      --docker_image ${DOCKER_IMAGE} \
      --outfile ${OUTPUT_BUCKET}/${OUTPUT_FILE_NAME} \
      --staging ${OUTPUT_BUCKET}/${STAGING_FOLDER_NAME} \
      --model ${MODEL} \
      --bam gs://deepvariant/quickstart-testdata/NA12878_S1.chr20.10_10p1mb.bam \
      --ref gs://deepvariant/quickstart-testdata/ucsc.hg19.chr20.unittest.fasta.gz \
      --regions chr20:10,000,000-10,010,000 \
      --gcsfuse"
    # Run the pipeline.
    gcloud alpha genomics pipelines run \
        --project "${PROJECT_ID}" \
        --service-account-scopes="https://www.googleapis.com/auth/cloud-platform" \
        --logging "${OUTPUT_BUCKET}/${STAGING_FOLDER_NAME}/runner_logs_$(date +%Y%m%d_%H%M%S).log" \
        --regions us-west1 \
        --docker-image gcr.io/cloud-genomics-pipelines/gcp-deepvariant-runner:"${IMAGE_VERSION}" \
        --command-line "${COMMAND}"
    
  2. 次のコマンドを実行して、script.sh を実行可能にします。

    chmod +x script.sh
    
  3. script.sh を実行します。

    ./script.sh
    
  4. このコマンドからは、Running [operations/OPERATION_ID]. という形式でオペレーション ID が返されます。 このオペレーション ID を使用してパイプラインのステータスを追跡するには、次のコマンドを実行します。

    gcloud alpha genomics operations wait OPERATION_ID
    

    オペレーションに関する詳細は、--logging フラグで指定されるパスで見つけることができます。このチュートリアルでは、パスは "${OUTPUT_BUCKET}"/runner_logs です。

  5. パイプラインが終了すると、VCF ファイル output.vcf が Cloud Storage バケットに出力されます。次のコマンドを実行してバケット内のファイルを一覧表示し、output.vcf ファイルがリストにあることを確認します。

    gsutil ls gs://BUCKET/
    

パイプラインの構成

GCP では、次のようなさまざまな設定の構成で DeepVariant を実行できます。

ここでは一般的な構成をいくつか示します。構成を試した後、詳細設定を行う方法についての追加オプションをご覧ください。

費用最適化の構成

次の構成は、DeepVariant を少ない費用で実行するように最適化されています。ランタイムと費用は、プリエンプトされるインスタンスの数によって異なりますが、30 倍全ゲノムサンプルでは、パイプラインの実行は通常 1〜2 時間以内で完了し、費用は $3.00〜$4.00 以内になると見積もることができます。

この構成では、プリエンプティブ VM に接続された CPU が使用されます。プリエンプティブ VM は通常の VM よりも費用を最大で 80% 低く抑えることができます。ただし、このインスタンスは、他のタスクのリソースへのアクセスが必要な場合に、Compute Engine によって終了(プリエンプト)される可能性があります。さらに、プリエンプティブ VM はサービスレベル契約(SLA)の対象外となるため、ターンアラウンド タイムの保証が必要な場合は、--preemptible フラグを使用しないでください。

プリエンプティブ VM を効果的に使用する方法については、Compute Engine のおすすめの方法をご覧ください。

DeepVariant のランナーには、プリエンプトされたジョブを自動的に再試行するロジックが組み込まれています。--max_preemptible_tries フラグを使用して、再試行の最大回数を指定することもできます。

この構成には次のような特長があります。

  • make_examples ステップに 32 台の 16 コア VM を使用する
  • call_variants ステップに 32 台の 32 コア VM を使用する

この構成を使用してパイプラインを実行するには、次の Compute Engine 割り当ての増加をリクエストする必要があります。

  • CPU: 1,025
  • Persistent Disk: 6.4 TB
  • 使用中の IP アドレス: 33
#!/bin/bash
set -euo pipefail
# Set common settings.
PROJECT_ID=PROJECT_ID
OUTPUT_BUCKET=gs://OUTPUT_BUCKET
STAGING_FOLDER_NAME=STAGING_FOLDER_NAME
OUTPUT_FILE_NAME=output.vcf
# Model for calling whole genome sequencing data.
MODEL=gs://deepvariant/models/DeepVariant/0.7.2/DeepVariant-inception_v3-0.7.2+data-wgs_standard
IMAGE_VERSION=0.7.2
DOCKER_IMAGE=gcr.io/deepvariant-docker/deepvariant:"${IMAGE_VERSION}"
COMMAND="/opt/deepvariant_runner/bin/gcp_deepvariant_runner \
  --project ${PROJECT_ID} \
  --zones us-west1-* \
  --docker_image ${DOCKER_IMAGE} \
  --outfile ${OUTPUT_BUCKET}/${OUTPUT_FILE_NAME} \
  --staging ${OUTPUT_BUCKET}/${STAGING_FOLDER_NAME} \
  --model ${MODEL} \
  --bam gs://deepvariant/performance-testdata/HG002_NIST_150bp_downsampled_30x.bam \
  --ref gs://deepvariant/performance-testdata/hs37d5.fa.gz \
  --shards 512 \
  --make_examples_workers 32 \
  --make_examples_cores_per_worker 16 \
  --make_examples_ram_per_worker_gb 60 \
  --make_examples_disk_per_worker_gb 200 \
  --call_variants_workers 32 \
  --call_variants_cores_per_worker 32 \
  --call_variants_ram_per_worker_gb 60 \
  --call_variants_disk_per_worker_gb 50 \
  --preemptible \
  --max_preemptible_tries 5 \
  --gcsfuse"
# Run the pipeline.
gcloud alpha genomics pipelines run \
    --project "${PROJECT_ID}" \
    --service-account-scopes="https://www.googleapis.com/auth/cloud-platform" \
    --logging "${OUTPUT_BUCKET}/${STAGING_FOLDER_NAME}/runner_logs_$(date +%Y%m%d_%H%M%S).log" \
    --regions us-west1 \
    --docker-image gcr.io/cloud-genomics-pipelines/gcp-deepvariant-runner:"${IMAGE_VERSION}" \
    --command-line "${COMMAND}"

exome リージョン構成の呼び出し

次の構成では、exome リージョンのみを呼び出します。この構成では、プリエンプティブ VM に接続された CPU が使用されます。プリエンプティブ VM は通常の VM よりも費用を最大で 80% 低く抑えることができます。ただし、このインスタンスは、他のタスクのリソースへのアクセスが必要な場合に、Compute Engine によって終了(プリエンプト)される可能性があります。さらに、プリエンプティブ VM はサービスレベル契約(SLA)の対象外となるため、ターンアラウンド タイムの保証が必要な場合は、--preemptible フラグを使用しないでください。

DeepVariant のランナーには、プリエンプトされたジョブを自動的に再試行するロジックが組み込まれています。--max_preemptible_tries フラグを使用して、再試行の最大回数を指定することもできます。

ランタイムと費用は、プリエンプトされるインスタンスの数によって異なりますが、パイプラインの実行は約 25 分かかり、費用は約 $0.20 になると見積もることができます。プリエンプティブ VM を効果的に使用する方法については、Compute Engine のおすすめの方法をご覧ください。

この構成には次のような特長があります。

  • make_examples ステップに 4 台の 16 コア VM を使用する
  • call_variants ステップに 1 台の 32 コア VM を使用する

    #!/bin/bash
    set -euo pipefail
    # Set common settings.
    PROJECT_ID=PROJECT_ID
    OUTPUT_BUCKET=gs://OUTPUT_BUCKET
    STAGING_FOLDER_NAME=STAGING_FOLDER_NAME
    OUTPUT_FILE_NAME=output.vcf
    # Model for calling exome sequencing data.
    MODEL=gs://deepvariant/models/DeepVariant/0.7.2/DeepVariant-inception_v3-0.7.2+data-wes_standard
    IMAGE_VERSION=0.7.2
    DOCKER_IMAGE=gcr.io/deepvariant-docker/deepvariant:"${IMAGE_VERSION}"
    COMMAND="/opt/deepvariant_runner/bin/gcp_deepvariant_runner \
      --project ${PROJECT_ID} \
      --zones us-west1-* \
      --docker_image ${DOCKER_IMAGE} \
      --outfile ${OUTPUT_BUCKET}/${OUTPUT_FILE_NAME} \
      --staging ${OUTPUT_BUCKET}/${STAGING_FOLDER_NAME} \
      --model ${MODEL} \
      --bam gs://deepvariant/exome-case-study-testdata/151002_7001448_0359_AC7F6GANXX_Sample_HG002-EEogPU_v02-KIT-Av5_AGATGTAC_L008.posiSrt.markDup.bam \
      --bai gs://deepvariant/exome-case-study-testdata/151002_7001448_0359_AC7F6GANXX_Sample_HG002-EEogPU_v02-KIT-Av5_AGATGTAC_L008.posiSrt.markDup.bai \
      --ref gs://deepvariant/exome-case-study-testdata/hs37d5.fa.gz \
      --regions gs://deepvariant/exome-case-study-testdata/refseq.coding_exons.b37.extended50.bed \
      --shards 64 \
      --make_examples_workers 4 \
      --make_examples_cores_per_worker 16 \
      --make_examples_ram_per_worker_gb 60 \
      --make_examples_disk_per_worker_gb 100 \
      --call_variants_workers 1 \
      --call_variants_cores_per_worker 32 \
      --call_variants_ram_per_worker_gb 60 \
      --call_variants_disk_per_worker_gb 50 \
      --preemptible \
      --max_preemptible_tries 5 \
      --gcsfuse"
    # Run the pipeline.
    gcloud alpha genomics pipelines run \
        --project "${PROJECT_ID}" \
        --service-account-scopes="https://www.googleapis.com/auth/cloud-platform" \
        --logging "${OUTPUT_BUCKET}/${STAGING_FOLDER_NAME}/runner_logs_$(date +%Y%m%d_%H%M%S).log" \
        --regions us-west1 \
        --docker-image gcr.io/cloud-genomics-pipelines/gcp-deepvariant-runner:"${IMAGE_VERSION}" \
        --command-line "${COMMAND}"
    

パイプラインを高速で実行する必要がある場合や、ターンアラウンド タイムを保証する必要がある場合は、構成を次のように変更できます。

  • --preemptible フラグを削除する。
  • make_examples ステップでワーカーの数を 2 倍にすることによって、シャードの数を 2 倍にして 256 にする。

    ...
    --make_examples_workers 8
    --make_examples_cores_per_worker 32
    ...
    

Genomic VCF(gVCF)構成

DeepVariant は gVCF を出力形式としてサポートします。gVCF 出力を生成するには、上記の構成のいずれかを使用し、--gvcf_outfile フラグを追加します。--gvcf_outfile フラグは gVCF ファイルの宛先パスを指定します。

上記のいずれかの構成を実行して gVCF データを出力すると、パイプラインの実行時間は約 2 時間増加します。さらに、postprocess_variants ステップにはサイズの大きなディスクが必要です。gVCF 出力を生成するときに最適な結果を得るには、./opt/deepvariant_runner/bin/gcp_deepvariant_runner オプションの下に --postprocess_variants_disk_gb 200 フラグを追加します。

また、--gvcf_gq_binsize を使用して、gVCF 遺伝子型の品質を量子化するために使用するビンサイズを制御することもできます。ビンサイズが大きくなると、gVCF レコードの数が減少しますが、品質の精度が低下します。

追加の構成オプション

上記の基本的な構成に加え、ユースケースに合わせて次の追加設定を指定できます。

次のフラグを指定する場合は、./opt/deepvariant_runner/bin/gcp_deepvariant_runner オプションの下に追加します。

構成オプション 説明 使用例
job_name_prefix ジョブ名に追加されるプレフィックス。これは課金目的などでパイプライン実行を区別するときに役立ちます。 --job_name_prefix gpu_ を指定すると、請求レポートにはパイプラインの 3 つのステージとして、gpu_make_examplesgpu_call_variants、および gpu_postprocess_variants が表示されます。
jobs_to_run パイプラインの一部のみを実行するために使用されます。これは、誤った入力パスを指定した場合など、なんらかの理由でパイプラインの一部が失敗した場合に役立ちます。このフラグを使用するときは、既存の中間結果を再利用するために、すべての設定(ステージング場所やシャードとワーカーの数など)が元の実行と同じでなければなりません。 call_variants ステップでパイプラインが失敗した場合は、--jobs_to_run call_variants postprocess_variants と指定してパイプラインを再実行すると、make_examples ステップがスキップされ、既存の結果が再利用されます。
  • bai
  • ref_fai
  • ref_gzi
BAM ファイルの場合、BAM ファイルと同じ場所に .bam.bai ファイルが存在している必要があります。BAM ファイルに参照インデックスと gzip インデックスがある場合、それぞれ .fai ファイルと .gzi ファイルも存在する必要があります。.gzi ファイルはリファレンスが圧縮されている場合にのみ必要です。 インデックス ファイルが RAW ファイルと同じ場所にない場合や、インデックス ファイルが共通の拡張子を持たない場合に使用できます。

クリーンアップ

このチュートリアルで使用したリソースについて GCP アカウントに課金されないようにする手順は次のとおりです。

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

プロジェクトの削除

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

プロジェクトを削除する手順は次のとおりです。

  1. GCP Console でプロジェクト ページに移動します。

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

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

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...