DeepVariant を実行する

DeepVariant は、ディープ ニューラル ネットワークを使用して次世代 DNA 配列データから遺伝的バリアントをコールする解析用パイプラインです。

このチュートリアルでは、サンプルデータを使用して Google Cloud で DeepVariant を実行する方法について説明します。1 つの Compute Engine インスタンスで DeepVariant を実行します。

目標

このチュートリアルを完了すると、Google Cloud で DeepVariant を実行する方法が分かります。

費用

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

  • Compute Engine

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

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

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

  4. Compute Engine API を有効にします。

    API を有効にする

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

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

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

  7. Compute Engine API を有効にします。

    API を有効にする

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

    gcloud init
  10. ヒント: コマンド プロンプトが必要な場合は、Cloud Shellを使用できます。 Cloud Shell は、Google Cloud CLI がすでに含まれているコマンドライン環境であるため、インストールする必要はありません。

Compute Engine インスタンスを作成する

DeepVariant を実行するため、Google Cloud コンソールや gcloud CLI を使用して Compute Engine インスタンスを作成します。

Console

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. [インスタンスを作成] をクリックします。
  3. インスタンスの名前PROJECT_ID-deepvariant-run の形式で選択します。PROJECT_ID は Google Cloud プロジェクトの ID です。
  4. インスタンスの [リージョン] と [ゾーン] を選択します。特定の場所でインスタンスを実行する特別な理由がない限り、[リージョン] として us-central1 (Iowa)、[ゾーン] として us-central1-a を選択します。
  5. [マシンタイプ] メニューで、[n1-standard-64 (64 vCPU, 240 GB memory)] を選択します。
  6. [CPU プラットフォーム] メニューで、[Intel Skylake or later] を選択します。
  7. [ブートディスク] で [変更] をクリックし、ブートディスクの構成を始めます。
  8. [公開イメージ] タブで、[Ubuntu 20.04 LTS] を選択します。[ブートディスクの種類] メニューで、[標準の永続ディスク] を選択します。[サイズ(GB)] フィールドで、「300」と入力します。[選択] をクリックします。
  9. [作成] をクリックしてインスタンスを作成します。

gcloud

gcloud compute instances create \
    PROJECT_ID-deepvariant-run \
    --project PROJECT_ID \
    --zone ZONE \
    --scopes "cloud-platform" \
    --image-project ubuntu-os-cloud \
    --image-family ubuntu-2004-lts \
    --machine-type n1-standard-64 \
    --min-cpu-platform "Intel Skylake" \
    --boot-disk-size=300GB

以下を置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • ZONE: インスタンスがデプロイされているゾーンです。ゾーンとは、インスタンスとそのリソースが存在するおおよその場所です。たとえば、us-west1-aus-west リージョン内のゾーンです。以前に gcloud config set compute/zone を使用してデフォルトゾーンを設定した場合は、このフラグの値でデフォルト値がオーバーライドされます。

インスタンスが起動するまで、しばらくお待ちください。準備が完了すると、[VM インスタンス] ページに緑色のステータス アイコン付きで表示されます。

インスタンスに接続する

インスタンスに接続するには、Google Cloud Console または gcloud CLI を使用します。

Console

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 仮想マシン インスタンスのリストで、作成したインスタンスの行の [SSH] をクリックします。

gcloud

gcloud compute ssh PROJECT_ID-deepvariant-run --zone ZONE

DeepVariant を実行する

