Somatic variant calling
With a tumour BAM and a normal BAM in hand, somatic calling asks one question at every site: is the extra base in the tumour a mutation the tumour acquired, an inherited germline variant, or an artefact of the bench and the sequencer? GATK’s Mutect2 finds the candidates, and a chain of filters removes the artefacts.
Counting reads at one site
Stack all reads covering one site and you have a pileup. Count the alt reads carrying the variant base, divide by all reads, and you have the VAF. With tumour and normal side by side, three cases stand out:
- About 50% (or about 100%) in both: a germline variant.
- Present in the tumour, essentially absent from the normal: a somatic candidate.
- Supported by a handful of reads that all point the same way, all sit at read ends, or all carry low-quality bases: most likely an artefact.
Mutect2 runs in tumour–normal mode. It finds active regions where a variant may be, reassembles the reads locally into candidate haplotypes, and then weighs the evidence that the variant exists in the tumour against the evidence that it is also in the normal. Two resources help it set aside germline variants and common artefacts:
- A panel of normals (PoN): normal samples processed with the same kit and pipeline; sites that recur in them are mostly technical artefacts.
- A germline resource such as gnomAD: variants common in the population are more likely germline. This prior matters most when the normal is shallow.
Expected VAF and filtering: which calls are artefacts
Adjust purity, depth and the mutation’s state in the schematic. The normal never shows alt reads; a clonal heterozygous mutation is expected at about purity / 2 in the tumour, and a subclone carried by half the tumour cells at half that. So a VAF of 15% could be a clonal mutation at 30% purity or a subclonal one at 60% purity: VAF alone cannot tell them apart. The shallower the sequencing, the further one draw strays from the expected VAF. The “both copies (LOH)” option shows loss of heterozygosity: the mutant copy is the one retained, and the VAF rises to about the purity. More general copy-number changes push somatic mutations above or below purity / 2 and pull heterozygous germline sites away from 50% in the tumour.
After Mutect2, the Best Practices add three steps:
- LearnReadOrientationModel uses the F1R2/F2R1 counts collected during Mutect2 to learn the read-orientation bias behind FFPE deamination (C>T) and 8-oxoG oxidation (G>T).
- CalculateContamination takes GetPileupSummaries’ counts at common germline SNPs and estimates how much DNA from another person is in the sample: the cross-sample contamination.
- FilterMutectCalls combines both, then checks strand bias, too few alt reads, mapping quality, variants that always sit at read ends, overlap with the PoN or the normal, and more, and labels each candidate PASS or with the reason it failed.
Common pitfalls
- Treating every line of the VCF as a mutation. Only FILTER = PASS passed; failed candidates stay in the file.
- Borrowing another platform’s PoN. A PoN records the systematic artefacts of one kit and pipeline, and loses most of its value on another.
- Confusing population frequency with VAF. gnomAD frequencies describe people; VAF describes reads in one sample.
- Deleting every low-VAF call. A hard VAF floor removes real mutations from low-purity samples and subclones; look at orientation bias, alt reads and purity first.