DeepVariant的安装和使用

概述

2018年,DeepVariant以letters的形式发表在Nature biotechnology (IF2022: 46.9) 期刊上,并在Github上进行了开源。在Benchmark的测试结果中,DeepVariant与其他变异检测方法或工具(GATKFreeBayesSAMtools16GTStrelka等等)都进行了比较,并展示出了极佳的变异检测效果。

DeepVariant是一个应用深度学习方法来对二代/三代测序数据进行变异检测的pipeline或者分析流程。该流程以BAM或者CRAM格式作为输入,随后将每个位点的比对结果转换为六张连续堆叠的图像张量作为卷积神经网络(CNN)的输入并进行分类,最后会生成标准的VCFgVCF文件和HTML报告文件供后续的分析。以下是一个位点对应的图像张量展示:

DeepVariant的优点如下:

  • 准确性高

  • 灵活

  • 易用

  • 成本低

  • 速度快

  • 用法广

安装DeepVariant

使用docker安装DeepVariant

BIN_VERSION="1.5.0"

sudo apt -y update
# 拉取镜像
sudo docker pull google/deepvariant:"${BIN_VERSION}"

使用singularity安装DeepVariant

BIN_VERSION="1.5.0"

# 拉取镜像
singularity pull docker://google/deepvariant:"${BIN_VERSION}"

当然,对于其他意外情况,如服务器无法连接外网,这里提供一个可以参考的思路:

1-在windows上安装docker并下载所需的镜像

2-使用如下命令将镜像打包为tar文件

# 查看镜像是否存在
docker images

# 打包镜像
# docker save IMAGE_ID -o IMAGE_NAME.tar
docker save 45f6c7767ff0 -o deepvariant.tar

# 打包完后可以选择删除镜像
docker rmi 45f6c7767ff0

3-将打包后的文件上传至服务器上,并转为镜像文件

docker命令

docker load -i deepvariant.tar

singularity命令

singularity build deepvariant.sif docker-archive://deepvariant.tar

# 运行
singularity run deepvariant.sif /opt/deepvariant/bin/run_deepvariant --helpfull

使用Conda安装DeepVariant

软件查询

conda search -c bioconda deepvariant
deepvariant                    1.0.0  py36hf3e76ba_1  bioconda
deepvariant                    1.0.0  py36hf3e76ba_2  bioconda
deepvariant                    1.0.0  py36hf3e76ba_3  bioconda
deepvariant                    1.0.0  py36hf5a246b_0  bioconda
deepvariant                    1.1.0  py36hf3e76ba_0  bioconda
deepvariant                    1.1.0  py36hf3e76ba_1  bioconda
deepvariant                    1.1.0  py36hf3e76ba_2  bioconda
deepvariant                    1.2.0  py36hf3e76ba_0  bioconda
deepvariant                    1.3.0  py36hf3e76ba_0  bioconda
deepvariant                    1.4.0  py36hf3e76ba_0  bioconda
deepvariant                    1.5.0  py36hf3e76ba_0  bioconda

环境创建和软件安装

conda create -c bioconda -n deepvariant-1.5.0 deepvariant=1.5.0

激活环境

conda activate deepvariant-1.5.0

下载测试数据

INPUT_DIR="${PWD}/quickstart-testdata"
DATA_HTTP_DIR="https://storage.googleapis.com/deepvariant/quickstart-testdata"

mkdir -p ${INPUT_DIR}
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/NA12878_S1.chr20.10_10p1mb.bam
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/NA12878_S1.chr20.10_10p1mb.bam.bai
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/test_nist.b37_chr20_100kbp_at_10mb.bed
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/test_nist.b37_chr20_100kbp_at_10mb.vcf.gz
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/test_nist.b37_chr20_100kbp_at_10mb.vcf.gz.tbi
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/ucsc.hg19.chr20.unittest.fasta
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/ucsc.hg19.chr20.unittest.fasta.fai
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/ucsc.hg19.chr20.unittest.fasta.gz
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/ucsc.hg19.chr20.unittest.fasta.gz.fai
wget -P ${INPUT_DIR} "${DATA_HTTP_DIR}"/ucsc.hg19.chr20.unittest.fasta.gz.gzi

