Deep learning variant calling using Google's DeepVariant for high-accuracy germline SNP and indel detection from Illumina, PacBio HiFi, or Oxford Nanopore data.
# Docker (recommended)
docker pull google/deepvariant:1.6.1
# GPU version
docker pull google/deepvariant:1.6.1-gpu
# DeepTrio (separate image tag)
docker pull google/deepvariant:deeptrio-1.6.1
# Singularity
singularity pull docker://google/deepvariant:1.6.1
Input is a sorted, indexed, duplicate-marked BAM/CRAM. Do NOT run BQSR first -- DeepVariant learned its error model from raw base qualities and BQSR slightly lowers its accuracy.
Tell your AI agent what you want to do: - "Call variants from my WGS BAM using DeepVariant" - "Run DeepVariant on exome data with target regions" - "Set up DeepVariant with GPU acceleration" - "Generate GVCFs for joint calling with GLnexus" - "Call de-novo variants in my trio with DeepTrio" - "Should I use DeepVariant, GATK, or DRAGEN for this cohort?"
"Call variants from my whole genome BAM using DeepVariant"
"Run DeepVariant on sample.bam with 16 threads"
"Run DeepVariant on my exome data with the capture BED file"
"Call variants only in my target regions using DeepVariant WES model"
"Call variants from my PacBio HiFi reads with DeepVariant"
"Run DeepVariant with the ONT_R104 model for Nanopore data"
"Generate GVCFs with DeepVariant for joint calling"
"Set up DeepVariant + GLnexus for my cohort of 20 samples"
"Run DeepTrio on my proband-father-mother BAMs and flag de-novo variants"
"Joint genotype my DeepTrio gVCFs and check Mendelian consistency"
"Run DeepVariant with GPU support for faster processing"
--num_shards; use GPU only for call_variants--model_type silently degrades accuracy without erroring--regions for exome/targeted data to save time--num_shards)--output_gvcf if planning multi-sample joint calling| Model | Data Type |
|---|---|
WGS |
Illumina whole genome |
WES |
Illumina exome/targeted |
PACBIO |
PacBio HiFi |
ONT_R104 |
Oxford Nanopore R10.4+ |
HYBRID_PACBIO_ILLUMINA |
Samples with both HiFi and Illumina |
docker run -v "${PWD}:/data" google/deepvariant:1.6.1 \
/opt/deepvariant/bin/run_deepvariant \
--model_type=WGS \
--ref=/data/reference.fa \
--reads=/data/sample.bam \
--output_vcf=/data/output.vcf.gz \
--output_gvcf=/data/output.g.vcf.gz \
--num_shards=16
docker run -v "${PWD}:/data" google/deepvariant:1.6.1 \
/opt/deepvariant/bin/run_deepvariant \
--model_type=WES \
--ref=/data/reference.fa \
--reads=/data/exome.bam \
--regions=/data/targets.bed \
--output_vcf=/data/output.vcf.gz \
--num_shards=8
docker run --gpus all -v "${PWD}:/data" google/deepvariant:1.6.1-gpu \
/opt/deepvariant/bin/run_deepvariant \
--model_type=WGS \
--ref=/data/reference.fa \
--reads=/data/sample.bam \
--output_vcf=/data/output.vcf.gz
--output_gvcfdocker run -v "${PWD}:/data" quay.io/mlin/glnexus:v1.4.1 \
/usr/local/bin/glnexus_cli --config DeepVariantWGS \
/data/*.g.vcf.gz | bcftools view - -Oz -o cohort.vcf.gz
# Statistics
bcftools stats output.vcf.gz > stats.txt
# Filter low quality
bcftools view -i 'QUAL>20 && FMT/GQ>20' output.vcf.gz -Oz -o filtered.vcf.gz
# Ti/Tv ratio (expect ~2.0-2.1 for WGS)
bcftools stats output.vcf.gz | grep TSTV
| Data Type | Memory | Time (30x) |
|---|---|---|
| WGS | 64 GB | 4-6 hours |
| WES | 32 GB | 30 min |
| WGS + GPU | 32 GB | 1-2 hours |