7. Variant Annotation & Prioritization
6 Primary ToolsTranslating raw genomic coordinates into biological, clinical, and functional consequences across gene models, clinical databases (ClinVar, COSMIC), and population allele frequencies.
| Tool | Primary Role & Purpose | Supported Platforms | Executable Pipeline |
|---|---|---|---|
| Ensembl VEP → | Supports ClinVar, gnomAD, dbNSFP, splice predictions, AlphaMissense | All VCF Variants | View Code ↓ |
| SnpEff / SnpSift → | High speed, integrates with diverse genomes, versatile filtering syntax | Model & Non-Model VCFs | View Code ↓ |
| ANNOVAR → | Database-driven tool for OMIM, COSMIC, 1000G, and conservation scores | Targeted, Exome & WGS | View Code ↓ |
| OpenCRAVAT → | Interactive web interface, modular scoring plugins (CHASMplus, VEST) | Cancer & Rare Disease | View Code ↓ |
| vcfanno → | High-performance Go tool to annotate VCFs with external BED/VCF sources | All VCF Cohorts | View Code ↓ |
| bcftools → | Essential standard for VCF merging, normalization, querying, and filtering | All Genomic Variants | View Code ↓ |
Ensembl VEP, SnpEff, ANNOVAR, OpenCRAVAT, vcfannoClinVar, VarSome, InterVar, Franklin, AutoPVS1, ExomiserAlphaMissense, CADD, REVEL, SpliceAI, gnomAD (pLI/LOEUF)OncoKB, CIViC, cBioPortal, maftools, MutationalPatterns, SigProfilerFunctional & Clinical Variant Effect Predictor
Ensembl Variant Effect Predictor (VEP) determines the effect of genomic variants (SNVs, indels, CNVs, SVs) on genes, transcripts, and protein sequences. It integrates with ClinVar, gnomAD, dbNSFP, and deep learning scores like AlphaMissense.
# 1. Annotate VCF with Ensembl VEP (ClinVar, gnomAD, HGVS, AlphaMissense)
vep \
-i input_variants.vcf.gz \
-o vep_annotated.vcf.gz \
--format vcf --vcf --compress_output bgzip \
--species homo_sapiens --assembly GRCh38 \
--offline --cache --dir_cache ~/.vep \
--everything \
--af_gnomade --af_gnomadg \
--clin_sig_allele 1 \
--symbol --biotype --canonical \
--fork 8
# 2. Index annotated VCF
tabix -p vcf vep_annotated.vcf.gz--offline --cache enables fast local annotation without network latency; --everything activates SIFT, PolyPhen, regulatory features, and HGVS nomenclature; --fork 8 parallelizes across 8 CPU threads.High-Speed Genomic Annotation & Filter Language
SnpEff annotates variants with functional consequences (missense, nonsense, splice donor/acceptor) based on genomic coordinates and coding impact. SnpSift provides a powerful domain-specific query language to filter annotated VCF files.
# 1. Annotate variants with SnpEff
snpEff -Xmx8g GRCh38.105 input_variants.vcf.gz \
| bgzip > snpeff_annotated.vcf.gz
tabix -p vcf snpeff_annotated.vcf.gz
# 2. Filter with SnpSift for HIGH impact mutations (stop_gained, frameshift)
SnpSift filter "(ANN[*].IMPACT = 'HIGH') & (gen[0].DP >= 20)" \
snpeff_annotated.vcf.gz \
| bgzip > high_impact_mutations.vcf.gz
# 3. Extract tabular TSV summary of candidate genes
SnpSift extractFields high_impact_mutations.vcf.gz \
CHROM POS REF ALT "ANN[*].GENE" "ANN[*].EFFECT" "ANN[*].IMPACT" > candidates.tsvGRCh38.105 designates Ensembl database build; SnpSift filter executes boolean logic on complex nested INFO and FORMAT fields.Database-Driven Gene, Region & Filter Annotation
ANNOVAR is a database-driven tool capable of functional annotation across gene-based, region-based, and filter-based databases, integrating OMIM disease phenotypes, COSMIC somatic mutations, and conservation metrics (GERP++, phyloP).
# 1. Convert VCF to ANNOVAR format
convert2annovar.pl -format vcf4 input_variants.vcf > sample.avinput
# 2. Run multi-database table annotation
table_annovar.pl sample.avinput humandb/ \
-buildver hg38 \
-out sample_annotated \
-remove \
-protocol refGene,cytoBand,gnomad30_genome,cosmic92,clinvar_202401,cadd16gt \
-operation g,r,f,f,f,f \
-nastring . \
-csvout-protocol lists active databases; -operation g,r,f designates gene-based, region-based, and filter-based operations respectively.Modular Clinical & Cancer Variant Interpretation
OpenCRAVAT is an open-source variant interpretation platform featuring a modular plugin architecture, cancer driver scoring (CHASMplus), pathogenicity classifiers (VEST), and an interactive web GUI for clinical reporting.
# 1. Install cancer and clinical annotation modules
oc module install chasmplus vest clinvar cgc gnomad
# 2. Run OpenCRAVAT annotation on somatic VCF
oc run input_somatic.vcf \
-l hg38 \
-a chasmplus vest clinvar cgc \
-t html excel \
-d opencravat_results/
# 3. View interactive results in web browser
# oc gui opencravat_results/input_somatic.vcf.sqlite-a chasmplus vest applies machine-learning classifiers for missense oncogenic drivers; -t html excel outputs interactive dashboards and clinical spreadsheets.Ultra-Fast Arbitrary VCF & BED Annotation in Go
vcfanno is a high-speed tool written in Go that annotates VCF files with any number of external VCF and BED sources based on genomic overlap, supporting custom mathematical aggregations (mean, max, concat, self).
# 1. Define TOML configuration file (conf.toml)
cat << 'EOF' > conf.toml
[[annotation]]
file = "cadd_scores.vcf.gz"
fields = ["PHRED", "RawScore"]
ops = ["self", "self"]
names = ["CADD_PHRED", "CADD_RAW"]
[[annotation]]
file = "encode_promoters.bed.gz"
columns = [4]
names = ["PROMOTER_ID"]
ops = ["concat"]
EOF
# 2. Run multi-threaded vcfanno
vcfanno -p 16 conf.toml input_variants.vcf.gz | bgzip > vcfanno_annotated.vcf.gz
tabix -p vcf vcfanno_annotated.vcf.gz-p 16 annotates millions of variants concurrently; ops = ["self", "concat"] manages interval aggregation logic.The Definitive VCF/BCF Filtering & Normalization Engine
bcftools is the universal standard for manipulating variant call files in VCF and binary BCF formats. It normalizes indels against reference genomes, splits multi-allelic records, performs complex expression filtering, and extracts clean TSV data matrices.
# 1. Normalize indels (left-align and split multi-allelic sites)
bcftools norm -m-both -f GRCh38.fa raw_calls.vcf.gz -Oz -o norm.vcf.gz
bcftools index norm.vcf.gz
# 2. Filter for high-confidence PASS variants (Depth >= 20, Genotype Quality >= 30)
bcftools filter -i 'FILTER=="PASS" && QUAL>=30 && FORMAT/DP>=20 && FORMAT/GQ>=30' \
norm.vcf.gz -Oz -o filtered_highconf.vcf.gz
bcftools index filtered_highconf.vcf.gz
# 3. Query specific variant coordinates and genotypes into flat tabular format
bcftools query -f '%CHROM\t%POS\t%REF\t%ALT[\t%SAMPLE=%GT:%DP]\n' \
filtered_highconf.vcf.gz > genotype_matrix.tsvnorm -m-both -f splits multi-allelic records and left-aligns indels according to HGVS rules; bcftools query outputs clean, parseable TSVs.