下载后的测试数据目录结构如下

quickstart-testdata/
├── NA12878_S1.chr20.10_10p1mb.bam
├── NA12878_S1.chr20.10_10p1mb.bam.bai
├── test_nist.b37_chr20_100kbp_at_10mb.bed
├── test_nist.b37_chr20_100kbp_at_10mb.vcf.gz
├── test_nist.b37_chr20_100kbp_at_10mb.vcf.gz.tbi
├── ucsc.hg19.chr20.unittest.fasta
├── ucsc.hg19.chr20.unittest.fasta.fai
├── ucsc.hg19.chr20.unittest.fasta.gz
├── ucsc.hg19.chr20.unittest.fasta.gz.fai
└── ucsc.hg19.chr20.unittest.fasta.gz.gzi

0 directories, 10 files

运行DeepVariant

DeepVariant包含3个主要的命令(或者是3个主要的步骤,如下图所示):make_examplescall_variantspostprocess_variants。为了更方便操作,这3个命令或步骤被整合到了一个叫做run_deepvariant.pypython脚本内,并可以被docker或者singularity直接运行。

DeepVariant使用帮助信息

flags:

/opt/deepvariant/bin/run_deepvariant.py:  
  --call_variants_extra_args: 可以对`call_variants`这一步使用flag_name=flag_value添加额外的键值对参数,多个键值对参数间使用逗号分隔。"flag_name" 必须是call_variants.py脚本中的有效参数. "flag_value"可以是布尔值true或者false

  --customized_model: 可选的,为 "call_variants "步骤加载模型检查点的路径。如果没有设置,将使用--model_type参数对应的默认值.

  --[no]dry_run: 可选的,如果使用了该选项,只打印命令而不执行。(默认:'false',即直接运行)

  --intermediate_results_dir: 可选的,如果指定,这应该是一个在docker内部可见的现有目录,并将被用来存储中间输出。

  --logging_dir: 可选的,将每个阶段的运行日志文件写入指定目录下

  --make_examples_extra_args: 一个用逗号分隔的flag_name=flag_value的列表。"flag_name "必须是`make_examples.py`脚本中的有效参数。如果"flag_value"是布尔值,它必须是flag_name=true或flag_name=false。

  --model_type: <WGS|WES|PACBIO|ONT_R104|HYBRID_PACBIO_ILLUMINA>: 必须参数。用于指定变异检测的模型类型。设置这个参数是为了使用与每个类型相关的默认模型,并启用与每个模型对应的必要参数。如果你想使用一个自定义的模型,除了这个参数外,还要加上--customized_model参数指定模型文件。

  --num_shards: 可选的,`make_examples`步骤中需要使用的CPU数量。 (默认:'1',整数类型)

  --output_gvcf: 可选的,需要输出gVCF文件时加上该参数,并指定gVCF文件的输出路径

  --output_vcf: 必须参数, 指定VCF文件的输出路径

  --postprocess_variants_extra_args: 一个用逗号分隔的flag_name=flag_value的列表。 "flag_name "必须是`postprocess_variants.py`脚本中的有效参数。如果"flag_value"是布尔值,它必须是flag_name=true或flag_name=false。

  --reads: 必须参数。指定一个比对后的、排序后的、有索引的BAM文件用于变异检测。该参数应该与--ref参数一同使用。

  --ref: 必须参数,指定需要使用的参考基因组,该参考基因组必须有一个对应的fai结尾的索引文件。支持经gzip压缩后的参考基因组文件。该参数应该与--reads参数一同使用。

  --regions: 可选的,指定需要分析处理的目标区域,多个区域用空格分隔。目标区域格式可以写成(如chr20:10-20)或使用BED/BEDPE文件代替。

  --[no]runtime_report: 如果使用了该选项,则会输出`make_examples`运行过程中的时间统计指标,并使用runtime_by_region_vis创建一个可视化的运行时间报告。需要与--logging_dir参数一同使用。(默认:'false')

  --sample_name: 指定输出的样本名称,而不使用来自BAM文件中的样本名称(header的SM标签)。这个参数用于`make_examples`和`postprocess_variants`步骤

  --[no]use_hp_information: (在v1.4.0版本中已废弃)可选。如果使用了该选项,相应的参数将被设置,以正确使用BAM输入中的HP信息

  --[no]vcf_stats_report: 可选的,输出一个关于VCF文件统计结果的可视化报告(HTML)。(默认:'true')

  --[no]version: 可选的,如果使用了该选项,则打印出版本号并退出。

