DeepVariant 是一种分析流水线,它使用深度神经网络从下一代 DNA 测序数据中检出基因变异。
本教程介绍了如何使用示例数据在 Google Cloud 上运行 DeepVariant。在单个 Compute Engine 实例上运行 DeepVariant。
目标
完成本教程后,您将了解如何在 Google Cloud 上运行 DeepVariant。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
- Compute Engine
您可使用价格计算器根据您的预计使用情况来估算费用。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
启用 Compute Engine API。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
启用 Compute Engine API。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
提示:需要命令提示符?您可以使用 Cloud Shell。Cloud Shell 命令行环境已经包含 Google Cloud CLI,因此您无需再进行安装。
创建 Compute Engine 实例
使用 Google Cloud 控制台创建 Compute Engine 实例 或 gcloud CLI 来运行 DeepVariant。
控制台
- 在 Google Cloud 控制台中,前往 虚拟机实例页面。
- 点击创建实例。
- 为实例选择一个名称,其格式为
PROJECT_ID-deepvariant-run
,其中 PROJECT_ID 是您的 Google Cloud 项目 ID。 -
为实例选择区域和地区。除非您有明确的理由需要在特定位置运行实例,否则请选择
us-central1 (Iowa)
区域和us-central1-a
地区。 - 在机器类型菜单中,选择 n1-standard-64(64 个 vCPU、240 GB 内存)。
- 在 CPU 平台菜单中,选择 Intel Skylake 或更高版本。
- 在启动磁盘部分,点击更改以开始配置您的启动磁盘。
- 在公共映像标签页上,选择 Ubuntu 20.04 LTS。在启动磁盘类型菜单中,选择标准永久性磁盘。在大小 (GB) 字段中,输入 300。点击选择。
- 点击创建以创建实例。
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-a
是us-west
区域中的地区。如果您之前使用gcloud config set compute/zone
设置默认地区,则此标志的值将替换该默认值。
实例启动需要您稍等片刻。准备就绪后,实例将在虚拟机实例页面上显示,并带有绿色状态图标。
连接到实例
您可以使用 Google Cloud 控制台连接到该实例 也可以使用 gcloud CLI:
控制台
- 在 Google Cloud 控制台中,前往 虚拟机实例页面。
- 在虚拟机实例列表中,点击您创建的实例行中的 SSH。
gcloud
gcloud compute ssh PROJECT_ID-deepvariant-run --zone ZONE
运行 DeepVariant
配置环境并在您创建的 Compute Engine 实例上运行 DeepVariant:
安装 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
通过将以下命令复制并粘贴到本地环境来配置 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"
为输入数据目录和输出目录创建本地目录结构:
mkdir -p "${OUTPUT_DIR}" mkdir -p "${INPUT_DIR}" mkdir -p "${DATA_DIR}"
本教程使用公开提供的 HG003 基因组,其覆盖率为 30x,与 GRCh38 参考基因组相对应。为了确保运行时的速度更快,您需要在运行 DeepVariant 时添加
--regions chr20
标志,以保证 DeepVariant 仅在 20 号染色体 (chr20) 上运行。示例数据是使用 Illumina 测序创建的,不过 DeepVariant 还支持以下其他类型的输入数据:
- 全基因组 (Illumina) (WGS)
- Exome (Illumina) (WES)
- 全基因组 (PacBio)
- 全基因组 PacBio 和 Illumina 混合 (HYBRID_PACBIO_ILLUMINA)
运行
gcloud storage cp
将输入测试数据从deepvariant
Cloud Storage 存储分区复制到您所创建实例上的目录。# Input BAM and BAI files: gcloud storage cp gs://deepvariant/case-study-testdata/"${BAM}" "${DATA_DIR}" gcloud storage 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
DeepVariant 是暂存在 Container Registry 内的预构建 Docker 映像中的容器化应用。 要提取映像,请运行以下命令:
sudo docker pull gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"
要启动 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
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 |
清理
完成本教程后,您可以清理您创建的资源,让它们停止使用配额,以免产生费用。以下部分介绍如何删除或关闭这些资源。
为了避免产生费用,最简单的方法是删除您为本教程创建的项目。
如需删除项目,请执行以下操作:
- 在 Google Cloud 控制台中,进入管理资源页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
后续步骤
- DeepVariant GitHub 代码库中提供了更为复杂的配置。 例如,您可以使用多个实例运行 DeepVariant。这些变异能够提高处理速度并降低费用。
- 阅读 Google AI 博文 DeepVariant 的开源版本。
- 如果您对 DeepVariant 有任何疑问,可以提交 GitHub 问题。如果您对 Google Cloud 有任何疑问,可以向 gcp-life-sciences-discuss@googlegroups.com 邮件列表发送邮件。