Module 9: Somatic Variant Annotation & Filtering: VEP, SnpEff, gnomAD & COSMIC
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 9 of 12
0% Course Completed
1. Principles of Comprehensive Somatic Annotation
An unfiltered VCF provides only chromosomal coordinates and nucleotide changes (e.g. chr7:55259515 T>G). Clinical interpretation requires translating these raw coordinates into biological, transcript-level, and oncogenic context using tools like Ensembl Variant Effect Predictor (VEP) or SnpEff.
| Annotation Dimension | Authoritative Repositories | Extracted Clinical Data Fields |
|---|---|---|
| Transcript & HGVS Nomenclature | Ensembl, NCBI RefSeq, MANE Select | Gene symbol (EGFR), canonical RefSeq transcript (NM_000546.6), cDNA change (c.2573T>G), protein change (p.Leu858Arg). |
| Molecular Consequence | Sequence Ontology (SO) | Missense variant, frameshift deletion, stop gained (nonsense), in-frame insertion, splice donor/acceptor disruption. |
| Population Allele Frequency | gnomAD (Genome Aggregation Database) | Global and subpopulation allele frequencies (AF). Any variant with $ ext{gnomAD AF} > 1.0\%$ is classified as a benign germline polymorphism. |
| Somatic Cancer Recurrence | COSMIC (Catalogue of Somatic Mutations in Cancer) | COSMIC mutation ID, tumor site recurrence counts, tissue distribution, confirmed somatic status. |
| Clinical & Evidence Curation | ClinVar, OncoKB, CIViC | Oncogenic classification, FDA-approved drug associations, NCCN guideline recommendations, clinical trial eligibility. |
2. Automated Multi-Tier Filtering Protocol
To extract genuine actionable drivers from hundreds of background variants, apply the standardized clinical filtration pipeline:
[Step 1: Quality Filter] --> Keep FILTER == "PASS" & Total Depth >= 100x
│
▼
[Step 2: VAF Filter] --> Keep Variant Allele Fraction (VAF) >= 5% (FFPE)
│
▼
[Step 3: Population Filter] --> Filter OUT common polymorphisms (gnomAD AF > 0.001 / 0.1%)
│
▼
[Step 4: Consequence Filter] --> Keep protein-altering variants: missense, nonsense,
frameshift, splice site, in-frame indels
│
▼
[Step 5: Oncology Match] --> Cross-check COSMIC, OncoKB, and CIViC databases3. Hands-On Deliverable: Filtered Clinical Mutation Table
Extract the primary driver mutations across our three assigned cases into a standardized clinical summary table:
| Patient Case | Gene | HGVS cDNA | HGVS Protein | VAF (%) | Depth | COSMIC ID | ClinVar Classification |
|---|---|---|---|---|---|---|---|
| Case 1 (Lung) | EGFR | c.2573T>G | p.Leu858Arg (L858R) | 35.8% | 642× | COSM6224 | Pathogenic / Tier I |
| Case 2 (Colon) | KRAS | c.38G>A | p.Gly13Asp (G13D) | 61.4% | 810× | COSM522 | Pathogenic / Tier I |
| Case 2 (Colon) | PIK3CA | c.1633G>A | p.Glu545Lys (E545K) | 18.2% | 745× | COSM763 | Pathogenic / Tier I |
| Case 3 (Breast) | TP53 | c.524G>A | p.Arg175His (R175H) | 44.1% | 590× | COSM10648 | Pathogenic / Tier II |
⚠️
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
chr1or1; divergent naming causes silent alignment drops.
Was this guide helpful to your research?
Help us maintain 100% accurate, peer-reviewed bioinformatics standards.