annovarR: a variant annotation and visualization system based on R and Shiny framework
Switch branches/tags
Nothing to show
Clone or download
Latest commit a8618b6 Nov 10, 2018


Build Status CRAN Downloads License codecov


The annovarR package provides R functions as well as database resources which offer an integrated framework to annotate genetic variants from genome and transcriptome data. The wrapper functions of annovarR unified the interface of many published annotation tools, such as VEP, ANNOVAR, vcfanno and AnnotationDbi.

It also simplified the use of some of the external annotation tools in R. Besides, massive published genetic variants annotation databases were integrated into annovarR.

The main development motivation of annovarR is to increase the supported database and facilitate the variants annotation work. There are already too many tools and databases available and the usage is quite different. annovarR will integrate these annotation tools and get the merged annotation result in R.

annovarR will not only provides annotation functions (both internal and external) but also hope to establish a shared annotation database resources. In fact, we have made some efforts in the relevant direction that massive scattered databases can easily to be download via using BioInstaller R package.

Besides, we collected total 1,285 cases public B-progenitor acute lymphoblastic leukemia (B-ALL) transcriptome data from five different published datasets and built a novel large-scale transcript level sequencing variant database. The Genome Analysis Toolkit (GATK), VarScan2 and LoFreq be used to call variants from the RNA-seq data (Database called BRVar). This work can help us to screen candidate systematic sequencing bias and evaluate variant calling trait from B-ALL RNA-seq.

If you want to download the 1,285 RNA-seq variants frequency database, you need click here and send us a short application message (Whether it is for commercial use?). If the application is applied, we will reply you within 24 hours with a download required license code.

# Download BRVar database
# You must input the applied license code
download.database("db_annovar_brvar", "/path/annovar.dir",  license = "licence_code")


annovarR annotation system:

ANNOVAR annotation system:

VEP annotation system

vcfanno annotationo system


Core softwares

# CRAN to install annovarR (The R package BioInstaller will be installed)

# Github to install annovarR (The R package BioInstaller will be installed)
# install.packages("devtools")

# Set needed directory
annovar.dir <- "/opt/bin/annovar"
database.dir <- "/opt/bin/annovar/humandb"
vcfanno.dir <- "/opt/bin/vcfanno.dir"

# Use BioInstaller to install ANNOVAR easily in R
install.bioinfo('annovar', annovar.dir)

# Use BioInstaller to install vcfanno easily in R
# Support linux and mac
install.bioinfo('vcfanno', vcfanno.dir)

Annotation Database

# Use download.database to download databases supported by annovarR and ANNOVAR
# Some of examples as shown as below
download.database('db_annovar_refgene', database.dir = database.dir, buildver = "hg19")
download.database('db_ucsc_cytoband', database.dir = database.dir, buildver = "hg19")
download.database('db_annovar_avsnp147', database.dir = database.dir, buildver = "hg19")
# Or
download.database(c("db_annovar_refgene", "db_ucsc_cytoband"), 
  database.dir = database.dir, buildver = "hg19")

# All annovarR supported big annotation database required SQLite format
download.database('db_annovar_avsnp147_sqlite', database.dir = database.dir, buildver = "hg19")

Support Summary

  • ANNOVAR databases
  • 1285 cases B-ALL RNA-seq variants
  • Public RNA-editing databases
  • Other public database

Basic Usage

# View the vignettes in annovarR package

# Get all annovarR supported annotation name

# Get annotation name needed and 
# you can use download.database to download database using the <-'avsnp147')

# Show avaliable all versions database
download.database( =, show.all.versions = TRUE)
# Download database in annotation database directory
# Buildver default is hg19
download.database( =, version = "avsnp147", buildver = "hg19", 
  database.dir = database.dir)

# Annotate variants from avsnp147 database use annovarR
chr <- c("chr1", "chr2", "chr1")
start <- c("10020", "10020", "10020")
end <- c("10020", "10020", "10020")
ref <- c("A", "A", "A")
alt <- c("-", "-", "-")
dat <- data.table(chr = chr, start = start, end = end, ref = ref, alt = alt)
x <- annotation(dat = dat, = "avsnp147", database.dir = database.dir)

# Annotate using multiple database
x <- annotation.merge(dat = dat, anno.names = c("cosmic81", "avsnp147"), database.dir = database.dir)

