## ----knitr-options, echo = FALSE, message = FALSE, warning = FALSE------------ knitr::opts_chunk$set(collapse = TRUE, comment = "#>") # Use exact BSPARAM to avoid warnings options(BiocSingularParam.default = BiocSingular::ExactParam()) ## ----install-bioc, eval = FALSE----------------------------------------------- # BiocManager::install("splatter") ## ----install-github, eval = FALSE--------------------------------------------- # BiocManager::install("Oshlack/splatter", dependencies = TRUE, # build_vignettes = TRUE) ## ----quickstart--------------------------------------------------------------- # Load package suppressPackageStartupMessages({ library(splatter) library(scater) }) # Create mock data set.seed(1) sce <- mockSCE() # Estimate parameters from mock data params <- splatEstimate(sce) # Simulate data using estimated parameters sim <- splatSimulate(params) ## ----SplatParams-------------------------------------------------------------- params <- newSplatParams() params ## ----getParam----------------------------------------------------------------- getParam(params, "nGenes") ## ----setParam----------------------------------------------------------------- params <- setParam(params, "nGenes", 5000) getParam(params, "nGenes") ## ----getParams-setParams------------------------------------------------------ # Set multiple parameters at once (using a list) params <- setParams(params, update = list(nGenes = 8000, mean.rate = 0.5)) # Extract multiple parameters as a list getParams(params, c("nGenes", "mean.rate", "mean.shape")) # Set multiple parameters at once (using additional arguments) params <- setParams(params, mean.shape = 0.5, de.prob = 0.2) params ## ----newSplatParams-set------------------------------------------------------- params <- newSplatParams(lib.loc = 12, lib.scale = 0.6) getParams(params, c("lib.loc", "lib.scale")) ## ----splatEstimate------------------------------------------------------------ # Get the mock counts matrix counts <- counts(sce) # Check that counts is an integer matrix class(counts) typeof(counts) # Check the dimensions, each row is a gene, each column is a cell dim(counts) # Show the first few entries counts[1:5, 1:5] params <- splatEstimate(counts) ## ----splatSimulate------------------------------------------------------------ sim <- splatSimulate(params, nGenes = 1000) sim ## ----SCE---------------------------------------------------------------------- # Access the counts counts(sim)[1:5, 1:5] # Information about genes head(rowData(sim)) # Information about cells head(colData(sim)) # Gene by cell matrices names(assays(sim)) # Example of cell means matrix assays(sim)$CellMeans[1:5, 1:5] ## ----pca---------------------------------------------------------------------- # Use scater to calculate logcounts sim <- logNormCounts(sim) # Plot PCA sim <- runPCA(sim) plotPCA(sim) ## ----groups------------------------------------------------------------------- sim.groups <- splatSimulate(group.prob = c(0.5, 0.5), method = "groups", verbose = FALSE) sim.groups <- logNormCounts(sim.groups) sim.groups <- runPCA(sim.groups) plotPCA(sim.groups, colour_by = "Group") ## ----paths-------------------------------------------------------------------- sim.paths <- splatSimulate(de.prob = 0.2, nGenes = 1000, method = "paths", verbose = FALSE) sim.paths <- logNormCounts(sim.paths) sim.paths <- runPCA(sim.paths) plotPCA(sim.paths, colour_by = "Step") ## ----batches------------------------------------------------------------------ sim.batches <- splatSimulate(batchCells = c(50, 50), verbose = FALSE) sim.batches <- logNormCounts(sim.batches) sim.batches <- runPCA(sim.batches) plotPCA(sim.batches, colour_by = "Batch") ## ----batch-groups------------------------------------------------------------- sim.groups <- splatSimulate(batchCells = c(50, 50), group.prob = c(0.5, 0.5), method = "groups", verbose = FALSE) sim.groups <- logNormCounts(sim.groups) sim.groups <- runPCA(sim.groups) plotPCA(sim.groups, shape_by = "Batch", colour_by = "Group") ## ----listSims----------------------------------------------------------------- listSims() ## ----lengths------------------------------------------------------------------ sim <- simpleSimulate(verbose = FALSE) sim <- addGeneLengths(sim) head(rowData(sim)) ## ----TPM---------------------------------------------------------------------- tpm(sim) <- calculateTPM(sim, rowData(sim)$Length) tpm(sim)[1:5, 1:5] ## ----minimise----------------------------------------------------------------- sim <- splatSimulate() minimiseSCE(sim) ## ----minimise-keep------------------------------------------------------------ minimiseSCE(sim, rowData.keep = "Gene", colData.keep = c("Cell", "Batch"), metadata.keep = TRUE) ## ----comparison--------------------------------------------------------------- sim1 <- splatSimulate(nGenes = 1000, batchCells = 20, verbose = FALSE) sim2 <- simpleSimulate(nGenes = 1000, nCells = 20, verbose = FALSE) comparison <- compareSCEs(list(Splat = sim1, Simple = sim2)) names(comparison) names(comparison$Plots) ## ----comparison-means--------------------------------------------------------- comparison$Plots$Means ## ----comparison-libsize-features---------------------------------------------- library("ggplot2") ggplot(comparison$ColData, aes(x = sum, y = detected, colour = Dataset)) + geom_point() ## ----difference--------------------------------------------------------------- difference <- diffSCEs(list(Splat = sim1, Simple = sim2), ref = "Simple") difference$Plots$Means ## ----difference-qq------------------------------------------------------------ difference$QQPlots$Means ## ----save-panels, eval = FALSE------------------------------------------------ # # This code is just an example and is not run # panel <- makeCompPanel(comparison) # cowplot::save_plot("comp_panel.png", panel, nrow = 4, ncol = 3) # # panel <- makeDiffPanel(difference) # cowplot::save_plot("diff_panel.png", panel, nrow = 3, ncol = 5) # # panel <- makeOverallPanel(comparison, difference) # cowplot::save_plot("overall_panel.png", panel, ncol = 4, nrow = 7) ## ----citation----------------------------------------------------------------- citation("splatter") ## ----sessionInfo-------------------------------------------------------------- sessionInfo()