An R package for annotation of circular RNAs
Clone or download
Latest commit eb5fc37 Jan 10, 2018

Build Status codecov

ciRcus: an R package for circRNA manipulation, annotation and analysis

ciRcus is a collection of functions for everyday munging of circRNA data. In its current, preliminary version, it can take lists of putative splice junctions generated using (Memczak et al. 2013, circBase) as input, and perform following annotation steps:

  • quality filtering
  • suggest a host gene a circRNA candidate was spliced from
  • calculate circular-to-linear ratio
  • describe gene features a circRNA candidate was spliced from
  • report if a circRNA's splice junctions are already annotated as linear exon-intron junctions
  • generate read count histogram and gene features pie-charts


Install via install_github()

#' Install dependecies
install.packages( c("data.table", "DBI", "hash", "ggplot2", "RMySQL", "devtools"))
biocLite(c("GenomicRanges","GenomicFeatures", "IRanges", "biomaRt", "AnnotationHub"))

#' install the package
install_github("BIMSBbioinfo/ciRcus", build_vignettes=FALSE)

Using the package

Build TxDb object with genomic features and save locally

Load genomic features from Ensembl and build a database for later (re)use. Currently supported assemblies are hg19, hg38, mm10, rn5, dm6 and WBcel235. This needs to be done only once per assembly.

gtf2sqlite( assembly = "hg19",
            db.file  = system.file("extdata/db/human_hg19_ens75_txdb.sqlite",

Extract features from the database

List of features returned by loadAnnotation() will be used to annotate circRNAs. Saving it as a separate object is a good practice once we start analyzing multiple circRNA libraries.

annot.list <- loadAnnotation(system.file("extdata/db/human_hg19_ens75_txdb.sqlite",

Load and annotate circRNAs

cdata <- data.frame(sample=c("FC1", "FC2", "H1", "H2", "L1", "L2"),
                    filename=list.files(system.file('extdata/encode_demo_small', package='ciRcus'),
                                        full.names=TRUE)[1:6]) <- summarizeCircs(colData=cdata, wobble=1, keepCols=1:12) <- annotateCircs(, annot.list=annot.list)
circs.dt <- resTable(

Plot data

histogram(, 0.5)
annotPie(, 0.02)
uniqReadsQC(, "all")