跳转至

DeepVariant — 深度学习驱动的基因组变异检测工具


一句话说明

DeepVariant 把变异检测变成"图像分类"问题——把基因组比对结果转成类似图片的张量,然后用深度神经网络(类似 ImageNet 分类)来判断每个位置是否有变异,准确率超过传统工具。


安装与配置

# 方法1:Docker运行(Google官方推荐,最简单,版本1.10.0)
BIN_VERSION="1.10.0"
docker pull google/deepvariant:"${BIN_VERSION}"   # 拉取镜像
# GPU版本(需要NVIDIA GPU + nvidia-docker)
docker pull google/deepvariant:"${BIN_VERSION}-gpu"

# 方法2:Singularity(HPC集群常用,无root权限)
singularity pull docker://google/deepvariant:1.10.0
singularity run deepvariant_1.10.0.sif run_deepvariant --help

# 方法3:conda安装
conda install -c bioconda deepvariant   # 版本可能落后,建议用Docker

# 方法4:Bioinformatics平台(Terra, DNAnexus等)
# DeepVariant有官方WDL流程,可直接在Terra平台运行

核心用法

一键运行模式(all-in-one,推荐新手)

BIN_VERSION="1.10.0"

# WGS数据(Illumina短读)
docker run \
    -v /home/user/data:/input \      # 挂载数据目录
    -v /home/user/output:/output \   # 挂载输出目录
    google/deepvariant:${BIN_VERSION} \
    /opt/deepvariant/bin/run_deepvariant \
    --model_type=WGS \               # 模型类型:WGS、WES、PACBIO、ONT、HYBRID_PACBIO_ILLUMINA
    --ref=/input/reference.fasta \   # 参考基因组
    --reads=/input/sample.bam \      # 输入BAM文件
    --output_vcf=/output/sample.vcf.gz \  # 输出VCF
    --output_gvcf=/output/sample.g.vcf.gz \  # 输出GVCF(可选)
    --num_shards=8                   # 并行分片数=CPU线程数

分步运行模式(适合集群,可并行)

# 第一步:生成候选位点图像张量
make_examples \
    --mode calling \
    --ref reference.fasta \
    --reads sample.bam \
    --examples examples.tfrecord.gz \    # 输出张量文件
    --gvcf gvcf_records.tfrecord.gz \
    --task 0 --num_shards 16            # 分片并行,task从0到15

# 第二步:深度学习模型调用变异
call_variants \
    --outfile call_variants_output.tfrecord.gz \
    --examples examples.tfrecord*.gz \  # 输入所有分片的张量
    --checkpoint /opt/deepvariant/models/WGS  # 模型检查点路径

# 第三步:后处理输出VCF
postprocess_variants \
    --ref reference.fasta \
    --infile call_variants_output.tfrecord.gz \
    --outfile sample.vcf.gz \
    --gvcf_outfile sample.g.vcf.gz    # 同时输出GVCF

参数详解

参数说明可选值
--model_type数据类型决定使用的模型WGSWESPACBIOONTHYBRID_PACBIO_ILLUMINA
--num_shards并行分片数(=CPU线程数)81632
--regions限定分析区间chr1:1-1000000 或 BED文件
--sample_name样本名称(写入VCF头)SAMPLE1
--haploid_contigs指定单倍体区域(如chrX在男性)chrX,chrY
--intermediate_results_dir保存中间文件目录/tmp/intermediate/

实战案例

# 案例:HiFi PacBio数据变异检测(使用Docker)

BIN_VERSION="1.10.0"
INPUT_DIR="/data/pacbio_project"
OUTPUT_DIR="/data/deepvariant_out"
REF="${INPUT_DIR}/hg38.fasta"
BAM="${INPUT_DIR}/hifi_sample.bam"

# 确保BAM已排序和建索引
samtools sort -o sorted.bam $BAM && samtools index sorted.bam

# 运行DeepVariant(PACBIO模型)
docker run \
    -v "${INPUT_DIR}":"/input" \
    -v "${OUTPUT_DIR}":"/output" \
    google/deepvariant:"${BIN_VERSION}" \
    /opt/deepvariant/bin/run_deepvariant \
    --model_type=PACBIO \
    --ref=/input/hg38.fasta \
    --reads=/input/hifi_sample.bam \
    --output_vcf=/output/hifi_sample.vcf.gz \
    --output_gvcf=/output/hifi_sample.g.vcf.gz \
    --num_shards=$(nproc) \        # 使用所有可用CPU
    --logging_dir=/output/logs \   # 保存日志目录
    --intermediate_results_dir=/output/intermediate

# 查看结果统计
zcat ${OUTPUT_DIR}/hifi_sample.vcf.gz | grep -v "^#" | wc -l  # 变异总数

常见报错与解决

报错1:RuntimeError: Invalid model path - 原因:--model_type与数据类型不匹配,或自定义模型路径不正确 - 解决:WGS用--model_type=WGS,PacBio HiFi用PACBIO,ONT用ONT

报错2:ValueError: reads must be sorted - 原因:输入BAM文件未排序 - 解决:samtools sort -o sorted.bam input.bam && samtools index sorted.bam

报错3:Docker OOM (Out of Memory) - 原因:Docker分配内存不足(一般每个分片需要2-4GB) - 解决:减少--num_shards数量,或通过docker run --memory=32g增加内存限制


速查表

命令/参数说明
--model_type=WGSIllumina WGS模型(最常用)
--model_type=PACBIOPacBio HiFi模型
--model_type=ONTOxford Nanopore模型
--model_type=WESIllumina外显子组模型
--model_type=HYBRID_PACBIO_ILLUMINAPacBio+Illumina混合
--num_shards=$(nproc)使用所有CPU核心
run_deepvariant一键完整流程(推荐)
--haploid_contigs chrX,chrY男性X/Y染色体单倍型
google/deepvariant:1.10.0最新稳定版Docker镜像