## ----knitr-options, echo = FALSE, message = FALSE, warning = FALSE-------
# To render an HTML version that works nicely with github and web pages, do:
# rmarkdown::render("vignettes/splatter.Rmd", "all")
knitr::opts_chunk$set(fig.align = 'center', fig.width = 6, fig.height = 5,
                      dev = 'png')

## ----install, eval = FALSE-----------------------------------------------
#  source("https://bioconductor.org/biocLite.R")
#  biocLite("splatter")

## ----install-github, eval = FALSE----------------------------------------
#  biocLite("Oshlack/splatter", dependencies = TRUE,
#           build_vignettes = TRUE)

## ----quickstart----------------------------------------------------------
# Load package
library(splatter)

# Load example data
data("sc_example_counts")
# Estimate parameters from example data
params <- splatEstimate(sc_example_counts)
# Simulate data using estimated parameters
sim <- splatSimulate(params, dropout.present = FALSE)

## ----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-------------------------------------------------------
# Check that sc_example counts is an integer matrix
class(sc_example_counts)
typeof(sc_example_counts)
# Check the dimensions, each row is a gene, each column is a cell
dim(sc_example_counts)
# Show the first few entries
sc_example_counts[1:5, 1:5]

params <- splatEstimate(sc_example_counts)

## ----splatSimulate-------------------------------------------------------
sim <- splatSimulate(params, nGenes = 1000, dropout.present = FALSE)
sim

## ----SCESet--------------------------------------------------------------
# Access the counts
counts(sim)[1:5, 1:5]
# Information about genes
head(fData(sim))
# Information about cells
head(pData(sim))
# Gene by cell matrices
names(assayData(sim))
# Example of cell means matrix
get_exprs(sim, "CellMeans")[1:5, 1:5]

## ----pca-----------------------------------------------------------------
plotPCA(sim)

## ----groups--------------------------------------------------------------
sim.groups <- splatSimulate(groupCells = c(100, 100), method = "groups",
                            verbose = FALSE)
plotPCA(sim.groups, colour_by = "Group")

## ----paths---------------------------------------------------------------
sim.paths <- splatSimulate(method = "paths", verbose = FALSE)
plotPCA(sim.paths, colour_by = "Step")

## ----listSims------------------------------------------------------------
listSims()

## ----listSims-table------------------------------------------------------
knitr::kable(listSims(print = FALSE))

## ----lengths-------------------------------------------------------------
sim <- simpleSimulate(verbose = FALSE)
sim <- addGeneLengths(sim)
head(fData(sim))

## ----TPM-----------------------------------------------------------------
tpm(sim) <- calculateTPM(sim, fData(sim)$Length)
tpm(sim)[1:5, 1:5]

## ----comparison----------------------------------------------------------
sim1 <- splatSimulate(nGenes = 1000, groupCells = 20, verbose = FALSE)
sim2 <- simpleSimulate(nGenes = 1000, nCells = 20, verbose = FALSE)
comparison <- compareSCESets(list(Splat = sim1, Simple = sim2))

names(comparison)
names(comparison$Plots)

## ----comparison-means----------------------------------------------------
comparison$Plots$Means

## ----comparison-libsize-features-----------------------------------------
library("ggplot2")
ggplot(comparison$PhenoData,
       aes(x = total_counts, y = total_features, colour = Dataset)) +
    geom_point()

## ----difference----------------------------------------------------------
difference <- diffSCESets(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()