omics.co.in logo omics.co.in

8: Variant Annotation, Effect Prediction & ClinVar Integration

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 13 0% Course Completed

Chapter 8: Variant Annotation, Effect Prediction & ClinVar Integration

A whole-genome sequencing run yields 4–5 million variants per individual. A list of chromosomal coordinates and alternative alleles is biologically inert without annotation. Variant annotation overlays genomic context onto each variant: identifying which transcript it impacts, whether it disrupts a protein coding sequence or splice junction, its frequency in global human populations, and whether it has been cataloged in clinical disease registries.

The ACMG/AMP Pathogenicity Framework

The American College of Medical Genetics and Genomics (ACMG) and the Association for Molecular Pathology (AMP) established standard criteria for classifying sequence variants into 5 tiers: Pathogenic, Likely Pathogenic, Variant of Uncertain Significance (VUS), Likely Benign, and Benign. Evidence is weighted hierarchically (e.g. PVS1 for null variants in genes where loss-of-function is an established disease mechanism; PM2 for extreme rarity in gnomAD).

1. High-Throughput Annotation with Ensembl VEP

Ensembl VEP is the premier tool for annotating human and model organism variants against GENCODE and RefSeq transcript sets:

# Execute VEP with gnomAD, ClinVar, CADD, and SpliceAI plugins
vep \
    --input_file cohort_filtered_snps.vcf.gz \
    --output_file annotated_variants.vcf.gz \
    --format vcf --vcf --compress_output bgzip \
    --assembly GRCh38 --species homo_sapiens \
    --offline --cache --dir_cache /databases/vep_cache \
    --everything \
    --custom /databases/gnomad.genomes.v4.0.vcf.gz,gnomAD_AF,vcf,exact,0,AF,AF_nfe,AF_afr \
    --custom /databases/clinvar_2026.vcf.gz,ClinVar,vcf,exact,0,CLNSIG,CLNREVSTAT,CLNDN \
    --fork 8

2. Automated Variant Prioritization Script

# Sift for candidate rare pathogenic mutations using bcftools
# Criteria: Pass filters, High/Moderate impact, gnomAD AF < 0.001 (rare), ClinVar Pathogenic
bcftools filter \
    -i 'FILTER="PASS" && (CSQ ~ "HIGH" || CSQ ~ "MODERATE") && (gnomAD_AF < 0.001 || gnomAD_AF=".")' \
    annotated_variants.vcf.gz \
    -Oz -o candidate_rare_pathogenic.vcf.gz

bcftools index -t candidate_rare_pathogenic.vcf.gz
⚠️

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 ↗