Variants annotation
Presentation
Ensembl VEP
VEP is a powerful and flexible tool for annotating, analyzing, and prioritizing genomic variants. It is particularly useful in cancer genomics, where we need to understand the potential functional impact of somatic mutations for research and clinical decisions.
With VEP we can start to address questions such as:
- How damaging is a specific somatic mutation according to reference databases?
- Is the mutation already known in this particular cancer type?
- What is the predicted functional impact of this mutation in the tumour context?
- Are there known associations between this mutation and specific drugs or drug classes?
- How common the mutation is in various populations?
Why do we need a tool like VEP?
In a typical cancer exome or panel we may obtain thousands of somatic SNVs and indels per sample. These variants:
- Are not analyzed one by one by hand.
- Need to be standardized (same genome build, same transcript model, consistent consequence terms).
- Need to be prioritized so that we can focus on potentially actionable or biologically relevant changes.
A tool like VEP allows us to:
- Run high‑throughput annotation of all variants in a VCF.
- Attach consistent functional predictions and database links (ClinVar, COSMIC, etc.).
- Reduce a long list of raw calls to a shorter list of interpretable candidate variants for downstream review.
Key Concepts
Install VEP
This course uses VEP v116 (2026). Some features and default behaviors may differ in other versions. Always check the release notes for your version.
Setup
All the environment is prepared for you, you just need to create a symbolic link to access the data from your project directory (skip this if you already did it on the quality control page, the command would then print File exists):
cd ~/project
ln -s /data .If you want to install VEP locally or on your compute cluster, you can follow the instructions below.
# Installing Conda #https://docs.anaconda.com/miniconda/
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
source ~/miniconda3/bin/activate
conda init --all
# Using Conda
conda create -n vep samtools python=3.10 ensembl-vep=116.2
# conda install -c bioconda ensembl-vep=116.2 # if installing in current env
# Activate VEP's env
conda activate vep
# PLEASE DO NOT RUN During the course, only if you follow locally (~60 min, > 25GB)
# Install all the data locally
#vep_install -a cf -s homo_sapiens -y GRCh38 --CONVERT (this command will download in $HOME/.vep the cache folder)
#vep_install -a cf -s homo_sapiens -y GRCh38 -c $HOME/project/data/vep --CONVERT (this specify the cache folder)
# Plugins installation
# vep_install -a p --PLUGINS allInstead of conda you could try installing mamba. If you are on Unix-based system this is simple mamba. . In case you are following locally, you can environment with mamba activate ngs-tools.
Transcript Selection
VEP can report consequences for all transcripts overlapping a variant. However, this often results in multiple annotations per variant. Several approaches are available to handle this:
--pick: Selects one consequence per variant based on a predefined hierarchy (e.g., HIGH > MODERATE > LOW > MODIFIER)--pick_allele: Selects one consequence per variant allele--pick_allele_gene: Selects one consequence per variant allele per gene--per_gene: Selects one consequence per gene--flag_pick: Flags the selected consequence while retaining others
Consequence Priority
VEP ranks consequences by severity: Figure 1: Image from the Ensembl VEP website.
| Consequence | Impact | Description |
|---|---|---|
| Transcript ablation | HIGH | Complete deletion of a gene transcript |
| Splice acceptor variant | HIGH | Variant at the 3’ end of an intron that disrupts RNA splicing |
| Splice donor variant | HIGH | Variant at the 5’ end of an intron that disrupts RNA splicing |
| Stop gained | HIGH | Variant that introduces a premature stop codon |
| Frameshift variant | HIGH | Insertion/deletion causing reading frame disruption |
| Stop lost | HIGH | Variant removes stop codon, extending protein length |
| Start lost | HIGH | Loss of start codon prevents proper translation initiation |
| Transcript amplification | HIGH | Increased copy number of transcript regions |
| Inframe insertion | MODERATE | Insertion of bases in multiples of 3, no frameshift |
| Inframe deletion | MODERATE | Deletion of bases in multiples of 3, no frameshift |
| Missense variant | MODERATE | Single nucleotide change causing amino acid substitution |
| Protein altering variant | MODERATE | Variant changes protein sequence |
Practical Exercises
In case that you do not have the Mutect2 call and/or the CNVkit call, you can obtain those from here. In this folder there are also a README.md and some folders containing preprocessed data for the additional resources that we will use with Ensembl-VEP. The script that is used to download all the databases resources mentioned in the exercises is in the course repo’s scripts folder.
If you are following along the course you should download and extract the data into your $HOME/project/ folder.
--cache option
By default VEP will install the cache and plugins into your home folder (~/.vep/) and if that is the case, then you can leave it like --cache. - If you are following along the course, you need to specify the cache location as --cache ${HOME}/project/data/.vep (which accesses /data/.vep via the symbolic link you created).
Exercise 1
Objective: Annotate a small VCF file and understand the basic output format.
Input Data:
##fileformat=VCFv4.2
#CHROM POS ID REF ALT QUAL FILTER INFO
chr7 55191822 rs121434568 T G . PASS .
chr12 25245350 rs121913529 C T . PASS .
chr1 114713908 rs11554290 T C . PASS .
chr7 140753336 rs113488022 A T . PASS .
chr3 179218303 rs104886003 G A . PASS .
chr3 179234297 rs121913279 A G . PASS .
chr17 7675088 rs28934578 C T . PASS .
chr17 7674894 rs397516436 G A . PASS .
chr17 7673802 rs28934576 C T . PASS .
chr2 208248388 rs121913500 C T . PASS .
chr17 43106487 rs28897672 A C . PASS .
chr13 32398489 rs11571833 A T . PASS .
chr10 87933147 rs121909224 C T . PASS .
chr5 112839520 rs121913224 AAAAGA A . PASS .
Task: Annotate these variants using VEP and identify which genes are affected.
Hint: You can generate your own VCF (pasting the command below in your terminal) or you can download it from here Download the vcf file
This script creates a local VCF file, based on the VCF v4.2 standards.
echo -e '##fileformat=VCFv4.2
##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">
#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO
chr7\t55191822\trs121434568\tT\tG\t.\tPASS\t.
chr12\t25245350\trs121913529\tC\tT\t.\tPASS\t.
chr1\t114713908\trs11554290\tT\tC\t.\tPASS\t.
chr7\t140753336\trs113488022\tA\tT\t.\tPASS\t.
chr3\t179218303\trs104886003\tG\tA\t.\tPASS\t.
chr3\t179234297\trs121913279\tA\tG\t.\tPASS\t.
chr17\t7675088\trs28934578\tC\tT\t.\tPASS\t.
chr17\t7674894\trs397516436\tG\tA\t.\tPASS\t.
chr17\t7673802\trs28934576\tC\tT\t.\tPASS\t.
chr2\t208248388\trs121913500\tC\tT\t.\tPASS\t.
chr17\t43106487\trs28897672\tA\tC\t.\tPASS\t.
chr13\t32398489\trs11571833\tA\tT\t.\tPASS\t.
chr10\t87933147\trs121909224\tC\tT\t.\tPASS\t.
chr5\t112839520\trs121913224\tAAAAGA\tA\t.\tPASS\t.' > cancer_variants.vcfVEP can be provided with a VCF file as an input (or vcf.gz + index) file or other formats, see documentation here
vep -i cancer_variants.vcf \
--cache ${HOME}/project/data/.vep \
--species homo_sapiens \
--assembly GRCh38 \
--offline --format vcf \
--symbol \
--force_overwrite \
--domains \
--sift b \
--polyphen b \
--output_file output.txt#!/usr/bin/env bash
# Make sure you have 14 variants
grep -v '^#' cancer_variants.vcf | wc -l # it should show 14
# Run VEP (a few seconds with the local cache)
vep -i cancer_variants.vcf \
--cache ${HOME}/project/data/.vep \
--species homo_sapiens \
--offline \
--force_overwrite \
--assembly GRCh38 \
--format vcf \
--symbol \
--sift b \
--polyphen b \
--pick \
--domains \
--output_file output.txtSome of the variants affect:
## VEP command-line: vep --assembly GRCh38 --cache --database 0 --dir_cache [PATH]/.vep --domains --force_overwrite --format vcf --input_file cancer_variants.vcf --offline --output_file output.txt --pick --polyphen b --sift b --symbol
#Uploaded_variation Location Allele Gene Feature Feature_type Consequence cDNA_position CDS_position Protein_position Amino_acids Codons Existing_variation Extra
rs121434568 chr7:55191822 G ENSG00000146648 ENST00000275493 Transcript missense_variant 2834 2573 858 L/R cTg/cGg - IMPACT=MODERATE;STRAND=1;SYMBOL=EGFR;SYMBOL_SOURCE=HGNC;HGNC_ID=HGNC:3236;SIFT=deleterious_low_confidence(0);PolyPhen=probably_damaging(0.997);DOMAINS=Gene3D:1.10.510.10,PDB-ENSP_mappings:1m14.A,PDB-ENSP_mappings:1m17.A,PDB-ENSP_mappings:1xkk.A,PDB-ENSP_mappings:2eb2.A,PDB-ENSP_mappings:2eb3.A,PDB-ENSP_mappings:2gs2.A,PDB-ENSP_mappings:2gs6.A,PDB-ENSP_mappings:2gs7.A,PDB-ENSP_mappings:2gs7.B,PDB-ENSP_mappings:2itn.A,PDB-ENSP_mappings:2ito.A,PDB-ENSP_mappings:2itp.A,PDB-ENSP_mappings:2itq.A,PDB-ENSP_mappings:2itt.A,PDB-ENSP_mappings:2itu.A,PDB-ENSP_mappings:2itv.A,PDB-ENSP_mappings:2itw.A,PDB-ENSP_mappings:2itx.A,PDB-ENSP_mappings:2ity.A,PDB-ENSP_mappings:2itz.A,PDB-ENSP_mappings:2j5e.A,PDB-ENSP_mappings:2j5f.A,PDB-ENSP_mappings:2j6m.A,PDB-ENSP_mappings:2jit.A,PDB-ENSP_mappings:2jit.B,PDB-ENSP_mappings:2jiu.A,PDB-ENSP_mappings:2jiu.B,PDB-ENSP_mappings:2jiv.A,PDB-ENSP_mappings:2jiv.B,PDB-ENSP_mappings:2rf9.A,PDB-ENSP_mappings:2rf9.B,PDB-ENSP_mappings:2rfd.A,PDB-ENSP_mappings:2rfd.B,PDB-ENSP_mappings:2rfe.A,PDB-ENSP_mappings:2rfe.B,PDB-ENSP_mappings:2rfe.C,PDB-ENSP_mappings:2rfe.D,PDB-ENSP_mappings:2rgp.A,PDB-ENSP_mappings:3bel.A,PDB-ENSP_mappings:3gop.A,PDB-ENSP_mappings:3gt8.A,PDB-ENSP_mappings:3gt8.B,PDB-ENSP_mappings:3gt8.C,PDB-ENSP_mappings:3gt8.D,PDB-ENSP_mappings:3ika.A,PDB-ENSP_mappings:3ika.B,PDB-ENSP_mappings:3lzb.A,PDB-ENSP_mappings:3lzb.B,PDB-ENSP_mappings:3lzb.C,PDB-ENSP_mappings:3lzb.D,PDB-ENSP_mappings:3lzb.E,PDB-ENSP_mappings:3lzb.F,PDB-ENSP_mappings:3lzb.G,PDB-ENSP_mappings:3lzb.H,PDB-ENSP_mappings:3poz.A,PDB-ENSP_mappings:3ug1.A,PDB-ENSP_mappings:3ug2.A,PDB-ENSP_mappings:3vjn.A,PDB-ENSP_mappings:3vjo.A,PDB-ENSP_mappings:3w2o.A,PDB-ENSP_mappings:3w2p.A,PDB-ENSP_mappings:3w2q.A,PDB-ENSP_mappings:3w2r.A,PDB-ENSP_mappings:3w2s.A,PDB-ENSP_mappings:3w32.A,PDB-ENSP_mappings:3w33.A,PDB-ENSP_mappings:4g5j.A,PDB-ENSP_mappings:4g5p.A,PDB-ENSP_mappings:4g5p.B,PDB-ENSP_mappings:4hjo.A,PDB-ENSP_mappings:4i1z.A,PDB-ENSP_mappings:4i20.A,PDB-ENSP_mappings:4i21.A,PDB-ENSP_mappings:4i21.B,PDB-ENSP_mappings:4i22.A,PDB-ENSP_mappings:4i23.A,PDB-ENSP_mappings:4i24.A,PDB-ENSP_mappings:4i24.B,PDB-ENSP_mappings:4jq7.A,PDB-ENSP_mappings:4jq8.A,PDB-ENSP_mappings:4jr3.A,PDB-ENSP_mappings:4jrv.A,PDB-ENSP_mappings:4li5.A,PDB-ENSP_mappings:4ll0.A,PDB-ENSP_mappings:4ll0.B,PDB-ENSP_mappings:4lqm.A,PDB-ENSP_mappings:4lrm.A,PDB-ENSP_mappings:4lrm.B,PDB-ENSP_mappings:4lrm.C,PDB-ENSP_mappings:4lrm.D,PDB-ENSP_mappings:4lrm.E,PDB-ENSP_mappings:4r3p.A,PDB-ENSP_mappings:4r3r.A,PDB-ENSP_mappings:4r5s.A,PDB-ENSP_mappings:4riw.B,PDB-ENSP_mappings:4riw.D,PDB-ENSP_mappings:4rix.B,PDB-ENSP_mappings:4rix.D,PDB-ENSP_mappings:4riy.B,PDB-ENSP_mappings:4riy.D,PDB-ENSP_mappings:4rj4.A,PDB-ENSP_mappings:4rj5.A,PDB-ENSP_mappings:4rj6.A,PDB-ENSP_mappings:4rj7.A,PDB-ENSP_mappings:4rj8.A,PDB-ENSP_mappings:4tks.A,PDB-ENSP_mappings:4wd5.A,PDB-ENSP_mappings:4wd5.B,PDB-ENSP_mappings:4wkq.A,PDB-ENSP_mappings:4wrg.A,PDB-ENSP_mappings:4zau.A,PDB-ENSP_mappings:4zjv.A,PDB-ENSP_mappings:4zjv.B,PDB-ENSP_mappings:4zse.A,PDB-ENSP_mappings:4zse.B,PDB-ENSP_mappings:4zse.C,PDB-ENSP_mappings:4zse.D,PDB-ENSP_mappings:5c8k.A,PDB-ENSP_mappings:5c8m.A,PDB-ENSP_mappings:5c8n.A,PDB-ENSP_mappings:5cal.A,PDB-ENSP_mappings:5can.A,PDB-ENSP_mappings:5cao.A,PDB-ENSP_mappings:5cap.A,PDB-ENSP_mappings:5caq.A,PDB-ENSP_mappings:5cas.A,PDB-ENSP_mappings:5cau.A,PDB-ENSP_mappings:5cav.A,PDB-ENSP_mappings:5cnn.A,PDB-ENSP_mappings:5cnn.B,PDB-ENSP_mappings:5cno.A,PDB-ENSP_mappings:5cno.B,PDB-ENSP_mappings:5cno.X,PDB-ENSP_mappings:5czh.A,PDB-ENSP_mappings:5czi.A,PDB-ENSP_mappings:5d41.A,PDB-ENSP_mappings:5d41.B,PDB-ENSP_mappings:5edp.A,PDB-ENSP_mappings:5edq.A,PDB-ENSP_mappings:5edr.A,PDB-ENSP_mappings:5em5.A,PDB-ENSP_mappings:5em6.A,PDB-ENSP_mappings:5em7.A,PDB-ENSP_mappings:5em8.A,PDB-ENSP_mappings:5fed.A,PDB-ENSP_mappings:5fee.A,PDB-ENSP_mappings:5feq.A,PDB-ENSP_mappings:5gmp.A,PDB-ENSP_mappings:5gnk.A,PDB-ENSP_mappings:5gty.A,PDB-ENSP_mappings:5gty.B,PDB-ENSP_mappings:5gty.C,PDB-ENSP_mappings:5gty.D,PDB-ENSP_mappings:5gty.E,PDB-ENSP_mappings:5gty.F,PDB-ENSP_mappings:5gty.G,PDB-ENSP_mappings:5gty.H,PDB-ENSP_mappings:5gtz.A,PDB-ENSP_mappings:5hcx.A,PDB-ENSP_mappings:5hcy.A,PDB-ENSP_mappings:5hcz.A,PDB-ENSP_mappings:5hg5.A,PDB-ENSP_mappings:5hg7.A,PDB-ENSP_mappings:5hg8.A,PDB-ENSP_mappings:5hg9.A,PDB-ENSP_mappings:5hib.A,PDB-ENSP_mappings:5hic.A,PDB-ENSP_mappings:5j9y.A,PDB-ENSP_mappings:5j9z.A,PDB-ENSP_mappings:5jeb.A,PDB-ENSP_mappings:5u8l.A,PDB-ENSP_mappings:5ug8.A,PDB-ENSP_mappings:5ug9.A,PDB-ENSP_mappings:5uga.A,PDB-ENSP_mappings:5ugb.A,PDB-ENSP_mappings:5ugc.A,PDB-ENSP_mappings:5uwd.A,PDB-ENSP_mappings:5x26.A,PDB-ENSP_mappings:5x27.A,PDB-ENSP_mappings:5x28.A,PDB-ENSP_mappings:5x2a.A,PDB-ENSP_mappings:5x2a.B,PDB-ENSP_mappings:5x2a.C,PDB-ENSP_mappings:5x2a.D,PDB-ENSP_mappings:5x2c.A,PDB-ENSP_mappings:5x2c.B,PDB-ENSP_mappings:5x2f.A,PDB-ENSP_mappings:5x2f.B,PDB-ENSP_mappings:5x2f.C,PDB-ENSP_mappings:5x2f.D,PDB-ENSP_mappings:5x2k.A,PDB-ENSP_mappings:5xdk.A,PDB-ENSP_mappings:5xdl.A,PDB-ENSP_mappings:5xgm.A,PDB-ENSP_mappings:5xgn.A,PDB-ENSP_mappings:5xgn.B,PDB-ENSP_mappings:5y25.A,PDB-ENSP_mappings:5y9t.A,PDB-ENSP_mappings:5yu9.A,PDB-ENSP_mappings:5yu9.B,PDB-ENSP_mappings:5yu9.C,PDB-ENSP_mappings:5yu9.D,PDB-ENSP_mappings:5zto.A,PDB-ENSP_mappings:5zwj.A,PDB-ENSP_mappings:6d8e.A,PDB-ENSP_mappings:6duk.A,PDB-ENSP_mappings:6duk.B,PDB-ENSP_mappings:6duk.C,PDB-ENSP_mappings:6duk.D,PDB-ENSP_mappings:6duk.E,PDB-ENSP_mappings:6duk.F,PDB-ENSP_mappings:6jrj.A,PDB-ENSP_mappings:6jrk.A,PDB-ENSP_mappings:6jrx.A,PDB-ENSP_mappings:6jwl.A,PDB-ENSP_mappings:6jx0.A,PDB-ENSP_mappings:6jx4.A,PDB-ENSP_mappings:6jxt.A,PDB-ENSP_mappings:6jz0.A,PDB-ENSP_mappings:6lub.A,PDB-ENSP_mappings:6lud.A,PDB-ENSP_mappings:6p1d.A,PDB-ENSP_mappings:6p1d.B,PDB-ENSP_mappings:6p1d.C,PDB-ENSP_mappings:6p1d.D,PDB-ENSP_mappings:6p1l.A,PDB-ENSP_mappings:6p1l.B,PDB-ENSP_mappings:6p1l.C,PDB-ENSP_mappings:6p1l.D,PDB-ENSP_mappings:6p8q.A,PDB-ENSP_mappings:6p8q.B,PDB-ENSP_mappings:6p8q.C,PDB-ENSP_mappings:6p8q.D,PDB-ENSP_mappings:6s89.A,PDB-ENSP_mappings:6s8a.A,PDB-ENSP_mappings:6s9b.A,PDB-ENSP_mappings:6s9c.A,PDB-ENSP_mappings:6s9d.A,PDB-ENSP_mappings:6tfu.A,PDB-ENSP_mappings:6tfu.B,PDB-ENSP_mappings:6tfv.A,PDB-ENSP_mappings:6tfv.B,PDB-ENSP_mappings:6tfw.A,PDB-ENSP_mappings:6tfw.B,PDB-ENSP_mappings:6tfy.A,PDB-ENSP_mappings:6tfy.B,PDB-ENSP_mappings:6tfz.A,PDB-ENSP_mappings:6tfz.B,PDB-ENSP_mappings:6tg0.A,PDB-ENSP_mappings:6tg0.B,PDB-ENSP_mappings:6tg1.A,PDB-ENSP_mappings:6tg1.B,PDB-ENSP_mappings:6v5n.A,PDB-ENSP_mappings:6v5n.B,PDB-ENSP_mappings:6v5n.C,PDB-ENSP_mappings:6v5n.D,PDB-ENSP_mappings:6v5p.A,PDB-ENSP_mappings:6v5p.B,PDB-ENSP_mappings:6v5p.C,PDB-ENSP_mappings:6v5p.D,PDB-ENSP_mappings:6v66.A,PDB-ENSP_mappings:6v66.B,PDB-ENSP_mappings:6v66.C,PDB-ENSP_mappings:6v66.D,PDB-ENSP_mappings:6v6k.A,PDB-ENSP_mappings:6v6k.B,PDB-ENSP_mappings:6v6k.C,PDB-ENSP_mappings:6v6k.D,PDB-ENSP_mappings:6v6k.E,PDB-ENSP_mappings:6v6k.F,PDB-ENSP_mappings:6v6k.G,PDB-ENSP_mappings:6v6k.H,PDB-ENSP_mappings:6v6o.A,PDB-ENSP_mappings:6v6o.B,PDB-ENSP_mappings:6v6o.C,PDB-ENSP_mappings:6v6o.D,PDB-ENSP_mappings:6v6o.E,PDB-ENSP_mappings:6v6o.F,PDB-ENSP_mappings:6v6o.G,PDB-ENSP_mappings:6v6o.H,PDB-ENSP_mappings:6vh4.A,PDB-ENSP_mappings:6vhn.A,PDB-ENSP_mappings:6vhp.A,PDB-ENSP_mappings:6wa2.A,PDB-ENSP_mappings:6wa2.B,PDB-ENSP_mappings:6wa2.C,PDB-ENSP_mappings:6wa2.D,PDB-ENSP_mappings:6wak.A,PDB-ENSP_mappings:6wak.B,PDB-ENSP_mappings:6wak.C,PDB-ENSP_mappings:6wak.D,PDB-ENSP_mappings:6wxn.A,PDB-ENSP_mappings:6wxn.B,PDB-ENSP_mappings:6wxn.C,PDB-ENSP_mappings:6wxn.D,PDB-ENSP_mappings:6xl4.A,PDB-ENSP_mappings:6xl4.B,PDB-ENSP_mappings:6xl4.C,PDB-ENSP_mappings:6xl4.D,PDB-ENSP_mappings:6z4b.A,PDB-ENSP_mappings:6z4b.B,PDB-ENSP_mappings:6z4d.A,PDB-ENSP_mappings:6z4d.B,PDB-ENSP_mappings:7a2a.A,PDB-ENSP_mappings:7a2a.B,PDB-ENSP_mappings:7a6i.A,PDB-ENSP_mappings:7a6j.A,PDB-ENSP_mappings:7a6j.B,PDB-ENSP_mappings:7a6k.A,PDB-ENSP_mappings:7a6k.B,PDB-ENSP_mappings:7a6k.C,PDB-ENSP_mappings:7a6k.D,PDB-ENSP_mappings:7aei.A,PDB-ENSP_mappings:7aem.A,PDB-ENSP_mappings:7b85.A,PDB-ENSP_mappings:7er2.A,PDB-ENSP_mappings:7jxi.A,PDB-ENSP_mappings:7jxi.B,PDB-ENSP_mappings:7jxi.C,PDB-ENSP_mappings:7jxi.D,PDB-ENSP_mappings:7jxk.A,PDB-ENSP_mappings:7jxk.B,PDB-ENSP_mappings:7jxk.C,PDB-ENSP_mappings:7jxk.D,PDB-ENSP_mappings:7jxk.E,PDB-ENSP_mappings:7jxk.F,PDB-ENSP_mappings:7jxl.A,PDB-ENSP_mappings:7jxl.B,PDB-ENSP_mappings:7jxl.C,PDB-ENSP_mappings:7jxl.D,PDB-ENSP_mappings:7jxm.A,PDB-ENSP_mappings:7jxm.B,PDB-ENSP_mappings:7jxm.C,PDB-ENSP_mappings:7jxm.D,PDB-ENSP_mappings:7jxp.A,PDB-ENSP_mappings:7jxp.B,PDB-ENSP_mappings:7jxp.C,PDB-ENSP_mappings:7jxp.D,PDB-ENSP_mappings:7jxp.E,PDB-ENSP_mappings:7jxp.F,PDB-ENSP_mappings:7jxq.A,PDB-ENSP_mappings:7jxq.B,PDB-ENSP_mappings:7jxq.C,PDB-ENSP_mappings:7jxq.D,PDB-ENSP_mappings:7jxw.A,PDB-ENSP_mappings:7jxw.B,PDB-ENSP_mappings:7jxw.C,PDB-ENSP_mappings:7jxw.D,PDB-ENSP_mappings:7k1h.A,PDB-ENSP_mappings:7k1h.B,PDB-ENSP_mappings:7k1h.C,PDB-ENSP_mappings:7k1h.D,PDB-ENSP_mappings:7k1h.E,PDB-ENSP_mappings:7k1h.F,PDB-ENSP_mappings:7k1i.A,PDB-ENSP_mappings:7kxz.A,PDB-ENSP_mappings:7ky0.A,PDB-ENSP_mappings:7ky0.B,PDB-ENSP_mappings:7ky0.C,PDB-ENSP_mappings:7ky0.D,PDB-ENSP_mappings:7lg8.A,PDB-ENSP_mappings:7lg8.B,PDB-ENSP_mappings:7lg8.C,PDB-ENSP_mappings:7lg8.D,PDB-ENSP_mappings:7lgs.A,PDB-ENSP_mappings:7lgs.B,PDB-ENSP_mappings:7lgs.C,PDB-ENSP_mappings:7lgs.D,PDB-ENSP_mappings:7ltx.A,PDB-ENSP_mappings:7ltx.B,PDB-ENSP_mappings:7ltx.C,PDB-ENSP_mappings:7ltx.D,PDB-ENSP_mappings:7oxb.A,PDB-ENSP_mappings:7si1.A,PDB-ENSP_mappings:7syd.A,PDB-ENSP_mappings:7syd.B,PDB-ENSP_mappings:7sye.A,PDB-ENSP_mappings:7sye.B,PDB-ENSP_mappings:7sz0.A,PDB-ENSP_mappings:7sz0.B,PDB-ENSP_mappings:7sz1.A,PDB-ENSP_mappings:7sz1.B,PDB-ENSP_mappings:7sz5.A,PDB-ENSP_mappings:7sz5.B,PDB-ENSP_mappings:7sz7.A,PDB-ENSP_mappings:7sz7.B,PDB-ENSP_mappings:7t4i.A,PDB-ENSP_mappings:7t4j.A,PDB-ENSP_mappings:7t4j.B,PDB-ENSP_mappings:7tvd.A,PDB-ENSP_mappings:7u98.A,PDB-ENSP_mappings:7u98.B,PDB-ENSP_mappings:7u98.C,PDB-ENSP_mappings:7u98.D,PDB-ENSP_mappings:7u99.A,PDB-ENSP_mappings:7u9a.A,PDB-ENSP_mappings:7ukv.A,PDB-ENSP_mappings:7ukw.A,PDB-ENSP_mappings:7ukw.B,PDB-ENSP_mappings:7ukw.C,PDB-ENSP_mappings:7ukw.D,PDB-ENSP_mappings:7vra.A,PDB-ENSP_mappings:7vre.A,PDB-ENSP_mappings:7zym.A,PDB-ENSP_mappings:7zyn.A,PDB-ENSP_mappings:7zyp.A,PDB-ENSP_mappings:7zyq.A,PDB-ENSP_mappings:7zyq.B,PDB-ENSP_mappings:8a27.A,PDB-ENSP_mappings:8a2a.A,PDB-ENSP_mappings:8a2b.A,PDB-ENSP_mappings:8a2d.A,PDB-ENSP_mappings:8d73.A,PDB-ENSP_mappings:8d73.B,PDB-ENSP_mappings:8d76.A,PDB-ENSP_mappings:8d76.B,PDB-ENSP_mappings:8dsw.A,PDB-ENSP_mappings:8eme.A,PDB-ENSP_mappings:8eme.B,PDB-ENSP_mappings:8f1h.A,PDB-ENSP_mappings:8f1w.A,PDB-ENSP_mappings:8f1w.B,PDB-ENSP_mappings:8f1w.C,PDB-ENSP_mappings:8f1w.D,PDB-ENSP_mappings:8f1x.A,PDB-ENSP_mappings:8f1y.A,PDB-ENSP_mappings:8f1z.A,PDB-ENSP_mappings:8fv3.A,PDB-ENSP_mappings:8fv3.B,PDB-ENSP_mappings:8fv3.C,PDB-ENSP_mappings:8fv3.D,PDB-ENSP_mappings:8fv4.A,PDB-ENSP_mappings:8fv4.B,PDB-ENSP_mappings:8fv4.C,PDB-ENSP_mappings:8fv4.D,PDB-ENSP_mappings:8g63.A,PDB-ENSP_mappings:8gb4.A,PDB-ENSP_mappings:8gb4.B,PDB-ENSP_mappings:8gb4.C,PDB-ENSP_mappings:8gb4.D,PDB-ENSP_mappings:8gk5.A,PDB-ENSP_mappings:8gk5.B,PDB-ENSP_mappings:8gk5.C,PDB-ENSP_mappings:8gk5.D,PDB-ENSP_mappings:8h7x.A,PDB-ENSP_mappings:8h7x.B,PDB-ENSP_mappings:8hv1.A,PDB-ENSP_mappings:8hv2.A,PDB-ENSP_mappings:8hv3.A,PDB-ENSP_mappings:8hv4.A,PDB-ENSP_mappings:8hv5.A,PDB-ENSP_mappings:8hv6.A,PDB-ENSP_mappings:8hv7.A,PDB-ENSP_mappings:8hv8.A,PDB-ENSP_mappings:8hv9.A,PDB-ENSP_mappings:8hva.A,PDB-ENSP_mappings:8hy7.A,PDB-ENSP_mappings:8kfq.A,PDB-ENSP_mappings:8pnz.A,PDB-ENSP_mappings:8po0.A,PDB-ENSP_mappings:8po1.A,PDB-ENSP_mappings:8po2.A,PDB-ENSP_mappings:8po2.B,PDB-ENSP_mappings:8po2.D,PDB-ENSP_mappings:8po3.A,PDB-ENSP_mappings:8po4.A,PDB-ENSP_mappings:8po4.B,PDB-ENSP_mappings:8sc7.A,PDB-ENSP_mappings:8tjl.A,PDB-ENSP_mappings:8to3.A,PDB-ENSP_mappings:8to3.B,PDB-ENSP_mappings:8to3.C,PDB-ENSP_mappings:8to3.D,PDB-ENSP_mappings:8to4.A,PDB-ENSP_mappings:8to4.B,PDB-ENSP_mappings:8to4.C,PDB-ENSP_mappings:8to4.D,PDB-ENSP_mappings:8wd4.A,PDB-ENSP_mappings:9by4.A,PDB-ENSP_mappings:9by6.A,PDB-ENSP_mappings:9d3v.A,PDB-ENSP_mappings:9d3w.A,PDB-ENSP_mappings:9df2.A,PDB-ENSP_mappings:9df3.A,PDB-ENSP_mappings:9df4.A,PDB-ENSP_mappings:9ews.A,PDB-ENSP_mappings:9ewt.A,PDB-ENSP_mappings:9ewt.B,PDB-ENSP_mappings:9fqp.A,PDB-ENSP_mappings:9fqs.A,PDB-ENSP_mappings:9frd.A,PDB-ENSP_mappings:9fzr.A,PDB-ENSP_mappings:9fzs.A,PDB-ENSP_mappings:9gc4.A,PDB-ENSP_mappings:9gc4.B,PDB-ENSP_mappings:9gc4.D,PDB-ENSP_mappings:9gc5.A,PDB-ENSP_mappings:9gc5.B,PDB-ENSP_mappings:9gc6.A,PDB-ENSP_mappings:9gc6.B,PDB-ENSP_mappings:9gdv.A,PDB-ENSP_mappings:9gdv.B,PDB-ENSP_mappings:9gi9.A,PDB-ENSP_mappings:9gl7.A,PDB-ENSP_mappings:9gl8.A,PDB-ENSP_mappings:9gl9.A,PDB-ENSP_mappings:9h46.A,PDB-ENSP_mappings:9hbo.A,PDB-ENSP_mappings:9hbo.B,PDB-ENSP_mappings:9jq1.A,AFDB-ENSP_mappings:AF-P00533-F1,Phobius:CYTOPLASMIC_DOMAIN,Pfam:PF07714,PIRSF:PIRSF000619,PROSITE_profiles:PS50011,PANTHER:PTHR24416,SMART:SM00219,Superfamily:SSF56112,CDD:cd05108
rs121913529 chr12:25245350 T ENSG00000133703 ENST00000311936 Transcript missense_variant 225 35 12 G/D gGt/gAt - IMPACT=MODERATE;STRAND=-1;SYMBOL=KRAS;SYMBOL_SOURCE=HGNC;HGNC_ID=HGNC:6407;SIFT=deleterious_low_confidence(0.04);DOMAINS=Low_complexity_(Seg):seg,Superfamily:SSF52540,Gene3D:3.40.50.300,NCBIFAM:TIGR00231,Pfam:PF00071,SMART:SM00174,SMART:SM00173,SMART:SM00175,CDD:cd04138,Prints:PR00449,PANTHER:PTHR24070,PROSITE_profiles:PS51421,PROSITE_profiles:PS51419,PROSITE_profiles:PS51420,AFDB-ENSP_mappings:AF-P01116-F1
rs113488022 chr7:140753336 T ENSG00000157764 ENST00000646891 Transcript missense_variant 2025 1799 600 V/E gTg/gAg - IMPACT=MODERATE;STRAND=-1;SYMBOL=BRAF;SYMBOL_SOURCE=HGNC;HGNC_ID=HGNC:1097;SIFT=deleterious_low_confidence(0);PolyPhen=probably_damaging(0.935);DOMAINS=Gene3D:1.10.510.10,PDB-ENSP_mappings:1uwh.A,PDB-ENSP_mappings:1uwh.B,PDB-ENSP_mappings:1uwj.A,PDB-ENSP_mappings:1uwj.B,PDB-ENSP_mappings:2fb8.A,PDB-ENSP_mappings:2fb8.B,PDB-ENSP_mappings:3c4c.A,PDB-ENSP_mappings:3c4c.B,PDB-ENSP_mappings:3d4q.A,PDB-ENSP_mappings:3d4q.B,PDB-ENSP_mappings:3idp.A,PDB-ENSP_mappings:3idp.B,PDB-ENSP_mappings:3ii5.A,PDB-ENSP_mappings:3ii5.B,PDB-ENSP_mappings:3og7.A,PDB-ENSP_mappings:3og7.B,PDB-ENSP_mappings:3ppj.A,PDB-ENSP_mappings:3ppj.B,PDB-ENSP_mappings:3ppk.A,PDB-ENSP_mappings:3ppk.B,PDB-ENSP_mappings:3prf.A,PDB-ENSP_mappings:3prf.B,PDB-ENSP_mappings:3pri.A,PDB-ENSP_mappings:3pri.B,PDB-ENSP_mappings:3psb.A,PDB-ENSP_mappings:3psb.B,PDB-ENSP_mappings:3psd.A,PDB-ENSP_mappings:3psd.B,PDB-ENSP_mappings:3q4c.A,PDB-ENSP_mappings:3q4c.B,PDB-ENSP_mappings:3q96.A,PDB-ENSP_mappings:3q96.B,PDB-ENSP_mappings:3skc.A,PDB-ENSP_mappings:3skc.B,PDB-ENSP_mappings:3tv4.A,PDB-ENSP_mappings:3tv4.B,PDB-ENSP_mappings:3tv6.A,PDB-ENSP_mappings:3tv6.B,PDB-ENSP_mappings:4cqe.A,PDB-ENSP_mappings:4cqe.B,PDB-ENSP_mappings:4dbn.A,PDB-ENSP_mappings:4dbn.B,PDB-ENSP_mappings:4e26.A,PDB-ENSP_mappings:4e26.B,PDB-ENSP_mappings:4e4x.A,PDB-ENSP_mappings:4e4x.B,PDB-ENSP_mappings:4ehe.A,PDB-ENSP_mappings:4ehe.B,PDB-ENSP_mappings:4ehg.A,PDB-ENSP_mappings:4ehg.B,PDB-ENSP_mappings:4fc0.A,PDB-ENSP_mappings:4fc0.B,PDB-ENSP_mappings:4fk3.A,PDB-ENSP_mappings:4fk3.B,PDB-ENSP_mappings:4g9c.A,PDB-ENSP_mappings:4g9c.B,PDB-ENSP_mappings:4g9r.A,PDB-ENSP_mappings:4g9r.B,PDB-ENSP_mappings:4h58.A,PDB-ENSP_mappings:4h58.B,PDB-ENSP_mappings:4h58.C,PDB-ENSP_mappings:4jvg.A,PDB-ENSP_mappings:4jvg.B,PDB-ENSP_mappings:4jvg.C,PDB-ENSP_mappings:4jvg.D,PDB-ENSP_mappings:4ksp.A,PDB-ENSP_mappings:4ksp.B,PDB-ENSP_mappings:4ksq.A,PDB-ENSP_mappings:4ksq.B,PDB-ENSP_mappings:4mbj.A,PDB-ENSP_mappings:4mbj.B,PDB-ENSP_mappings:4mne.B,PDB-ENSP_mappings:4mne.C,PDB-ENSP_mappings:4mne.F,PDB-ENSP_mappings:4mne.G,PDB-ENSP_mappings:4mnf.A,PDB-ENSP_mappings:4mnf.B,PDB-ENSP_mappings:4pp7.A,PDB-ENSP_mappings:4pp7.B,PDB-ENSP_mappings:4r5y.A,PDB-ENSP_mappings:4r5y.B,PDB-ENSP_mappings:4rzv.A,PDB-ENSP_mappings:4rzv.B,PDB-ENSP_mappings:4rzw.A,PDB-ENSP_mappings:4rzw.B,PDB-ENSP_mappings:4wo5.A,PDB-ENSP_mappings:4wo5.B,PDB-ENSP_mappings:4xv1.A,PDB-ENSP_mappings:4xv1.B,PDB-ENSP_mappings:4xv2.A,PDB-ENSP_mappings:4xv2.B,PDB-ENSP_mappings:4xv3.A,PDB-ENSP_mappings:4xv3.B,PDB-ENSP_mappings:4xv9.A,PDB-ENSP_mappings:4yht.A,PDB-ENSP_mappings:4yht.B,PDB-ENSP_mappings:5c9c.A,PDB-ENSP_mappings:5c9c.B,PDB-ENSP_mappings:5csw.A,PDB-ENSP_mappings:5csw.B,PDB-ENSP_mappings:5csx.A,PDB-ENSP_mappings:5ct7.A,PDB-ENSP_mappings:5ct7.B,PDB-ENSP_mappings:5fd2.A,PDB-ENSP_mappings:5fd2.B,PDB-ENSP_mappings:5hi2.A,PDB-ENSP_mappings:5hid.A,PDB-ENSP_mappings:5hid.B,PDB-ENSP_mappings:5hie.A,PDB-ENSP_mappings:5hie.B,PDB-ENSP_mappings:5hie.C,PDB-ENSP_mappings:5hie.D,PDB-ENSP_mappings:5ita.A,PDB-ENSP_mappings:5ita.B,PDB-ENSP_mappings:5jrq.A,PDB-ENSP_mappings:5jrq.B,PDB-ENSP_mappings:5jsm.A,PDB-ENSP_mappings:5jsm.B,PDB-ENSP_mappings:5jsm.C,PDB-ENSP_mappings:5jsm.D,PDB-ENSP_mappings:5jt2.A,PDB-ENSP_mappings:5jt2.B,PDB-ENSP_mappings:5jt2.C,PDB-ENSP_mappings:5jt2.D,PDB-ENSP_mappings:5val.A,PDB-ENSP_mappings:5val.B,PDB-ENSP_mappings:5vam.A,PDB-ENSP_mappings:5vam.B,PDB-ENSP_mappings:6b8u.A,PDB-ENSP_mappings:6b8u.B,PDB-ENSP_mappings:6cad.A,PDB-ENSP_mappings:6cad.B,PDB-ENSP_mappings:6n0p.A,PDB-ENSP_mappings:6n0p.B,PDB-ENSP_mappings:6n0q.A,PDB-ENSP_mappings:6n0q.B,PDB-ENSP_mappings:6nsq.A,PDB-ENSP_mappings:6nsq.B,PDB-ENSP_mappings:6nyb.A,PDB-ENSP_mappings:6p3d.A,PDB-ENSP_mappings:6p7g.A,PDB-ENSP_mappings:6p7g.B,PDB-ENSP_mappings:6p7g.C,PDB-ENSP_mappings:6p7g.D,PDB-ENSP_mappings:6pp9.A,PDB-ENSP_mappings:6q0j.A,PDB-ENSP_mappings:6q0j.B,PDB-ENSP_mappings:6q0k.A,PDB-ENSP_mappings:6q0k.B,PDB-ENSP_mappings:6q0t.A,PDB-ENSP_mappings:6q0t.B,PDB-ENSP_mappings:6u2g.B,PDB-ENSP_mappings:6u2h.C,PDB-ENSP_mappings:6u2h.D,PDB-ENSP_mappings:6uan.B,PDB-ENSP_mappings:6uan.C,PDB-ENSP_mappings:6uuo.A,PDB-ENSP_mappings:6uuo.B,PDB-ENSP_mappings:6v2u.A,PDB-ENSP_mappings:6v2u.B,PDB-ENSP_mappings:6v2w.A,PDB-ENSP_mappings:6v34.A,PDB-ENSP_mappings:6v34.B,PDB-ENSP_mappings:6xag.C,PDB-ENSP_mappings:6xag.D,PDB-ENSP_mappings:6xfp.A,PDB-ENSP_mappings:6xlo.A,PDB-ENSP_mappings:6xlo.B,PDB-ENSP_mappings:7k0v.A,PDB-ENSP_mappings:7k0v.B,PDB-ENSP_mappings:7k0v.C,PDB-ENSP_mappings:7k0v.D,PDB-ENSP_mappings:7m0t.A,PDB-ENSP_mappings:7m0u.A,PDB-ENSP_mappings:7m0v.A,PDB-ENSP_mappings:7m0w.A,PDB-ENSP_mappings:7m0x.A,PDB-ENSP_mappings:7m0y.A,PDB-ENSP_mappings:7m0z.A,PDB-ENSP_mappings:7mfd.A,PDB-ENSP_mappings:7mfe.A,PDB-ENSP_mappings:7mff.A,PDB-ENSP_mappings:7mff.B,PDB-ENSP_mappings:7p3v.A,PDB-ENSP_mappings:7p3v.B,PDB-ENSP_mappings:7shv.A,PDB-ENSP_mappings:7shv.B,PDB-ENSP_mappings:7zr0.K,PDB-ENSP_mappings:7zr5.K,PDB-ENSP_mappings:7zr6.K,PDB-ENSP_mappings:8c7x.A,PDB-ENSP_mappings:8c7x.B,PDB-ENSP_mappings:8c7y.A,PDB-ENSP_mappings:8c7y.B,PDB-ENSP_mappings:8dgs.A,PDB-ENSP_mappings:8dgt.A,PDB-ENSP_mappings:8f7o.A,PDB-ENSP_mappings:8f7o.B,PDB-ENSP_mappings:8f7p.A,PDB-ENSP_mappings:8f7p.B,PDB-ENSP_mappings:8qqg.A,PDB-ENSP_mappings:8qqg.B,PDB-ENSP_mappings:8qqg.C,PDB-ENSP_mappings:8vyo.A,PDB-ENSP_mappings:8vyp.C,PDB-ENSP_mappings:8vyq.C,PDB-ENSP_mappings:8vyr.A,PDB-ENSP_mappings:8vys.A,PDB-ENSP_mappings:8vyu.A,PDB-ENSP_mappings:8vyv.C,PDB-ENSP_mappings:8vyw.C,PDB-ENSP_mappings:9axx.B,PDB-ENSP_mappings:9axx.D,PDB-ENSP_mappings:9axy.A,PDB-ENSP_mappings:9bfb.A,PDB-ENSP_mappings:9bp8.A,AFDB-ENSP_mappings:AF-P15056-F1,Pfam:PF07714,PROSITE_profiles:PS50011,PANTHER:PTHR44329,SMART:SM00220,Superfamily:SSF56112,CDD:cd14062
rs397516436 chr17:7674894 A ENSG00000141510 ENST00000269305 Transcript stop_gained 779 637 213 R/* Cga/Tga - IMPACT=HIGH;STRAND=-1;SYMBOL=TP53;SYMBOL_SOURCE=HGNC;HGNC_ID=HGNC:11998;DOMAINS=PDB-ENSP_mappings:1gzh.A,PDB-ENSP_mappings:1gzh.C,PDB-ENSP_mappings:1kzy.A,PDB-ENSP_mappings:1kzy.B,PDB-ENSP_mappings:1tsr.A,PDB-ENSP_mappings:1tsr.B,PDB-ENSP_mappings:1tsr.C,PDB-ENSP_mappings:1tup.A,PDB-ENSP_mappings:1tup.B,PDB-ENSP_mappings:1tup.C,PDB-ENSP_mappings:1uol.A,PDB-ENSP_mappings:1uol.B,PDB-ENSP_mappings:1ycs.A,PDB-ENSP_mappings:2ac0.A,PDB-ENSP_mappings:2ac0.B,PDB-ENSP_mappings:2ac0.C,PDB-ENSP_mappings:2ac0.D,PDB-ENSP_mappings:2ady.A,PDB-ENSP_mappings:2ady.B,PDB-ENSP_mappings:2ahi.A,PDB-ENSP_mappings:2ahi.B,PDB-ENSP_mappings:2ahi.C,PDB-ENSP_mappings:2ahi.D,PDB-ENSP_mappings:2ata.A,PDB-ENSP_mappings:2ata.B,PDB-ENSP_mappings:2ata.C,PDB-ENSP_mappings:2ata.D,PDB-ENSP_mappings:2bim.A,PDB-ENSP_mappings:2bim.B,PDB-ENSP_mappings:2bin.A,PDB-ENSP_mappings:2bio.A,PDB-ENSP_mappings:2bip.A,PDB-ENSP_mappings:2biq.A,PDB-ENSP_mappings:2fej.A,PDB-ENSP_mappings:2h1l.M,PDB-ENSP_mappings:2h1l.N,PDB-ENSP_mappings:2h1l.O,PDB-ENSP_mappings:2h1l.P,PDB-ENSP_mappings:2h1l.Q,PDB-ENSP_mappings:2h1l.R,PDB-ENSP_mappings:2h1l.S,PDB-ENSP_mappings:2h1l.T,PDB-ENSP_mappings:2h1l.U,PDB-ENSP_mappings:2h1l.V,PDB-ENSP_mappings:2h1l.W,PDB-ENSP_mappings:2h1l.X,PDB-ENSP_mappings:2j1w.A,PDB-ENSP_mappings:2j1w.B,PDB-ENSP_mappings:2j1x.A,PDB-ENSP_mappings:2j1x.B,PDB-ENSP_mappings:2j1y.A,PDB-ENSP_mappings:2j1y.B,PDB-ENSP_mappings:2j1y.C,PDB-ENSP_mappings:2j1y.D,PDB-ENSP_mappings:2j1z.A,PDB-ENSP_mappings:2j1z.B,PDB-ENSP_mappings:2j20.A,PDB-ENSP_mappings:2j20.B,PDB-ENSP_mappings:2j21.A,PDB-ENSP_mappings:2j21.B,PDB-ENSP_mappings:2mej.B,PDB-ENSP_mappings:2ocj.A,PDB-ENSP_mappings:2ocj.B,PDB-ENSP_mappings:2ocj.C,PDB-ENSP_mappings:2ocj.D,PDB-ENSP_mappings:2pcx.A,PDB-ENSP_mappings:2vuk.A,PDB-ENSP_mappings:2vuk.B,PDB-ENSP_mappings:2wgx.A,PDB-ENSP_mappings:2wgx.B,PDB-ENSP_mappings:2x0u.A,PDB-ENSP_mappings:2x0u.B,PDB-ENSP_mappings:2x0v.A,PDB-ENSP_mappings:2x0v.B,PDB-ENSP_mappings:2x0w.A,PDB-ENSP_mappings:2x0w.B,PDB-ENSP_mappings:2xwr.A,PDB-ENSP_mappings:2xwr.B,PDB-ENSP_mappings:2ybg.A,PDB-ENSP_mappings:2ybg.B,PDB-ENSP_mappings:2ybg.C,PDB-ENSP_mappings:2ybg.D,PDB-ENSP_mappings:3d05.A,PDB-ENSP_mappings:3d06.A,PDB-ENSP_mappings:3d07.A,PDB-ENSP_mappings:3d07.B,PDB-ENSP_mappings:3d08.A,PDB-ENSP_mappings:3d09.A,PDB-ENSP_mappings:3d0a.A,PDB-ENSP_mappings:3d0a.B,PDB-ENSP_mappings:3d0a.C,PDB-ENSP_mappings:3d0a.D,PDB-ENSP_mappings:3igk.A,PDB-ENSP_mappings:3igl.A,PDB-ENSP_mappings:3kmd.A,PDB-ENSP_mappings:3kmd.B,PDB-ENSP_mappings:3kmd.C,PDB-ENSP_mappings:3kmd.D,PDB-ENSP_mappings:3kz8.A,PDB-ENSP_mappings:3kz8.B,PDB-ENSP_mappings:3q01.A,PDB-ENSP_mappings:3q01.B,PDB-ENSP_mappings:3q05.A,PDB-ENSP_mappings:3q05.B,PDB-ENSP_mappings:3q05.C,PDB-ENSP_mappings:3q05.D,PDB-ENSP_mappings:3q06.A,PDB-ENSP_mappings:3q06.B,PDB-ENSP_mappings:3q06.C,PDB-ENSP_mappings:3q06.D,PDB-ENSP_mappings:3ts8.A,PDB-ENSP_mappings:3ts8.B,PDB-ENSP_mappings:3ts8.C,PDB-ENSP_mappings:3ts8.D,PDB-ENSP_mappings:3zme.A,PDB-ENSP_mappings:3zme.B,PDB-ENSP_mappings:4agl.A,PDB-ENSP_mappings:4agl.B,PDB-ENSP_mappings:4agm.A,PDB-ENSP_mappings:4agm.B,PDB-ENSP_mappings:4agn.A,PDB-ENSP_mappings:4agn.B,PDB-ENSP_mappings:4ago.A,PDB-ENSP_mappings:4ago.B,PDB-ENSP_mappings:4agp.A,PDB-ENSP_mappings:4agp.B,PDB-ENSP_mappings:4agq.A,PDB-ENSP_mappings:4agq.B,PDB-ENSP_mappings:4hje.A,PDB-ENSP_mappings:4hje.B,PDB-ENSP_mappings:4hje.C,PDB-ENSP_mappings:4hje.D,PDB-ENSP_mappings:4ibq.A,PDB-ENSP_mappings:4ibq.B,PDB-ENSP_mappings:4ibq.C,PDB-ENSP_mappings:4ibq.D,PDB-ENSP_mappings:4ibs.A,PDB-ENSP_mappings:4ibs.B,PDB-ENSP_mappings:4ibs.C,PDB-ENSP_mappings:4ibs.D,PDB-ENSP_mappings:4ibt.A,PDB-ENSP_mappings:4ibt.B,PDB-ENSP_mappings:4ibt.C,PDB-ENSP_mappings:4ibt.D,PDB-ENSP_mappings:4ibu.A,PDB-ENSP_mappings:4ibu.B,PDB-ENSP_mappings:4ibu.C,PDB-ENSP_mappings:4ibu.D,PDB-ENSP_mappings:4ibv.A,PDB-ENSP_mappings:4ibw.A,PDB-ENSP_mappings:4iby.A,PDB-ENSP_mappings:4iby.B,PDB-ENSP_mappings:4ibz.A,PDB-ENSP_mappings:4ibz.B,PDB-ENSP_mappings:4ibz.C,PDB-ENSP_mappings:4ibz.D,PDB-ENSP_mappings:4ijt.A,PDB-ENSP_mappings:4kvp.A,PDB-ENSP_mappings:4kvp.B,PDB-ENSP_mappings:4kvp.C,PDB-ENSP_mappings:4kvp.D,PDB-ENSP_mappings:4lo9.A,PDB-ENSP_mappings:4lo9.B,PDB-ENSP_mappings:4lo9.C,PDB-ENSP_mappings:4lo9.D,PDB-ENSP_mappings:4loe.A,PDB-ENSP_mappings:4loe.B,PDB-ENSP_mappings:4loe.C,PDB-ENSP_mappings:4loe.D,PDB-ENSP_mappings:4lof.A,PDB-ENSP_mappings:4mzi.A,PDB-ENSP_mappings:4mzr.A,PDB-ENSP_mappings:4mzr.B,PDB-ENSP_mappings:4mzr.C,PDB-ENSP_mappings:4mzr.D,PDB-ENSP_mappings:4qo1.B,PDB-ENSP_mappings:4xr8.C,PDB-ENSP_mappings:4xr8.D,PDB-ENSP_mappings:5a7b.A,PDB-ENSP_mappings:5a7b.B,PDB-ENSP_mappings:5ab9.A,PDB-ENSP_mappings:5ab9.B,PDB-ENSP_mappings:5aba.A,PDB-ENSP_mappings:5aba.B,PDB-ENSP_mappings:5aoi.A,PDB-ENSP_mappings:5aoi.B,PDB-ENSP_mappings:5aoj.A,PDB-ENSP_mappings:5aoj.B,PDB-ENSP_mappings:5aok.A,PDB-ENSP_mappings:5aok.B,PDB-ENSP_mappings:5aol.A,PDB-ENSP_mappings:5aol.B,PDB-ENSP_mappings:5aom.A,PDB-ENSP_mappings:5aom.B,PDB-ENSP_mappings:5bua.A,PDB-ENSP_mappings:5ecg.A,PDB-ENSP_mappings:5ecg.B,PDB-ENSP_mappings:5g4m.A,PDB-ENSP_mappings:5g4m.B,PDB-ENSP_mappings:5g4n.A,PDB-ENSP_mappings:5g4n.B,PDB-ENSP_mappings:5g4o.A,PDB-ENSP_mappings:5g4o.B,PDB-ENSP_mappings:5lap.A,PDB-ENSP_mappings:5lap.B,PDB-ENSP_mappings:5lgy.A,PDB-ENSP_mappings:5lgy.B,PDB-ENSP_mappings:5lgy.C,PDB-ENSP_mappings:5lgy.D,PDB-ENSP_mappings:5mct.A,PDB-ENSP_mappings:5mct.B,PDB-ENSP_mappings:5mcu.A,PDB-ENSP_mappings:5mcu.B,PDB-ENSP_mappings:5mcv.A,PDB-ENSP_mappings:5mcv.B,PDB-ENSP_mappings:5mcw.A,PDB-ENSP_mappings:5mcw.B,PDB-ENSP_mappings:5mf7.A,PDB-ENSP_mappings:5mf7.B,PDB-ENSP_mappings:5mg7.A,PDB-ENSP_mappings:5mg7.B,PDB-ENSP_mappings:5o1a.A,PDB-ENSP_mappings:5o1a.B,PDB-ENSP_mappings:5o1b.A,PDB-ENSP_mappings:5o1b.B,PDB-ENSP_mappings:5o1c.A,PDB-ENSP_mappings:5o1c.B,PDB-ENSP_mappings:5o1d.A,PDB-ENSP_mappings:5o1d.B,PDB-ENSP_mappings:5o1e.A,PDB-ENSP_mappings:5o1e.B,PDB-ENSP_mappings:5o1f.A,PDB-ENSP_mappings:5o1f.B,PDB-ENSP_mappings:5o1g.A,PDB-ENSP_mappings:5o1g.B,PDB-ENSP_mappings:5o1h.A,PDB-ENSP_mappings:5o1h.B,PDB-ENSP_mappings:5o1i.A,PDB-ENSP_mappings:5o1i.B,PDB-ENSP_mappings:5xzc.B,PDB-ENSP_mappings:5xzc.C,PDB-ENSP_mappings:5xzc.D,PDB-ENSP_mappings:5xzc.E,PDB-ENSP_mappings:6ff9.A,PDB-ENSP_mappings:6ff9.B,PDB-ENSP_mappings:6ff9.C,PDB-ENSP_mappings:6ff9.D,PDB-ENSP_mappings:6fj5.A,PDB-ENSP_mappings:6fj5.B,PDB-ENSP_mappings:6fj5.C,PDB-ENSP_mappings:6fj5.D,PDB-ENSP_mappings:6gga.A,PDB-ENSP_mappings:6gga.B,PDB-ENSP_mappings:6ggb.A,PDB-ENSP_mappings:6ggb.B,PDB-ENSP_mappings:6ggc.A,PDB-ENSP_mappings:6ggc.B,PDB-ENSP_mappings:6ggd.A,PDB-ENSP_mappings:6ggd.B,PDB-ENSP_mappings:6gge.A,PDB-ENSP_mappings:6gge.B,PDB-ENSP_mappings:6ggf.A,PDB-ENSP_mappings:6ggf.B,PDB-ENSP_mappings:6lhd.A,PDB-ENSP_mappings:6lhd.B,PDB-ENSP_mappings:6rz3.A,PDB-ENSP_mappings:6shz.A,PDB-ENSP_mappings:6shz.B,PDB-ENSP_mappings:6si0.A,PDB-ENSP_mappings:6si0.B,PDB-ENSP_mappings:6si1.A,PDB-ENSP_mappings:6si1.B,PDB-ENSP_mappings:6si2.A,PDB-ENSP_mappings:6si2.B,PDB-ENSP_mappings:6si3.A,PDB-ENSP_mappings:6si3.B,PDB-ENSP_mappings:6si4.A,PDB-ENSP_mappings:6si4.B,PDB-ENSP_mappings:6sl6.A,PDB-ENSP_mappings:6xre.M,PDB-ENSP_mappings:6znc.A,PDB-ENSP_mappings:7b46.A,PDB-ENSP_mappings:7b46.B,PDB-ENSP_mappings:7b46.C,PDB-ENSP_mappings:7b46.D,PDB-ENSP_mappings:7b47.A,PDB-ENSP_mappings:7b47.B,PDB-ENSP_mappings:7b47.C,PDB-ENSP_mappings:7b47.D,PDB-ENSP_mappings:7b48.A,PDB-ENSP_mappings:7b48.B,PDB-ENSP_mappings:7b48.C,PDB-ENSP_mappings:7b48.D,PDB-ENSP_mappings:7b49.A,PDB-ENSP_mappings:7b49.B,PDB-ENSP_mappings:7b4a.A,PDB-ENSP_mappings:7b4a.B,PDB-ENSP_mappings:7b4b.A,PDB-ENSP_mappings:7b4b.B,PDB-ENSP_mappings:7b4b.C,PDB-ENSP_mappings:7b4b.D,PDB-ENSP_mappings:7b4c.A,PDB-ENSP_mappings:7b4c.B,PDB-ENSP_mappings:7b4c.C,PDB-ENSP_mappings:7b4c.D,PDB-ENSP_mappings:7b4d.A,PDB-ENSP_mappings:7b4e.A,PDB-ENSP_mappings:7b4f.A,PDB-ENSP_mappings:7b4g.A,PDB-ENSP_mappings:7b4h.A,PDB-ENSP_mappings:7b4n.A,PDB-ENSP_mappings:7dhy.A,PDB-ENSP_mappings:7dhy.B,PDB-ENSP_mappings:7dhy.C,PDB-ENSP_mappings:7dhy.D,PDB-ENSP_mappings:7dhz.A,PDB-ENSP_mappings:7dhz.B,PDB-ENSP_mappings:7dvd.A,PDB-ENSP_mappings:7dvd.B,PDB-ENSP_mappings:7dvd.C,PDB-ENSP_mappings:7dvd.D,PDB-ENSP_mappings:7eax.A,PDB-ENSP_mappings:7eax.B,PDB-ENSP_mappings:7eax.C,PDB-ENSP_mappings:7eax.D,PDB-ENSP_mappings:7eds.A,PDB-ENSP_mappings:7eeu.A,PDB-ENSP_mappings:7eeu.B,PDB-ENSP_mappings:7eeu.C,PDB-ENSP_mappings:7eeu.D,PDB-ENSP_mappings:7eeu.E,PDB-ENSP_mappings:7eeu.F,PDB-ENSP_mappings:7eeu.G,PDB-ENSP_mappings:7eeu.H,PDB-ENSP_mappings:7v97.A,PDB-ENSP_mappings:7v97.B,PDB-ENSP_mappings:7v97.C,PDB-ENSP_mappings:7v97.D,PDB-ENSP_mappings:7xzx.K,PDB-ENSP_mappings:7xzx.L,PDB-ENSP_mappings:7xzx.M,PDB-ENSP_mappings:7xzx.N,PDB-ENSP_mappings:7xzz.K,PDB-ENSP_mappings:7xzz.L,PDB-ENSP_mappings:7xzz.M,PDB-ENSP_mappings:7xzz.N,PDB-ENSP_mappings:7ygi.A,PDB-ENSP_mappings:7ygi.B,PDB-ENSP_mappings:8a31.A,PDB-ENSP_mappings:8a31.B,PDB-ENSP_mappings:8a32.A,PDB-ENSP_mappings:8a32.B,PDB-ENSP_mappings:8a92.A,PDB-ENSP_mappings:8a92.B,PDB-ENSP_mappings:8cg7.A,PDB-ENSP_mappings:8cg7.B,PDB-ENSP_mappings:8dc4.A,PDB-ENSP_mappings:8dc4.B,PDB-ENSP_mappings:8dc4.C,PDB-ENSP_mappings:8dc4.D,PDB-ENSP_mappings:8dc6.A,PDB-ENSP_mappings:8dc6.B,PDB-ENSP_mappings:8dc6.C,PDB-ENSP_mappings:8dc6.D,PDB-ENSP_mappings:8dc7.A,PDB-ENSP_mappings:8dc8.A,PDB-ENSP_mappings:8e7a.A,PDB-ENSP_mappings:8e7b.A,PDB-ENSP_mappings:8e7b.B,PDB-ENSP_mappings:8gcr.B,PDB-ENSP_mappings:8hll.A,PDB-ENSP_mappings:8hlm.A,PDB-ENSP_mappings:8hln.A,PDB-ENSP_mappings:8j8n.A,PDB-ENSP_mappings:8j8n.B,PDB-ENSP_mappings:8j8n.C,PDB-ENSP_mappings:8j8n.D,PDB-ENSP_mappings:8qwk.A,PDB-ENSP_mappings:8qwl.A,PDB-ENSP_mappings:8qwm.A,PDB-ENSP_mappings:8qwm.B,PDB-ENSP_mappings:8qwn.A,PDB-ENSP_mappings:8qwo.A,PDB-ENSP_mappings:8qwo.B,PDB-ENSP_mappings:8qwp.A,PDB-ENSP_mappings:8qwp.B,PDB-ENSP_mappings:8r1f.C,PDB-ENSP_mappings:8r1g.C,PDB-ENSP_mappings:8r1g.F,PDB-ENSP_mappings:8rba.A,PDB-ENSP_mappings:8rba.B,PDB-ENSP_mappings:8rbb.A,PDB-ENSP_mappings:8rbb.B,PDB-ENSP_mappings:8rbc.A,PDB-ENSP_mappings:8rbc.B,PDB-ENSP_mappings:8rci.A,PDB-ENSP_mappings:8wd2.A,PDB-ENSP_mappings:8wd2.B,PDB-ENSP_mappings:8xcb.A,PDB-ENSP_mappings:8xcb.B,PDB-ENSP_mappings:8xcb.C,PDB-ENSP_mappings:8xcb.D,PDB-ENSP_mappings:8xce.A,PDB-ENSP_mappings:8xce.B,PDB-ENSP_mappings:8xce.C,PDB-ENSP_mappings:8xce.D,PDB-ENSP_mappings:8xp5.A,PDB-ENSP_mappings:8xp5.B,PDB-ENSP_mappings:9br3.A,PDB-ENSP_mappings:9br3.B,PDB-ENSP_mappings:9br4.A,PDB-ENSP_mappings:9br4.B,PDB-ENSP_mappings:9cht.B,PDB-ENSP_mappings:9fzb.A,PDB-ENSP_mappings:9g5h.A,PDB-ENSP_mappings:9g5h.B,PDB-ENSP_mappings:9g6t.A,PDB-ENSP_mappings:9g6t.B,PDB-ENSP_mappings:9g6u.A,PDB-ENSP_mappings:9g6u.B,PDB-ENSP_mappings:9r04.K,PDB-ENSP_mappings:9r04.L,PDB-ENSP_mappings:9r04.M,PDB-ENSP_mappings:9r04.N,PDB-ENSP_mappings:9r2m.K,PDB-ENSP_mappings:9r2m.L,PDB-ENSP_mappings:9r2m.M,PDB-ENSP_mappings:9r2m.N,PDB-ENSP_mappings:9r2p.K,PDB-ENSP_mappings:9r2p.L,PDB-ENSP_mappings:9r2p.M,PDB-ENSP_mappings:9r2p.N,PDB-ENSP_mappings:9r2q.K,PDB-ENSP_mappings:9r2q.L,PDB-ENSP_mappings:9r2q.M,PDB-ENSP_mappings:9r2q.N,Prints:PR00386,CDD:cd08367,Superfamily:SSF49417,PANTHER:PTHR11447,Gene3D:2.60.40.720,Pfam:PF00870,AFDB-ENSP_mappings:AF-P04637-F1
rs121913224 chr5:112839521-112839525 - ENSG00000134982 ENST00000257430 Transcript frameshift_variant 3986-3990 3927-3931 1309-1311 EKI/DX gaAAAGAtt/gatt - IMPACT=HIGH;STRAND=1;SYMBOL=APC;SYMBOL_SOURCE=HGNC;HGNC_ID=HGNC:583;DOMAINS=MobiDB_lite:mobidb-lite,Pfam:PF16633
rs397516436 from this example is a TP53 stop gained mutation (p.Arg213Ter) commonly found in cancer.
You can try to run without --pick and --everything see what happens.
Here you can see the html summary file generated:
After running the command you will also notice a output.txt_summary.html that will show some statistics on the annotation process and the results visually (see solution above). If you tried running --everything or -e this is a shortcut for the following options:
--sift b, --polyphen b, --ccds, --hgvs, --symbol, --numbers, --domains, --regulatory, --canonical, --protein, --biotype, --af, --af_1kg, --af_esp, --af_gnomade, --af_gnomadg, --max_af, --pubmed, --uniprot, --mane, --tsl, --appris, --variant_class, --gene_phenotype, --mirna
This an example of the highput from the TP53 mutation
| Field | Value | Description |
|---|---|---|
| Uploaded Variation | rs397516436 | dbSNP identifier |
| Location | chr17:7674894 | Genomic coordinates (GRCh38) |
| Allele | A | Alternative allele |
| Gene | ENSG00000141510 | Ensembl gene ID for TP53 |
| Transcript | ENST00000455263 | Ensembl transcript ID |
| Feature Type | Transcript | Type of genomic feature affected |
| Consequence | stop_gained | Creates premature stop codon |
| cDNA Position | 770 | Position in the cDNA |
| CDS Position | 637 | Position in the coding sequence |
| Protein Position | 213 | Position in the protein |
| Amino Acids | R/* | Change from Arginine to stop codon |
| Codons | Cga/Tga | Codon change |
| Impact | HIGH | Severity of variant impact |
| Symbol | TP53 | HGNC gene symbol |
| Biotype | protein_coding | Type of transcript |
| CCDS | CCDS45605.1 | Consensus CDS identifier |
| UniProt | P04637.305 | UniProt protein identifier |
| HGVSc | ENST00000455263.6:c.637C>T | Coding sequence change in HGVS notation |
| HGVSp | ENSP00000398846.2:p.Arg213Ter | Protein change in HGVS notation |
| Clinical Significance | pathogenic | Clinical interpretation |
| gnomAD AF | 1.368e-06 | Allele frequency in gnomAD |
| Maximum AF | 1.656e-05 | Maximum allele frequency observed |
You can have a look at the documentation to learn more about VEP’s many options here
SIFT (Sorting Intolerant From Tolerant) and PolyPhen (Polymorphism Phenotyping) are both prediction tools specifically designed to assess the functional impact of missense variants—those that result in amino acid substitutions
- SIFT: Based on sequence homology and physical properties of amino acids
- PolyPhen: Combines sequence-based features with structural information
Mutect2 results annotation
The previous section demonstrated how to run VEP and how different arguments significantly impact the output. Now, let’s apply this to a real dataset. We will take the table of somatic variants identified from the WES of chr6 and chr17 and use VEP to enrich it with functional annotations.
Extract from the resulting Mutect2 somatic call
##fileformat=VCFv4.2
#CHROM POS ID REF ALT QUAL FILTER INFO
chr17 1492466 . C T . PASS
chr17 2364457 . T G . PASS
chr17 3433669 . G T . PASS
chr17 4545725 . T C . PASS
chr17 4934441 . G T . PASS
chr17 5007047 . C T . PASS
chr17 7560755 . G A . PASS
chr17 7588500 . G C . PASS
chr6 325357 . G A . PASS
chr6 325783 . G C . PASS
chr6 325901 . G A . PASS
chr6 1916336 . G A . PASS
chr6 2674999 . A C . PASS
chr6 2834013 . C G . PASS
chr6 2840548 . C T . PASS
chr6 3723708 . C G . PASS
Using VEP to annotate Mutect2 variants
The somatic variant call can be annotated with this command
PROJECT="${HOME}/project"
VARIANTDIR="${HOME}/project/variants"
VEPDBDIR="${PROJECT}/data/VEP_dbs"
vep -i "$VARIANTDIR"/somatic.filtered.PASS.vcf.gz \
--cache ${HOME}/project/data/.vep \
--species homo_sapiens \
--assembly GRCh38 \
--offline \
--format vcf \
--symbol \
--force_overwrite \
--everything \
--output_file "$VARIANTDIR"/chr6ch17_mutect2_annotated.txtWe are using as input a vcf.gz file (which has been indexed), and we are provifing the --format vcf command, this will output by default a tsv file
Open chr6ch17_mutect2_annotated.txt_summary.html. The number of variants processed should match the number of records in the input, 132 for somatic.filtered.PASS.vcf.gz:
bcftools view -H "$VARIANTDIR"/somatic.filtered.PASS.vcf.gz | wc -lIf VEP processed fewer, some lines were skipped: check the warnings file next to the output. Also look at the consequence chart. Mostly intron_variant or intergenic_variant is normal; zero coding consequences would suggest a wrong assembly or cache version.
Yes. bcftools norm -m -any -f ref_genome.fa splits, joins and realigns none of the 132 records in somatic.filtered.PASS.vcf.gz. Normalize your own VCF first when it comes from another caller, because matching against ClinVar needs the same allele representation.
Exercise 2
What if the output of this file should be formatted as vcf instead? You can check VEP’s documentation here
hint: use --vcf
With the option --output_file you can use vcf. After you can compress the VCF bgzip <output_file.vcf> and then you can index it tabix -p vcf <output_file.vcf.gz>. If you see VEP’s documentation there is an option to skip bgzip and instead incorporating it directly in VEP, which will be doing the compression for you --compress_output bgzip in the call. Afterwards you still need to index the file.
VARIANTDIR="${HOME}/project/variants"
vep -i "$VARIANTDIR"/somatic.filtered.PASS.vcf.gz \
--cache ${HOME}/project/data/.vep \
--species homo_sapiens \
--assembly GRCh38 \
--offline \
--format vcf \
--symbol \
--force_overwrite \
--everything \
--vcf \
--compress_output bgzip \
--output_file "$VARIANTDIR"/chr6ch17_mutect2_annotated.vcf.gz
tabix -p vcf "$VARIANTDIR"/chr6ch17_mutect2_annotated.vcf.gz--vcf writes VCF instead of the default tab-separated file, and --compress_output bgzip compresses it while VEP writes it. tabix then creates the index chr6ch17_mutect2_annotated.vcf.gz.tbi.
Interesting results: We will obtain a file with many annotations.
Uploaded_variation Location Allele Gene Feature Feature_type Consequence cDNA_position CDS_position Protein_position Amino_acids Codons Existing_variation Extra
chr6_1930220_GA/TT chr6:1930220-1930221 TT ENSG00000112699 ENST00000380815 Transcript stop_gained 836-837 653-654 218 F/* tTC/tAA - IMPACT=HIGH;STRAND=-1;SYMBOL=GMDS;SYMBOL_SOURCE=HGNC;HGNC_ID=HGNC:4369
| Impact | Gene | Location | Consequence | Change | Details |
|---|---|---|---|---|---|
| HIGH | GMDS | chr6:1930220 | stop_gained | F→* | Creates premature stop codon |
| Impact | Gene | Location | Consequence | Change | Details |
|---|---|---|---|---|---|
| HIGH | SERPINB1 | chr6:2834013 | splice_acceptor_variant | C>G | Affects splice site |
| MODERATE | OR1E2 | chr17:3433669 | missense_variant | P→H | Position 58 |
| MODERATE | PLD2 | chr17:4818362 | inframe_deletion | VDRILK→V | 15bp deletion |
| LOW | DSP | chr6:7585458 | synonymous_variant | L→L | No amino acid change |
| MODIFIER | DUSP22 | chr6:325357 | intron_variant | G>A | Within intron |
Can you run the same command as before adding --fork 2, do you note any difference?
VARIANTDIR="${HOME}/project/variants"
vep -i "$VARIANTDIR/somatic.filtered.PASS.vcf.gz" \
--cache ${HOME}/project/data/.vep \
--species homo_sapiens \
--assembly GRCh38 \
--offline \
--format vcf \
--symbol \
--force_overwrite \
--everything \
--fork 2 \
--output_file "$VARIANTDIR/chr6ch17_mutect2_annotated.txt"Now when we anaylize our output file chr6ch17_mutect2_annotated.txt in more details, there are about 2900 lines and a lot of information on different transcripts that are related to the mutations found by Mutect2. Let’s say that now we would like to filter only the deleterious predictions and moderate/high impact variants. We can do that in a couple of ways:
VARIANTDIR="${HOME}/project/variants"
filter_vep \
-i "$VARIANTDIR"/chr6ch17_mutect2_annotated.txt \
-o "$VARIANTDIR"/chr6ch17_mutect2_annotated_filtered.txt \
--force_overwrite \
--filter "(IMPACT is HIGH or IMPACT is MODERATE) or (SIFT match deleterious or PolyPhen match probably_damaging)"in this line --filter "(IMPACT is HIGH or IMPACT is MODERATE) or (SIFT match deleterious or PolyPhen match probably_damaging)" consider that there is a difference in saying or or and as the latter is much more stringent and it would look only for variants whose prediction is in agreement. The latter (and) is generally preferred, because it reduces false positives. If you try do you see the difference?
But what if we want more information on the cancer mutations, can we integrate other databases to VEP? Yes we can. This can be useful prior to filtering to find additional consensus on potential interesting targets.
Exercise 3
Objective: Add cancer-specific annotations using ClinVar and filter for potentially pathogenic variants.
Task: Enhance the previous analysis by:
- Adding ClinVar annotations
- Filtering for HIGH/MODERATE impact variants
- Creating a summary of mutation types
You can download from here
# Download latest ClinVar VCF
wget https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz
wget https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz.tbi
# Download ClinVar VCF
VARIANTDIR="${HOME}/project/variants"
RESOURCEDIR="${HOME}/project/data/VEP_dbs"
# Run VEP with cancer-specific annotations (ClinVar), this takes a while⏰
vep -i "$VARIANTDIR/somatic.filtered.PASS.vcf.gz" \
--cache ${HOME}/project/data/.vep \
--assembly GRCh38 \
--offline \
--format vcf \
--force_overwrite \
--fork 2 \
--everything \
--custom "$RESOURCEDIR"/clinvar/clinvar.vcf.gz,ClinVar,vcf,exact,0,CLNSIG,CLNREVSTAT,CLNDN \
--output_file "$VARIANTDIR/chr6ch17_mutect2_annotated_with_clinVar.txt"
# Filter results
filter_vep \
-i "$VARIANTDIR/chr6ch17_mutect2_annotated_with_clinVar.txt" \
-o "$VARIANTDIR/chr6ch17_mutect2_annotated_with_clinVar_filtered.txt" \
--force_overwrite \
--filter "(IMPACT is HIGH or IMPACT is MODERATE) or \
(SIFT match deleterious or PolyPhen match probably_damaging) or \
(ClinVar_CLNSIG match pathogenic)"
# Generate summary (using simple grep/awk commands)
echo "=== Mutation Type Summary ===" > "$VARIANTDIR"/summary_chr6ch17_mutect2_annotated_with_clinVar_filtered.txt
grep -v "#" "$VARIANTDIR/chr6ch17_mutect2_annotated_with_clinVar_filtered.txt" | cut -f7 | sort | uniq -c >> "$VARIANTDIR/summary_chr6ch17_mutect2_annotated_with_clinVar_filtered.txt"
# Summary for ClinVar clinical significance
echo "=== ClinVar Clinical Significance ===" >> "$VARIANTDIR"/summary_chr6ch17_mutect2_annotated_with_clinVar_filtered.txt
grep -v "^#" "$VARIANTDIR"/chr6ch17_mutect2_annotated_with_clinVar_filtered.txt | \
grep -oP 'ClinVar_CLNSIG=[^;|]+' | cut -d'=' -f2 | sort | uniq -c | sort -rn >> \
"$VARIANTDIR"/summary_chr6ch17_mutect2_annotated_with_clinVar_filtered.txtThe possible values for ClinVar_CLNSIG include:
- Pathogenic - Strong evidence the variant causes disease
- Likely_pathogenic - Evidence suggests it is probably disease-causing
- Uncertain_significance (VUS) - Not enough evidence to classify either way
- Likely_benign - Evidence suggests it is probably not disease-causing
- Benign - Strong evidence the variant is not disease-causing
- Conflicting_interpretations_of_pathogenicity - Different submitters disagree
- Not_provided - No interpretation was provided
- Drug_response - Affects response to medications
- Other - Other interpretations
What happens if you increase the stringency of your filter_vep step?
The clinvar data provided us with more information coming from curated databases, and for some variants we can have multiple levels of consensus (however this is not a garantee of pathogenicity), but there are many other additional databases that one can try. However not all the databases have the same licensing, therefore each of the integrated datasets should be checked. For example COSMIC databases can be accessed only after registration, onkoKB as well.
Please do not forget to cite the data that you use and it is important to keep note of the version used. This is also an essential information for your future you!
Advanced Topics
Using VEP Plugins
VEP’s functionality can be extended through plugins. Here are some essential plugins for cancer analysis:
- REVEL: Rare Exome Variant Ensemble Learner
REVEL paper: An Ensemble Method for Predicting the Pathogenicity of Rare Missense Variants
REVEL
You can download here the data (~6.5GB): https://sites.google.com/site/revelgenomics/downloads or https://zenodo.org/records/7072866
unzip revel-v1.3_all_chromosomes.zip
cat revel_with_transcript_ids | tr "," "\t" > tabbed_revel.tsv
sed '1s/.*/#&/' tabbed_revel.tsv > new_tabbed_revel.tsv
bgzip new_tabbed_revel.tsvPrepare for GRCh38
zcat new_tabbed_revel.tsv.gz | head -n1 > h
zgrep -h -v ^#chr new_tabbed_revel.tsv.gz | awk '$3 != "." ' | sort -k1,1 -k3,3n - | cat h - | bgzip -c > new_tabbed_revel_grch38.tsv.gz
tabix -f -s 1 -b 3 -e 3 new_tabbed_revel_grch38.tsv.gzUsage:
--plugin REVEL,file=/path/to/revel/data.tsv.gz- AlphaMissense: Deep learning-based predictor
AlphaMissense’s Paper: Accurate proteome-wide missense variant effect prediction with AlphaMissense
AlphaMissense was archived on GitHub around May 2025, but it is still a gold standard, with its 216 millions predicted variants effect
AlphaMissense
Prepare for GRCh38
wget https://storage.googleapis.com/dm_alphamissense/AlphaMissense_hg38.tsv.gz
tabix -s 1 -b 2 -e 2 -f -S 1 AlphaMissense_hg38.tsv.gzRun it with VEP
--plugin AlphaMissense,file=/full/path/to/file.tsv.gzAlphaMissense only scores missense variants. Most variants sit outside coding sequence, where VEP can only say intron_variant or upstream_gene_variant. AlphaGenome from Google DeepMind fills this gap. It reads up to 1 Mb of DNA sequence and predicts thousands of regulatory tracks: gene expression, splicing, chromatin accessibility, histone marks, TF binding and 3D contacts. To score a variant, it compares the predictions for the reference and the alternative sequence.
In a cancer example from the authors, AlphaGenome reproduced how non-coding mutations found in T-cell acute lymphoblastic leukemia (T-ALL) create a new enhancer that switches on the TAL1 oncogene.
- Not a VEP plugin: you call it from Python (
pip install alphagenome) - Free API for non-commercial use, with your own API key
- Model weights are on Kaggle and Hugging Face (non-commercial terms), but running them locally needs a large GPU
Avsec et al. (2026). Advancing regulatory variant effect prediction with AlphaGenome. Nature. doi:10.1038/s41586-025-10014-0
- ClinVar ClinVar: A curated database with mutation->disease data
ClinVar Custom Annotation: ClinVar provides curated information about relationships between variants and human health.
Download ClinVar for GRCh38:
wget https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz
wget https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz.tbiUsage with VEP:
--custom /path/to/clinvar.vcf.gz,ClinVar,vcf,exact,0,CLNSIG,CLNREVSTAT,CLNDNKey fields extracted:
CLNSIG: Clinical significance (Pathogenic, Benign, VUS, etc.)CLNREVSTAT: Review status (confidence level)CLNDN: Condition/disease name
Clinical Significance Values:
- Pathogenic - Strong evidence the variant causes disease
- Likely_pathogenic - Evidence suggests disease-causing
- Uncertain_significance (VUS) - Insufficient evidence
- Likely_benign - Evidence suggests not disease-causing
- Benign - Strong evidence variant is not disease-causing
All three resources (REVEL, AlphaMissense, and ClinVar) can be downloaded and prepared automatically using our setup script: Download the setup script
bash 01_download_all_VEP_dbs.shThis will create the following structure:
/data/VEP_dbs/
├── clinvar/
│ ├── clinvar.vcf.gz
│ └── clinvar.vcf.gz.tbi
├── alphamissense/
│ ├── AlphaMissense_hg38.tsv.gz
│ └── AlphaMissense_hg38.tsv.gz.tbi
└── revel/
├── new_tabbed_revel.tsv.gz
├── new_tabbed_revel_grch38.tsv.gz
└── new_tabbed_revel_grch38.tsv.gz.tbi
We have seen how to run VEP and how to filter the output. Now we can make another call on the Mutect2 output to annotate the variants using a combination of some plugins and some custom databases.
- REVEL: An ensemble method that integrates multiple prediction tools
- AlphaMissense: Uses deep learning trained on evolutionary data
- ClinVar: Provides clinical interpretations from expert curation
Complex VEP annotation
Here we learn how to use additional data to include additional information to the annotation
EXTRA: Exercise 4
Objective: Learn how to comprehensively annotate cancer variants using VEP’s advanced features, plugins, and filtering capabilities to identify potentially pathogenic variants.
Task: Enhance the previous analysis by:
- Adding ClinVar annotations
- Adding REVEL annotations
- Adding AlphaMissense
- Adding population frequencies
--af_gnomade(gnomAD data is included in VEP cache) - Adding plugins (
--plugin SpliceRegion,--plugin AlphaMissense,--plugin REVEL) - Filtering for HIGH/MODERATE impact variants
VARIANTDIR="${HOME}/project/variants"
RESOURCEDIR="${HOME}/project/data/VEP_dbs"
vep -i "$VARIANTDIR/somatic.filtered.PASS.vcf.gz" \
--cache ${HOME}/project/data/.vep \
--assembly GRCh38 \
--offline \
--format vcf \
--fork 2 \
--everything \
--af_gnomade \
--force_overwrite \
--plugin SpliceRegion \
--plugin REVEL,file="$RESOURCEDIR/revel/new_tabbed_revel_grch38.tsv.gz" \
--plugin AlphaMissense,file="$RESOURCEDIR/alphamissense/AlphaMissense_hg38.tsv.gz" \
--custom "$RESOURCEDIR/clinvar/clinvar.vcf.gz",ClinVar,vcf,overlap,0,CLNSIG,CLNREVSTAT,CLNDN \
--output_file "$VARIANTDIR/chr6ch17_mutect2_annotated_with_clinVar_and_plugins.txt"
# Filter the data -> Moderate (discovery)
filter_vep \
-i "$VARIANTDIR/chr6ch17_mutect2_annotated_with_clinVar_and_plugins.txt" \
-o "$VARIANTDIR/moderate_filtered.txt" \
--force_overwrite \
--filter "(IMPACT is HIGH or IMPACT is MODERATE) and \
(REVEL >= 0.5 or \
am_class = 'likely_pathogenic' or \
SIFT = 'deleterious' or \
PolyPhen = 'probably_damaging')"
# How many events do you get?
grep -v "^#" "$VARIANTDIR"/moderate_filtered.txt | wc -l #19
# Filter the data -> Stringent (high confidence)
filter_vep \
-i "$VARIANTDIR/chr6ch17_mutect2_annotated_with_clinVar_and_plugins.txt" \
-o "$VARIANTDIR/stringent_filtered.txt" \
--force_overwrite \
--filter "(IMPACT is HIGH or IMPACT is MODERATE) and \
(REVEL >= 0.75 or \
am_class = 'likely_pathogenic' or \
(SIFT = 'deleterious' and PolyPhen = 'probably_damaging'))"
# How many events do you get?
grep -v "^#" "$VARIANTDIR"/stringent_filtered.txt | wc -l #14You could also include and (gnomADe_AF < 0.01 or not gnomADe_AF) to increase stringency, but this depends on the context.
exact vs overlap in VEP –custom
- exact: Only matches if all coordinates are identical
- overlap: Matches if regions overlap
For example you can use overlap for indels, exact for strict SNV matching.
A glimpse on the results
Variant Details
chr6_10801908_C/G chr6:10801908 G ENSG00000111837 ENST00000313243 Transcript missense_variant 1198 815 272 R/P cGa/cCa COSV57568710 IMPACT=MODERATE;STRAND=-1;VARIANT_CLASS=SNV;SYMBOL=MAK;SYMBOL_SOURCE=HGNC;HGNC_ID=HGNC:6816;BIOTYPE=protein_coding;TSL=5;APPRIS=A1;CCDS=CCDS4516.1;ENSP=ENSP00000313021;SWISSPROT=P20794.202;TREMBL=A0A140VK28.35;UNIPARC=UPI0000001BCD;UNIPROT_ISOFORM=P20794-1;GENE_PHENO=1;SIFT=deleterious(0);PolyPhen=probably_damaging(1);EXON=8/14;DOMAINS=Gene3D:1.10.510.10,AFDB-ENSP_mappings:AF-P20794-F1,Pfam:PF00069,PROSITE_profiles:PS50011,PANTHER:PTHR24055,SMART:SM00220,Superfamily:SSF56112,CDD:cd07830;HGVSc=ENST00000313243.6:c.815G>C;HGVSp=ENSP00000313021.2:p.Arg272Pro;SOMATIC=1;PHENO=1;REVEL=0.884;am_class=likely_pathogenic;am_pathogenicity=0.9946
chr6_10801908_C/G chr6:10801908 G ENSG00000111837 ENST00000354489 Transcript missense_variant 1081 815 272 R/P cGa/cCa COSV57568710 IMPACT=MODERATE;STRAND=-1;VARIANT_CLASS=SNV;SYMBOL=MAK;SYMBOL_SOURCE=HGNC;HGNC_ID=HGNC:6816;BIOTYPE=protein_coding;CANONICAL=YES;MANE=MANE_Select;MANE_SELECT=NM_001242957.3;TSL=5;APPRIS=P4;CCDS=CCDS75399.1;ENSP=ENSP00000346484;SWISSPROT=P20794.202;UNIPARC=UPI000217CBBA;UNIPROT_ISOFORM=P20794-2;GENE_PHENO=1;SIFT=deleterious(0);PolyPhen=probably_damaging(0.999);EXON=8/15;DOMAINS=Gene3D:1.10.510.10,AFDB-ENSP_mappings:AF-P20794-F1,Pfam:PF00069,PROSITE_profiles:PS50011,PANTHER:PTHR24055,SMART:SM00220,Superfamily:SSF56112,CDD:cd07830;HGVSc=ENST00000354489.7:c.815G>C;HGVSp=ENSP00000346484.3:p.Arg272Pro;SOMATIC=1;PHENO=1;REVEL=0.884;am_class=likely_pathogenic;am_pathogenicity=0.9946
| Category | Information | Description |
|---|---|---|
| Basic Information | ||
| Genomic Location | chr6:10801908 | GRCh38 coordinates |
| Variant Type | SNV (C>G) | Single nucleotide variant |
| Gene | MAK | Male Germ Cell-Associated Kinase |
| Impact | MODERATE | VEP impact classification |
Transcript Effects
Transcript 1 (ENST00000313243)
| Feature | Value | Note |
|---|---|---|
| Consequence | missense_variant | Changes amino acid |
| Protein Change | p.Arg272Pro | Arginine to Proline |
| Transcript Support | TSL=5, APPRIS=A1 | Low transcript support level |
| SIFT | deleterious(0) | Maximum deleteriousness score |
| PolyPhen | probably_damaging(1) | Maximum damaging score |
| Affected Domain | PF00069 (Protein kinase domain) | Functional domain impact |
Transcript 2 (ENST00000354489)
| Feature | Value | Note |
|---|---|---|
| Consequence | missense_variant | Changes amino acid |
| Protein Change | p.Arg272Pro | Arginine to Proline |
| Transcript Status | CANONICAL, MANE_Select | Principal transcript |
| SIFT | deleterious(0) | Maximum deleteriousness score |
| PolyPhen | probably_damaging(0.999) | Near maximum damaging score |
| Affected Domain | PF00069 (Protein kinase domain) | Functional domain impact |
Prediction Tools
- REVEL score: 0.884 (>0.5 considered possibly pathogenic)
- AlphaMissense:
- Class: likely_pathogenic
- Pathogenicity score: 0.9946 (very high confidence)
- SpliceRegion: No splice site effects detected
- ClinVar: Uncertain significance (variation ID 1900332, one submitter, ClinVar release of October 2026)
- SIF: SIFT=deleterious(0)
- PolyPhen: PolyPhe=probably_damaging(1)
- IMPACT: MODERATE
Additional Annotations
| Feature | Value | Description |
|---|---|---|
| COSMIC ID | COSV57568710 | Catalogued in COSMIC database |
| Somatic Status | SOMATIC=1 | Confirmed somatic variant |
| Phenotype | PHENO=1 | Associated with phenotype |
| UniProt | P20794.202 | Protein database reference |
At this point we obtained a good annotated set of somatic variants. This paves the way for further analysis. For example you can add more databases to your annotation call, such as COSMIC, cancerhotspots, onkoKB etc. You can also try other plugins, depending on your biological question(s). Those can add addtional data ond possibly additional filtering options.
- What happens if you turn it to
exactinstead ofoveralp? - Add other databases
- Try additional plugins
- Find interesting genes that could be drivers in your samples
- Consider population frequency of the mutation(s) (common variants are less likely to be pathogenic)
- Consider possible drug-gene interactions
- Check in the literature
- Visualize the results
CNV annotation is more challenging than SNV annotation because:
- Tools like REVEL/AlphaMissense are designed for SNVs
- CNV breakpoints can be imprecise
- Functional impact affects multiple genes
For those interested in CNV annotation, expanded materials are available in the advanced resources section.
Continue with the visualization of the annotated variants: you load the VEP output in R and plot it with ggplot2.
VEP Performance Optimization
For large-scale analyses, consider these optimization strategies:
- Using Cache:
--cache
--dir_cache /path/to/cache
--offline- Parallel Processing:
--fork 4- Minimal Output:
--fields "Consequence,IMPACT,SYMBOL,Feature"
--no_statsTips for Cancer Variant Analysis
- Quality Control
- Filter low-quality variants before VEP annotation
- Use matched normal samples when available (if not consider PONs)
- Consider sequencing artifacts
- Annotation Strategy
- Use multiple prediction algorithms
- Consider tissue-specific expression
- Include population frequencies
- Add clinical annotations
- Interpretation Guidelines
- Use cancer-specific frameworks for somatic variants
- Document all filtering criteria
- Maintain version control of annotation sources
Databases
Download data to COSMIC
- For COSMIC: We cannot provide those files (they require licensing), you need to register and download the files.
CosmicMutantExport.tsv.gzYou can register here:
Best Practices from Literature
From McLaren et al. (2016) - VEP Paper:
- Use
--pickor--per_geneto manage transcript complexity - Combine multiple prediction algorithms for consensus
- Always document VEP version and cache version for reproducibility
For Cancer Analysis:
- Filter common variants (gnomAD MAF < 0.01) for somatic analysis
- Consider tissue-specific expression data when available
- Use multiple evidence sources (ClinVar + COSMIC + literature)
- Validate high-priority variants with orthogonal methods
Tools and Documentation
- VEP Documentation: http://www.ensembl.org/info/docs/tools/vep/
- VEP GitHub: https://github.com/Ensembl/ensembl-vep
- Cancer Gene Census: https://cancer.sanger.ac.uk/census
Remember to:
- Always verify file paths and permissions
- Check input data format and quality
- Validate output at each step
- Consider computational resources when processing large datasets
- Document any modifications to the pipeline
Quick Reference
Basic annotation:
vep -i input.vcf \
--cache ${HOME}/project/data/.vep \
--offline \
--assembly GRCh38 \
-o output.txtWith common options:
vep -i input.vcf \
--cache ${HOME}/project/data/.vep \
--offline \
--assembly GRCh38 \
--everything \
--fork 2 \
--vcf \
-o output.vcfFilter high-impact:
filter_vep -i input.txt \
-o filtered.txt \
--filter "IMPACT is HIGH or IMPACT is MODERATE"Output format options:
# Tab-separated (default, most flexible for downstream analysis)
vep ... -o output.txt
# OR explicitly specify tab format
vep ... --tab -o output.txt
# VCF output (standard variant format)
vep ... --vcf -o output.vcf
# Compressed VCF (saves space, ready for tabix)
vep ... --vcf --compress_output bgzip -o output.vcf.gz
# Custom tab-delimited fields (choose specific columns)
vep ... --tab --fields "Location,Allele,Gene,SYMBOL,Consequence,IMPACT,SIFT,PolyPhen" \
-o custom_output.txtCommon flags:
--pick: One consequence per variant--per_gene: One consequence per gene--fork N: Use N CPU cores--no_stats: Skip HTML summary (faster)--tab: Tab-separated output (default)--vcf: VCF format output--json: Outputs to JSON format--fields: Choose specific output columns
References
- McLaren W, et al. The Ensembl Variant Effect Predictor. Genome Biology (2016)
- Eilbeck K, et al. The Sequence Ontology: a tool for the unification of genome annotations. Genome Biology (2005)
- Richards S, et al. Standards and guidelines for the interpretation of sequence variants. Genetics in Medicine (2015)
- Terry A. Brown, et al. Genomes 5 (2023)