运行 DeepVariant

DeepVariant 是一种分析流水线,它使用深度神经网络从下一代 DNA 测序数据中检出基因变异。

本教程介绍了如何使用示例数据在 Google Cloud 上运行 DeepVariant。在单个 Compute Engine 实例上运行 DeepVariant。

目标

完成本教程后,您将了解如何在 Google Cloud 上运行 DeepVariant。

费用

在本文档中,您将使用 Google Cloud 的以下收费组件:

  • Compute Engine

您可使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Compute Engine API。

    启用 API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  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 实例

使用 Google Cloud 控制台或 gcloud CLI 创建 Compute Engine 实例以运行 DeepVariant。

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到“虚拟机实例”页面

  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 内存)
  6. CPU 平台菜单中,选择 Intel Skylake 或更高版本
  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 设置默认地区,则此标志的值将替换该默认值。

实例启动需要您稍等片刻。准备就绪后,实例将在虚拟机实例页面上显示,并带有绿色状态图标。

连接到实例

您可以使用 Google Cloud 控制台或 gcloud CLI 连接到该实例:

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到“虚拟机实例”页面

  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 基因组,其覆盖率为 30x,与 GRCh38 参考基因组相对应。为了确保运行时的速度更快,您需要在运行 DeepVariant 时添加 --regions chr20 标志,以保证 DeepVariant 仅在 20 号染色体 (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 映像中的容器化应用。 要提取映像,请运行以下命令:

    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 文件中的 30x 全基因组样本运行 DeepVariant 时的大致运行时间。这些估算值不包括设置实例和从 Cloud Storage 下载任何样本数据所需的时间。

如需了解每小时的价格,请参阅 Compute Engine 价格。请考虑使用 Spot 虚拟机,这比常规虚拟机便宜。

机器类型 运行时间(以小时为单位)
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,然后点击关闭以删除项目。

后续步骤