Classes in ExperimentList are designed to store lists of experiments such as SummarizedExperiment, RangedSummarizedExperiment, SingleCellExperiment, SpatialExperiment. Each experiment object is stored in its own ExperimentList class respectively (one of SummarizedExperimentList, RangedSummarizedExperimentList, SingleCellExperimentList, SpatialExperimentList). In addition to storing experiment data, the class also stores experiment-specific annotations associated with each experiment, analogous to colData in a SummarizedExperiment object.

ExperimentList(
  experiments = SimpleList(),
  experimentData = DataFrame(),
  check.names = TRUE,
  change.names = TRUE
)

Arguments

experiments

a SimpleList or list containing a list of SummarizedExperiment, RangedSummarizedExperiment, SingleCellExperiment, or SpatialExperiment objects.

experimentData

a DataFrame or data.frame containing experiment specific annotations. The number of rows in experimentData should match the number of experiments.

check.names

a logical specifying whether names of experiments should be checked against row names of experimentData (default is TRUE).

change.names

a logical indicating whether column names of columns in each individual experiment object should be concatenated with experiment names to ensure unique column names (default is TRUE).

Value

One of the following objects: SummarizedExperimentList, RangedSummarizedExperimentList, SingleCellExperimentList, or SpatialExperimentList.

Details

This class is designed to enable analysis of data from multiple experiments. In the context of transcriptomic data, these could be data from different studies. For single-cell or spatial transcriptomics data, these could be data from different samples but from the same study. In these scenarios, analysis of data from different biological samples is made possible by ExperimentList objects.

Similar to the design of SummarizedExperiment, ExperimentList enables storing and subsetting of experiment-specific annotations as part of the experimentData stored within each object.

Examples

nrows <- 200; ncols <- 6

#Experiment 1
counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows)
colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3),
                     row.names=LETTERS[1:6])
se1 <- SummarizedExperiment(assays=SimpleList(counts=counts),
                            colData=colData)

#Experiment 2
counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows)
colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3),
                     row.names=LETTERS[1:6])
se2 <- SummarizedExperiment(assays=SimpleList(counts=counts),
                            colData=colData)

#Experiment annotation
experimentData <- DataFrame(age = c(36, 72),
                            sex = c("F", "M"),
                            row.names = c("PatientA", "PatientB"))

#Create ExperimentList
experiments = SimpleList("PatientA" = se1, "PatientB" = se2)
el = ExperimentList(experiments = experiments,
                    experimentData = experimentData)
el
#> ExperimentList with 2 SummarizedExperiments
#> class: SummarizedExperimentList 
#> dim: 200 12 
#> metadata(0):
#> assays(1): counts
#> rownames: NULL
#> rowData names(0):
#> colnames(12): PatientA.A PatientA.B ... PatientB.E PatientB.F
#> colData names(1): Treatment
#> experiments: 2
#> experimentNames (2): PatientA PatientB
#> experimentData names (2): age sex