# Database configuration file
database.cfg <- system.file('extdata', 'config/databases.toml', package = "annovarR")

# Get needed input cols

# Annotate avinput format R data and file using ANNOVAR
chr = "chr1"
start = "123"
end = "123"
ref = "A"
alt = "C"
dat <- data.table(chr, start, end, ref, alt)
tmpfn <- tempfile()
write.table(dat, tmpfn, row.names = FALSE, quote = FALSE, sep = "\t", col.names = FALSE)
x <- annotation(dat, = "perl_annovar_refGene", annovar.dir = annovar.dir, 
             database.dir = database.dir)
x <- annotation(input.file = tmpfn, = "perl_annovar_refGene", annovar.dir = annovar.dir, 
             database.dir = database.dir)

# Annotate avinput format R data using annovarR and ANNOVAR
# It will return a list contatin two data.table object that 
# one is annovarR annotation system and the another is ANNOVAR output 
x <-annotation.merge(dat = dat, anno.names = c('avsnp147', 'perl_annovar_refGene'), 
  annovar.dir = annovar.dir, database.dir = database.dir)
x <- annotation.merge(dat = dat, anno.names = c('avsnp147', '1000g2015aug_all', 
  'perl_annovar_refGene', 'perl_annovar_ensGene'), annovar.dir = annovar.dir, database.dir = database.dir)
# If use perl_annovar_merge as the, you can use annovar.anno.names to 
# run all original ANNOVAR supported annotation names, see
x <- annotation.merge(dat = dat, anno.names = c('avsnp147', '1000g2015aug_all', 
  'perl_annovar_merge'), annovar.anno.names = c('refGene', 'ensGene'), annovar.dir = annovar.dir, database.dir = database.dir)

# Annotate VCF file using ANNOVAR
test.vcf.raw <- system.file("extdata", "demo/example.vcf", package = "annovarR") 
test.vcf <- tempfile()
file.copy(test.vcf.raw, test.vcf)
x <- annotation( = "perl_annovar_ensGene", input.file = test.vcf,
             annovar.dir = annovar.dir, database.dir = database.dir, 
             out = tempfile(), vcfinput = TRUE)

# Annotate VCF file use VEP
vep(debug = TRUE)
x <- annotation( = "vep_all", input.file = test.vcf,
             out = tempfile(), debug = TRUE)

# Annotate VCF file use vcfanno
vcfanno(debug = TRUE)
x <- annotation( = "vcfanno_demo", input.file = test.vcf,
                   out = tempfile(), vcfanno = sprintf("%s/vcfanno_linux64", vcfanno.dir))

# Annotate VCF file use ANNOVAR and vcfanno
x <- annotation.merge(input.file = test.vcf, anno.names = c("vcfanno_demo", "perl_annovar_ensGene"), 
  annovar.dir = annovar.dir, database.dir = database.dir, vcfanno = sprintf("%s/vcfanno_linux64", vcfanno.dir))

# Annotate gene using BioConductor database
# The example below will use the to get the alias of TP53 and NSD2
# It is more simple than the previous annotation API
gene <- c("TP53", "NSD2")
x <- annotation(dat = gene, = "bioc_gene2alias")

# Do same things use AnnotationDbi
select(keys = gene, keytype = "SYMBOL", columns = "ALIAS")

There are still plenty of places to go for this tool. More annotation tools and annotation databases are being integrated. We hope this tool can provide some help for your variants annotation work.

Shiny App

Based on the BioInstaller, we provided a shiny App as the local and cloud WEB interface (development status) to annotate and visulize genetic variants data using various public and in-house tools, such as ANNOVAR, vcfanno, maftools, gvmap, and so on.

# Install R packages required by annovarR shiny app (required if run through shiny::runGitHub)
# We will provides a standalone installation script in the future

# Running by R pakcage API

# Running by Github resource
shiny::runGitHub("JhuangLab/annovarR", subdir = "inst/extdata/tools/shiny/R")


You can use the annovarR in Docker.

docker run -it -v /tmp/db:/tmp/db -v /tmp/input:/tmp/input -v /home/user/.annovarR:/home/opencpu/.annovarR -p 80:80 bioinstaller/annovarr

How to contribute?

Please fork the GitHub annovarR repository, modify it, and submit a pull request to us.


Jianfeng Li


R package:


Related Other Resources:

Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License