plotDir = ifelse(exists(".standalone"), "", "part1/") if(plotDir!="") if(!file.exists(plotDir)) dir.create(plotDir) knitr::opts_chunk$set(fig.path=plotDir, dev=c("png", "pdf")) library(mofaCLL) library(reticulate) library(DESeq2) library(sva) library(MultiAssayExperiment) library(MOFA) library(tidyverse) options(stringsAsFactors=FALSE)
#set the global ggplot theme theme_set(theme_bw() + theme(axis.text = element_text(size=12), axis.title = element_text(size=14), plot.title = element_text(size = 15, hjust =0.5, face="bold")))
Load datasets
data("drug","gene","rna")
Download methylation dataset from server to a temporary folder
methPath <- file.path(tempdir(),"meth.RData") if(!file.exists(methPath)) { download.file("https://www.huber.embl.de/users/jlu/data/meth.RData", methPath) load(methPath) } else { load(methPath) }
viabMat <- mutate(drug, id = paste0(Drug,"_",concIndex)) %>% select(patientID, id, normVal) %>% spread(key = patientID, value = normVal) %>% data.frame() %>% column_to_rownames("id") %>% as.matrix()
rna.vst<-DESeq2::varianceStabilizingTransformation(rna) exprMat <- assay(rna.vst) nTop = 5000 sds <- genefilter::rowSds(exprMat) exprMat <- exprMat[order(sds, decreasing = T)[1:nTop],]
methData <- assays(meth)[["beta"]] nTop = 5000 sds <- genefilter::rowSds(methData) methData <- methData[order(sds, decreasing = T)[1:nTop],]
gene <- t(gene)
Create object
mofaData <- list(Drugs = viabMat, mRNA = exprMat, Mutations = gene, Methylation = methData) # Create MultiAssayExperiment object mofaData <- MultiAssayExperiment::MultiAssayExperiment( experiments = mofaData )
Only keep samples that have at least three assays
useSamples <- MultiAssayExperiment::sampleMap(mofaData) %>% as_tibble() %>% group_by(primary) %>% summarise(n= length(assay)) %>% filter(n >= 3) %>% pull(primary) mofaData <- mofaData[,useSamples]
Dimensions for each dataset
experiments(mofaData)
How many samples have the complete datasets
table(table(sampleMap(mofaData)$primary))
Build MOFA object from multiAssayExperiment object
# Build the MOFA object MOFAobject <- createMOFAobject(mofaData) MOFAobject
Overview of data
p <- plotDataOverview.m(MOFAobject) p$plot
Define data options
DataOptions <- getDefaultDataOptions()
Define model options
ModelOptions <- getDefaultModelOptions(MOFAobject) ModelOptions$numFactors <- 30 ModelOptions$sparsity <- TRUE ModelOptions
Define training options
TrainOptions <- getDefaultTrainOptions() # Automatically drop factors that explain less than 2% of variance in all omics TrainOptions$DropFactorThreshold <- 0.02 TrainOptions$tolerance <- 0.01 TrainOptions
MOFAobject <- prepareMOFA( MOFAobject, DataOptions = DataOptions, ModelOptions = ModelOptions, TrainOptions = TrainOptions ) MOFAobject <- runMOFA(MOFAobject)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.