作成した Compute Engine インスタンスで、環境を構成して DeepVariant を実行します。

  1. Docker Community Edition(CE)をインストールします。

    sudo apt-get -qq -y install \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg-agent \
      software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository \
      "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) \
      stable"
    sudo apt-get -qq -y update
    sudo apt-get -qq -y install docker-ce
    
  2. 次のコマンドをコピーしてローカル環境に貼り付けることで、DeepVariant 環境変数を構成します。

    BIN_VERSION="1.2.0"
    BASE="${HOME}/deepvariant-run"
    INPUT_DIR="${BASE}/input"
    REF="GRCh38_no_alt_analysis_set.fasta"
    BAM="HG003.novaseq.pcr-free.35x.dedup.grch38_no_alt.chr20.bam"
    OUTPUT_DIR="${BASE}/output"
    DATA_DIR="${INPUT_DIR}/data"
    OUTPUT_VCF="HG003.output.vcf.gz"
    OUTPUT_GVCF="HG003.output.g.vcf.gz"
    
  3. 入力データ ディレクトリと出力ディレクトリのローカル ディレクトリ構造を作成します。

    mkdir -p "${OUTPUT_DIR}"
    mkdir -p "${INPUT_DIR}"
    mkdir -p "${DATA_DIR}"
    
  4. このチュートリアルでは、公開されている HG003 ゲノムを、GRCh38 参照にマッピングされている 30x カバレッジで使用します。DeepVariant が 20 番染色体(chr20)でのみ実行されるように、DeepVariant の実行時に、--regions chr20 フラグを追加して、ランタイムを高速化します。

    サンプルデータは Illumina シーケンシングを使用して作成されましたが、DeepVariant では以下に挙げる他の種類の入力データもサポートされています。

    • 全ゲノム(Illumina)(WGS)
    • Exome(Illumina)(WES)
    • 全ゲノム(PacBio)
    • 全ゲノム PacBio と Illumina ハイブリッド(HYBRID_PACBIO_ILLUMINA)

    gsutil cp を実行して、入力テストデータを deepvariant Cloud Storage バケットから、作成したインスタンスのディレクトリにコピーします。

    # Input BAM and BAI files:
    gsutil cp gs://deepvariant/case-study-testdata/"${BAM}" "${DATA_DIR}"
    gsutil cp gs://deepvariant/case-study-testdata/"${BAM}".bai "${DATA_DIR}"
    
    # GRCh38 reference FASTA file:
    FTPDIR=ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/001/405/GCA_000001405.15_GRCh38/seqs_for_alignment_pipelines.ucsc_ids
    curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz | gunzip > "${DATA_DIR}/${REF}"
    curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.fai > "${DATA_DIR}/${REF}".fai
    
  5. DeepVariant は、Container Registry 内の事前に構築された Docker イメージでステージングされたコンテナ化アプリケーションです。イメージを pull するには、次のコマンドを実行します。

    sudo docker pull gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"
    
  6. DeepVariant を起動するには、次のコマンドを実行します。

    sudo docker run \
        -v "${DATA_DIR}":"/input" \
        -v "${OUTPUT_DIR}:/output" \
        gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"  \
        /opt/deepvariant/bin/run_deepvariant \
        --model_type=WGS \
        --ref="/input/${REF}" \
        --reads="/input/${BAM}" \
        --output_vcf=/output/${OUTPUT_VCF} \
        --output_gvcf=/output/${OUTPUT_GVCF} \
        --regions chr20 \
        --num_shards=$(nproc) \
        --intermediate_results_dir /output/intermediate_results_dir
    

    次の表に、コマンドに渡されるフラグを示します。

    フラグ 説明
    model_type DeepVariant では、さまざまな種類の入力データがサポートされます。このチュートリアルでは、全ゲノム配列(WSG)を使用します。
    ref 参照 FASTA ファイルの場所。
    reads 入力 BAM ファイルの場所。
    output_vcf 出力 VCF ファイルの場所。
    output_gvcf 出力 gVCF ファイルの場所。
    regions (オプション)処理する染色体領域のスペース区切りリスト。個々の要素は、chr20:10-20 または BED/BEDPE ファイルへのパスなど、リージョンのリテラルです。
    num_shards 並行して実行するシャードの数です。最適な結果を得るには、このフラグの値を、DeepVariant を実行するマシン上のコアの数に設定します。
    intermediate_results_dir make_examples ステージと call_variants ステージの中間出力のディレクトリを指定するオプション フラグ。コマンドが完了すると、ファイルは次の形式でローカル ディレクトリに保存されます。
    dry_run オプション フラグ。true に設定すると、コマンドは実行されずに出力されます。
    call_variants_output.tfrecord.gz
    gvcf.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
    make_examples.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
    
  7. DeepVariant が終了すると、次のファイルが deepvariant-run/output ディレクトリに出力されます。

    • HG003.output.g.vcf.gz
    • HG003.output.g.vcf.gz.tbi
    • HG003.output.vcf.gz
    • HG003.output.vcf.gz.tbi
    • HG003.output.visual_report.html

    次のコマンドを実行して、出力ディレクトリ内のファイルを一覧表示し、出力ファイルが表示されていることを確認します。

    ls $OUTPUT_DIR
    

実行時間の推定

次の表に、BAM ファイルで 30 倍の全ゲノムサンプルを使用して DeepVariant を実行した場合の、およそのランタイムを示しています。これらの推定には、インスタンスの設定と Cloud Storage からのサンプルデータのダウンロードに必要な時間は含まれません。

1 時間あたりの料金については、Compute Engine の料金を参照できます。Spot VM の使用を検討してください。これは、通常の VM よりも大幅に低価格です。

マシンタイプ 時間単位のランタイム
n1-standard-8 24.63
n1-standard-16 13.30
n1-standard-32 7.77
n1-standard-64 5.64
n1-standard-96 4.38

クリーンアップ

チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。次のセクションで、リソースを削除または無効にする方法を説明します。

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

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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

次のステップ

  • DeepVariant GitHub リポジトリには、より複雑な構成があります。たとえば、複数のインスタンスを使用して DeepVariant を実行できます。これらのバリエーションにより、処理速度の改善とコストの削減が実現します。
  • DeepVariant のオープンソース リリースに関する Google AI のブログ投稿を確認します。
  • DeepVariant について質問がある場合は、GitHub で問題を報告してください。 Google Cloud についてご不明な点がある場合は、gcp-life-sciences-discuss@googlegroups.com メーリング リストに投稿できます。