Skip to contents

raer facilitates analysis of RNA adenosine editing in the Bioconductor ecosystem.

Installation

raer is available on Bioconductor:

if (!require("BiocManager", quietly = TRUE)) {
    install.packages("BiocManager")
}

BiocManager::install("raer")

You can install the development version of raer from GitHub with:

BiocManager::install("rnabioco/raer")

Quick start

raer provides methods to compute per site read count summaries from BAM alignment files, either for known editing sites, or for all detected sites.

library(raer)
bam1fn <- raer_example("SRR5564269_Aligned.sortedByCoord.out.md.bam")
bam2fn <- raer_example("SRR5564277_Aligned.sortedByCoord.out.md.bam")
fafn <- raer_example("human.fasta")

bams <- c("ko" = bam1fn, "wt" = bam2fn)

rse <- pileup_sites(bams, fafn)

To facilitate comparisons across groups, base count data and genomic coordinates are stored in a RangedSummarizedExperiment.

suppressMessages(library(SummarizedExperiment))
rse
#> class: RangedSummarizedExperiment 
#> dim: 1695 2 
#> metadata(0):
#> assays(7): ALT nRef ... nC nG
#> rownames(1695): site_SSR3_1_2 site_SSR3_2_2 ... site_DHFR_517_2
#>   site_DHFR_518_2
#> rowData names(4): REF rpbz vdb sor
#> colnames(2): ko wt
#> colData names(1): sample
assays(rse)
#> List of length 7
#> names(7): ALT nRef nAlt nA nT nC nG
colData(rse)
#> DataFrame with 2 rows and 1 column
#>         sample
#>    <character>
#> ko          ko
#> wt          wt
assays(rse)$nRef[1:4, ]
#>               ko wt
#> site_SSR3_1_2 13 12
#> site_SSR3_2_2 14 12
#> site_SSR3_3_2 14 12
#> site_SSR3_4_2 15 12
assays(rse)$nAlt[1:4, ]
#>               ko wt
#> site_SSR3_1_2  0  0
#> site_SSR3_2_2  0  0
#> site_SSR3_3_2  0  0
#> site_SSR3_4_2  0  0

The FilterParam() class holds multiple options for customizing the output of pileup_sites().

fp <- FilterParam(
    only_keep_variants = TRUE,
    library_type = "fr-first-strand",
    min_depth = 2
)

rse <- pileup_sites(bams, fafn, param = fp)
rse
#> class: RangedSummarizedExperiment 
#> dim: 74 2 
#> metadata(0):
#> assays(7): ALT nRef ... nC nG
#> rownames(74): site_SSR3_102_2 site_SSR3_125_2 ... site_DHFR_430_2
#>   site_DHFR_513_2
#> rowData names(4): REF rpbz vdb sor
#> colnames(2): ko wt
#> colData names(1): sample

pileup_cells() provides support for quantifying editing sites in single cell libraries.

scbam_fn <- raer_example("5k_neuron_mouse_possort.bam")
outdir <- tempdir()

editing_sites <- GRanges(
    c(
        "2:579:-",
        "2:625:-",
        "2:589:-"
    ),
    REF = "A",
    ALT = "G"
)

cbs <- c(
    "CACCAAACAACAACAA-1",
    "TATTCCACACCCTCTA-1",
    "GACCTTCAGTTGTAAG-1"
)

sce <- pileup_cells(scbam_fn,
    sites = editing_sites,
    cell_barcodes = cbs,
    param = fp,
    output_directory = outdir
)
sce
#> class: SingleCellExperiment 
#> dim: 3 3 
#> metadata(0):
#> assays(2): nRef nAlt
#> rownames(3): site_2_579_2_AG site_2_589_2_AG site_2_625_2_AG
#> rowData names(2): REF ALT
#> colnames(3): CACCAAACAACAACAA-1 TATTCCACACCCTCTA-1 GACCTTCAGTTGTAAG-1
#> colData names(0):
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
assays(sce)$nRef
#> 3 x 3 sparse Matrix of class "dgCMatrix"
#>                 CACCAAACAACAACAA-1 TATTCCACACCCTCTA-1 GACCTTCAGTTGTAAG-1
#> site_2_579_2_AG                  0                  0                  1
#> site_2_589_2_AG                  1                  1                  2
#> site_2_625_2_AG                  0                  0                  0
assays(sce)$nAlt
#> 3 x 3 sparse Matrix of class "dgCMatrix"
#>                 CACCAAACAACAACAA-1 TATTCCACACCCTCTA-1 GACCTTCAGTTGTAAG-1
#> site_2_579_2_AG                  1                  1                  1
#> site_2_589_2_AG                  0                  0                  0
#> site_2_625_2_AG                  1                  1                  1

Core routines in raer are implemented using the htslib library and methods from samtools and bcftools. raer builds off of approaches from other RNA editing detection tools: