Description Usage Arguments Details Constructor Accessors Subsetting Combining Coercion Implementation and Extension Author(s) See Also Examples
The SparseSummarizedExperiment class extends the
SummarizedExperiment class by adding the
sparseAssays slot, which contains a SparseAssays object.
Note that SummarizedExperiment is the parent
of the SparseSummarizedExperiment class which means that all methods
documented in ?SummarizedExperiment
also work on a SparseSummarizedExperiment. Note also that
SparseSummarizedExperiment is a parent of the
RangedSparseSummarizedExperiment class which means that all the
methods documented below also work on a
RangedSparseSummarizedExperiment. See
‘Implementation and Extension’ for details.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ## Constructor
# See ?RangedSparseSummarizedExperiment for the constructor function.
## Accessors
sparseAssayNames(x, ...)
sparseAssayNames(x, ...) <- value
sparseAssays(x, ..., withDimnames = TRUE)
sparseAssays(x, ..., withDimnames = TRUE) <- value
sparseAssay(x, i, ...)
sparseAssay(x, i, ...) <- value
## Subsetting
## S4 method for signature 'SparseSummarizedExperiment'
x[i, j, ...]
## Combining
## S4 method for signature
## 'SparseSummarizedExperiment,SparseSummarizedExperiment'
combine(x, y, ...)
|
x, y |
A SparseSummarizedExperiment object. |
... |
For For For other accessors, ignored. |
i, j |
For For For |
withDimnames |
A |
value |
An object of a class specified in the S4 method signature or as outlined in ‘Details’. |
These details assume familiarity with the SummarizedExperiment class; please first read this linked documentation.
The SparseSummarizedExperiment class is meant for sparse
numeric data derived from a sequencing experiment. These data are stored as
a SparseAssays object in the sparseAssays slot of the
SparseSummarizedExperiment. In this instance, sparse means data where
there are multiple measurements per-feature, per-sample and where
measurements with the same value (including missing values) are frequently
observed. NOTE: SparseSummarizedExperiment objects only payoff
compared to SummarizedExperiment when
this condition is satisfied.
A SparseSummarizedExperiment object can also store non-sparse data by
storing these data in the assays slot, as would be done in a
SummarizedExperiment object.
The sparse data are accessed by using the sparseAssays
funcion, described below. This returns a SimpleList object.
For an example of where SparseSummarizedExperiment objects are useful, please see the MethPat class in the MethylationTuples package (currently GitHub-only, https://github.com/PeteHaitch/MethylationTuples/).
SparseSummarizedExperiment instances are constructed using the
SparseSummarizedExperiment function documented in
?RangedSparseSummarizedExperiment.
All the accessors documented in
?SummarizedExperiment are also
applicable to SparseSummarizedExperiment objects. In addition, when x
is a SparseSummarizedExperiment objects, the following accessors are
applicable.
# TODO: Check equivalence claim
sparseAssays(x), sparseAssays(x) <- value:Get or set
the sparse assays. Unlike assays(x),
sparseAssays(x) does not coerce the returned object to a
SimpleList object but preserves it as the concrete
SparseAssays subclass. value is a SparseAssays
object with the same dimensions as x or a SimpleList object
(which will be coerced to a SparseAssays object and must then have
the same dimensions as x).
# TODO: Check equivalence claim # TODO: Could/should I allow value to be a SimpleList
sparseAssay(x, i), sparseAssay(x, i) <- value:Get or
set the ith (default first) sparse assay elements. Unlike
assay(x, i),
sparseAssay(x, i) allows vector i and preserves the
returned object as the concrete SparseAssays subclass.
value must be a SparseAssays object (with the same concrete
subclass) of the same dimension as x, and with dimension names
NULL or consistent with those of x and length equal
to length(i).
sparseAssayNames(x), sparseAssayNames(x) <- value:Get
or set the names of sparseAssays() elements.
Subsetting behaviour is inherited from methods defined for
SummarizedExperiment methods; see
?SummarizedExperiment.
SparseSummarizedExperiment objects can be combined in three different ways.
rbind Suitable for when each object has the same samples.
cbind Suitable for when each object has unique samples.
combine Suitable in either case, however, requires
that dimnames are set on each object and that all objects have an
identical number of sparse assays with identical names.
cbind() and rbind() behaviour is inherited from methods
defined for SummarizedExperiment methods; see
?SummarizedExperiment. The
sparseAssays slot is appropriately handled in a cbind() or
rbind(); see cbind,SimpleListSparseAssays-method and
rbind,SimpleListSparseAssays-method for details.
Additionally, the SparseSummarizedExperiment defines
combine methods for both
SummarizedExperiment and
SparseSummarizedExperiment objects. The sparseAssays slot is
appropriately handled in a combine(); see
combine,SimpleListSparseAssays,SimpleListSparseAssays-method
for details.
Coercion from a SparseSummarizedExperiment (resp.
RangedSparseSummarizedExperiment) to a
SummarizedExperiment (resp.
RangedSummarizedExperiment) can be done in one
of two ways. The first method uses implicit coercion, e.g., if x is a
SparseSummarizedExperiment object then
as(x, "SparseSummarizedExperiment") coerces it to a
SummarizedExperiment but drops the
sparseAssays slot. The second method uses an
explicit coercion to coerce the SparseAssays object in
sparseAssays slot into a Assays object and adds it to the
assays slot of the resulting object, makeSEFromSSE(x).
This section contains advanced material meant for package developers.
The SparseSummarizedExperiment/RangedSparseSummarizedExperiment class hierarchy is as follows:
1 2 3 4 5 | SummarizedExperiment
|-- RangedSummarizedExperiment
| |-- RangedSparseSummarizedExperiment
|-- SparseSummarizedExperiment
| |-- RangedSparseSummarizedExperiment
|
That is, the RangedSparseSummarizedExperiment is a subclass of both SparseSummarizedExperiment and RangedSummarizedExperiment, although SparseSummarizedExperiment takes precedence.
SparseSummarizedExperiment is implemented as an S4 class, and can be
extended in the usual way, using
contains = "SparseSummarizedExperiment" in the new class definition.
Similarly, the RangedSparseSummarizedExperiment can be extended using
contains = "RangedSparseSummarizedExperiment" in the new class
definition.
In addition, the representation of the sparseAssays slot of
SparseSummarizedExperiment is as a virtual class, SparseAssays. This
allows derived classes (contains = "SparseAssays") to easily
implement alternative requirement for the sparse assays, e.g., backed by
file-based storage like NetCDF or the ff package, while re-using
the existing SparseSummarizedExperiment class without modification. See
SparseAssays for more information.
The current sparseAssays slot is implemented as a
SimpleListSparseAssays object.
It is generally advisable to work with
the sparse representation of the data wherever possible, but there are
times when the densified version of the sparse data are required.
This can be achieved using the densify = TRUE argument in
sparseAssays() and sparseAssay(). Note, however, that it is
generally unadvisable to simultaneously densify all sparse assays and
samples; see densify.
Peter Hickey, peter.hickey@gmail.com
RangedSparseSummarizedExperiment objects.
SummarizedExperiment objects in the SummarizedExperiment package.
SparseAssays and SimpleListSparseAssays objects.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | sl1 <- SimpleList(
s1 = SimpleList(key = as.integer(c(NA, 1, NA, NA, 2, NA, 3, NA, 4, 5)),
value = matrix(1:10, ncol = 2)),
s2 = SimpleList(key = as.integer(c(NA, NA, 1, 2, NA, NA, 3, 4, NA, NA)),
value = matrix(8:1, ncol = 2)))
sl2 <- SimpleList(
s1 = SimpleList(key = as.integer(c(NA, 1, NA, 2, 2, NA, 1, NA, NA, 1)),
value = matrix(1:2, ncol = 1)),
s2 = SimpleList(key = as.integer(c(1, 1, 1, 2, NA, NA, NA, NA, NA, NA)),
value = matrix(4:3, ncol = 1)))
sa <- SparseAssays(SimpleList(sa1 = sl1, sa2 = sl2))
colData <- DataFrame(Genotype = c("WT", "KO"),
row.names = c("s1", "s2"))
sse <- SparseSummarizedExperiment(sparseAssays = sa,
colData = colData)
sse
dim(sse)
dimnames(sse)
sparseAssay(sse)
# densify the first sparse assay.
# In general its a bad idea to use densify = TRUE, but these data are small
# enough not to worry.
# TODO: Should I use sparseAssay() or sparseAssays() in the example; check
# out SummarizedExperiment examples.
densify(sparseAssay(sse), 1, 1:2)[[1]]
SAapply(sparseAssays(sse), function(x) x^2)
## Not run:
# Need sparsify = TRUE to use the replace method
sparseAssays(sse) <- SAapply(sparseAssays(sse), function(x) x^2)
## End(Not run)
sparseAssays(sse) <- SAapply(sparseAssays(sse), function(x) x^2,
sparsify = TRUE)
densify(sparseAssays(sse), 1:2, 1:2)
sparseAssay(sse)
# densify the first sparse assay
densify(sparseAssay(sse), 1, 1:2)[[1]]
sse[, sse$Genotype == "WT"]
## cbind() combines objects with the same features of interest
## but different samples:
sse1 <- sse
sse2 <- sse1[, 1]
colnames(sse2) <- "s3"
cmb1 <- cbind(sse1, sse2)
dim(cmb1)
dimnames(cmb1)
## rbind() combines objects with the same samples but different
## features of interest:
sse1 <- sse
sse2 <- sse1[1:5, ]
rownames(sse2) <- letters[1:nrow(sse2)]
cmb2 <- rbind(sse1, sse2)
dim(cmb2)
dimnames(cmb2)
## combine() combines objects with potentially different features of interest
## and different samples, by matching on names:
sse1 <- sse[1:5, ]
names(sse1) <- letters[1:5]
sse2 <- sse[3:8, 2]
names(sse2) <- letters[3:8]
cmb3 <- combine(sse1, sse2)
dim(cmb3)
dimnames(cmb3)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.