## ----install, eval = FALSE----------------------------------------------------
# if (!require("BiocManager"))
# install.packages("BiocManager")
# BiocManager::install("MultiAssayExperiment")
## ----load_packages, include=TRUE, results="hide", message=FALSE, warning=FALSE----
library(MultiAssayExperiment)
library(GenomicRanges)
library(SummarizedExperiment)
library(RaggedExperiment)
## ----empty_mae_creation-------------------------------------------------------
empty <- MultiAssayExperiment()
empty
slotNames(empty)
## ----include_graphics---------------------------------------------------------
knitr::include_graphics("MultiAssayExperiment.png")
## ----experiment_list_class----------------------------------------------------
class(experiments(empty)) # ExperimentList
## ----patient_data_creation----------------------------------------------------
patient.data <- data.frame(sex=c("M", "F", "M", "F"),
age=38:41,
row.names=c("Jack", "Jill", "Bob", "Barbara"))
patient.data
## ----sample_map_dataframe-----------------------------------------------------
is(sampleMap(empty), "DataFrame") # TRUE
## ----simpleMultiAssay_creation------------------------------------------------
exprss1 <- matrix(rnorm(16), ncol = 4,
dimnames = list(sprintf("ENST00000%i", sample(288754:290000, 4)),
c("Jack", "Jill", "Bob", "Bobby")))
exprss2 <- matrix(rnorm(12), ncol = 3,
dimnames = list(sprintf("ENST00000%i", sample(288754:290000, 4)),
c("Jack", "Jane", "Bob")))
doubleExp <- list("methyl 2k" = exprss1, "methyl 3k" = exprss2)
simpleMultiAssay <- MultiAssayExperiment(experiments=doubleExp)
simpleMultiAssay
## ----colData_empty------------------------------------------------------------
colData(simpleMultiAssay)
## ----simpleMultiAssay2_creation-----------------------------------------------
simpleMultiAssay2 <- MultiAssayExperiment(experiments=doubleExp,
colData=patient.data)
simpleMultiAssay2
colData(simpleMultiAssay2)
## ----empty_metadata-----------------------------------------------------------
class(metadata(empty)) # NULL (class "ANY")
## ----experiment_list_metadata-------------------------------------------------
metadata(experiments(empty))
## ----make_exprdat, message=FALSE----------------------------------------------
(arraydat <- matrix(seq(101, 108), ncol=4,
dimnames=list(c("ENST00000294241", "ENST00000355076"),
c("array1", "array2", "array3", "array4"))))
coldat <- data.frame(slope53=rnorm(4),
row.names=c("array1", "array2", "array3", "array4"))
exprdat <- SummarizedExperiment(arraydat, colData=coldat)
exprdat
## ----make_exprmap-------------------------------------------------------------
(exprmap <- data.frame(primary=rownames(patient.data)[c(1, 2, 4, 3)],
colname=c("array1", "array2", "array3", "array4"),
stringsAsFactors = FALSE))
## ----make_methyldat-----------------------------------------------------------
(methyldat <-
matrix(1:10, ncol=5,
dimnames=list(c("ENST00000355076", "ENST00000383706"),
c("methyl1", "methyl2", "methyl3",
"methyl4", "methyl5"))))
## ----make_methylmap-----------------------------------------------------------
(methylmap <- data.frame(primary = c("Jack", "Jack", "Jill", "Barbara", "Bob"),
colname = c("methyl1", "methyl2", "methyl3", "methyl4", "methyl5"),
stringsAsFactors = FALSE))
## ----make_microdat------------------------------------------------------------
(microdat <- matrix(201:212, ncol=3,
dimnames=list(c("hsa-miR-21", "hsa-miR-191",
"hsa-miR-148a", "hsa-miR148b"),
c("micro1", "micro2", "micro3"))))
## ----make_micromap------------------------------------------------------------
(micromap <- data.frame(primary = c("Jack", "Barbara", "Bob"),
colname = c("micro1", "micro2", "micro3"), stringsAsFactors = FALSE))
## ----make_rse-----------------------------------------------------------------
nrows <- 5
ncols <- 4
counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows)
rowRanges <- GRanges(rep(c("chr1", "chr2"), c(2, nrows - 2)),
IRanges(floor(runif(nrows, 1e5, 1e6)), width=100),
strand=sample(c("+", "-"), nrows, TRUE),
feature_id=sprintf("ID\\%03d", 1:nrows))
names(rowRanges) <- letters[1:5]
colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 2),
row.names= c("mysnparray1", "mysnparray2", "mysnparray3", "mysnparray4"))
rse <- SummarizedExperiment(assays=SimpleList(counts=counts),
rowRanges=rowRanges, colData=colData)
## ----make_rangemap------------------------------------------------------------
(rangemap <-
data.frame(primary = c("Jack", "Jill", "Bob", "Barbara"),
colname = c("mysnparray1", "mysnparray2", "mysnparray3", "mysnparray4"),
stringsAsFactors = FALSE))
## ----create_listmap-----------------------------------------------------------
listmap <- list(exprmap, methylmap, micromap, rangemap)
names(listmap) <- c("Affy", "Methyl 450k", "Mirna", "CNV gistic")
listmap
## ----listToMap_example--------------------------------------------------------
dfmap <- listToMap(listmap)
dfmap
## ----mapToList_example, eval=FALSE--------------------------------------------
# mapToList(dfmap, "assay")
## ----objlist_creation---------------------------------------------------------
objlist <- list("Affy" = exprdat, "Methyl 450k" = methyldat,
"Mirna" = microdat, "CNV gistic" = rse)
## ----multi_assay_creation-----------------------------------------------------
myMultiAssay <- MultiAssayExperiment(objlist, patient.data, dfmap)
myMultiAssay
## ----multi_assay_extractors---------------------------------------------------
experiments(myMultiAssay)
colData(myMultiAssay)
sampleMap(myMultiAssay)
metadata(myMultiAssay)
## ----prepMultiAssay_example---------------------------------------------------
objlist3 <- objlist
(names(objlist3) <- NULL)
try(prepMultiAssay(objlist3, patient.data, dfmap)$experiments,
outFile = stdout())
## ----prepMultiAssay_case_example----------------------------------------------
names(objlist3) <- toupper(names(objlist))
names(objlist3)
unique(dfmap[, "assay"])
prepMultiAssay(objlist3, patient.data, dfmap)$experiments
## ----sampleMap_example--------------------------------------------------------
exampleMap <- sampleMap(simpleMultiAssay2)
sapply(doubleExp, colnames)
exampleMap
prepMultiAssay(doubleExp, patient.data, exampleMap)$metadata$drops
## ----add_row_to_sampleMap-----------------------------------------------------
exMap <- rbind(dfmap,
DataFrame(assay = "New methyl", primary = "Joe",
colname = "Joe"))
invisible(prepMultiAssay(objlist, patient.data, exMap))
## ----prepMultiAssay_to_MAE----------------------------------------------------
prepped <- prepMultiAssay(objlist, patient.data, exMap)
preppedMulti <- MultiAssayExperiment(prepped$experiments, prepped$colData,
prepped$sampleMap, prepped$metadata)
preppedMulti
## ----prepMultiAssay_do_call---------------------------------------------------
do.call(MultiAssayExperiment, prepped)
## ----make_grl_example---------------------------------------------------------
grlls <- list(chr = rep("chr1", nrows), start = seq(11, 15),
end = seq(12, 16), strand = c("+", "-", "+", "*", "*"),
score = seq(1, 5), specimen = c("a", "a", "b", "b", "c"),
gene_symbols = paste0("GENE", letters[seq_len(nrows)]))
grldf <- as.data.frame(grlls, stringsAsFactors = FALSE)
GRL <- makeGRangesListFromDataFrame(grldf, split.field = "specimen",
names.field = "gene_symbols")
## ----as_ragged_experiment-----------------------------------------------------
RaggedExperiment(GRL)
## ----make_sedf_example--------------------------------------------------------
sels <- list(chr = rep("chr2", nrows), start = seq(11, 15),
end = seq(12, 16), strand = c("+", "-", "+", "*", "*"),
expr0 = seq(3, 7), expr1 = seq(8, 12), expr2 = seq(12, 16))
sedf <- as.data.frame(sels,
row.names = paste0("GENE", letters[rev(seq_len(nrows))]),
stringsAsFactors = FALSE)
sedf
makeSummarizedExperimentFromDataFrame(sedf)
## ----pseudo_subset, eval=FALSE------------------------------------------------
# myMultiAssay[rows, columns, assays]
## ----subset_by_rownames-------------------------------------------------------
myMultiAssay["ENST00000355076", , ]
## ----subset_by_rows_columns_assays--------------------------------------------
myMultiAssay["ENST00000355076", 1:2, c("Affy", "Methyl 450k")]
## ----subset_by_columns--------------------------------------------------------
myMultiAssay[, "Jack", ]
myMultiAssay[, 1, ]
myMultiAssay[, c(TRUE, FALSE, FALSE, FALSE), ]
## ----subset_by_assays---------------------------------------------------------
myMultiAssay[, , "Mirna"]
myMultiAssay[, , 3]
myMultiAssay[, , c(FALSE, FALSE, TRUE, FALSE, FALSE)]
## ----subset_by_drop-----------------------------------------------------------
myMultiAssay["ENST00000355076", , , drop=FALSE]
## ----subset_by_drop_true------------------------------------------------------
myMultiAssay["ENST00000355076", , , drop=TRUE]
## ----colata_example-----------------------------------------------------------
colData(myMultiAssay)
## ----subset_by_coldata--------------------------------------------------------
myMultiAssay[, 1:2]
## ----subset_by_coldata_logical------------------------------------------------
malesMultiAssay <- myMultiAssay[, myMultiAssay$sex == "M"]
colData(malesMultiAssay)
## ----subset_by_coldata_list---------------------------------------------------
allsamples <- colnames(myMultiAssay)
allsamples
## ----subset_by_coldata_list_remove--------------------------------------------
allsamples[["Methyl 450k"]] <- allsamples[["Methyl 450k"]][-3:-5]
myMultiAssay[, as.list(allsamples), ]
subsetByColumn(myMultiAssay, as.list(allsamples)) #equivalent
## ----subset_by_assays_char----------------------------------------------------
myMultiAssay[, , c("Affy", "CNV gistic")]
## ----subset_by_assays_logical-------------------------------------------------
is.cnv <- grepl("CNV", names(experiments(myMultiAssay)))
is.cnv
myMultiAssay[, , is.cnv] #logical subsetting
myMultiAssay[, , which(is.cnv)] #integer subsetting
## ----subset_by_row_list-------------------------------------------------------
myMultiAssay[list(Mirna = 1:2), , ]
## equivalently
subsetByRow(myMultiAssay, list(Mirna = 1:2))
## ----subset_by_row_id---------------------------------------------------------
featSub0 <- subsetByRow(myMultiAssay, "ENST00000355076")
featSub1 <- myMultiAssay["ENST00000355076", , drop = FALSE] #equivalent
all.equal(featSub0, featSub1)
class(featSub1)
class(experiments(featSub1))
experiments(featSub1)
## ----subset_by_row_id2--------------------------------------------------------
featSubsetted <-
subsetByRow(myMultiAssay, c("ENST00000355076", "ENST00000294241"))
assay(myMultiAssay, 1L)
assay(featSubsetted, 1L)
## ----subset_by_granges--------------------------------------------------------
gr <- GRanges(seqnames = c("chr1", "chr1", "chr2"), strand = c("-", "+", "+"),
ranges = IRanges(start = c(230602, 443625, 934533),
end = c(330701, 443724, 934632)))
## ----subset_by_granges2-------------------------------------------------------
subsetted <- subsetByRow(myMultiAssay, gr, maxgap = 2L, type = "within")
experiments(subsetted)
rowRanges(subsetted[[4]])
## ----double_bracket_subset----------------------------------------------------
names(myMultiAssay)
myMultiAssay[[1]]
myMultiAssay[["Affy"]]
## ----complete_cases_example---------------------------------------------------
colData(myMultiAssay)
## ----complete.cases_all-------------------------------------------------------
complete.cases(myMultiAssay)
## ----complete.cases_affy_methyl-----------------------------------------------
complete.cases(myMultiAssay[, , 1:2])
## ----complete_cases_subset----------------------------------------------------
myMultiAssay[, complete.cases(myMultiAssay), ]
## ----replicated_example-------------------------------------------------------
replicated(myMultiAssay)
## ----intersectRows_example----------------------------------------------------
(ensmblMatches <- intersectRows(myMultiAssay[, , 1:2]))
rownames(ensmblMatches)
## ----intersectColumns_example-------------------------------------------------
intersectColumns(myMultiAssay)
## ----mergeReplicates_example--------------------------------------------------
mergeReplicates(intersectColumns(myMultiAssay))
## ----c_example----------------------------------------------------------------
c(myMultiAssay, ExpScores = matrix(1:8, ncol = 4,
dim = list(c("ENSMBL0001", "ENSMBL0002"), paste0("pt", 1:4))),
mapFrom = 1L)
## ----getWithColData_example---------------------------------------------------
(affex <- getWithColData(myMultiAssay, 1L))
colData(affex)
class(affex)
## ----longForm_example---------------------------------------------------------
longForm(myMultiAssay[, , 1:2])
## ----longForm_colDataCols_example---------------------------------------------
longForm(myMultiAssay[, , 1:2], colDataCols="age")
## ----wideFormat_example-------------------------------------------------------
maemerge <- mergeReplicates(intersectColumns(myMultiAssay))
wideFormat(maemerge, colDataCols="sex")[, 1:5]
## ----assay_example------------------------------------------------------------
assay(myMultiAssay)
## ----assays_example-----------------------------------------------------------
assays(myMultiAssay)
## ----curatedTCGAData_install, eval = FALSE------------------------------------
# BiocManager::install("curatedTCGAData")
## ----rownames_colnames_example------------------------------------------------
rownames(myMultiAssay)
colnames(myMultiAssay)
## ----mae_api_err, error = TRUE------------------------------------------------
try({
objlist2 <- objlist
objlist2[[2]] <- as.vector(objlist2[[2]])
tryCatch(
MultiAssayExperiment(objlist2, patient.data, dfmap),
error = function(e) {
conditionMessage(e)
}
)
})
## ----methods_multiassay-------------------------------------------------------
methods(class="MultiAssayExperiment")
## ----sessioninfo--------------------------------------------------------------
sessionInfo()