Introduction

Epitranscriptome profiling using MeRIP-seq is a powerful technique for in vivo functional studies of reversible RNA modifications. We developed RADAR, a comprehensive analytical tool for detecting differentially methylated loci in MeRIP-seq data. RADAR enables accurate identification of altered methylation sites by accommodating variability of pre-immunoprecipitation expression level and post-immunoprecipitation count using different strategies. In addition, it is compatible with complex study design when covariates need to be incorporated in the analysis.

To analyze the count data of MeRIP-seq, we divide the transcript (concatenated exons of a gene) into consecutive bins and quantify the reads align to each bin. The summarized count data is in matrix format where each row represent a locus and each column is a sample. Statistical inference of changes cross groups, as compared to within-group variability is made for each filtered bin with sufficient count.

RADAR achieves improved performance mainly by the following advancements: (1) RADAR uses gene-level isntead of peak-level read count as an robust representation of pre-IP gene expression level. This significantly reduces the noise of the data. (2) The generalized linear model framework used in RADAR is compatible with complex study design so that biological and experimental covariates can be accounted for in differential methylation analysis. (3) To accomodate extra overdispersion due to immunoprecipitation, RADAR implemented a random effect model that is flexible on mean-variable relationship.

Install the R package from Github

Depends: Rsamtools, GenomicFeatures (>= 1.14.5), BH, Rcpp, ggplot2, doParallel, foreach, gplots, RColorBrewer, RcppArmadillo

    install.packages("devtools")
    library(devtools)
    install_github("scottzijiezhang/RADAR")
    library("RADAR")

The installation has been tested on R version 3.4.4 and R version 3.5.0 and 3.5.1 on Linux and Mac.

Example data

To access the example data:

bam.path <- system.file("extdata",package = "RADAR")
list.files(bam.path)
##  [1] "Case1.input.bam"     "Case1.input.bam.bai" "Case1.m6A.bam"      
##  [4] "Case1.m6A.bam.bai"   "Case2.input.bam"     "Case2.input.bam.bai"
##  [7] "Case2.m6A.bam"       "Case2.m6A.bam.bai"   "Case3.input.bam"    
## [10] "Case3.input.bam.bai" "Case3.m6A.bam"       "Case3.m6A.bam.bai"  
## [13] "Case4.input.bam"     "Case4.input.bam.bai" "Case4.m6A.bam"      
## [16] "Case4.m6A.bam.bai"   "Case5.input.bam"     "Case5.input.bam.bai"
## [19] "Case5.m6A.bam"       "Case5.m6A.bam.bai"   "Case6.input.bam"    
## [22] "Case6.input.bam.bai" "Case6.m6A.bam"       "Case6.m6A.bam.bai"  
## [25] "Case7.input.bam"     "Case7.input.bam.bai" "Case7.m6A.bam"      
## [28] "Case7.m6A.bam.bai"   "Case8.input.bam"     "Case8.input.bam.bai"
## [31] "Case8.m6A.bam"       "Case8.m6A.bam.bai"   "Ctl1.input.bam"     
## [34] "Ctl1.input.bam.bai"  "Ctl1.m6A.bam"        "Ctl1.m6A.bam.bai"   
## [37] "Ctl2.input.bam"      "Ctl2.input.bam.bai"  "Ctl2.m6A.bam"       
## [40] "Ctl2.m6A.bam.bai"    "Ctl3.input.bam"      "Ctl3.input.bam.bai" 
## [43] "Ctl3.m6A.bam"        "Ctl3.m6A.bam.bai"    "Ctl4.input.bam"     
## [46] "Ctl4.input.bam.bai"  "Ctl4.m6A.bam"        "Ctl4.m6A.bam.bai"   
## [49] "Ctl5.input.bam"      "Ctl5.input.bam.bai"  "Ctl5.m6A.bam"       
## [52] "Ctl5.m6A.bam.bai"    "Ctl6.input.bam"      "Ctl6.input.bam.bai" 
## [55] "Ctl6.m6A.bam"        "Ctl6.m6A.bam.bai"    "Ctl7.input.bam"     
## [58] "Ctl7.input.bam.bai"  "Ctl7.m6A.bam"        "Ctl7.m6A.bam.bai"   
## [61] "Ctl8.input.bam"      "Ctl8.input.bam.bai"  "Ctl8.m6A.bam"       
## [64] "Ctl8.m6A.bam.bai"    "Ctl9.input.bam"      "Ctl9.input.bam.bai" 
## [67] "Ctl9.m6A.bam"        "Ctl9.m6A.bam.bai"

Naming convention of input files

Since MeRIP-seq generate a pair of sequencing data – Input and IP, we denote these two libraries by .input or .m6A followed by .bam after sample names. Thus, the RADAR requires a pair of BAM files for each sample named as <samplename>.input.bam + <samplename>.<modification>.bam. The <modification> can be specified in the countRead(... , modification = "<modification>") function.

Basic functions of RADAR package

We are implementing a new version of RADAR that uses S4 class to manage the data. The updated documentation will be coming soon…


This R Markdown site was created with workflowr