DeepVariant を実行する

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

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

目標

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

費用

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

  • Compute Engine

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

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  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. Google Cloud コンソールで、[リソースの管理] ページに移動します。

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

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

次のステップ

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