使用docker运行DeepVariant

BIN_VERSION="1.5.0"
INPUT_DIR="${PWD}/quickstart-testdata"
OUTPUT_DIR="${PWD}/quickstart-output"

mkdir -p "${OUTPUT_DIR}"

sudo docker run \
-v "${INPUT_DIR}":"/input" \
-v "${OUTPUT_DIR}":"/output" \
google/deepvariant:"${BIN_VERSION}" \
/opt/deepvariant/bin/run_deepvariant \
--model_type=WGS \
--ref=/input/ucsc.hg19.chr20.unittest.fasta \
--reads=/input/NA12878_S1.chr20.10_10p1mb.bam \
--regions "chr20:10,000,000-10,010,000" \
--output_vcf=/output/output.vcf.gz \
--output_gvcf=/output/output.g.vcf.gz \
--intermediate_results_dir /output/intermediate_results_dir \
--num_shards=1

使用singularity运行DeepVariant

BIN_VERSION="1.5.0"
INPUT_DIR="${PWD}/quickstart-testdata"
OUTPUT_DIR="${PWD}/quickstart-output"

mkdir -p "${OUTPUT_DIR}"

# Run DeepVariant.
singularity run \
-B "${INPUT_DIR}":"/input","${OUTPUT_DIR}":"/output" \
docker://google/deepvariant:"${BIN_VERSION}" \
/opt/deepvariant/bin/run_deepvariant \
--model_type=WGS \
--ref=/input/ucsc.hg19.chr20.unittest.fasta \
--reads=/input/NA12878_S1.chr20.10_10p1mb.bam \
--regions "chr20:10,000,000-10,010,000" \
--output_vcf=/output/output.vcf.gz \
--output_gvcf=/output/output.g.vcf.gz \
--intermediate_results_dir /output/intermediate_results_dir \
--num_shards=1

运行完后的目录结构如下

.
├── quickstart-output # 输出结果目录
│   ├── intermediate_results_dir # 输出结果临时目录
│   │   ├── call_variants_output.tfrecord.gz
│   │   ├── gvcf.tfrecord-00000-of-00001.gz
│   │   ├── make_examples.tfrecord-00000-of-00001.gz
│   │   └── make_examples.tfrecord-00000-of-00001.gz.example_info.json
│   ├── output.g.vcf.gz # 输出的gvcf文件,用于后续的合并操作
│   ├── output.g.vcf.gz.tbi # 输出的gvcf文件索引
│   ├── output.vcf.gz # 输出的vcf文件
│   ├── output.vcf.gz.tbi # 输出的vcf文件索引
│   └── output.visual_report.html # 输出的变异检测报告文件
└── quickstart-testdata # 测试数据目录
    ├── NA12878_S1.chr20.10_10p1mb.bam
    ├── NA12878_S1.chr20.10_10p1mb.bam.bai
    ├── test_nist.b37_chr20_100kbp_at_10mb.bed
    ├── test_nist.b37_chr20_100kbp_at_10mb.vcf.gz
    ├── test_nist.b37_chr20_100kbp_at_10mb.vcf.gz.tbi
    ├── ucsc.hg19.chr20.unittest.fasta
    ├── ucsc.hg19.chr20.unittest.fasta.fai
    ├── ucsc.hg19.chr20.unittest.fasta.gz
    ├── ucsc.hg19.chr20.unittest.fasta.gz.fai
    └── ucsc.hg19.chr20.unittest.fasta.gz.gzi

使用conda运行DeepVariant

run_deepvariant.py脚本并不支持conda使用,因此需要逐步运行,参数使用参考上述信息

python dv_make_examples.py
python dv_call_variants.py
python dv_postprocess_variants.py

打开报告文件output.visual_report.html,可以看到如下统计结果,里面的图形也是可交互的:

作者 :LXD
转载 :DeepVariant的安装和使用
来源 :微信公众号
著作权归作者所有,任何形式的转载都请联系作者。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容