The RangedSummarizedExperiment class is a matrix-like container where rows represent ranges of interest (as a GRanges or GRangesList object) and columns represent samples (with sample data summarized as a DataFrame). A RangedSummarizedExperiment contains one or more assays, each represented by a matrix-like object of numeric or other mode.
RangedSummarizedExperiment is a subclass of SummarizedExperiment and,
as such, all the methods documented in ?SummarizedExperiment
also work on a RangedSummarizedExperiment object. The methods documented
below are additional methods that are specific to RangedSummarizedExperiment
objects.
## Constructor
SummarizedExperiment(assays, ...)
"SummarizedExperiment"(assays, rowData=NULL, rowRanges=GRangesList(), colData=DataFrame(), metadata=list())
"SummarizedExperiment"(assays, ...)
"SummarizedExperiment"(assays, ...)
"SummarizedExperiment"(assays, ...)
## Accessors
rowRanges(x, ...)
rowRanges(x, ...) <- value
## Subsetting
"subset"(x, subset, select, ...)
## rowRanges access
## see 'GRanges compatibility', below
list
or SimpleList
of matrix-like elements,
or a matrix-like object. All elements of the list must have the same
dimensions, and dimension names (if present) must be consistent
across elements and with the row names of rowRanges
and
colData
.assays
.
If rowRanges
is missing, a SummarizedExperiment
instance is returned.list
of arbitrary content
describing the overall experiment.SummarizedExperiment
, S4 methods list
and matrix
, arguments identical to those of the
SimpleList
method. For rowRanges
, ignored.
rowRanges
setter
will also accept a SummarizedExperiment object and will first
coerce it to RangedSummarizedExperiment before it sets value
on
it.rowRanges(x)
, is a logical vector indicating
elements or rows to keep: missing values are taken as false.colData(x)
, is a logical vector indicating
elements or rows to keep: missing values are taken as false.SummarizedExperiment
function with arguments outlined above. x
is a RangedSummarizedExperiment
object. rowRanges(x)
, rowRanges(x) <- value
:value
is a GenomicRanges
object. Row
names of value
must be NULL or consistent with the existing
row names of x
.rowRanges
. Supported operations include: pcompare
,
duplicated
, end
, end<-
,
granges
, is.unsorted
, match
,
mcols
, mcols<-
, order
,
ranges
, ranges<-
, rank
,
seqinfo
, seqinfo<-
, seqnames
,
sort
, start
, start<-
,
strand
, strand<-
,
width
, width<-
. See also ?shift
,
?isDisjoint
,
?coverage
,
?findOverlaps
, and
?nearest
for more
GRanges compatibility methods. Not all GRanges operations are supported, because
they do not make sense for RangedSummarizedExperiment objects
(e.g., length, name, as.data.frame, c, splitAsList), involve
non-trivial combination or splitting of rows (e.g., disjoin, gaps,
reduce, unique), or have not yet been implemented (Ops, map, window,
window<-). x
is a RangedSummarizedExperiment
object. subset(x, subset, select)
:x
using an expression subset
referring to columns of
rowRanges(x)
(including seqnames, start,
end, width, strand, and
names(rowData(x))
) and / or select
referring to
column names of colData(x)
.contains="RangedSummarizedExperiment"
in the new class definition. The rows of a RangedSummarizedExperiment object represent ranges
(in genomic coordinates) of interest. The ranges of interest are
described by a GRanges or a GRangesList object, accessible
using the rowRanges
function, described below. The GRanges
and GRangesList classes contains sequence (e.g., chromosome) name,
genomic coordinates, and strand information. Each range can be
annotated with additional data; this data might be used to describe
the range or to summarize results (e.g., statistics of differential
abundance) relevant to the range. Rows may or may not have row names;
they often will not.
nrows <- 200; ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(50, 150)), IRanges(floor(runif(200, 1e5, 1e6)), width=100), strand=sample(c("+", "-"), 200, TRUE), feature_id=sprintf("ID%03d", 1:200)) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) rse <- SummarizedExperiment(assays=SimpleList(counts=counts), rowRanges=rowRanges, colData=colData) rse dim(rse) dimnames(rse) assayNames(rse) head(assay(rse)) assays(rse) <- endoapply(assays(rse), asinh) head(assay(rse)) rowRanges(rse) rowData(rse) # same as 'mcols(rowRanges(rse))' colData(rse) rse[, rse$Treatment == "ChIP"] ## cbind() combines objects with the same ranges but different samples: rse1 <- rse rse2 <- rse1[,1:3] colnames(rse2) <- letters[1:ncol(rse2)] cmb1 <- cbind(rse1, rse2) dim(cmb1) dimnames(cmb1) ## rbind() combines objects with the same samples but different ranges: rse1 <- rse rse2 <- rse1[1:50,] rownames(rse2) <- letters[1:nrow(rse2)] cmb2 <- rbind(rse1, rse2) dim(cmb2) dimnames(cmb2) ## Coercion to/from SummarizedExperiment: se0 <- as(rse, "SummarizedExperiment") se0 as(se0, "RangedSummarizedExperiment") ## Setting rowRanges on a SummarizedExperiment object turns it into a ## RangedSummarizedExperiment object: se <- se0 rowRanges(se) <- rowRanges se # RangedSummarizedExperiment ## Sanity checks: stopifnot(identical(assays(se0), assays(rse))) stopifnot(identical(dim(se0), dim(rse))) stopifnot(identical(dimnames(se0), dimnames(rse))) stopifnot(identical(rowData(se0), rowData(rse))) stopifnot(identical(colData(se0), colData(rse)))