omics.co.in logo omics.co.in

Module 8: Somatic Mutation Discovery: GATK Mutect2 & FilterMutectCalls

Tested Stacks: GATK 4.6.1 Samtools 1.21 Nextflow 24.10 Seurat v5.1 Python 3.12
Prerequisites: Basic Linux CLI & Sequencing Formats
📚 Chapter 8 of 12 0% Course Completed

1. Running Mutect2 on Targeted Panel Regions

Having produced coordinate-sorted, duplicate-marked BAM files, we now execute GATK Mutect2 restricted to the targeted capture territory (target_regions.bed) to detect somatic SNVs and indels:

Galaxy Parameter Configuration for GATK4 Mutect2:
- Reference Genome: Human (GRCh38/hg38)
- Tumor BAM: Case1_Lung_Tumor_Marked.bam (Sample Name: Case1_Tumor)
- Normal BAM: Case1_Lung_Normal_Marked.bam (Sample Name: Case1_Normal)
- Interval list (-L): Lung_10Gene_Panel_Targets.bed
- Germline Resource: gnomAD Somatic AF-only VCF (v3.1)
- Panel of Normals (PoN): Curated_CLIA_PoN_GRCh38.vcf.gz
- Output: Raw Somatic VCF + F1R2 orientation metrics

2. Estimating Cross-Sample Contamination: GetPileupSummaries & CalculateContamination

In high-throughput multi-plexed clinical sequencing, index hopping and liquid handling cross-contamination can introduce traces of DNA from other patient samples. GATK calculates contamination by examining population-polymorphic biallelic SNPs:

  1. GetPileupSummaries: Quantifies reference and alternate depths across thousands of known common SNPs (gnomAD AF 5% – 20%).
  2. CalculateContamination: Computes the maximum likelihood estimate of cross-sample contamination ($f_{\text{contam}}$). For clinical cancer specimens, contamination must remain strictly $< 1.0\% - 2.0\%$.

3. Rigorous Filtering with FilterMutectCalls

The raw VCF produced by Mutect2 contains thousands of low-confidence candidate calls. FilterMutectCalls evaluates multi-dimensional filters:

Filter Tag in VCFUnderlying Statistical CriterionBiochemical / Technical Meaning
PASSSomatic LOD score > threshold; all error models satisfied.High-confidence somatic mutation. Proceed to clinical tiering.
weak_evidenceTLOD (Tumor Log Odds) < 5.3Insufficient read support; variant cannot be distinguished from background error.
strand_biasPhred-scaled Fisher strand bias > 25Variant supported predominantly on one sequencing strand; probable artifact.
germline_riskNLOD < 2.2 or high population frequency in gnomADVariant represents constitutional inherited polymorphism, not somatic driver.
orientationRead orientation model score ($F1R2 / F2R1$)Classic FFPE $C:G o T:A$ hydrolytic deamination artifact.

Filter the final dataset to retain only variants exhibiting FILTER == PASS with total depth $\ge 100 imes$ and VAF $\ge 5\%$.

⚠️

Common Pitfalls & Troubleshooting Checklist

  • Java Heap Exhaustion (GATK / Picard): If processes terminate with java.lang.OutOfMemoryError, set your environment variable explicitly: export _JAVA_OPTIONS="-Xmx16g -Djava.io.tmpdir=/tmp".
  • Index Timestamp Mismatch: If tools complain that a BAM index is missing or out of date, regenerate with samtools index -@ 4 sample.bam.
  • Conda Channel Conflicts: Avoid ABI incompatibilities between bioconda and conda-forge by setting strict priority: conda config --set channel_priority strict.
  • Chromosome Naming Contamination: Always verify whether reference FASTA headers use chr1 or 1; divergent naming causes silent alignment drops.
Was this guide helpful to your research?
Help us maintain 100% accurate, peer-reviewed bioinformatics standards.
📝 Propose Edit on GitHub ↗