## ----eval = FALSE------------------------------------------------------------- # if (!require("BiocManager")) # install.packages("BiocManager") # BiocManager::install("RaggedExperiment") ## ----include=TRUE,results="hide",message=FALSE,warning=FALSE------------------ library(RaggedExperiment) library(GenomicRanges) ## ----echo = FALSE, fig.cap = "RaggedExperiment object schematic. Rows and columns represent genomic ranges and samples, respectively. Assay operations can be performed with (from left to right) compactAssay, qreduceAssay, and sparseAssay.", out.width = "\\maxwidth"---- knitr::include_graphics("RaggedExperiment.svg") ## ----------------------------------------------------------------------------- sample1 <- GRanges( c(A = "chr1:1-10:-", B = "chr1:8-14:+", C = "chr2:15-18:+"), score = 3:5) sample2 <- GRanges( c(D = "chr1:1-10:-", E = "chr2:11-18:+"), score = 1:2) ## ----------------------------------------------------------------------------- colDat <- DataFrame(id = 1:2) ## ----------------------------------------------------------------------------- ragexp <- RaggedExperiment( sample1 = sample1, sample2 = sample2, colData = colDat ) ragexp ## ----------------------------------------------------------------------------- grl <- GRangesList(sample1 = sample1, sample2 = sample2) RaggedExperiment(grl, colData = colDat) ## ----------------------------------------------------------------------------- rangeList <- list(sample1 = sample1, sample2 = sample2) RaggedExperiment(rangeList, colData = colDat) ## ----------------------------------------------------------------------------- grList <- List(sample1 = sample1, sample2 = sample2) mcols(grList) <- colDat RaggedExperiment(grList) ## ----------------------------------------------------------------------------- rowRanges(ragexp) ## ----------------------------------------------------------------------------- dimnames(ragexp) ## ----------------------------------------------------------------------------- colData(ragexp) ## ----------------------------------------------------------------------------- dim(ragexp) Reduce(`*`, dim(ragexp)) sparseAssay(ragexp) length(sparseAssay(ragexp)) ## ----------------------------------------------------------------------------- sparseAssay(ragexp, sparse = TRUE) ## ----------------------------------------------------------------------------- compactAssay(ragexp) ## ----------------------------------------------------------------------------- compactAssay(ragexp, sparse = TRUE) ## ----------------------------------------------------------------------------- disjoinAssay(ragexp, simplifyDisjoin = mean) ## ----------------------------------------------------------------------------- unlist(grl, use.names = FALSE) ## ----------------------------------------------------------------------------- rowRanges(ragexp) assay(ragexp, "score") ## ----------------------------------------------------------------------------- (query <- GRanges(c("chr1:1-14:-", "chr2:11-18:+"))) ## ----------------------------------------------------------------------------- weightedmean <- function(scores, ranges, qranges) { isects <- pintersect(ranges, qranges) sum(scores * width(isects)) / sum(width(isects)) } ## ----------------------------------------------------------------------------- qreduceAssay(ragexp, query, simplifyReduce = weightedmean) ## ----------------------------------------------------------------------------- library(Matrix) sm <- Matrix::sparseMatrix( i = c(2, 3, 4, 3, 4, 3, 4), j = c(1, 1, 1, 3, 3, 4, 4), x = c(2L, 4L, 2L, 2L, 2L, 4L, 2L), dims = c(4, 4), dimnames = list( c("chr2:1-10", "chr2:2-10", "chr2:3-10", "chr2:4-10"), LETTERS[1:4] ) ) as(sm, "RaggedExperiment") ## ----------------------------------------------------------------------------- sessionInfo()