Skip to main content
Docker Image: google/deepvariant:1.5.0
DeepVariant is Google’s deep learning-based variant caller. Instead of using probabilistic models like GATK or FreeBayes, it treats variant calling as an image classification problem. It converts read pileups into images and uses a convolutional neural network (CNN) — specifically an Inception v3 architecture — to classify each candidate site as homozygous reference, heterozygous variant, or homozygous variant.

How It Works

DeepVariant operates in three stages:

1. make_examples

Scans the BAM file and identifies candidate variant sites. For each candidate, it constructs a pileup image — a multi-channel tensor encoding read alignments, base qualities, mapping qualities, strand information, and other signals. This is where most quality-affecting parameters live (candidate thresholds, read quality filters, read processing options).

2. call_variants

Feeds each pileup image through the pre-trained CNN model. The model outputs probabilities for three genotype classes: 0/0 (hom-ref), 0/1 (het), and 1/1 (hom-alt). The model was trained on truth sets and is specific to the sequencing platform (WGS, WES, PacBio, etc.).

3. postprocess_variants

Converts model predictions to a VCF file. Applies quality filters (QUAL thresholds), handles multi-allelic sites, and computes genotype quality (GQ) scores.
Unlike GATK/FreeBayes where hyperparameters control the statistical model, DeepVariant parameters affect what data the CNN sees and how outputs are filtered. You cannot change the model itself — but you can significantly affect accuracy by controlling inputs and output filtering.

Hyperparameters

Model Selection (Top-level)

Candidate Variant Thresholds (make_examples)

These control which genomic positions become candidates for the CNN to evaluate. Lowering thresholds = more candidates = higher sensitivity but more computation and potentially more false positives (though the CNN is the final arbiter).

Read Quality Filters (make_examples)

Read Processing (make_examples)

Haplotype-Aware Calling (make_examples)

Post-Processing (postprocess_variants)