## ----setup, include=FALSE----------------------------------------------------- library(formatR) knitr::opts_chunk$set(echo=FALSE) ## ----dependencies, include=FALSE---------------------------------------------- library(CoreGx) library(data.table) ## ----class_diagram, fig.wide=TRUE, caption='LongTable Class Diagram'---------- knitr::include_graphics('LongTableClassDiagram.png') ## ----long_table_structure, fig.wide=TRUE, caption='LongTable Structure'------- knitr::include_graphics('LongTableStructure.png') ## ----head_data, echo=TRUE----------------------------------------------------- filePath <- system.file('extdata', 'merckLongTable.csv', package='CoreGx', mustWork=TRUE) merckDT <- fread(filePath, na.strings=c('NULL')) colnames(merckDT) ## ----sample_data, fig.width=80------------------------------------------------ knitr::kable(head(merckDT)[, 1:5]) ## ----sample_data2, fig.width=80----------------------------------------------- knitr::kable(head(merckDT)[, 5:ncol(merckDT)]) ## ----guess_mapping, echo=TRUE------------------------------------------------- # Our guesses of how we may identify rows, columns and assays groups <- list( justDrugs=c('drug1id', 'drug2id'), drugsAndDoses=c('drug1id', 'drug2id', 'drug1dose', 'drug2dose'), justCells=c('cellid'), cellsAndBatches=c('cellid', 'batchid'), assays1=c('drug1id', 'drug2id', 'cellid'), assays2=c('drug1id', 'drug2id', 'drug1dose', 'drug2dose', 'cellid', 'batchid') ) # Decide if we want to subset out mapped columns after each group subsets <- c(FALSE, TRUE, FALSE, TRUE, FALSE, TRUE) # First we put our data in the `LongTableDataMapper` LTdataMapper <- LongTableDataMapper(rawdata=merckDT) # Then we can test our hypotheses, subset=FALSE means we don't remove mapped # columns after each group is mapped guess <- guessMapping(LTdataMapper, groups=groups, subset=subsets) guess ## ----mappings_to_datamapper, echo=TRUE---------------------------------------- rowDataMap(LTdataMapper) <- guess$drugsAndDose colDataMap(LTdataMapper) <- guess$cellsAndBatches ## ----split_assays, echo=TRUE-------------------------------------------------- assays <- list( sensitivity=guess$assays2[[2]][seq_len(4)], profiles=guess$assays2[[2]][c(5, 6)] ) assays ## ----assign_assaymap, echo=TRUE----------------------------------------------- assayMap(LTdataMapper) <- assays ## ----echo=TRUE---------------------------------------------------------------- longTable <- metaConstruct(LTdataMapper) ## ----rownames, echo=TRUE------------------------------------------------------ head(rownames(longTable)) ## ----colnames, echo=TRUE------------------------------------------------------ head(colnames(longTable)) ## ----subset_dataframe_character, echo=TRUE------------------------------------ row <- rownames(longTable)[1] columns <- colnames(longTable)[1:2] longTable[row, columns] ## ----rowdata_coldata, echo=TRUE----------------------------------------------- head(rowData(longTable), 3) head(colData(longTable), 3) ## ----simple_regex, echo=TRUE-------------------------------------------------- longTable['5-FU', ] ## ----column_specific_regex, echo=TRUE----------------------------------------- all.equal(longTable['5-FU:*:*:*', ], longTable['^5-FU', ]) ## ---- echo=TRUE--------------------------------------------------------------- longTable[ # row query .(drug1id == 'Temozolomide' & drug2id %in% c('Lapatinib', 'Bortezomib')), .(cellid == 'CAOV3') # column query ] ## ----echo=TRUE---------------------------------------------------------------- subLongTable <- longTable[.(drug1id == 'Temozolomide' & drug2id != 'Lapatinib'), .(batchid != 2)] ## ----echo=TRUE---------------------------------------------------------------- print(paste0('drug2id: ', paste0(unique(rowData(subLongTable)$drug2id), collapse=', '))) print(paste0('batchid: ', paste0(unique(colData(subLongTable)$batchid), collapse=', '))) ## ----echo=TRUE---------------------------------------------------------------- head(rowData(longTable), 3) ## ----echo=TRUE---------------------------------------------------------------- head(rowData(longTable, key=TRUE), 3) ## ----echo=TRUE---------------------------------------------------------------- head(colData(longTable), 3) ## ----echo=TRUE---------------------------------------------------------------- head(colData(longTable, key=TRUE), 3) ## ----echo=TRUE---------------------------------------------------------------- assays <- assays(longTable) assays[[1]] ## ----echo=TRUE---------------------------------------------------------------- assays[[2]] ## ----echo=TRUE---------------------------------------------------------------- assays <- assays(longTable, withDimnames=TRUE) colnames(assays[[1]]) ## ----echo=TRUE---------------------------------------------------------------- assays <- assays(longTable, withDimnames=TRUE, metadata=TRUE) colnames(assays[[2]]) ## ----echo=TRUE---------------------------------------------------------------- assayNames(longTable) ## ----echo=TRUE---------------------------------------------------------------- colnames(assay(longTable, 'sensitivity')) assay(longTable, 'sensitivity') ## ----echo=TRUE---------------------------------------------------------------- colnames(assay(longTable, 'sensitivity', withDimnames=TRUE)) assay(longTable, 'sensitivity', withDimnames=TRUE) ## ----sessionInfo-------------------------------------------------------------- sessionInfo()