diff --git a/.Rbuildignore b/.Rbuildignore
index f28ce43bbb10f132a4fba935c9438ec1515e0076..5c7dbad65f33379850f6c86bc7b0c8cde6549c57 100644
--- a/.Rbuildignore
+++ b/.Rbuildignore
@@ -4,4 +4,8 @@
 ^codecov\.yml$
 ^appveyor\.yml$
 ^NEWS\.md$
-^\.git*
\ No newline at end of file
+^\.git*
+^docs$
+^index\.md$
+^_pkgdown\.yml$
+^pkgdown$
diff --git a/.travis.yml b/.travis.yml
index 6d0110d0aa50e79896f560d4ddc7b223751a7941..f9364be4143569c62ed08e45d4305f378ec6b347 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,12 +7,15 @@ r:
 sudo: false
 cache: packages
 
-bioc_packages:
-  - SummarizedExperiment
-  - scran
+# dependency for gsl>copula>zinbwave
+addons:
+  apt:
+    packages:
+      - libgsl-dev
 
-r_packages:
-  - testthat
+install:
+  - R -e 'install.packages("devtools")'
+  - R -e 'devtools::install(dependencies = TRUE, upgrade_dependencies = TRUE)'
 
 after_success:
   - Rscript -e 'covr::codecov()'
diff --git a/DESCRIPTION b/DESCRIPTION
index 60ea856fc6ebae2b79300e144cb6918d69c2408b..466ea86647ab53406edd67c730dfd21f5452b752 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,8 +1,8 @@
 Package: splatter
 Type: Package
 Title: Simple Simulation of Single-cell RNA Sequencing Data
-Version: 1.0.1
-Date: 2017-04-28
+Version: 1.3.1
+Date: 2018-01-03
 Author: Luke Zappia
 Authors@R:
     c(person("Luke", "Zappia", role = c("aut", "cre"),
@@ -21,35 +21,41 @@ License: GPL-3 + file LICENSE
 LazyData: TRUE
 Depends:
     R (>= 3.4),
-    scater
+    scater,
+    SingleCellExperiment
 Imports:
-    fitdistrplus,
-    edgeR,
-    stats,
-    locfit,
     akima,
-    Biobase,
+    BiocGenerics,
+    BiocParallel,
     checkmate,
-    methods,
-    utils,
-    matrixStats,
+    edgeR,
+    fitdistrplus,
     ggplot2,
+    locfit,
+    matrixStats,
+    methods,
     scales,
-    BiocParallel
+    stats,
+    SummarizedExperiment,
+    utils
 Suggests:
-    testthat,
-    scran,
-    progress,
+    BiocStyle,
+    covr,
+    cowplot,
+    knitr,
+    limSolve,
     lme4,
+    progress,
     pscl,
-    scDD,
-    knitr,
+    testthat,
     rmarkdown,
-    BiocStyle,
-    covr,
     S4Vectors,
-    SummarizedExperiment,
-    cowplot
+    scDD,
+    scran,
+    mfa,
+    phenopath,
+    BASiCS,
+    zinbwave
 biocViews: SingleCell, RNASeq, Transcriptomics, GeneExpression, Sequencing,
     Software
 URL: https://github.com/Oshlack/splatter
diff --git a/NAMESPACE b/NAMESPACE
index bf36ba081502bbf193bd025b5e0557ac2b84cf95..642439f7ddb59588e139aa67551ae8d178874290 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -1,18 +1,29 @@
 # Generated by roxygen2: do not edit by hand
 
-S3method(lun2Estimate,SCESet)
+S3method(BASiCSEstimate,SCESet)
+S3method(BASiCSEstimate,matrix)
+S3method(lun2Estimate,SingleCellExperiment)
 S3method(lun2Estimate,matrix)
-S3method(lunEstimate,SCESet)
+S3method(lunEstimate,SingleCellExperiment)
 S3method(lunEstimate,matrix)
-S3method(scDDEstimate,SCESet)
+S3method(mfaEstimate,SingleCellExperiment)
+S3method(mfaEstimate,matrix)
+S3method(phenoEstimate,SingleCellExperiment)
+S3method(phenoEstimate,matrix)
+S3method(scDDEstimate,SingleCellExperiment)
+S3method(scDDEstimate,default)
 S3method(scDDEstimate,matrix)
-S3method(simpleEstimate,SCESet)
+S3method(simpleEstimate,SingleCellExperiment)
 S3method(simpleEstimate,matrix)
-S3method(splatEstimate,SCESet)
+S3method(splatEstimate,SingleCellExperiment)
 S3method(splatEstimate,matrix)
+S3method(zinbEstimate,SingleCellExperiment)
+S3method(zinbEstimate,matrix)
+export(BASiCSEstimate)
+export(BASiCSSimulate)
 export(addGeneLengths)
-export(compareSCESets)
-export(diffSCESets)
+export(compareSCEs)
+export(diffSCEs)
 export(getParam)
 export(getParams)
 export(listSims)
@@ -23,11 +34,19 @@ export(lunSimulate)
 export(makeCompPanel)
 export(makeDiffPanel)
 export(makeOverallPanel)
+export(mfaEstimate)
+export(mfaSimulate)
+export(newBASiCSParams)
 export(newLun2Params)
 export(newLunParams)
+export(newMFAParams)
+export(newPhenoParams)
 export(newSCDDParams)
 export(newSimpleParams)
 export(newSplatParams)
+export(newZINBParams)
+export(phenoEstimate)
+export(phenoSimulate)
 export(scDDEstimate)
 export(scDDSimulate)
 export(setParam)
@@ -40,18 +59,27 @@ export(splatSimulateGroups)
 export(splatSimulatePaths)
 export(splatSimulateSingle)
 export(summariseDiff)
+export(zinbEstimate)
+export(zinbSimulate)
+exportClasses(BASiCSParams)
 exportClasses(Lun2Params)
 exportClasses(LunParams)
+exportClasses(MFAParams)
+exportClasses(PhenoParams)
 exportClasses(SCDDParams)
 exportClasses(SimpleParams)
 exportClasses(SplatParams)
-importFrom(Biobase,"fData<-")
-importFrom(Biobase,"pData<-")
-importFrom(Biobase,assayData)
-importFrom(Biobase,fData)
-importFrom(Biobase,pData)
+exportClasses(ZINBParams)
 importFrom(BiocParallel,SerialParam)
 importFrom(BiocParallel,bplapply)
+importFrom(SingleCellExperiment,"cpm<-")
+importFrom(SingleCellExperiment,SingleCellExperiment)
+importFrom(SummarizedExperiment,"assays<-")
+importFrom(SummarizedExperiment,"colData<-")
+importFrom(SummarizedExperiment,"rowData<-")
+importFrom(SummarizedExperiment,assays)
+importFrom(SummarizedExperiment,colData)
+importFrom(SummarizedExperiment,rowData)
 importFrom(checkmate,checkCharacter)
 importFrom(checkmate,checkClass)
 importFrom(checkmate,checkDataFrame)
@@ -87,10 +115,6 @@ importFrom(methods,new)
 importFrom(methods,slot)
 importFrom(methods,slotNames)
 importFrom(methods,validObject)
-importFrom(scater,"cpm<-")
-importFrom(scater,"set_exprs<-")
-importFrom(scater,counts)
-importFrom(scater,get_exprs)
 importFrom(scater,newSCESet)
 importFrom(stats,dnbinom)
 importFrom(stats,median)
diff --git a/NEWS.md b/NEWS.md
index 83e091a7bacd5c5b207e74dd37f2e08eb3a1502e..91b574378f2cc0a39d7f66e497513cb10500b2c5 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,34 +1,105 @@
-# 1.0.1
+## Version 1.3.1 (2018-01-03)
+
+* Fix error in vignette caused by changes in scater
+
+## Version 1.3.0 (2017-10-13)
+
+* Bioconductor 3.7 devel 
+
+## Version 1.2.1 (2017-11-23)
+
+* Fix zinbwave installation error
+
+# Version 1.2.0 (2017-10-30)
+
+* Bioconductor 3.6 release
+
+## Version 1.1.8 (2017-10-13)
+
+* Add BASiCS simulation
+* Update Splatter citation
+* Update Lun2 reference
+
+## Version 1.1.7 (2017-10-05)
+
+* Add PhenoPath simulation
+* Add ZINB-WaVE simulation
+* Adjust mfaSimulate output
+
+## Version 1.1.6 (2017-10-02)
+
+* Update scDD version
+* Add mfa simulation
+
+## Version 1.1.5 (2017-09-13)
+
+* Convert to SingleCellExperiment
+
+## Version 1.1.4 (2017-08-04)
+
+* Fix group factors bug
+
+## Version 1.1.3 (2017-07-20)
+
+* Add verbose option to scDDEstimate
+* Change "mean-dropout" to "mean-zeros" in compareSCESets
+
+## Version 1.1.2 (2017-07-16)
+
+* Update summariseDiff
+* Update scDDEstimate, now estimates gene types
+* Fix error in lun2Estimate
+* Import SummarizedExperiment to avoid warnings
+
+## Version 1.1.1 (2017-07-07)
+
+* Add batch effects to Splat simulation
+* Make Splat group assignment probabilistic
+* Update SplatParams with new parameters
+
+## Version 1.1.0 (2017-07-07)
+
+* Bioconductor 3.6 devel
+
+## Version 1.0.3 (2017-05-26)
+
+* Update citation
+
+## Version 1.0.2 (2017-05-15)
+
+* Fix error handling when fitting means
+
+## Version 1.0.1 (2017-04-28)
 
 * Fix scales in some difference plots
 * Fix colours in difference plots
 * Fix panel legends
 
-# 1.0.0
+# Version 1.0.0 (2017-04-28)
 
 * Bioconductor 3.5 release
 
-# 0.99.15
+## Version 0.99.15 (2017-04-14)
 
 * Add summariseDiff function
 * Add BPPARAM argument to scDDSimulate
-* Adjust default Spalt DE factor parameters
+* Adjust default Splat DE factor parameters
 * Add limits to zeros diff plots
 * Remove estimation of dropout.present
 
-# 0.99.14
+## Version 0.99.14 (2017-03-28)
 
 * Add functions for making comparison panels
 * Add panel section to vignette
 * Change variance plot scale (for consistency)
 
-# 0.99.13
+## Version 0.99.13 (2017-03-25)
 
 * Modify how Lun2Params stores gene paramters to use data.frame
 * Move sampling of genes/cells to lun2Simulate
 * Return to old Lun2 nGenes estimate
 
-# 0.99.12
+## Version 0.99.12 (2017-03-22)
 
 * Add diffSCESets function
 * Update compareSCESets plots
@@ -36,127 +107,127 @@
 * Modify how addFeatureStats names columns
 * Add infinte bcv.df warning to splatSimulate
 
-# 0.99.11
+## Version 0.99.11 (2017-03-20)
 
 * Add parallel option to lun2Estimate
 * Allow non-integer library sizes in Lun2Params
 * Adjust dropout eta value
 * Adjust comparison plots
 
-# 0.99.10
+## Version 0.99.10 (2017-03-07)
 
 * Improve Splat estimation procedure
 * Update default Splat parameters
 * Remove out.loProb Splat parameter
 * Add MeanZeros plot to compareSCESets
 
-# 0.99.9
+## Version 0.99.9 (2017-02-02)
 
 * Add addGeneLengths function
 * Update scDD reference
 
-# 0.99.8
+## Version 0.99.8 (2017-01-23)
 
 * Fix bug that meant non-linear path factors weren't stored in output
 
-# 0.99.7
+## Version 0.99.7 (2017-01-10)
 
 * Small changes to avoid NOTEs and reduce check time
 
-# 0.99.6
+## Version 0.99.6 (2016-12-29)
 
 * Add installation to vignette
 * Add detail about counts matrix to vignette
 * Replace 1:x with seq_len/seq_along
 
-# 0.99.5
+## Version 0.99.5 (2016-12-28)
 
 * Set R_TESTS environment
 
-# 0.99.4
+## Version 0.99.4 (2016-12-23)
 
 * Version bump to start build
 
-# splatter 0.99.3
+## Version 0.99.3 (2016-12-21)
 
 * Fix to match Bioconductor version of scDD
 * Add logo to repository
 
-# splatter 0.99.2
+## Version 0.99.2 (2016-12-13)
 
 * Add rownames, colnames to matrices in splatSimulate, lunSimulate
 * Bump R version to 3.4
 
-# splatter 0.99.1
+## Version 0.99.1 (2016-12-12)
 
 * Address Biocondutor build warnings, notes
 
-# splatter 0.99.0
+# Version 0.99.0 (2016-12-05)
 
 * Submit to Bioconductor
 
-# splatter 0.12.1
+## Version 0.12.1 (2016-11-25)
 
 * Fix bug in compareSCESets
 * Dataset order is now kept in plots
 
-# splatter 0.12.0
+## Version 0.12.0 (2016-10-25)
 
 * Add compareSCESets function
 * Update vignette
 * Fix LunParams validity bug
 * Add logo
 
-# splatter 0.11.1
+## Version 0.11.1 (2016-11-23)
 
 * Fix bug in splatSimulatePaths that caused NAs
 
-# splatter 0.11.0
+## Version 0.11.0 (2016-11-22)
 
 * Make compatible with Bioconductor 3.4
 
-# splatter 0.10.1
+## Version 0.10.1 (2016-10-17)
 
 * Fix error for SCESets in lun2Estimate, scDDEstimate
 
-# splatter 0.10.0
+## Version 0.10.0 (2016-10-16)
 
 * Add listSims function
 * Add vignette
 
-# splatter 0.9.0
+## Version 0.9.0 (2016-10-15)
 
 * Add scDD simulation
 
-# splatter 0.8.0
+## Version 0.8.0 (2016-10-15)
 
 * Add Lun2 simulation
 
-# splatter 0.7.0
+## Version 0.7.0 (2016-10-14)
 
 * Redesign how parameters are stored
 * Each simulation now has it's own S4 Params class
 * Modify exisiting simulations to use new parameter objects
 
-# splatter 0.6.0
+## Version 0.6.0 (2016-10-12)
 
 * Add Lun simulation
 * Modify splatParams to take Lun parameters
 
-# splatter 0.5.0
+## Version 0.5.0 (2016-10-12)
 
 * Add simple simulation
 
-# splatter 0.4.0
+## Version 0.4.0 (2016-10-12)
 
 * Add splatter simulations
 * Modify some parts of splatParams and fix bugs
 
-# splatter 0.3.0
+## Version 0.3.0 (2016-10-06)
 
 * Added parameter estimation functions
 
-# splatter 0.2.0
+## Version 0.2.0 (2016-10-06)
 
 * Added splatParams object
 * Added functions for interacting with splatParams
diff --git a/R/AllClasses.R b/R/AllClasses.R
index 0b7f9053a2b91ba4654ea24949447ccd69efd529..35e0d9ec21dcd93cf861b12ad3f1dcea4401f13d 100644
--- a/R/AllClasses.R
+++ b/R/AllClasses.R
@@ -7,12 +7,12 @@
 #' The Params class defines the following parameters:
 #'
 #' \describe{
-#'     \item{\code{[nGenes]}}{The number of genes to simulate.}
-#'     \item{\code{[nCells]}}{The number of cells to simulate.}
-#'     \item{\code{seed}}{Seed to use for generating random numbers.}
+#'     \item{\code{nGenes}}{The number of genes to simulate.}
+#'     \item{\code{nCells}}{The number of cells to simulate.}
+#'     \item{\code{[seed]}}{Seed to use for generating random numbers.}
 #' }
 #'
-#' The parameters shown in brackets can be estimated from real data.
+#' The parameters not shown in brackets can be estimated from real data.
 #'
 #' @name Params
 #' @rdname Params
@@ -72,10 +72,18 @@ setClass("SimpleParams",
 #' \describe{
 #'     \item{\code{nGenes}}{The number of genes to simulate.}
 #'     \item{\code{nCells}}{The number of cells to simulate.}
-#'     \item{\code{[nGroups]}}{The number of groups or paths to simulate.}
-#'     \item{\code{[groupCells]}}{Vector giving the number of cells in each
-#'     simulation group/path.}
 #'     \item{\code{[seed]}}{Seed to use for generating random numbers.}
+#'     \item{\emph{Batch parameters}}{
+#'         \describe{
+#'             \item{\code{[nBatches]}}{The number of batches to simulate.}
+#'             \item{\code{[batchCells]}}{Vector giving the number of cells in
+#'             each batch.}
+#'             \item{\code{[batch.facLoc]}}{Location (meanlog) parameter for the
+#'             batch effect factor log-normal distribution. Can be a vector.}
+#'             \item{\code{[batch.facScale]}}{Scale (sdlog) parameter for the
+#'             batch effect factor log-normal distribution. Can be a vector.}
+#'         }
+#'     }
 #'     \item{\emph{Mean parameters}}{
 #'         \describe{
 #'             \item{\code{mean.shape}}{Shape parameter for the mean gamma
@@ -102,6 +110,14 @@ setClass("SimpleParams",
 #'             expression outlier factor log-normal distribution.}
 #'         }
 #'     }
+#'     \item{\emph{Group parameters}}{
+#'         \describe{
+#'             \item{\code{[nGroups]}}{The number of groups or paths to
+#'             simulate.}
+#'             \item{\code{[group.prob]}}{Probability that a cell comes from a
+#'             group.}
+#'         }
+#'     }
 #'     \item{\emph{Differential expression parameters}}{
 #'         \describe{
 #'             \item{\code{[de.prob]}}{Probability that a gene is differentially
@@ -173,8 +189,10 @@ setClass("SimpleParams",
 #' @exportClass SplatParams
 setClass("SplatParams",
          contains = "Params",
-         slots = c(nGroups = "numeric",
-                   groupCells = "numeric",
+         slots = c(nBatches = "numeric",
+                   batchCells = "numeric",
+                   batch.facLoc = "numeric",
+                   batch.facScale = "numeric",
                    mean.shape = "numeric",
                    mean.rate = "numeric",
                    lib.loc = "numeric",
@@ -182,6 +200,8 @@ setClass("SplatParams",
                    out.prob = "numeric",
                    out.facLoc = "numeric",
                    out.facScale = "numeric",
+                   nGroups = "numeric",
+                   group.prob = "numeric",
                    de.prob = "numeric",
                    de.downProb = "numeric",
                    de.facLoc = "numeric",
@@ -196,8 +216,10 @@ setClass("SplatParams",
                    path.skew = "numeric",
                    path.nonlinearProb = "numeric",
                    path.sigmaFac = "numeric"),
-         prototype = prototype(nGroups = 1,
-                               groupCells = 100,
+         prototype = prototype(nBatches = 1,
+                               batchCells = 100,
+                               batch.facLoc = 0.1,
+                               batch.facScale = 0.1,
                                mean.rate = 0.3,
                                mean.shape = 0.6,
                                lib.loc = 11,
@@ -205,6 +227,8 @@ setClass("SplatParams",
                                out.prob = 0.05,
                                out.facLoc = 4,
                                out.facScale = 0.5,
+                               nGroups = 1,
+                               group.prob = 1,
                                de.prob = 0.1,
                                de.downProb = 0.5,
                                de.facLoc = 0.1,
@@ -284,7 +308,7 @@ setClass("LunParams",
 
 #' The Lun2Params class
 #'
-#' S4 class that holds parameters for the Lun simulation.
+#' S4 class that holds parameters for the Lun2 simulation.
 #'
 #' @section Parameters:
 #'
@@ -381,30 +405,30 @@ setClass("Lun2Params",
 #' The SCDD simulation uses the following parameters:
 #'
 #' \describe{
-#'     \item{\code{[nGenes]}}{The number of genes to simulate (not used).}
+#'     \item{\code{nGenes}}{The number of genes to simulate (not used).}
 #'     \item{\code{nCells}}{The number of cells to simulate in each condition.}
 #'     \item{\code{[seed]}}{Seed to use for generating random numbers.}
 #'     \item{\code{SCdat}}{
-#'     \code{\link[SummarizedExperiment]{SummarizedExperiment}} containing real
+#'     \code{\link[SingleCellExperiment]{SingleCellExperiment}} containing real
 #'     data.}
-#'     \item{\code{[nDE]}}{Number of DE genes to simulate.}
-#'     \item{\code{[nDP]}}{Number of DP genes to simulate.}
-#'     \item{\code{[nDM]}}{Number of DM genes to simulate.}
-#'     \item{\code{[nDB]}}{Number of DB genes to simulate.}
-#'     \item{\code{[nEE]}}{Number of EE genes to simulate.}
-#'     \item{\code{[nEP]}}{Number of EP genes to simulate.}
+#'     \item{\code{nDE}}{Number of DE genes to simulate.}
+#'     \item{\code{nDP}}{Number of DP genes to simulate.}
+#'     \item{\code{nDM}}{Number of DM genes to simulate.}
+#'     \item{\code{nDB}}{Number of DB genes to simulate.}
+#'     \item{\code{nEE}}{Number of EE genes to simulate.}
+#'     \item{\code{nEP}}{Number of EP genes to simulate.}
 #'     \item{\code{[sd.range]}}{Interval for fold change standard deviations.}
 #'     \item{\code{[modeFC]}}{Values for DP, DM and DB mode fold changes.}
 #'     \item{\code{[varInflation]}}{Variance inflation factors for each
-#'     condition. If all equal to 1 will be set to \code{NULL} (default)}
+#'     condition. If all equal to 1 will be set to \code{NULL} (default).}
 #'     \item{\code{[condition]}}{String giving the column that represents
-#'     biological group of interest}
+#'     biological group of interest.}
 #' }
 #'
 #' The parameters not shown in brackets can be estimated from real data using
 #' \code{\link{scDDEstimate}}. See \code{\link[scDD]{simulateSet}} for more
-#' details of the parameters. For details of the Splatter implementation of the
-#' scDD simulation see \code{\link{scDDSimulate}}.
+#' details about the parameters. For details of the Splatter implementation of
+#' the scDD simulation see \code{\link{scDDSimulate}}.
 #'
 #' @name SCDDParams
 #' @rdname SCDDParams
@@ -424,7 +448,7 @@ setClass("SCDDParams",
                    varInflation = "numeric",
                    condition = "character"),
           prototype = prototype(SCdat =
-                                   SummarizedExperiment::SummarizedExperiment(),
+                                   SingleCellExperiment::SingleCellExperiment(),
                                nCells = 100,
                                nDE = 250,
                                nDP = 250,
@@ -436,3 +460,200 @@ setClass("SCDDParams",
                                modeFC = c(2, 3, 4),
                                varInflation = c(1, 1),
                                condition = "condition"))
+
+#' The BASiCSParams class
+#'
+#' S4 class that holds parameters for the BASiCS simulation.
+#'
+#' @section Parameters:
+#'
+#' The BASiCS simulation uses the following parameters:
+#' \describe{
+#'     \item{\code{nGenes}}{The number of genes to simulate.}
+#'     \item{\code{nCells}}{The number of cells to simulate.}
+#'     \item{\code{[seed]}}{Seed to use for generating random numbers.}
+#'     \item{\emph{Batch parameters}}{
+#'         \describe{
+#'            \item{\code{nBatches}}{Number of batches to simulate.}
+#'            \item{\code{batchCells}}{Number of cells in each batch.}
+#'         }
+#'     }
+#'     \item{\emph{Gene parameters}}{
+#'         \describe{
+#'             \item{\code{gene.params}}{A \code{data.frame} containing gene
+#'             parameters with two coloumns: \code{Mean} (mean expression for
+#'             each biological gene) and \code{Delta} (cell-to-cell
+#'             heterogeneity for each biological gene).}
+#'         }
+#'     }
+#'     \item{\emph{Spike-in parameters}}{
+#'         \describe{
+#'             \item{\code{nSpikes}}{The number of spike-ins to simulate.}
+#'             \item{\code{spike.means}}{Input molecules for each spike-in.}
+#'         }
+#'     }
+#'     \item{\emph{Cell parameters}}{
+#'         \describe{
+#'             \item{\code{cell.params}}{A \code{data.frame} containing gene
+#'             parameters with two coloumns: \code{Phi} (mRNA content factor for
+#'             each cell, scaled to sum to the number of cells in each batch)
+#'             and \code{S} (capture efficient for each cell).}
+#'         }
+#'     }
+#'     \item{\emph{Variability parameters}}{
+#'         \describe{
+#'             \item{\code{theta}}{Technical variability parameter for each
+#'             batch.}
+#'         }
+#'     }
+#' }
+#'
+#' The parameters not shown in brackets can be estimated from real data using
+#' \code{\link{BASiCSEstimate}}. For details of the BASiCS simulation see
+#' \code{\link{BASiCSSimulate}}.
+#'
+#' @name BASiCSParams
+#' @rdname BASiCSParams
+#' @aliases BASiCSParams-class
+#' @exportClass BASiCSParams
+setClass("BASiCSParams",
+         contains = "Params",
+         slots = c(nBatches = "numeric",
+                   batchCells = "numeric",
+                   gene.params = "data.frame",
+                   nSpikes = "numeric",
+                   spike.means = "numeric",
+                   cell.params = "data.frame",
+                   theta = "numeric"),
+         prototype = prototype(nBatches = 1,
+                               batchCells = 100,
+                               gene.params =
+                                   data.frame(
+                                       Mean = c(8.36, 10.65, 4.88, 6.29, 21.72,
+                                                12.93, 30.19),
+                                       Delta = c(1.29, 0.88, 1.51, 1.49, 0.54,
+                                                 0.40, 0.85)
+                               ),
+                               nSpikes = 5,
+                               spike.means = c(12.93, 30.19, 1010.72, 7.90,
+                                               31.59),
+                               cell.params =
+                                   data.frame(
+                                       Phi = c(1.00, 1.06, 1.09, 1.05, 0.80),
+                                       S = c(0.38, 0.40, 0.38, 0.39, 0.34)
+                               ),
+                               theta = 0.39)
+)
+
+#' The MFAParams class
+#'
+#' S4 class that holds parameters for the mfa simulation.
+#'
+#' @section Parameters:
+#'
+#' The mfa simulation uses the following parameters:
+#' \describe{
+#'     \item{\code{nGenes}}{The number of genes to simulate.}
+#'     \item{\code{nCells}}{The number of cells to simulate.}
+#'     \item{\code{[seed]}}{Seed to use for generating random numbers.}
+#'     \item{\code{[trans.prop]}}{Proportion of genes that show transient
+#'     expression. These genes are briefly up or down-regulated before returning
+#'     to their initial state}
+#'     \item{\code{[zero.neg]}}{Logical. Whether to set negative expression
+#'     values to zero. This will zero-inflate the data.}
+#'     \item{\code{[dropout.present]}}{Logical. Whether to simulate dropout.}
+#'     \item{\code{dropout.lambda}}{Lambda parameter for the exponential
+#'     dropout function.}
+#' }
+#'
+#' The parameters not shown in brackets can be estimated from real data using
+#' \code{\link{mfaEstimate}}. See \code{\link[mfa]{create_synthetic}} for more
+#' details about the parameters. For details of the Splatter implementation of
+#' the mfa simulation see \code{\link{mfaSimulate}}.
+#'
+#' @name MFAParams
+#' @rdname MFAParams
+#' @aliases MFAParams-class
+#' @exportClass MFAParams
+setClass("MFAParams",
+         contains = "Params",
+         slots = c(trans.prop = "numeric",
+                   zero.neg = "logical",
+                   dropout.present = "logical",
+                   dropout.lambda = "numeric"),
+         prototype = prototype(trans.prop = 0, zero.neg = TRUE,
+                               dropout.present = FALSE, dropout.lambda = 1))
+
+
+#' The PhenoParams class
+#'
+#' S4 class that holds parameters for the PhenoPath simulation.
+#'
+#' @section Parameters:
+#'
+#' The PhenoPath simulation uses the following parameters:
+#'
+#' \describe{
+#'     \item{\code{nGenes}}{The number of genes to simulate.}
+#'     \item{\code{nCells}}{The number of cells to simulate.}
+#'     \item{\code{[seed]}}{Seed to use for generating random numbers.}
+#'     \item{\code{[n.de]}}{Number of genes to simulate from the differential
+#'     expression regime}
+#'     \item{\code{[n.pst]}}{Number of genes to simulate from the pseudotime
+#'     regime}
+#'     \item{\code{[n.pst.beta]}}{Number of genes to simulate from the
+#'     pseudotime + beta interactions regime}
+#'     \item{\code{[n.de.pst.beta]}}{Number of genes to simulate from the
+#'     differential expression + pseudotime + interactions regime}
+#' }
+#'
+#' The parameters not shown in brackets can be estimated from real data using
+#' \code{\link{phenoEstimate}}. For details of the PhenoPath simulation
+#' see \code{\link{phenoSimulate}}.
+#'
+#' @name PhenoParams
+#' @rdname PhenoParams
+#' @aliases PhenoParams-class
+#' @exportClass PhenoParams
+setClass("PhenoParams",
+         contains = "Params",
+         slots = c(n.de = "numeric",
+                   n.pst = "numeric",
+                   n.pst.beta = "numeric",
+                   n.de.pst.beta = "numeric"),
+         prototype = prototype(n.de = 2500, n.pst = 2500, n.pst.beta = 2500,
+                               n.de.pst.beta = 2500))
+
+
+#' The ZINBParams class
+#'
+#' S4 class that holds parameters for the ZINB-WaVE simulation.
+#'
+#' @section Parameters:
+#'
+#' The ZINB-WaVE simulation uses the following parameters:
+#'
+#' \describe{
+#'     \item{\code{nGenes}}{The number of genes to simulate.}
+#'     \item{\code{nCells}}{The number of cells to simulate.}
+#'     \item{\code{[seed]}}{Seed to use for generating random numbers.}
+#'     \item{\code{model}}{Object describing a ZINB model.}
+#' }
+#'
+#' The majority of the parameters for this simulation are stored in a
+#' \code{\link[zinbwave]{ZinbModel}} object. Please refer to the documentation
+#' for this class and its constructor(\code{\link[zinbwave]{zinbModel}}) for
+#' details about all the parameters.
+#'
+#' The parameters not shown in brackets can be estimated from real data using
+#' \code{\link{zinbEstimate}}. For details of the ZINB-WaVE simulation
+#' see \code{\link{zinbSimulate}}.
+#'
+#' @name ZINBParams
+#' @rdname ZINBParams
+#' @aliases ZINBParams-class
+#' @exportClass ZINBParams
+setClass("ZINBParams",
+         contains = "Params",
+         slots = c(model = "ANY"),
+         prototype = prototype(nGenes = 100, nCells = 50))
diff --git a/R/BASiCS-estimate.R b/R/BASiCS-estimate.R
new file mode 100644
index 0000000000000000000000000000000000000000..e29e6a0e662edc136bc53f1a3bbd78e8704fa469
--- /dev/null
+++ b/R/BASiCS-estimate.R
@@ -0,0 +1,142 @@
+#' Estimate BASiCS simulation parameters
+#'
+#' Estimate simulation parameters for the BASiCS simulation from a real dataset.
+#'
+#' @param counts either a counts matrix or an SCESet object containing count
+#'        data to estimate parameters from.
+#' @param spike.info data.frame describing spike-ins with two columns: "Name"
+#'        giving the names of the spike-in features (must match
+#'        \code{rownames(counts)}) and "Input" giving the number of input
+#'        molecules.
+#' @param batch vector giving the batch that each cell belongs to.
+#' @param n total number of MCMC iterations. Must be \code{>= max(4, thin)} and
+#' a multiple of \code{thin}.
+#' @param thin thining period for the MCMC sampler. Must be \code{>= 2}.
+#' @param burn burn-in period for the MCMC sampler. Must be in the range
+#' \code{1 <= burn < n} and a multiple of \code{thin}.
+#' @param params BASiCSParams object to store estimated values in.
+#' @param verbose logical. Whether to print progress messages.
+#' @param progress logical. Whether to print additional BASiCS progress
+#' messages.
+#' @param ... Optional parameters passed to \code{\link[BASiCS]{BASiCS_MCMC}}.
+#'
+#' @details
+#' This function is just a wrapper around \code{\link[BASiCS]{BASiCS_MCMC}} that
+#' takes the output and converts it to a BASiCSParams object. Either a set of
+#' spike-ins or batch information (or both) must be supplied. If only batch
+#' information is provided there must be at least two batches. See
+#' \code{\link[BASiCS]{BASiCS_MCMC}} for details.
+#'
+#' @return BASiCSParams object containing the estimated parameters.
+#'
+#' @examples
+#' \dontrun{
+#' data("sc_example_counts")
+#' spike.info <- data.frame(Name = rownames(sc_example_counts)[1:10],
+#'                          Input = rnorm(10, 500, 200),
+#'                          stringsAsFactors = FALSE)
+#' params <- BASiCSEstimate(sc_example_counts[1:50, 1:20],
+#'                          spike.info)
+#' params
+#' }
+#' @export
+BASiCSEstimate <- function(counts, spike.info = NULL, batch = NULL,
+                           n = 20000, thin = 10, burn = 5000,
+                           params = newBASiCSParams(), verbose = TRUE,
+                           progress = TRUE, ...) {
+    UseMethod("BASiCSEstimate")
+}
+
+#' @rdname BASiCSEstimate
+#' @export
+BASiCSEstimate.SCESet <- function(counts, spike.info = NULL, batch = NULL,
+                                  n = 20000, thin = 10, burn = 5000,
+                                  params = newBASiCSParams(), verbose = TRUE,
+                                  progress = TRUE, ...) {
+    counts <- BiocGenerics::counts(counts)
+    BASiCSEstimate(counts, params)
+}
+
+#' @rdname BASiCSEstimate
+#' @export
+BASiCSEstimate.matrix <- function(counts, spike.info = NULL, batch = NULL,
+                                  n = 20000, thin = 10, burn = 5000,
+                                  params = newBASiCSParams(), verbose = TRUE,
+                                  progress = TRUE, ...) {
+
+    checkmate::assertClass(params, "BASiCSParams")
+    checkmate::assertMatrix(counts, mode = "numeric", any.missing = FALSE,
+                            min.rows = 1, min.cols = 1, row.names = "unique",
+                            col.names = "unique")
+    if (is.null(spike.info) && is.null(batch)) {
+        stop("At least one of spike.info and batch must be provided")
+    }
+    if (!is.null(spike.info)) {
+        checkmate::assertDataFrame(spike.info, any.missing = FALSE,
+                                   min.rows = 1, ncols = 2)
+        if (!all(colnames(spike.info) == c("Name", "Input"))) {
+            stop("spike.info must have columns named 'Name' and 'Input'")
+        }
+        checkmate::assertCharacter(spike.info$Name, min.chars = 1,
+                                   unique = TRUE)
+        checkmate::assertNumeric(spike.info$Input, lower = 0, finite = TRUE)
+    } #else {
+    #    spike.info <- data.frame(Name = c(), Input = c())
+    #}
+    if (!is.null(batch)) {
+        checkmate::assertIntegerish(batch, lower = 0, any.missing = FALSE,
+                                    len = ncol(counts))
+        if (is.null(spike.info) && length(unique(batch)) == 1) {
+            stop("If spike.info is not provided there must be at least two ",
+                 "batches")
+        }
+    } else {
+        batch <- rep(1, ncol(counts))
+    }
+    checkmate::assertInt(thin, lower = 2)
+    checkmate::assertInt(n, lower = max(4, thin))
+    if ((n %% thin) != 0) {
+        stop("'n' must be a multiple of 'thin'")
+    }
+    checkmate::assertInt(burn, lower = 1, upper = n - 1)
+    if ((burn %% thin) != 0) {
+        stop("'burn' must be a multiple of 'thin'")
+    }
+
+    is.spike <- rownames(counts) %in% spike.info$Name
+    BASiCS.data <- suppressMessages(
+                       BASiCS::newBASiCS_Data(counts, is.spike, spike.info,
+                                              batch)
+    )
+
+    if (verbose) {
+        mcmc <- BASiCS::BASiCS_MCMC(Data = BASiCS.data, N = n, Thin = thin,
+                                    Burn = burn, PrintProgress = progress, ...)
+    } else {
+        mcmc <- suppressMessages(
+                    BASiCS::BASiCS_MCMC(Data = BASiCS.data, N = n, Thin = thin,
+                                        Burn = burn, PrintProgress = progress,
+                                        ...)
+        )
+    }
+
+    mcmc.summ <- BASiCS::Summary(mcmc)
+
+    means <- BASiCS::displaySummaryBASiCS(mcmc.summ, Param = "mu")[, 1]
+    deltas <- BASiCS::displaySummaryBASiCS(mcmc.summ, Param = "delta")[, 1]
+    phis <- BASiCS::displaySummaryBASiCS(mcmc.summ, Param = "phi")[, 1]
+    ss <- BASiCS::displaySummaryBASiCS(mcmc.summ, Param = "s")[, 1]
+    thetas <- BASiCS::displaySummaryBASiCS(mcmc.summ, Param = "theta")[, 1]
+
+    params <- setParams(params,
+                        nGenes = sum(!is.spike),
+                        batchCells = as.vector(table(batch)),
+                        gene.params = data.frame(Mean = means, Delta = deltas),
+                        nSpikes = sum(is.spike),
+                        spike.means = ifelse(!is.null(spike.info),
+                                             spike.info$Input, numeric()),
+                        cell.params = data.frame(Phi = phis, S = ss),
+                        theta = thetas)
+
+    return(params)
+}
diff --git a/R/BASiCS-simulate.R b/R/BASiCS-simulate.R
new file mode 100644
index 0000000000000000000000000000000000000000..7b80d69fdc3b48d3c884def858696afca9731be5
--- /dev/null
+++ b/R/BASiCS-simulate.R
@@ -0,0 +1,139 @@
+#' BASiCS simulation
+#'
+#' Simulate counts using the BASiCS method.
+#'
+#' @param params BASiCSParams object containing simulation parameters.
+#' @param verbose logical. Whether to print progress messages
+#' @param ... any additional parameter settings to override what is provided in
+#'        \code{params}.
+#'
+#' @details
+#' This function is just a wrapper around \code{\link[BASiCS]{BASiCS_Sim}} that
+#' takes a \code{\link{BASiCSParams}}, runs the simulation then converts the
+#' output to an \code{\link[scater]{SCESet}} object. See
+#' \code{\link[BASiCS]{BASiCS_Sim}} for more details of how the simulation
+#' works.
+#'
+#' @return SingleCellExperiment containing simulated counts
+#'
+#' @references
+#' Vallejos CA, Marioni JC, Richardson S. BASiCS: Bayesian Analysis of
+#' Single-Cell Sequencing data. PLoS Comput. Biol. (2015).
+#'
+#' Paper: \url{10.1371/journal.pcbi.1004333}
+#'
+#' Code: \url{https://github.com/catavallejos/BASiCS}
+#'
+#' @examples
+#' sim <- BASiCSSimulate()
+#' @export
+#' @importFrom scater newSCESet
+BASiCSSimulate <- function(params = newBASiCSParams(), verbose = TRUE, ...) {
+
+    checkmate::assertClass(params, "BASiCSParams")
+    params <- setParams(params, ...)
+    params <- expandParams(params)
+    validObject(params)
+
+    # Set random seed
+    seed <- getParam(params, "seed")
+    set.seed(seed)
+
+    if (verbose) {message("Getting parameters...")}
+    nGenes <- getParam(params, "nGenes")
+    nCells <- getParam(params, "nCells")
+    nSpikes <- getParam(params, "nSpikes")
+    nBatches <- getParam(params, "nBatches")
+    batch.cells <- getParam(params, "batchCells")
+    gene.params <- getParam(params, "gene.params")
+
+    # Sample gene.params if necessary
+    if (nrow(gene.params) != nGenes) {
+        warning("Number of gene.params not equal to nGenes, ",
+                "gene.params will be sampled.")
+        selected <- sample(nrow(gene.params), nGenes, replace = TRUE)
+        gene.params <- gene.params[selected, ]
+    }
+
+    mu <- gene.params$Mean
+    delta <- gene.params$Delta
+
+    if (nSpikes > 0) {
+        spike.mu <- getParam(params, "spike.means")
+        if (length(spike.mu) != nSpikes) {
+            warning("Number of spike-in means not equal to nSpikes, ",
+                    "spike.means will be sampled.")
+            selected <- sample(length(spike.mu), nSpikes, replace = TRUE)
+            spike.mu <- spike.mu[selected]
+        }
+    } else {
+        # Create dummy spike-ins to get around BASiCS_Sim...
+        spike.mu <- c(10, 10)
+    }
+
+    cell.params <- getParam(params, "cell.params")
+    if (nrow(cell.params) != nCells) {
+        warning("Number of cell.params not equal to nCells, ",
+                "cell.params will be sampled.")
+        selected <- sample(nrow(cell.params), nCells, replace = TRUE)
+        cell.params <- cell.params[selected, ]
+    }
+
+    thetas <- getParam(params, "theta")
+
+    batches <- lapply(seq_len(nBatches), function(i, b) {rep(i, b[i])},
+                      b = batch.cells)
+    batches <- unlist(batches)
+
+    if (verbose) {message("Simulating counts with BASiCS...")}
+    counts.list <- list()
+    for (batch in seq_len(nBatches)) {
+        batch.cells <- batches == batch
+        phi <- cell.params[batch.cells, "Phi"]
+        phi <- (phi / sum(phi)) * sum(batch.cells)
+        s <- cell.params[batch.cells, "S"]
+        theta <- thetas[batch]
+        BASiCS.sim <- suppressMessages(
+                          BASiCS::BASiCS_Sim(mu, spike.mu, delta, phi, s, theta)
+                      )
+        batch.counts <- SummarizedExperiment::assay(BASiCS.sim)
+        counts.list[[batch]] <- batch.counts
+    }
+
+    counts <- do.call(cbind, counts.list)
+
+    if (verbose) {message("Creating final dataset...")}
+    cell.names <- paste0("Cell", seq_len(nCells))
+    gene.names <- paste0("Gene", seq_len(nGenes))
+    if (nSpikes > 0) {
+        gene.names <- c(gene.names, paste0("Spike", seq_len(nSpikes)))
+    } else {
+        # Remove dummy spikes
+        counts <- counts[1:(nrow(counts) - 2), ]
+        spike.mu <- numeric()
+    }
+
+    rownames(counts) <- gene.names
+    colnames(counts) <- cell.names
+
+    cells <- data.frame(Cell = cell.names,
+                        Phi = cell.params[, "Phi"],
+                        S = cell.params[, "S"],
+                        Batch = batches,
+                        BatchTheta = thetas[batches])
+    rownames(cells) <- cell.names
+
+    features <- data.frame(Gene = gene.names,
+                           Mean = c(mu, spike.mu),
+                           Delta = c(delta, rep(NA, nSpikes)),
+                           IsSpike = c(rep(FALSE, nGenes), rep(TRUE, nSpikes)))
+    rownames(features) <- gene.names
+
+    sim <- SingleCellExperiment(assays = list(counts = counts),
+                                rowData = features,
+                                colData = cells,
+                                metadata = list(params = params))
+
+    if (verbose) {message("Done!")}
+    return(sim)
+}
diff --git a/R/BASiCSParams-methods.R b/R/BASiCSParams-methods.R
new file mode 100644
index 0000000000000000000000000000000000000000..90243b242b89972c980b1294ef23f4c78ba5a060
--- /dev/null
+++ b/R/BASiCSParams-methods.R
@@ -0,0 +1,125 @@
+#' @rdname newParams
+#' @importFrom methods new
+#' @export
+newBASiCSParams <- function(...) {
+
+    if (!requireNamespace("BASiCS", quietly = TRUE)) {
+        stop("The BASiCS simulation requires the 'BASiCS' package.")
+    }
+
+    params <- new("BASiCSParams")
+    params <- setParams(params, ...)
+
+    return(params)
+}
+
+#' @importFrom checkmate checkInt checkDataFrame checkNumeric
+setValidity("BASiCSParams", function(object) {
+
+    object <- expandParams(object)
+    v <- getParams(object, slotNames(object))
+
+    nCells <- v$nCells
+    nGenes <- v$nGenes
+    nBatches <- v$nBatches
+    checks <- c(seed = checkInt(v$seed, lower = 0),
+                nGenes = checkInt(v$nGenes, lower = 1),
+                nCells = checkInt(v$nCells, lower = 1),
+                nBatches = checkInt(v$nBatches, lower = 1),
+                batchCells = checkIntegerish(v$batchCells, lower = 1,
+                                             len = nBatches),
+                gene.params = checkDataFrame(v$gene.params,
+                                             types = "numeric",
+                                             any.missing = FALSE,
+                                             min.rows = 1, ncols = 2),
+                nSpikes = checkNumber(v$nSpikes, lower = 0, finite = TRUE),
+                spike.means = checkNumeric(v$spike.means, lower = 0,
+                                           finite = TRUE),
+                cell.params = checkDataFrame(v$cell.params,
+                                             types = "numeric",
+                                             any.missing = FALSE,
+                                             min.rows = 1, ncols = 2),
+                theta = checkNumeric(v$theta, lower = 0, len = nBatches,
+                                     finite = TRUE)
+                )
+
+    if (!all(colnames(v$gene.params) == c("Mean", "Delta"))) {
+        checks <- c(checks, gene.params = "Incorrect column names")
+    }
+
+    if (!all(colnames(v$cell.params) == c("Phi", "S"))) {
+        checks <- c(checks, cell.params = "Incorrect column names")
+    }
+
+    # Check batchCells matches nCells, nBatches
+    if (nCells != sum(v$batchCells) || nBatches != length(v$batchCells)) {
+        checks <- c(checks,
+                    "nCells, nBatches and batchCells are not consistent")
+    }
+
+    if (all(checks == TRUE)) {
+        valid <- TRUE
+    } else {
+        valid <- checks[checks != TRUE]
+        valid <- paste(names(valid), valid, sep = ": ")
+    }
+
+    return(valid)
+})
+
+#' @rdname setParam
+setMethod("setParam", "BASiCSParams",function(object, name, value) {
+    checkmate::assertString(name)
+
+    if (name == "nCells" || name == "nBatches") {
+        stop(name, " cannot be set directly, set batchCells instead")
+    }
+
+    if (name == "batchCells") {
+        object <- setParamUnchecked(object, "nCells", sum(value))
+        object <- setParamUnchecked(object, "nBatches", length(value))
+    }
+
+    object <- callNextMethod()
+
+    return(object)
+})
+
+setMethod("show", "BASiCSParams", function(object) {
+
+    pp <- list("Batches:"     = c("(Batches)"     = "nBatches",
+                                  "(Batch Cells)" = "batchCells"),
+               "Spike-ins:"   = c("(Number)"      = "nSpikes",
+                                  "(Means)"       = "spike.means"),
+               "Variability:" = c("(Theta)"       = "theta"))
+
+    callNextMethod()
+
+    gene.params <- getParam(object, "gene.params")
+    cell.params <- getParam(object, "cell.params")
+    cat("Genes:", "\n")
+    cat("(Params)", "\n")
+    cat("data.frame with", dim(gene.params)[1], "features\n")
+    print(head(gene.params, n = 3))
+    cat("  ...  ...\n\n")
+
+    cat("Cells:", "\n")
+    cat("(Params)", "\n")
+    cat("data.frame with", dim(cell.params)[1], "features\n")
+    print(head(cell.params, n = 3))
+    cat("  ...  ...\n\n")
+
+    showPP(object, pp)
+})
+
+#' @rdname expandParams
+setMethod("expandParams", "BASiCSParams", function(object) {
+
+    n <- getParam(object, "nBatches")
+
+    vectors <- c("theta")
+
+    object <- callNextMethod(object, vectors, n)
+
+    return(object)
+})
diff --git a/R/MFAParams-methods.R b/R/MFAParams-methods.R
new file mode 100644
index 0000000000000000000000000000000000000000..2ff3e54d5f8730b93e7c8cf6789923c2fc148f12
--- /dev/null
+++ b/R/MFAParams-methods.R
@@ -0,0 +1,52 @@
+#' @rdname newParams
+#' @importFrom methods new
+#' @export
+newMFAParams <- function(...) {
+
+    if (!requireNamespace("mfa", quietly = TRUE)) {
+        stop("The mfa simulation requires the 'mfa' package.")
+    }
+
+    params <- new("MFAParams")
+    params <- setParams(params, ...)
+
+    return(params)
+}
+
+setValidity("MFAParams", function(object) {
+
+    v <- getParams(object, slotNames(object))
+
+    checks <- c(nGenes = checkmate::checkInt(v$nGenes, lower = 1),
+                nCells = checkmate::checkInt(v$nCells, lower = 1),
+                trans.prop = checkmate::checkNumber(v$trans.prop, lower = 0,
+                                                    upper = 1),
+                zero.neg = checkmate::checkLogical(v$zero.neg,
+                                                   any.missing = FALSE,
+                                                   len = 1),
+                dropout.present = checkmate::checkLogical(v$dropout.present,
+                                                          any.missing = FALSE,
+                                                          len = 1),
+                dropout.lambda = checkmate::checkNumber(v$dropout.lambda),
+                seed = checkmate::checkInt(v$seed, lower = 0))
+
+    if (all(checks == TRUE)) {
+        valid <- TRUE
+    } else {
+        valid <- checks[checks != TRUE]
+        valid <- paste(names(valid), valid, sep = ": ")
+    }
+
+    return(valid)
+})
+
+setMethod("show", "MFAParams", function(object) {
+
+    pp <- list("Transient:" = c("[Proportion]" = "trans.prop"),
+               "Negative:"  = c("[Zero]"       = "zero.neg"),
+               "Dropout:"   = c("[Present]"    = "dropout.present",
+                              "(Lambda)"       = "dropout.lambda"))
+
+    callNextMethod()
+    showPP(object, pp)
+})
diff --git a/R/PhenoParams-methods.R b/R/PhenoParams-methods.R
new file mode 100644
index 0000000000000000000000000000000000000000..2151c52c6a877a3d7503040e55468f8159ff30f2
--- /dev/null
+++ b/R/PhenoParams-methods.R
@@ -0,0 +1,79 @@
+#' @rdname newParams
+#' @importFrom methods new
+#' @export
+newPhenoParams <- function(...) {
+
+    if (!requireNamespace("phenopath", quietly = TRUE)) {
+        stop("The PhenoPath simulation requires the 'phenopath' package.")
+    }
+
+    params <- new("PhenoParams")
+    params <- setParams(params, ...)
+
+    return(params)
+}
+
+setValidity("PhenoParams", function(object) {
+
+    v <- getParams(object, slotNames(object))
+
+    checks <- c(nGenes = checkmate::checkInt(v$nGenes, lower = 1),
+                nCells = checkmate::checkInt(v$nCells, lower = 1),
+                n.de = checkmate::checkInt(v$n.de, lower = 0),
+                n.pst = checkmate::checkInt(v$n.pst, lower = 0),
+                n.pst.beta = checkmate::checkInt(v$n.pst.beta, lower = 0),
+                n.de.pst.beta = checkmate::checkInt(v$n.de.pst.beta, lower = 0),
+                seed = checkmate::checkInt(v$seed, lower = 0))
+
+    if (v$nGenes != (v$n.de + v$n.pst + v$n.pst.beta + v$n.de.pst.beta)) {
+        checks <- c(checks,
+                    nGenes = paste("nGenes is not consistent with",
+                                   "n.de, n.pst, n.pst.beta, n.de.pst.beta"))
+    }
+
+    if (all(checks == TRUE)) {
+        valid <- TRUE
+    } else {
+        valid <- checks[checks != TRUE]
+        valid <- paste(names(valid), valid, sep = ": ")
+    }
+
+    return(valid)
+})
+
+#' @rdname setParam
+setMethod("setParam", "PhenoParams", function(object, name, value) {
+    checkmate::assertString(name)
+
+    if (name == "nGenes") {
+        stop(name, " cannot be set directly, set n.de, n.pst, n.pst.beta or ",
+             "n.de.pst.beta instead")
+    }
+
+    nNames <- c("n.de", "n.pst", "n.pst.beta", "n.de.pst.beta")
+    if (name %in% nNames) {
+        checkmate::assertInt(value, lower = 0)
+        total <- value
+        for (nName in nNames) {
+            if (nName != name) {
+                total <- total + getParam(object, nName)
+            }
+        }
+        object <- setParamUnchecked(object, "nGenes", total)
+    }
+
+    object <- callNextMethod()
+
+    return(object)
+})
+
+setMethod("show", "PhenoParams", function(object) {
+
+    pp <- list("Genes:"  = c("[DE]"              = "n.de",
+                             "[PST]"             = "n.pst",
+                             "[PST + Beta]"      = "n.pst.beta",
+                             "[DE + PST + Beta]" = "n.de.pst.beta"))
+
+    callNextMethod()
+    showPP(object, pp)
+})
diff --git a/R/SCDDParams-methods.R b/R/SCDDParams-methods.R
index 97c839d39df45321b42057207c5bdef1e7a57f89..22c6ac198a2db3c8fab3ee445b543227fb209a4b 100644
--- a/R/SCDDParams-methods.R
+++ b/R/SCDDParams-methods.R
@@ -26,7 +26,7 @@ setValidity("SCDDParams", function(object) {
     checks <- c(nGenes = checkInt(v$nGenes, lower = 1),
                 nCells = checkInt(v$nCells, lower = 1),
                 seed = checkInt(v$seed, lower = 0),
-                SCDat = checkClass(v$SCdat, "SummarizedExperiment"),
+                SCDat = checkClass(v$SCdat, "SingleCellExperiment"),
                 nDE = checkInt(v$nDE, lower = 0),
                 nDP = checkInt(v$nDP, lower = 0),
                 nDM = checkInt(v$nDM, lower = 0),
@@ -86,12 +86,12 @@ setMethod("setParam", "SCDDParams", function(object, name, value) {
 
 setMethod("show", "SCDDParams", function(object) {
 
-    pp <- list("Genes:"       = c("[nDE]"       = "nDE",
-                                  "[nDP]"       = "nDP",
-                                  "[nDM]"       = "nDM",
-                                  "[nDP]"       = "nDP",
-                                  "[nEE]"       = "nEE",
-                                  "[nEP]"       = "nEP"),
+    pp <- list("Genes:"       = c("(nDE)"       = "nDE",
+                                  "(nDP)"       = "nDP",
+                                  "(nDM)"       = "nDM",
+                                  "(nDP)"       = "nDP",
+                                  "(nEE)"       = "nEE",
+                                  "(nEP)"       = "nEP"),
                "Fold change:" = c("[SD Range]"  = "sd.range",
                                   "[Mode FC]"   = "modeFC"),
                "Variance:"    = c("[Inflation]" = "varInflation"),
@@ -102,8 +102,8 @@ setMethod("show", "SCDDParams", function(object) {
     SCdat <- getParam(object, "SCdat")
     cat("Data:", "\n")
     cat("(SCdat)", "\n")
-    cat("SummarizedExperiment with", dim(SCdat)[1], "features and",
-        dim(SCdat)[2], "samples", "\n\n")
+    cat("SingleCellExperiment with", dim(SCdat)[1], "features and",
+        dim(SCdat)[2], "cells", "\n\n")
 
     showPP(object, pp)
 })
diff --git a/R/SCESet-functions.R b/R/SCE-functions.R
similarity index 58%
rename from R/SCESet-functions.R
rename to R/SCE-functions.R
index 2a92c3545c2aa80652533158bbd89168b65f5735..34bc7ad8e81af276a566768f7a7a4f3aacf8da4f 100644
--- a/R/SCESet-functions.R
+++ b/R/SCE-functions.R
@@ -1,11 +1,11 @@
 #' Add feature statistics
 #'
-#' Add additional feature statistics to an SCESet object
+#' Add additional feature statistics to a SingleCellExperiment object
 #'
-#' @param sce SCESet to add feature statistics to.
+#' @param sce SingleCellExperiment to add feature statistics to.
 #' @param value the expression value to calculate statistics for. Options are
 #'        "counts", "cpm", "tpm" or "fpkm". The values need to exist in the
-#'        given SCESet.
+#'        given SingleCellExperiment.
 #' @param log logical. Whether to take log2 before calculating statistics.
 #' @param offset offset to add to avoid taking log of zero.
 #' @param no.zeros logical. Whether to remove all zeros from each feature before
@@ -14,34 +14,38 @@
 #' @details
 #' Currently adds the following statistics: mean, variance, coefficient of
 #' variation, median and median absolute deviation. Statistics are added to
-#' the \code{fData} slot and are named \code{Stat[Log]Value[No0]} where
-#' \code{Log} and \code{No0} are added if those arguments are true.
-#' UpperCamelCase is used to differentiate these columns from those added by
-#' \code{scater}.
+#' the \code{\link[SummarizedExperiment]{rowData}} slot and are named
+#' \code{Stat[Log]Value[No0]} where \code{Log} and \code{No0} are added if those
+#' arguments are true. UpperCamelCase is used to differentiate these columns
+#' from those added by analysis packages.
 #'
-#' @return SCESet with additional feature statistics
+#' @return SingleCellExperiment with additional feature statistics
 #'
-#' @importFrom Biobase fData fData<-
+#' @importFrom SummarizedExperiment rowData rowData<-
 addFeatureStats <- function(sce, value = c("counts", "cpm", "tpm", "fpkm"),
                             log = FALSE, offset = 1, no.zeros = FALSE) {
 
+    checkmate::assertClass(sce, "SingleCellExperiment")
+    checkmate::assertLogical(log)
+    checkmate::assertNumber(offset, lower = 0)
+    checkmate::assertLogical(no.zeros)
     value <- match.arg(value)
 
     switch(value,
            counts = {
-               values = scater::counts(sce)
+               values = BiocGenerics::counts(sce)
                suffix <- "Counts"
            },
            cpm = {
-               values = scater::cpm(sce)
+               values = SingleCellExperiment::cpm(sce)
                suffix <- "CPM"
            },
            tpm = {
-               values = scater::tpm(sce)
+               values = SingleCellExperiment::tpm(sce)
                suffix <- "TPM"
            },
            fpkm = {
-               values = scater::fpkm(sce)
+               values = SummarizedExperiment::assays(sce)$fpkm
                suffix <- "FPKM"
            }
     )
@@ -62,41 +66,43 @@ addFeatureStats <- function(sce, value = c("counts", "cpm", "tpm", "fpkm"),
     med.str  <- paste0("Med",  suffix)
     mad.str  <- paste0("MAD",  suffix)
 
-    fData(sce)[, mean.str] <- rowMeans(values, na.rm = TRUE)
-    fData(sce)[, var.str]  <- matrixStats::rowVars(values, na.rm = TRUE)
-    fData(sce)[, cv.str]   <- sqrt(fData(sce)[, var.str]) /
-        fData(sce)[, mean.str]
-    fData(sce)[, med.str]  <- matrixStats::rowMedians(values, na.rm = TRUE)
-    fData(sce)[, mad.str]  <- matrixStats::rowMads(values, na.rm = TRUE)
+    rowData(sce)[, mean.str] <- rowMeans(values, na.rm = TRUE)
+    rowData(sce)[, var.str]  <- matrixStats::rowVars(values, na.rm = TRUE)
+    rowData(sce)[, cv.str]   <- sqrt(rowData(sce)[, var.str]) /
+        rowData(sce)[, mean.str]
+    rowData(sce)[, med.str]  <- matrixStats::rowMedians(values, na.rm = TRUE)
+    rowData(sce)[, mad.str]  <- matrixStats::rowMads(values, na.rm = TRUE)
 
     return(sce)
 }
 
 #' Add gene lengths
 #'
-#' Add gene lengths to an SCESet object
+#' Add gene lengths to an SingleCellExperiment object
 #'
-#' @param sce SCESet to add gene lengths to.
+#' @param sce SingleCellExperiment to add gene lengths to.
 #' @param method Method to use for creating lengths.
 #' @param loc Location parameter for the generate method.
 #' @param scale Scale parameter for the generate method.
 #' @param lengths Vector of lengths for the sample method.
 #'
 #' @details
-#' This function adds simulated gene lengths to the \code{fData} slot of an
-#' \code{SCESet} object that can be used for calculating length normalised
-#' expression values such as TPM or FPKM. The \code{generate} simulates lengths
-#' using a (rounded) log-normal distribution, with the default \code{loc} and
-#' \code{scale} parameters based on human coding genes. Alternatively the
-#' \code{sample} method can be used which randomly samples lengths (with
-#' replacement) from a supplied vector.
+#' This function adds simulated gene lengths to the
+#' \code{\link[SummarizedExperiment]{rowData}} slot of a
+#' \code{\link[SingleCellExperiment]{SingleCellExperiment}} object that can be
+#' used for calculating length normalised expression values such as TPM or FPKM.
+#' The \code{generate} method simulates lengths using a (rounded) log-normal
+#' distribution, with the default \code{loc} and \code{scale} parameters based
+#' on human protein-coding genes. Alternatively the \code{sample} method can be
+#' used which randomly samples lengths (with replacement) from a supplied
+#' vector.
 #'
-#' @return SCESet with added gene lengths
+#' @return SingleCellExperiment with added gene lengths
 #' @examples
 #' # Default generate method
 #' sce <- simpleSimulate()
 #' sce <- addGeneLengths(sce)
-#' head(fData(sce))
+#' head(rowData(sce))
 #' # Sample method (human coding genes)
 #' \dontrun{
 #' library(TxDb.Hsapiens.UCSC.hg19.knownGene)
@@ -113,7 +119,7 @@ addGeneLengths <- function(sce, method = c("generate", "sample"), loc = 7.9,
                            scale = 0.7, lengths = NULL) {
 
     method <- match.arg(method)
-    checkmate::assertClass(sce, "SCESet")
+    checkmate::assertClass(sce, "SingleCellExperiment")
     checkmate::assertNumber(loc)
     checkmate::assertNumber(scale, lower = 0)
     checkmate::assertNumeric(lengths, lower = 0, null.ok = TRUE)
@@ -132,13 +138,7 @@ addGeneLengths <- function(sce, method = c("generate", "sample"), loc = 7.9,
            }
     )
 
-    fData(sce)$Length <- sim.lengths
+    rowData(sce)$Length <- sim.lengths
 
     return(sce)
 }
-
-#txdb <- TxDb.Hsapiens.UCSC.hg19.knownGene::TxDb.Hsapiens.UCSC.hg19.knownGene
-#tx.lens <- GenomicFeatures::transcriptLengths(txdb, with.cds_len = TRUE)
-#tx.lens <- tx.lens[tx.lens$cds_len > 0, ]
-#gene.lens <- max(IRanges::splitAsList(tx.lens$tx_len, tx.lens$gene_id))
-#lens <- rlnorm(length(gene.lens), meanlog = 7.9, sdlog = 0.7)
diff --git a/R/SplatParams-methods.R b/R/SplatParams-methods.R
index b1dc35ab4e73282182bfaae6f7e62ddb068f5d48..c0d9dc8b5b446f35e0785a03e7a13863d185624c 100644
--- a/R/SplatParams-methods.R
+++ b/R/SplatParams-methods.R
@@ -16,12 +16,16 @@ setValidity("SplatParams", function(object) {
     object <- expandParams(object)
     v <- getParams(object, c(slotNames(object)))
 
+    nBatches <- v$nBatches
     nGroups <- v$nGroups
     checks <- c(nGenes = checkInt(v$nGenes, lower = 1),
                 nCells = checkInt(v$nCells, lower = 1),
-                nGroups = checkInt(v$nGroups, lower = 1),
-                groupCells = checkIntegerish(v$groupCells, lower = 1,
-                                             len = nGroups),
+                nBatches = checkInt(v$nBatches, lower = 1),
+                batchCells = checkIntegerish(v$batchCells, lower = 1,
+                                             len = nBatches),
+                batch.facLoc = checkNumeric(v$batch.facLoc, len = nBatches),
+                batch.facScale = checkNumeric(v$batch.facScale, lower = 0,
+                                              len = nBatches),
                 mean.rate = checkNumber(v$mean.rate, lower = 0),
                 mean.shape = checkNumber(v$mean.shape, lower = 0),
                 lib.loc = checkNumber(v$lib.loc),
@@ -29,6 +33,9 @@ setValidity("SplatParams", function(object) {
                 out.prob = checkNumber(v$out.prob, lower = 0, upper = 1),
                 out.facLoc = checkNumber(v$out.facLoc),
                 out.facScale = checkNumber(v$out.facScale, lower = 0),
+                nGroups = checkInt(v$nGroups, lower = 1),
+                group.prob = checkNumeric(v$de.prob, lower = 0, upper = 1,
+                                          len = nGroups),
                 de.prob = checkNumeric(v$de.prob, lower = 0, upper = 1,
                                        len = nGroups),
                 de.downProb = checkNumeric(v$de.downProb, lower = 0, upper = 1,
@@ -52,10 +59,15 @@ setValidity("SplatParams", function(object) {
                 path.sigmaFac = checkNumber(v$path.sigmaFac, lower = 0),
                 seed = checkInt(v$seed, lower = 0))
 
-    # Check groupCells matches nCells, nGroups
-    if (v$nCells != sum(v$groupCells) || nGroups != length(v$groupCells)) {
+    # Check batchCells matches nCells, nBatches
+    if (v$nCells != sum(v$batchCells) || nBatches != length(v$batchCells)) {
         checks <- c(checks,
-                    "nCells, nGroups and groupCells are not consistent")
+                    "nCells, nBatches and batchesCells are not consistent")
+    }
+
+    # Check group.prob sums to 1
+    if (sum(v$group.prob) != 1) {
+        checks <- c(checks, "group.probs must sum to 1")
     }
 
     # Check path.from
@@ -79,12 +91,20 @@ setValidity("SplatParams", function(object) {
 setMethod("setParam", "SplatParams",function(object, name, value) {
     checkmate::assertString(name)
 
-    if (name == "nCells" || name == "nGroups") {
-        stop(name, " cannot be set directly, set groupCells instead")
+    if (name == "nCells" || name == "nBatches") {
+        stop(name, " cannot be set directly, set batchCells instead")
+    }
+
+    if (name == "nGroups") {
+        stop(name, " cannot be set directly, set group.prob instead")
     }
 
-    if (name == "groupCells") {
+    if (name == "batchCells") {
         object <- setParamUnchecked(object, "nCells", sum(value))
+        object <- setParamUnchecked(object, "nBatches", length(value))
+    }
+
+    if (name == "group.prob") {
         object <- setParamUnchecked(object, "nGroups", length(value))
     }
 
@@ -96,8 +116,10 @@ setMethod("setParam", "SplatParams",function(object, name, value) {
 #' @importFrom methods callNextMethod
 setMethod("show", "SplatParams", function(object) {
 
-    pp <- list("Groups:"         = c("[Groups]"       = "nGroups",
-                                     "[Group Cells]"  = "groupCells"),
+    pp <- list("Batches:"        = c("[Batches]"      = "nBatches",
+                                     "[Batch Cells]"  = "batchCells",
+                                     "[Location]"     = "batch.facLoc",
+                                     "[Scale]"        = "batch.facScale"),
                "Mean:"           = c("(Rate)"         = "mean.rate",
                                      "(Shape)"        = "mean.shape"),
                "Library size:"   = c("(Location)"     = "lib.loc",
@@ -105,6 +127,8 @@ setMethod("show", "SplatParams", function(object) {
                "Exprs outliers:" = c("(Probability)"  = "out.prob",
                                      "(Location)"     = "out.facLoc",
                                      "(Scale)"        = "out.facScale"),
+               "Groups:"         = c("[Groups]"       = "nGroups",
+                                     "[Group Probs]"  = "group.prob"),
                "Diff expr:"      = c("[Probability]"  = "de.prob",
                                      "[Down Prob]"    = "de.downProb",
                                      "[Location]"     = "de.facLoc",
@@ -127,6 +151,12 @@ setMethod("show", "SplatParams", function(object) {
 #' @rdname expandParams
 setMethod("expandParams", "SplatParams", function(object) {
 
+    n <- getParam(object, "nBatches")
+
+    vectors <- c("batch.facLoc", "batch.facScale")
+
+    object <- callNextMethod(object, vectors, n)
+
     n <- getParam(object, "nGroups")
 
     vectors <- c("de.prob", "de.downProb", "de.facLoc", "de.facScale",
diff --git a/R/ZINBParams-methods.R b/R/ZINBParams-methods.R
new file mode 100644
index 0000000000000000000000000000000000000000..2a2dabbb68008f0d6881ff23ff66488f38a7a7d9
--- /dev/null
+++ b/R/ZINBParams-methods.R
@@ -0,0 +1,127 @@
+#' @rdname newParams
+#' @importFrom methods new
+#' @export
+newZINBParams <- function(...) {
+
+    if (!requireNamespace("zinbwave", quietly = TRUE)) {
+        stop("The ZINB-WaVE simulation requires the 'zinbwave' package.")
+    }
+
+    params <- new("ZINBParams")
+    default.model <- zinbwave::zinbModel()
+
+    params <- setParams(params, model = default.model)
+    params <- setParams(params, ...)
+
+    return(params)
+}
+
+setValidity("ZINBParams", function(object) {
+
+    v <- getParams(object, slotNames(object))
+
+    checks <- c(nGenes = checkmate::checkInt(v$nGenes, lower = 1),
+                nCells = checkmate::checkInt(v$nCells, lower = 1),
+                seed = checkmate::checkInt(v$seed, lower = 0),
+                model = checkmate::checkClass(v$model, "ZinbModel"),
+                model_valid = validObject(v$model, test = TRUE))
+
+    if (all(checks == TRUE)) {
+        valid <- TRUE
+    } else {
+        valid <- checks[checks != TRUE]
+        valid <- paste(names(valid), valid, sep = ": ")
+    }
+
+    return(valid)
+})
+
+#' @rdname setParam
+setMethod("setParam", "ZINBParams", function(object, name, value) {
+    checkmate::assertString(name)
+
+    if (name %in% c("nGenes", "nCells")) {
+        stop(name, " cannot be set directly, set model instead")
+    }
+
+    if (name == "model") {
+        checkmate::assertClass(value, "ZinbModel")
+        object <- setParamUnchecked(object, "nGenes",
+                                    zinbwave::nFeatures(value))
+        object <- setParamUnchecked(object, "nCells",
+                                    zinbwave::nSamples(value))
+    }
+
+    object <- callNextMethod()
+
+    return(object)
+})
+
+setMethod("show", "ZINBParams", function(object) {
+
+    pp <- list("Design:"         = c("(Samples)"       = "X",
+                                     "(Genes)"         = "V"),
+               "Offsets:"        = c("(Mu)"            = "O_mu",
+                                     "(Pi)"            = "O_pi"),
+               "Indices:"        = c("(Sample Mu)"     = "which_X_mu",
+                                     "(Gene Mu)"       = "which_V_mu",
+                                     "(Sample Pi)"     = "which_X_pi",
+                                     "(Gene Pi)"       = "which_V_pi"),
+               "Intercepts:"     = c("(Sample Mu)"     = "X_mu_intercept",
+                                     "(Gene Mu)"       = "V_mu_intercept",
+                                     "(Sample Pi)"     = "X_pi_intercept",
+                                     "(Gene Pi)"       = "V_pi_intercept"),
+               "Latent factors:" = c("(W)"             = "W"),
+               "Coefficients:"   = c("(Sample Mu)"     = "beta_mu",
+                                     "(Gene Mu)"       = "gamma_mu",
+                                     "(Latent Mu)"     = "alpha_mu",
+                                     "(Sample Pi)"     = "beta_pi",
+                                     "(Gene Pi)"       = "gamma_pi",
+                                     "(Latent Pi)"     = "alpha_pi"),
+               "Regularisation:" = c("(Sample Mu)"     = "epsilon_beta_mu",
+                                     "(Gene Mu)"       = "epsilon_gamma_mu",
+                                     "(Sample Pi)"     = "epsilon_beta_pi",
+                                     "(Gene Pi)"       = "epsilon_gamma_pi",
+                                     "(Latent)"        = "epsilon_W",
+                                     "(Latent coeffs)" = "epsilon_alpha",
+                                     "(Zeta)"          = "epsilon_zeta",
+                                     "(Logit)"         = "epsilon_min_logit"))
+
+    callNextMethod()
+
+    model <- getParam(object, "model")
+    cat("Model:", "\n")
+    cat("ZinbModel with", zinbwave::nFeatures(model), "features,",
+        zinbwave::nSamples(model), "samples,", zinbwave::nFactors(model),
+        "latent factors and", zinbwave::nParams(model), "parameters", "\n\n")
+
+    default <- zinbwave::zinbModel()
+    for (category in names(pp)) {
+        parameters <- pp[[category]]
+        values <- lapply(parameters, function(x) {slot(model, x)})
+        short.values <- sapply(values, function(x) {
+            if ("matrix" %in% class(x)) {
+                if (nrow(x) == 1) {
+                    paste0(paste(head(x[1, ], n = 4), collapse = ", "), ",...")
+                } else if (ncol(x) == 1) {
+                    paste0(paste(head(x[, 1], n = 4), collapse = ", "), ",...")
+                } else {
+                    paste(nrow(x), "x", ncol(x), "matrix")
+                }
+            } else if (length(x) > 4) {
+                paste0(paste(head(x, n = 4), collapse = ", "), ",...")
+            } else {
+                paste(x, collapse = ", ")
+            }
+        })
+        values <- sapply(values, paste, collapse = ", ")
+        default.values <- lapply(parameters, function(x) {slot(default, x)})
+        default.values <- sapply(default.values, paste, collapse = ", ")
+        not.default <- values != default.values
+        names(short.values)[not.default] <- toupper(names(values[not.default]))
+        cat("Model", category, "\n")
+        print(noquote(short.values), print.gap = 2)
+        cat("\n")
+    }
+
+})
diff --git a/R/compare.R b/R/compare.R
index 07b09a64578db28796d8f06462aeef0f80085ded..fb1f270dd6a74bc2e71f750fcf4eaa8a0ecfa25e 100644
--- a/R/compare.R
+++ b/R/compare.R
@@ -1,9 +1,10 @@
-#' Compare SCESet objects
+#' Compare SingleCellExperiment objects
 #'
-#' Combine the data from several SCESet objects and produce some basic plots
-#' comparing them.
+#' Combine the data from several SingleCellExperiment objects and produce some
+#' basic plots comparing them.
 #'
-#' @param sces named list of SCESet objects to combine and compare.
+#' @param sces named list of SingleCellExperiment objects to combine and
+#'        compare.
 #' @param point.size size of points in scatter plots.
 #' @param point.alpha opacity of points in scatter plots.
 #' @param fits whether to include fits in scatter plots.
@@ -14,8 +15,9 @@
 #'
 #' \describe{
 #'     \item{\code{FeatureData}}{Combined feature data from the provided
-#'     SCESets.}
-#'     \item{\code{PhenoData}}{Combined pheno data from the provided SCESets.}
+#'     SingleCellExperiments.}
+#'     \item{\code{PhenoData}}{Combined pheno data from the provided
+#'     SingleCellExperiments.}
 #'     \item{\code{Plots}}{Comparison plots
 #'         \describe{
 #'             \item{\code{Means}}{Boxplot of mean distribution.}
@@ -29,7 +31,7 @@
 #'             \item{\code{ZerosCell}}{Boxplot of the percentage of each cell
 #'             that is zero.}
 #'             \item{\code{MeanZeros}}{Scatter plot with fitted lines showing
-#'             the mean-dropout relationship.}
+#'             the mean-zeros relationship.}
 #'     }
 #'   }
 #' }
@@ -42,21 +44,21 @@
 #'
 #' @return List containing the combined datasets and plots.
 #' @examples
-#' sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+#' sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 #' sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-#' comparison <- compareSCESets(list(Splat = sim1, Simple = sim2))
+#' comparison <- compareSCEs(list(Splat = sim1, Simple = sim2))
 #' names(comparison)
 #' names(comparison$Plots)
 #' @importFrom ggplot2 ggplot aes_string geom_point geom_smooth geom_boxplot
 #' scale_y_continuous scale_y_log10 scale_x_log10 xlab ylab ggtitle
 #' theme_minimal scale_colour_manual scale_fill_manual
-#' @importFrom scater cpm<-
+#' @importFrom SingleCellExperiment cpm<-
 #' @export
-compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
-                           fits = TRUE, colours = NULL) {
+compareSCEs <- function(sces, point.size = 0.1, point.alpha = 0.1,
+                        fits = TRUE, colours = NULL) {
 
-    checkmate::assertList(sces, types = "SCESet", any.missing = FALSE,
-                          min.len = 1, names = "unique")
+    checkmate::assertList(sces, types = "SingleCellExperiment",
+                          any.missing = FALSE, min.len = 1, names = "unique")
     checkmate::assertNumber(point.size, finite = TRUE)
     checkmate::assertNumber(point.alpha, lower = 0, upper = 1)
     checkmate::assertLogical(fits, any.missing = FALSE, len = 1)
@@ -70,51 +72,53 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
 
     for (name in names(sces)) {
         sce <- sces[[name]]
-        fData(sce)$Dataset <- name
-        pData(sce)$Dataset <- name
+        rowData(sce)$Dataset <- name
+        colData(sce)$Dataset <- name
         sce <- scater::calculateQCMetrics(sce)
-        cpm(sce) <- edgeR::cpm(counts(sce))
+        cpm(sce) <- scater::calculateCPM(sce, use_size_factors = FALSE)
         sce <- addFeatureStats(sce, "counts")
         sce <- addFeatureStats(sce, "cpm")
         sce <- addFeatureStats(sce, "cpm", log = TRUE)
+        colData(sce)$PctZero <- 100 * (1 - colData(sce)$total_features /
+                                           nrow(sce))
         sces[[name]] <- sce
     }
 
-    fData.all <- fData(sces[[1]])
-    pData.all <- pData(sces[[1]])
+    features <- rowData(sces[[1]])
+    cells <- colData(sces[[1]])
 
     if (length(sces) > 1) {
         for (name in names(sces)[-1]) {
             sce <- sces[[name]]
-            fData.all <- rbindMatched(fData.all, fData(sce))
-            pData.all <- rbindMatched(pData.all, pData(sce))
+            features <- rbindMatched(features, rowData(sce))
+            cells <- rbindMatched(cells, colData(sce))
         }
     }
 
-    fData.all$Dataset <- factor(fData.all$Dataset, levels = names(sces))
-    pData.all$Dataset <- factor(pData.all$Dataset, levels = names(sces))
+    features$Dataset <- factor(features$Dataset, levels = names(sces))
+    cells$Dataset <- factor(cells$Dataset, levels = names(sces))
+    features <- data.frame(features)
+    cells <- data.frame(cells)
 
-    means <- ggplot(fData.all,
+    means <- ggplot(features,
                     aes_string(x = "Dataset", y = "MeanLogCPM",
                                colour = "Dataset")) +
-        #geom_violin(draw_quantiles = c(0.25, 0.5, 0.75)) +
         geom_boxplot() +
         scale_colour_manual(values = colours) +
         ylab(expression(paste("Mean ", log[2], "(CPM + 1)"))) +
         ggtitle("Distribution of mean expression") +
         theme_minimal()
 
-    vars <- ggplot(fData.all,
+    vars <- ggplot(features,
                    aes_string(x = "Dataset", y = "VarLogCPM",
                               colour = "Dataset")) +
-        #geom_violin(draw_quantiles = c(0.25, 0.5, 0.75)) +
         geom_boxplot() +
         scale_colour_manual(values = colours) +
         ylab(expression(paste("Variance ", log[2], "(CPM + 1)"))) +
         ggtitle("Distribution of variance") +
         theme_minimal()
 
-    mean.var <- ggplot(fData.all,
+    mean.var <- ggplot(features,
                        aes_string(x = "MeanLogCPM", y = "VarLogCPM",
                                   colour = "Dataset", fill = "Dataset")) +
         geom_point(size = point.size, alpha = point.alpha) +
@@ -125,7 +129,7 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Mean-variance relationship") +
         theme_minimal()
 
-    libs <- ggplot(pData.all,
+    libs <- ggplot(cells,
                    aes_string(x = "Dataset", y = "total_counts",
                               colour = "Dataset")) +
         geom_boxplot() +
@@ -135,8 +139,8 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Distribution of library sizes") +
         theme_minimal()
 
-    z.gene <- ggplot(fData.all,
-                     aes_string(x = "Dataset", y = "pct_dropout",
+    z.gene <- ggplot(features,
+                     aes_string(x = "Dataset", y = "pct_dropout_counts",
                                 colour = "Dataset")) +
         geom_boxplot() +
         scale_y_continuous(limits = c(0, 100)) +
@@ -145,8 +149,8 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Distribution of zeros per gene") +
         theme_minimal()
 
-    z.cell <- ggplot(pData.all,
-                     aes_string(x = "Dataset", y = "pct_dropout",
+    z.cell <- ggplot(cells,
+                     aes_string(x = "Dataset", y = "PctZero",
                                 colour = "Dataset")) +
         geom_boxplot() +
         scale_y_continuous(limits = c(0, 100)) +
@@ -155,8 +159,8 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Distribution of zeros per cell") +
         theme_minimal()
 
-    mean.zeros <- ggplot(fData.all,
-                         aes_string(x = "MeanCounts", y = "pct_dropout",
+    mean.zeros <- ggplot(features,
+                         aes_string(x = "MeanCounts", y = "pct_dropout_counts",
                                     colour = "Dataset", fill = "Dataset")) +
         geom_point(size = point.size, alpha = point.alpha) +
         scale_x_log10(labels = scales::comma) +
@@ -164,7 +168,7 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
         scale_fill_manual(values = colours) +
         xlab("Mean count") +
         ylab("Percentage zeros") +
-        ggtitle("Mean-dropout relationship") +
+        ggtitle("Mean-zeros relationship") +
         theme_minimal()
 
     if (fits) {
@@ -172,8 +176,8 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
         mean.zeros <- mean.zeros + geom_smooth()
     }
 
-    comparison <- list(FeatureData = fData.all,
-                       PhenoData = pData.all,
+    comparison <- list(FeatureData = features,
+                       PhenoData = cells,
                        Plots = list(Means = means,
                                     Variances = vars,
                                     MeanVar = mean.var,
@@ -185,13 +189,15 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
     return(comparison)
 }
 
-#' Diff SCESet objects
+#' Diff SingleCellExperiment objects
 #'
-#' Combine the data from several SCESet objects and produce some basic plots
-#' comparing them to a reference.
+#' Combine the data from several SingleCellExperiment objects and produce some
+#' basic plots comparing them to a reference.
 #'
-#' @param sces named list of SCESet objects to combine and compare.
-#' @param ref string giving the name of the SCESet to use as the reference
+#' @param sces named list of SingleCellExperiment objects to combine and
+#'        compare.
+#' @param ref string giving the name of the SingleCellExperiment to use as the
+#'        reference
 #' @param point.size size of points in scatter plots.
 #' @param point.alpha opacity of points in scatter plots.
 #' @param fits whether to include fits in scatter plots.
@@ -199,19 +205,21 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
 #'
 #' @details
 #'
-#' This function aims to look at the differences between a reference SCESet and
-#' one or more others. It requires each SCESet to have the same dimensions.
-#' Properties are compared by ranks, for example when comparing the means the
-#' values are ordered and the differences between the reference and another
-#' dataset plotted. A series of Q-Q plots are also returned.
+#' This function aims to look at the differences between a reference
+#' SingleCellExperiment and one or more others. It requires each
+#' SingleCellExperiment to have the same dimensions. Properties are compared by
+#' ranks, for example when comparing the means the values are ordered and the
+#' differences between the reference and another dataset plotted. A series of
+#' Q-Q plots are also returned.
 #'
 #' The returned list has five items:
 #'
 #' \describe{
-#'     \item{\code{Reference}}{The SCESet used as the reference.}
+#'     \item{\code{Reference}}{The SingleCellExperiment used as the reference.}
 #'     \item{\code{FeatureData}}{Combined feature data from the provided
-#'     SCESets.}
-#'     \item{\code{PhenoData}}{Combined pheno data from the provided SCESets.}
+#'     SingleCellExperiments.}
+#'     \item{\code{PhenoData}}{Combined pheno data from the provided
+#'     SingleCellExperiments.}
 #'     \item{\code{Plots}}{Difference plots
 #'         \describe{
 #'             \item{\code{Means}}{Boxplot of mean differences.}
@@ -249,28 +257,28 @@ compareSCESets <- function(sces, point.size = 0.1, point.alpha = 0.1,
 #'
 #' @return List containing the combined datasets and plots.
 #' @examples
-#' sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+#' sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 #' sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-#' difference <- diffSCESets(list(Splat = sim1, Simple = sim2), ref = "Simple")
+#' difference <- diffSCEs(list(Splat = sim1, Simple = sim2), ref = "Simple")
 #' names(difference)
 #' names(difference$Plots)
 #' @importFrom ggplot2 ggplot aes_string geom_point geom_boxplot xlab ylab
 #' ggtitle theme_minimal geom_hline geom_abline scale_colour_manual
 #' scale_fill_manual
-#' @importFrom scater cpm<-
+#' @importFrom SingleCellExperiment cpm<-
 #' @export
-diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
-                        fits = TRUE, colours = NULL) {
+diffSCEs <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
+                     fits = TRUE, colours = NULL) {
 
-    checkmate::assertList(sces, types = "SCESet", any.missing = FALSE,
-                          min.len = 2, names = "unique")
+    checkmate::assertList(sces, types = "SingleCellExperiment",
+                          any.missing = FALSE, min.len = 2, names = "unique")
     checkmate::assertString(ref)
     checkmate::assertNumber(point.size, finite = TRUE)
     checkmate::assertNumber(point.alpha, lower = 0, upper = 1)
     checkmate::assertLogical(fits, any.missing = FALSE, len = 1)
 
     if (!(ref %in% names(sces))) {
-        stop("'ref' must be the name of an SCESet in 'sces'")
+        stop("'ref' must be the name of a SingleCellExperiment in 'sces'")
     } else {
         ref.idx <- which(names(sces) == ref)
     }
@@ -290,49 +298,54 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         if (!identical(dim(sce), ref.dim)) {
             stop("SCESets must have the same dimensions")
         }
-        fData(sce)$Dataset <- name
-        pData(sce)$Dataset <- name
+        rowData(sce)$Dataset <- name
+        colData(sce)$Dataset <- name
         sce <- scater::calculateQCMetrics(sce)
-        cpm(sce) <- edgeR::cpm(counts(sce))
+        cpm(sce) <- scater::calculateCPM(sce, use_size_factors = FALSE)
         sce <- addFeatureStats(sce, "counts")
         sce <- addFeatureStats(sce, "cpm", log = TRUE)
+        colData(sce)$PctZero <- 100 * (1 - colData(sce)$total_features /
+                                                              nrow(sce))
         sces[[name]] <- sce
     }
 
     ref.sce <- sces[[ref]]
 
-    ref.means <- sort(fData(ref.sce)$MeanLogCPM)
-    ref.vars <- sort(fData(ref.sce)$VarLogCPM)
-    ref.libs <- sort(pData(ref.sce)$total_counts)
-    ref.z.gene <- sort(fData(ref.sce)$pct_dropout)
-    ref.z.cell <- sort(pData(ref.sce)$pct_dropout)
+    ref.means <- sort(rowData(ref.sce)$MeanLogCPM)
+    ref.vars <- sort(rowData(ref.sce)$VarLogCPM)
+    ref.libs <- sort(colData(ref.sce)$total_counts)
+    ref.z.gene <- sort(rowData(ref.sce)$pct_dropout_counts)
+    ref.z.cell <- sort(colData(ref.sce)$PctZero)
 
-    ref.rank.ord <- order(fData(ref.sce)$exprs_rank)
-    ref.vars.rank <- fData(ref.sce)$VarLogCPM[ref.rank.ord]
-    ref.z.gene.rank <- fData(ref.sce)$pct_dropout[ref.rank.ord]
+    ref.rank.ord <- order(rowData(ref.sce)$rank_counts)
+    ref.vars.rank <- rowData(ref.sce)$VarLogCPM[ref.rank.ord]
+    ref.z.gene.rank <- rowData(ref.sce)$pct_dropout_counts[ref.rank.ord]
 
     for (name in names(sces)) {
         sce <- sces[[name]]
-        fData(sce)$RefRankMeanLogCPM <- ref.means[rank(fData(sce)$MeanLogCPM)]
-        fData(sce)$RankDiffMeanLogCPM <- fData(sce)$MeanLogCPM -
-            fData(sce)$RefRankMeanLogCPM
-        fData(sce)$RefRankVarLogCPM <- ref.vars[rank(fData(sce)$VarLogCPM)]
-        fData(sce)$RankDiffVarLogCPM <- fData(sce)$VarLogCPM -
-            fData(sce)$RefRankVarLogCPM
-        pData(sce)$RefRankLibSize <- ref.libs[rank(pData(sce)$total_counts)]
-        pData(sce)$RankDiffLibSize <- pData(sce)$total_counts -
-            pData(sce)$RefRankLibSize
-        fData(sce)$RefRankZeros <- ref.z.gene[rank(fData(sce)$pct_dropout)]
-        fData(sce)$RankDiffZeros <- fData(sce)$pct_dropout -
-            fData(sce)$RefRankZeros
-        pData(sce)$RefRankZeros <- ref.z.cell[rank(pData(sce)$pct_dropout)]
-        pData(sce)$RankDiffZeros <- pData(sce)$pct_dropout -
-            pData(sce)$RefRankZeros
-
-        fData(sce)$MeanRankVarDiff <- fData(sce)$VarLogCPM -
-            ref.vars.rank[fData(sce)$exprs_rank]
-        fData(sce)$MeanRankZerosDiff <- fData(sce)$pct_dropout -
-            ref.z.gene.rank[fData(sce)$exprs_rank]
+        rowData(sce)$RefRankMeanLogCPM <- ref.means[
+                                              rank(rowData(sce)$MeanLogCPM)]
+        rowData(sce)$RankDiffMeanLogCPM <- rowData(sce)$MeanLogCPM -
+            rowData(sce)$RefRankMeanLogCPM
+        rowData(sce)$RefRankVarLogCPM <- ref.vars[rank(rowData(sce)$VarLogCPM)]
+        rowData(sce)$RankDiffVarLogCPM <- rowData(sce)$VarLogCPM -
+            rowData(sce)$RefRankVarLogCPM
+        colData(sce)$RefRankLibSize <- ref.libs[rank(colData(sce)$total_counts)]
+        colData(sce)$RankDiffLibSize <- colData(sce)$total_counts -
+            colData(sce)$RefRankLibSize
+        rowData(sce)$RefRankZeros <- ref.z.gene[rank(
+                                               rowData(sce)$pct_dropout_counts)]
+        rowData(sce)$RankDiffZeros <- rowData(sce)$pct_dropout_counts -
+            rowData(sce)$RefRankZeros
+        colData(sce)$RefRankZeros <- ref.z.cell[rank(
+                                               colData(sce)$PctZero)]
+        colData(sce)$RankDiffZeros <- colData(sce)$PctZero -
+            colData(sce)$RefRankZeros
+
+        rowData(sce)$MeanRankVarDiff <- rowData(sce)$VarLogCPM -
+            ref.vars.rank[rowData(sce)$rank_counts]
+        rowData(sce)$MeanRankZerosDiff <- rowData(sce)$pct_dropout_counts -
+            ref.z.gene.rank[rowData(sce)$rank_counts]
 
         sces[[name]] <- sce
     }
@@ -340,21 +353,23 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
     ref.sce <- sces[[ref]]
     sces[[ref]] <- NULL
 
-    fData.all <- fData(sces[[1]])
-    pData.all <- pData(sces[[1]])
+    features <- rowData(sces[[1]])
+    cells <- colData(sces[[1]])
 
     if (length(sces) > 1) {
         for (name in names(sces)[-1]) {
             sce <- sces[[name]]
-            fData.all <- rbindMatched(fData.all, fData(sce))
-            pData.all <- rbindMatched(pData.all, pData(sce))
+            features <- rbindMatched(features, rowData(sce))
+            cells <- rbindMatched(cells, colData(sce))
         }
     }
 
-    fData.all$Dataset <- factor(fData.all$Dataset, levels = names(sces))
-    pData.all$Dataset <- factor(pData.all$Dataset, levels = names(sces))
+    features$Dataset <- factor(features$Dataset, levels = names(sces))
+    cells$Dataset <- factor(cells$Dataset, levels = names(sces))
+    features <- data.frame(features)
+    cells <- data.frame(cells)
 
-    means <- ggplot(fData.all,
+    means <- ggplot(features,
                     aes_string(x = "Dataset", y = "RankDiffMeanLogCPM",
                                colour = "Dataset")) +
         geom_hline(yintercept = 0, colour = "red") +
@@ -364,7 +379,7 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Difference in mean expression") +
         theme_minimal()
 
-    vars <- ggplot(fData.all,
+    vars <- ggplot(features,
                     aes_string(x = "Dataset", y = "RankDiffVarLogCPM",
                                colour = "Dataset")) +
         geom_hline(yintercept = 0, colour = "red") +
@@ -375,8 +390,8 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Difference in variance") +
         theme_minimal()
 
-    mean.var <- ggplot(fData.all,
-                       aes_string(x = "exprs_rank", y = "MeanRankVarDiff",
+    mean.var <- ggplot(features,
+                       aes_string(x = "rank_counts", y = "MeanRankVarDiff",
                                   colour = "Dataset", fill = "Dataset")) +
         geom_hline(yintercept = 0, colour = "red") +
         geom_point(size = point.size, alpha = point.alpha) +
@@ -388,7 +403,7 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Difference in mean-variance relationship") +
         theme_minimal()
 
-    libs <- ggplot(pData.all,
+    libs <- ggplot(cells,
                    aes_string(x = "Dataset", y = "RankDiffLibSize",
                               colour = "Dataset")) +
         geom_hline(yintercept = 0, colour = "red") +
@@ -398,7 +413,7 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Difference in library sizes") +
         theme_minimal()
 
-    z.gene <- ggplot(fData.all,
+    z.gene <- ggplot(features,
                      aes_string(x = "Dataset", y = "RankDiffZeros",
                                 colour = "Dataset")) +
         geom_hline(yintercept = 0, colour = "red") +
@@ -408,7 +423,7 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Difference in zeros per gene") +
         theme_minimal()
 
-    z.cell <- ggplot(pData.all,
+    z.cell <- ggplot(cells,
                      aes_string(x = "Dataset", y = "RankDiffZeros",
                                 colour = "Dataset")) +
         geom_hline(yintercept = 0, colour = "red") +
@@ -418,8 +433,8 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Difference in zeros per cell") +
         theme_minimal()
 
-    mean.zeros <- ggplot(fData.all,
-                       aes_string(x = "exprs_rank", y = "MeanRankZerosDiff",
+    mean.zeros <- ggplot(features,
+                       aes_string(x = "rank_counts", y = "MeanRankZerosDiff",
                                   colour = "Dataset", fill = "Dataset")) +
         geom_hline(yintercept = 0, colour = "red") +
         geom_point(size = point.size, alpha = point.alpha) +
@@ -430,7 +445,7 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Difference in mean-zeros relationship") +
         theme_minimal()
 
-    means.qq <- ggplot(fData.all,
+    means.qq <- ggplot(features,
                        aes_string(x = "RefRankMeanLogCPM", y = "MeanLogCPM",
                                   colour = "Dataset")) +
         geom_abline(intercept = 0, slope = 1, colour = "red") +
@@ -441,7 +456,7 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Ranked means") +
         theme_minimal()
 
-    vars.qq <- ggplot(fData.all,
+    vars.qq <- ggplot(features,
                       aes_string(x = "RefRankVarLogCPM", y = "VarLogCPM",
                                  colour = "Dataset")) +
         geom_abline(intercept = 0, slope = 1, colour = "red") +
@@ -452,7 +467,7 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Ranked variances") +
         theme_minimal()
 
-    libs.qq <- ggplot(pData.all,
+    libs.qq <- ggplot(cells,
                       aes_string(x = "RefRankLibSize", y = "total_counts",
                                  colour = "Dataset")) +
         geom_abline(intercept = 0, slope = 1, colour = "red") +
@@ -463,8 +478,8 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Ranked library sizes") +
         theme_minimal()
 
-    z.gene.qq <- ggplot(fData.all,
-                        aes_string(x = "RefRankZeros", y = "pct_dropout",
+    z.gene.qq <- ggplot(features,
+                        aes_string(x = "RefRankZeros", y = "pct_dropout_counts",
                                    colour = "Dataset")) +
         geom_abline(intercept = 0, slope = 1, colour = "red") +
         geom_point(size = point.size, alpha = point.alpha) +
@@ -474,8 +489,8 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
         ggtitle("Ranked percentage zeros per gene") +
         theme_minimal()
 
-    z.cell.qq <- ggplot(pData.all,
-                        aes_string(x = "RefRankZeros", y = "pct_dropout",
+    z.cell.qq <- ggplot(cells,
+                        aes_string(x = "RefRankZeros", y = "PctZero",
                                    colour = "Dataset")) +
         geom_abline(intercept = 0, slope = 1, colour = "red") +
         geom_point(size = point.size, alpha = point.alpha) +
@@ -491,8 +506,8 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
     }
 
     comparison <- list(Reference = ref.sce,
-                       FeatureData = fData.all,
-                       PhenoData = pData.all,
+                       FeatureData = features,
+                       PhenoData = cells,
                        Plots = list(Means = means,
                                     Variances = vars,
                                     MeanVar = mean.var,
@@ -511,9 +526,9 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
 
 #' Make comparison panel
 #'
-#' Combine the plots from \code{compareSCESets} into a single panel.
+#' Combine the plots from \code{compareSCEs} into a single panel.
 #'
-#' @param comp list returned by \code{\link{compareSCESets}}.
+#' @param comp list returned by \code{\link{compareSCEs}}.
 #' @param title title for the panel.
 #' @param labels vector of labels for each of the seven plots.
 #'
@@ -521,9 +536,9 @@ diffSCESets <- function(sces, ref, point.size = 0.1, point.alpha = 0.1,
 #'
 #' @examples
 #' \dontrun{
-#' sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+#' sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 #' sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-#' comparison <- compareSCESets(list(Splat = sim1, Simple = sim2))
+#' comparison <- compareSCEs(list(Splat = sim1, Simple = sim2))
 #' panel <- makeCompPanel(comparison)
 #' }
 #'
@@ -595,9 +610,9 @@ makeCompPanel <- function(comp, title = "Comparison",
 
 #' Make difference panel
 #'
-#' Combine the plots from \code{diffSCESets} into a single panel.
+#' Combine the plots from \code{diffSCEs} into a single panel.
 #'
-#' @param diff list returned by \code{\link{diffSCESets}}.
+#' @param diff list returned by \code{\link{diffSCEs}}.
 #' @param title title for the panel.
 #' @param labels vector of labels for each of the seven sections.
 #'
@@ -605,9 +620,9 @@ makeCompPanel <- function(comp, title = "Comparison",
 #'
 #' @examples
 #' \dontrun{
-#' sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+#' sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 #' sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-#' difference <- diffSCESets(list(Splat = sim1, Simple = sim2), ref = "Simple")
+#' difference <- diffSCEs(list(Splat = sim1, Simple = sim2), ref = "Simple")
 #' panel <- makeDiffPanel(difference)
 #' }
 #'
@@ -685,11 +700,11 @@ makeDiffPanel <- function(diff, title = "Difference comparison",
 
 #' Make overall panel
 #'
-#' Combine the plots from \code{compSCESets} and \code{diffSCESets} into a
+#' Combine the plots from \code{compSCEs} and \code{diffSCEs} into a
 #' single panel.
 #'
-#' @param comp list returned by \code{\link{compareSCESets}}.
-#' @param diff list returned by \code{\link{diffSCESets}}.
+#' @param comp list returned by \code{\link{compareSCEs}}.
+#' @param diff list returned by \code{\link{diffSCEs}}.
 #' @param title title for the panel.
 #' @param row.labels vector of labels for each of the seven rows.
 #'
@@ -697,7 +712,7 @@ makeDiffPanel <- function(diff, title = "Difference comparison",
 #'
 #' @examples
 #' \dontrun{
-#' sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+#' sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 #' sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
 #' comparison <- compSCESets(list(Splat = sim1, Simple = sim2))
 #' difference <- diffSCESets(list(Splat = sim1, Simple = sim2), ref = "Simple")
@@ -788,22 +803,21 @@ makeOverallPanel <- function(comp, diff, title = "Overall comparison",
     return(panel)
 }
 
-#' Summarise diffSCESets
+#' Summarise diffSCESs
 #'
-#' Summarise the results of \code{\link{diffSCESets}}. The various
-#' properties are sorted, differences calculated, the Median Absolute Deviation
-#' taken as the summary statistic and the ranks calculated.
+#' Summarise the results of \code{\link{diffSCEs}}. Calculates the Median
+#' Absolute Deviation (MAD), Mean Absolute Error (MAE) and Root Mean Squared
+#' Error (RMSE) for the various properties and ranks them.
 #'
-#' @param diff Output from \code{\link{diffSCESets}}
+#' @param diff Output from \code{\link{diffSCEs}}
 #'
-#' @return List with MADs, ranks and both combined in long format
+#' @return data.frame with MADs, MAEs, RMSEs, scaled statistics and ranks
 #' @examples
-#' sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+#' sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 #' sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-#' difference <- diffSCESets(list(Splat = sim1, Simple = sim2), ref = "Simple")
+#' difference <- diffSCEs(list(Splat = sim1, Simple = sim2), ref = "Simple")
 #' summary <- summariseDiff(difference)
-#' names(summary)
-#' head(summary$Long)
+#' head(summary)
 #' @export
 summariseDiff <- function(diff) {
 
@@ -819,6 +833,7 @@ summariseDiff <- function(diff) {
         return(c(Mean = mean, Variance = var, ZerosGene = zeros,
                  MeanVar = mean.var, MeanZeros = mean.zeros))
     })
+    fData.mads.z <- t(scale(t(fData.mads)))
 
     pData.mads <- sapply(datasets, function(dataset) {
         df <- diff$PhenoData[diff$PhenoData$Dataset == dataset, ]
@@ -826,27 +841,124 @@ summariseDiff <- function(diff) {
         zeros <- median(abs(df$RankDiffZeros))
         return(c(LibSize = lib.size, ZerosCell = zeros))
     })
+    pData.mads.z <- t(scale(t(pData.mads)))
 
     mads <- data.frame(Dataset = datasets, t(fData.mads), t(pData.mads))
+    mads.z <- data.frame(Dataset = datasets, t(fData.mads.z), t(pData.mads.z))
 
     fData.ranks <- matrixStats::rowRanks(fData.mads)
     pData.ranks <- matrixStats::rowRanks(pData.mads)
 
-    ranks <- data.frame(Dataset = datasets, t(fData.ranks), t(pData.ranks))
-    colnames(ranks) <- paste0(colnames(mads), "Rank")
+    ranks.mads <- data.frame(Dataset = datasets, t(fData.ranks), t(pData.ranks))
+    colnames(ranks.mads) <- paste0(colnames(mads), "Rank")
+
+    fData.maes <- sapply(datasets, function(dataset) {
+        df <- diff$FeatureData[diff$FeatureData$Dataset == dataset, ]
+        mean <- mean(abs(df$RankDiffMeanLogCPM))
+        var <- mean(abs(df$RankDiffVarLogCPM))
+        zeros <- mean(abs(df$RankDiffZeros))
+        mean.var <- mean(abs(df$MeanRankVarDiff))
+        mean.zeros <- mean(abs(df$MeanRankZerosDiff))
+        return(c(Mean = mean, Variance = var, ZerosGene = zeros,
+                 MeanVar = mean.var, MeanZeros = mean.zeros))
+    })
+    fData.maes.z <- t(scale(t(fData.maes)))
+
+    pData.maes <- sapply(datasets, function(dataset) {
+        df <- diff$PhenoData[diff$PhenoData$Dataset == dataset, ]
+        lib.size <- mean(abs(df$RankDiffLibSize))
+        zeros <- mean(abs(df$RankDiffZeros))
+        return(c(LibSize = lib.size, ZerosCell = zeros))
+    })
+    pData.maes.z <- t(scale(t(pData.maes)))
+
+    maes <- data.frame(Dataset = datasets, t(fData.maes), t(pData.maes))
+    maes.z <- data.frame(Dataset = datasets, t(fData.maes.z), t(pData.maes.z))
+
+    fData.ranks <- matrixStats::rowRanks(fData.maes)
+    pData.ranks <- matrixStats::rowRanks(pData.maes)
+
+    ranks.maes <- data.frame(Dataset = datasets, t(fData.ranks), t(pData.ranks))
+    colnames(ranks.maes) <- paste0(colnames(mads), "Rank")
+
+    fData.rmse <- sapply(datasets, function(dataset) {
+        df <- diff$FeatureData[diff$FeatureData$Dataset == dataset, ]
+        mean <- sqrt(mean(df$RankDiffMeanLogCPM ^ 2))
+        var <- sqrt(mean(df$RankDiffVarLogCPM ^ 2))
+        zeros <- sqrt(mean(df$RankDiffZeros ^ 2))
+        mean.var <- sqrt(mean(df$MeanRankVarDiff ^ 2))
+        mean.zeros <- sqrt(mean(df$MeanRankZerosDiff ^ 2))
+        return(c(Mean = mean, Variance = var, ZerosGene = zeros,
+                 MeanVar = mean.var, MeanZeros = mean.zeros))
+    })
+    fData.rmse.z <- t(scale(t(fData.rmse)))
+
+    pData.rmse <- sapply(datasets, function(dataset) {
+        df <- diff$PhenoData[diff$PhenoData$Dataset == dataset, ]
+        lib.size <- sqrt(mean(df$RankDiffLibSize ^ 2))
+        zeros <- sqrt(mean(df$RankDiffZeros ^ 2))
+        return(c(LibSize = lib.size, ZerosCell = zeros))
+    })
+    pData.rmse.z <- t(scale(t(pData.rmse)))
+
+    rmse <- data.frame(Dataset = datasets, t(fData.rmse), t(pData.rmse))
+    rmse.z <- data.frame(Dataset = datasets, t(fData.rmse.z), t(pData.rmse.z))
 
-    mads.long <- stats::reshape(mads, varying = 2:8, direction = "long",
-                                idvar = "Dataset", timevar = "Statistic",
-                                times = colnames(mads)[2:8], v.names = "MAD")
+    fData.ranks <- matrixStats::rowRanks(fData.rmse)
+    pData.ranks <- matrixStats::rowRanks(pData.rmse)
 
-    ranks.long <- stats::reshape(ranks, varying = 2:8, direction = "long",
+    ranks.rmse <- data.frame(Dataset = datasets, t(fData.ranks), t(pData.ranks))
+    colnames(ranks.rmse) <- paste0(colnames(rmse), "Rank")
+
+    mads <- stats::reshape(mads, varying = 2:8, direction = "long",
+                           idvar = "Dataset", timevar = "Statistic",
+                           times = colnames(mads)[2:8], v.names = "MAD")
+
+    mads.z <- stats::reshape(mads.z, varying = 2:8, direction = "long",
+                             idvar = "Dataset", timevar = "Statistic",
+                             times = colnames(mads)[2:8],
+                             v.names = "MADScaled")
+
+    ranks.mads <- stats::reshape(ranks.mads, varying = 2:8, direction = "long",
                                  idvar = "Dataset", timevar = "Statistic",
-                                 times = colnames(ranks)[2:8], v.names = "Rank")
+                                 times = colnames(ranks.mads)[2:8],
+                                 v.names = "Rank")
 
-    long <- data.frame(mads.long, Rank = ranks.long$Rank)
-    row.names(long) <- NULL
+    maes <- stats::reshape(maes, varying = 2:8, direction = "long",
+                           idvar = "Dataset", timevar = "Statistic",
+                           times = colnames(maes)[2:8], v.names = "MAE")
 
-    summary <- list(MADs = mads, Ranks = ranks, Long = long)
+    maes.z <- stats::reshape(maes.z, varying = 2:8, direction = "long",
+                             idvar = "Dataset", timevar = "Statistic",
+                             times = colnames(mads)[2:8],
+                             v.names = "MAEScaled")
+
+    ranks.maes <- stats::reshape(ranks.maes, varying = 2:8, direction = "long",
+                                 idvar = "Dataset", timevar = "Statistic",
+                                 times = colnames(ranks.maes)[2:8],
+                                 v.names = "Rank")
+
+    rmse <- stats::reshape(rmse, varying = 2:8, direction = "long",
+                           idvar = "Dataset", timevar = "Statistic",
+                           times = colnames(mads)[2:8], v.names = "RMSE")
+
+    rmse.z <- stats::reshape(rmse.z, varying = 2:8, direction = "long",
+                             idvar = "Dataset", timevar = "Statistic",
+                             times = colnames(mads)[2:8],
+                             v.names = "RMSEScaled")
+
+    ranks.rmse <- stats::reshape(ranks.rmse, varying = 2:8, direction = "long",
+                                 idvar = "Dataset", timevar = "Statistic",
+                                 times = colnames(ranks.rmse)[2:8],
+                                 v.names = "Rank")
+
+    summary <- data.frame(mads, MADScaled = mads.z$MADScaled,
+                          MADRank = ranks.mads$Rank,
+                          MAE = maes$MAE, MAEScaled = maes.z$MAEScaled,
+                          MAERank = ranks.maes$Rank,
+                          RMSE = rmse$RMSE, RMSEScaled = rmse.z$RMSEScaled,
+                          RMSERank = ranks.rmse$Rank)
+    row.names(summary) <- NULL
 
     return(summary)
 }
diff --git a/R/listSims.R b/R/listSims.R
index 359e8f0ceca22ca0dd01e3a4eece273432ab1846..4dadb145a5c1b40d69849adaf4544322f50e9abb 100644
--- a/R/listSims.R
+++ b/R/listSims.R
@@ -12,21 +12,27 @@
 #' @export
 listSims <- function(print = TRUE) {
 
-    sims <- list(c("Splat", "splat", "", "",
+    sims <- list(c("Splat", "splat", "10.1186/s13059-017-1305-0",
+                   "Oshlack/splatter",
                    "The Splat simulation generates means from a gamma
                    distribution, adjusts them for BCV and generates counts from
-                   a gamma-poisson. Dropout can be optionally added."),
-                 c("Splat Single", "splatSingle", "", "",
+                   a gamma-poisson. Dropout and batch effects can be optionally
+                   added."),
+                 c("Splat Single", "splatSingle", "10.1186/s13059-017-1305-0",
+                   "Oshlack/splatter",
                    "The Splat simulation with a single population."),
-                 c("Splat Groups", "splatGroups", "", "",
+                 c("Splat Groups", "splatGroups", "10.1186/s13059-017-1305-0",
+                   "Oshlack/splatter",
                    "The Splat simulation with multiple groups. Each group can
                    have it's own differential expression probability and
                    fold change distribution."),
-                 c("Splat Paths", "splatPaths", "", "",
+                 c("Splat Paths", "splatPaths", "10.1186/s13059-017-1305-0",
+                   "Oshlack/splatter",
                    "The Splat simulation with differentiation paths. Each
                    path can have it's own length, skew and probability. Genes
                    can change in non-linear ways."),
-                 c("Simple", "simple", "", "",
+                 c("Simple", "simple", "10.1186/s13059-017-1305-0",
+                   "Oshlack/splatter",
                    "A simple simulation with gamma means and negative binomial
                    counts."),
                  c("Lun", "lun", "10.1186/s13059-016-0947-7",
@@ -34,7 +40,7 @@ listSims <- function(print = TRUE) {
                    "Gamma distributed means and negative binomial counts. Cells
                    are given a size factor and differential expression can be
                    simulated with fixed fold changes."),
-                 c("Lun 2", "lun2", "10.1101/073973",
+                 c("Lun 2", "lun2", "10.1093/biostatistics/kxw055",
                    "MarioniLab/PlateEffects2016",
                    "Negative binomial counts where the means and dispersions
                    have been sampled from a real dataset. The core feature of
@@ -46,12 +52,31 @@ listSims <- function(print = TRUE) {
                    "kdkorthauer/scDD",
                    "The scDD simulation samples a given dataset and can
                    simulate differentially expressed and differentially
-                   distributed genes between two conditions."))
+                   distributed genes between two conditions."),
+                 c("BASiCS", "BASiCS", "10.1371/journal.pcbi.1004333",
+                   "catavallejos/BASiCS",
+                   "The BASiCS simulation is based on a bayesian model used to
+                   deconvolve biological and technical variation and
+                   includes spike-ins and batch effects."),
+                 c("mfa", "mfa", "10.12688/wellcomeopenres.11087.1",
+                   "kieranrcampbell/mfa",
+                   "The mfa simulation produces a bifurcating pseudotime
+                   trajectory. This can optionally include genes with transient
+                   changes in expression and added dropout."),
+                 c("PhenoPath", "pheno", "10.1101/159913",
+                   "kieranrcampbell/phenopath",
+                   "The PhenoPath simulation produces a pseudotime trajectory
+                   with different types of genes."),
+                 c("ZINB-WaVE", "zinb", "10.1101/125112",
+                   "drisso/zinbwave",
+                   "The ZINB-WaVE simulation simulates counts from a
+                   sophisticated zero-inflated negative-binomial distribution
+                   including cell and gene-level covariates."))
 
     sims.table <- data.frame(Name        = rep(NA, length(sims)),
                              Prefix      = rep(NA, length(sims)),
                              DOI         = rep(NA, length(sims)),
-                             Github      = rep(NA, length(sims)),
+                             GitHub      = rep(NA, length(sims)),
                              Description = rep(NA, length(sims)))
 
     for (idx in seq_along(sims)) {
@@ -65,7 +90,7 @@ listSims <- function(print = TRUE) {
         for (idx in seq_len(nrow(sims.table))) {
             sim <- as.character(sims.table[idx, ])
             cat(sim[1], paste0("(", sim[2], ")"), "\n")
-            cat("DOI:", sim[3], "\t", "Github:", sim[4], "\n")
+            cat("DOI:", sim[3], "\t", "GitHub:", sim[4], "\n")
             cat(sim[5], "\n\n")
         }
     }
diff --git a/R/lun-estimate.R b/R/lun-estimate.R
index 5cfc46bc81be175bc90af5c658f708f3c83e5a2a..3191a5d81b2ae16ce8c902f86faf7371830d1ad8 100644
--- a/R/lun-estimate.R
+++ b/R/lun-estimate.R
@@ -2,8 +2,8 @@
 #'
 #' Estimate simulation parameters for the Lun simulation from a real dataset.
 #'
-#' @param counts either a counts matrix or an SCESet object containing count
-#'        data to estimate parameters from.
+#' @param counts either a counts matrix or an SingleCellExperiment object
+#'        containing count data to estimate parameters from.
 #' @param params LunParams object to store estimated values in.
 #'
 #' @details
@@ -24,8 +24,8 @@ lunEstimate <- function(counts, params = newLunParams()) {
 
 #' @rdname lunEstimate
 #' @export
-lunEstimate.SCESet <- function(counts, params = newLunParams()) {
-    counts <- scater::counts(counts)
+lunEstimate.SingleCellExperiment <- function(counts, params = newLunParams()) {
+    counts <- BiocGenerics::counts(counts)
     lunEstimate(counts, params)
 }
 
@@ -39,4 +39,4 @@ lunEstimate.matrix <- function(counts, params = newLunParams()) {
                         groupCells = ncol(counts))
 
     return(params)
-}
\ No newline at end of file
+}
diff --git a/R/lun-simulate.R b/R/lun-simulate.R
index abeafcb3d851a0d972bdc09c8ff2fce39de1b0f3..aa7337c8d0541a04d307c70d7e8fd5b67e3b9d0c 100644
--- a/R/lun-simulate.R
+++ b/R/lun-simulate.R
@@ -19,8 +19,8 @@
 #'
 #' See \code{\link{LunParams}} for details of the parameters.
 #'
-#' @return SCESet object containing the simulated counts and intermediate
-#' values.
+#' @return SingleCellExperiment object containing the simulated counts and
+#' intermediate values.
 #'
 #' @references
 #' Lun ATL, Bach K, Marioni JC. Pooling across cells to normalize single-cell
@@ -33,9 +33,8 @@
 #' @examples
 #' sim <- lunSimulate()
 #'
-#' @importFrom Biobase fData fData<- pData pData<-
-#' @importFrom methods new
-#' @importFrom scater newSCESet set_exprs<-
+#' @importFrom SummarizedExperiment rowData rowData<- colData colData<-
+#' @importFrom SingleCellExperiment SingleCellExperiment
 #' @importFrom stats rnorm rgamma rnbinom
 #' @export
 lunSimulate <- function(params = newLunParams(), verbose = TRUE, ...) {
@@ -63,6 +62,9 @@ lunSimulate <- function(params = newLunParams(), verbose = TRUE, ...) {
     de.upFC <- getParam(params, "de.upFC")
     de.downFC <- getParam(params, "de.downFC")
 
+    cell.names <- paste0("Cell", seq_len(nCells))
+    gene.names <- paste0("Gene", seq_len(nGenes))
+
     if (verbose) {message("Simulating means...")}
     gene.means <- rgamma(nGenes, shape = mean.shape, rate = mean.rate)
 
@@ -99,39 +101,40 @@ lunSimulate <- function(params = newLunParams(), verbose = TRUE, ...) {
         cell.facs <- unlist(cell.facs)
         groups <- unlist(groups)
     }
+    colnames(cell.means) <- cell.names
+    rownames(cell.means) <- gene.names
 
     if (verbose) {message("Simulating counts...")}
     counts <- matrix(rnbinom(nGenes * nCells, mu = cell.means,
                              size = 1 / count.disp),
                      nrow = nGenes, ncol = nCells)
 
-    if (verbose) {message("Creating final SCESet...")}
-    cell.names <- paste0("Cell", seq_len(nCells))
-    gene.names <- paste0("Gene", seq_len(nGenes))
+    if (verbose) {message("Creating final dataset...")}
     rownames(counts) <- gene.names
     colnames(counts) <- cell.names
 
-    phenos <- new("AnnotatedDataFrame",
-                  data = data.frame(Cell = cell.names, CellFac = cell.facs))
-    rownames(phenos) <- cell.names
-    features <- new("AnnotatedDataFrame",
-                    data = data.frame(Gene = gene.names, GeneMean = gene.means))
-    rownames(features) <- gene.names
-    sim <- newSCESet(countData = counts, phenoData = phenos,
-                     featureData = features)
+    cells <- data.frame(Cell = cell.names, CellFac = cell.facs)
+    rownames(cells) <- cell.names
 
-    colnames(cell.means) <- cell.names
-    rownames(cell.means) <- gene.names
-    set_exprs(sim, "CellMeans") <- cell.means
+    features <- data.frame(Gene = gene.names, GeneMean = gene.means)
+    rownames(features) <- gene.names
 
     if (nGroups > 1) {
-        pData(sim)$Group <- groups
+        cells$Group <- groups
         for (idx in seq_along(de.facs)) {
-            fData(sim)[[paste0("DEFacGroup", idx)]] <- de.facs[[idx]]
-            fData(sim)[[paste0("GeneMeanGroup", idx)]] <- gene.means *
+            features[[paste0("DEFacGroup", idx)]] <- de.facs[[idx]]
+            features[[paste0("GeneMeanGroup", idx)]] <- gene.means *
                 de.facs[[idx]]
         }
     }
 
+    sim <- SingleCellExperiment(assays = list(counts = counts,
+                                              CellMeans = cell.means),
+                                rowData = features,
+                                colData = cells,
+                                metadata = list(params = params))
+
+    if (verbose) {message("Done!")}
+
     return(sim)
 }
diff --git a/R/lun2-estimate.R b/R/lun2-estimate.R
index ffd4155c3c480df72d7a34315b57cabfcf707838..df51b84699291ace5b99df5da81caefd1d8c88c0 100644
--- a/R/lun2-estimate.R
+++ b/R/lun2-estimate.R
@@ -2,8 +2,8 @@
 #'
 #' Estimate simulation parameters for the Lun2 simulation from a real dataset.
 #'
-#' @param counts either a counts matrix or an SCESet object containing count
-#'        data to estimate parameters from.
+#' @param counts either a counts matrix or a SingleCellExperiment object
+#'        containing count data to estimate parameters from.
 #' @param plates integer vector giving the plate that each cell originated from.
 #' @param params Lun2Params object to store estimated values in.
 #' @param min.size minimum size of clusters when identifying group of cells in
@@ -36,10 +36,11 @@ lun2Estimate <- function(counts, plates, params = newLun2Params(),
 
 #' @rdname lun2Estimate
 #' @export
-lun2Estimate.SCESet <- function(counts, plates, params = newLun2Params(),
-                                min.size = 200, verbose = TRUE,
-                                BPPARAM = SerialParam()) {
-    counts <- scater::counts(counts)
+lun2Estimate.SingleCellExperiment <- function(counts, plates,
+                                              params = newLun2Params(),
+                                              min.size = 200, verbose = TRUE,
+                                              BPPARAM = SerialParam()) {
+    counts <- BiocGenerics::counts(counts)
     lun2Estimate(counts, plates, params, min.size = min.size, verbose = verbose)
 }
 
@@ -64,6 +65,11 @@ lun2Estimate.matrix <- function(counts, plates, params = newLun2Params(),
         stop("The Lun2 simulation requires the 'pscl' package for estimation.")
     }
 
+    if (!requireNamespace("limSolve", quietly = TRUE)) {
+        stop("The Lun2 simulation requires the 'limSolve' package for ",
+             "estimation.")
+    }
+
     progress <- FALSE
     if (requireNamespace("progress", quietly = TRUE)) {
         progress <- TRUE
@@ -97,7 +103,12 @@ lun2Estimate.matrix <- function(counts, plates, params = newLun2Params(),
         sizes <- seq(20, 100, 20)
     }
     sum.facs <- scran::computeSumFactors(dge$counts, cluster = groups,
-                                         sizes = sizes)
+                                         sizes = sizes, positive = TRUE)
+    if (any(sum.facs == 0)) {
+        warning("Some sum factors are zero. See ?scran::computeSumFactors ",
+                "for details.")
+        sum.facs <- sum.facs + 1e-6
+    }
     dge$samples$norm.factors <- sum.facs / dge$samples$lib.size
     # Mean centre normalisation factors
     dge$samples$norm.factors <- dge$samples$norm.factors /
diff --git a/R/lun2-simulate.R b/R/lun2-simulate.R
index bc8d9b696ad8eeb0086c664ca8aa2028d281cd03..c839eed6e1b6f53ff83d6e828d87c67ed5f0b822 100644
--- a/R/lun2-simulate.R
+++ b/R/lun2-simulate.R
@@ -26,21 +26,21 @@
 #' number in the dataset used in the estimation step but has the downside that
 #' some genes or cells may be simulated multiple times.
 #'
-#' @return SCESet containing simulated counts.
+#' @return SingleCellExperiment containing simulated counts.
 #'
 #' @references
 #' Lun ATL, Marioni JC. Overcoming confounding plate effects in differential
-#' expression analyses of single-cell RNA-seq data. bioRxiv (2016).
+#' expression analyses of single-cell RNA-seq data. Biostatistics (2017).
 #'
-#' Paper: \url{dx.doi.org/10.1101/073973}
+#' Paper: \url{dx.doi.org/10.1093/biostatistics/kxw055}
 #'
 #' Code: \url{https://github.com/MarioniLab/PlateEffects2016}
 #'
 #' @examples
 #' sim <- lun2Simulate()
 #' @export
-#' @importFrom methods new
-#' @importFrom scater newSCESet set_exprs<-
+#' @importFrom SummarizedExperiment assays<-
+#' @importFrom SingleCellExperiment SingleCellExperiment
 lun2Simulate <- function(params = newLun2Params(), zinb = FALSE,
                          verbose = TRUE, ...) {
 
@@ -91,31 +91,13 @@ lun2Simulate <- function(params = newLun2Params(), zinb = FALSE,
 
     de.nGenes <- getParam(params, "de.nGenes")
 
-    #if (name == "nGenes") {
-    #    old.nGenes <- getParam(object, "nGenes")
-    #    if (value != old.nGenes) {
-    #        warning("nGenes has been changed. Gene parameter vectors will be ",
-    #                "sampled to length new nGenes.")
-    #        selected <- sample(seq_len(old.nGenes), size = value,
-    #                           replace = TRUE)
-    #        for (parameter in grep("gene", slotNames(object), value = TRUE)) {
-    #            old.value <- getParam(object, parameter)
-    #            object <- setParamUnchecked(object, parameter,
-    #                                        old.value[selected])
-    #        }
-    #    }
-    #}
-
-
     # Set up objects to store intermediate values
     cell.names <- paste0("Cell", seq_len(nCells))
     gene.names <- paste0("Gene", seq_len(nGenes))
 
-    features <- new("AnnotatedDataFrame",
-                    data = data.frame(Gene = gene.names, GeneMean = gene.means,
-                                      GeneDisp = gene.disps))
-    phenos <- new("AnnotatedDataFrame",
-                  data = data.frame(Cell = cell.names, Plate = cell.plates))
+    features <- data.frame(Gene = gene.names, GeneMean = gene.means,
+                           GeneDisp = gene.disps)
+    cells <- data.frame(Cell = cell.names, Plate = cell.plates)
 
     if (zinb) {
         features$GeneZeroProp <- gene.ziProps
@@ -155,7 +137,7 @@ lun2Simulate <- function(params = newLun2Params(), zinb = FALSE,
         plate.means[, ingroup] <- plate.means[, ingroup] * de.facs
         plate.means[, -ingroup] <- plate.means[, -ingroup] * (1 / de.facs)
 
-        phenos$Ingroup <- cell.plates %in% plate.ingroup
+        cells$Ingroup <- cell.plates %in% plate.ingroup
         features$DEFacIngroup <- de.facs
         features$DEFacOutgroup <- 1 / de.facs
         for (idx in seq_len(nPlates)) {
@@ -166,7 +148,7 @@ lun2Simulate <- function(params = newLun2Params(), zinb = FALSE,
     if (verbose) {message("Simulating libray size factors...")}
     lib.facs <- lib.sizes / mean(lib.sizes)
     lib.facs <- sample(lib.facs, nCells, replace = TRUE) * lib.mod
-    phenos$LibSizeFac <- lib.facs
+    cells$LibSizeFac <- lib.facs
 
     if (verbose) {message("Simulating cell means...")}
     cell.means <- plate.means[, as.integer(cell.plates)]
@@ -185,27 +167,28 @@ lun2Simulate <- function(params = newLun2Params(), zinb = FALSE,
         counts[is.zero] <- 0
     }
 
-    if (verbose) {message("Creating final SCESet...")}
+    if (verbose) {message("Creating final dataset...")}
 
-    rownames(phenos) <- cell.names
+    rownames(cells) <- cell.names
     rownames(features) <- gene.names
     rownames(counts) <- gene.names
     colnames(counts) <- cell.names
-    sim <- newSCESet(countData = counts, phenoData = phenos,
-                     featureData = features)
-
     rownames(cell.means) <- gene.names
     colnames(cell.means) <- cell.names
-    set_exprs(sim, "CellMeans") <- cell.means
-
     rownames(true.counts) <- gene.names
     colnames(true.counts) <- cell.names
-    set_exprs(sim, "TrueCounts") <- true.counts
+
+    sim <- SingleCellExperiment(assays = list(counts = counts,
+                                              CellMeans = cell.means,
+                                              TrueCounts <- true.counts),
+                                rowData = features,
+                                colData = cells,
+                                metadata = list(params = params))
 
     if (zinb) {
         rownames(is.zero) <- gene.names
         colnames(is.zero) <- cell.names
-        set_exprs(sim, "ZeroInflation") <- is.zero
+        assays(sim)$ZeroInflation <- is.zero
     }
 
     if (verbose) {message("Done!")}
diff --git a/R/mfa-estimate.R b/R/mfa-estimate.R
new file mode 100644
index 0000000000000000000000000000000000000000..f3abf2f12b4f853fa060a2fdad398be24b077d57
--- /dev/null
+++ b/R/mfa-estimate.R
@@ -0,0 +1,46 @@
+#' Estimate mfa simulation parameters
+#'
+#' Estimate simulation parameters for the mfa simulation from a real dataset.
+#'
+#' @param counts either a counts matrix or a SingleCellExperiment object
+#'        containing count data to estimate parameters from.
+#' @param params MFAParams object to store estimated values in.
+#'
+#' @details
+#' The \code{nGenes} and \code{nCells} parameters are taken from the size of the
+#' input data. The dropout lambda parameter is estimate using
+#' \code{\link[mfa]{empirical_lambda}}. See \code{\link{MFAParams}} for more
+#' details on the parameters.
+#'
+#' @return MFAParams object containing the estimated parameters.
+#'
+#' @examples
+#' data("sc_example_counts")
+#' params <- mfaEstimate(sc_example_counts)
+#' params
+#' @export
+mfaEstimate <- function(counts, params = newMFAParams()) {
+    UseMethod("mfaEstimate")
+}
+
+#' @rdname mfaEstimate
+#' @export
+mfaEstimate.SingleCellExperiment <- function(counts,
+                                             params = newMFAParams()) {
+    counts <- BiocGenerics::counts(counts)
+    mfaEstimate(counts, params)
+}
+
+#' @rdname mfaEstimate
+#' @export
+mfaEstimate.matrix <- function(counts, params = newMFAParams()) {
+
+    checkmate::assertClass(params, "MFAParams")
+
+    dropout.lambda <- mfa::empirical_lambda(t(counts))
+
+    params <- setParams(params, nGenes = nrow(counts), nCells = ncol(counts),
+                        dropout.lambda = dropout.lambda)
+
+    return(params)
+}
diff --git a/R/mfa-simulate.R b/R/mfa-simulate.R
new file mode 100644
index 0000000000000000000000000000000000000000..b208bdeacd10aea2972644ad9aa27321618084ff
--- /dev/null
+++ b/R/mfa-simulate.R
@@ -0,0 +1,90 @@
+#' MFA simulation
+#'
+#' Simulate a bifurcating pseudotime path using the mfa method.
+#'
+#' @param params MFAParams object containing simulation parameters.
+#' @param verbose Logical. Whether to print progress messages.
+#' @param ... any additional parameter settings to override what is provided in
+#'        \code{params}.
+#'
+#' @details
+#' This function is just a wrapper around \code{\link[mfa]{create_synthetic}}
+#' that takes a \code{\link{MFAParams}}, runs the simulation then converts the
+#' output from log-expression to counts and returns a
+#' \code{\link[SingleCellExperiment]{SingleCellExperiment}} object. See
+#' \code{\link[mfa]{create_synthetic}} and the mfa paper for more details about
+#' how the simulation works.
+#'
+#' @return SingleCellExperiment containing simulated counts
+#'
+#' @references
+#' Campbell KR, Yau C. Probabilistic modeling of bifurcations in single-cell
+#' gene expression data using a Bayesian mixture of factor analyzers. Wellcome
+#' Open Research (2017).
+#'
+#' Paper: \url{10.12688/wellcomeopenres.11087.1}
+#'
+#' Code: \url{https://github.com/kieranrcampbell/mfa}
+#'
+#' @examples
+#' sim <- mfaSimulate()
+#' @export
+mfaSimulate <- function(params = newMFAParams(), verbose = TRUE, ...) {
+
+    checkmate::assertClass(params, "MFAParams")
+    params <- setParams(params, ...)
+
+    # Set random seed
+    seed <- getParam(params, "seed")
+    set.seed(seed)
+
+    # Get the parameters we are going to use
+    nCells <- getParam(params, "nCells")
+    nGenes <- getParam(params, "nGenes")
+    trans.prop <- getParam(params, "trans.prop")
+    zero.neg <- getParam(params, "zero.neg")
+    dropout.present <- getParam(params, "dropout.present")
+    dropout.lambda <- getParam(params, "dropout.lambda")
+
+    if (verbose) {message("Simulating counts...")}
+    mfa.sim <- mfa::create_synthetic(C = nCells,
+                                     G = nGenes,
+                                     p_transient = trans.prop,
+                                     zero_negative = zero.neg,
+                                     model_dropout = dropout.present,
+                                     lambda = dropout.lambda)
+
+    if (verbose) {message("Creating final dataset...")}
+    cell.names <- paste0("Cell", seq_len(nCells))
+    gene.names <- paste0("Gene", seq_len(nGenes))
+
+    exprs <- t(mfa.sim$X)
+    rownames(exprs) <- gene.names
+    colnames(exprs) <- cell.names
+
+    counts <- 2 ^ exprs - 1
+    counts[counts < 0] <- 0
+    counts <- round(counts)
+
+    cells <- data.frame(Cell = cell.names,
+                        Branch = mfa.sim$branch,
+                        Pseudotime = mfa.sim$pst)
+    rownames(cells) <- cell.names
+
+    features <- data.frame(Gene = gene.names,
+                           KBranch1 = mfa.sim$k[, 1],
+                           KBranch2 = mfa.sim$k[, 2],
+                           PhiBranch1 = mfa.sim$phi[, 1],
+                           PhiBranch2 = mfa.sim$phi[, 2],
+                           DeltaBranch1 = mfa.sim$delta[, 1],
+                           DeltaBranch2 = mfa.sim$delta[, 2])
+    rownames(features) <- gene.names
+
+    sim <- SingleCellExperiment(assays = list(counts = counts,
+                                              LogExprs = exprs),
+                                rowData = features,
+                                colData = cells,
+                                metadata = list(params = params))
+
+    return(sim)
+}
diff --git a/R/pheno-estimate.R b/R/pheno-estimate.R
new file mode 100644
index 0000000000000000000000000000000000000000..61cf4fc4541fa47916b120a9462338c3d1fa12a9
--- /dev/null
+++ b/R/pheno-estimate.R
@@ -0,0 +1,49 @@
+#' Estimate PhenoPath simulation parameters
+#'
+#' Estimate simulation parameters for the PhenoPath simulation from a real
+#' dataset.
+#'
+#' @param counts either a counts matrix or an SingleCellExperiment object
+#'        containing count data to estimate parameters from.
+#' @param params PhenoParams object to store estimated values in.
+#'
+#' @details
+#' The \code{nGenes} and \code{nCells} parameters are taken from the size of the
+#' input data. The total number of genes is evenly divided into the four types.
+#' See \code{\link{PhenoParams}} for more details on the parameters.
+#'
+#' @return PhenoParams object containing the estimated parameters.
+#'
+#' @examples
+#' data("sc_example_counts")
+#' params <- phenoEstimate(sc_example_counts)
+#' params
+#' @export
+phenoEstimate <- function(counts, params = newPhenoParams()) {
+    UseMethod("phenoEstimate")
+}
+
+#' @rdname phenoEstimate
+#' @export
+phenoEstimate.SingleCellExperiment <- function(counts,
+                                               params = newPhenoParams()) {
+    counts <- BiocGenerics::counts(counts)
+    phenoEstimate(counts, params)
+}
+
+#' @rdname phenoEstimate
+#' @export
+phenoEstimate.matrix <- function(counts, params = newPhenoParams()) {
+
+    checkmate::assertClass(params, "PhenoParams")
+
+    nGenes <- nrow(counts)
+    quarter <- floor(nGenes / 4)
+
+    params <- setParams(params, nCells = ncol(counts),
+                        n.de = nGenes - 3 * quarter,
+                        n.pst = quarter, n.pst.beta = quarter,
+                        n.de.pst.beta = quarter)
+
+    return(params)
+}
diff --git a/R/pheno-simulate.R b/R/pheno-simulate.R
new file mode 100644
index 0000000000000000000000000000000000000000..54b0f508e1ab56f0f68792d392aa804dfbda4e4f
--- /dev/null
+++ b/R/pheno-simulate.R
@@ -0,0 +1,90 @@
+#' PhenoPath simulation
+#'
+#' Simulate counts from a pseudotime trajectory using the PhenoPath method.
+#'
+#' @param params PhenoParams object containing simulation parameters.
+#' @param verbose logical. Whether to print progress messages
+#' @param ... any additional parameter settings to override what is provided in
+#'        \code{params}.
+#'
+#' @details
+#' This function is just a wrapper around
+#' \code{\link[phenopath]{simulate_phenopath}} that takes a
+#' \code{\link{PhenoParams}}, runs the simulation then converts the
+#' output from log-expression to counts and returns a
+#' \code{\link[SingleCellExperiment]{SingleCellExperiment}} object. The original
+#' simulated log-expression values are returned in the \code{LogExprs} asssay.
+#' See \code{\link[phenopath]{simulate_phenopath}} and the PhenoPath paper for
+#' more details about how the simulation works.
+#'
+#' @return SingleCellExperiment containing simulated counts
+#'
+#' @references
+#' Campbell K, Yau C. Uncovering genomic trajectories with heterogeneous genetic
+#' and environmental backgrounds across single-cells and populations. bioRxiv
+#' (2017).
+#'
+#' Paper: \url{10.1101/159913}
+#'
+#' Code: \url{https://github.com/kieranrcampbell/phenopath}
+#'
+#' @examples
+#' sim <- phenoSimulate()
+#'
+#' @export
+#' @importFrom SingleCellExperiment SingleCellExperiment
+phenoSimulate <- function(params = newPhenoParams(), verbose = TRUE, ...) {
+
+    checkmate::assertClass(params, "PhenoParams")
+    params <- setParams(params, ...)
+
+    # Set random seed
+    seed <- getParam(params, "seed")
+    set.seed(seed)
+
+    # Get the parameters we are going to use
+    nCells <- getParam(params, "nCells")
+    nGenes <- getParam(params, "nGenes")
+    n.de <- getParam(params, "n.de")
+    n.pst <- getParam(params, "n.pst")
+    n.pst.beta <- getParam(params, "n.pst.beta")
+    n.de.pst.beta <- getParam(params, "n.de.pst.beta")
+
+    if (verbose) {message("Simulating counts...")}
+    pheno.sim <- phenopath::simulate_phenopath(N = nCells,
+                                               G_de = n.de,
+                                               G_pst = n.pst,
+                                               G_pst_beta = n.pst.beta,
+                                               G_de_pst_beta = n.de.pst.beta)
+
+    if (verbose) {message("Creating final dataset...")}
+    cell.names <- paste0("Cell", seq_len(nCells))
+    gene.names <- paste0("Gene", seq_len(nGenes))
+
+    exprs <- t(pheno.sim$y)
+    counts <- 2 ^ exprs - 1
+    counts[counts < 0] <- 0
+    counts <- round(counts)
+    rownames(counts) <- gene.names
+    colnames(counts) <- cell.names
+
+    cells <- data.frame(Cell = cell.names,
+                        Covariate = pheno.sim$x,
+                        Pseudotime = pheno.sim$z)
+    rownames(cells) <- cell.names
+
+    features <- data.frame(Gene = gene.names,
+                           Alpha = pheno.sim$parameters$alpha,
+                           Lambda = pheno.sim$parameters$lambda,
+                           Beta = pheno.sim$parameters$beta,
+                           Regime = pheno.sim$parameters$regime)
+    rownames(features) <- gene.names
+
+    sim <- SingleCellExperiment(assays = list(counts = counts,
+                                              LogExprs = exprs),
+                                rowData = features,
+                                colData = cells,
+                                metadata = list(params = params))
+
+    return(sim)
+}
diff --git a/R/scDD-estimate.R b/R/scDD-estimate.R
index 8f9a5c20725c120fa638ddf7af12099f271e002d..9c213670a4aec8d72f1c08305aa4c4894e1f3fbb 100644
--- a/R/scDD-estimate.R
+++ b/R/scDD-estimate.R
@@ -2,65 +2,129 @@
 #'
 #' Estimate simulation parameters for the scDD simulation from a real dataset.
 #'
-#' @param counts either a counts matrix or an SCESet object containing count
-#'        data to estimate parameters from.
+#' @param counts either a counts matrix or a SingleCellExperiment object
+#'        containing count data to estimate parameters from.
 #' @param conditions Vector giving the condition that each cell belongs to.
 #'        Conditions can be 1 or 2.
+#' @param condition String giving the column that represents biological group of
+#'        interest.
 #' @param params SCDDParams object to store estimated values in.
+#' @param verbose logical. Whether to show progress messages.
+#' @param BPPARAM A \code{\link[BiocParallel]{BiocParallelParam}} instance
+#'        giving the parallel back-end to be used. Default is
+#'        \code{\link[BiocParallel]{SerialParam}} which uses a single core.
+#' @param ... further arguments passed to or from other methods.
 #'
 #' @details
-#' This function is just a wrapper around \code{\link[scDD]{preprocess}} that
-#' takes the output and converts it to a SCDDParams object. See
-#' \code{\link[scDD]{preprocess}} for details.
+#' This function applies \code{\link[scDD]{preprocess}} to the counts then uses
+#' \code{\link[scDD]{scDD}} to estimate the numbers of each gene type to
+#' simulate. The output is then converted to a SCDDParams object. See
+#' \code{\link[scDD]{preprocess}} and \code{\link[scDD]{scDD}} for details.
 #'
 #' @return SCDDParams object containing the estimated parameters.
 #'
 #' @examples
+#' \dontrun{
 #' data("sc_example_counts")
 #' conditions <- sample(1:2, ncol(sc_example_counts), replace = TRUE)
 #' params <- scDDEstimate(sc_example_counts, conditions)
 #' params
+#' }
+#' @importFrom BiocParallel SerialParam
 #' @export
-scDDEstimate <- function(counts, conditions, params = newSCDDParams()) {
+scDDEstimate <- function(counts, #conditions, condition,
+                         params = newSCDDParams(), verbose = TRUE,
+                         BPPARAM = SerialParam(), ...) {
+
+    if (!requireNamespace("scDD", quietly = TRUE)) {
+        stop("The scDD simulation requires the 'scDD' package.")
+    }
+
     UseMethod("scDDEstimate")
 }
 
 #' @rdname scDDEstimate
+#' @importFrom SingleCellExperiment SingleCellExperiment
 #' @export
-scDDEstimate.SCESet <- function(counts, conditions, params = newSCDDParams()) {
-    counts <- scater::counts(counts)
-    scDDEstimate(counts, conditions, params)
+scDDEstimate.matrix <- function(counts, params = newSCDDParams(),
+                                verbose = TRUE, BPPARAM = SerialParam(),
+                                conditions, ...) {
+
+    checkmate::assertMatrix(counts, mode = "numeric", any.missing = FALSE,
+                            min.rows = 1, min.cols = 1, row.names = "unique",
+                            col.names = "unique")
+    checkmate::assertIntegerish(conditions, len = ncol(counts), lower = 1,
+                                upper = 2)
+
+    counts <- SingleCellExperiment(assays = list(counts = counts),
+                                   colData = data.frame(condition = conditions))
+    scDDEstimate.default(counts, "condition", params, verbose, BPPARAM)
 }
 
 #' @rdname scDDEstimate
-#' @importFrom methods as
 #' @export
-scDDEstimate.matrix <- function(counts, conditions, params = newSCDDParams()) {
+scDDEstimate.SingleCellExperiment <- function(counts,
+                                              params = newSCDDParams(),
+                                              verbose = TRUE,
+                                              BPPARAM = SerialParam(),
+                                              condition = "condition", ...) {
+    scDDEstimate.default(counts, condition, params, verbose, BPPARAM)
+}
 
-    if (!requireNamespace("scDD", quietly = TRUE)) {
-        stop("The scDD simulation requires the 'scDD' package.")
-    }
+#' @rdname scDDEstimate
+#' @importFrom methods as
+#' @export
+scDDEstimate.default <- function(counts,
+                                 params = newSCDDParams(), verbose = TRUE,
+                                 BPPARAM = SerialParam(), condition, ...) {
 
     checkmate::assertClass(params, "SCDDParams")
-    checkmate::assertIntegerish(conditions, len = ncol(counts), lower = 1,
-                                upper = 2)
-
-    counts.list <- list(Cond1 = counts[, conditions == 1],
-                        Cond2 = counts[, conditions == 2])
+    checkmate::assertClass(counts, "SingleCellExperiment")
+    checkmate::assertCharacter(condition, min.chars = 1, any.missing = FALSE,
+                               len = 1)
+    if (!(condition %in% colnames(SummarizedExperiment::colData(counts)))) {
+        stop("'condition' must be the name of a column in `colData(counts)`")
+    }
 
-    processed <- scDD::preprocess(counts.list, c("Cond1", "Cond2"),
-                                  median_norm = TRUE)
+    if (verbose) {
+        processed <- scDD::preprocess(counts, condition, median_norm = TRUE)
+    } else {
+        suppressMessages(
+        processed <- scDD::preprocess(counts, condition, median_norm = TRUE)
+        )
+    }
 
-    assays <- S4Vectors::SimpleList(NormCounts = processed)
+    if (verbose) {
+        SCdat <- scDD::scDD(processed, testZeroes = FALSE, param = BPPARAM,
+                            condition = condition)
+    } else {
+        dummy <- utils::capture.output(suppressMessages(
+        SCdat <- scDD::scDD(processed, testZeroes = FALSE, param = BPPARAM,
+                            condition = condition)
+        ))
+    }
 
-    colData <- S4Vectors::DataFrame(condition = conditions,
-                                    row.names = colnames(processed))
+    res <- scDD::results(SCdat)
+    res <- res[!is.na(res$DDcategory), ]
+    dd.cats <- table(res$DDcategory)
 
-    SCdat <- SummarizedExperiment::SummarizedExperiment(assays = assays,
-                                                        colData = colData)
+    not.dd <- res$DDcategory == "NS"
+    nDE <- ifelse("DE" %in% names(dd.cats), dd.cats["DE"], 0)
+    nDP <- ifelse("DP" %in% names(dd.cats), dd.cats["DP"], 0)
+    nDM <- ifelse("DM" %in% names(dd.cats), dd.cats["DM"], 0)
+    nDB <- ifelse("DB" %in% names(dd.cats), dd.cats["DB"], 0)
+    nEP <- sum(res$Clusters.c1[not.dd] > 1 & res$Clusters.c2[not.dd] > 1)
+    nEE <- nrow(counts) - nDE - nDP - nDM - nDB - nEP
 
-    params <- setParams(params, nCells = round(dim(SCdat)[2] / 2),
-                        SCdat = SCdat)
+    params <- setParams(params,
+                        nCells = round(dim(SCdat)[2] / 2),
+                        SCdat = SCdat,
+                        nDE = nDE,
+                        nDP = nDP,
+                        nDM = nDM,
+                        nDB = nDB,
+                        nEE = nEE,
+                        nEP = nEP)
 
     return(params)
-}
\ No newline at end of file
+}
diff --git a/R/scDD-simulate.R b/R/scDD-simulate.R
index 478443f68054c276c49d75e9418c93e18b9d4046..a9dbd3fec07b80631c68f08886fba38fc9c8fdb9 100644
--- a/R/scDD-simulate.R
+++ b/R/scDD-simulate.R
@@ -16,10 +16,11 @@
 #' @details
 #' This function is just a wrapper around \code{\link[scDD]{simulateSet}} that
 #' takes a \code{\link{SCDDParams}}, runs the simulation then converts the
-#' output to an \code{\link[scater]{SCESet}} object. See
-#' \code{\link[scDD]{simulateSet}} for more details of how the simulation works.
+#' output to a \code{\link[SingleCellExperiment]{SingleCellExperiment}} object.
+#' See \code{\link[scDD]{simulateSet}} for more details about how the simulation
+#' works.
 #'
-#' @return SCESet containing simulated counts
+#' @return SingleCellExperiment containing simulated counts
 #'
 #' @references
 #' Korthauer KD, Chu L-F, Newton MA, Li Y, Thomson J, Stewart R, et al. A
@@ -35,8 +36,8 @@
 #' sim <- scDDSimulate()
 #' }
 #' @export
-#' @importFrom scater newSCESet
 #' @importFrom BiocParallel SerialParam
+#' @importFrom SingleCellExperiment SingleCellExperiment
 scDDSimulate <- function(params = newSCDDParams(), plots = FALSE,
                          plot.file = NULL, verbose = TRUE,
                          BPPARAM = SerialParam(), ...) {
@@ -90,26 +91,29 @@ scDDSimulate <- function(params = newSCDDParams(), plots = FALSE,
         )
     }
 
-    counts <- scDD.sim[[1]]
-    foldchanges <- scDD.sim[[2]]
-    de.status <- rownames(counts)
+    counts <- SummarizedExperiment::assays(scDD.sim)$normcounts
+    foldchanges <- SummarizedExperiment::rowData(scDD.sim)$FC
+    de.status <- SummarizedExperiment::rowData(scDD.sim)$Category
 
-    if (verbose) {message("Creating SCESet...")}
+    if (verbose) {message("Creating final dataset...")}
     cell.names <- paste0("Cell", seq_len(nCells * 2))
     gene.names <- paste0("Gene", seq_len(getParam(params, "nGenes")))
 
     rownames(counts) <- gene.names
     colnames(counts) <- cell.names
-    phenos <- new("AnnotatedDataFrame",
-                  data = data.frame(Cell = cell.names,
-                                    Condition = rep(1:2, each = nCells)))
-    rownames(phenos) <- cell.names
-    features <- new("AnnotatedDataFrame",
-                    data = data.frame(Gene = gene.names, DEStatus = de.status,
-                                      FoldChange = foldchanges))
+
+    cells <- data.frame(Cell = cell.names,
+                        Condition = rep(1:2, each = nCells))
+    rownames(cells) <- cell.names
+
+    features <- data.frame(Gene = gene.names, DEStatus = de.status,
+                           FoldChange = foldchanges)
     rownames(features) <- gene.names
-    sim <- newSCESet(countData = counts, phenoData = phenos,
-                     featureData = features)
+
+    sim <- SingleCellExperiment(assays = list(counts = counts),
+                                rowData = features,
+                                colData = cells,
+                                metadata = list(params = params))
 
     if (verbose) {message("Done!")}
 
diff --git a/R/simple-estimate.R b/R/simple-estimate.R
index 1225becae5483959cd4e85dee99449517ff22072..3a50a4143ad591c6f0ee1790cfedd2f5903b6f3e 100644
--- a/R/simple-estimate.R
+++ b/R/simple-estimate.R
@@ -2,8 +2,8 @@
 #'
 #' Estimate simulation parameters for the simple simulation from a real dataset.
 #'
-#' @param counts either a counts matrix or an SCESet object containing count
-#'        data to estimate parameters from.
+#' @param counts either a counts matrix or a SingleCellExperiment object
+#'        containing count data to estimate parameters from.
 #' @param params SimpleParams object to store estimated values in.
 #'
 #' @details
@@ -26,8 +26,9 @@ simpleEstimate <- function(counts, params = newSimpleParams()) {
 
 #' @rdname simpleEstimate
 #' @export
-simpleEstimate.SCESet <- function(counts, params = newSimpleParams()) {
-    counts <- scater::counts(counts)
+simpleEstimate.SingleCellExperiment <- function(counts,
+                                                params = newSimpleParams()) {
+    counts <- BiocGenerics::counts(counts)
     simpleEstimate(counts, params)
 }
 
@@ -53,4 +54,4 @@ simpleEstimate.matrix <- function(counts, params = newSimpleParams()) {
                         mean.rate = unname(means.fit$estimate["rate"]))
 
     return(params)
-}
\ No newline at end of file
+}
diff --git a/R/simple-simulate.R b/R/simple-simulate.R
index e52b216440bb1f567fdaa006e247f885e18361fd..3c074cee3ab9c42de8a42376d500121e6555b879 100644
--- a/R/simple-simulate.R
+++ b/R/simple-simulate.R
@@ -15,14 +15,14 @@
 #' \code{size = 1 / counts.disp}. See \code{\link{SimpleParams}} for more
 #' details of the parameters.
 #'
-#' @return SCESet containing simulated counts
+#' @return SingleCellExperiment containing simulated counts
 #' @examples
 #' sim <- simpleSimulate()
 #' # Override default parameters
 #' sim <- simpleSimulate(nGenes = 1000, nCells = 50)
 #' @export
 #' @importFrom stats rgamma rnbinom
-#' @importFrom scater newSCESet
+#' @importFrom SingleCellExperiment SingleCellExperiment
 simpleSimulate <- function(params = newSimpleParams(), verbose = TRUE, ...) {
 
     checkmate::assertClass(params, "SimpleParams")
@@ -47,19 +47,21 @@ simpleSimulate <- function(params = newSimpleParams(), verbose = TRUE, ...) {
                              size = 1 / count.disp),
                      nrow = nGenes, ncol = nCells)
 
-    if (verbose) {message("Creating final SCESet...")}
+    if (verbose) {message("Creating final dataset...")}
     cell.names <- paste0("Cell", seq_len(nCells))
     gene.names <- paste0("Gene", seq_len(nGenes))
 
     rownames(counts) <- gene.names
     colnames(counts) <- cell.names
-    phenos <- new("AnnotatedDataFrame", data = data.frame(Cell = cell.names))
-    rownames(phenos) <- cell.names
-    features <- new("AnnotatedDataFrame",
-                    data = data.frame(Gene = gene.names, GeneMean = means))
+    cells <- data.frame(Cell = cell.names)
+    rownames(cells) <- cell.names
+    features <- data.frame(Gene = gene.names, GeneMean = means)
     rownames(features) <- gene.names
-    sim <- newSCESet(countData = counts, phenoData = phenos,
-                     featureData = features)
+
+    sim <- SingleCellExperiment(assays = list(counts = counts),
+                                rowData = features,
+                                colData = cells,
+                                metadata = list(params = params))
 
     return(sim)
 }
diff --git a/R/splat-estimate.R b/R/splat-estimate.R
index 275b35f1432a6acf86c30f25c39a06ae36278083..ead3c49fe500c4173e69eab9bddb2ccc48ae758f 100644
--- a/R/splat-estimate.R
+++ b/R/splat-estimate.R
@@ -4,8 +4,8 @@
 #' dataset. See the individual estimation functions for more details on how this
 #' is done.
 #'
-#' @param counts either a counts matrix or an SCESet object containing count
-#'        data to estimate parameters from.
+#' @param counts either a counts matrix or a SingleCellExperiment object
+#'        containing count data to estimate parameters from.
 #' @param params SplatParams object to store estimated values in.
 #'
 #' @seealso
@@ -26,8 +26,9 @@ splatEstimate <- function(counts, params = newSplatParams()) {
 
 #' @rdname splatEstimate
 #' @export
-splatEstimate.SCESet <- function(counts, params = newSplatParams()) {
-    counts <- scater::counts(counts)
+splatEstimate.SingleCellExperiment <- function(counts,
+                                               params = newSplatParams()) {
+    counts <- BiocGenerics::counts(counts)
     splatEstimate(counts, params)
 }
 
@@ -51,7 +52,7 @@ splatEstimate.matrix <- function(counts, params = newSplatParams()) {
     params <- splatEstDropout(norm.counts, params)
 
     params <- setParams(params, nGenes = nrow(counts),
-                        groupCells = ncol(counts))
+                        batchCells = ncol(counts))
 
     return(params)
 }
@@ -81,9 +82,9 @@ splatEstMean <- function(norm.counts, params) {
 
     means <- winsorize(means, q = 0.1)
 
-    fit <- try(fitdistrplus::fitdist(means, "gamma", method = "mge",
-                                     gof = "CvM"))
-    if (class(fit) == "try-error") {
+    fit <- fitdistrplus::fitdist(means, "gamma", method = "mge",
+                                 gof = "CvM")
+    if (fit$convergence > 0) {
         warning("Goodness of fit failed, using Method of Moments")
         fit <- fitdistrplus::fitdist(means, "gamma", method = "mme")
     }
diff --git a/R/splat-simulate.R b/R/splat-simulate.R
index 1feb4cf6d31423aa940820fee2dfe9bb39059b2c..5f21bebb46f7d2bd164d89bd3d6bc41b2d662852 100644
--- a/R/splat-simulate.R
+++ b/R/splat-simulate.R
@@ -31,15 +31,16 @@
 #'     \item Simulate BCV adjusted cell means
 #'     \item Simulate true counts
 #'     \item Simulate dropout
-#'     \item Create final SCESet object
+#'     \item Create final dataset
 #' }
 #'
-#' The final output is an \code{\link[scater]{SCESet}} object that contains the
-#' simulated counts but also the values for various intermediate steps. These
-#' are stored in the \code{\link[Biobase]{phenoData}} (for cell specific
-#' information), \code{\link[Biobase]{featureData}} (for gene specific
-#' information) or \code{\link[Biobase]{assayData}} (for gene by cell matrices)
-#' slots. This additional information includes:
+#' The final output is a
+#' \code{\link[SingleCellExperiment]{SingleCellExperiment}} object that
+#' contains the simulated counts but also the values for various intermediate
+#' steps. These are stored in the \code{\link[SummarizedExperiment]{colData}}
+#' (for cell specific information), \code{\link[SummarizedExperiment]{rowData}}
+#' (for gene specific information) or \code{\link[SummarizedExperiment]{assays}}
+#' (for gene by cell matrices) slots. This additional information includes:
 #' \describe{
 #'     \item{\code{phenoData}}{
 #'         \describe{
@@ -56,22 +57,25 @@
 #'             \item{OutlierFactor}{Expression outlier factor for that gene.
 #'             Values of 1 indicate the gene is not an expression outlier.}
 #'             \item{GeneMean}{Expression level after applying outlier factors.}
+#'             \item{BatchFac[Batch]}{The batch effects factor for each gene for
+#'             a particular batch.}
 #'             \item{DEFac[Group]}{The differential expression factor for each
 #'             gene in a particular group. Values of 1 indicate the gene is not
 #'             differentially expressed.}
-#'             \item{GeneMean[Group]}{Expression level of a gene in a particular
-#'             group after applying differential expression factors.}
 #'             \item{SigmaFac[Path]}{Factor applied to genes that have
 #'             non-linear changes in expression along a path.}
 #'         }
 #'     }
 #'     \item{\code{assayData}}{
 #'         \describe{
-#'             \item{BaseCellMeans}{The expression of genes in each cell
-#'             adjusted for expected library size.}
+#'             \item{BatchCellMeans}{The mean expression of genes in each cell
+#'             after adding batch effects.}
+#'             \item{BaseCellMeans}{The mean expression of genes in each cell
+#'             after any differential expression and adjusted for expected
+#'             library size.}
 #'             \item{BCV}{The Biological Coefficient of Variation for each gene
 #'             in each cell.}
-#'             \item{CellMeans}{The expression level of genes in each cell
+#'             \item{CellMeans}{The mean expression level of genes in each cell
 #'             adjusted for BCV.}
 #'             \item{TrueCounts}{The simulated counts before dropout.}
 #'             \item{Dropout}{Logical matrix showing which values have been
@@ -80,23 +84,32 @@
 #'     }
 #' }
 #'
-#' Values that have been added by Splatter are named using \code{CamelCase} in
-#' order to differentiate them from the values added by Scater which uses
-#' \code{underscore_naming}.
+#' Values that have been added by Splatter are named using \code{UpperCamelCase}
+#' in order to differentiate them from the values added by analysis packages
+#' which typically use \code{underscore_naming}.
 #'
-#' @return SCESet object containing the simulated counts and intermediate
-#' values.
+#' @return SingleCellExperiment object containing the simulated counts and
+#' intermediate values.
+#'
+#' @references
+#' Zappia L, Phipson B, Oshlack A. Splatter: simulation of single-cell RNA
+#' sequencing data. Genome Biology (2017).
+#'
+#' Paper: \url{10.1186/s13059-017-1305-0}
+#'
+#' Code: \url{https://github.com/Oshlack/splatter}
 #'
 #' @seealso
 #' \code{\link{splatSimLibSizes}}, \code{\link{splatSimGeneMeans}},
+#' \code{\link{splatSimBatchEffects}}, \code{\link{splatSimBatchCellMeans}},
 #' \code{\link{splatSimDE}}, \code{\link{splatSimCellMeans}},
 #' \code{\link{splatSimBCVMeans}}, \code{\link{splatSimTrueCounts}},
 #' \code{\link{splatSimDropout}}
 #'
 #' @examples
 #' # Simulation with default parameters
-#' \dontrun{
 #' sim <- splatSimulate()
+#' \dontrun{
 #' # Simulation with different number of genes
 #' sim <- splatSimulate(nGenes = 1000)
 #' # Simulation with custom parameters
@@ -109,9 +122,9 @@
 #' # Simulate paths
 #' sim <- splatSimulate(method = "paths")
 #' }
-#' @importFrom Biobase fData pData pData<- assayData
+#' @importFrom SummarizedExperiment rowData colData colData<- assays
+#' @importFrom SingleCellExperiment SingleCellExperiment
 #' @importFrom methods validObject
-#' @importFrom scater newSCESet counts set_exprs<- get_exprs
 #' @export
 splatSimulate <- function(params = newSplatParams(),
                           method = c("single", "groups", "paths"),
@@ -133,8 +146,10 @@ splatSimulate <- function(params = newSplatParams(),
     # Get the parameters we are going to use
     nCells <- getParam(params, "nCells")
     nGenes <- getParam(params, "nGenes")
+    nBatches <- getParam(params, "nBatches")
+    batch.cells <- getParam(params, "batchCells")
     nGroups <- getParam(params, "nGroups")
-    group.cells <- getParam(params, "groupCells")
+    group.prob <- getParam(params, "group.prob")
 
     if (nGroups == 1 && method == "groups") {
         warning("nGroups is 1, switching to single mode")
@@ -145,36 +160,43 @@ splatSimulate <- function(params = newSplatParams(),
     # Set up name vectors
     cell.names <- paste0("Cell", seq_len(nCells))
     gene.names <- paste0("Gene", seq_len(nGenes))
+    batch.names <- paste0("Batch", seq_len(nBatches))
     if (method == "groups") {
         group.names <- paste0("Group", seq_len(nGroups))
     } else if (method == "paths") {
         group.names <- paste0("Path", seq_len(nGroups))
     }
 
-    # Create SCESet with dummy counts to store simulation
-    dummy.counts <- matrix(1, ncol = nCells, nrow = nGenes)
-    rownames(dummy.counts) <- gene.names
-    colnames(dummy.counts) <- cell.names
-    phenos <- new("AnnotatedDataFrame", data = data.frame(Cell = cell.names))
-    rownames(phenos) <- cell.names
-    features <- new("AnnotatedDataFrame", data = data.frame(Gene = gene.names))
+    # Create SingleCellExperiment to store simulation
+    cells <-  data.frame(Cell = cell.names)
+    rownames(cells) <- cell.names
+    features <- data.frame(Gene = gene.names)
     rownames(features) <- gene.names
-    sim <- newSCESet(countData = dummy.counts, phenoData = phenos,
-                     featureData = features)
+    sim <- SingleCellExperiment(rowData = features, colData = cells,
+                                metadata = list(params = params))
+
+    # Make batches vector which is the index of param$batchCells repeated
+    # params$batchCells[index] times
+    batches <- lapply(seq_len(nBatches), function(i, b) {rep(i, b[i])},
+                      b = batch.cells)
+    batches <- unlist(batches)
+    colData(sim)$Batch <- batch.names[batches]
 
-    # Make groups vector which is the index of param$groupCells repeated
-    # params$groupCells[index] times
     if (method != "single") {
-        groups <- lapply(seq_len(nGroups), function(i, g) {rep(i, g[i])},
-                         g = group.cells)
-        groups <- unlist(groups)
-        pData(sim)$Group <- group.names[groups]
+        groups <- sample(seq_len(nGroups), nCells, prob = group.prob,
+                         replace = TRUE)
+        colData(sim)$Group <- group.names[groups]
     }
 
     if (verbose) {message("Simulating library sizes...")}
     sim <- splatSimLibSizes(sim, params)
     if (verbose) {message("Simulating gene means...")}
     sim <- splatSimGeneMeans(sim, params)
+    if (nBatches > 1) {
+        if (verbose) {message("Simulating batch effects...")}
+        sim <- splatSimBatchEffects(sim, params)
+    }
+    sim <- splatSimBatchCellMeans(sim, params)
     if (method == "single") {
         sim <- splatSimSingleCellMeans(sim, params)
     } else if (method == "groups") {
@@ -195,21 +217,8 @@ splatSimulate <- function(params = newSplatParams(),
     if (verbose) {message("Simulating dropout (if needed)...")}
     sim <- splatSimDropout(sim, params)
 
-    if (verbose) {message("Creating final SCESet...")}
-    # Create new SCESet to make sure values are calculated correctly
-    sce <- newSCESet(countData = counts(sim),
-                     phenoData = new("AnnotatedDataFrame", data = pData(sim)),
-                     featureData = new("AnnotatedDataFrame", data = fData(sim)))
-
-    # Add intermediate matrices stored in assayData
-    for (assay.name in names(assayData(sim))) {
-        if (!(assay.name %in% names(assayData(sce)))) {
-            set_exprs(sce, assay.name) <- get_exprs(sim, assay.name)
-        }
-    }
-
     if (verbose) {message("Done!")}
-    return(sce)
+    return(sim)
 }
 
 #' @rdname splatSimulate
@@ -242,12 +251,12 @@ splatSimulatePaths <- function(params = newSplatParams(), verbose = TRUE, ...) {
 #'
 #' Simulate expected library sizes from a log-normal distribution
 #'
-#' @param sim SCESet to add library size to.
+#' @param sim SingleCellExperiment to add library size to.
 #' @param params SplatParams object with simulation parameters.
 #'
-#' @return SCESet with simulated library sizes.
+#' @return SingleCellExperiment with simulated library sizes.
 #'
-#' @importFrom Biobase pData pData<-
+#' @importFrom SummarizedExperiment colData colData<-
 #' @importFrom stats rlnorm
 splatSimLibSizes <- function(sim, params) {
 
@@ -256,7 +265,7 @@ splatSimLibSizes <- function(sim, params) {
     lib.scale <- getParam(params, "lib.scale")
 
     exp.lib.sizes <- rlnorm(nCells, lib.loc, lib.scale)
-    pData(sim)$ExpLibSize <- exp.lib.sizes
+    colData(sim)$ExpLibSize <- exp.lib.sizes
 
     return(sim)
 }
@@ -267,12 +276,12 @@ splatSimLibSizes <- function(sim, params) {
 #' expression factors. Genes with an outlier factor not equal to 1 are replaced
 #' with the median mean expression multiplied by the outlier factor.
 #'
-#' @param sim SCESet to add gene means to.
+#' @param sim SingleCellExperiment to add gene means to.
 #' @param params SplatParams object with simulation parameters.
 #'
-#' @return SCESet with simulated gene means.
+#' @return SingleCellExperiment with simulated gene means.
 #'
-#' @importFrom Biobase fData fData<-
+#' @importFrom SummarizedExperiment rowData rowData<-
 #' @importFrom stats rgamma median
 splatSimGeneMeans <- function(sim, params) {
 
@@ -295,9 +304,80 @@ splatSimGeneMeans <- function(sim, params) {
     means.gene <- base.means.gene
     means.gene[is.outlier] <- outlier.means[is.outlier]
 
-    fData(sim)$BaseGeneMean <- base.means.gene
-    fData(sim)$OutlierFactor <- outlier.facs
-    fData(sim)$GeneMean <- means.gene
+    rowData(sim)$BaseGeneMean <- base.means.gene
+    rowData(sim)$OutlierFactor <- outlier.facs
+    rowData(sim)$GeneMean <- means.gene
+
+    return(sim)
+}
+
+#' Simulate batch effects
+#'
+#' Simulate batch effects. Batch effect factors for each batch are produced
+#' using \code{\link{getLNormFactors}} and these are added along with updated
+#' means for each batch.
+#'
+#' @param sim SingleCellExperiment to add batch effects to.
+#' @param params SplatParams object with simulation parameters.
+#'
+#' @return SingleCellExperiment with simulated batch effects.
+#'
+#' @importFrom SummarizedExperiment rowData rowData<-
+splatSimBatchEffects <- function(sim, params) {
+
+    nGenes <- getParam(params, "nGenes")
+    nBatches <- getParam(params, "nBatches")
+    batch.facLoc <- getParam(params, "batch.facLoc")
+    batch.facScale <- getParam(params, "batch.facScale")
+    means.gene <- rowData(sim)$GeneMean
+
+    for (idx in seq_len(nBatches)) {
+        batch.facs <- getLNormFactors(nGenes, 1, 0.5, batch.facLoc[idx],
+                                        batch.facScale[idx])
+        batch.means.gene <- means.gene * batch.facs
+        rowData(sim)[[paste0("BatchFacBatch", idx)]] <- batch.facs
+    }
+
+    return(sim)
+}
+
+#' Simulate batch means
+#'
+#' Simulate a mean for each gene in each cell incorporating batch effect
+#' factors.
+#'
+#' @param sim SingleCellExperiment to add batch means to.
+#' @param params SplatParams object with simulation parameters.
+#'
+#' @return SingleCellExperiment with simulated batch means.
+#'
+#' @importFrom SummarizedExperiment rowData rowData<-
+splatSimBatchCellMeans <- function(sim, params) {
+
+    nBatches <- getParam(params, "nBatches")
+    cell.names <- colData(sim)$Cell
+    gene.names <- rowData(sim)$Gene
+    gene.means <- rowData(sim)$GeneMean
+
+    if (nBatches > 1) {
+        batches <- colData(sim)$Batch
+        batch.names <- unique(batches)
+
+        batch.facs.gene <- rowData(sim)[, paste0("BatchFac", batch.names)]
+        batch.facs.cell <- as.matrix(batch.facs.gene[,
+                                                  as.numeric(factor(batches))])
+    } else {
+        nCells <- getParam(params, "nCells")
+        nGenes <- getParam(params, "nGenes")
+
+        batch.facs.cell <- matrix(1, ncol = nCells, nrow = nGenes)
+    }
+
+    batch.means.cell <- batch.facs.cell * gene.means
+
+    colnames(batch.means.cell) <- cell.names
+    rownames(batch.means.cell) <- gene.names
+    assays(sim)$BatchCellMeans <- batch.means.cell
 
     return(sim)
 }
@@ -307,18 +387,18 @@ splatSimGeneMeans <- function(sim, params) {
 #' Simulate differential expression. Differential expression factors for each
 #' group are produced using \code{\link{getLNormFactors}} and these are added
 #' along with updated means for each group. For paths care is taked to make sure
-#' they are simualated in the correct order.
+#' they are simulated in the correct order.
 #'
-#' @param sim SCESet to add differential expression to.
+#' @param sim SingleCellExperiment to add differential expression to.
 #' @param params splatParams object with simulation parameters.
 #'
-#' @return SCESet with simulated differential expression.
+#' @return SingleCellExperiment with simulated differential expression.
 #'
 #' @name splatSimDE
 NULL
 
 #' @rdname splatSimDE
-#' @importFrom Biobase fData
+#' @importFrom SummarizedExperiment rowData
 splatSimGroupDE <- function(sim, params) {
 
     nGenes <- getParam(params, "nGenes")
@@ -327,21 +407,20 @@ splatSimGroupDE <- function(sim, params) {
     de.downProb <- getParam(params, "de.downProb")
     de.facLoc <- getParam(params, "de.facLoc")
     de.facScale <- getParam(params, "de.facScale")
-    means.gene <- fData(sim)$GeneMean
+    means.gene <- rowData(sim)$GeneMean
 
     for (idx in seq_len(nGroups)) {
         de.facs <- getLNormFactors(nGenes, de.prob[idx], de.downProb[idx],
                                    de.facLoc[idx], de.facScale[idx])
         group.means.gene <- means.gene * de.facs
-        fData(sim)[[paste0("DEFacGroup", idx)]] <- de.facs
-        fData(sim)[[paste0("GeneMeanGroup", idx)]] <- group.means.gene
+        rowData(sim)[[paste0("DEFacGroup", idx)]] <- de.facs
     }
 
     return(sim)
 }
 
 #' @rdname splatSimDE
-#' @importFrom Biobase fData
+#' @importFrom SummarizedExperiment rowData
 splatSimPathDE <- function(sim, params) {
 
     nGenes <- getParam(params, "nGenes")
@@ -355,15 +434,14 @@ splatSimPathDE <- function(sim, params) {
     for (path in path.order) {
         from <- path.from[path]
         if (from == 0) {
-            means.gene <- fData(sim)$GeneMean
+            means.gene <- rowData(sim)$GeneMean
         } else {
-            means.gene <- fData(sim)[[paste0("GeneMeanPath", from)]]
+            means.gene <- rowData(sim)[[paste0("GeneMeanPath", from)]]
         }
         de.facs <- getLNormFactors(nGenes, de.prob[path], de.downProb[path],
                                    de.facLoc[path], de.facScale[path])
         path.means.gene <- means.gene * de.facs
-        fData(sim)[[paste0("DEFacPath", path)]] <- de.facs
-        fData(sim)[[paste0("GeneMeanPath", path)]] <- path.means.gene
+        rowData(sim)[[paste0("DEFacPath", path)]] <- de.facs
     }
 
     return(sim)
@@ -377,78 +455,80 @@ splatSimPathDE <- function(sim, params) {
 #' random position on the appropriate path (when simulating paths). The selected
 #' means are adjusted for each cell's expected library size.
 #'
-#' @param sim SCESet to add cell means to.
+#' @param sim SingleCellExperiment to add cell means to.
 #' @param params SplatParams object with simulation parameters.
 #'
-#' @return SCESet with added cell means.
+#' @return SingleCellExperiment with added cell means.
 #'
 #' @name splatSimCellMeans
 NULL
 
 #' @rdname splatSimCellMeans
-#' @importFrom Biobase fData pData
-#' @importFrom scater set_exprs<-
+#' @importFrom SummarizedExperiment rowData colData assays assays<-
 splatSimSingleCellMeans <- function(sim, params) {
 
     nCells <- getParam(params, "nCells")
-    cell.names <- pData(sim)$Cell
-    gene.names <- fData(sim)$Gene
-    exp.lib.sizes <- pData(sim)$ExpLibSize
+    cell.names <- colData(sim)$Cell
+    gene.names <- rowData(sim)$Gene
+    exp.lib.sizes <- colData(sim)$ExpLibSize
+    batch.means.cell <- assays(sim)$BatchCellMeans
 
-    cell.means.gene <- as.matrix(fData(sim)[, rep("GeneMean", nCells)])
+    cell.means.gene <- batch.means.cell
     cell.props.gene <- t(t(cell.means.gene) / colSums(cell.means.gene))
     base.means.cell <- t(t(cell.props.gene) * exp.lib.sizes)
 
     colnames(base.means.cell) <- cell.names
     rownames(base.means.cell) <- gene.names
-    set_exprs(sim, "BaseCellMeans") <- base.means.cell
+    assays(sim)$BaseCellMeans <- base.means.cell
 
     return(sim)
 }
 
 #' @rdname splatSimCellMeans
-#' @importFrom Biobase fData pData
-#' @importFrom scater set_exprs<-
+#' @importFrom SummarizedExperiment rowData colData assays assays<-
 splatSimGroupCellMeans <- function(sim, params) {
 
     nGroups <- getParam(params, "nGroups")
-    cell.names <- pData(sim)$Cell
-    gene.names <- fData(sim)$Gene
-    groups <- pData(sim)$Group
-    group.names <- unique(groups)
-    exp.lib.sizes <- pData(sim)$ExpLibSize
-
-    group.means.gene <- fData(sim)[, paste0("GeneMean", group.names)]
-    cell.means.gene <- as.matrix(group.means.gene[, factor(groups)])
+    cell.names <- colData(sim)$Cell
+    gene.names <- rowData(sim)$Gene
+    groups <- colData(sim)$Group
+    group.names <- sort(unique(groups))
+    exp.lib.sizes <- colData(sim)$ExpLibSize
+    batch.means.cell <- assays(sim)$BatchCellMeans
+
+    group.facs.gene <- rowData(sim)[, paste0("DEFac", group.names)]
+    cell.facs.gene <- as.matrix(group.facs.gene[, paste0("DEFac", groups)])
+    cell.means.gene <- batch.means.cell * cell.facs.gene
     cell.props.gene <- t(t(cell.means.gene) / colSums(cell.means.gene))
     base.means.cell <- t(t(cell.props.gene) * exp.lib.sizes)
 
     colnames(base.means.cell) <- cell.names
     rownames(base.means.cell) <- gene.names
-    set_exprs(sim, "BaseCellMeans") <- base.means.cell
+    assays(sim)$BaseCellMeans <- base.means.cell
 
     return(sim)
 }
 
 #' @rdname splatSimCellMeans
-#' @importFrom Biobase fData pData
-#' @importFrom scater set_exprs<-
+#' @importFrom SummarizedExperiment rowData colData colData<- assays assays<-
 #' @importFrom stats rbinom
 splatSimPathCellMeans <- function(sim, params) {
 
     nGenes <- getParam(params, "nGenes")
+    nCells <- getParam(params, "nCells")
     nGroups <- getParam(params, "nGroups")
-    cell.names <- pData(sim)$Cell
-    gene.names <- fData(sim)$Gene
-    group.cells <- getParam(params, "groupCells")
+    cell.names <- colData(sim)$Cell
+    gene.names <- rowData(sim)$Gene
     path.from <- getParam(params, "path.from")
     path.length <- getParam(params, "path.length")
     path.skew <- getParam(params, "path.skew")
     path.nonlinearProb <- getParam(params, "path.nonlinearProb")
     path.sigmaFac <- getParam(params, "path.sigmaFac")
-    groups <- pData(sim)$Group
-    group.names <- unique(groups)
-    exp.lib.sizes <- pData(sim)$ExpLibSize
+    groups <- colData(sim)$Group
+    exp.lib.sizes <- colData(sim)$ExpLibSize
+    batch.means.cell <- assays(sim)$BatchCellMeans
+
+    group.sizes <- table(groups)
 
     # Generate non-linear path factors
     for (idx in seq_along(path.from)) {
@@ -456,59 +536,71 @@ splatSimPathCellMeans <- function(sim, params) {
         is.nonlinear <- as.logical(rbinom(nGenes, 1, path.nonlinearProb))
         sigma.facs <- rep(0, nGenes)
         sigma.facs[is.nonlinear] <- path.sigmaFac
-        fData(sim)[[paste0("SigmaFacPath", idx)]] <- sigma.facs
+        rowData(sim)[[paste0("SigmaFacPath", idx)]] <- sigma.facs
+    }
+
+    # Generate non-linear path factors
+    for (idx in seq_along(path.from)) {
+        # Select genes to follow a non-linear path
+        is.nonlinear <- as.logical(rbinom(nGenes, 1, path.nonlinearProb))
+        sigma.facs <- rep(0, nGenes)
+        sigma.facs[is.nonlinear] <- path.sigmaFac
+        rowData(sim)[[paste0("SigmaFacPath", idx)]] <- sigma.facs
     }
 
     # Generate paths. Each path is a matrix with path.length columns and
     # nGenes rows where the expression from each genes changes along the path.
     path.steps <- lapply(seq_along(path.from), function(idx) {
         from <- path.from[idx]
-        # Find the means at the starting position
+        # Find the factors at the starting position
         if (from == 0) {
-            means.start <- fData(sim)$GeneMean
+            facs.start <- rep(1, nGenes)
         } else {
-            means.start <- fData(sim)[[paste0("GeneMeanPath", from)]]
+            facs.start <- rowData(sim)[[paste0("DEFacPath", from)]]
         }
-        # Find the means at the end position
-        means.end <- fData(sim)[[paste0("GeneMeanPath", idx)]]
+        # Find the factors at the end position
+        facs.end <- rowData(sim)[[paste0("DEFacPath", idx)]]
 
         # Get the non-linear factors
-        sigma.facs <- fData(sim)[[paste0("SigmaFacPath", idx)]]
+        sigma.facs <- rowData(sim)[[paste0("SigmaFacPath", idx)]]
 
         # Build Brownian bridges from start to end
-        steps <- buildBridges(means.start, means.end, n = path.length[idx],
+        steps <- buildBridges(facs.start, facs.end, n = path.length[idx],
                               sigma.fac = sigma.facs)
 
         return(t(steps))
     })
 
     # Randomly assign a position in the appropriate path to each cell
-    cell.steps <- lapply(seq_len(nGroups), function(idx) {
-        path.probs <- seq(path.skew[idx], 1 - path.skew[idx],
+    path.probs <- lapply(seq_len(nGroups), function(idx) {
+        probs <- seq(path.skew[idx], 1 - path.skew[idx],
                           length = path.length[idx])
-        path.probs <- path.probs / sum(path.probs)
-        steps <- sort(sample(seq_len(path.length[idx]), group.cells[idx],
-                             prob = path.probs, replace = TRUE))
+        probs <- probs / sum(probs)
+        return(probs)
+    })
 
-        return(steps)
+    steps <- sapply(factor(groups), function(path) {
+        step <- sample(seq_len(path.length[path]), 1, prob = path.probs[[path]])
     })
 
     # Collect the underlying expression levels for each cell
-    cell.means.gene <- lapply(seq_len(nGroups), function(idx) {
-        cell.means <- path.steps[[idx]][, cell.steps[[idx]]]
-        return(cell.means)
+    cell.facs.gene <- lapply(seq_len(nCells), function(idx) {
+        path <- factor(groups)[idx]
+        step <- steps[idx]
+        cell.means <- path.steps[[path]][, step]
     })
-    cell.means.gene <- do.call(cbind, cell.means.gene)
+    cell.facs.gene <- do.call(cbind, cell.facs.gene)
 
     # Adjust expression based on library size
+    cell.means.gene <- batch.means.cell * cell.facs.gene
     cell.props.gene <- t(t(cell.means.gene) / colSums(cell.means.gene))
     base.means.cell <- t(t(cell.props.gene) * exp.lib.sizes)
 
     colnames(base.means.cell) <- cell.names
     rownames(base.means.cell) <- gene.names
 
-    pData(sim)$Step <- unlist(cell.steps)
-    set_exprs(sim, "BaseCellMeans") <- base.means.cell
+    colData(sim)$Step <- steps
+    assays(sim)$BaseCellMeans <- base.means.cell
 
     return(sim)
 }
@@ -519,23 +611,22 @@ splatSimPathCellMeans <- function(sim, params) {
 #' mean-variance trend using Biological Coefficient of Variation taken from
 #' and inverse gamma distribution.
 #'
-#' @param sim SCESet to add BCV means to.
+#' @param sim SingleCellExperiment to add BCV means to.
 #' @param params SplatParams object with simulation parameters.
 #'
-#' @return SCESet with simulated BCV means.
+#' @return SingleCellExperiment with simulated BCV means.
 #'
-#' @importFrom Biobase fData pData
-#' @importFrom scater get_exprs set_exprs<-
+#' @importFrom SummarizedExperiment rowData colData assays assays<-
 #' @importFrom stats rchisq rgamma
 splatSimBCVMeans <- function(sim, params) {
 
-    cell.names <- pData(sim)$Cell
-    gene.names <- fData(sim)$Gene
+    cell.names <- colData(sim)$Cell
+    gene.names <- rowData(sim)$Gene
     nGenes <- getParam(params, "nGenes")
     nCells <- getParam(params, "nCells")
     bcv.common <- getParam(params, "bcv.common")
     bcv.df <- getParam(params, "bcv.df")
-    base.means.cell <- get_exprs(sim, "BaseCellMeans")
+    base.means.cell <- assays(sim)$BaseCellMeans
 
     if (is.finite(bcv.df)) {
         bcv <- (bcv.common + (1 / sqrt(base.means.cell))) *
@@ -552,8 +643,8 @@ splatSimBCVMeans <- function(sim, params) {
     colnames(means.cell) <- cell.names
     rownames(means.cell) <- gene.names
 
-    set_exprs(sim, "BCV") <- bcv
-    set_exprs(sim, "CellMeans") <- means.cell
+    assays(sim)$BCV <- bcv
+    assays(sim)$CellMeans <- means.cell
 
     return(sim)
 }
@@ -564,21 +655,20 @@ splatSimBCVMeans <- function(sim, params) {
 #' distribution where Each gene in each cell has it's own mean based on the
 #' group (or path position), expected library size and BCV.
 #'
-#' @param sim SCESet to add true counts to.
+#' @param sim SingleCellExperiment to add true counts to.
 #' @param params SplatParams object with simulation parameters.
 #'
-#' @return SCESet with simulated true counts.
+#' @return SingleCellExperiment with simulated true counts.
 #'
-#' @importFrom Biobase fData pData
-#' @importFrom scater get_exprs set_exprs<-
+#' @importFrom SummarizedExperiment rowData colData assays assays<-
 #' @importFrom stats rpois
 splatSimTrueCounts <- function(sim, params) {
 
-    cell.names <- pData(sim)$Cell
-    gene.names <- fData(sim)$Gene
+    cell.names <- colData(sim)$Cell
+    gene.names <- rowData(sim)$Gene
     nGenes <- getParam(params, "nGenes")
     nCells <- getParam(params, "nCells")
-    cell.means <- get_exprs(sim, "CellMeans")
+    cell.means <- assays(sim)$CellMeans
 
     true.counts <- matrix(rpois(nGenes * nCells, lambda = cell.means),
                           nrow = nGenes, ncol = nCells)
@@ -586,7 +676,7 @@ splatSimTrueCounts <- function(sim, params) {
     colnames(true.counts) <- cell.names
     rownames(true.counts) <- gene.names
 
-    set_exprs(sim, "TrueCounts") <- true.counts
+    assays(sim)$TrueCounts <- true.counts
 
     return(sim)
 }
@@ -598,27 +688,26 @@ splatSimTrueCounts <- function(sim, params) {
 #' gene in each cell. These probabilities are used in a Bernoulli distribution
 #' to decide which counts should be dropped.
 #'
-#' @param sim SCESet to add dropout to.
+#' @param sim SingleCellExperiment to add dropout to.
 #' @param params SplatParams object with simulation parameters.
 #'
-#' @return SCESet with simulated dropout and observed counts.
+#' @return SingleCellExperiment with simulated dropout and observed counts.
 #'
-#' @importFrom Biobase fData pData
-#' @importFrom scater get_exprs set_exprs<-
+#' @importFrom SummarizedExperiment rowData colData assays assays<-
 #' @importFrom stats rbinom
 splatSimDropout <- function(sim, params) {
 
     dropout.present <- getParam(params, "dropout.present")
-    true.counts <- get_exprs(sim, "TrueCounts")
+    true.counts <- assays(sim)$TrueCounts
 
     if (dropout.present) {
-        cell.names <- pData(sim)$Cell
-        gene.names <- fData(sim)$Gene
+        cell.names <- colData(sim)$Cell
+        gene.names <- rowData(sim)$Gene
         nCells <- getParam(params, "nCells")
         nGenes <- getParam(params, "nGenes")
         dropout.mid <- getParam(params, "dropout.mid")
         dropout.shape <- getParam(params, "dropout.shape")
-        cell.means <- get_exprs(sim, "CellMeans")
+        cell.means <- assays(sim)$CellMeans
 
         # Generate probabilites based on expression
         drop.prob <- sapply(seq_len(nCells), function(idx) {
@@ -637,13 +726,13 @@ splatSimDropout <- function(sim, params) {
         colnames(keep) <- cell.names
         rownames(keep) <- gene.names
 
-        set_exprs(sim, "DropProb") <- drop.prob
-        set_exprs(sim, "Dropout") <- !keep
+        assays(sim)$DropProb <- drop.prob
+        assays(sim)$Dropout <- !keep
     } else {
         counts <- true.counts
     }
 
-    scater::counts(sim) <- counts
+    BiocGenerics::counts(sim) <- counts
 
     return(sim)
 }
diff --git a/R/splatter-package.R b/R/splatter-package.R
index 40729e03983343fe8e46fedebd69f95654f483a2..c8cfb77ac4d036c31a78c4aad007130ca64f28b0 100644
--- a/R/splatter-package.R
+++ b/R/splatter-package.R
@@ -6,6 +6,10 @@
 #' As well as it's own simulation model \pkg{splatter} provides functions for
 #' the estimation of model parameters.
 #'
+#' @seealso
+#' Zappia L, Phipson B, Oshlack A. Splatter: Simulation Of Single-Cell RNA
+#' Sequencing Data. bioRxiv. 2017; doi:10.1101/133173
+#'
 #' @name splatter
 #' @docType package
 NULL
diff --git a/R/zinb-estimate.R b/R/zinb-estimate.R
new file mode 100644
index 0000000000000000000000000000000000000000..2a14443ccba5949f9cfba69730a0887b7b4ecdb3
--- /dev/null
+++ b/R/zinb-estimate.R
@@ -0,0 +1,97 @@
+#' Estimate ZINB-WaVE simulation parameters
+#'
+#' Estimate simulation parameters for the ZINB-WaVE simulation from a real
+#' dataset.
+#'
+#' @param counts either a counts matrix or a SingleCellExperiment object
+#'        containing count data to estimate parameters from.
+#' @param design.samples design matrix of sample-level covariates.
+#' @param design.genes design matrix of gene-level covariates.
+#' @param common.disp logical. Whether or not a single dispersion for all
+#'        features is estimated.
+#' @param iter.init number of iterations to use for initalization.
+#' @param iter.opt number of iterations to use for optimization.
+#' @param stop.opt stopping criterion for optimization.
+#' @param params ZINBParams object to store estimated values in.
+#' @param verbose logical. Whether to print progress messages.
+#' @param BPPARAM A \code{\link[BiocParallel]{BiocParallelParam}} instance
+#'        giving the parallel back-end to be used. Default is
+#'        \code{\link[BiocParallel]{SerialParam}} which uses a single core.
+#' @param ... additional arguments passes to \code{\link[zinbwave]{zinbFit}}.
+#'
+#' @details
+#' The function is a wrapper around \code{\link[zinbwave]{zinbFit}} that takes
+#' the fitted model and inserts it into a \code{\link{ZINBParams}} object. See
+#' \code{\link{ZINBParams}} for more details on the parameters and
+#' \code{\link[zinbwave]{zinbFit}} for details of the estimation procedure.
+#'
+#' @return ZINBParams object containing the estimated parameters.
+#'
+#' @examples
+#' \dontrun{
+#' data("sc_example_counts")
+#' params <- zinbEstimate(sc_example_counts)
+#' params
+#' }
+#' @importFrom BiocParallel SerialParam
+#' @export
+zinbEstimate <- function(counts, design.samples = NULL, design.genes = NULL,
+                         common.disp = TRUE, iter.init = 2, iter.opt = 25,
+                         stop.opt = 1e-04, params = newZINBParams(),
+                         verbose = TRUE, BPPARAM = SerialParam(), ...) {
+    UseMethod("zinbEstimate")
+}
+
+#' @rdname zinbEstimate
+#' @export
+zinbEstimate.SingleCellExperiment <- function(counts, design.samples = NULL,
+                                              design.genes = NULL,
+                                              common.disp = TRUE,
+                                              iter.init = 2, iter.opt = 25,
+                                              stop.opt = 1e-04,
+                                              params = newZINBParams(),
+                                              verbose = TRUE,
+                                              BPPARAM = SerialParam(), ...) {
+    counts <- BiocGenerics::counts(counts)
+    zinbEstimate(counts, design.samples, design.genes, common.disp,
+                 iter.init, iter.opt, stop.opt, params, verbose, BPPARAM, ...)
+}
+
+#' @rdname zinbEstimate
+#' @export
+zinbEstimate.matrix <- function(counts, design.samples = NULL,
+                                design.genes = NULL, common.disp = TRUE,
+                                iter.init = 2, iter.opt = 25, stop.opt = 1e-04,
+                                params = newZINBParams(), verbose = TRUE,
+                                BPPARAM = SerialParam(), ...) {
+
+    checkmate::assertClass(params, "ZINBParams")
+
+    if (verbose) {message("Removing all zero genes...")}
+    counts <- counts[rowSums(counts) > 0, ]
+
+    args.list <- list(Y = counts,
+                      commondispersion = common.disp,
+                      verbose = verbose,
+                      nb.repeat.initialize = iter.init,
+                      maxiter.optimize = iter.opt,
+                      stop.epsilon.optimize = stop.opt,
+                      BPPARAM = BPPARAM)
+
+    if (!is.null(design.samples)) {
+        args.list$X <- design.samples
+    }
+
+    if (!is.null(design.genes)) {
+        args.list$V <- design.genes
+    }
+
+    args.list <- c(args.list, list(...))
+
+    if (verbose) {message("Fitting model...")}
+    model <- do.call(zinbwave::zinbFit, args.list)
+
+    params <- setParams(params, model = model)
+
+    return(params)
+}
diff --git a/R/zinb-simulate.R b/R/zinb-simulate.R
new file mode 100644
index 0000000000000000000000000000000000000000..92e93c5aae1c4608da315c1dbecb44c546965804
--- /dev/null
+++ b/R/zinb-simulate.R
@@ -0,0 +1,74 @@
+#' ZINB-WaVE simulation
+#'
+#' Simulate counts using the ZINB-WaVE method.
+#'
+#' @param params ZINBParams object containing simulation parameters.
+#' @param verbose logical. Whether to print progress messages
+#' @param ... any additional parameter settings to override what is provided in
+#'        \code{params}.
+#'
+#' @details
+#' This function is just a wrapper around \code{\link[zinbwave]{zinbSim}} that
+#' takes a \code{\link{ZINBParams}}, runs the simulation then converts the
+#' output to a \code{\link[SingleCellExperiment]{SingleCellExperiment}} object.
+#' See \code{\link[zinbwave]{zinbSim}} and the ZINB-WaVE paper for
+#' more details about how the simulation works.
+#'
+#' @return SingleCellExperiment containing simulated counts
+#'
+#' @references
+#' Campbell K, Yau C. Uncovering genomic trajectories with heterogeneous genetic
+#' and environmental backgrounds across single-cells and populations. bioRxiv
+#' (2017).
+#'
+#' Risso D, Perraudeau F, Gribkova S, Dudoit S, Vert J-P. ZINB-WaVE: A general
+#' and flexible method for signal extraction from single-cell RNA-seq data
+#' bioRxiv (2017).
+#'
+#' Paper: \url{10.1101/125112}
+#'
+#' Code: \url{https://github.com/drisso/zinbwave}
+#'
+#' @examples
+#' sim <- zinbSimulate()
+#'
+#' @export
+#' @importFrom SingleCellExperiment SingleCellExperiment
+zinbSimulate <- function(params = newZINBParams(), verbose = TRUE, ...) {
+
+    checkmate::assertClass(params, "ZINBParams")
+    params <- setParams(params, ...)
+
+    # Get the parameters we are going to use
+    nCells <- getParam(params, "nCells")
+    nGenes <- getParam(params, "nGenes")
+    model <- getParam(params, "model")
+    seed <- getParam(params, "seed")
+
+    if (verbose) {message("Simulating counts...")}
+    zinb.sim <- zinbwave::zinbSim(model, seed)
+
+    if (verbose) {message("Creating final dataset...")}
+    cell.names <- paste0("Cell", seq_len(nCells))
+    gene.names <- paste0("Gene", seq_len(nGenes))
+
+    for (item in c("counts", "dataNB", "dataDropouts")) {
+        rownames(zinb.sim[[item]]) <- gene.names
+        colnames(zinb.sim[[item]]) <- cell.names
+    }
+
+    cells <- data.frame(Cell = cell.names)
+    rownames(cells) <- cell.names
+
+    features <- data.frame(Gene = gene.names)
+    rownames(features) <- gene.names
+
+    sim <- SingleCellExperiment(assays = list(counts = zinb.sim$counts,
+                                              TrueCounts = zinb.sim$dataNB,
+                                              Dropouts = zinb.sim$dataDropouts),
+                                rowData = features,
+                                colData = cells,
+                                metadata = list(params = params))
+
+    return(sim)
+}
diff --git a/README.md b/README.md
index eb68a0acd2965ad82da78c2fef3bab1ae1f5ef8f..fc48816dbe07841eea2f928879ef3aff56200cb2 100644
--- a/README.md
+++ b/README.md
@@ -14,8 +14,8 @@ data. Splatter provides a common interface to multiple simulations that have:
 * Functions for simulating counts using those parameters
 
 Splatter is built on top of [`scater`][scater] and stores simulations in
-`SCESet` objects. Splatter also has functions for comparing simulations and real
-datasets.
+[`SingleCellExperiment`][SCE] objects. Splatter also has functions for comparing
+simulations and real datasets.
 
 ## Installation.
 
@@ -58,8 +58,27 @@ browseVignettes("splatter")
 
 This is a detailed document that introduces the main features of Splatter.
 
+## Citing Splatter
+
+If you use Splatter please cite our paper ["Zappia L, Phipson B, Oshlack A.
+Splatter: Simulation Of Single-Cell RNA Sequencing Data. bioRxiv. 2017;
+doi:10.1101/133173"][preprint].
+
+```
+@Article{,
+    author = {Luke Zappia and Belinda Phipson and Alicia Oshlack},
+    title = {Splatter: Simulation Of Single-Cell RNA Sequencing Data},
+    journal = {bioRxiv},
+    year = {2017},
+    url = {http://dx.doi.org/10.1101/133173},
+    doi = {10.1101/133173},
+  }
+```
+
 [scater]: https://github.com/davismcc/scater
+[SCE]: https://github.com/drisso/SingleCellExperiment
 [contrib]: https://github.com/Bioconductor/Contributions/issues/209
 [bioc]: https://bioconductor.org/packages/devel/bioc/html/splatter.html
 [vignette]: https://bioconductor.org/packages/devel/bioc/vignettes/splatter/inst/doc/splatter.html
+[preprint]: http://dx.doi.org/10.1101/133173
 
diff --git a/_pkgdown.yml b/_pkgdown.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5a8f3a7499fc3c12f44f98f77d44b9f271916ced
--- /dev/null
+++ b/_pkgdown.yml
@@ -0,0 +1,91 @@
+title: Splatter
+url: http://oshlack.github.io/splatter
+template:
+  params:
+    bootswatch: cosmo
+    ganalytics: UA-52309538-4
+reference:
+  - title: Parameters
+    desc: Parameters functions and classes
+    contents:
+      - '`newParams`'
+      - '`getParam`'
+      - '`getParams`'
+      - '`setParam`'
+      - '`setParams`'
+      - '`BASiCSParams`'
+      - '`Lun2Params`'
+      - '`LunParams`'
+      - '`MFAParams`'
+      - '`Params`'
+      - '`PhenoParams`'
+      - '`SCDDParams`'
+      - '`SimpleParams`'
+      - '`SplatParams`'
+      - '`ZINBParams`'
+  - title: Estimation
+    desc: Functions for estimating parameters
+    contents:
+      - '`BASiCSEstimate`'
+      - '`lun2Estimate`'
+      - '`lunEstimate`'
+      - '`mfaEstimate`'
+      - '`phenoEstimate`'
+      - '`scDDEstimate`'
+      - '`simpleEstimate`'
+      - '`splatEstBCV`'
+      - '`splatEstDropout`'
+      - '`splatEstimate`'
+      - '`splatEstLib`'
+      - '`splatEstMean`'
+      - '`splatEstOutlier`'
+      - '`zinbEstimate`'
+  - title: Simulation
+    desc: Functions for simulating datasets
+    contents:
+      - '`BASiCSSimulate`'
+      - '`lun2Simulate`'
+      - '`lunSimulate`'
+      - '`mfaSimulate`'
+      - '`phenoEstimate`'
+      - '`scDDSimulate`'
+      - '`simpleSimulate`'
+      - '`splatSimBatchCellMeans`'
+      - '`splatSimBatchEffects`'
+      - '`splatSimBCVMeans`'
+      - '`splatSimCellMeans`'
+      - '`splatSimDE`'
+      - '`splatSimDropout`'
+      - '`splatSimGeneMeans`'
+      - '`splatSimLibSizes`'
+      - '`splatSimTrueCounts`'
+      - '`splatSimulate`'
+      - '`zinbSimulate`'
+  - title: Comparison functions
+    desc: Functions for comparing datasets
+    contents:
+      - '`compareSCEs`'
+      - '`diffSCEs`'
+      - '`makeCompPanel`'
+      - '`makeDiffPanel`'
+      - '`makeOverallPanel`'
+      - '`summariseDiff`'
+  - title: Other exported functions
+    desc: Additional functions exported by Splatter
+    contents:
+      - '`addFeatureStats`'
+      - '`addGeneLengths`'
+      - '`listSims`'
+  - title: Internals
+    desc: Internal functions and helpers
+    contents:
+      - '`bridge`'
+      - '`expandParams`'
+      - '`getLNormFactors`'
+      - '`getPathOrder`'
+      - '`logistic`'
+      - '`rbindMatched`'
+      - '`setParamsUnchecked`'
+      - '`setParamUnchecked`'
+      - '`showPP`'
+      - '`winsorize`'
diff --git a/docs/LICENSE.html b/docs/LICENSE.html
new file mode 100644
index 0000000000000000000000000000000000000000..7cf011b57078dcbeefdc53c607d081e60f065336
--- /dev/null
+++ b/docs/LICENSE.html
@@ -0,0 +1,798 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>License • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="pkgdown.css" rel="stylesheet">
+<script src="jquery.sticky-kit.min.js"></script>
+<script src="pkgdown.js"></script>
+  <link href="extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-license">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="/index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="contents col-md-12">
+    <div class="page-header">
+      <h1>License</h1>
+    </div>
+
+<pre>                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  &quot;This License&quot; refers to version 3 of the GNU General Public License.
+
+  &quot;Copyright&quot; also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  &quot;The Program&quot; refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as &quot;you&quot;.  &quot;Licensees&quot; and
+&quot;recipients&quot; may be individuals or organizations.
+
+  To &quot;modify&quot; a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a &quot;modified version&quot; of the
+earlier work or a work &quot;based on&quot; the earlier work.
+
+  A &quot;covered work&quot; means either the unmodified Program or a work based
+on the Program.
+
+  To &quot;propagate&quot; a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To &quot;convey&quot; a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays &quot;Appropriate Legal Notices&quot;
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The &quot;source code&quot; for a work means the preferred form of the work
+for making modifications to it.  &quot;Object code&quot; means any non-source
+form of a work.
+
+  A &quot;Standard Interface&quot; means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The &quot;System Libraries&quot; of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+&quot;Major Component&quot;, in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The &quot;Corresponding Source&quot; for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    &quot;keep intact all notices&quot;.
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+&quot;aggregate&quot; if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A &quot;User Product&quot; is either (1) a &quot;consumer product&quot;, which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, &quot;normally used&quot; refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  &quot;Installation Information&quot; for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  &quot;Additional permissions&quot; are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered &quot;further
+restrictions&quot; within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An &quot;entity transaction&quot; is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A &quot;contributor&quot; is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's &quot;contributor version&quot;.
+
+  A contributor's &quot;essential patent claims&quot; are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, &quot;control&quot; includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a &quot;patent license&quot; is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To &quot;grant&quot; such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  &quot;Knowingly relying&quot; means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is &quot;discriminatory&quot; if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License &quot;or any later version&quot; applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the &quot;copyright&quot; line and a pointer to where the full notice is found.
+
+    {one line to give the program's name and a brief idea of what it does.}
+    Copyright (C) {year}  {name of author}
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    {project}  Copyright (C) {year}  {fullname}
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an &quot;about box&quot;.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a &quot;copyright disclaimer&quot; for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+&lt;http://www.gnu.org/licenses/&gt;.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+&lt;http://www.gnu.org/philosophy/why-not-lgpl.html&gt;.
+</pre>
+
+  </div>
+
+</div>
+
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/articles/index.html b/docs/articles/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..0397c06a5453ca4d43d67d852a1cd9949e45d261
--- /dev/null
+++ b/docs/articles/index.html
@@ -0,0 +1,128 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Articles • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-vignette-index">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="page-header">
+  <h1>Articles <small>version&nbsp;1.1.8</small></h1>
+</div>
+
+<div class="row">
+  <div class="col-md-9">
+    <div class="section ">
+      <h3>All vignettes</h3>
+      <p class="section-desc"></p>
+
+      <ul>
+        <li><a href="splatter.html">Introduction to Splatter</a></li>
+      </ul>
+    </div>
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/articles/splatter-logo-small.png b/docs/articles/splatter-logo-small.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd78c46e70f630623a5916269309b09f5f438e0b
Binary files /dev/null and b/docs/articles/splatter-logo-small.png differ
diff --git a/docs/articles/splatter.html b/docs/articles/splatter.html
new file mode 100644
index 0000000000000000000000000000000000000000..e0d8ac2b787a46c2c758fdce42ee98b38aabb6e8
--- /dev/null
+++ b/docs/articles/splatter.html
@@ -0,0 +1,1011 @@
+<!DOCTYPE html>
+<!-- Generated by pkgdown: do not edit by hand --><html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Introduction to Splatter • Splatter</title>
+<!-- jquery --><script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script><!-- Font Awesome icons --><link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+<!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet">
+<!-- mathjax --><script src="https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]--><!-- Google analytics --><script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+<body>
+    <div class="container template-vignette">
+      <header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+<li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+<ul class="nav navbar-nav navbar-right">
+<li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+</div>
+<!--/.nav-collapse -->
+  </div>
+<!--/.container -->
+</div>
+<!--/.navbar -->
+
+      
+      </header><div class="row">
+  <div class="col-md-9">
+    <div class="page-header toc-ignore">
+      <h1>Introduction to Splatter</h1>
+                        <h4 class="author">Luke Zappia</h4>
+            
+            <h4 class="date">2017-10-13</h4>
+          </div>
+
+    
+    
+<div class="contents">
+<div class="figure">
+<img src="splatter-logo-small.png" alt="Splatter logo"><p class="caption">Splatter logo</p>
+</div>
+<p>Welcome to Splatter! Splatter is an R package for the simple simulation of single-cell RNA sequencing data. This vignette gives an overview and introduction to Splatter’s functionality.</p>
+<div id="installation" class="section level1">
+<h1 class="hasAnchor">
+<a href="#installation" class="anchor"></a>Installation</h1>
+<p>Splatter can be installed from Bioconductor:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">source</span>(<span class="st">"https://bioconductor.org/biocLite.R"</span>)
+<span class="kw">biocLite</span>(<span class="st">"splatter"</span>)</code></pre></div>
+<p>To install the most recent development version from Github use:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">biocLite</span>(<span class="st">"Oshlack/splatter"</span>, <span class="dt">dependencies =</span> <span class="ot">TRUE</span>, 
+         <span class="dt">build_vignettes =</span> <span class="ot">TRUE</span>)</code></pre></div>
+</div>
+<div id="quickstart" class="section level1">
+<h1 class="hasAnchor">
+<a href="#quickstart" class="anchor"></a>Quickstart</h1>
+<p>Assuming you already have a matrix of count data similar to that you wish to simulate there are two simple steps to creating a simulated data set with Splatter. Here is an example using the example dataset in the <code>scater</code> package:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Load package</span>
+<span class="kw">library</span>(splatter)</code></pre></div>
+<pre><code>## Loading required package: scater</code></pre>
+<pre><code>## Loading required package: Biobase</code></pre>
+<pre><code>## Loading required package: BiocGenerics</code></pre>
+<pre><code>## Loading required package: parallel</code></pre>
+<pre><code>## 
+## Attaching package: 'BiocGenerics'</code></pre>
+<pre><code>## The following objects are masked from 'package:parallel':
+## 
+##     clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
+##     clusterExport, clusterMap, parApply, parCapply, parLapply,
+##     parLapplyLB, parRapply, parSapply, parSapplyLB</code></pre>
+<pre><code>## The following objects are masked from 'package:stats':
+## 
+##     IQR, mad, sd, var, xtabs</code></pre>
+<pre><code>## The following objects are masked from 'package:base':
+## 
+##     anyDuplicated, append, as.data.frame, cbind, colMeans,
+##     colnames, colSums, do.call, duplicated, eval, evalq, Filter,
+##     Find, get, grep, grepl, intersect, is.unsorted, lapply,
+##     lengths, Map, mapply, match, mget, order, paste, pmax,
+##     pmax.int, pmin, pmin.int, Position, rank, rbind, Reduce,
+##     rowMeans, rownames, rowSums, sapply, setdiff, sort, table,
+##     tapply, union, unique, unsplit, which, which.max, which.min</code></pre>
+<pre><code>## Welcome to Bioconductor
+## 
+##     Vignettes contain introductory material; view with
+##     'browseVignettes()'. To cite Bioconductor, see
+##     'citation("Biobase")', and for packages 'citation("pkgname")'.</code></pre>
+<pre><code>## Loading required package: ggplot2</code></pre>
+<pre><code>## Loading required package: SingleCellExperiment</code></pre>
+<pre><code>## Loading required package: SummarizedExperiment</code></pre>
+<pre><code>## Loading required package: GenomicRanges</code></pre>
+<pre><code>## Loading required package: stats4</code></pre>
+<pre><code>## Loading required package: S4Vectors</code></pre>
+<pre><code>## 
+## Attaching package: 'S4Vectors'</code></pre>
+<pre><code>## The following object is masked from 'package:base':
+## 
+##     expand.grid</code></pre>
+<pre><code>## Loading required package: IRanges</code></pre>
+<pre><code>## Loading required package: GenomeInfoDb</code></pre>
+<pre><code>## Loading required package: DelayedArray</code></pre>
+<pre><code>## Loading required package: matrixStats</code></pre>
+<pre><code>## 
+## Attaching package: 'matrixStats'</code></pre>
+<pre><code>## The following objects are masked from 'package:Biobase':
+## 
+##     anyMissing, rowMedians</code></pre>
+<pre><code>## 
+## Attaching package: 'DelayedArray'</code></pre>
+<pre><code>## The following objects are masked from 'package:matrixStats':
+## 
+##     colMaxs, colMins, colRanges, rowMaxs, rowMins, rowRanges</code></pre>
+<pre><code>## The following object is masked from 'package:base':
+## 
+##     apply</code></pre>
+<pre><code>## 
+## Attaching package: 'scater'</code></pre>
+<pre><code>## The following object is masked from 'package:S4Vectors':
+## 
+##     rename</code></pre>
+<pre><code>## The following object is masked from 'package:stats':
+## 
+##     filter</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Load example data</span>
+<span class="kw">data</span>(<span class="st">"sc_example_counts"</span>)
+<span class="co"># Estimate parameters from example data</span>
+params &lt;-<span class="st"> </span><span class="kw"><a href="../reference/splatEstimate.html">splatEstimate</a></span>(sc_example_counts)
+<span class="co"># Simulate data using estimated parameters</span>
+sim &lt;-<span class="st"> </span><span class="kw"><a href="../reference/splatSimulate.html">splatSimulate</a></span>(params, <span class="dt">dropout.present =</span> <span class="ot">FALSE</span>)</code></pre></div>
+<pre><code>## Getting parameters...</code></pre>
+<pre><code>## Creating simulation object...</code></pre>
+<pre><code>## Simulating library sizes...</code></pre>
+<pre><code>## Simulating gene means...</code></pre>
+<pre><code>## Simulating BCV...</code></pre>
+<pre><code>## Simulating counts..</code></pre>
+<pre><code>## Simulating dropout (if needed)...</code></pre>
+<pre><code>## Done!</code></pre>
+<p>These steps will be explained in detail in the following sections but briefly the first step takes a dataset and estimates simulation parameters from it and the second step takes those parameters and simulates a new dataset.</p>
+</div>
+<div id="the-splat-simulation" class="section level1">
+<h1 class="hasAnchor">
+<a href="#the-splat-simulation" class="anchor"></a>The Splat simulation</h1>
+<p>Before we look at how we estimate parameters let’s first look at how Splatter simulates data and what those parameters are. We use the term ‘Splat’ to refer to the Splatter’s own simulation and differentiate it from the package itself. The core of the Splat model is a gamma-Poisson distribution used to generate a gene by cell matrix of counts. Mean expression levels for each gene are simulated from a <a href="https://en.wikipedia.org/wiki/Gamma_distribution">gamma distribution</a> and the Biological Coefficient of Variation is used to enforce a mean-variance trend before counts are simulated from a <a href="https://en.wikipedia.org/wiki/Poisson_distribution">Poisson distribution</a>. Splat also allows you to simulate expression outlier genes (genes with mean expression outside the gamma distribution) and dropout (random knock out of counts based on mean expression). Each cell is given an expected library size (simulated from a log-normal distribution) that makes it easier to match to a given dataset.</p>
+<p>Splat can also simulate differential expression between groups of different types of cells or differentiation paths between different cells types where expression changes in a continuous way. These are described further in the <a href="#simulating-counts">simulating counts</a> section.</p>
+<div id="parameters" class="section level2">
+<h2 class="hasAnchor">
+<a href="#parameters" class="anchor"></a>Parameters</h2>
+<p>The parameters required for the Splat simulation are briefly described here:</p>
+<ul>
+<li>
+<strong>Global parameters</strong>
+<ul>
+<li>
+<code>nGenes</code> - The number of genes to simulate.</li>
+<li>
+<code>nCells</code> - The number of cells to simulate.</li>
+<li>
+<code>seed</code> - Seed to use for generating random numbers.</li>
+</ul>
+</li>
+<li>
+<strong>Batch parameters</strong>
+<ul>
+<li>
+<code>nBatches</code> - The number of batches to simulate.</li>
+<li>
+<code>batchCells</code> - The number of cells in each batch.</li>
+<li>
+<code>batch.facLoc</code> - Location (meanlog) parameter for the batch effects factor log-normal distribution.</li>
+<li>
+<code>batch.facScale</code> - Scale (sdlog) parameter for the batch effects factor log-normal distribution.</li>
+</ul>
+</li>
+<li>
+<strong>Mean parameters</strong>
+<ul>
+<li>
+<code>mean.shape</code> - Shape parameter for the mean gamma distribution.</li>
+<li>
+<code>mean.rate</code> - Rate parameter for the mean gamma distribution.</li>
+</ul>
+</li>
+<li>
+<strong>Library size parameters</strong>
+<ul>
+<li>
+<code>lib.loc</code> - Location (meanlog) parameter for the library size log-normal distribution.</li>
+<li>
+<code>lib.scale</code> - Scale (sdlog) parameter for the library size log-normal distribution.</li>
+</ul>
+</li>
+<li>
+<strong>Expression outlier parameters</strong>
+<ul>
+<li>
+<code>out.prob</code> - Probability that a gene is an expression outlier.</li>
+<li>
+<code>out.facLoc</code> - Location (meanlog) parameter for the expression outlier factor log-normal distribution.</li>
+<li>
+<code>out.facScale</code> - Scale (sdlog) parameter for the expression outlier factor log-normal distribution.</li>
+</ul>
+</li>
+<li>
+<strong>Group parameters</strong>
+<ul>
+<li>
+<code>nGroups</code> - The number of groups or paths to simulate.</li>
+<li>
+<code>group.prob</code> - The probabilities that cells come from particular groups.</li>
+</ul>
+</li>
+<li>
+<strong>Differential expression parameters</strong>
+<ul>
+<li>
+<code>de.prob</code> - Probability that a gene is differentially expressed in each group or path.</li>
+<li>
+<code>de.loProb</code> - Probability that a differentially expressed gene is down-regulated.</li>
+<li>
+<code>de.facLoc</code> - Location (meanlog) parameter for the differential expression factor log-normal distribution.</li>
+<li>
+<code>de.facScale</code> - Scale (sdlog) parameter for the differential expression factor log-normal distribution.</li>
+</ul>
+</li>
+<li>
+<strong>Biological Coefficient of Variation parameters</strong>
+<ul>
+<li>
+<code>bcv.common</code> - Underlying common dispersion across all genes.</li>
+<li>
+<code>bcv.df</code> - Degrees of Freedom for the BCV inverse chi-squared distribution.</li>
+</ul>
+</li>
+<li>
+<strong>Dropout parameters</strong>
+<ul>
+<li>
+<code>dropout.present</code> - Logical. Whether to simulate dropout.</li>
+<li>
+<code>dropout.mid</code> - Midpoint parameter for the dropout logistic function.</li>
+<li>
+<code>dropout.shape</code> - Shape parameter for the dropout logistic function.</li>
+</ul>
+</li>
+<li>
+<strong>Differentiation path parameters</strong>
+<ul>
+<li>
+<code>path.from</code> - Vector giving the originating point of each path.</li>
+<li>
+<code>path.length</code> - Vector giving the number of steps to simulate along each path.</li>
+<li>
+<code>path.skew</code> - Vector giving the skew of each path.</li>
+<li>
+<code>path.nonlinearProb</code> - Probability that a gene changes expression in a non-linear way along the differentiation path.</li>
+<li>
+<code>path.sigmaFac</code> - Sigma factor for non-linear gene paths.</li>
+</ul>
+</li>
+</ul>
+<p>While this may look like a lot of parameters Splatter attempts to make it easy for the user, both by providing sensible defaults and making it easy to estimate many of the parameters from real data. For more details on the parameters see <code><a href="../reference/SplatParams.html">?SplatParams</a></code>.</p>
+</div>
+</div>
+<div id="the-splatparams-object" class="section level1">
+<h1 class="hasAnchor">
+<a href="#the-splatparams-object" class="anchor"></a>The <code>SplatParams</code> object</h1>
+<p>All the parameters for the Splat simulation are stored in a <code>SplatParams</code> object. Let’s create a new one and see what it looks like.</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">params &lt;-<span class="st"> </span><span class="kw"><a href="../reference/newParams.html">newSplatParams</a></span>()
+params</code></pre></div>
+<pre><code>## A Params object of class SplatParams 
+## Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+## 
+## Global: 
+## (Genes)  (Cells)   [Seed]  
+##   10000      100   237407  
+## 
+## 27 additional parameters 
+## 
+## Batches: 
+##     [Batches]  [Batch Cells]     [Location]        [Scale]  
+##             1            100            0.1            0.1  
+## 
+## Mean: 
+##  (Rate)  (Shape)  
+##     0.3      0.6  
+## 
+## Library size: 
+## (Location)     (Scale)  
+##         11         0.2  
+## 
+## Exprs outliers: 
+## (Probability)     (Location)        (Scale)  
+##          0.05              4            0.5  
+## 
+## Groups: 
+##      [Groups]  [Group Probs]  
+##             1              1  
+## 
+## Diff expr: 
+## [Probability]    [Down Prob]     [Location]        [Scale]  
+##           0.1            0.5            0.1            0.4  
+## 
+## BCV: 
+## (Common Disp)          (DoF)  
+##           0.1             60  
+## 
+## Dropout: 
+##  [Present]  (Midpoint)     (Shape)  
+##      FALSE           0          -1  
+## 
+## Paths: 
+##         [From]        [Length]          [Skew]    [Non-linear]  
+##              0             100             0.5             0.1  
+## [Sigma Factor]  
+##            0.8</code></pre>
+<p>As well as telling us what type of object we have (“A <code>Params</code> object of class <code>SplatParams</code>”) and showing us the values of the parameter this output gives us some extra information. We can see which parameters can be estimated by the <code>splatEstimate</code> function (those in parentheses), which can’t be estimated (those in brackets) and which have been changed from their default values (those in ALL CAPS).</p>
+<div id="getting-and-setting" class="section level2">
+<h2 class="hasAnchor">
+<a href="#getting-and-setting" class="anchor"></a>Getting and setting</h2>
+<p>If we want to look at a particular parameter, for example the number of genes to simulate, we can extract it using the <code>getParam</code> function:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw"><a href="../reference/getParam.html">getParam</a></span>(params, <span class="st">"nGenes"</span>)</code></pre></div>
+<pre><code>## [1] 10000</code></pre>
+<p>Alternatively, to give a parameter a new value we can use the <code>setParam</code> function:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">params &lt;-<span class="st"> </span><span class="kw"><a href="../reference/setParam.html">setParam</a></span>(params, <span class="st">"nGenes"</span>, <span class="dv">5000</span>)
+<span class="kw"><a href="../reference/getParam.html">getParam</a></span>(params, <span class="st">"nGenes"</span>)</code></pre></div>
+<pre><code>## [1] 5000</code></pre>
+<p>If we want to extract multiple parameters (as a list) or set multiple parameters we can use the <code>getParams</code> or <code>setParams</code> functions:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Set multiple parameters at once (using a list)</span>
+params &lt;-<span class="st"> </span><span class="kw"><a href="../reference/setParams.html">setParams</a></span>(params, <span class="dt">update =</span> <span class="kw">list</span>(<span class="dt">nGenes =</span> <span class="dv">8000</span>, <span class="dt">mean.rate =</span> <span class="fl">0.5</span>))
+<span class="co"># Extract multiple parameters as a list</span>
+<span class="kw"><a href="../reference/getParams.html">getParams</a></span>(params, <span class="kw">c</span>(<span class="st">"nGenes"</span>, <span class="st">"mean.rate"</span>, <span class="st">"mean.shape"</span>))</code></pre></div>
+<pre><code>## $nGenes
+## [1] 8000
+## 
+## $mean.rate
+## [1] 0.5
+## 
+## $mean.shape
+## [1] 0.6</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Set multiple parameters at once (using additional arguments)</span>
+params &lt;-<span class="st"> </span><span class="kw"><a href="../reference/setParams.html">setParams</a></span>(params, <span class="dt">mean.shape =</span> <span class="fl">0.5</span>, <span class="dt">de.prob =</span> <span class="fl">0.2</span>)
+params</code></pre></div>
+<pre><code>## A Params object of class SplatParams 
+## Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+## 
+## Global: 
+## (GENES)  (Cells)   [Seed]  
+##    8000      100   237407  
+## 
+## 27 additional parameters 
+## 
+## Batches: 
+##     [Batches]  [Batch Cells]     [Location]        [Scale]  
+##             1            100            0.1            0.1  
+## 
+## Mean: 
+##  (RATE)  (SHAPE)  
+##     0.5      0.5  
+## 
+## Library size: 
+## (Location)     (Scale)  
+##         11         0.2  
+## 
+## Exprs outliers: 
+## (Probability)     (Location)        (Scale)  
+##          0.05              4            0.5  
+## 
+## Groups: 
+##      [Groups]  [Group Probs]  
+##             1              1  
+## 
+## Diff expr: 
+## [PROBABILITY]    [Down Prob]     [Location]        [Scale]  
+##           0.2            0.5            0.1            0.4  
+## 
+## BCV: 
+## (Common Disp)          (DoF)  
+##           0.1             60  
+## 
+## Dropout: 
+##  [Present]  (Midpoint)     (Shape)  
+##      FALSE           0          -1  
+## 
+## Paths: 
+##         [From]        [Length]          [Skew]    [Non-linear]  
+##              0             100             0.5             0.1  
+## [Sigma Factor]  
+##            0.8</code></pre>
+<p>The parameters with have changed are now shown in ALL CAPS to indicate that they been changed form the default.</p>
+<p>We can also set parameters directly when we call <code>newSplatParams</code>:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">params &lt;-<span class="st"> </span><span class="kw"><a href="../reference/newParams.html">newSplatParams</a></span>(<span class="dt">lib.loc =</span> <span class="dv">12</span>, <span class="dt">lib.scale =</span> <span class="fl">0.6</span>)
+<span class="kw"><a href="../reference/getParams.html">getParams</a></span>(params, <span class="kw">c</span>(<span class="st">"lib.loc"</span>, <span class="st">"lib.scale"</span>))</code></pre></div>
+<pre><code>## $lib.loc
+## [1] 12
+## 
+## $lib.scale
+## [1] 0.6</code></pre>
+</div>
+</div>
+<div id="estimating-parameters" class="section level1">
+<h1 class="hasAnchor">
+<a href="#estimating-parameters" class="anchor"></a>Estimating parameters</h1>
+<p>Splat allows you to estimate many of it’s parameters from a data set containing counts using the <code>splatEstimate</code> function.</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Check that sc_example counts is an integer matrix</span>
+<span class="kw">class</span>(sc_example_counts)</code></pre></div>
+<pre><code>## [1] "matrix"</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">typeof</span>(sc_example_counts)</code></pre></div>
+<pre><code>## [1] "integer"</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Check the dimensions, each row is a gene, each column is a cell</span>
+<span class="kw">dim</span>(sc_example_counts)</code></pre></div>
+<pre><code>## [1] 2000   40</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Show the first few entries</span>
+sc_example_counts[<span class="dv">1</span><span class="op">:</span><span class="dv">5</span>, <span class="dv">1</span><span class="op">:</span><span class="dv">5</span>]</code></pre></div>
+<pre><code>##           Cell_001 Cell_002 Cell_003 Cell_004 Cell_005
+## Gene_0001        0      123        2        0        0
+## Gene_0002      575       65        3     1561     2311
+## Gene_0003        0        0        0        0     1213
+## Gene_0004        0        1        0        0        0
+## Gene_0005        0        0       11        0        0</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">params &lt;-<span class="st"> </span><span class="kw"><a href="../reference/splatEstimate.html">splatEstimate</a></span>(sc_example_counts)</code></pre></div>
+<p>Here we estimated parameters from a counts matrix but <code>splatEstimate</code> can also take a <code>SingleCellExperiment</code> object. The estimation process has the following steps:</p>
+<ol style="list-style-type: decimal">
+<li>Mean parameters are estimated by fitting a gamma distribution to the mean expression levels.</li>
+<li>Library size parameters are estimated by fitting a log-normal distribution to the library sizes.</li>
+<li>Expression outlier parameters are estimated by determining the number of outliers and fitting a log-normal distribution to their difference from the median.</li>
+<li>BCV parameters are estimated using the <code>estimateDisp</code> function from the <code>edgeR</code> package.</li>
+<li>Dropout parameters are estimated by checking if dropout is present and fitting a logistic function to the relationship between mean expression and proportion of zeros.</li>
+</ol>
+<p>For more details of the estimation procedures see <code><a href="../reference/splatEstimate.html">?splatEstimate</a></code>.</p>
+</div>
+<div id="simulating-counts" class="section level1">
+<h1 class="hasAnchor">
+<a href="#simulating-counts" class="anchor"></a>Simulating counts</h1>
+<p>Once we have a set of parameters we are happy with we can use <code>splatSimulate</code> to simulate counts. If we want to make small adjustments to the parameters we can provide them as additional arguments, alternatively if we don’t supply any parameters the defaults will be used:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">sim &lt;-<span class="st"> </span><span class="kw"><a href="../reference/splatSimulate.html">splatSimulate</a></span>(params, <span class="dt">nGenes =</span> <span class="dv">1000</span>, <span class="dt">dropout.present =</span> <span class="ot">FALSE</span>)</code></pre></div>
+<pre><code>## Getting parameters...</code></pre>
+<pre><code>## Creating simulation object...</code></pre>
+<pre><code>## Simulating library sizes...</code></pre>
+<pre><code>## Simulating gene means...</code></pre>
+<pre><code>## Simulating BCV...</code></pre>
+<pre><code>## Simulating counts..</code></pre>
+<pre><code>## Simulating dropout (if needed)...</code></pre>
+<pre><code>## Done!</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">sim</code></pre></div>
+<pre><code>## class: SingleCellExperiment 
+## dim: 1000 40 
+## metadata(1): params
+## assays(6): BatchCellMeans BaseCellMeans ... TrueCounts counts
+## rownames(1000): Gene1 Gene2 ... Gene999 Gene1000
+## rowData names(4): Gene BaseGeneMean OutlierFactor GeneMean
+## colnames(40): Cell1 Cell2 ... Cell39 Cell40
+## colData names(3): Cell Batch ExpLibSize
+## reducedDimNames(0):
+## spikeNames(0):</code></pre>
+<p>Looking at the output of <code>splatSimulate</code> we can see that <code>sim</code> is <code>SingleCellExperiment</code> object with 1000 features (genes) and 40 samples (cells). The main part of this object is a features by samples matrix containing the simulated counts (accessed using <code>counts</code>), although it can also hold other expression measures such as FPKM or TPM. Additionaly a <code>SingleCellExperiment</code> contains phenotype information about each cell (accessed using <code>colData</code>) and feature information about each gene (accessed using <code>rowData</code>). Splatter uses these slots, as well as <code>assays</code>, to store information about the intermediate values of the simulation.</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Access the counts</span>
+<span class="kw">counts</span>(sim)[<span class="dv">1</span><span class="op">:</span><span class="dv">5</span>, <span class="dv">1</span><span class="op">:</span><span class="dv">5</span>]</code></pre></div>
+<pre><code>##       Cell1 Cell2 Cell3 Cell4 Cell5
+## Gene1   208     2     0     0     0
+## Gene2    48     0     0     0     0
+## Gene3     0     0     0   240     0
+## Gene4     0     0    12   626     0
+## Gene5    58     0    47     0     0</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Information about genes</span>
+<span class="kw">head</span>(<span class="kw">rowData</span>(sim))</code></pre></div>
+<pre><code>## DataFrame with 6 rows and 4 columns
+##       Gene BaseGeneMean OutlierFactor    GeneMean
+##   &lt;factor&gt;    &lt;numeric&gt;     &lt;numeric&gt;   &lt;numeric&gt;
+## 1    Gene1   8.84938916             1  8.84938916
+## 2    Gene2   2.09254274             1  2.09254274
+## 3    Gene3  76.54642638             1 76.54642638
+## 4    Gene4  48.29447650             1 48.29447650
+## 5    Gene5   8.38049805             1  8.38049805
+## 6    Gene6   0.03711706             1  0.03711706</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Information about cells</span>
+<span class="kw">head</span>(<span class="kw">colData</span>(sim))</code></pre></div>
+<pre><code>## DataFrame with 6 rows and 3 columns
+##           Cell       Batch ExpLibSize
+##       &lt;factor&gt; &lt;character&gt;  &lt;numeric&gt;
+## Cell1    Cell1      Batch1   369673.5
+## Cell2    Cell2      Batch1   837884.1
+## Cell3    Cell3      Batch1   211900.0
+## Cell4    Cell4      Batch1   469342.1
+## Cell5    Cell5      Batch1   358101.8
+## Cell6    Cell6      Batch1   984061.6</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Gene by cell matrices</span>
+<span class="kw">names</span>(<span class="kw">assays</span>(sim))</code></pre></div>
+<pre><code>## [1] "BatchCellMeans" "BaseCellMeans"  "BCV"            "CellMeans"     
+## [5] "TrueCounts"     "counts"</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Example of cell means matrix</span>
+<span class="kw">assays</span>(sim)<span class="op">$</span>CellMeans[<span class="dv">1</span><span class="op">:</span><span class="dv">5</span>, <span class="dv">1</span><span class="op">:</span><span class="dv">5</span>]</code></pre></div>
+<pre><code>##              Cell1        Cell2        Cell3        Cell4        Cell5
+## Gene1 1.777352e+02 6.087412e-01 6.358857e-17 5.040406e-01 3.086920e-06
+## Gene2 5.735710e+01 8.038331e-06 1.675001e-06 9.275255e-02 5.368496e-08
+## Gene3 1.307104e-03 4.675363e-09 7.657201e-20 2.453874e+02 1.578852e+00
+## Gene4 2.107991e-04 1.060652e-03 1.201788e+01 6.365346e+02 5.394848e-17
+## Gene5 6.441256e+01 8.666657e-05 4.797971e+01 9.699099e-08 8.152520e-15</code></pre>
+<p>An additional (big) advantage of outputting a <code>SingleCellExperiment</code> is that we get immediate access to other analysis packages, such as the plotting functions in <code>scater</code>. For example we can make a PCA plot:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">plotPCA</span>(sim, <span class="dt">exprs_values =</span> <span class="st">"counts"</span>)</code></pre></div>
+<p><img src="splatter_files/figure-html/pca-1.png" width="576" style="display: block; margin: auto;"></p>
+<p>(<strong>NOTE:</strong> Your values and plots may look different as the simulation is random and produces different results each time it is run.)</p>
+<p>For more details about the <code>SingleCellExperiment</code> object refer to the <a href="https://bioconductor.org/packages/devel/bioc/vignettes/SingleCellExperiment/inst/doc/intro.html">vignette</a>. For information about what you can do with <code>scater</code> refer to the <code>scater</code> documentation and <a href="https://bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/vignette.html">vignette</a>.</p>
+<p>The <code>splatSimulate</code> function outputs the following additional information about the simulation:</p>
+<ul>
+<li>
+<strong>Cell information (<code>pData</code>)</strong>
+<ul>
+<li>
+<code>Cell</code> - Unique cell identifier.</li>
+<li>
+<code>Group</code> - The group or path the cell belongs to.</li>
+<li>
+<code>ExpLibSize</code> - The expected library size for that cell.</li>
+<li>
+<code>Step</code> (paths only) - How far along the path each cell is.</li>
+</ul>
+</li>
+<li>
+<strong>Gene information (<code>fData</code>)</strong>
+<ul>
+<li>
+<code>Gene</code> - Unique gene identifier.</li>
+<li>
+<code>BaseGeneMean</code> - The base expression level for that gene.</li>
+<li>
+<code>OutlierFactor</code> - Expression outlier factor for that gene (1 is not an outlier).</li>
+<li>
+<code>GeneMean</code> - Expression level after applying outlier factors.</li>
+<li>
+<code>DEFac[Group]</code> - The differential expression factor for each gene in a particular group (1 is not differentially expressed).</li>
+<li>
+<code>GeneMean[Group]</code> - Expression level of a gene in a particular group after applying differential expression factors.</li>
+</ul>
+</li>
+<li>
+<strong>Gene by cell information (<code>assayData</code>)</strong>
+<ul>
+<li>
+<code>BaseCellMeans</code> - The expression of genes in each cell adjusted for expected library size.</li>
+<li>
+<code>BCV</code> - The Biological Coefficient of Variation for each gene in each cell.</li>
+<li>
+<code>CellMeans</code> - The expression level of genes in each cell adjusted for BCV.</li>
+<li>
+<code>TrueCounts</code> - The simulated counts before dropout.</li>
+<li>
+<code>Dropout</code> - Logical matrix showing which counts have been dropped in which cells.</li>
+</ul>
+</li>
+</ul>
+<p>Values that have been added by Splatter are named using <code>UpperCamelCase</code> to separate them from the <code>underscore_naming</code> used by <code>scater</code> and other packages. For more information on the simulation see <code><a href="../reference/splatSimulate.html">?splatSimulate</a></code>.</p>
+<div id="simulating-groups" class="section level2">
+<h2 class="hasAnchor">
+<a href="#simulating-groups" class="anchor"></a>Simulating groups</h2>
+<p>So far we have only simulated a single population of cells but often we are interested in investigating a mixed population of cells and looking to see what cell types are present or what differences there are between them. Splatter is able to simulate these situations by changing the <code>method</code> argument Here we are going to simulate two groups, by specifying the <code>group.prob</code> parameter and setting the <code>method</code> parameter to <code>"groups"</code>:</p>
+<p>(<strong>NOTE:</strong> We have also set the <code>verbose</code> argument to <code>FALSE</code> to stop Splatter printing progress messages.)</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">sim.groups &lt;-<span class="st"> </span><span class="kw"><a href="../reference/splatSimulate.html">splatSimulate</a></span>(<span class="dt">group.prob =</span> <span class="kw">c</span>(<span class="fl">0.5</span>, <span class="fl">0.5</span>), <span class="dt">method =</span> <span class="st">"groups"</span>,
+                            <span class="dt">verbose =</span> <span class="ot">FALSE</span>)
+<span class="kw">plotPCA</span>(sim.groups, <span class="dt">colour_by =</span> <span class="st">"Group"</span>, <span class="dt">exprs_values =</span> <span class="st">"counts"</span>)</code></pre></div>
+<p><img src="splatter_files/figure-html/groups-1.png" width="576" style="display: block; margin: auto;"></p>
+<p>As we have set both the group probabilites to 0.5 we should get approximately equal numbers of cells in each group (around 50 in this case). If we wanted uneven groups we could set <code>group.prob</code> to any set of probabilites that sum to 1.</p>
+</div>
+<div id="simulating-paths" class="section level2">
+<h2 class="hasAnchor">
+<a href="#simulating-paths" class="anchor"></a>Simulating paths</h2>
+<p>The other situation that is often of interest is a differentiation process where one cell type is changing into another. Splatter approximates this process by simulating a series of steps between two groups and randomly assigning each cell to a step. We can create this kind of simulation using the <code>"paths"</code> method.</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">sim.paths &lt;-<span class="st"> </span><span class="kw"><a href="../reference/splatSimulate.html">splatSimulate</a></span>(<span class="dt">method =</span> <span class="st">"paths"</span>, <span class="dt">verbose =</span> <span class="ot">FALSE</span>)
+<span class="kw">plotPCA</span>(sim.paths, <span class="dt">colour_by =</span> <span class="st">"Step"</span>, <span class="dt">exprs_values =</span> <span class="st">"counts"</span>)</code></pre></div>
+<p><img src="splatter_files/figure-html/paths-1.png" width="576" style="display: block; margin: auto;"></p>
+<p>Here the colours represent the “step” of each cell or how far along the differentiation path it is. We can see that the cells with dark colours are more similar to the originating cell type and the light coloured cells are closer to the final, differentiated, cell type. By setting additional parameters it is possible to simulate more complex process (for example multiple mature cell types from a single progenitor).</p>
+</div>
+<div id="batch-effects" class="section level2">
+<h2 class="hasAnchor">
+<a href="#batch-effects" class="anchor"></a>Batch effects</h2>
+<p>Another factor that is important in the analysis of any sequencing experiment are batch effects, technical variation that is common to a set of samples processed at the same time. We apply batch effects by telling Splatter how many cells are in each batch:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">sim.batches &lt;-<span class="st"> </span><span class="kw"><a href="../reference/splatSimulate.html">splatSimulate</a></span>(<span class="dt">batchCells =</span> <span class="kw">c</span>(<span class="dv">50</span>, <span class="dv">50</span>), <span class="dt">verbose =</span> <span class="ot">FALSE</span>)
+<span class="kw">plotPCA</span>(sim.batches, <span class="dt">colour_by =</span> <span class="st">"Batch"</span>, <span class="dt">exprs_values =</span> <span class="st">"counts"</span>)</code></pre></div>
+<p><img src="splatter_files/figure-html/batches-1.png" width="576" style="display: block; margin: auto;"></p>
+<p>This looks at lot like when we simulated groups and that is because the process is very similar. The difference is that batch effects are applied to all genes, not just those that are differentially expressed, and the effects are usually smaller. By combining groups and batches we can simulate both unwanted variation that we aren’t interested in (batch) and the wanted variation we are looking for (group):</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">sim.groups &lt;-<span class="st"> </span><span class="kw"><a href="../reference/splatSimulate.html">splatSimulate</a></span>(<span class="dt">batchCells =</span> <span class="kw">c</span>(<span class="dv">50</span>, <span class="dv">50</span>), <span class="dt">group.prob =</span> <span class="kw">c</span>(<span class="fl">0.5</span>, <span class="fl">0.5</span>),
+                            <span class="dt">method =</span> <span class="st">"groups"</span>, <span class="dt">verbose =</span> <span class="ot">FALSE</span>)
+<span class="kw">plotPCA</span>(sim.groups, <span class="dt">shape_by =</span> <span class="st">"Batch"</span>, <span class="dt">colour_by =</span> <span class="st">"Group"</span>,
+        <span class="dt">exprs_values =</span> <span class="st">"counts"</span>)</code></pre></div>
+<p><img src="splatter_files/figure-html/batch-groups-1.png" width="576" style="display: block; margin: auto;"></p>
+<p>Here we see that the effects of the group (first component) are stronger than the batch effects (second component) but by adjusting the parameters we could made the batch effects dominate.</p>
+</div>
+<div id="convenience-functions" class="section level2">
+<h2 class="hasAnchor">
+<a href="#convenience-functions" class="anchor"></a>Convenience functions</h2>
+<p>Each of the Splatter simulation methods has it’s own convenience function. To simulate a single population use <code><a href="../reference/splatSimulate.html">splatSimulateSingle()</a></code> (equivalent to <code><a href="../reference/splatSimulate.html">splatSimulate(method = "single")</a></code>), to simulate grops use <code><a href="../reference/splatSimulate.html">splatSimulateGroups()</a></code> (equivalent to <code><a href="../reference/splatSimulate.html">splatSimulate(method = "groups")</a></code>) or to simulate paths use <code><a href="../reference/splatSimulate.html">splatSimulatePaths()</a></code> (equivalent to <code><a href="../reference/splatSimulate.html">splatSimulate(method = "paths")</a></code>).</p>
+</div>
+</div>
+<div id="other-simulations" class="section level1">
+<h1 class="hasAnchor">
+<a href="#other-simulations" class="anchor"></a>Other simulations</h1>
+<p>As well as it’s own Splat simulation method the Splatter package contains implementations of other single-cell RNA-seq simulations that have been published or wrappers around simulations included in other packages. To see all the available simulations run the <code><a href="../reference/listSims.html">listSims()</a></code> function:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw"><a href="../reference/listSims.html">listSims</a></span>()</code></pre></div>
+<pre><code>## Splatter currently contains 11 simulations 
+## 
+## Splat (splat) 
+## DOI:      GitHub:  
+## The Splat simulation generates means from a gamma distribution, adjusts them for BCV and generates counts from a gamma-poisson. Dropout and batch effects can be optionally added. 
+## 
+## Splat Single (splatSingle) 
+## DOI:      GitHub:  
+## The Splat simulation with a single population. 
+## 
+## Splat Groups (splatGroups) 
+## DOI:      GitHub:  
+## The Splat simulation with multiple groups. Each group can have it's own differential expression probability and fold change distribution. 
+## 
+## Splat Paths (splatPaths) 
+## DOI:      GitHub:  
+## The Splat simulation with differentiation paths. Each path can have it's own length, skew and probability. Genes can change in non-linear ways. 
+## 
+## Simple (simple) 
+## DOI:      GitHub:  
+## A simple simulation with gamma means and negative binomial counts. 
+## 
+## Lun (lun) 
+## DOI: 10.1186/s13059-016-0947-7    GitHub: MarioniLab/Deconvolution2016 
+## Gamma distributed means and negative binomial counts. Cells are given a size factor and differential expression can be simulated with fixed fold changes. 
+## 
+## Lun 2 (lun2) 
+## DOI: 10.1101/073973   GitHub: MarioniLab/PlateEffects2016 
+## Negative binomial counts where the means and dispersions have been sampled from a real dataset. The core feature of the Lun 2 simulation is the addition of plate effects. Differential expression can be added between two groups of plates and optionally a zero-inflated negative-binomial can be used. 
+## 
+## scDD (scDD) 
+## DOI: 10.1186/s13059-016-1077-y    GitHub: kdkorthauer/scDD 
+## The scDD simulation samples a given dataset and can simulate differentially expressed and differentially distributed genes between two conditions. 
+## 
+## mfa (mfa) 
+## DOI: 10.12688/wellcomeopenres.11087.1     GitHub: kieranrcampbell/mfa 
+## The mfa simulation produces a bifurcating pseudotime trajectory. This can optionally include genes with transient changes in expression and added dropout. 
+## 
+## PhenoPath (pheno) 
+## DOI: 10.1101/159913   GitHub: kieranrcampbell/phenopath 
+## The PhenoPath simulation produces a pseudotime trajectory with different types of genes. 
+## 
+## ZINB-WaVE (zinb) 
+## DOI: 10.1101/125112   GitHub: drisso/zinbwave 
+## The ZINB-WaVE simulation simulates counts from a sophisticated zero-inflated negative-binomial distribution including cell and gene-level covariates.</code></pre>
+<p>(or more conveniently for the vignette as a table)</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">knitr<span class="op">::</span><span class="kw"><a href="http://www.rdocumentation.org/packages/knitr/topics/kable">kable</a></span>(<span class="kw"><a href="../reference/listSims.html">listSims</a></span>(<span class="dt">print =</span> <span class="ot">FALSE</span>))</code></pre></div>
+<table class="table">
+<thead><tr class="header">
+<th align="left">Name</th>
+<th align="left">Prefix</th>
+<th align="left">DOI</th>
+<th align="left">GitHub</th>
+<th align="left">Description</th>
+</tr></thead>
+<tbody>
+<tr class="odd">
+<td align="left">Splat</td>
+<td align="left">splat</td>
+<td align="left"></td>
+<td align="left"></td>
+<td align="left">The Splat simulation generates means from a gamma distribution, adjusts them for BCV and generates counts from a gamma-poisson. Dropout and batch effects can be optionally added.</td>
+</tr>
+<tr class="even">
+<td align="left">Splat Single</td>
+<td align="left">splatSingle</td>
+<td align="left"></td>
+<td align="left"></td>
+<td align="left">The Splat simulation with a single population.</td>
+</tr>
+<tr class="odd">
+<td align="left">Splat Groups</td>
+<td align="left">splatGroups</td>
+<td align="left"></td>
+<td align="left"></td>
+<td align="left">The Splat simulation with multiple groups. Each group can have it’s own differential expression probability and fold change distribution.</td>
+</tr>
+<tr class="even">
+<td align="left">Splat Paths</td>
+<td align="left">splatPaths</td>
+<td align="left"></td>
+<td align="left"></td>
+<td align="left">The Splat simulation with differentiation paths. Each path can have it’s own length, skew and probability. Genes can change in non-linear ways.</td>
+</tr>
+<tr class="odd">
+<td align="left">Simple</td>
+<td align="left">simple</td>
+<td align="left"></td>
+<td align="left"></td>
+<td align="left">A simple simulation with gamma means and negative binomial counts.</td>
+</tr>
+<tr class="even">
+<td align="left">Lun</td>
+<td align="left">lun</td>
+<td align="left">10.1186/s13059-016-0947-7</td>
+<td align="left">MarioniLab/Deconvolution2016</td>
+<td align="left">Gamma distributed means and negative binomial counts. Cells are given a size factor and differential expression can be simulated with fixed fold changes.</td>
+</tr>
+<tr class="odd">
+<td align="left">Lun 2</td>
+<td align="left">lun2</td>
+<td align="left">10.1101/073973</td>
+<td align="left">MarioniLab/PlateEffects2016</td>
+<td align="left">Negative binomial counts where the means and dispersions have been sampled from a real dataset. The core feature of the Lun 2 simulation is the addition of plate effects. Differential expression can be added between two groups of plates and optionally a zero-inflated negative-binomial can be used.</td>
+</tr>
+<tr class="even">
+<td align="left">scDD</td>
+<td align="left">scDD</td>
+<td align="left">10.1186/s13059-016-1077-y</td>
+<td align="left">kdkorthauer/scDD</td>
+<td align="left">The scDD simulation samples a given dataset and can simulate differentially expressed and differentially distributed genes between two conditions.</td>
+</tr>
+<tr class="odd">
+<td align="left">mfa</td>
+<td align="left">mfa</td>
+<td align="left">10.12688/wellcomeopenres.11087.1</td>
+<td align="left">kieranrcampbell/mfa</td>
+<td align="left">The mfa simulation produces a bifurcating pseudotime trajectory. This can optionally include genes with transient changes in expression and added dropout.</td>
+</tr>
+<tr class="even">
+<td align="left">PhenoPath</td>
+<td align="left">pheno</td>
+<td align="left">10.1101/159913</td>
+<td align="left">kieranrcampbell/phenopath</td>
+<td align="left">The PhenoPath simulation produces a pseudotime trajectory with different types of genes.</td>
+</tr>
+<tr class="odd">
+<td align="left">ZINB-WaVE</td>
+<td align="left">zinb</td>
+<td align="left">10.1101/125112</td>
+<td align="left">drisso/zinbwave</td>
+<td align="left">The ZINB-WaVE simulation simulates counts from a sophisticated zero-inflated negative-binomial distribution including cell and gene-level covariates.</td>
+</tr>
+</tbody>
+</table>
+<p>Each simulation has it’s own prefix which gives the name of the functions associated with that simulation. For example the prefix for the simple simulation is <code>simple</code> so it would store it’s parameters in a <code>SimpleParams</code> object that can be created using <code><a href="../reference/newParams.html">newSimpleParams()</a></code> or estimated from real data using <code><a href="../reference/simpleEstimate.html">simpleEstimate()</a></code>. To simulate data using that simulation you would use <code><a href="../reference/simpleSimulate.html">simpleSimulate()</a></code>. Each simulation returns a <code>SingleCellExperiment</code> object with intermediate values similar to that returned by <code><a href="../reference/splatSimulate.html">splatSimulate()</a></code>. For more detailed information on each simulation see the appropriate help page (eg. <code><a href="../reference/simpleSimulate.html">?simpleSimulate</a></code> for information on how the simple simulation works or <code><a href="../reference/lun2Estimate.html">? lun2Estimate</a></code> for details of how the Lun 2 simulation estimates parameters) or refer to the appropriate paper or package.</p>
+</div>
+<div id="other-expression-values" class="section level1">
+<h1 class="hasAnchor">
+<a href="#other-expression-values" class="anchor"></a>Other expression values</h1>
+<p>Splatter is designed to simulate count data but some analysis methods expect other expression values, particularly length-normalised values such as TPM or FPKM. The <code>scater</code> package has functions for adding these values to a <code>SingleCellExperiment</code> object but they require a length for each gene. The <code>addGeneLengths</code> function can be used to simulate these lengths:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">sim &lt;-<span class="st"> </span><span class="kw"><a href="../reference/simpleSimulate.html">simpleSimulate</a></span>(<span class="dt">verbose =</span> <span class="ot">FALSE</span>)
+sim &lt;-<span class="st"> </span><span class="kw"><a href="../reference/addGeneLengths.html">addGeneLengths</a></span>(sim)
+<span class="kw">head</span>(<span class="kw">rowData</span>(sim))</code></pre></div>
+<pre><code>## DataFrame with 6 rows and 3 columns
+##       Gene   GeneMean    Length
+##   &lt;factor&gt;  &lt;numeric&gt; &lt;numeric&gt;
+## 1    Gene1 0.11512934      9592
+## 2    Gene2 1.08395798      1260
+## 3    Gene3 0.07297126      7150
+## 4    Gene4 0.52861074      2131
+## 5    Gene5 2.07154719      1787
+## 6    Gene6 1.48581784       885</code></pre>
+<p>We can then use <code>scater</code> to calculate TPM:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">tpm</span>(sim) &lt;-<span class="st"> </span><span class="kw">calculateTPM</span>(sim, <span class="kw">rowData</span>(sim)<span class="op">$</span>Length)
+<span class="kw">tpm</span>(sim)[<span class="dv">1</span><span class="op">:</span><span class="dv">5</span>, <span class="dv">1</span><span class="op">:</span><span class="dv">5</span>]</code></pre></div>
+<pre><code>##            Cell1      Cell2      Cell3      Cell4      Cell5
+## Gene1 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
+## Gene2 0.06020259 0.00000000 0.05823678 0.00000000 0.11723920
+## Gene3 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
+## Gene4 0.00000000 0.03420037 0.00000000 0.00000000 0.00000000
+## Gene5 0.12734516 0.16313595 0.08212461 0.08100124 0.08266446</code></pre>
+<p>The default method used by <code>addGeneLengths</code> to simulate lengths is to generate values from a log-normal distribution which are then rounded to give an integer length. The parameters for this distribution are based on human protein coding genes but can be adjusted if needed (for example for other species). Alternatively lengths can be sampled from a provided vector (see <code><a href="../reference/addGeneLengths.html">?addGeneLengths</a></code> for details and an example).</p>
+</div>
+<div id="comparing-simulations-and-real-data" class="section level1">
+<h1 class="hasAnchor">
+<a href="#comparing-simulations-and-real-data" class="anchor"></a>Comparing simulations and real data</h1>
+<p>One thing you might like to do after simulating data is to compare it to a real dataset, or compare simulations with different parameters or models. Splatter provides a function <code>compareSCEs</code> that aims to make these comparisons easier. As the name suggests this function takes a list of <code>SingleCellExperiment</code> objects, combines the datasets and produces some plots comparing them. Let’s make two small simulations and see how they compare.</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">sim1 &lt;-<span class="st"> </span><span class="kw"><a href="../reference/splatSimulate.html">splatSimulate</a></span>(<span class="dt">nGenes =</span> <span class="dv">1000</span>, <span class="dt">batchCells =</span> <span class="dv">20</span>, <span class="dt">verbose =</span> <span class="ot">FALSE</span>)
+sim2 &lt;-<span class="st"> </span><span class="kw"><a href="../reference/simpleSimulate.html">simpleSimulate</a></span>(<span class="dt">nGenes =</span> <span class="dv">1000</span>, <span class="dt">nCells =</span> <span class="dv">20</span>, <span class="dt">verbose =</span> <span class="ot">FALSE</span>)
+comparison &lt;-<span class="st"> </span><span class="kw"><a href="../reference/compareSCEs.html">compareSCEs</a></span>(<span class="kw">list</span>(<span class="dt">Splat =</span> sim1, <span class="dt">Simple =</span> sim2))
+
+<span class="kw">names</span>(comparison)</code></pre></div>
+<pre><code>## [1] "FeatureData" "PhenoData"   "Plots"</code></pre>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">names</span>(comparison<span class="op">$</span>Plots)</code></pre></div>
+<pre><code>## [1] "Means"        "Variances"    "MeanVar"      "LibrarySizes"
+## [5] "ZerosGene"    "ZerosCell"    "MeanZeros"</code></pre>
+<p>The returned list has three items. The first two are the combined datasets by gene (<code>FeatureData</code>) and by cell (<code>PhenoData</code>) and the third contains some comparison plots (produced using <code>ggplot2</code>), for example a plot of the distribution of means:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">comparison<span class="op">$</span>Plots<span class="op">$</span>Means</code></pre></div>
+<p><img src="splatter_files/figure-html/comparison-means-1.png" width="576" style="display: block; margin: auto;"></p>
+<p>These are only a few of the plots you might want to consider but it should be easy to make more using the returned data. For example, we could plot the number of expressed genes against the library size:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">library</span>(<span class="st">"ggplot2"</span>)
+<span class="kw"><a href="http://www.rdocumentation.org/packages/ggplot2/topics/ggplot">ggplot</a></span>(comparison<span class="op">$</span>PhenoData,
+       <span class="kw"><a href="http://www.rdocumentation.org/packages/ggplot2/topics/aes">aes</a></span>(<span class="dt">x =</span> total_counts, <span class="dt">y =</span> total_features, <span class="dt">colour =</span> Dataset)) <span class="op">+</span>
+<span class="st">    </span><span class="kw"><a href="http://www.rdocumentation.org/packages/ggplot2/topics/geom_point">geom_point</a></span>()</code></pre></div>
+<p><img src="splatter_files/figure-html/comparison-libsize-features-1.png" width="576" style="display: block; margin: auto;"></p>
+<div id="comparing-differences" class="section level2">
+<h2 class="hasAnchor">
+<a href="#comparing-differences" class="anchor"></a>Comparing differences</h2>
+<p>Sometimes instead of visually comparing datasets it may be more interesting to look at the differences between them. We can do this using the <code>diffSCEs</code> function. Similar to <code>compareSCEs</code> this function takes a list of <code>SingleCellExperiment</code> objects but now we also specify one to be a reference. A series of similar plots are returned but instead of showing the overall distributions they demonstrate differences from the reference.</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">difference &lt;-<span class="st"> </span><span class="kw"><a href="../reference/diffSCEs.html">diffSCEs</a></span>(<span class="kw">list</span>(<span class="dt">Splat =</span> sim1, <span class="dt">Simple =</span> sim2), <span class="dt">ref =</span> <span class="st">"Simple"</span>)
+difference<span class="op">$</span>Plots<span class="op">$</span>Means</code></pre></div>
+<p><img src="splatter_files/figure-html/difference-1.png" width="576" style="display: block; margin: auto;"></p>
+<p>We also get a series of Quantile-Quantile plot that can be used to compare distributions.</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">difference<span class="op">$</span>QQPlots<span class="op">$</span>Means</code></pre></div>
+<p><img src="splatter_files/figure-html/difference-qq-1.png" width="576" style="display: block; margin: auto;"></p>
+</div>
+<div id="making-panels" class="section level2">
+<h2 class="hasAnchor">
+<a href="#making-panels" class="anchor"></a>Making panels</h2>
+<p>Each of these comparisons makes several plots which can be a lot to look at. To make this easier, or to produce figures for publications, you can make use of the functions <code>makeCompPanel</code>, <code>makeDiffPanel</code> and <code>makeOverallPanel</code>.</p>
+<p>These functions combine the plots into a single panel using the <code>cowplot</code> package. The panels can be quite large and hard to view (for example in RStudio’s plot viewer) so it can be better to output the panels and view them separately. Luckily <code>cowplot</code> provides a convenient function for saving the images. Here are some suggested parameters for outputting each of the panels:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># This code is just an example and is not run</span>
+panel &lt;-<span class="st"> </span><span class="kw"><a href="../reference/makeCompPanel.html">makeCompPanel</a></span>(comparison)
+cowplot<span class="op">::</span><span class="kw"><a href="http://www.rdocumentation.org/packages/cowplot/topics/save_plot">save_plot</a></span>(<span class="st">"comp_panel.png"</span>, panel, <span class="dt">nrow =</span> <span class="dv">4</span>, <span class="dt">ncol =</span> <span class="dv">3</span>)
+
+panel &lt;-<span class="st"> </span><span class="kw"><a href="../reference/makeDiffPanel.html">makeDiffPanel</a></span>(difference)
+cowplot<span class="op">::</span><span class="kw"><a href="http://www.rdocumentation.org/packages/cowplot/topics/save_plot">save_plot</a></span>(<span class="st">"diff_panel.png"</span>, panel, <span class="dt">nrow =</span> <span class="dv">3</span>, <span class="dt">ncol =</span> <span class="dv">5</span>)
+
+panel &lt;-<span class="st"> </span><span class="kw"><a href="../reference/makeOverallPanel.html">makeOverallPanel</a></span>(comparison, difference)
+cowplot<span class="op">::</span><span class="kw"><a href="http://www.rdocumentation.org/packages/cowplot/topics/save_plot">save_plot</a></span>(<span class="st">"overall_panel.png"</span>, panel, <span class="dt">ncol =</span> <span class="dv">4</span>, <span class="dt">nrow =</span> <span class="dv">7</span>)</code></pre></div>
+</div>
+</div>
+<div id="citing-splatter" class="section level1">
+<h1 class="hasAnchor">
+<a href="#citing-splatter" class="anchor"></a>Citing Splatter</h1>
+<p>If you use Splatter in your work please cite our paper:</p>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">citation</span>(<span class="st">"splatter"</span>)</code></pre></div>
+<pre><code>## 
+##   Zappia L, Phipson B, Oshlack A. Splatter: Simulation Of
+##   Single-Cell RNA Sequencing Data. bioRxiv. 2017;
+##   doi:10.1101/133173
+## 
+## A BibTeX entry for LaTeX users is
+## 
+##   @Article{,
+##     author = {Luke Zappia and Belinda Phipson and Alicia Oshlack},
+##     title = {Splatter: Simulation Of Single-Cell RNA Sequencing Data},
+##     journal = {bioRxiv},
+##     year = {2017},
+##     url = {http://dx.doi.org/10.1101/133173},
+##     doi = {10.1101/133173},
+##   }</code></pre>
+</div>
+<div id="session-information" class="section level1 unnumbered">
+<h1 class="hasAnchor">
+<a href="#session-information" class="anchor"></a>Session information</h1>
+<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">sessionInfo</span>()</code></pre></div>
+<pre><code>## R version 3.4.2 (2017-09-28)
+## Platform: x86_64-apple-darwin15.6.0 (64-bit)
+## Running under: macOS Sierra 10.12.6
+## 
+## Matrix products: default
+## BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
+## LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
+## 
+## locale:
+## [1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8
+## 
+## attached base packages:
+## [1] stats4    parallel  stats     graphics  grDevices utils     datasets 
+## [8] methods   base     
+## 
+## other attached packages:
+##  [1] splatter_1.1.7              scater_1.5.16              
+##  [3] SingleCellExperiment_0.99.4 SummarizedExperiment_1.7.10
+##  [5] DelayedArray_0.3.21         matrixStats_0.52.2         
+##  [7] GenomicRanges_1.29.15       GenomeInfoDb_1.13.5        
+##  [9] IRanges_2.11.19             S4Vectors_0.15.12          
+## [11] ggplot2_2.2.1               Biobase_2.37.2             
+## [13] BiocGenerics_0.23.3        
+## 
+## loaded via a namespace (and not attached):
+##  [1] bitops_1.0-6            bit64_0.9-7            
+##  [3] progress_1.1.2          rprojroot_1.2          
+##  [5] zinbwave_0.99.9         numDeriv_2016.8-1      
+##  [7] tools_3.4.2             backports_1.1.1        
+##  [9] R6_2.2.2                vipor_0.4.5            
+## [11] DBI_0.7                 lazyeval_0.2.0         
+## [13] colorspace_1.3-2        sp_1.2-5               
+## [15] gridExtra_2.3           prettyunits_1.0.2      
+## [17] bit_1.1-12              compiler_3.4.2         
+## [19] glmnet_2.0-13           pspline_1.0-18         
+## [21] labeling_0.3            scales_0.5.0           
+## [23] checkmate_1.8.4         mvtnorm_1.0-6          
+## [25] stringr_1.2.0           digest_0.6.12          
+## [27] rmarkdown_1.6           XVector_0.17.1         
+## [29] pkgconfig_2.0.1         htmltools_0.3.6        
+## [31] akima_0.6-2             highr_0.6              
+## [33] stabledist_0.7-1        ADGofTest_0.3          
+## [35] limma_3.33.14           rlang_0.1.2.9000       
+## [37] RSQLite_2.0             shiny_1.0.5            
+## [39] bindr_0.1               BiocParallel_1.11.11   
+## [41] dplyr_0.7.4             RCurl_1.95-4.8         
+## [43] magrittr_1.5            GenomeInfoDbData_0.99.1
+## [45] Matrix_1.2-11           Rcpp_0.12.13           
+## [47] ggbeeswarm_0.6.0        munsell_0.4.3          
+## [49] viridis_0.4.0           stringi_1.1.5          
+## [51] yaml_2.1.14             edgeR_3.19.7           
+## [53] MASS_7.3-47             zlibbioc_1.23.0        
+## [55] rhdf5_2.21.6            plyr_1.8.4             
+## [57] grid_3.4.2              blob_1.1.0             
+## [59] shinydashboard_0.6.1    lattice_0.20-35        
+## [61] cowplot_0.8.0           splines_3.4.2          
+## [63] locfit_1.5-9.1          knitr_1.17             
+## [65] rjson_0.2.15            softImpute_1.4         
+## [67] codetools_0.2-15        reshape2_1.4.2         
+## [69] biomaRt_2.33.4          XML_3.98-1.9           
+## [71] glue_1.1.1              evaluate_0.10.1        
+## [73] data.table_1.10.4-2     httpuv_1.3.5           
+## [75] foreach_1.4.3           gtable_0.2.0           
+## [77] assertthat_0.2.0        mime_0.5               
+## [79] xtable_1.8-2            survival_2.41-3        
+## [81] pcaPP_1.9-72            viridisLite_0.2.0      
+## [83] gsl_1.9-10.3            tibble_1.3.4           
+## [85] copula_0.999-18         iterators_1.0.8        
+## [87] AnnotationDbi_1.39.4    beeswarm_0.2.3         
+## [89] memoise_1.1.0           tximport_1.5.1         
+## [91] bindrcpp_0.2            fitdistrplus_1.0-9</code></pre>
+</div>
+</div>
+  </div>
+
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+        <div id="tocnav">
+      <h2 class="hasAnchor">
+<a href="#tocnav" class="anchor"></a>Contents</h2>
+      <ul class="nav nav-pills nav-stacked">
+<li><a href="#installation">Installation</a></li>
+      <li><a href="#quickstart">Quickstart</a></li>
+      <li>
+<a href="#the-splat-simulation">The Splat simulation</a><ul class="nav nav-pills nav-stacked">
+<li><a href="#parameters">Parameters</a></li>
+      </ul>
+</li>
+      <li>
+<a href="#the-splatparams-object">The <code>SplatParams</code> object</a><ul class="nav nav-pills nav-stacked">
+<li><a href="#getting-and-setting">Getting and setting</a></li>
+      </ul>
+</li>
+      <li><a href="#estimating-parameters">Estimating parameters</a></li>
+      <li>
+<a href="#simulating-counts">Simulating counts</a><ul class="nav nav-pills nav-stacked">
+<li><a href="#simulating-groups">Simulating groups</a></li>
+      <li><a href="#simulating-paths">Simulating paths</a></li>
+      <li><a href="#batch-effects">Batch effects</a></li>
+      <li><a href="#convenience-functions">Convenience functions</a></li>
+      </ul>
+</li>
+      <li><a href="#other-simulations">Other simulations</a></li>
+      <li><a href="#other-expression-values">Other expression values</a></li>
+      <li>
+<a href="#comparing-simulations-and-real-data">Comparing simulations and real data</a><ul class="nav nav-pills nav-stacked">
+<li><a href="#comparing-differences">Comparing differences</a></li>
+      <li><a href="#making-panels">Making panels</a></li>
+      </ul>
+</li>
+      <li><a href="#citing-splatter">Citing Splatter</a></li>
+      <li><a href="#session-information">Session information</a></li>
+      </ul>
+</div>
+      </div>
+
+</div>
+
+
+      <footer><div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+</div>
+
+  </body>
+</html>
diff --git a/docs/articles/splatter_files/figure-html/batch-groups-1.png b/docs/articles/splatter_files/figure-html/batch-groups-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..41322aa2a5501dc27119bcc6d7a0f07baa7dd0ec
Binary files /dev/null and b/docs/articles/splatter_files/figure-html/batch-groups-1.png differ
diff --git a/docs/articles/splatter_files/figure-html/batches-1.png b/docs/articles/splatter_files/figure-html/batches-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf963638b3a926b2f208902579b316730b9b3e99
Binary files /dev/null and b/docs/articles/splatter_files/figure-html/batches-1.png differ
diff --git a/docs/articles/splatter_files/figure-html/comparison-libsize-features-1.png b/docs/articles/splatter_files/figure-html/comparison-libsize-features-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6e1f55c959cf241ad5a23fb6d55004708e24859
Binary files /dev/null and b/docs/articles/splatter_files/figure-html/comparison-libsize-features-1.png differ
diff --git a/docs/articles/splatter_files/figure-html/comparison-means-1.png b/docs/articles/splatter_files/figure-html/comparison-means-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..81a285ee8aee3843ace507b019b2657e7cfce61d
Binary files /dev/null and b/docs/articles/splatter_files/figure-html/comparison-means-1.png differ
diff --git a/docs/articles/splatter_files/figure-html/difference-1.png b/docs/articles/splatter_files/figure-html/difference-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1405db3e6111c85d218c40b3c112b1a92d6754ae
Binary files /dev/null and b/docs/articles/splatter_files/figure-html/difference-1.png differ
diff --git a/docs/articles/splatter_files/figure-html/difference-qq-1.png b/docs/articles/splatter_files/figure-html/difference-qq-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e52dae0f225a53a639726b32ee9638fdbfb66377
Binary files /dev/null and b/docs/articles/splatter_files/figure-html/difference-qq-1.png differ
diff --git a/docs/articles/splatter_files/figure-html/groups-1.png b/docs/articles/splatter_files/figure-html/groups-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..b136e94e85faa675927fc998cc7088737609783e
Binary files /dev/null and b/docs/articles/splatter_files/figure-html/groups-1.png differ
diff --git a/docs/articles/splatter_files/figure-html/paths-1.png b/docs/articles/splatter_files/figure-html/paths-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..28f0955d1bb6f39b3305d5a6c3d9b5182c78abc2
Binary files /dev/null and b/docs/articles/splatter_files/figure-html/paths-1.png differ
diff --git a/docs/articles/splatter_files/figure-html/pca-1.png b/docs/articles/splatter_files/figure-html/pca-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..22d50b686571d25bba55632d2034946313d28b7b
Binary files /dev/null and b/docs/articles/splatter_files/figure-html/pca-1.png differ
diff --git a/docs/authors.html b/docs/authors.html
new file mode 100644
index 0000000000000000000000000000000000000000..52fbe4076f3918a4d4da00ca7aa5af3e47dd9159
--- /dev/null
+++ b/docs/authors.html
@@ -0,0 +1,155 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Citation and Authors • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="pkgdown.css" rel="stylesheet">
+<script src="jquery.sticky-kit.min.js"></script>
+<script src="pkgdown.js"></script>
+  <link href="extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-citation-authors">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="/index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="contents col-md-9">
+
+    <div class="page-header">
+      <h1>Citation</h1>
+    </div>
+
+    <p>Zappia L, Phipson B and Oshlack A (2017).
+&ldquo;Splatter: simulation of single-cell RNA sequencing data.&rdquo;
+<em>Genome Biology</em>.
+doi: <a href="http://doi.org/10.1186/s13059-017-1305-0">10.1186/s13059-017-1305-0</a>, <a href="http://dx.doi.org/10.1186/s13059-017-1305-0">http://dx.doi.org/10.1186/s13059-017-1305-0</a>. 
+</p>
+    <pre>@Article{,
+  author = {Luke Zappia and Belinda Phipson and Alicia Oshlack},
+  title = {Splatter: simulation of single-cell RNA sequencing data},
+  journal = {Genome Biology},
+  year = {2017},
+  url = {http://dx.doi.org/10.1186/s13059-017-1305-0},
+  doi = {10.1186/s13059-017-1305-0},
+}</pre>
+    <div class="page-header">
+      <h1>Authors</h1>
+    </div>
+
+    <ul class="list-unstyled">
+      <li>
+        <p><strong>Luke Zappia</strong>. Author, maintainer.
+        </p>
+      </li>
+      <li>
+        <p><strong>Belinda Phipson</strong>. Author.
+        </p>
+      </li>
+      <li>
+        <p><strong>Alicia Oshlack</strong>. Author.
+        </p>
+      </li>
+    </ul>
+
+  </div>
+
+</div>
+
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/extra.css b/docs/extra.css
new file mode 100644
index 0000000000000000000000000000000000000000..5a8e0b151dcdaa45957ad85404b8e3916e56123c
--- /dev/null
+++ b/docs/extra.css
@@ -0,0 +1,9 @@
+.fl      {color: blue;}
+.fu      {color: #00ADEF;}  /* function */
+.ch,.st  {color: #F47920;}  /* string */
+.kw      {color: #7A52C7;}  /* keyword */
+.co      {color: #8DC63F;}  /* comment */
+
+.message { color: gray;   font-weight: bolder;}
+.error   { color: red;  font-weight: bolder;}
+.warning { color: purple; font-weight: bolder;}
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..a0cd79fa1741025aee2fc52ee0ad95dc3e664daa
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,165 @@
+<!DOCTYPE html>
+<!-- Generated by pkgdown: do not edit by hand --><html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Simple Simulation of Single-cell RNA Sequencing Data • Splatter</title>
+<!-- jquery --><script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script><!-- Font Awesome icons --><link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+<!-- pkgdown --><link href="pkgdown.css" rel="stylesheet">
+<script src="jquery.sticky-kit.min.js"></script><script src="pkgdown.js"></script><link href="extra.css" rel="stylesheet">
+<!-- mathjax --><script src="https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]--><!-- Google analytics --><script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+<body>
+    <div class="container template-home">
+      <header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+<li>
+  <a href="/index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="news/index.html">News</a>
+</li>
+      </ul>
+<ul class="nav navbar-nav navbar-right">
+<li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+</div>
+<!--/.nav-collapse -->
+  </div>
+<!--/.container -->
+</div>
+<!--/.navbar -->
+
+      
+      </header><div class="row">
+  <div class="contents col-md-9">
+    
+
+<p><img src="https://s16.postimg.org/xc6u52b0l/splatter_logo_small.png" alt="Splatter logo"></p>
+<p>Splatter is an R package for the simple simulation of single-cell RNA sequencing data. Splatter provides a common interface to multiple simulations that have:</p>
+<ul>
+<li>Functions for estimating simulation parameters</li>
+<li>Objects for storing those parameters</li>
+<li>Functions for simulating counts using those parameters</li>
+<li>Functions for comparing simulations and real datasets</li>
+</ul>
+<p>Splatter is built on top of <a href="https://github.com/davismcc/scater"><code>scater</code></a> and stores simulations in <code>SCESet</code> objects. Splatter also has functions for comparing simulations and real datasets.</p>
+<p><strong>!Please note!</strong> This site provides documentation for the development version of Splatter. For details on the current release please refer to <a href="https://bioconductor.org/packages/splatter" class="uri">https://bioconductor.org/packages/splatter</a>.</p>
+<div id="installation-" class="section level2">
+<h2 class="hasAnchor">
+<a href="#installation-" class="anchor"></a>Installation.</h2>
+<div id="release-version" class="section level3">
+<h3 class="hasAnchor">
+<a href="#release-version" class="anchor"></a>Release version</h3>
+<p>Splatter has been accepted into the latest version of <a href="https://bioconductor.org/packages/splatter">Bioconductor</a> and hence requires the latest version of R (&gt;=3.4).</p>
+<p>If you have these installed Splatter can be installed from Bioconductor using <code>biocLite</code>:</p>
+<pre class="{r}"><code>source("https://bioconductor.org/biocLite.R")
+biocLite("splatter")</code></pre>
+<p>If you wish to build a local version of the vignette use:</p>
+<pre class="{r}"><code><a href="http://www.rdocumentation.org/packages/BiocInstaller/topics/biocLite">biocLite("splatter", build_vignettes=TRUE)</a></code></pre>
+<p>This will also build the vignette and install all suggested dependencies (which aren’t required for core functionality). Building the vignette may sometimes fail when run from the command line, if this happens try running the install command in RStudio.</p>
+</div>
+<div id="development-version" class="section level3">
+<h3 class="hasAnchor">
+<a href="#development-version" class="anchor"></a>Development version</h3>
+<p>If you want to try the <a href="https://bioconductor.org/packages/devel/bioc/html/splatter.html">development version</a> this can also be installed from Bioconductor:</p>
+<pre class="{r}"><code>library(BiocInstaller)
+useDevel()
+biocValid()              # checks for out of date packages
+biocLite()               # (optional) updates out of date packages
+biocLite("splatter")</code></pre>
+<p>Depending on the current release cycle you may also need to install the development version of R. See <a href="https://www.bioconductor.org/developers/how-to/useDevel/">here</a> for more details.</p>
+<p>Alternatively the development version can be installed directly from <a href="https://github.com/Oshlack/splatter">Github</a>:</p>
+<pre class="{r}"><code><a href="http://www.rdocumentation.org/packages/devtools/topics/install">devtools::install("Oshlack/splatter")</a></code></pre>
+</div>
+</div>
+
+  </div>
+
+  <div class="col-md-3" id="sidebar">
+    <h2>Links</h2>
+<ul class="list-unstyled">
+<li>Download from BIOC at <br><a href="https://www.bioconductor.org/packages/splatter">https://​www.bioconductor.org/​packages/​splatter</a>
+</li>
+<li>Browse source code at <br><a href="https://github.com/Oshlack/splatter">https://​github.com/​Oshlack/​splatter</a>
+</li>
+<li>Report a bug at <br><a href="https://github.com/Oshlack/splatter/issues">https://​github.com/​Oshlack/​splatter/​issues</a>
+</li>
+</ul>
+<h2>License</h2>
+<p><a href="https://www.r-project.org/Licenses/GPL-3">GPL-3</a> + file <a href="LICENSE.html">LICENSE</a></p>
+<h2>Citation</h2>
+<ul class="list-unstyled">
+<li><a href="authors.html">Citing splatter</a></li>
+</ul>
+<h2>Developers</h2>
+<ul class="list-unstyled">
+<li>Luke Zappia <br><small class="roles"> Author, maintainer </small> </li>
+<li>Belinda Phipson <br><small class="roles"> Author </small> </li>
+<li>Alicia Oshlack <br><small class="roles"> Author </small> </li>
+</ul>
+<h2>Dev status</h2>
+<ul class="list-unstyled">
+<li><a href="https://travis-ci.org/Oshlack/splatter"><img src="https://travis-ci.org/Oshlack/splatter.svg?branch=master" alt="Travis-CI Build Status"></a></li>
+<li><a href="https://codecov.io/github/Oshlack/splatter?branch=master"><img src="https://img.shields.io/codecov/c/github/Oshlack/splatter/master.svg" alt="Coverage Status"></a></li>
+<li><a href="https://ci.appveyor.com/project/Oshlack/splatter"><img src="https://ci.appveyor.com/api/projects/status/github/Oshlack/splatter?branch=master&amp;svg=true" alt="AppVeyor Build Status"></a></li>
+<li><a href="https://bioconductor.org/packages/devel/bioc/html/splatter.html"><img src="https://bioconductor.org/shields/years-in-bioc/splatter.svg" alt="Bioconductor History"></a></li>
+<li><a href="https://bioconductor.org/packages/devel/bioc/html/splatter.html"><img src="https://bioconductor.org/shields/build/devel/bioc/splatter.svg" alt="Bioconductor Status"></a></li>
+<li><a href="https://bioconductor.org/packages/devel/bioc/html/splatter.html"><img src="https://bioconductor.org/shields/downloads/splatter.svg" alt="Bioconductor Downloads"></a></li>
+</ul>
+</div>
+</div>
+
+
+      <footer><div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+</div>
+
+  </body>
+</html>
diff --git a/docs/jquery.sticky-kit.min.js b/docs/jquery.sticky-kit.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..e2a3c6de9e8e3b01b04cbbcdb5a2f8e113391de4
--- /dev/null
+++ b/docs/jquery.sticky-kit.min.js
@@ -0,0 +1,9 @@
+/*
+ Sticky-kit v1.1.2 | WTFPL | Leaf Corcoran 2015 | http://leafo.net
+*/
+(function(){var b,f;b=this.jQuery||window.jQuery;f=b(window);b.fn.stick_in_parent=function(d){var A,w,J,n,B,K,p,q,k,E,t;null==d&&(d={});t=d.sticky_class;B=d.inner_scrolling;E=d.recalc_every;k=d.parent;q=d.offset_top;p=d.spacer;w=d.bottoming;null==q&&(q=0);null==k&&(k=void 0);null==B&&(B=!0);null==t&&(t="is_stuck");A=b(document);null==w&&(w=!0);J=function(a,d,n,C,F,u,r,G){var v,H,m,D,I,c,g,x,y,z,h,l;if(!a.data("sticky_kit")){a.data("sticky_kit",!0);I=A.height();g=a.parent();null!=k&&(g=g.closest(k));
+if(!g.length)throw"failed to find stick parent";v=m=!1;(h=null!=p?p&&a.closest(p):b("<div />"))&&h.css("position",a.css("position"));x=function(){var c,f,e;if(!G&&(I=A.height(),c=parseInt(g.css("border-top-width"),10),f=parseInt(g.css("padding-top"),10),d=parseInt(g.css("padding-bottom"),10),n=g.offset().top+c+f,C=g.height(),m&&(v=m=!1,null==p&&(a.insertAfter(h),h.detach()),a.css({position:"",top:"",width:"",bottom:""}).removeClass(t),e=!0),F=a.offset().top-(parseInt(a.css("margin-top"),10)||0)-q,
+u=a.outerHeight(!0),r=a.css("float"),h&&h.css({width:a.outerWidth(!0),height:u,display:a.css("display"),"vertical-align":a.css("vertical-align"),"float":r}),e))return l()};x();if(u!==C)return D=void 0,c=q,z=E,l=function(){var b,l,e,k;if(!G&&(e=!1,null!=z&&(--z,0>=z&&(z=E,x(),e=!0)),e||A.height()===I||x(),e=f.scrollTop(),null!=D&&(l=e-D),D=e,m?(w&&(k=e+u+c>C+n,v&&!k&&(v=!1,a.css({position:"fixed",bottom:"",top:c}).trigger("sticky_kit:unbottom"))),e<F&&(m=!1,c=q,null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),
+h.detach()),b={position:"",width:"",top:""},a.css(b).removeClass(t).trigger("sticky_kit:unstick")),B&&(b=f.height(),u+q>b&&!v&&(c-=l,c=Math.max(b-u,c),c=Math.min(q,c),m&&a.css({top:c+"px"})))):e>F&&(m=!0,b={position:"fixed",top:c},b.width="border-box"===a.css("box-sizing")?a.outerWidth()+"px":a.width()+"px",a.css(b).addClass(t),null==p&&(a.after(h),"left"!==r&&"right"!==r||h.append(a)),a.trigger("sticky_kit:stick")),m&&w&&(null==k&&(k=e+u+c>C+n),!v&&k)))return v=!0,"static"===g.css("position")&&g.css({position:"relative"}),
+a.css({position:"absolute",bottom:d,top:"auto"}).trigger("sticky_kit:bottom")},y=function(){x();return l()},H=function(){G=!0;f.off("touchmove",l);f.off("scroll",l);f.off("resize",y);b(document.body).off("sticky_kit:recalc",y);a.off("sticky_kit:detach",H);a.removeData("sticky_kit");a.css({position:"",bottom:"",top:"",width:""});g.position("position","");if(m)return null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),h.remove()),a.removeClass(t)},f.on("touchmove",l),f.on("scroll",l),f.on("resize",
+y),b(document.body).on("sticky_kit:recalc",y),a.on("sticky_kit:detach",H),setTimeout(l,0)}};n=0;for(K=this.length;n<K;n++)d=this[n],J(b(d));return this}}).call(this);
diff --git a/docs/link.svg b/docs/link.svg
new file mode 100644
index 0000000000000000000000000000000000000000..88ad82769b87f10725c57dca6fcf41b4bffe462c
--- /dev/null
+++ b/docs/link.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#75AADB;}
+</style>
+<path class="st0" d="M4,11.3h1.3v1.3H4c-2,0-4-2.3-4-4.7s2.1-4.7,4-4.7h5.3c1.9,0,4,2.3,4,4.7c0,1.9-1.2,3.6-2.7,4.3v-1.5
+	C11.4,10.2,12,9.1,12,8c0-1.7-1.4-3.3-2.7-3.3H4C2.7,4.7,1.3,6.3,1.3,8S2.7,11.3,4,11.3z M16,7.3h-1.3v1.3H16c1.3,0,2.7,1.6,2.7,3.3
+	s-1.4,3.3-2.7,3.3h-5.3C9.4,15.3,8,13.7,8,12c0-1.1,0.6-2.2,1.3-2.8V7.7C7.9,8.4,6.7,10.1,6.7,12c0,2.4,2.1,4.7,4,4.7H16
+	c1.9,0,4-2.3,4-4.7S18,7.3,16,7.3z"/>
+</svg>
diff --git a/docs/news/index.html b/docs/news/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..71c2603f53a2ef7fe5e51a7df7e83990cc71029b
--- /dev/null
+++ b/docs/news/index.html
@@ -0,0 +1,493 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>All news • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-news">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+
+  <div class="col-md-9">
+    <div class="page-header">
+      <h1>Change log <small>All releases</small></h1>
+    </div>
+
+    <div class="contents">
+    <div id="version-1-1-8-2017-10-13" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-1-8-2017-10-13" class="anchor"></a>Version 1.1.8 (2017-10-13)</h2>
+<ul>
+<li>Add BASiCS simulation</li>
+<li>Update Splatter citation</li>
+<li>Update Lun2 reference</li>
+</ul>
+</div>
+    <div id="version-1-1-7-2017-10-05" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-1-7-2017-10-05" class="anchor"></a>Version 1.1.7 (2017-10-05)</h2>
+<ul>
+<li>Add PhenoPath simulation</li>
+<li>Add ZINB-WaVE simulation</li>
+<li>Adjust mfaSimulate output</li>
+</ul>
+</div>
+    <div id="version-1-1-6-2017-10-02" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-1-6-2017-10-02" class="anchor"></a>Version 1.1.6 (2017-10-02)</h2>
+<ul>
+<li>Update scDD version</li>
+<li>Add mfa simulation</li>
+</ul>
+</div>
+    <div id="version-1-1-5-2017-09-13" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-1-5-2017-09-13" class="anchor"></a>Version 1.1.5 (2017-09-13)</h2>
+<ul>
+<li>Convert to SingleCellExperiment</li>
+</ul>
+</div>
+    <div id="version-1-1-4-2017-08-04" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-1-4-2017-08-04" class="anchor"></a>Version 1.1.4 (2017-08-04)</h2>
+<ul>
+<li>Fix group factors bug</li>
+</ul>
+</div>
+    <div id="version-1-1-3-2017-07-20" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-1-3-2017-07-20" class="anchor"></a>Version 1.1.3 (2017-07-20)</h2>
+<ul>
+<li>Add verbose option to scDDEstimate</li>
+<li>Change “mean-dropout” to “mean-zeros” in compareSCESets</li>
+</ul>
+</div>
+    <div id="version-1-1-2-2017-07-16" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-1-2-2017-07-16" class="anchor"></a>Version 1.1.2 (2017-07-16)</h2>
+<ul>
+<li>Update summariseDiff</li>
+<li>Update scDDEstimate, now estimates gene types</li>
+<li>Fix error in lun2Estimate</li>
+<li>Import SummarizedExperiment to avoid warnings</li>
+</ul>
+</div>
+    <div id="version-1-1-1-2017-07-07" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-1-1-2017-07-07" class="anchor"></a>Version 1.1.1 (2017-07-07)</h2>
+<ul>
+<li>Add batch effects to Splat simulation</li>
+<li>Make Splat group assignment probabilistic</li>
+<li>Update SplatParams with new parameters</li>
+</ul>
+</div>
+    <div id="version-1-1-0-2017-07-07" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-1-0-2017-07-07" class="anchor"></a>Version 1.1.0 (2017-07-07)</h2>
+<ul>
+<li>Bioconductor 3.6 devel</li>
+</ul>
+</div>
+    <div id="version-1-0-3-2017-05-26" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-0-3-2017-05-26" class="anchor"></a>Version 1.0.3 (2017-05-26)</h2>
+<ul>
+<li>Update citation</li>
+</ul>
+</div>
+    <div id="version-1-0-2-2017-05-15" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-0-2-2017-05-15" class="anchor"></a>Version 1.0.2 (2017-05-15)</h2>
+<ul>
+<li>Fix error handling when fitting means</li>
+</ul>
+</div>
+    <div id="version-1-0-1-2017-04-28" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-1-0-1-2017-04-28" class="anchor"></a>Version 1.0.1 (2017-04-28)</h2>
+<ul>
+<li>Fix scales in some difference plots</li>
+<li>Fix colours in difference plots</li>
+<li>Fix panel legends</li>
+</ul>
+</div>
+    <div id="version-1-0-0-2017-04-28" class="section level1">
+<h1 class="hasAnchor">
+<a href="#version-1-0-0-2017-04-28" class="anchor"></a>Version 1.0.0 (2017-04-28)</h1>
+<ul>
+<li>Bioconductor 3.5 release</li>
+</ul>
+<div id="version-0-99-15-2017-04-14" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-15-2017-04-14" class="anchor"></a>Version 0.99.15 (2017-04-14)</h2>
+<ul>
+<li>Add summariseDiff function</li>
+<li>Add BPPARAM argument to scDDSimulate</li>
+<li>Adjust default Splat DE factor parameters</li>
+<li>Add limits to zeros diff plots</li>
+<li>Remove estimation of dropout.present</li>
+</ul>
+</div>
+<div id="version-0-99-14-2017-03-28" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-14-2017-03-28" class="anchor"></a>Version 0.99.14 (2017-03-28)</h2>
+<ul>
+<li>Add functions for making comparison panels</li>
+<li>Add panel section to vignette</li>
+<li>Change variance plot scale (for consistency)</li>
+</ul>
+</div>
+<div id="version-0-99-13-2017-03-25" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-13-2017-03-25" class="anchor"></a>Version 0.99.13 (2017-03-25)</h2>
+<ul>
+<li>Modify how Lun2Params stores gene paramters to use data.frame</li>
+<li>Move sampling of genes/cells to lun2Simulate</li>
+<li>Return to old Lun2 nGenes estimate</li>
+</ul>
+</div>
+<div id="version-0-99-12-2017-03-22" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-12-2017-03-22" class="anchor"></a>Version 0.99.12 (2017-03-22)</h2>
+<ul>
+<li>Add diffSCESets function</li>
+<li>Update compareSCESets plots</li>
+<li>Modify Lun2 nGenes estimate</li>
+<li>Modify how addFeatureStats names columns</li>
+<li>Add infinte bcv.df warning to splatSimulate</li>
+</ul>
+</div>
+<div id="version-0-99-11-2017-03-20" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-11-2017-03-20" class="anchor"></a>Version 0.99.11 (2017-03-20)</h2>
+<ul>
+<li>Add parallel option to lun2Estimate</li>
+<li>Allow non-integer library sizes in Lun2Params</li>
+<li>Adjust dropout eta value</li>
+<li>Adjust comparison plots</li>
+</ul>
+</div>
+<div id="version-0-99-10-2017-03-07" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-10-2017-03-07" class="anchor"></a>Version 0.99.10 (2017-03-07)</h2>
+<ul>
+<li>Improve Splat estimation procedure</li>
+<li>Update default Splat parameters</li>
+<li>Remove out.loProb Splat parameter</li>
+<li>Add MeanZeros plot to compareSCESets</li>
+</ul>
+</div>
+<div id="version-0-99-9-2017-02-02" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-9-2017-02-02" class="anchor"></a>Version 0.99.9 (2017-02-02)</h2>
+<ul>
+<li>Add addGeneLengths function</li>
+<li>Update scDD reference</li>
+</ul>
+</div>
+<div id="version-0-99-8-2017-01-23" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-8-2017-01-23" class="anchor"></a>Version 0.99.8 (2017-01-23)</h2>
+<ul>
+<li>Fix bug that meant non-linear path factors weren’t stored in output</li>
+</ul>
+</div>
+<div id="version-0-99-7-2017-01-10" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-7-2017-01-10" class="anchor"></a>Version 0.99.7 (2017-01-10)</h2>
+<ul>
+<li>Small changes to avoid NOTEs and reduce check time</li>
+</ul>
+</div>
+<div id="version-0-99-6-2016-12-29" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-6-2016-12-29" class="anchor"></a>Version 0.99.6 (2016-12-29)</h2>
+<ul>
+<li>Add installation to vignette</li>
+<li>Add detail about counts matrix to vignette</li>
+<li>Replace 1:x with seq_len/seq_along</li>
+</ul>
+</div>
+<div id="version-0-99-5-2016-12-28" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-5-2016-12-28" class="anchor"></a>Version 0.99.5 (2016-12-28)</h2>
+<ul>
+<li>Set R_TESTS environment</li>
+</ul>
+</div>
+<div id="version-0-99-4-2016-12-23" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-4-2016-12-23" class="anchor"></a>Version 0.99.4 (2016-12-23)</h2>
+<ul>
+<li>Version bump to start build</li>
+</ul>
+</div>
+<div id="version-0-99-3-2016-12-21" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-3-2016-12-21" class="anchor"></a>Version 0.99.3 (2016-12-21)</h2>
+<ul>
+<li>Fix to match Bioconductor version of scDD</li>
+<li>Add logo to repository</li>
+</ul>
+</div>
+<div id="version-0-99-2-2016-12-13" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-2-2016-12-13" class="anchor"></a>Version 0.99.2 (2016-12-13)</h2>
+<ul>
+<li>Add rownames, colnames to matrices in splatSimulate, lunSimulate</li>
+<li>Bump R version to 3.4</li>
+</ul>
+</div>
+<div id="version-0-99-1-2016-12-12" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-99-1-2016-12-12" class="anchor"></a>Version 0.99.1 (2016-12-12)</h2>
+<ul>
+<li>Address Biocondutor build warnings, notes</li>
+</ul>
+</div>
+</div>
+    <div id="version-0-99-0-2016-12-05" class="section level1">
+<h1 class="hasAnchor">
+<a href="#version-0-99-0-2016-12-05" class="anchor"></a>Version 0.99.0 (2016-12-05)</h1>
+<ul>
+<li>Submit to Bioconductor</li>
+</ul>
+<div id="version-0-12-1-2016-11-25" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-12-1-2016-11-25" class="anchor"></a>Version 0.12.1 (2016-11-25)</h2>
+<ul>
+<li>Fix bug in compareSCESets</li>
+<li>Dataset order is now kept in plots</li>
+</ul>
+</div>
+<div id="version-0-12-0-2016-10-25" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-12-0-2016-10-25" class="anchor"></a>Version 0.12.0 (2016-10-25)</h2>
+<ul>
+<li>Add compareSCESets function</li>
+<li>Update vignette</li>
+<li>Fix LunParams validity bug</li>
+<li>Add logo</li>
+</ul>
+</div>
+<div id="version-0-11-1-2016-11-23" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-11-1-2016-11-23" class="anchor"></a>Version 0.11.1 (2016-11-23)</h2>
+<ul>
+<li>Fix bug in splatSimulatePaths that caused NAs</li>
+</ul>
+</div>
+<div id="version-0-11-0-2016-11-22" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-11-0-2016-11-22" class="anchor"></a>Version 0.11.0 (2016-11-22)</h2>
+<ul>
+<li>Make compatible with Bioconductor 3.4</li>
+</ul>
+</div>
+<div id="version-0-10-1-2016-10-17" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-10-1-2016-10-17" class="anchor"></a>Version 0.10.1 (2016-10-17)</h2>
+<ul>
+<li>Fix error for SCESets in lun2Estimate, scDDEstimate</li>
+</ul>
+</div>
+<div id="version-0-10-0-2016-10-16" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-10-0-2016-10-16" class="anchor"></a>Version 0.10.0 (2016-10-16)</h2>
+<ul>
+<li>Add listSims function</li>
+<li>Add vignette</li>
+</ul>
+</div>
+<div id="version-0-9-0-2016-10-15" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-9-0-2016-10-15" class="anchor"></a>Version 0.9.0 (2016-10-15)</h2>
+<ul>
+<li>Add scDD simulation</li>
+</ul>
+</div>
+<div id="version-0-8-0-2016-10-15" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-8-0-2016-10-15" class="anchor"></a>Version 0.8.0 (2016-10-15)</h2>
+<ul>
+<li>Add Lun2 simulation</li>
+</ul>
+</div>
+<div id="version-0-7-0-2016-10-14" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-7-0-2016-10-14" class="anchor"></a>Version 0.7.0 (2016-10-14)</h2>
+<ul>
+<li>Redesign how parameters are stored</li>
+<li>Each simulation now has it’s own S4 Params class</li>
+<li>Modify exisiting simulations to use new parameter objects</li>
+</ul>
+</div>
+<div id="version-0-6-0-2016-10-12" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-6-0-2016-10-12" class="anchor"></a>Version 0.6.0 (2016-10-12)</h2>
+<ul>
+<li>Add Lun simulation</li>
+<li>Modify splatParams to take Lun parameters</li>
+</ul>
+</div>
+<div id="version-0-5-0-2016-10-12" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-5-0-2016-10-12" class="anchor"></a>Version 0.5.0 (2016-10-12)</h2>
+<ul>
+<li>Add simple simulation</li>
+</ul>
+</div>
+<div id="version-0-4-0-2016-10-12" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-4-0-2016-10-12" class="anchor"></a>Version 0.4.0 (2016-10-12)</h2>
+<ul>
+<li>Add splatter simulations</li>
+<li>Modify some parts of splatParams and fix bugs</li>
+</ul>
+</div>
+<div id="version-0-3-0-2016-10-06" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-3-0-2016-10-06" class="anchor"></a>Version 0.3.0 (2016-10-06)</h2>
+<ul>
+<li>Added parameter estimation functions</li>
+</ul>
+</div>
+<div id="version-0-2-0-2016-10-06" class="section level2">
+<h2 class="hasAnchor">
+<a href="#version-0-2-0-2016-10-06" class="anchor"></a>Version 0.2.0 (2016-10-06)</h2>
+<ul>
+<li>Added splatParams object</li>
+<li>Added functions for interacting with splatParams</li>
+</ul>
+</div>
+</div>
+    </div>
+  </div>
+
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <div id="tocnav">
+      <h2>Contents</h2>
+      <ul class="nav nav-pills nav-stacked">
+        <li><a href="#version-1-1-8-2017-10-13">1.1.8</a></li>
+        <li><a href="#version-1-1-7-2017-10-05">1.1.7</a></li>
+        <li><a href="#version-1-1-6-2017-10-02">1.1.6</a></li>
+        <li><a href="#version-1-1-5-2017-09-13">1.1.5</a></li>
+        <li><a href="#version-1-1-4-2017-08-04">1.1.4</a></li>
+        <li><a href="#version-1-1-3-2017-07-20">1.1.3</a></li>
+        <li><a href="#version-1-1-2-2017-07-16">1.1.2</a></li>
+        <li><a href="#version-1-1-1-2017-07-07">1.1.1</a></li>
+        <li><a href="#version-1-1-0-2017-07-07">1.1.0</a></li>
+        <li><a href="#version-1-0-3-2017-05-26">1.0.3</a></li>
+        <li><a href="#version-1-0-2-2017-05-15">1.0.2</a></li>
+        <li><a href="#version-1-0-1-2017-04-28">1.0.1</a></li>
+        <li><a href="#version-1-0-0-2017-04-28">1.0.0</a></li>
+        <li><a href="#version-0-99-0-2016-12-05">0.99.0</a></li>
+      </ul>
+    </div>
+  </div>
+
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/pkgdown.css b/docs/pkgdown.css
new file mode 100644
index 0000000000000000000000000000000000000000..209ce57febdc449e03d16b5b0d9323cd33692873
--- /dev/null
+++ b/docs/pkgdown.css
@@ -0,0 +1,163 @@
+/* Sticker footer */
+body > .container {
+  display: flex;
+  padding-top: 60px;
+  min-height: calc(100vh);
+  flex-direction: column;
+}
+
+body > .container .row {
+  flex: 1;
+}
+
+footer {
+  margin-top: 45px;
+  padding: 35px 0 36px;
+  border-top: 1px solid #e5e5e5;
+  color: #666;
+  display: flex;
+}
+footer p {
+  margin-bottom: 0;
+}
+footer div {
+  flex: 1;
+}
+footer .pkgdown {
+  text-align: right;
+}
+footer p {
+  margin-bottom: 0;
+}
+
+img.icon {
+  float: right;
+}
+
+img {
+  max-width: 100%;
+}
+
+/* Section anchors ---------------------------------*/
+
+a.anchor {
+  margin-left: -30px;
+  display:inline-block;
+  width: 30px;
+  height: 30px;
+  visibility: hidden;
+
+  background-image: url(./link.svg);
+  background-repeat: no-repeat;
+  background-size: 20px 20px;
+  background-position: center center;
+}
+
+.hasAnchor:hover a.anchor {
+  visibility: visible;
+}
+
+@media (max-width: 767px) {
+  .hasAnchor:hover a.anchor {
+    visibility: hidden;
+  }
+}
+
+
+/* Fixes for fixed navbar --------------------------*/
+
+.contents h1, .contents h2, .contents h3, .contents h4 {
+  padding-top: 60px;
+  margin-top: -60px;
+}
+
+/* Static header placement on mobile devices */
+@media (max-width: 767px) {
+  .navbar-fixed-top {
+    position: absolute;
+  }
+  .navbar {
+    padding: 0;
+  }
+}
+
+
+/* Sidebar --------------------------*/
+
+#sidebar {
+  margin-top: 30px;
+}
+#sidebar h2 {
+  font-size: 1.5em;
+  margin-top: 1em;
+}
+
+#sidebar h2:first-child {
+  margin-top: 0;
+}
+
+#sidebar .list-unstyled li {
+  margin-bottom: 0.5em;
+}
+
+/* Reference index & topics ----------------------------------------------- */
+
+.ref-index th {font-weight: normal;}
+.ref-index h2 {font-size: 20px;}
+
+.ref-index td {vertical-align: top;}
+.ref-index .alias {width: 40%;}
+.ref-index .title {width: 60%;}
+
+.ref-index .alias {width: 40%;}
+.ref-index .title {width: 60%;}
+
+.ref-arguments th {text-align: right; padding-right: 10px;}
+.ref-arguments th, .ref-arguments td {vertical-align: top;}
+.ref-arguments .name {width: 20%;}
+.ref-arguments .desc {width: 80%;}
+
+/* Nice scrolling for wide elements --------------------------------------- */
+
+table {
+  display: block;
+  overflow: auto;
+}
+
+/* Syntax highlighting ---------------------------------------------------- */
+
+pre {
+  word-wrap: normal;
+  word-break: normal;
+  border: 1px solid #eee;
+}
+
+pre, code {
+  background-color: #f8f8f8;
+  color: #333;
+}
+
+pre .img {
+  margin: 5px 0;
+}
+
+pre .img img {
+  background-color: #fff;
+  display: block;
+  height: auto;
+}
+
+code a, pre a {
+  color: #375f84;
+}
+
+.fl      {color: #1514b5;}
+.fu      {color: #000000;} /* function */
+.ch,.st  {color: #036a07;} /* string */
+.kw      {color: #264D66;} /* keyword */
+.co      {color: #888888;} /* comment */
+
+.message { color: black;   font-weight: bolder;}
+.error   { color: orange;  font-weight: bolder;}
+.warning { color: #6A0366; font-weight: bolder;}
+
diff --git a/docs/pkgdown.js b/docs/pkgdown.js
new file mode 100644
index 0000000000000000000000000000000000000000..4b81713289040dbd19cf8e215a054f5c129a5f91
--- /dev/null
+++ b/docs/pkgdown.js
@@ -0,0 +1,45 @@
+$(function() {
+  $("#sidebar").stick_in_parent({offset_top: 40});
+  $('body').scrollspy({
+    target: '#sidebar',
+    offset: 60
+  });
+
+  var cur_path = paths(location.pathname);
+  $("#navbar ul li a").each(function(index, value) {
+    if (value.text == "Home")
+      return;
+    if (value.getAttribute("href") === "#")
+      return;
+
+    var path = paths(value.pathname);
+    if (is_prefix(cur_path, path)) {
+      // Add class to parent <li>, and enclosing <li> if in dropdown
+      var menu_anchor = $(value);
+      menu_anchor.parent().addClass("active");
+      menu_anchor.closest("li.dropdown").addClass("active");
+    }
+  });
+});
+
+function paths(pathname) {
+  var pieces = pathname.split("/");
+  pieces.shift(); // always starts with /
+
+  var end = pieces[pieces.length - 1];
+  if (end === "index.html" || end === "")
+    pieces.pop();
+  return(pieces);
+}
+
+function is_prefix(needle, haystack) {
+  if (needle.length > haystack.lengh)
+    return(false);
+
+  for (var i = 0; i < haystack.length; i++) {
+    if (needle[i] != haystack[i])
+      return(false);
+  }
+
+  return(true);
+}
diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8da9e53a58f222c3d6af52d899915157c4726413
--- /dev/null
+++ b/docs/pkgdown.yml
@@ -0,0 +1,6 @@
+urls:
+  reference: http://oshlack.github.io/splatter/reference
+  article: http://oshlack.github.io/splatter/articles
+articles:
+  splatter: splatter.html
+
diff --git a/docs/reference/BASiCSEstimate.html b/docs/reference/BASiCSEstimate.html
new file mode 100644
index 0000000000000000000000000000000000000000..ba67f96f9a1acf5b2153caee7614daf0a6514a91
--- /dev/null
+++ b/docs/reference/BASiCSEstimate.html
@@ -0,0 +1,226 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate BASiCS simulation parameters — BASiCSEstimate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate BASiCS simulation parameters</h1>
+    </div>
+
+    
+    <p>Estimate simulation parameters for the BASiCS simulation from a real dataset.</p>
+    
+
+    <pre class="usage"><span class='fu'>BASiCSEstimate</span>(<span class='no'>counts</span>, <span class='kw'>spike.info</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>batch</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>n</span> <span class='kw'>=</span> <span class='fl'>20000</span>,
+  <span class='kw'>thin</span> <span class='kw'>=</span> <span class='fl'>10</span>, <span class='kw'>burn</span> <span class='kw'>=</span> <span class='fl'>5000</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newBASiCSParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+  <span class='kw'>progress</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)
+
+<span class='co'># S3 method for SCESet</span>
+<span class='fu'>BASiCSEstimate</span>(<span class='no'>counts</span>, <span class='kw'>spike.info</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>batch</span> <span class='kw'>=</span> <span class='kw'>NULL</span>,
+  <span class='kw'>n</span> <span class='kw'>=</span> <span class='fl'>20000</span>, <span class='kw'>thin</span> <span class='kw'>=</span> <span class='fl'>10</span>, <span class='kw'>burn</span> <span class='kw'>=</span> <span class='fl'>5000</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newBASiCSParams</a></span>(),
+  <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>progress</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)
+
+<span class='co'># S3 method for matrix</span>
+<span class='fu'>BASiCSEstimate</span>(<span class='no'>counts</span>, <span class='kw'>spike.info</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>batch</span> <span class='kw'>=</span> <span class='kw'>NULL</span>,
+  <span class='kw'>n</span> <span class='kw'>=</span> <span class='fl'>20000</span>, <span class='kw'>thin</span> <span class='kw'>=</span> <span class='fl'>10</span>, <span class='kw'>burn</span> <span class='kw'>=</span> <span class='fl'>5000</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newBASiCSParams</a></span>(),
+  <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>progress</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>either a counts matrix or an SCESet object containing count
+data to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>spike.info</th>
+      <td><p>data.frame describing spike-ins with two columns: "Name"
+giving the names of the spike-in features (must match
+<code>rownames(counts)</code>) and "Input" giving the number of input
+molecules.</p></td>
+    </tr>
+    <tr>
+      <th>batch</th>
+      <td><p>vector giving the batch that each cell belongs to.</p></td>
+    </tr>
+    <tr>
+      <th>n</th>
+      <td><p>total number of MCMC iterations. Must be <code>&gt;= max(4, thin)</code> and
+a multiple of <code>thin</code>.</p></td>
+    </tr>
+    <tr>
+      <th>thin</th>
+      <td><p>thining period for the MCMC sampler. Must be <code>&gt;= 2</code>.</p></td>
+    </tr>
+    <tr>
+      <th>burn</th>
+      <td><p>burn-in period for the MCMC sampler. Must be in the range
+<code>1 &lt;= burn &lt; n</code> and a multiple of <code>thin</code>.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>BASiCSParams object to store estimated values in.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages.</p></td>
+    </tr>
+    <tr>
+      <th>progress</th>
+      <td><p>logical. Whether to print additional BASiCS progress
+messages.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>Optional parameters passed to <code><a href='http://www.rdocumentation.org/packages/BASiCS/topics/BASiCS_MCMC'>BASiCS_MCMC</a></code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>BASiCSParams object containing the estimated parameters.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function is just a wrapper around <code><a href='http://www.rdocumentation.org/packages/BASiCS/topics/BASiCS_MCMC'>BASiCS_MCMC</a></code> that
+takes the output and converts it to a BASiCSParams object. Either a set of
+spike-ins or batch information (or both) must be supplied. If only batch
+information is provided there must be at least two batches. See
+<code><a href='http://www.rdocumentation.org/packages/BASiCS/topics/BASiCS_MCMC'>BASiCS_MCMC</a></code> for details.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><span class='co'># NOT RUN {</span>
+<span class='fu'>data</span>(<span class='st'>"sc_example_counts"</span>)
+<span class='no'>spike.info</span> <span class='kw'>&lt;-</span> <span class='fu'>data.frame</span>(<span class='kw'>Name</span> <span class='kw'>=</span> <span class='fu'>rownames</span>(<span class='no'>sc_example_counts</span>)[<span class='fl'>1</span>:<span class='fl'>10</span>],
+                         <span class='kw'>Input</span> <span class='kw'>=</span> <span class='fu'>rnorm</span>(<span class='fl'>10</span>, <span class='fl'>500</span>, <span class='fl'>200</span>),
+                         <span class='kw'>stringsAsFactors</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>)
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>BASiCSEstimate</span>(<span class='no'>sc_example_counts</span>[<span class='fl'>1</span>:<span class='fl'>50</span>, <span class='fl'>1</span>:<span class='fl'>20</span>],
+                         <span class='no'>spike.info</span>)
+<span class='no'>params</span>
+<span class='co'># }</span></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/BASiCSParams.html b/docs/reference/BASiCSParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..b15e37bd6414e05eea5cd4ba74d0497c2c1040bc
--- /dev/null
+++ b/docs/reference/BASiCSParams.html
@@ -0,0 +1,170 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The BASiCSParams class — BASiCSParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The BASiCSParams class</h1>
+    </div>
+
+    
+    <p>S4 class that holds parameters for the BASiCS simulation.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The BASiCS simulation uses the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate.</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+    <dt><em>Batch parameters</em></dt><dd><p><dl class='dl-horizontal'>
+           <dt><code>nBatches</code></dt><dd><p>Number of batches to simulate.</p></dd>
+           <dt><code>batchCells</code></dt><dd><p>Number of cells in each batch.</p></dd>
+        </dl></p></dd>
+    <dt><em>Gene parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>gene.params</code></dt><dd><p>A <code>data.frame</code> containing gene
+            parameters with two coloumns: <code>Mean</code> (mean expression for
+            each biological gene) and <code>Delta</code> (cell-to-cell
+            heterogeneity for each biological gene).</p></dd>
+        </dl></p></dd>
+    <dt><em>Spike-in parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>nSpikes</code></dt><dd><p>The number of spike-ins to simulate.</p></dd>
+            <dt><code>spike.means</code></dt><dd><p>Input molecules for each spike-in.</p></dd>
+        </dl></p></dd>
+    <dt><em>Cell parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>cell.params</code></dt><dd><p>A <code>data.frame</code> containing gene
+            parameters with two coloumns: <code>Phi</code> (mRNA content factor for
+            each cell, scaled to sum to the number of cells in each batch)
+            and <code>S</code> (capture efficient for each cell).</p></dd>
+        </dl></p></dd>
+    <dt><em>Variability parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>theta</code></dt><dd><p>Technical variability parameter for each
+            batch.</p></dd>
+        </dl></p></dd>
+</dl>
+    <p>The parameters not shown in brackets can be estimated from real data using
+<code><a href='BASiCSEstimate.html'>BASiCSEstimate</a></code>. For details of the BASiCS simulation see
+<code><a href='BASiCSSimulate.html'>BASiCSSimulate</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/BASiCSSimulate.html b/docs/reference/BASiCSSimulate.html
new file mode 100644
index 0000000000000000000000000000000000000000..4b37c1d6797780df31355f1d692fe9782ed9f3bb
--- /dev/null
+++ b/docs/reference/BASiCSSimulate.html
@@ -0,0 +1,181 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>BASiCS simulation — BASiCSSimulate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>BASiCS simulation</h1>
+    </div>
+
+    
+    <p>Simulate counts using the BASiCS method.</p>
+    
+
+    <pre class="usage"><span class='fu'>BASiCSSimulate</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newBASiCSParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>BASiCSParams object containing simulation parameters.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>any additional parameter settings to override what is provided in
+<code>params</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment containing simulated counts</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function is just a wrapper around <code><a href='http://www.rdocumentation.org/packages/BASiCS/topics/BASiCS_Sim'>BASiCS_Sim</a></code> that
+takes a <code><a href='BASiCSParams.html'>BASiCSParams</a></code>, runs the simulation then converts the
+output to an <code><a href='http://www.rdocumentation.org/packages/scater/topics/SCESet'>SCESet</a></code> object. See
+<code><a href='http://www.rdocumentation.org/packages/BASiCS/topics/BASiCS_Sim'>BASiCS_Sim</a></code> for more details of how the simulation
+works.</p>
+    
+    <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2>
+
+    <p>Vallejos CA, Marioni JC, Richardson S. BASiCS: Bayesian Analysis of
+Single-Cell Sequencing data. PLoS Comput. Biol. (2015).</p>
+<p>Paper: <a href='10.1371/journal.pcbi.1004333'>10.1371/journal.pcbi.1004333</a></p>
+<p>Code: <a href='https://github.com/catavallejos/BASiCS'>https://github.com/catavallejos/BASiCS</a></p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>BASiCSSimulate</span>()</div><div class='output co'>#&gt; <span class='message'>Getting parameters...</span></div><div class='output co'>#&gt; <span class='warning'>Warning: Number of gene.params not equal to nGenes, gene.params will be sampled.</span></div><div class='output co'>#&gt; <span class='warning'>Warning: Number of cell.params not equal to nCells, cell.params will be sampled.</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts with BASiCS...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='output co'>#&gt; <span class='message'>Done!</span></div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+
+      <li><a href="#references">References</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/Lun2Params.html b/docs/reference/Lun2Params.html
new file mode 100644
index 0000000000000000000000000000000000000000..6d912230a51cc362914aecb3e01db0e38b0fcb58
--- /dev/null
+++ b/docs/reference/Lun2Params.html
@@ -0,0 +1,176 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The Lun2Params class — Lun2Params • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The Lun2Params class</h1>
+    </div>
+
+    
+    <p>S4 class that holds parameters for the Lun2 simulation.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The Lun2 simulation uses the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate.</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+    <dt><em>Gene parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>gene.params</code></dt><dd><p>A <code>data.frame</code> containing gene
+            parameters with two coloumns: <code>Mean</code> (mean expression for
+            each gene) and <code>Disp</code> (dispersion for each gene).</p></dd>
+            <dt><code>zi.params</code></dt><dd><p>A <code>data.frame</code> containing
+            zero-inflated gene parameters with three coloumns: <code>Mean</code>
+            (mean expression for each gene), <code>Disp</code> (dispersion for
+            each, gene), and <code>Prop</code> (zero proportion for each gene).</p></dd>
+        </dl></p></dd>
+    <dt><code>[nPlates]</code></dt><dd><p>The number of plates to simulate.</p></dd>
+    <dt><em>Plate parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>plate.ingroup</code></dt><dd><p>Character vecotor giving the plates
+            considered to be part of the "ingroup".</p></dd>
+            <dt><code>plate.mod</code></dt><dd><p>Plate effect modifier factor. The plate
+            effect variance is divided by this value.</p></dd>
+            <dt><code>plate.var</code></dt><dd><p>Plate effect variance.</p></dd>
+        </dl></p></dd>
+    <dt><em>Cell parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>cell.plates</code></dt><dd><p>Factor giving the plate that each cell
+            comes from.</p></dd>
+            <dt><code>cell.libSizes</code></dt><dd><p>Library size for each cell.</p></dd>
+            <dt><code>cell.libMod</code></dt><dd><p>Modifier factor for library sizes.
+            The library sizes are multiplied by this value.</p></dd>
+        </dl></p></dd>
+    <dt><em>Differential expression parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>de.nGenes</code></dt><dd><p>Number of differentially expressed
+            genes.</p></dd>
+            <dt><code>de.fc</code></dt><dd><p>Fold change for differentially expressed
+            genes.</p></dd>
+    </dl></p></dd>
+</dl>
+    <p>The parameters not shown in brackets can be estimated from real data using
+<code><a href='lun2Estimate.html'>lun2Estimate</a></code>. For details of the Lun2 simulation see
+<code><a href='lun2Simulate.html'>lun2Simulate</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/LunParams.html b/docs/reference/LunParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..6ec76c4f386ae1fb69eb58a54f9e76065dc05193
--- /dev/null
+++ b/docs/reference/LunParams.html
@@ -0,0 +1,168 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The LunParams class — LunParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The LunParams class</h1>
+    </div>
+
+    
+    <p>S4 class that holds parameters for the Lun simulation.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The Lun simulation uses the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate.</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate.</p></dd>
+    <dt><code>[nGroups]</code></dt><dd><p>The number of groups to simulate.</p></dd>
+    <dt><code>[groupCells]</code></dt><dd><p>Vector giving the number of cells in each
+    simulation group/path.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+    <dt><em>Mean parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>[mean.shape]</code></dt><dd><p>Shape parameter for the mean gamma
+            distribution.</p></dd>
+            <dt><code>[mean.rate]</code></dt><dd><p>Rate parameter for the mean gamma
+            distribution.</p></dd>
+        </dl></p></dd>
+    <dt><em>Counts parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>[count.disp]</code></dt><dd><p>The dispersion parameter for the
+            counts negative binomial distribution.</p></dd>
+        </dl></p></dd>
+    <dt><em>Differential expression parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>[de.nGenes]</code></dt><dd><p>The number of genes that are
+            differentially expressed in each group</p></dd>
+            <dt><code>[de.upProp]</code></dt><dd><p>The proportion of differentially
+            expressed genes that are up-regulated in each group</p></dd>
+            <dt><code>[de.upFC]</code></dt><dd><p>The fold change for up-regulated genes</p></dd>
+            <dt><code>[de.downFC]</code></dt><dd><p>The fold change for down-regulated
+            genes</p></dd>
+    </dl></p></dd>
+</dl>
+    <p>The parameters not shown in brackets can be estimated from real data using
+<code><a href='lunEstimate.html'>lunEstimate</a></code>. For details of the Lun simulation see
+<code><a href='lunSimulate.html'>lunSimulate</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/MFAParams.html b/docs/reference/MFAParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..0038585a753d6c7dbff932a21cf636aadb211748
--- /dev/null
+++ b/docs/reference/MFAParams.html
@@ -0,0 +1,155 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The MFAParams class — MFAParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The MFAParams class</h1>
+    </div>
+
+    
+    <p>S4 class that holds parameters for the mfa simulation.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The mfa simulation uses the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate.</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+    <dt><code>[trans.prop]</code></dt><dd><p>Proportion of genes that show transient
+    expression. These genes are briefly up or down-regulated before returning
+    to their initial state</p></dd>
+    <dt><code>[zero.neg]</code></dt><dd><p>Logical. Whether to set negative expression
+    values to zero. This will zero-inflate the data.</p></dd>
+    <dt><code>[dropout.present]</code></dt><dd><p>Logical. Whether to simulate dropout.</p></dd>
+    <dt><code>dropout.lambda</code></dt><dd><p>Lambda parameter for the exponential
+    dropout function.</p></dd>
+</dl>
+    <p>The parameters not shown in brackets can be estimated from real data using
+<code><a href='mfaEstimate.html'>mfaEstimate</a></code>. See <code><a href='http://www.rdocumentation.org/packages/mfa/topics/create_synthetic'>create_synthetic</a></code> for more
+details about the parameters. For details of the Splatter implementation of
+the mfa simulation see <code><a href='mfaSimulate.html'>mfaSimulate</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/Params.html b/docs/reference/Params.html
new file mode 100644
index 0000000000000000000000000000000000000000..219c8cd2239ac9e15df1b1ece80087a794775bf8
--- /dev/null
+++ b/docs/reference/Params.html
@@ -0,0 +1,144 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The Params virtual class — Params • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The Params virtual class</h1>
+    </div>
+
+    
+    <p>Virtual S4 class that all other Params classes inherit from.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The Params class defines the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate.</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+</dl>
+    <p>The parameters not shown in brackets can be estimated from real data.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/PhenoParams.html b/docs/reference/PhenoParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..79dce00cb9cb926c15759b34cfa0740bcdefcd10
--- /dev/null
+++ b/docs/reference/PhenoParams.html
@@ -0,0 +1,154 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The PhenoParams class — PhenoParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The PhenoParams class</h1>
+    </div>
+
+    
+    <p>S4 class that holds parameters for the PhenoPath simulation.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The PhenoPath simulation uses the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate.</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+    <dt><code>[n.de]</code></dt><dd><p>Number of genes to simulate from the differential
+    expression regime</p></dd>
+    <dt><code>[n.pst]</code></dt><dd><p>Number of genes to simulate from the pseudotime
+    regime</p></dd>
+    <dt><code>[n.pst.beta]</code></dt><dd><p>Number of genes to simulate from the
+    pseudotime + beta interactions regime</p></dd>
+    <dt><code>[n.de.pst.beta]</code></dt><dd><p>Number of genes to simulate from the
+    differential expression + pseudotime + interactions regime</p></dd>
+</dl>
+    <p>The parameters not shown in brackets can be estimated from real data using
+<code><a href='phenoEstimate.html'>phenoEstimate</a></code>. For details of the PhenoPath simulation
+see <code><a href='phenoSimulate.html'>phenoSimulate</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/SCDDParams.html b/docs/reference/SCDDParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..e819d63d8f52a377b0609803c50ae8d54471b996
--- /dev/null
+++ b/docs/reference/SCDDParams.html
@@ -0,0 +1,161 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The SCDDParams class — SCDDParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The SCDDParams class</h1>
+    </div>
+
+    
+    <p>S4 class that holds parameters for the scDD simulation.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The SCDD simulation uses the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate (not used).</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate in each condition.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+    <dt><code>SCdat</code></dt><dd><p><code><a href='http://www.rdocumentation.org/packages/SingleCellExperiment/topics/SingleCellExperiment'>SingleCellExperiment</a></code> containing real
+    data.</p></dd>
+    <dt><code>nDE</code></dt><dd><p>Number of DE genes to simulate.</p></dd>
+    <dt><code>nDP</code></dt><dd><p>Number of DP genes to simulate.</p></dd>
+    <dt><code>nDM</code></dt><dd><p>Number of DM genes to simulate.</p></dd>
+    <dt><code>nDB</code></dt><dd><p>Number of DB genes to simulate.</p></dd>
+    <dt><code>nEE</code></dt><dd><p>Number of EE genes to simulate.</p></dd>
+    <dt><code>nEP</code></dt><dd><p>Number of EP genes to simulate.</p></dd>
+    <dt><code>[sd.range]</code></dt><dd><p>Interval for fold change standard deviations.</p></dd>
+    <dt><code>[modeFC]</code></dt><dd><p>Values for DP, DM and DB mode fold changes.</p></dd>
+    <dt><code>[varInflation]</code></dt><dd><p>Variance inflation factors for each
+    condition. If all equal to 1 will be set to <code>NULL</code> (default).</p></dd>
+    <dt><code>[condition]</code></dt><dd><p>String giving the column that represents
+    biological group of interest.</p></dd>
+</dl>
+    <p>The parameters not shown in brackets can be estimated from real data using
+<code><a href='scDDEstimate.html'>scDDEstimate</a></code>. See <code><a href='http://www.rdocumentation.org/packages/scDD/topics/simulateSet'>simulateSet</a></code> for more
+details about the parameters. For details of the Splatter implementation of
+the scDD simulation see <code><a href='scDDSimulate.html'>scDDSimulate</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/SimpleParams.html b/docs/reference/SimpleParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..e7512c99c3fae780aa89dd4655e95cd4b3a99119
--- /dev/null
+++ b/docs/reference/SimpleParams.html
@@ -0,0 +1,152 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The SimpleParams class — SimpleParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The SimpleParams class</h1>
+    </div>
+
+    
+    <p>S4 class that holds parameters for the simple simulation.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The simple simulation uses the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate.</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+    <dt><code>mean.shape</code></dt><dd><p>The shape parameter for the mean gamma
+    distribution.</p></dd>
+    <dt><code>mean.rate</code></dt><dd><p>The rate parameter for the mean gamma
+    distribution.</p></dd>
+    <dt><code>[count.disp]</code></dt><dd><p>The dispersion parameter for the counts
+    negative binomial distribution.</p></dd>
+</dl>
+    <p>The parameters not shown in brackets can be estimated from real data using
+<code><a href='simpleEstimate.html'>simpleEstimate</a></code>. For details of the simple simulation
+see <code><a href='simpleSimulate.html'>simpleSimulate</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/SplatParams.html b/docs/reference/SplatParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..9a310a42cfa82c34db968d38d81116859d4d956a
--- /dev/null
+++ b/docs/reference/SplatParams.html
@@ -0,0 +1,232 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The SplatParams class — SplatParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The SplatParams class</h1>
+    </div>
+
+    
+    <p>S4 class that holds parameters for the Splatter simulation.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The Splatter simulation requires the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate.</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+    <dt><em>Batch parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>[nBatches]</code></dt><dd><p>The number of batches to simulate.</p></dd>
+            <dt><code>[batchCells]</code></dt><dd><p>Vector giving the number of cells in
+            each batch.</p></dd>
+            <dt><code>[batch.facLoc]</code></dt><dd><p>Location (meanlog) parameter for the
+            batch effect factor log-normal distribution. Can be a vector.</p></dd>
+            <dt><code>[batch.facScale]</code></dt><dd><p>Scale (sdlog) parameter for the
+            batch effect factor log-normal distribution. Can be a vector.</p></dd>
+        </dl></p></dd>
+    <dt><em>Mean parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>mean.shape</code></dt><dd><p>Shape parameter for the mean gamma
+            distribution.</p></dd>
+            <dt><code>mean.rate</code></dt><dd><p>Rate parameter for the mean gamma
+            distribution.</p></dd>
+        </dl></p></dd>
+    <dt><em>Library size parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>lib.loc</code></dt><dd><p>Location (meanlog) parameter for the
+            library size log-normal distribution.</p></dd>
+            <dt><code>lib.scale</code></dt><dd><p>Scale (sdlog) parameter for the library
+            size log-normal distribution.</p></dd>
+        </dl></p></dd>
+    <dt><em>Expression outlier parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>out.prob</code></dt><dd><p>Probability that a gene is an expression
+            outlier.</p></dd>
+            <dt><code>out.facLoc</code></dt><dd><p>Location (meanlog) parameter for the
+            expression outlier factor log-normal distribution.</p></dd>
+            <dt><code>out.facScale</code></dt><dd><p>Scale (sdlog) parameter for the
+            expression outlier factor log-normal distribution.</p></dd>
+        </dl></p></dd>
+    <dt><em>Group parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>[nGroups]</code></dt><dd><p>The number of groups or paths to
+            simulate.</p></dd>
+            <dt><code>[group.prob]</code></dt><dd><p>Probability that a cell comes from a
+            group.</p></dd>
+        </dl></p></dd>
+    <dt><em>Differential expression parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>[de.prob]</code></dt><dd><p>Probability that a gene is differentially
+            expressed in a group. Can be a vector.</p></dd>
+            <dt><code>[de.loProb]</code></dt><dd><p>Probability that a differentially
+            expressed gene is down-regulated. Can be a vector.</p></dd>
+            <dt><code>[de.facLoc]</code></dt><dd><p>Location (meanlog) parameter for the
+            differential expression factor log-normal distribution. Can be a
+            vector.</p></dd>
+            <dt><code>[de.facScale]</code></dt><dd><p>Scale (sdlog) parameter for the
+            differential expression factor log-normal distribution. Can be a
+            vector.</p></dd>
+        </dl></p></dd>
+    <dt><em>Biological Coefficient of Variation parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>bcv.common</code></dt><dd><p>Underlying common dispersion across all
+            genes.</p></dd>
+            <dt><code>bcv.df</code></dt><dd><p>Degrees of Freedom for the BCV inverse
+            chi-squared distribution.</p></dd>
+        </dl></p></dd>
+    <dt><em>Dropout parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>dropout.present</code></dt><dd><p>Logical. Whether to simulate
+            dropout.</p></dd>
+            <dt><code>dropout.mid</code></dt><dd><p>Midpoint parameter for the dropout
+            logistic function.</p></dd>
+            <dt><code>dropout.shape</code></dt><dd><p>Shape parameter for the dropout
+            logistic function.</p></dd>
+        </dl></p></dd>
+    <dt><em>Differentiation path parameters</em></dt><dd><p><dl class='dl-horizontal'>
+            <dt><code>[path.from]</code></dt><dd><p>Vector giving the originating point of
+            each path. This allows path structure such as a cell type which
+            differentiates into an intermediate cell type that then
+            differentiates into two mature cell types. A path structure of
+            this form would have a "from" parameter of c(0, 1, 1) (where 0 is
+            the origin). If no vector is given all paths will start at the
+            origin.</p></dd>
+            <dt><code>[path.length]</code></dt><dd><p>Vector giving the number of steps to
+            simulate along each path. If a single value is given it will be
+            applied to all paths.</p></dd>
+            <dt><code>[path.skew]</code></dt><dd><p>Vector giving the skew of each path.
+            Values closer to 1 will give more cells towards the starting
+            population, values closer to 0 will give more cells towards the
+            final population. If a single value is given it will be applied
+            to all paths.</p></dd>
+            <dt><code>[path.nonlinearProb]</code></dt><dd><p>Probability that a gene
+            follows a non-linear path along the differentiation path. This
+            allows more complex gene patterns such as a gene being equally
+            expressed at the beginning an end of a path but lowly expressed
+            in the middle.</p></dd>
+            <dt><code>[path.sigmaFac]</code></dt><dd><p>Sigma factor for non-linear gene
+            paths. A higher value will result in more extreme non-linear
+            variations along a path.</p></dd>
+    </dl></p></dd>
+</dl>
+    <p>The parameters not shown in brackets can be estimated from real data using
+<code><a href='splatEstimate.html'>splatEstimate</a></code>. For details of the Splatter simulation
+see <code><a href='splatSimulate.html'>splatSimulate</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/ZINBParams.html b/docs/reference/ZINBParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..531f0b99428c90fb54fea5a6c93b55cc50b3cf8b
--- /dev/null
+++ b/docs/reference/ZINBParams.html
@@ -0,0 +1,151 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>The ZINBParams class — ZINBParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>The ZINBParams class</h1>
+    </div>
+
+    
+    <p>S4 class that holds parameters for the ZINB-WaVE simulation.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="parameters"><a class="anchor" href="#parameters"></a>Parameters</h2>
+
+    
+    <p>The ZINB-WaVE simulation uses the following parameters:</p><dl class='dl-horizontal'>
+    <dt><code>nGenes</code></dt><dd><p>The number of genes to simulate.</p></dd>
+    <dt><code>nCells</code></dt><dd><p>The number of cells to simulate.</p></dd>
+    <dt><code>[seed]</code></dt><dd><p>Seed to use for generating random numbers.</p></dd>
+    <dt><code>model</code></dt><dd><p>Object describing a ZINB model.</p></dd>
+</dl>
+    <p>The majority of the parameters for this simulation are stored in a
+<code><a href='http://www.rdocumentation.org/packages/zinbwave/topics/ZinbModel-class'>ZinbModel</a></code> object. Please refer to the documentation
+for this class and its constructor(<code><a href='http://www.rdocumentation.org/packages/zinbwave/topics/zinbModel'>zinbModel</a></code>) for
+details about all the parameters.</p>
+<p>The parameters not shown in brackets can be estimated from real data using
+<code><a href='zinbEstimate.html'>zinbEstimate</a></code>. For details of the ZINB-WaVE simulation
+see <code><a href='zinbSimulate.html'>zinbSimulate</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#parameters">Parameters</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/addFeatureStats.html b/docs/reference/addFeatureStats.html
new file mode 100644
index 0000000000000000000000000000000000000000..09f2c7d45453b831d5795b704ef917265ec4d296
--- /dev/null
+++ b/docs/reference/addFeatureStats.html
@@ -0,0 +1,180 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Add feature statistics — addFeatureStats • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Add feature statistics</h1>
+    </div>
+
+    
+    <p>Add additional feature statistics to a SingleCellExperiment object</p>
+    
+
+    <pre class="usage"><span class='fu'>addFeatureStats</span>(<span class='no'>sce</span>, <span class='kw'>value</span> <span class='kw'>=</span> <span class='fu'>c</span>(<span class='st'>"counts"</span>, <span class='st'>"cpm"</span>, <span class='st'>"tpm"</span>, <span class='st'>"fpkm"</span>), <span class='kw'>log</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>,
+  <span class='kw'>offset</span> <span class='kw'>=</span> <span class='fl'>1</span>, <span class='kw'>no.zeros</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sce</th>
+      <td><p>SingleCellExperiment to add feature statistics to.</p></td>
+    </tr>
+    <tr>
+      <th>value</th>
+      <td><p>the expression value to calculate statistics for. Options are
+"counts", "cpm", "tpm" or "fpkm". The values need to exist in the
+given SingleCellExperiment.</p></td>
+    </tr>
+    <tr>
+      <th>log</th>
+      <td><p>logical. Whether to take log2 before calculating statistics.</p></td>
+    </tr>
+    <tr>
+      <th>offset</th>
+      <td><p>offset to add to avoid taking log of zero.</p></td>
+    </tr>
+    <tr>
+      <th>no.zeros</th>
+      <td><p>logical. Whether to remove all zeros from each feature before
+calculating statistics.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with additional feature statistics</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>Currently adds the following statistics: mean, variance, coefficient of
+variation, median and median absolute deviation. Statistics are added to
+the <code><a href='http://www.rdocumentation.org/packages/SummarizedExperiment/topics/SummarizedExperiment-class'>rowData</a></code> slot and are named
+<code>Stat[Log]Value[No0]</code> where <code>Log</code> and <code>No0</code> are added if those
+arguments are true. UpperCamelCase is used to differentiate these columns
+from those added by analysis packages.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/addGeneLengths.html b/docs/reference/addGeneLengths.html
new file mode 100644
index 0000000000000000000000000000000000000000..b6a9822baabea89b856596969d345db80946c8df
--- /dev/null
+++ b/docs/reference/addGeneLengths.html
@@ -0,0 +1,203 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Add gene lengths — addGeneLengths • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Add gene lengths</h1>
+    </div>
+
+    
+    <p>Add gene lengths to an SingleCellExperiment object</p>
+    
+
+    <pre class="usage"><span class='fu'>addGeneLengths</span>(<span class='no'>sce</span>, <span class='kw'>method</span> <span class='kw'>=</span> <span class='fu'>c</span>(<span class='st'>"generate"</span>, <span class='st'>"sample"</span>), <span class='kw'>loc</span> <span class='kw'>=</span> <span class='fl'>7.9</span>,
+  <span class='kw'>scale</span> <span class='kw'>=</span> <span class='fl'>0.7</span>, <span class='kw'>lengths</span> <span class='kw'>=</span> <span class='kw'>NULL</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sce</th>
+      <td><p>SingleCellExperiment to add gene lengths to.</p></td>
+    </tr>
+    <tr>
+      <th>method</th>
+      <td><p>Method to use for creating lengths.</p></td>
+    </tr>
+    <tr>
+      <th>loc</th>
+      <td><p>Location parameter for the generate method.</p></td>
+    </tr>
+    <tr>
+      <th>scale</th>
+      <td><p>Scale parameter for the generate method.</p></td>
+    </tr>
+    <tr>
+      <th>lengths</th>
+      <td><p>Vector of lengths for the sample method.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with added gene lengths</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function adds simulated gene lengths to the
+<code><a href='http://www.rdocumentation.org/packages/SummarizedExperiment/topics/SummarizedExperiment-class'>rowData</a></code> slot of a
+<code><a href='http://www.rdocumentation.org/packages/SingleCellExperiment/topics/SingleCellExperiment'>SingleCellExperiment</a></code> object that can be
+used for calculating length normalised expression values such as TPM or FPKM.
+The <code>generate</code> method simulates lengths using a (rounded) log-normal
+distribution, with the default <code>loc</code> and <code>scale</code> parameters based
+on human protein-coding genes. Alternatively the <code>sample</code> method can be
+used which randomly samples lengths (with replacement) from a supplied
+vector.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='co'># Default generate method</span>
+<span class='no'>sce</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='simpleSimulate.html'>simpleSimulate</a></span>()</div><div class='output co'>#&gt; <span class='message'>Simulating means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='input'><span class='no'>sce</span> <span class='kw'>&lt;-</span> <span class='fu'>addGeneLengths</span>(<span class='no'>sce</span>)
+<span class='fu'>head</span>(<span class='fu'>rowData</span>(<span class='no'>sce</span>))</div><div class='output co'>#&gt; DataFrame with 6 rows and 3 columns
+#&gt;       Gene     GeneMean    Length
+#&gt;   &lt;factor&gt;    &lt;numeric&gt; &lt;numeric&gt;
+#&gt; 1    Gene1 0.7546303813       885
+#&gt; 2    Gene2 0.1242896647      2280
+#&gt; 3    Gene3 0.1160044662      3160
+#&gt; 4    Gene4 0.1938835897      1612
+#&gt; 5    Gene5 0.0020382615      1890
+#&gt; 6    Gene6 0.0006305612      1488</div><div class='input'># Sample method (human coding genes)
+</div><span class='co'># NOT RUN {</span>
+<span class='fu'>library</span>(<span class='no'>TxDb.Hsapiens.UCSC.hg19.knownGene</span>)
+<span class='fu'>library</span>(<span class='no'>GenomicFeatures</span>)
+<span class='no'>txdb</span> <span class='kw'>&lt;-</span> <span class='no'>TxDb.Hsapiens.UCSC.hg19.knownGene</span>
+<span class='no'>tx.lens</span> <span class='kw'>&lt;-</span> <span class='fu'>transcriptLengths</span>(<span class='no'>txdb</span>, <span class='kw'>with.cds_len</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)
+<span class='no'>tx.lens</span> <span class='kw'>&lt;-</span> <span class='no'>tx.lens</span>[<span class='no'>tx.lens</span>$<span class='no'>cds_len</span> <span class='kw'>&gt;</span> <span class='fl'>0</span>, ]
+<span class='no'>gene.lens</span> <span class='kw'>&lt;-</span> <span class='fu'>max</span>(<span class='fu'>splitAsList</span>(<span class='no'>tx.lens</span>$<span class='no'>tx_len</span>, <span class='no'>tx.lens</span>$<span class='no'>gene_id</span>))
+<span class='no'>sce</span> <span class='kw'>&lt;-</span> <span class='fu'>addGeneLengths</span>(<span class='no'>sce</span>, <span class='kw'>method</span> <span class='kw'>=</span> <span class='st'>"sample"</span>, <span class='kw'>lengths</span> <span class='kw'>=</span> <span class='no'>gene.lens</span>)
+<span class='co'># }</span></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/bridge.html b/docs/reference/bridge.html
new file mode 100644
index 0000000000000000000000000000000000000000..10ca1eb6d96ba4e5021c2f9e007a05b2b48638ab
--- /dev/null
+++ b/docs/reference/bridge.html
@@ -0,0 +1,166 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Brownian bridge — bridge • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Brownian bridge</h1>
+    </div>
+
+    
+    <p>Calculate a smoothed Brownian bridge between two points. A Brownian bridge is
+a random walk with fixed end points.</p>
+    
+
+    <pre class="usage"><span class='fu'>bridge</span>(<span class='kw'>x</span> <span class='kw'>=</span> <span class='fl'>0</span>, <span class='kw'>y</span> <span class='kw'>=</span> <span class='fl'>0</span>, <span class='kw'>N</span> <span class='kw'>=</span> <span class='fl'>5</span>, <span class='kw'>n</span> <span class='kw'>=</span> <span class='fl'>100</span>, <span class='kw'>sigma.fac</span> <span class='kw'>=</span> <span class='fl'>0.8</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>x</th>
+      <td><p>starting value.</p></td>
+    </tr>
+    <tr>
+      <th>y</th>
+      <td><p>end value.</p></td>
+    </tr>
+    <tr>
+      <th>N</th>
+      <td><p>number of steps in random walk.</p></td>
+    </tr>
+    <tr>
+      <th>n</th>
+      <td><p>number of points in smoothed bridge.</p></td>
+    </tr>
+    <tr>
+      <th>sigma.fac</th>
+      <td><p>multiplier specifying how extreme each step can be.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Vector of length n following a path from x to y.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/compareSCESets.html b/docs/reference/compareSCESets.html
new file mode 100644
index 0000000000000000000000000000000000000000..fbe692ebb0f324ad408fce202e9518daea2a87b9
--- /dev/null
+++ b/docs/reference/compareSCESets.html
@@ -0,0 +1,203 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Compare SCESet objects — compareSCESets • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Compare SCESet objects</h1>
+    </div>
+
+    
+    <p>Combine the data from several SCESet objects and produce some basic plots
+comparing them.</p>
+    
+
+    <pre class="usage"><span class='fu'>compareSCESets</span>(<span class='no'>sces</span>, <span class='kw'>point.size</span> <span class='kw'>=</span> <span class='fl'>0.1</span>, <span class='kw'>point.alpha</span> <span class='kw'>=</span> <span class='fl'>0.1</span>, <span class='kw'>fits</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+  <span class='kw'>colours</span> <span class='kw'>=</span> <span class='kw'>NULL</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sces</th>
+      <td><p>named list of SCESet objects to combine and compare.</p></td>
+    </tr>
+    <tr>
+      <th>point.size</th>
+      <td><p>size of points in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>point.alpha</th>
+      <td><p>opacity of points in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>fits</th>
+      <td><p>whether to include fits in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>colours</th>
+      <td><p>vector of colours to use for each dataset.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>List containing the combined datasets and plots.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The returned list has three items:</p><dl class='dl-horizontal'>
+    <dt><code>FeatureData</code></dt><dd><p>Combined feature data from the provided
+    SCESets.</p></dd>
+    <dt><code>PhenoData</code></dt><dd><p>Combined pheno data from the provided SCESets.</p></dd>
+    <dt><code>Plots</code></dt><dd><p>Comparison plots
+        <dl class='dl-horizontal'>
+            <dt><code>Means</code></dt><dd><p>Boxplot of mean distribution.</p></dd>
+            <dt><code>Variances</code></dt><dd><p>Boxplot of variance distribution.</p></dd>
+            <dt><code>MeanVar</code></dt><dd><p>Scatter plot with fitted lines showing the
+            mean-variance relationship.</p></dd>
+            <dt><code>LibraySizes</code></dt><dd><p>Boxplot of the library size
+            distribution.</p></dd>
+            <dt><code>ZerosGene</code></dt><dd><p>Boxplot of the percentage of each gene
+            that is zero.</p></dd>
+            <dt><code>ZerosCell</code></dt><dd><p>Boxplot of the percentage of each cell
+            that is zero.</p></dd>
+            <dt><code>MeanZeros</code></dt><dd><p>Scatter plot with fitted lines showing
+            the mean-zeros relationship.</p></dd>
+    </dl></p></dd>
+</dl>
+    <p>The plots returned by this function are created using
+<code><a href='http://www.rdocumentation.org/packages/ggplot2/topics/ggplot'>ggplot</a></code> and are only a sample of the kind of plots you
+might like to consider. The data used to create these plots is also returned
+and should be in the correct format to allow you to create further plots
+using <code><a href='http://www.rdocumentation.org/packages/ggplot2/topics/ggplot'>ggplot</a></code>.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim1</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='splatSimulate.html'>splatSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>batchCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Getting parameters...</span></div><div class='output co'>#&gt; <span class='message'>Creating simulation object...</span></div><div class='output co'>#&gt; <span class='message'>Simulating library sizes...</span></div><div class='output co'>#&gt; <span class='message'>Simulating gene means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating BCV...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts..</span></div><div class='output co'>#&gt; <span class='message'>Simulating dropout (if needed)...</span></div><div class='output co'>#&gt; <span class='message'>Creating final SCESet...</span></div><div class='output co'>#&gt; <span class='message'>Done!</span></div><div class='input'><span class='no'>sim2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='simpleSimulate.html'>simpleSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Simulating means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final SCESet...</span></div><div class='input'><span class='no'>comparison</span> <span class='kw'>&lt;-</span> <span class='fu'>compareSCESets</span>(<span class='fu'>list</span>(<span class='kw'>Splat</span> <span class='kw'>=</span> <span class='no'>sim1</span>, <span class='kw'>Simple</span> <span class='kw'>=</span> <span class='no'>sim2</span>))
+<span class='fu'>names</span>(<span class='no'>comparison</span>)</div><div class='output co'>#&gt; [1] "FeatureData" "PhenoData"   "Plots"      </div><div class='input'><span class='fu'>names</span>(<span class='no'>comparison</span>$<span class='no'>Plots</span>)</div><div class='output co'>#&gt; [1] "Means"        "Variances"    "MeanVar"      "LibrarySizes" "ZerosGene"   
+#&gt; [6] "ZerosCell"    "MeanZeros"   </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/compareSCEs.html b/docs/reference/compareSCEs.html
new file mode 100644
index 0000000000000000000000000000000000000000..d1ec1daae19d927f28f5e2ef4c7ba2a1237eefd7
--- /dev/null
+++ b/docs/reference/compareSCEs.html
@@ -0,0 +1,205 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Compare SingleCellExperiment objects — compareSCEs • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Compare SingleCellExperiment objects</h1>
+    </div>
+
+    
+    <p>Combine the data from several SingleCellExperiment objects and produce some
+basic plots comparing them.</p>
+    
+
+    <pre class="usage"><span class='fu'>compareSCEs</span>(<span class='no'>sces</span>, <span class='kw'>point.size</span> <span class='kw'>=</span> <span class='fl'>0.1</span>, <span class='kw'>point.alpha</span> <span class='kw'>=</span> <span class='fl'>0.1</span>, <span class='kw'>fits</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+  <span class='kw'>colours</span> <span class='kw'>=</span> <span class='kw'>NULL</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sces</th>
+      <td><p>named list of SingleCellExperiment objects to combine and
+compare.</p></td>
+    </tr>
+    <tr>
+      <th>point.size</th>
+      <td><p>size of points in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>point.alpha</th>
+      <td><p>opacity of points in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>fits</th>
+      <td><p>whether to include fits in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>colours</th>
+      <td><p>vector of colours to use for each dataset.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>List containing the combined datasets and plots.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The returned list has three items:</p><dl class='dl-horizontal'>
+    <dt><code>FeatureData</code></dt><dd><p>Combined feature data from the provided
+    SingleCellExperiments.</p></dd>
+    <dt><code>PhenoData</code></dt><dd><p>Combined pheno data from the provided
+    SingleCellExperiments.</p></dd>
+    <dt><code>Plots</code></dt><dd><p>Comparison plots
+        <dl class='dl-horizontal'>
+            <dt><code>Means</code></dt><dd><p>Boxplot of mean distribution.</p></dd>
+            <dt><code>Variances</code></dt><dd><p>Boxplot of variance distribution.</p></dd>
+            <dt><code>MeanVar</code></dt><dd><p>Scatter plot with fitted lines showing the
+            mean-variance relationship.</p></dd>
+            <dt><code>LibraySizes</code></dt><dd><p>Boxplot of the library size
+            distribution.</p></dd>
+            <dt><code>ZerosGene</code></dt><dd><p>Boxplot of the percentage of each gene
+            that is zero.</p></dd>
+            <dt><code>ZerosCell</code></dt><dd><p>Boxplot of the percentage of each cell
+            that is zero.</p></dd>
+            <dt><code>MeanZeros</code></dt><dd><p>Scatter plot with fitted lines showing
+            the mean-zeros relationship.</p></dd>
+    </dl></p></dd>
+</dl>
+    <p>The plots returned by this function are created using
+<code><a href='http://www.rdocumentation.org/packages/ggplot2/topics/ggplot'>ggplot</a></code> and are only a sample of the kind of plots you
+might like to consider. The data used to create these plots is also returned
+and should be in the correct format to allow you to create further plots
+using <code><a href='http://www.rdocumentation.org/packages/ggplot2/topics/ggplot'>ggplot</a></code>.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim1</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='splatSimulate.html'>splatSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>batchCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Getting parameters...</span></div><div class='output co'>#&gt; <span class='message'>Creating simulation object...</span></div><div class='output co'>#&gt; <span class='message'>Simulating library sizes...</span></div><div class='output co'>#&gt; <span class='message'>Simulating gene means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating BCV...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts..</span></div><div class='output co'>#&gt; <span class='message'>Simulating dropout (if needed)...</span></div><div class='output co'>#&gt; <span class='message'>Done!</span></div><div class='input'><span class='no'>sim2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='simpleSimulate.html'>simpleSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Simulating means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='input'><span class='no'>comparison</span> <span class='kw'>&lt;-</span> <span class='fu'>compareSCEs</span>(<span class='fu'>list</span>(<span class='kw'>Splat</span> <span class='kw'>=</span> <span class='no'>sim1</span>, <span class='kw'>Simple</span> <span class='kw'>=</span> <span class='no'>sim2</span>))
+<span class='fu'>names</span>(<span class='no'>comparison</span>)</div><div class='output co'>#&gt; [1] "FeatureData" "PhenoData"   "Plots"      </div><div class='input'><span class='fu'>names</span>(<span class='no'>comparison</span>$<span class='no'>Plots</span>)</div><div class='output co'>#&gt; [1] "Means"        "Variances"    "MeanVar"      "LibrarySizes" "ZerosGene"   
+#&gt; [6] "ZerosCell"    "MeanZeros"   </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/diffSCESets.html b/docs/reference/diffSCESets.html
new file mode 100644
index 0000000000000000000000000000000000000000..0a70e1fdcb10ebf4c6c5a6b0fa0814f2fa0d4589
--- /dev/null
+++ b/docs/reference/diffSCESets.html
@@ -0,0 +1,223 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Diff SCESet objects — diffSCESets • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Diff SCESet objects</h1>
+    </div>
+
+    
+    <p>Combine the data from several SCESet objects and produce some basic plots
+comparing them to a reference.</p>
+    
+
+    <pre class="usage"><span class='fu'>diffSCESets</span>(<span class='no'>sces</span>, <span class='no'>ref</span>, <span class='kw'>point.size</span> <span class='kw'>=</span> <span class='fl'>0.1</span>, <span class='kw'>point.alpha</span> <span class='kw'>=</span> <span class='fl'>0.1</span>, <span class='kw'>fits</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+  <span class='kw'>colours</span> <span class='kw'>=</span> <span class='kw'>NULL</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sces</th>
+      <td><p>named list of SCESet objects to combine and compare.</p></td>
+    </tr>
+    <tr>
+      <th>ref</th>
+      <td><p>string giving the name of the SCESet to use as the reference</p></td>
+    </tr>
+    <tr>
+      <th>point.size</th>
+      <td><p>size of points in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>point.alpha</th>
+      <td><p>opacity of points in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>fits</th>
+      <td><p>whether to include fits in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>colours</th>
+      <td><p>vector of colours to use for each dataset.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>List containing the combined datasets and plots.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function aims to look at the differences between a reference SCESet and
+one or more others. It requires each SCESet to have the same dimensions.
+Properties are compared by ranks, for example when comparing the means the
+values are ordered and the differences between the reference and another
+dataset plotted. A series of Q-Q plots are also returned.</p>
+<p>The returned list has five items:</p><dl class='dl-horizontal'>
+    <dt><code>Reference</code></dt><dd><p>The SCESet used as the reference.</p></dd>
+    <dt><code>FeatureData</code></dt><dd><p>Combined feature data from the provided
+    SCESets.</p></dd>
+    <dt><code>PhenoData</code></dt><dd><p>Combined pheno data from the provided SCESets.</p></dd>
+    <dt><code>Plots</code></dt><dd><p>Difference plots
+        <dl class='dl-horizontal'>
+            <dt><code>Means</code></dt><dd><p>Boxplot of mean differences.</p></dd>
+            <dt><code>Variances</code></dt><dd><p>Boxplot of variance differences.</p></dd>
+            <dt><code>MeanVar</code></dt><dd><p>Scatter plot showing the difference from
+            the reference variance across expression ranks.</p></dd>
+            <dt><code>LibraySizes</code></dt><dd><p>Boxplot of the library size
+            differences.</p></dd>
+            <dt><code>ZerosGene</code></dt><dd><p>Boxplot of the differences in the
+            percentage of each gene that is zero.</p></dd>
+            <dt><code>ZerosCell</code></dt><dd><p>Boxplot of the differences in the
+            percentage of each cell that is zero.</p></dd>
+            <dt><code>MeanZeros</code></dt><dd><p>Scatter plot showing the difference from
+            the reference percentage of zeros across expression ranks.</p></dd>
+    </dl></p></dd>
+  <dt><code>QQPlots</code></dt><dd><p>Quantile-Quantile plots
+      <dl class='dl-horizontal'>
+          <dt><code>Means</code></dt><dd><p>Q-Q plot of the means.</p></dd>
+          <dt><code>Variances</code></dt><dd><p>Q-Q plot of the variances.</p></dd>
+          <dt><code>LibrarySizes</code></dt><dd><p>Q-Q plot of the library sizes.</p></dd>
+          <dt><code>ZerosGene</code></dt><dd><p>Q-Q plot of the percentage of zeros per
+          gene.</p></dd>
+          <dt><code>ZerosCell</code></dt><dd><p>Q-Q plot of the percentage of zeros per
+          cell.</p></dd>
+      </dl></p></dd>
+</dl>
+    <p>The plots returned by this function are created using
+<code><a href='http://www.rdocumentation.org/packages/ggplot2/topics/ggplot'>ggplot</a></code> and are only a sample of the kind of plots you
+might like to consider. The data used to create these plots is also returned
+and should be in the correct format to allow you to create further plots
+using <code><a href='http://www.rdocumentation.org/packages/ggplot2/topics/ggplot'>ggplot</a></code>.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim1</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='splatSimulate.html'>splatSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>batchCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Getting parameters...</span></div><div class='output co'>#&gt; <span class='message'>Creating simulation object...</span></div><div class='output co'>#&gt; <span class='message'>Simulating library sizes...</span></div><div class='output co'>#&gt; <span class='message'>Simulating gene means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating BCV...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts..</span></div><div class='output co'>#&gt; <span class='message'>Simulating dropout (if needed)...</span></div><div class='output co'>#&gt; <span class='message'>Creating final SCESet...</span></div><div class='output co'>#&gt; <span class='message'>Done!</span></div><div class='input'><span class='no'>sim2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='simpleSimulate.html'>simpleSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Simulating means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final SCESet...</span></div><div class='input'><span class='no'>difference</span> <span class='kw'>&lt;-</span> <span class='fu'>diffSCESets</span>(<span class='fu'>list</span>(<span class='kw'>Splat</span> <span class='kw'>=</span> <span class='no'>sim1</span>, <span class='kw'>Simple</span> <span class='kw'>=</span> <span class='no'>sim2</span>), <span class='kw'>ref</span> <span class='kw'>=</span> <span class='st'>"Simple"</span>)
+<span class='fu'>names</span>(<span class='no'>difference</span>)</div><div class='output co'>#&gt; [1] "Reference"   "FeatureData" "PhenoData"   "Plots"       "QQPlots"    </div><div class='input'><span class='fu'>names</span>(<span class='no'>difference</span>$<span class='no'>Plots</span>)</div><div class='output co'>#&gt; [1] "Means"        "Variances"    "MeanVar"      "LibrarySizes" "ZerosGene"   
+#&gt; [6] "ZerosCell"    "MeanZeros"   </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/diffSCEs.html b/docs/reference/diffSCEs.html
new file mode 100644
index 0000000000000000000000000000000000000000..500f55f6e2ccb6fc2ffb7477b6b443d6092ed1bf
--- /dev/null
+++ b/docs/reference/diffSCEs.html
@@ -0,0 +1,227 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Diff SingleCellExperiment objects — diffSCEs • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Diff SingleCellExperiment objects</h1>
+    </div>
+
+    
+    <p>Combine the data from several SingleCellExperiment objects and produce some
+basic plots comparing them to a reference.</p>
+    
+
+    <pre class="usage"><span class='fu'>diffSCEs</span>(<span class='no'>sces</span>, <span class='no'>ref</span>, <span class='kw'>point.size</span> <span class='kw'>=</span> <span class='fl'>0.1</span>, <span class='kw'>point.alpha</span> <span class='kw'>=</span> <span class='fl'>0.1</span>, <span class='kw'>fits</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+  <span class='kw'>colours</span> <span class='kw'>=</span> <span class='kw'>NULL</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sces</th>
+      <td><p>named list of SingleCellExperiment objects to combine and
+compare.</p></td>
+    </tr>
+    <tr>
+      <th>ref</th>
+      <td><p>string giving the name of the SingleCellExperiment to use as the
+reference</p></td>
+    </tr>
+    <tr>
+      <th>point.size</th>
+      <td><p>size of points in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>point.alpha</th>
+      <td><p>opacity of points in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>fits</th>
+      <td><p>whether to include fits in scatter plots.</p></td>
+    </tr>
+    <tr>
+      <th>colours</th>
+      <td><p>vector of colours to use for each dataset.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>List containing the combined datasets and plots.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function aims to look at the differences between a reference
+SingleCellExperiment and one or more others. It requires each
+SingleCellExperiment to have the same dimensions. Properties are compared by
+ranks, for example when comparing the means the values are ordered and the
+differences between the reference and another dataset plotted. A series of
+Q-Q plots are also returned.</p>
+<p>The returned list has five items:</p><dl class='dl-horizontal'>
+    <dt><code>Reference</code></dt><dd><p>The SingleCellExperiment used as the reference.</p></dd>
+    <dt><code>FeatureData</code></dt><dd><p>Combined feature data from the provided
+    SingleCellExperiments.</p></dd>
+    <dt><code>PhenoData</code></dt><dd><p>Combined pheno data from the provided
+    SingleCellExperiments.</p></dd>
+    <dt><code>Plots</code></dt><dd><p>Difference plots
+        <dl class='dl-horizontal'>
+            <dt><code>Means</code></dt><dd><p>Boxplot of mean differences.</p></dd>
+            <dt><code>Variances</code></dt><dd><p>Boxplot of variance differences.</p></dd>
+            <dt><code>MeanVar</code></dt><dd><p>Scatter plot showing the difference from
+            the reference variance across expression ranks.</p></dd>
+            <dt><code>LibraySizes</code></dt><dd><p>Boxplot of the library size
+            differences.</p></dd>
+            <dt><code>ZerosGene</code></dt><dd><p>Boxplot of the differences in the
+            percentage of each gene that is zero.</p></dd>
+            <dt><code>ZerosCell</code></dt><dd><p>Boxplot of the differences in the
+            percentage of each cell that is zero.</p></dd>
+            <dt><code>MeanZeros</code></dt><dd><p>Scatter plot showing the difference from
+            the reference percentage of zeros across expression ranks.</p></dd>
+    </dl></p></dd>
+  <dt><code>QQPlots</code></dt><dd><p>Quantile-Quantile plots
+      <dl class='dl-horizontal'>
+          <dt><code>Means</code></dt><dd><p>Q-Q plot of the means.</p></dd>
+          <dt><code>Variances</code></dt><dd><p>Q-Q plot of the variances.</p></dd>
+          <dt><code>LibrarySizes</code></dt><dd><p>Q-Q plot of the library sizes.</p></dd>
+          <dt><code>ZerosGene</code></dt><dd><p>Q-Q plot of the percentage of zeros per
+          gene.</p></dd>
+          <dt><code>ZerosCell</code></dt><dd><p>Q-Q plot of the percentage of zeros per
+          cell.</p></dd>
+      </dl></p></dd>
+</dl>
+    <p>The plots returned by this function are created using
+<code><a href='http://www.rdocumentation.org/packages/ggplot2/topics/ggplot'>ggplot</a></code> and are only a sample of the kind of plots you
+might like to consider. The data used to create these plots is also returned
+and should be in the correct format to allow you to create further plots
+using <code><a href='http://www.rdocumentation.org/packages/ggplot2/topics/ggplot'>ggplot</a></code>.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim1</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='splatSimulate.html'>splatSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>batchCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Getting parameters...</span></div><div class='output co'>#&gt; <span class='message'>Creating simulation object...</span></div><div class='output co'>#&gt; <span class='message'>Simulating library sizes...</span></div><div class='output co'>#&gt; <span class='message'>Simulating gene means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating BCV...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts..</span></div><div class='output co'>#&gt; <span class='message'>Simulating dropout (if needed)...</span></div><div class='output co'>#&gt; <span class='message'>Done!</span></div><div class='input'><span class='no'>sim2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='simpleSimulate.html'>simpleSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Simulating means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='input'><span class='no'>difference</span> <span class='kw'>&lt;-</span> <span class='fu'>diffSCEs</span>(<span class='fu'>list</span>(<span class='kw'>Splat</span> <span class='kw'>=</span> <span class='no'>sim1</span>, <span class='kw'>Simple</span> <span class='kw'>=</span> <span class='no'>sim2</span>), <span class='kw'>ref</span> <span class='kw'>=</span> <span class='st'>"Simple"</span>)
+<span class='fu'>names</span>(<span class='no'>difference</span>)</div><div class='output co'>#&gt; [1] "Reference"   "FeatureData" "PhenoData"   "Plots"       "QQPlots"    </div><div class='input'><span class='fu'>names</span>(<span class='no'>difference</span>$<span class='no'>Plots</span>)</div><div class='output co'>#&gt; [1] "Means"        "Variances"    "MeanVar"      "LibrarySizes" "ZerosGene"   
+#&gt; [6] "ZerosCell"    "MeanZeros"   </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/expandParams.html b/docs/reference/expandParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..9b7b0e3d2d7fb0c6727155bf415eff3d49b9c435
--- /dev/null
+++ b/docs/reference/expandParams.html
@@ -0,0 +1,163 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Expand parameters — expandParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Expand parameters</h1>
+    </div>
+
+    
+    <p>Expand the parameters that can be vectors so that they are the same length as
+the number of groups.</p>
+    
+
+    <pre class="usage"><span class='fu'>expandParams</span>(<span class='no'>object</span>, <span class='no'>...</span>)
+
+<span class='co'># S4 method for BASiCSParams</span>
+<span class='fu'>expandParams</span>(<span class='no'>object</span>)
+
+<span class='co'># S4 method for LunParams</span>
+<span class='fu'>expandParams</span>(<span class='no'>object</span>)
+
+<span class='co'># S4 method for SplatParams</span>
+<span class='fu'>expandParams</span>(<span class='no'>object</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>object</th>
+      <td><p>object to expand.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>additional arguments.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Expanded object.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/getLNormFactors.html b/docs/reference/getLNormFactors.html
new file mode 100644
index 0000000000000000000000000000000000000000..522bee79fd9333ac24ed4a0e2db0a46bd4e48c67
--- /dev/null
+++ b/docs/reference/getLNormFactors.html
@@ -0,0 +1,166 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Get log-normal factors — getLNormFactors • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Get log-normal factors</h1>
+    </div>
+
+    
+    <p>Randomly generate multiplication factors from a log-normal distribution.</p>
+    
+
+    <pre class="usage"><span class='fu'>getLNormFactors</span>(<span class='no'>n.facs</span>, <span class='no'>sel.prob</span>, <span class='no'>neg.prob</span>, <span class='no'>fac.loc</span>, <span class='no'>fac.scale</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>n.facs</th>
+      <td><p>Number of factors to generate.</p></td>
+    </tr>
+    <tr>
+      <th>sel.prob</th>
+      <td><p>Probability that a factor will be selected to be different
+from 1.</p></td>
+    </tr>
+    <tr>
+      <th>neg.prob</th>
+      <td><p>Probability that a selected factor is less than one.</p></td>
+    </tr>
+    <tr>
+      <th>fac.loc</th>
+      <td><p>Location parameter for the log-normal distribution.</p></td>
+    </tr>
+    <tr>
+      <th>fac.scale</th>
+      <td><p>Scale factor for the log-normal distribution.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Vector containing generated factors.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/getParam.html b/docs/reference/getParam.html
new file mode 100644
index 0000000000000000000000000000000000000000..fce5d8559378bcc3458f9526fc491e45f4e54791
--- /dev/null
+++ b/docs/reference/getParam.html
@@ -0,0 +1,162 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Get a parameter — getParam • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Get a parameter</h1>
+    </div>
+
+    
+    <p>Accessor function for getting parameter values.</p>
+    
+
+    <pre class="usage"><span class='fu'>getParam</span>(<span class='no'>object</span>, <span class='no'>name</span>)
+
+<span class='co'># S4 method for Params</span>
+<span class='fu'>getParam</span>(<span class='no'>object</span>, <span class='no'>name</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>object</th>
+      <td><p>object to get parameter from.</p></td>
+    </tr>
+    <tr>
+      <th>name</th>
+      <td><p>name of the parameter to get.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>The extracted parameter value</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='newParams.html'>newSimpleParams</a></span>()
+<span class='fu'>getParam</span>(<span class='no'>params</span>, <span class='st'>"nGenes"</span>)</div><div class='output co'>#&gt; [1] 10000</div><div class='input'>
+</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/getParams.html b/docs/reference/getParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..0090051c4bf79a04d83299d35d1ac3005678cd6a
--- /dev/null
+++ b/docs/reference/getParams.html
@@ -0,0 +1,166 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Get parameters — getParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Get parameters</h1>
+    </div>
+
+    
+    <p>Get multiple parameter values from a Params object.</p>
+    
+
+    <pre class="usage"><span class='fu'>getParams</span>(<span class='no'>params</span>, <span class='no'>names</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>Params object to get values from.</p></td>
+    </tr>
+    <tr>
+      <th>names</th>
+      <td><p>vector of names of the parameters to get.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>List with the values of the selected parameters.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='newParams.html'>newSimpleParams</a></span>()
+<span class='fu'>getParams</span>(<span class='no'>params</span>, <span class='fu'>c</span>(<span class='st'>"nGenes"</span>, <span class='st'>"nCells"</span>, <span class='st'>"mean.rate"</span>))</div><div class='output co'>#&gt; $nGenes
+#&gt; [1] 10000
+#&gt; 
+#&gt; $nCells
+#&gt; [1] 100
+#&gt; 
+#&gt; $mean.rate
+#&gt; [1] 0.3
+#&gt; </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/getPathOrder.html b/docs/reference/getPathOrder.html
new file mode 100644
index 0000000000000000000000000000000000000000..c5be15aaaaa896ce9250145eef24364cdee309b5
--- /dev/null
+++ b/docs/reference/getPathOrder.html
@@ -0,0 +1,151 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Get path order — getPathOrder • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Get path order</h1>
+    </div>
+
+    
+    <p>Identify the correct order to process paths so that preceding paths have
+already been simulated.</p>
+    
+
+    <pre class="usage"><span class='fu'>getPathOrder</span>(<span class='no'>path.from</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>path.from</th>
+      <td><p>vector giving the path endpoints that each path orginates
+from.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Vector giving the order to process paths in.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/index.html b/docs/reference/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..5cb5e3398c3b1b55529090eb278472970ab326af
--- /dev/null
+++ b/docs/reference/index.html
@@ -0,0 +1,590 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Function reference • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-index">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9">
+    <div class="page-header">
+      <h1>
+        Reference
+        <small>version&nbsp;1.1.8</small>
+      </h1>
+    </div>
+
+    <div class="contents">
+      <table class="ref-index">
+
+      <colgroup>
+        <col class="alias" />
+        <col class="title" />
+      </colgroup>
+
+      <tbody>
+        <tr>
+          <th colspan="2">
+            <h2 id="section-parameters" class="hasAnchor"><a href="#section-parameters" class="anchor"></a>Parameters</h2>
+            <p class="section-desc"><p>Parameters functions and classes</p></p>
+          </th>
+        </tr>
+        <tr>
+          <!--  -->
+          <td>
+            <p><code><a href="newParams.html">newBASiCSParams</a></code> <code><a href="newParams.html">newLun2Params</a></code> <code><a href="newParams.html">newLunParams</a></code> <code><a href="newParams.html">newMFAParams</a></code> <code><a href="newParams.html">newPhenoParams</a></code> <code><a href="newParams.html">newSCDDParams</a></code> <code><a href="newParams.html">newSimpleParams</a></code> <code><a href="newParams.html">newSplatParams</a></code> <code><a href="newParams.html">newZINBParams</a></code> </p>
+          </td>
+          <td><p>New Params</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="getParam.html">getParam</a></code> </p>
+          </td>
+          <td><p>Get a parameter</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="getParams.html">getParams</a></code> </p>
+          </td>
+          <td><p>Get parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="setParam.html">setParam</a></code> </p>
+          </td>
+          <td><p>Set a parameter</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="setParams.html">setParams</a></code> </p>
+          </td>
+          <td><p>Set parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="BASiCSParams.html">BASiCSParams</a></code> </p>
+          </td>
+          <td><p>The BASiCSParams class</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="Lun2Params.html">Lun2Params</a></code> </p>
+          </td>
+          <td><p>The Lun2Params class</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="LunParams.html">LunParams</a></code> </p>
+          </td>
+          <td><p>The LunParams class</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="MFAParams.html">MFAParams</a></code> </p>
+          </td>
+          <td><p>The MFAParams class</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="Params.html">Params</a></code> </p>
+          </td>
+          <td><p>The Params virtual class</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="PhenoParams.html">PhenoParams</a></code> </p>
+          </td>
+          <td><p>The PhenoParams class</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="SCDDParams.html">SCDDParams</a></code> </p>
+          </td>
+          <td><p>The SCDDParams class</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="SimpleParams.html">SimpleParams</a></code> </p>
+          </td>
+          <td><p>The SimpleParams class</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="SplatParams.html">SplatParams</a></code> </p>
+          </td>
+          <td><p>The SplatParams class</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="ZINBParams.html">ZINBParams</a></code> </p>
+          </td>
+          <td><p>The ZINBParams class</p></td>
+        </tr>
+      </tbody><tbody>
+        <tr>
+          <th colspan="2">
+            <h2 id="section-estimation" class="hasAnchor"><a href="#section-estimation" class="anchor"></a>Estimation</h2>
+            <p class="section-desc"><p>Functions for estimating parameters</p></p>
+          </th>
+        </tr>
+        <tr>
+          <!--  -->
+          <td>
+            <p><code><a href="BASiCSEstimate.html">BASiCSEstimate</a></code> </p>
+          </td>
+          <td><p>Estimate BASiCS simulation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="lun2Estimate.html">lun2Estimate</a></code> </p>
+          </td>
+          <td><p>Estimate Lun2 simulation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="lunEstimate.html">lunEstimate</a></code> </p>
+          </td>
+          <td><p>Estimate Lun simulation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="mfaEstimate.html">mfaEstimate</a></code> </p>
+          </td>
+          <td><p>Estimate mfa simulation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="phenoEstimate.html">phenoEstimate</a></code> </p>
+          </td>
+          <td><p>Estimate PhenoPath simulation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="scDDEstimate.html">scDDEstimate</a></code> </p>
+          </td>
+          <td><p>Estimate scDD simulation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="simpleEstimate.html">simpleEstimate</a></code> </p>
+          </td>
+          <td><p>Estimate simple simulation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatEstBCV.html">splatEstBCV</a></code> </p>
+          </td>
+          <td><p>Estimate Splat Biological Coefficient of Variation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatEstDropout.html">splatEstDropout</a></code> </p>
+          </td>
+          <td><p>Estimate Splat dropout parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatEstimate.html">splatEstimate</a></code> </p>
+          </td>
+          <td><p>Estimate Splat simulation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatEstLib.html">splatEstLib</a></code> </p>
+          </td>
+          <td><p>Estimate Splat library size parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatEstMean.html">splatEstMean</a></code> </p>
+          </td>
+          <td><p>Estimate Splat mean parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatEstOutlier.html">splatEstOutlier</a></code> </p>
+          </td>
+          <td><p>Estimate Splat expression outlier parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="zinbEstimate.html">zinbEstimate</a></code> </p>
+          </td>
+          <td><p>Estimate ZINB-WaVE simulation parameters</p></td>
+        </tr>
+      </tbody><tbody>
+        <tr>
+          <th colspan="2">
+            <h2 id="section-simulation" class="hasAnchor"><a href="#section-simulation" class="anchor"></a>Simulation</h2>
+            <p class="section-desc"><p>Functions for simulating datasets</p></p>
+          </th>
+        </tr>
+        <tr>
+          <!--  -->
+          <td>
+            <p><code><a href="BASiCSSimulate.html">BASiCSSimulate</a></code> </p>
+          </td>
+          <td><p>BASiCS simulation</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="lun2Simulate.html">lun2Simulate</a></code> </p>
+          </td>
+          <td><p>Lun2 simulation</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="lunSimulate.html">lunSimulate</a></code> </p>
+          </td>
+          <td><p>Lun simulation</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="mfaSimulate.html">mfaSimulate</a></code> </p>
+          </td>
+          <td><p>MFA simulation</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="phenoEstimate.html">phenoEstimate</a></code> </p>
+          </td>
+          <td><p>Estimate PhenoPath simulation parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="scDDSimulate.html">scDDSimulate</a></code> </p>
+          </td>
+          <td><p>scDD simulation</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="simpleSimulate.html">simpleSimulate</a></code> </p>
+          </td>
+          <td><p>Simple simulation</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimBatchCellMeans.html">splatSimBatchCellMeans</a></code> </p>
+          </td>
+          <td><p>Simulate batch means</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimBatchEffects.html">splatSimBatchEffects</a></code> </p>
+          </td>
+          <td><p>Simulate batch effects</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimBCVMeans.html">splatSimBCVMeans</a></code> </p>
+          </td>
+          <td><p>Simulate BCV means</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimCellMeans.html">splatSimSingleCellMeans</a></code> <code><a href="splatSimCellMeans.html">splatSimGroupCellMeans</a></code> <code><a href="splatSimCellMeans.html">splatSimPathCellMeans</a></code> </p>
+          </td>
+          <td><p>Simulate cell means</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimDE.html">splatSimGroupDE</a></code> <code><a href="splatSimDE.html">splatSimPathDE</a></code> </p>
+          </td>
+          <td><p>Simulate group differential expression</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimDropout.html">splatSimDropout</a></code> </p>
+          </td>
+          <td><p>Simulate dropout</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimGeneMeans.html">splatSimGeneMeans</a></code> </p>
+          </td>
+          <td><p>Simulate gene means</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimLibSizes.html">splatSimLibSizes</a></code> </p>
+          </td>
+          <td><p>Simulate library sizes</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimTrueCounts.html">splatSimTrueCounts</a></code> </p>
+          </td>
+          <td><p>Simulate true counts</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="splatSimulate.html">splatSimulate</a></code> <code><a href="splatSimulate.html">splatSimulateSingle</a></code> <code><a href="splatSimulate.html">splatSimulateGroups</a></code> <code><a href="splatSimulate.html">splatSimulatePaths</a></code> </p>
+          </td>
+          <td><p>Splat simulation</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="zinbSimulate.html">zinbSimulate</a></code> </p>
+          </td>
+          <td><p>ZINB-WaVE simulation</p></td>
+        </tr>
+      </tbody><tbody>
+        <tr>
+          <th colspan="2">
+            <h2 id="section-comparison-functions" class="hasAnchor"><a href="#section-comparison-functions" class="anchor"></a>Comparison functions</h2>
+            <p class="section-desc"><p>Functions for comparing datasets</p></p>
+          </th>
+        </tr>
+        <tr>
+          <!--  -->
+          <td>
+            <p><code><a href="compareSCEs.html">compareSCEs</a></code> </p>
+          </td>
+          <td><p>Compare SingleCellExperiment objects</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="diffSCEs.html">diffSCEs</a></code> </p>
+          </td>
+          <td><p>Diff SingleCellExperiment objects</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="makeCompPanel.html">makeCompPanel</a></code> </p>
+          </td>
+          <td><p>Make comparison panel</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="makeDiffPanel.html">makeDiffPanel</a></code> </p>
+          </td>
+          <td><p>Make difference panel</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="makeOverallPanel.html">makeOverallPanel</a></code> </p>
+          </td>
+          <td><p>Make overall panel</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="summariseDiff.html">summariseDiff</a></code> </p>
+          </td>
+          <td><p>Summarise diffSCESs</p></td>
+        </tr>
+      </tbody><tbody>
+        <tr>
+          <th colspan="2">
+            <h2 id="section-other-exported-functions" class="hasAnchor"><a href="#section-other-exported-functions" class="anchor"></a>Other exported functions</h2>
+            <p class="section-desc"><p>Additional functions exported by Splatter</p></p>
+          </th>
+        </tr>
+        <tr>
+          <!--  -->
+          <td>
+            <p><code><a href="addFeatureStats.html">addFeatureStats</a></code> </p>
+          </td>
+          <td><p>Add feature statistics</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="addGeneLengths.html">addGeneLengths</a></code> </p>
+          </td>
+          <td><p>Add gene lengths</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="listSims.html">listSims</a></code> </p>
+          </td>
+          <td><p>List simulations</p></td>
+        </tr>
+      </tbody><tbody>
+        <tr>
+          <th colspan="2">
+            <h2 id="section-internals" class="hasAnchor"><a href="#section-internals" class="anchor"></a>Internals</h2>
+            <p class="section-desc"><p>Internal functions and helpers</p></p>
+          </th>
+        </tr>
+        <tr>
+          <!--  -->
+          <td>
+            <p><code><a href="bridge.html">bridge</a></code> </p>
+          </td>
+          <td><p>Brownian bridge</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="expandParams.html">expandParams</a></code> </p>
+          </td>
+          <td><p>Expand parameters</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="getLNormFactors.html">getLNormFactors</a></code> </p>
+          </td>
+          <td><p>Get log-normal factors</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="getPathOrder.html">getPathOrder</a></code> </p>
+          </td>
+          <td><p>Get path order</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="logistic.html">logistic</a></code> </p>
+          </td>
+          <td><p>Logistic function</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="rbindMatched.html">rbindMatched</a></code> </p>
+          </td>
+          <td><p>Bind rows (matched)</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="setParamsUnchecked.html">setParamsUnchecked</a></code> </p>
+          </td>
+          <td><p>Set parameters UNCHECKED</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="setParamUnchecked.html">setParamUnchecked</a></code> </p>
+          </td>
+          <td><p>Set a parameter UNCHECKED</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="showPP.html">showPP</a></code> </p>
+          </td>
+          <td><p>Show pretty print</p></td>
+        </tr><tr>
+          <!--  -->
+          <td>
+            <p><code><a href="winsorize.html">winsorize</a></code> </p>
+          </td>
+          <td><p>Winsorize vector</p></td>
+        </tr>
+      </tbody>
+      </table>
+    </div>
+  </div>
+
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#section-parameters">Parameters</a></li>
+      <li><a href="#section-estimation">Estimation</a></li>
+      <li><a href="#section-simulation">Simulation</a></li>
+      <li><a href="#section-comparison-functions">Comparison functions</a></li>
+      <li><a href="#section-other-exported-functions">Other exported functions</a></li>
+      <li><a href="#section-internals">Internals</a></li>
+    </ul>
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/listSims.html b/docs/reference/listSims.html
new file mode 100644
index 0000000000000000000000000000000000000000..2393fa095adb1e6eaa7eae4f68698a8810abf187
--- /dev/null
+++ b/docs/reference/listSims.html
@@ -0,0 +1,204 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>List simulations — listSims • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>List simulations</h1>
+    </div>
+
+    
+    <p>List all the simulations that are currently available in Splatter with a
+brief description.</p>
+    
+
+    <pre class="usage"><span class='fu'>listSims</span>(<span class='kw'>print</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>print</th>
+      <td><p>logical. Whether to print to the console.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Invisibly returns a data.frame containing the information that is
+displayed.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='fu'>listSims</span>()</div><div class='output co'>#&gt; Splatter currently contains 12 simulations 
+#&gt; 
+#&gt; Splat (splat) 
+#&gt; DOI: 10.1186/s13059-017-1305-0 	 GitHub: Oshlack/splatter 
+#&gt; The Splat simulation generates means from a gamma distribution, adjusts them for BCV and generates counts from a gamma-poisson. Dropout and batch effects can be optionally added. 
+#&gt; 
+#&gt; Splat Single (splatSingle) 
+#&gt; DOI: 10.1186/s13059-017-1305-0 	 GitHub: Oshlack/splatter 
+#&gt; The Splat simulation with a single population. 
+#&gt; 
+#&gt; Splat Groups (splatGroups) 
+#&gt; DOI: 10.1186/s13059-017-1305-0 	 GitHub: Oshlack/splatter 
+#&gt; The Splat simulation with multiple groups. Each group can have it's own differential expression probability and fold change distribution. 
+#&gt; 
+#&gt; Splat Paths (splatPaths) 
+#&gt; DOI: 10.1186/s13059-017-1305-0 	 GitHub: Oshlack/splatter 
+#&gt; The Splat simulation with differentiation paths. Each path can have it's own length, skew and probability. Genes can change in non-linear ways. 
+#&gt; 
+#&gt; Simple (simple) 
+#&gt; DOI: 10.1186/s13059-017-1305-0 	 GitHub: Oshlack/splatter 
+#&gt; A simple simulation with gamma means and negative binomial counts. 
+#&gt; 
+#&gt; Lun (lun) 
+#&gt; DOI: 10.1186/s13059-016-0947-7 	 GitHub: MarioniLab/Deconvolution2016 
+#&gt; Gamma distributed means and negative binomial counts. Cells are given a size factor and differential expression can be simulated with fixed fold changes. 
+#&gt; 
+#&gt; Lun 2 (lun2) 
+#&gt; DOI: 10.1093/biostatistics/kxw055 	 GitHub: MarioniLab/PlateEffects2016 
+#&gt; Negative binomial counts where the means and dispersions have been sampled from a real dataset. The core feature of the Lun 2 simulation is the addition of plate effects. Differential expression can be added between two groups of plates and optionally a zero-inflated negative-binomial can be used. 
+#&gt; 
+#&gt; scDD (scDD) 
+#&gt; DOI: 10.1186/s13059-016-1077-y 	 GitHub: kdkorthauer/scDD 
+#&gt; The scDD simulation samples a given dataset and can simulate differentially expressed and differentially distributed genes between two conditions. 
+#&gt; 
+#&gt; BASiCS (BASiCS) 
+#&gt; DOI: 10.1371/journal.pcbi.1004333 	 GitHub: catavallejos/BASiCS 
+#&gt; The BASiCS simulation is based on a bayesian model used to deconvolve biological and technical variation and includes spike-ins and batch effects. 
+#&gt; 
+#&gt; mfa (mfa) 
+#&gt; DOI: 10.12688/wellcomeopenres.11087.1 	 GitHub: kieranrcampbell/mfa 
+#&gt; The mfa simulation produces a bifurcating pseudotime trajectory. This can optionally include genes with transient changes in expression and added dropout. 
+#&gt; 
+#&gt; PhenoPath (pheno) 
+#&gt; DOI: 10.1101/159913 	 GitHub: kieranrcampbell/phenopath 
+#&gt; The PhenoPath simulation produces a pseudotime trajectory with different types of genes. 
+#&gt; 
+#&gt; ZINB-WaVE (zinb) 
+#&gt; DOI: 10.1101/125112 	 GitHub: drisso/zinbwave 
+#&gt; The ZINB-WaVE simulation simulates counts from a sophisticated zero-inflated negative-binomial distribution including cell and gene-level covariates. 
+#&gt; </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/logistic.html b/docs/reference/logistic.html
new file mode 100644
index 0000000000000000000000000000000000000000..5f8cce0465cda42b03d3d6ed61e9f49d5c924853
--- /dev/null
+++ b/docs/reference/logistic.html
@@ -0,0 +1,157 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Logistic function — logistic • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Logistic function</h1>
+    </div>
+
+    
+    <p>Implementation of the logistic function</p>
+    
+
+    <pre class="usage"><span class='fu'>logistic</span>(<span class='no'>x</span>, <span class='no'>x0</span>, <span class='no'>k</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>x</th>
+      <td><p>value to apply the function to.</p></td>
+    </tr>
+    <tr>
+      <th>x0</th>
+      <td><p>midpoint parameter. Gives the centre of the function.</p></td>
+    </tr>
+    <tr>
+      <th>k</th>
+      <td><p>shape parameter. Gives the slope of the function.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Value of logistic funciton with given parameters</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/lun2Estimate.html b/docs/reference/lun2Estimate.html
new file mode 100644
index 0000000000000000000000000000000000000000..981a52b6ac4c56dfcd1225dba9d2fb704891fdb6
--- /dev/null
+++ b/docs/reference/lun2Estimate.html
@@ -0,0 +1,199 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate Lun2 simulation parameters — lun2Estimate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate Lun2 simulation parameters</h1>
+    </div>
+
+    
+    <p>Estimate simulation parameters for the Lun2 simulation from a real dataset.</p>
+    
+
+    <pre class="usage"><span class='fu'>lun2Estimate</span>(<span class='no'>counts</span>, <span class='no'>plates</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newLun2Params</a></span>(), <span class='kw'>min.size</span> <span class='kw'>=</span> <span class='fl'>200</span>,
+  <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>())
+
+<span class='co'># S3 method for SingleCellExperiment</span>
+<span class='fu'>lun2Estimate</span>(<span class='no'>counts</span>, <span class='no'>plates</span>,
+  <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newLun2Params</a></span>(), <span class='kw'>min.size</span> <span class='kw'>=</span> <span class='fl'>200</span>, <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+  <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>())
+
+<span class='co'># S3 method for matrix</span>
+<span class='fu'>lun2Estimate</span>(<span class='no'>counts</span>, <span class='no'>plates</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newLun2Params</a></span>(),
+  <span class='kw'>min.size</span> <span class='kw'>=</span> <span class='fl'>200</span>, <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>())</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>plates</th>
+      <td><p>integer vector giving the plate that each cell originated from.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>Lun2Params object to store estimated values in.</p></td>
+    </tr>
+    <tr>
+      <th>min.size</th>
+      <td><p>minimum size of clusters when identifying group of cells in
+the data.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to show progress messages.</p></td>
+    </tr>
+    <tr>
+      <th>BPPARAM</th>
+      <td><p>A <code><a href='http://www.rdocumentation.org/packages/BiocParallel/topics/BiocParallelParam-class'>BiocParallelParam</a></code> instance
+giving the parallel back-end to be used. Default is
+<code><a href='http://www.rdocumentation.org/packages/BiocParallel/topics/SerialParam-class'>SerialParam</a></code> which uses a single core.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>LunParams object containing the estimated parameters.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>See <code><a href='Lun2Params.html'>Lun2Params</a></code> for more details on the parameters.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><span class='co'># NOT RUN {</span>
+<span class='fu'>data</span>(<span class='st'>"sc_example_counts"</span>)
+<span class='fu'>data</span>(<span class='st'>"sc_example_cell_info"</span>)
+<span class='no'>plates</span> <span class='kw'>&lt;-</span> <span class='fu'>factor</span>(<span class='no'>sc_example_cell_info</span>$<span class='no'>Mutation_Status</span>)
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>lun2Estimate</span>(<span class='no'>sc_example_counts</span>, <span class='no'>plates</span>, <span class='kw'>min.size</span> <span class='kw'>=</span> <span class='fl'>20</span>)
+<span class='no'>params</span>
+<span class='co'># }</span></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/lun2Simulate.html b/docs/reference/lun2Simulate.html
new file mode 100644
index 0000000000000000000000000000000000000000..b4caa06e495f89049b38e68256c146e8484b6120
--- /dev/null
+++ b/docs/reference/lun2Simulate.html
@@ -0,0 +1,195 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Lun2 simulation — lun2Simulate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Lun2 simulation</h1>
+    </div>
+
+    
+    <p>Simulate single-cell RNA-seq count data using the method described in Lun
+and Marioni "Overcoming confounding plate effects in differential expression
+analyses of single-cell RNA-seq data".</p>
+    
+
+    <pre class="usage"><span class='fu'>lun2Simulate</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newLun2Params</a></span>(), <span class='kw'>zinb</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>Lun2Params object containing simulation parameters.</p></td>
+    </tr>
+    <tr>
+      <th>zinb</th>
+      <td><p>logical. Whether to use a zero-inflated model.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>any additional parameter settings to override what is provided in
+<code>params</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment containing simulated counts.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The Lun2 simulation uses a negative-binomial distribution where the means and
+dispersions have been sampled from a real dataset
+(using <code><a href='lun2Estimate.html'>lun2Estimate</a></code>). The other core feature of the Lun2
+simulation is the addition of plate effects. Differential expression can be
+added between two groups of plates (an "ingroup" and all other plates).
+Library size factors are also applied and optionally a zero-inflated
+negative-binomial can be used.</p>
+<p>If the number of genes to simulate differs from the number of provied gene
+parameters or the number of cells to simulate differs from the number of
+library sizes the relevant paramters will be sampled with a warning. This
+allows any number of genes or cells to be simulated regardless of the
+number in the dataset used in the estimation step but has the downside that
+some genes or cells may be simulated multiple times.</p>
+    
+    <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2>
+
+    <p>Lun ATL, Marioni JC. Overcoming confounding plate effects in differential
+expression analyses of single-cell RNA-seq data. Biostatistics (2017).</p>
+<p>Paper: <a href='dx.doi.org/10.1093/biostatistics/kxw055'>dx.doi.org/10.1093/biostatistics/kxw055</a></p>
+<p>Code: <a href='https://github.com/MarioniLab/PlateEffects2016'>https://github.com/MarioniLab/PlateEffects2016</a></p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>lun2Simulate</span>()</div><div class='output co'>#&gt; <span class='message'>Getting parameters...</span></div><div class='output co'>#&gt; <span class='message'>Simulating plate means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating libray size factors...</span></div><div class='output co'>#&gt; <span class='message'>Simulating cell means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='output co'>#&gt; <span class='message'>Done!</span></div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+
+      <li><a href="#references">References</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/lunEstimate.html b/docs/reference/lunEstimate.html
new file mode 100644
index 0000000000000000000000000000000000000000..d616dc41eca3b506b56ed44d6a7d2c4e0b58bdac
--- /dev/null
+++ b/docs/reference/lunEstimate.html
@@ -0,0 +1,198 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate Lun simulation parameters — lunEstimate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate Lun simulation parameters</h1>
+    </div>
+
+    
+    <p>Estimate simulation parameters for the Lun simulation from a real dataset.</p>
+    
+
+    <pre class="usage"><span class='fu'>lunEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newLunParams</a></span>())
+
+<span class='co'># S3 method for SingleCellExperiment</span>
+<span class='fu'>lunEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newLunParams</a></span>())
+
+<span class='co'># S3 method for matrix</span>
+<span class='fu'>lunEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newLunParams</a></span>())</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>either a counts matrix or an SingleCellExperiment object
+containing count data to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>LunParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>LunParams object containing the estimated parameters.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The <code>nGenes</code> and <code>nCells</code> parameters are taken from the size of the
+input data. No other parameters are estimated. See <code><a href='LunParams.html'>LunParams</a></code>
+for more details on the parameters.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='fu'>data</span>(<span class='st'>"sc_example_counts"</span>)
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>lunEstimate</span>(<span class='no'>sc_example_counts</span>)
+<span class='no'>params</span></div><div class='output co'>#&gt; A Params object of class LunParams 
+#&gt; Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+#&gt; 
+#&gt; Global: 
+#&gt; (GENES)  (CELLS)   [Seed]  
+#&gt;    2000       40   736969  
+#&gt; 
+#&gt; 9 additional parameters 
+#&gt; 
+#&gt; Mean: 
+#&gt;  [Rate]  [Shape]  
+#&gt;       2        2  
+#&gt; 
+#&gt; Counts: 
+#&gt; [Dispersion]  
+#&gt;          0.1  
+#&gt; 
+#&gt; Groups: 
+#&gt;      [Groups]  [GROUP CELLS]  
+#&gt;             1             40  
+#&gt; 
+#&gt; Diff expr: 
+#&gt;   [Genes]  [Up Prop]    [Up FC]  [Down FC]  
+#&gt;      1000        0.5          5          0  
+#&gt; </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/lunSimulate.html b/docs/reference/lunSimulate.html
new file mode 100644
index 0000000000000000000000000000000000000000..31bd82a4d9e1a77d385931ac948c4b4f0b203d45
--- /dev/null
+++ b/docs/reference/lunSimulate.html
@@ -0,0 +1,187 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Lun simulation — lunSimulate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Lun simulation</h1>
+    </div>
+
+    
+    <p>Simulate single-cell RNA-seq count data using the method described in Lun,
+Bach and Marioni "Pooling across cells to normalize single-cell RNA
+sequencing data with many zero counts".</p>
+    
+
+    <pre class="usage"><span class='fu'>lunSimulate</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newLunParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>LunParams object containing Lun simulation parameters.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>any additional parameter settings to override what is provided in
+<code>params</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment object containing the simulated counts and
+intermediate values.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The Lun simulation generates gene mean expression levels from a gamma
+distribution with <code>shape = mean.shape</code> and <code>rate = mean.rate</code>.
+Counts are then simulated from a negative binomial distribution with
+<code>mu = means</code> and <code>size = 1 / bcv.common</code>. In addition each cell is
+given a size factor (<code>2 ^ rnorm(nCells, mean = 0, sd = 0.5)</code>) and
+differential expression can be simulated with fixed fold changes.</p>
+<p>See <code><a href='LunParams.html'>LunParams</a></code> for details of the parameters.</p>
+    
+    <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2>
+
+    <p>Lun ATL, Bach K, Marioni JC. Pooling across cells to normalize single-cell
+RNA sequencing data with many zero counts. Genome Biology (2016).</p>
+<p>Paper: <a href='dx.doi.org/10.1186/s13059-016-0947-7'>dx.doi.org/10.1186/s13059-016-0947-7</a></p>
+<p>Code: <a href='https://github.com/MarioniLab/Deconvolution2016'>https://github.com/MarioniLab/Deconvolution2016</a></p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>lunSimulate</span>()</div><div class='output co'>#&gt; <span class='message'>Getting parameters...</span></div><div class='output co'>#&gt; <span class='message'>Simulating means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating cell means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='output co'>#&gt; <span class='message'>Done!</span></div><div class='input'>
+</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+
+      <li><a href="#references">References</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/makeCompPanel.html b/docs/reference/makeCompPanel.html
new file mode 100644
index 0000000000000000000000000000000000000000..952d7e03ae0fa742e966137455968c5a238f335d
--- /dev/null
+++ b/docs/reference/makeCompPanel.html
@@ -0,0 +1,169 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Make comparison panel — makeCompPanel • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Make comparison panel</h1>
+    </div>
+
+    
+    <p>Combine the plots from <code>compareSCEs</code> into a single panel.</p>
+    
+
+    <pre class="usage"><span class='fu'>makeCompPanel</span>(<span class='no'>comp</span>, <span class='kw'>title</span> <span class='kw'>=</span> <span class='st'>"Comparison"</span>, <span class='kw'>labels</span> <span class='kw'>=</span> <span class='fu'>c</span>(<span class='st'>"Means"</span>, <span class='st'>"Variance"</span>,
+  <span class='st'>"Mean-variance relationship"</span>, <span class='st'>"Library size"</span>, <span class='st'>"Zeros per gene"</span>,
+  <span class='st'>"Zeros per cell"</span>, <span class='st'>"Mean-zeros relationship"</span>))</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>comp</th>
+      <td><p>list returned by <code><a href='compareSCEs.html'>compareSCEs</a></code>.</p></td>
+    </tr>
+    <tr>
+      <th>title</th>
+      <td><p>title for the panel.</p></td>
+    </tr>
+    <tr>
+      <th>labels</th>
+      <td><p>vector of labels for each of the seven plots.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Combined panel plot</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><span class='co'># NOT RUN {</span>
+<span class='no'>sim1</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='splatSimulate.html'>splatSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>batchCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)
+<span class='no'>sim2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='simpleSimulate.html'>simpleSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)
+<span class='no'>comparison</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='compareSCEs.html'>compareSCEs</a></span>(<span class='fu'>list</span>(<span class='kw'>Splat</span> <span class='kw'>=</span> <span class='no'>sim1</span>, <span class='kw'>Simple</span> <span class='kw'>=</span> <span class='no'>sim2</span>))
+<span class='no'>panel</span> <span class='kw'>&lt;-</span> <span class='fu'>makeCompPanel</span>(<span class='no'>comparison</span>)
+<span class='co'># }</span><div class='input'>
+</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/makeDiffPanel.html b/docs/reference/makeDiffPanel.html
new file mode 100644
index 0000000000000000000000000000000000000000..91a4c2ecf2af1fea4bfafd7d2375870fc006cfbe
--- /dev/null
+++ b/docs/reference/makeDiffPanel.html
@@ -0,0 +1,169 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Make difference panel — makeDiffPanel • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Make difference panel</h1>
+    </div>
+
+    
+    <p>Combine the plots from <code>diffSCEs</code> into a single panel.</p>
+    
+
+    <pre class="usage"><span class='fu'>makeDiffPanel</span>(<span class='no'>diff</span>, <span class='kw'>title</span> <span class='kw'>=</span> <span class='st'>"Difference comparison"</span>, <span class='kw'>labels</span> <span class='kw'>=</span> <span class='fu'>c</span>(<span class='st'>"Means"</span>,
+  <span class='st'>"Variance"</span>, <span class='st'>"Library size"</span>, <span class='st'>"Zeros per cell"</span>, <span class='st'>"Zeros per gene"</span>,
+  <span class='st'>"Mean-variance relationship"</span>, <span class='st'>"Mean-zeros relationship"</span>))</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>diff</th>
+      <td><p>list returned by <code><a href='diffSCEs.html'>diffSCEs</a></code>.</p></td>
+    </tr>
+    <tr>
+      <th>title</th>
+      <td><p>title for the panel.</p></td>
+    </tr>
+    <tr>
+      <th>labels</th>
+      <td><p>vector of labels for each of the seven sections.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Combined panel plot</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><span class='co'># NOT RUN {</span>
+<span class='no'>sim1</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='splatSimulate.html'>splatSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>batchCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)
+<span class='no'>sim2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='simpleSimulate.html'>simpleSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)
+<span class='no'>difference</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='diffSCEs.html'>diffSCEs</a></span>(<span class='fu'>list</span>(<span class='kw'>Splat</span> <span class='kw'>=</span> <span class='no'>sim1</span>, <span class='kw'>Simple</span> <span class='kw'>=</span> <span class='no'>sim2</span>), <span class='kw'>ref</span> <span class='kw'>=</span> <span class='st'>"Simple"</span>)
+<span class='no'>panel</span> <span class='kw'>&lt;-</span> <span class='fu'>makeDiffPanel</span>(<span class='no'>difference</span>)
+<span class='co'># }</span><div class='input'>
+</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/makeOverallPanel.html b/docs/reference/makeOverallPanel.html
new file mode 100644
index 0000000000000000000000000000000000000000..78c41a557bd16aaf909c25a023c2fe4f491356b8
--- /dev/null
+++ b/docs/reference/makeOverallPanel.html
@@ -0,0 +1,176 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Make overall panel — makeOverallPanel • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Make overall panel</h1>
+    </div>
+
+    
+    <p>Combine the plots from <code>compSCEs</code> and <code>diffSCEs</code> into a
+single panel.</p>
+    
+
+    <pre class="usage"><span class='fu'>makeOverallPanel</span>(<span class='no'>comp</span>, <span class='no'>diff</span>, <span class='kw'>title</span> <span class='kw'>=</span> <span class='st'>"Overall comparison"</span>,
+  <span class='kw'>row.labels</span> <span class='kw'>=</span> <span class='fu'>c</span>(<span class='st'>"Means"</span>, <span class='st'>"Variance"</span>, <span class='st'>"Mean-variance relationship"</span>,
+  <span class='st'>"Library size"</span>, <span class='st'>"Zeros per cell"</span>, <span class='st'>"Zeros per gene"</span>,
+  <span class='st'>"Mean-zeros relationship"</span>))</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>comp</th>
+      <td><p>list returned by <code><a href='compareSCEs.html'>compareSCEs</a></code>.</p></td>
+    </tr>
+    <tr>
+      <th>diff</th>
+      <td><p>list returned by <code><a href='diffSCEs.html'>diffSCEs</a></code>.</p></td>
+    </tr>
+    <tr>
+      <th>title</th>
+      <td><p>title for the panel.</p></td>
+    </tr>
+    <tr>
+      <th>row.labels</th>
+      <td><p>vector of labels for each of the seven rows.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Combined panel plot</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><span class='co'># NOT RUN {</span>
+<span class='no'>sim1</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='splatSimulate.html'>splatSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>batchCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)
+<span class='no'>sim2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='simpleSimulate.html'>simpleSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)
+<span class='no'>comparison</span> <span class='kw'>&lt;-</span> <span class='fu'>compSCESets</span>(<span class='fu'>list</span>(<span class='kw'>Splat</span> <span class='kw'>=</span> <span class='no'>sim1</span>, <span class='kw'>Simple</span> <span class='kw'>=</span> <span class='no'>sim2</span>))
+<span class='no'>difference</span> <span class='kw'>&lt;-</span> <span class='fu'>diffSCESets</span>(<span class='fu'>list</span>(<span class='kw'>Splat</span> <span class='kw'>=</span> <span class='no'>sim1</span>, <span class='kw'>Simple</span> <span class='kw'>=</span> <span class='no'>sim2</span>), <span class='kw'>ref</span> <span class='kw'>=</span> <span class='st'>"Simple"</span>)
+<span class='no'>panel</span> <span class='kw'>&lt;-</span> <span class='fu'>makeOverallPanel</span>(<span class='no'>comparison</span>, <span class='no'>difference</span>)
+<span class='co'># }</span><div class='input'>
+</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/mfaEstimate.html b/docs/reference/mfaEstimate.html
new file mode 100644
index 0000000000000000000000000000000000000000..b43414b65a219a848445f1e94afefd0396f2d7f2
--- /dev/null
+++ b/docs/reference/mfaEstimate.html
@@ -0,0 +1,195 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate mfa simulation parameters — mfaEstimate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate mfa simulation parameters</h1>
+    </div>
+
+    
+    <p>Estimate simulation parameters for the mfa simulation from a real dataset.</p>
+    
+
+    <pre class="usage"><span class='fu'>mfaEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newMFAParams</a></span>())
+
+<span class='co'># S3 method for SingleCellExperiment</span>
+<span class='fu'>mfaEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newMFAParams</a></span>())
+
+<span class='co'># S3 method for matrix</span>
+<span class='fu'>mfaEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newMFAParams</a></span>())</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>MFAParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>MFAParams object containing the estimated parameters.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The <code>nGenes</code> and <code>nCells</code> parameters are taken from the size of the
+input data. The dropout lambda parameter is estimate using
+<code><a href='http://www.rdocumentation.org/packages/mfa/topics/empirical_lambda'>empirical_lambda</a></code>. See <code><a href='MFAParams.html'>MFAParams</a></code> for more
+details on the parameters.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='fu'>data</span>(<span class='st'>"sc_example_counts"</span>)
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>mfaEstimate</span>(<span class='no'>sc_example_counts</span>)
+<span class='no'>params</span></div><div class='output co'>#&gt; A Params object of class MFAParams 
+#&gt; Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+#&gt; 
+#&gt; Global: 
+#&gt; (GENES)  (CELLS)   [Seed]  
+#&gt;    2000       40   736969  
+#&gt; 
+#&gt; 4 additional parameters 
+#&gt; 
+#&gt; Transient: 
+#&gt; [Proportion]  
+#&gt;            0  
+#&gt; 
+#&gt; Negative: 
+#&gt; [Zero]  
+#&gt;   TRUE  
+#&gt; 
+#&gt; Dropout: 
+#&gt;           [Present]             (LAMBDA)  
+#&gt;               FALSE  0.00352186231063193  
+#&gt; </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/mfaSimulate.html b/docs/reference/mfaSimulate.html
new file mode 100644
index 0000000000000000000000000000000000000000..f0365d753ec6394242e02404a28ab09a3f01f52c
--- /dev/null
+++ b/docs/reference/mfaSimulate.html
@@ -0,0 +1,183 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>MFA simulation — mfaSimulate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>MFA simulation</h1>
+    </div>
+
+    
+    <p>Simulate a bifurcating pseudotime path using the mfa method.</p>
+    
+
+    <pre class="usage"><span class='fu'>mfaSimulate</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newMFAParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>MFAParams object containing simulation parameters.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>Logical. Whether to print progress messages.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>any additional parameter settings to override what is provided in
+<code>params</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment containing simulated counts</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function is just a wrapper around <code><a href='http://www.rdocumentation.org/packages/mfa/topics/create_synthetic'>create_synthetic</a></code>
+that takes a <code><a href='MFAParams.html'>MFAParams</a></code>, runs the simulation then converts the
+output from log-expression to counts and returns a
+<code><a href='http://www.rdocumentation.org/packages/SingleCellExperiment/topics/SingleCellExperiment'>SingleCellExperiment</a></code> object. See
+<code><a href='http://www.rdocumentation.org/packages/mfa/topics/create_synthetic'>create_synthetic</a></code> and the mfa paper for more details about
+how the simulation works.</p>
+    
+    <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2>
+
+    <p>Campbell KR, Yau C. Probabilistic modeling of bifurcations in single-cell
+gene expression data using a Bayesian mixture of factor analyzers. Wellcome
+Open Research (2017).</p>
+<p>Paper: <a href='10.12688/wellcomeopenres.11087.1'>10.12688/wellcomeopenres.11087.1</a></p>
+<p>Code: <a href='https://github.com/kieranrcampbell/mfa'>https://github.com/kieranrcampbell/mfa</a></p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>mfaSimulate</span>()</div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+
+      <li><a href="#references">References</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/newParams.html b/docs/reference/newParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..251cb3170c7793aade3520a787c2c3411b4acf52
--- /dev/null
+++ b/docs/reference/newParams.html
@@ -0,0 +1,171 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>New Params — newParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>New Params</h1>
+    </div>
+
+    
+    <p>Create a new Params object. Functions exist for each of the different
+Params subtypes.</p>
+    
+
+    <pre class="usage"><span class='fu'>newBASiCSParams</span>(<span class='no'>...</span>)
+
+<span class='fu'>newLun2Params</span>(<span class='no'>...</span>)
+
+<span class='fu'>newLunParams</span>(<span class='no'>...</span>)
+
+<span class='fu'>newMFAParams</span>(<span class='no'>...</span>)
+
+<span class='fu'>newPhenoParams</span>(<span class='no'>...</span>)
+
+<span class='fu'>newSCDDParams</span>(<span class='no'>...</span>)
+
+<span class='fu'>newSimpleParams</span>(<span class='no'>...</span>)
+
+<span class='fu'>newSplatParams</span>(<span class='no'>...</span>)
+
+<span class='fu'>newZINBParams</span>(<span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>...</th>
+      <td><p>additional parameters passed to <code><a href='setParams.html'>setParams</a></code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>New Params object.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>newSimpleParams</span>()
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>newSimpleParams</span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>200</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>10</span>)</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/phenoEstimate.html b/docs/reference/phenoEstimate.html
new file mode 100644
index 0000000000000000000000000000000000000000..97e7ff6a611b1e15d97df595839dc584064b0029
--- /dev/null
+++ b/docs/reference/phenoEstimate.html
@@ -0,0 +1,188 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate PhenoPath simulation parameters — phenoEstimate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate PhenoPath simulation parameters</h1>
+    </div>
+
+    
+    <p>Estimate simulation parameters for the PhenoPath simulation from a real
+dataset.</p>
+    
+
+    <pre class="usage"><span class='fu'>phenoEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newPhenoParams</a></span>())
+
+<span class='co'># S3 method for SingleCellExperiment</span>
+<span class='fu'>phenoEstimate</span>(<span class='no'>counts</span>,
+  <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newPhenoParams</a></span>())
+
+<span class='co'># S3 method for matrix</span>
+<span class='fu'>phenoEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newPhenoParams</a></span>())</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>either a counts matrix or an SingleCellExperiment object
+containing count data to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>PhenoParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>PhenoParams object containing the estimated parameters.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The <code>nGenes</code> and <code>nCells</code> parameters are taken from the size of the
+input data. The total number of genes is evenly divided into the four types.
+See <code><a href='PhenoParams.html'>PhenoParams</a></code> for more details on the parameters.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='fu'>data</span>(<span class='st'>"sc_example_counts"</span>)
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>phenoEstimate</span>(<span class='no'>sc_example_counts</span>)
+<span class='no'>params</span></div><div class='output co'>#&gt; A Params object of class PhenoParams 
+#&gt; Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+#&gt; 
+#&gt; Global: 
+#&gt; (GENES)  (CELLS)   [Seed]  
+#&gt;    2000       40   736969  
+#&gt; 
+#&gt; 4 additional parameters 
+#&gt; 
+#&gt; Genes: 
+#&gt;              [DE]              [PST]       [PST + BETA]  [DE + PST + BETA]  
+#&gt;               500                500                500                500  
+#&gt; </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/phenoSimulate.html b/docs/reference/phenoSimulate.html
new file mode 100644
index 0000000000000000000000000000000000000000..1d84c2c4e049e029cefe5fc5ec6829f553cf4d12
--- /dev/null
+++ b/docs/reference/phenoSimulate.html
@@ -0,0 +1,186 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>PhenoPath simulation — phenoSimulate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>PhenoPath simulation</h1>
+    </div>
+
+    
+    <p>Simulate counts from a pseudotime trajectory using the PhenoPath method.</p>
+    
+
+    <pre class="usage"><span class='fu'>phenoSimulate</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newPhenoParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>PhenoParams object containing simulation parameters.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>any additional parameter settings to override what is provided in
+<code>params</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment containing simulated counts</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function is just a wrapper around
+<code><a href='http://www.rdocumentation.org/packages/phenopath/topics/simulate_phenopath'>simulate_phenopath</a></code> that takes a
+<code><a href='PhenoParams.html'>PhenoParams</a></code>, runs the simulation then converts the
+output from log-expression to counts and returns a
+<code><a href='http://www.rdocumentation.org/packages/SingleCellExperiment/topics/SingleCellExperiment'>SingleCellExperiment</a></code> object. The original
+simulated log-expression values are returned in the <code>LogExprs</code> asssay.
+See <code><a href='http://www.rdocumentation.org/packages/phenopath/topics/simulate_phenopath'>simulate_phenopath</a></code> and the PhenoPath paper for
+more details about how the simulation works.</p>
+    
+    <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2>
+
+    <p>Campbell K, Yau C. Uncovering genomic trajectories with heterogeneous genetic
+and environmental backgrounds across single-cells and populations. bioRxiv
+(2017).</p>
+<p>Paper: <a href='10.1101/159913'>10.1101/159913</a></p>
+<p>Code: <a href='https://github.com/kieranrcampbell/phenopath'>https://github.com/kieranrcampbell/phenopath</a></p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>phenoSimulate</span>()</div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='input'>
+</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+
+      <li><a href="#references">References</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/rbindMatched.html b/docs/reference/rbindMatched.html
new file mode 100644
index 0000000000000000000000000000000000000000..f7064fb599c626583b0b12a342f1b52fb93b0176
--- /dev/null
+++ b/docs/reference/rbindMatched.html
@@ -0,0 +1,155 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Bind rows (matched) — rbindMatched • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Bind rows (matched)</h1>
+    </div>
+
+    
+    <p>Bind the rows of two data frames, keeping only the columns that are common
+to both.</p>
+    
+
+    <pre class="usage"><span class='fu'>rbindMatched</span>(<span class='no'>df1</span>, <span class='no'>df2</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>df1</th>
+      <td><p>first data.frame to bind.</p></td>
+    </tr>
+    <tr>
+      <th>df2</th>
+      <td><p>second data.frame to bind.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>data.frame containing rows from <code>df1</code> and <code>df2</code> but only
+        common columns.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/scDDEstimate.html b/docs/reference/scDDEstimate.html
new file mode 100644
index 0000000000000000000000000000000000000000..19ec722e1ad62bedf9456f9952e507c87b8d4f66
--- /dev/null
+++ b/docs/reference/scDDEstimate.html
@@ -0,0 +1,209 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate scDD simulation parameters — scDDEstimate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate scDD simulation parameters</h1>
+    </div>
+
+    
+    <p>Estimate simulation parameters for the scDD simulation from a real dataset.</p>
+    
+
+    <pre class="usage"><span class='fu'>scDDEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSCDDParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+  <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>(), <span class='no'>...</span>)
+
+<span class='co'># S3 method for matrix</span>
+<span class='fu'>scDDEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSCDDParams</a></span>(),
+  <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>(), <span class='no'>conditions</span>, <span class='no'>...</span>)
+
+<span class='co'># S3 method for SingleCellExperiment</span>
+<span class='fu'>scDDEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSCDDParams</a></span>(),
+  <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>(), <span class='kw'>condition</span> <span class='kw'>=</span> <span class='st'>"condition"</span>, <span class='no'>...</span>)
+
+<span class='co'># S3 method for default</span>
+<span class='fu'>scDDEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSCDDParams</a></span>(),
+  <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>(), <span class='no'>condition</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SCDDParams object to store estimated values in.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to show progress messages.</p></td>
+    </tr>
+    <tr>
+      <th>BPPARAM</th>
+      <td><p>A <code><a href='http://www.rdocumentation.org/packages/BiocParallel/topics/BiocParallelParam-class'>BiocParallelParam</a></code> instance
+giving the parallel back-end to be used. Default is
+<code><a href='http://www.rdocumentation.org/packages/BiocParallel/topics/SerialParam-class'>SerialParam</a></code> which uses a single core.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>further arguments passed to or from other methods.</p></td>
+    </tr>
+    <tr>
+      <th>conditions</th>
+      <td><p>Vector giving the condition that each cell belongs to.
+Conditions can be 1 or 2.</p></td>
+    </tr>
+    <tr>
+      <th>condition</th>
+      <td><p>String giving the column that represents biological group of
+interest.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SCDDParams object containing the estimated parameters.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function applies <code><a href='http://www.rdocumentation.org/packages/scDD/topics/preprocess'>preprocess</a></code> to the counts then uses
+<code><a href='http://www.rdocumentation.org/packages/scDD/topics/scDD'>scDD</a></code> to estimate the numbers of each gene type to
+simulate. The output is then converted to a SCDDParams object. See
+<code><a href='http://www.rdocumentation.org/packages/scDD/topics/preprocess'>preprocess</a></code> and <code><a href='http://www.rdocumentation.org/packages/scDD/topics/scDD'>scDD</a></code> for details.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><span class='co'># NOT RUN {</span>
+<span class='fu'>data</span>(<span class='st'>"sc_example_counts"</span>)
+<span class='no'>conditions</span> <span class='kw'>&lt;-</span> <span class='fu'>sample</span>(<span class='fl'>1</span>:<span class='fl'>2</span>, <span class='fu'>ncol</span>(<span class='no'>sc_example_counts</span>), <span class='kw'>replace</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>scDDEstimate</span>(<span class='no'>sc_example_counts</span>, <span class='no'>conditions</span>)
+<span class='no'>params</span>
+<span class='co'># }</span></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/scDDSimulate.html b/docs/reference/scDDSimulate.html
new file mode 100644
index 0000000000000000000000000000000000000000..397d4b5a9be488614c20e026080bb59adc9dee3c
--- /dev/null
+++ b/docs/reference/scDDSimulate.html
@@ -0,0 +1,200 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>scDD simulation — scDDSimulate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>scDD simulation</h1>
+    </div>
+
+    
+    <p>Simulate counts using the scDD method.</p>
+    
+
+    <pre class="usage"><span class='fu'>scDDSimulate</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSCDDParams</a></span>(), <span class='kw'>plots</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, <span class='kw'>plot.file</span> <span class='kw'>=</span> <span class='kw'>NULL</span>,
+  <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>(), <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>SCDDParams object containing simulation parameters.</p></td>
+    </tr>
+    <tr>
+      <th>plots</th>
+      <td><p>logical. whether to generate scDD fold change and validation
+plots.</p></td>
+    </tr>
+    <tr>
+      <th>plot.file</th>
+      <td><p>File path to save plots as PDF.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages</p></td>
+    </tr>
+    <tr>
+      <th>BPPARAM</th>
+      <td><p>A <code><a href='http://www.rdocumentation.org/packages/BiocParallel/topics/BiocParallelParam-class'>BiocParallelParam</a></code> instance
+giving the parallel back-end to be used. Default is
+<code><a href='http://www.rdocumentation.org/packages/BiocParallel/topics/SerialParam-class'>SerialParam</a></code> which uses a single core.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>any additional parameter settings to override what is provided in
+<code>params</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment containing simulated counts</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function is just a wrapper around <code><a href='http://www.rdocumentation.org/packages/scDD/topics/simulateSet'>simulateSet</a></code> that
+takes a <code><a href='SCDDParams.html'>SCDDParams</a></code>, runs the simulation then converts the
+output to a <code><a href='http://www.rdocumentation.org/packages/SingleCellExperiment/topics/SingleCellExperiment'>SingleCellExperiment</a></code> object.
+See <code><a href='http://www.rdocumentation.org/packages/scDD/topics/simulateSet'>simulateSet</a></code> for more details about how the simulation
+works.</p>
+    
+    <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2>
+
+    <p>Korthauer KD, Chu L-F, Newton MA, Li Y, Thomson J, Stewart R, et al. A
+statistical approach for identifying differential distributions in
+single-cell RNA-seq experiments. Genome Biology (2016).</p>
+<p>Paper: <a href='10.1186/s13059-016-1077-y'>10.1186/s13059-016-1077-y</a></p>
+<p>Code: <a href='https://github.com/kdkorthauer/scDD'>https://github.com/kdkorthauer/scDD</a></p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><span class='co'># NOT RUN {</span>
+<span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>scDDSimulate</span>()
+<span class='co'># }</span></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+
+      <li><a href="#references">References</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/setParam.html b/docs/reference/setParam.html
new file mode 100644
index 0000000000000000000000000000000000000000..d8975e913a431d10446f27806a522837fa53aa8c
--- /dev/null
+++ b/docs/reference/setParam.html
@@ -0,0 +1,203 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Set a parameter — setParam • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Set a parameter</h1>
+    </div>
+
+    
+    <p>Function for setting parameter values.</p>
+    
+
+    <pre class="usage"><span class='fu'>setParam</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)
+
+<span class='co'># S4 method for BASiCSParams</span>
+<span class='fu'>setParam</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)
+
+<span class='co'># S4 method for Lun2Params</span>
+<span class='fu'>setParam</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)
+
+<span class='co'># S4 method for LunParams</span>
+<span class='fu'>setParam</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)
+
+<span class='co'># S4 method for Params</span>
+<span class='fu'>setParam</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)
+
+<span class='co'># S4 method for PhenoParams</span>
+<span class='fu'>setParam</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)
+
+<span class='co'># S4 method for SCDDParams</span>
+<span class='fu'>setParam</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)
+
+<span class='co'># S4 method for SplatParams</span>
+<span class='fu'>setParam</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)
+
+<span class='co'># S4 method for ZINBParams</span>
+<span class='fu'>setParam</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>object</th>
+      <td><p>object to set parameter in.</p></td>
+    </tr>
+    <tr>
+      <th>name</th>
+      <td><p>name of the parameter to set.</p></td>
+    </tr>
+    <tr>
+      <th>value</th>
+      <td><p>value to set the paramter to.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Object with new parameter value.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='newParams.html'>newSimpleParams</a></span>()
+<span class='fu'>setParam</span>(<span class='no'>params</span>, <span class='st'>"nGenes"</span>, <span class='fl'>100</span>)</div><div class='output co'>#&gt; A Params object of class SimpleParams 
+#&gt; Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+#&gt; 
+#&gt; Global: 
+#&gt; (GENES)  (Cells)   [Seed]  
+#&gt;     100      100   736969  
+#&gt; 
+#&gt; 3 additional parameters 
+#&gt; 
+#&gt; Mean: 
+#&gt;  (Rate)  (Shape)  
+#&gt;     0.3      0.4  
+#&gt; 
+#&gt; Counts: 
+#&gt; [Dispersion]  
+#&gt;          0.1  
+#&gt; </div><div class='input'>
+</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/setParamUnchecked.html b/docs/reference/setParamUnchecked.html
new file mode 100644
index 0000000000000000000000000000000000000000..c17d16d083f34929258668732830b0be74dabd5f
--- /dev/null
+++ b/docs/reference/setParamUnchecked.html
@@ -0,0 +1,161 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Set a parameter UNCHECKED — setParamUnchecked • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Set a parameter UNCHECKED</h1>
+    </div>
+
+    
+    <p>Function for setting parameter values. THE OUTPUT IS NOT CHECKED FOR
+VALIDITY!</p>
+    
+
+    <pre class="usage"><span class='fu'>setParamUnchecked</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)
+
+<span class='co'># S4 method for Params</span>
+<span class='fu'>setParamUnchecked</span>(<span class='no'>object</span>, <span class='no'>name</span>, <span class='no'>value</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>object</th>
+      <td><p>object to set parameter in.</p></td>
+    </tr>
+    <tr>
+      <th>name</th>
+      <td><p>name of the parameter to set.</p></td>
+    </tr>
+    <tr>
+      <th>value</th>
+      <td><p>value to set the paramter to.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Object with new parameter value.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/setParams.html b/docs/reference/setParams.html
new file mode 100644
index 0000000000000000000000000000000000000000..72d6c08ee1b49d80cc593c4ebb0fd8cfad2e8a93
--- /dev/null
+++ b/docs/reference/setParams.html
@@ -0,0 +1,226 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Set parameters — setParams • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Set parameters</h1>
+    </div>
+
+    
+    <p>Set multiple parameters in a Params object.</p>
+    
+
+    <pre class="usage"><span class='fu'>setParams</span>(<span class='no'>params</span>, <span class='kw'>update</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>Params object to set parameters in.</p></td>
+    </tr>
+    <tr>
+      <th>update</th>
+      <td><p>list of parameters to set where <code>names(update)</code> are the
+names of the parameters to set and the items in the list are values.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>additional parameters to set. These are combined with any
+parameters specified in <code>update</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Params object with updated values.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>Each parameter is set by a call to <code><a href='setParam.html'>setParam</a></code>. If the same
+parameter is specified multiple times it will be set multiple times.
+Parameters can be specified using a list via <code>update</code> (useful when
+collecting parameter values in some way) or individually (useful when setting
+them manually), see examples.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='newParams.html'>newSimpleParams</a></span>()
+<span class='no'>params</span></div><div class='output co'>#&gt; A Params object of class SimpleParams 
+#&gt; Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+#&gt; 
+#&gt; Global: 
+#&gt; (Genes)  (Cells)   [Seed]  
+#&gt;   10000      100   736969  
+#&gt; 
+#&gt; 3 additional parameters 
+#&gt; 
+#&gt; Mean: 
+#&gt;  (Rate)  (Shape)  
+#&gt;     0.3      0.4  
+#&gt; 
+#&gt; Counts: 
+#&gt; [Dispersion]  
+#&gt;          0.1  
+#&gt; </div><div class='input'><span class='co'># Set individually</span>
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>setParams</span>(<span class='no'>params</span>, <span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>50</span>)
+<span class='no'>params</span></div><div class='output co'>#&gt; A Params object of class SimpleParams 
+#&gt; Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+#&gt; 
+#&gt; Global: 
+#&gt; (GENES)  (CELLS)   [Seed]  
+#&gt;    1000       50   736969  
+#&gt; 
+#&gt; 3 additional parameters 
+#&gt; 
+#&gt; Mean: 
+#&gt;  (Rate)  (Shape)  
+#&gt;     0.3      0.4  
+#&gt; 
+#&gt; Counts: 
+#&gt; [Dispersion]  
+#&gt;          0.1  
+#&gt; </div><div class='input'><span class='co'># Set via update list</span>
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>setParams</span>(<span class='no'>params</span>, <span class='fu'>list</span>(<span class='kw'>mean.rate</span> <span class='kw'>=</span> <span class='fl'>0.2</span>, <span class='kw'>mean.shape</span> <span class='kw'>=</span> <span class='fl'>0.8</span>))
+<span class='no'>params</span></div><div class='output co'>#&gt; A Params object of class SimpleParams 
+#&gt; Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+#&gt; 
+#&gt; Global: 
+#&gt; (GENES)  (CELLS)   [Seed]  
+#&gt;    1000       50   736969  
+#&gt; 
+#&gt; 3 additional parameters 
+#&gt; 
+#&gt; Mean: 
+#&gt;  (RATE)  (SHAPE)  
+#&gt;     0.2      0.8  
+#&gt; 
+#&gt; Counts: 
+#&gt; [Dispersion]  
+#&gt;          0.1  
+#&gt; </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/setParamsUnchecked.html b/docs/reference/setParamsUnchecked.html
new file mode 100644
index 0000000000000000000000000000000000000000..e88d82d34519ce01667ca4b8ee58acd6e2e06bd0
--- /dev/null
+++ b/docs/reference/setParamsUnchecked.html
@@ -0,0 +1,169 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Set parameters UNCHECKED — setParamsUnchecked • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Set parameters UNCHECKED</h1>
+    </div>
+
+    
+    <p>Set multiple parameters in a Params object.</p>
+    
+
+    <pre class="usage"><span class='fu'>setParamsUnchecked</span>(<span class='no'>params</span>, <span class='kw'>update</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>Params object to set parameters in.</p></td>
+    </tr>
+    <tr>
+      <th>update</th>
+      <td><p>list of parameters to set where <code>names(update)</code> are the
+names of the parameters to set and the items in the list are values.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>additional parameters to set. These are combined with any
+parameters specified in <code>update</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Params object with updated values.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>Each parameter is set by a call to <code><a href='setParam.html'>setParam</a></code>. If the same
+parameter is specified multiple times it will be set multiple times.
+Parameters can be specified using a list via <code>update</code> (useful when
+collecting parameter values in some way) or individually (useful when setting
+them manually), see examples. THE FINAL OBJECT IS NOT CHECKED FOR VALIDITY!</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/showPP.html b/docs/reference/showPP.html
new file mode 100644
index 0000000000000000000000000000000000000000..9b91e3b80f5367b3b5a12b1f976db75516ecca99
--- /dev/null
+++ b/docs/reference/showPP.html
@@ -0,0 +1,153 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Show pretty print — showPP • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Show pretty print</h1>
+    </div>
+
+    
+    <p>Function used for pretty printing params object.</p>
+    
+
+    <pre class="usage"><span class='fu'>showPP</span>(<span class='no'>params</span>, <span class='no'>pp</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>object to show.</p></td>
+    </tr>
+    <tr>
+      <th>pp</th>
+      <td><p>list specifying how the object should be displayed.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Print params object to console</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/simpleEstimate.html b/docs/reference/simpleEstimate.html
new file mode 100644
index 0000000000000000000000000000000000000000..43fa74cd6854f6647b848f5d544344cdae30b09f
--- /dev/null
+++ b/docs/reference/simpleEstimate.html
@@ -0,0 +1,193 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate simple simulation parameters — simpleEstimate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate simple simulation parameters</h1>
+    </div>
+
+    
+    <p>Estimate simulation parameters for the simple simulation from a real dataset.</p>
+    
+
+    <pre class="usage"><span class='fu'>simpleEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSimpleParams</a></span>())
+
+<span class='co'># S3 method for SingleCellExperiment</span>
+<span class='fu'>simpleEstimate</span>(<span class='no'>counts</span>,
+  <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSimpleParams</a></span>())
+
+<span class='co'># S3 method for matrix</span>
+<span class='fu'>simpleEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSimpleParams</a></span>())</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SimpleParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SimpleParams object containing the estimated parameters.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The <code>nGenes</code> and <code>nCells</code> parameters are taken from the size of the
+input data. The mean parameters are estimated by fitting a gamma distribution
+to the library size normalised mean expression level using
+<code><a href='http://www.rdocumentation.org/packages/fitdistrplus/topics/fitdist'>fitdist</a></code>. See <code><a href='SimpleParams.html'>SimpleParams</a></code> for more
+details on the parameters.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='fu'>data</span>(<span class='st'>"sc_example_counts"</span>)
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>simpleEstimate</span>(<span class='no'>sc_example_counts</span>)
+<span class='no'>params</span></div><div class='output co'>#&gt; A Params object of class SimpleParams 
+#&gt; Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+#&gt; 
+#&gt; Global: 
+#&gt; (GENES)  (CELLS)   [Seed]  
+#&gt;    2000       40   736969  
+#&gt; 
+#&gt; 3 additional parameters 
+#&gt; 
+#&gt; Mean: 
+#&gt;             (RATE)             (SHAPE)  
+#&gt; 0.0008052293183292   0.131835949613878  
+#&gt; 
+#&gt; Counts: 
+#&gt; [Dispersion]  
+#&gt;          0.1  
+#&gt; </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/simpleSimulate.html b/docs/reference/simpleSimulate.html
new file mode 100644
index 0000000000000000000000000000000000000000..e96bf35ffcf92fb3721137a2e7c1c313a0e24c6b
--- /dev/null
+++ b/docs/reference/simpleSimulate.html
@@ -0,0 +1,174 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simple simulation — simpleSimulate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simple simulation</h1>
+    </div>
+
+    
+    <p>Simulate counts from a simple negative binomial distribution without
+simulated library sizes, differential expression etc.</p>
+    
+
+    <pre class="usage"><span class='fu'>simpleSimulate</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSimpleParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>SimpleParams object containing simulation parameters.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>any additional parameter settings to override what is provided in
+<code>params</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment containing simulated counts</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>Gene means are simulated from a gamma distribution with
+<code>shape = mean.shape</code> and <code>rate = mean.rate</code>. Counts are then
+simulated from a negative binomial distribution with <code>mu = means</code> and
+<code>size = 1 / counts.disp</code>. See <code><a href='SimpleParams.html'>SimpleParams</a></code> for more
+details of the parameters.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>simpleSimulate</span>()</div><div class='output co'>#&gt; <span class='message'>Simulating means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='input'><span class='co'># Override default parameters</span>
+<span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>simpleSimulate</span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>50</span>)</div><div class='output co'>#&gt; <span class='message'>Simulating means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatEstBCV.html b/docs/reference/splatEstBCV.html
new file mode 100644
index 0000000000000000000000000000000000000000..2787af928f78be9c71cc527d3315c6ca057fa042
--- /dev/null
+++ b/docs/reference/splatEstBCV.html
@@ -0,0 +1,165 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate Splat Biological Coefficient of Variation parameters — splatEstBCV • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate Splat Biological Coefficient of Variation parameters</h1>
+    </div>
+
+    
+    <p>Parameters are estimated using the <code><a href='http://www.rdocumentation.org/packages/edgeR/topics/estimateDisp'>estimateDisp</a></code> function
+in the <code>edgeR</code> package.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatEstBCV</span>(<span class='no'>counts</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>counts matrix to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SplatParams object with estimated values.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The <code><a href='http://www.rdocumentation.org/packages/edgeR/topics/estimateDisp'>estimateDisp</a></code> function is used to estimate the common
+dispersion and prior degrees of freedom. See
+<code><a href='http://www.rdocumentation.org/packages/edgeR/topics/estimateDisp'>estimateDisp</a></code> for details. When estimating parameters on
+simulated data we found a broadly linear relationship between the true
+underlying common dispersion and the <code>edgR</code> estimate, therefore we
+apply a small correction, <code>disp = 0.1 + 0.25 * edgeR.disp</code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatEstDropout.html b/docs/reference/splatEstDropout.html
new file mode 100644
index 0000000000000000000000000000000000000000..f00cf74e780a5f48d6edb487159796a46fcaeec0
--- /dev/null
+++ b/docs/reference/splatEstDropout.html
@@ -0,0 +1,162 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate Splat dropout parameters — splatEstDropout • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate Splat dropout parameters</h1>
+    </div>
+
+    
+    <p>Estimate the midpoint and shape parameters for the logistic function used
+when simulating dropout.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatEstDropout</span>(<span class='no'>norm.counts</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>norm.counts</th>
+      <td><p>library size normalised counts matrix.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SplatParams object with estimated values.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>Logistic function parameters are estimated by fitting a logistic function
+to the relationship between log2 mean gene expression and the proportion of
+zeros in each gene. See <code><a href='http://www.rdocumentation.org/packages/stats/topics/nls'>nls</a></code> for details of fitting.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatEstLib.html b/docs/reference/splatEstLib.html
new file mode 100644
index 0000000000000000000000000000000000000000..c986a2cc9b7d3dea0195b0447cdfc2746f21764a
--- /dev/null
+++ b/docs/reference/splatEstLib.html
@@ -0,0 +1,155 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate Splat library size parameters — splatEstLib • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate Splat library size parameters</h1>
+    </div>
+
+    
+    <p>A log-normal distribution is fitted to the library sizes and the estimated
+parameters are added to the params object. See
+<code><a href='http://www.rdocumentation.org/packages/fitdistrplus/topics/fitdist'>fitdist</a></code> for details on the fitting.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatEstLib</span>(<span class='no'>counts</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>counts matrix to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>splatParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>splatParams object with estimated values.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatEstMean.html b/docs/reference/splatEstMean.html
new file mode 100644
index 0000000000000000000000000000000000000000..4443f94dc1573f4d9baceeddb67a970d98591d1d
--- /dev/null
+++ b/docs/reference/splatEstMean.html
@@ -0,0 +1,166 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate Splat mean parameters — splatEstMean • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate Splat mean parameters</h1>
+    </div>
+
+    
+    <p>Estimate rate and shape parameters for the gamma distribution used to
+simulate gene expression means.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatEstMean</span>(<span class='no'>norm.counts</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>norm.counts</th>
+      <td><p>library size normalised counts matrix.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SplatParams object with estimated values.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>Parameter for the gamma distribution are estimated by fitting the mean
+normalised counts using <code><a href='http://www.rdocumentation.org/packages/fitdistrplus/topics/fitdist'>fitdist</a></code>. The 'maximum
+goodness-of-fit estimation' method is used to minimise the Cramer-von Mises
+distance. This can fail in some situations, in which case the 'method of
+moments estimation' method is used instead. Prior to fitting the means are
+winsorized by setting the top and bottom 10 percent of values to the 10th
+and 90th percentiles.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatEstOutlier.html b/docs/reference/splatEstOutlier.html
new file mode 100644
index 0000000000000000000000000000000000000000..647896a9896f4b974bfc3b855a728c02d4a20d79
--- /dev/null
+++ b/docs/reference/splatEstOutlier.html
@@ -0,0 +1,167 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate Splat expression outlier parameters — splatEstOutlier • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate Splat expression outlier parameters</h1>
+    </div>
+
+    
+    <p>Parameters are estimated by comparing means of individual genes to the
+median mean expression level.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatEstOutlier</span>(<span class='no'>norm.counts</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>norm.counts</th>
+      <td><p>library size normalised counts matrix.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SplatParams object with estimated values.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>Expression outlier genes are detected using the Median Absolute Deviation
+(MAD) from median method. If the log2 mean expression of a gene is greater
+than two MADs above the median log2 mean expression it is designated as an
+outlier. The proportion of outlier genes is used to estimate the outlier
+probability. Factors for each outlier gene are calculated by dividing mean
+expression by the median mean expression. A log-normal distribution is then
+fitted to these factors in order to estimate the outlier factor location and
+scale parameters using <code><a href='http://www.rdocumentation.org/packages/fitdistrplus/topics/fitdist'>fitdist</a></code>.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatEstimate.html b/docs/reference/splatEstimate.html
new file mode 100644
index 0000000000000000000000000000000000000000..9f05e80243496b1dba1b35239aefe9867acc0e4a
--- /dev/null
+++ b/docs/reference/splatEstimate.html
@@ -0,0 +1,221 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate Splat simulation parameters — splatEstimate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate Splat simulation parameters</h1>
+    </div>
+
+    
+    <p>Estimate simulation parameters for the Splat simulation from a real
+dataset. See the individual estimation functions for more details on how this
+is done.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSplatParams</a></span>())
+
+<span class='co'># S3 method for SingleCellExperiment</span>
+<span class='fu'>splatEstimate</span>(<span class='no'>counts</span>,
+  <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSplatParams</a></span>())
+
+<span class='co'># S3 method for matrix</span>
+<span class='fu'>splatEstimate</span>(<span class='no'>counts</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSplatParams</a></span>())</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object to store estimated values in.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SplatParams object containing the estimated parameters.</p>
+    
+    <h2 class="hasAnchor" id="see-also"><a class="anchor" href="#see-also"></a>See also</h2>
+
+    <p><code><a href='splatEstMean.html'>splatEstMean</a></code>,  <code><a href='splatEstLib.html'>splatEstLib</a></code>,
+<code><a href='splatEstOutlier.html'>splatEstOutlier</a></code>, <code><a href='splatEstBCV.html'>splatEstBCV</a></code>,
+<code><a href='splatEstDropout.html'>splatEstDropout</a></code></p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='fu'>data</span>(<span class='st'>"sc_example_counts"</span>)
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>splatEstimate</span>(<span class='no'>sc_example_counts</span>)
+<span class='no'>params</span></div><div class='output co'>#&gt; A Params object of class SplatParams 
+#&gt; Parameters can be (estimable) or [not estimable], 'Default' or 'NOT DEFAULT'. 
+#&gt; 
+#&gt; Global: 
+#&gt; (GENES)  (CELLS)   [Seed]  
+#&gt;    2000       40   736969  
+#&gt; 
+#&gt; 27 additional parameters 
+#&gt; 
+#&gt; Batches: 
+#&gt;     [Batches]  [BATCH CELLS]     [Location]        [Scale]  
+#&gt;             1             40            0.1            0.1  
+#&gt; 
+#&gt; Mean: 
+#&gt;             (RATE)             (SHAPE)  
+#&gt; 0.0032639148887191   0.419304527025529  
+#&gt; 
+#&gt; Library size: 
+#&gt;       (LOCATION)           (SCALE)  
+#&gt; 12.7053037408488  0.58910919018286  
+#&gt; 
+#&gt; Exprs outliers: 
+#&gt;       (PROBABILITY)           (LOCATION)              (SCALE)  
+#&gt; 0.00623376623376623     4.22280669039478    0.422108697251885  
+#&gt; 
+#&gt; Groups: 
+#&gt;      [Groups]  [Group Probs]  
+#&gt;             1              1  
+#&gt; 
+#&gt; Diff expr: 
+#&gt; [Probability]    [Down Prob]     [Location]        [Scale]  
+#&gt;           0.1            0.5            0.1            0.4  
+#&gt; 
+#&gt; BCV: 
+#&gt;    (COMMON DISP)             (DOF)  
+#&gt; 3.21969047393022  14.7262017878812  
+#&gt; 
+#&gt; Dropout: 
+#&gt;          [Present]          (MIDPOINT)             (SHAPE)  
+#&gt;              FALSE    5.00420976858168  -0.652889139821156  
+#&gt; 
+#&gt; Paths: 
+#&gt;         [From]        [Length]          [Skew]    [Non-linear]  [Sigma Factor]  
+#&gt;              0             100             0.5             0.1             0.8  
+#&gt; </div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#see-also">See also</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimBCVMeans.html b/docs/reference/splatSimBCVMeans.html
new file mode 100644
index 0000000000000000000000000000000000000000..7e0c42284bda2151802ffbaf65c12907050e6088
--- /dev/null
+++ b/docs/reference/splatSimBCVMeans.html
@@ -0,0 +1,155 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simulate BCV means — splatSimBCVMeans • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simulate BCV means</h1>
+    </div>
+
+    
+    <p>Simulate means for each gene in each cell that are adjusted to follow a
+mean-variance trend using Biological Coefficient of Variation taken from
+and inverse gamma distribution.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimBCVMeans</span>(<span class='no'>sim</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sim</th>
+      <td><p>SingleCellExperiment to add BCV means to.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object with simulation parameters.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with simulated BCV means.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimBatchCellMeans.html b/docs/reference/splatSimBatchCellMeans.html
new file mode 100644
index 0000000000000000000000000000000000000000..5600e9430a9763870a8e484db31f1828f4e99360
--- /dev/null
+++ b/docs/reference/splatSimBatchCellMeans.html
@@ -0,0 +1,154 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simulate batch means — splatSimBatchCellMeans • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simulate batch means</h1>
+    </div>
+
+    
+    <p>Simulate a mean for each gene in each cell incorporating batch effect
+factors.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimBatchCellMeans</span>(<span class='no'>sim</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sim</th>
+      <td><p>SingleCellExperiment to add batch means to.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object with simulation parameters.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with simulated batch means.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimBatchEffects.html b/docs/reference/splatSimBatchEffects.html
new file mode 100644
index 0000000000000000000000000000000000000000..1b059e35b8c711fffb44d4d684d12683336b118b
--- /dev/null
+++ b/docs/reference/splatSimBatchEffects.html
@@ -0,0 +1,155 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simulate batch effects — splatSimBatchEffects • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simulate batch effects</h1>
+    </div>
+
+    
+    <p>Simulate batch effects. Batch effect factors for each batch are produced
+using <code><a href='getLNormFactors.html'>getLNormFactors</a></code> and these are added along with updated
+means for each batch.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimBatchEffects</span>(<span class='no'>sim</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sim</th>
+      <td><p>SingleCellExperiment to add batch effects to.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object with simulation parameters.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with simulated batch effects.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimCellMeans.html b/docs/reference/splatSimCellMeans.html
new file mode 100644
index 0000000000000000000000000000000000000000..cb90535a07415a3082bcb67920746df4b51a36fb
--- /dev/null
+++ b/docs/reference/splatSimCellMeans.html
@@ -0,0 +1,161 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simulate cell means — splatSimCellMeans • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simulate cell means</h1>
+    </div>
+
+    
+    <p>Simulate a gene by cell matrix giving the mean expression for each gene in
+each cell. Cells start with the mean expression for the group they belong to
+(when simulating groups) or cells are assigned the mean expression from a
+random position on the appropriate path (when simulating paths). The selected
+means are adjusted for each cell's expected library size.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimSingleCellMeans</span>(<span class='no'>sim</span>, <span class='no'>params</span>)
+
+<span class='fu'>splatSimGroupCellMeans</span>(<span class='no'>sim</span>, <span class='no'>params</span>)
+
+<span class='fu'>splatSimPathCellMeans</span>(<span class='no'>sim</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sim</th>
+      <td><p>SingleCellExperiment to add cell means to.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object with simulation parameters.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with added cell means.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimDE.html b/docs/reference/splatSimDE.html
new file mode 100644
index 0000000000000000000000000000000000000000..cf9c9e94befc0a78e6c3baf2a105a1abb182e9d1
--- /dev/null
+++ b/docs/reference/splatSimDE.html
@@ -0,0 +1,158 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simulate group differential expression — splatSimDE • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simulate group differential expression</h1>
+    </div>
+
+    
+    <p>Simulate differential expression. Differential expression factors for each
+group are produced using <code><a href='getLNormFactors.html'>getLNormFactors</a></code> and these are added
+along with updated means for each group. For paths care is taked to make sure
+they are simulated in the correct order.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimGroupDE</span>(<span class='no'>sim</span>, <span class='no'>params</span>)
+
+<span class='fu'>splatSimPathDE</span>(<span class='no'>sim</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sim</th>
+      <td><p>SingleCellExperiment to add differential expression to.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>splatParams object with simulation parameters.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with simulated differential expression.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimDropout.html b/docs/reference/splatSimDropout.html
new file mode 100644
index 0000000000000000000000000000000000000000..bcff9a23311d82a515e78c857e8308e2a4f1e8e1
--- /dev/null
+++ b/docs/reference/splatSimDropout.html
@@ -0,0 +1,156 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simulate dropout — splatSimDropout • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simulate dropout</h1>
+    </div>
+
+    
+    <p>A logistic function is used to form a relationshop between the expression
+level of a gene and the probability of dropout, giving a probability for each
+gene in each cell. These probabilities are used in a Bernoulli distribution
+to decide which counts should be dropped.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimDropout</span>(<span class='no'>sim</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sim</th>
+      <td><p>SingleCellExperiment to add dropout to.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object with simulation parameters.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with simulated dropout and observed counts.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimGeneMeans.html b/docs/reference/splatSimGeneMeans.html
new file mode 100644
index 0000000000000000000000000000000000000000..4ac63ab88bb97720a9b86ae8b1c5725ede40217d
--- /dev/null
+++ b/docs/reference/splatSimGeneMeans.html
@@ -0,0 +1,155 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simulate gene means — splatSimGeneMeans • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simulate gene means</h1>
+    </div>
+
+    
+    <p>Simulate gene means from a gamma distribution. Also simulates outlier
+expression factors. Genes with an outlier factor not equal to 1 are replaced
+with the median mean expression multiplied by the outlier factor.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimGeneMeans</span>(<span class='no'>sim</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sim</th>
+      <td><p>SingleCellExperiment to add gene means to.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object with simulation parameters.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with simulated gene means.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimLibSizes.html b/docs/reference/splatSimLibSizes.html
new file mode 100644
index 0000000000000000000000000000000000000000..a8cb353d521c96b48d71dfd4e0d8be4a5047de98
--- /dev/null
+++ b/docs/reference/splatSimLibSizes.html
@@ -0,0 +1,153 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simulate library sizes — splatSimLibSizes • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simulate library sizes</h1>
+    </div>
+
+    
+    <p>Simulate expected library sizes from a log-normal distribution</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimLibSizes</span>(<span class='no'>sim</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sim</th>
+      <td><p>SingleCellExperiment to add library size to.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object with simulation parameters.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with simulated library sizes.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimTrueCounts.html b/docs/reference/splatSimTrueCounts.html
new file mode 100644
index 0000000000000000000000000000000000000000..6f0ed0f8f1ede60ff8a6ec4189dbabc5ad652cd4
--- /dev/null
+++ b/docs/reference/splatSimTrueCounts.html
@@ -0,0 +1,155 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Simulate true counts — splatSimTrueCounts • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Simulate true counts</h1>
+    </div>
+
+    
+    <p>Simulate a true counts matrix. Counts are simulated from a poisson
+distribution where Each gene in each cell has it's own mean based on the
+group (or path position), expected library size and BCV.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimTrueCounts</span>(<span class='no'>sim</span>, <span class='no'>params</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>sim</th>
+      <td><p>SingleCellExperiment to add true counts to.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object with simulation parameters.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment with simulated true counts.</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatSimulate.html b/docs/reference/splatSimulate.html
new file mode 100644
index 0000000000000000000000000000000000000000..28ffcac03953ae094e8a8a1dbfba4e7a4cb1f17a
--- /dev/null
+++ b/docs/reference/splatSimulate.html
@@ -0,0 +1,278 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Splat simulation — splatSimulate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Splat simulation</h1>
+    </div>
+
+    
+    <p>Simulate count data from a fictional single-cell RNA-seq experiment using
+the Splat method.</p>
+    
+
+    <pre class="usage"><span class='fu'>splatSimulate</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSplatParams</a></span>(), <span class='kw'>method</span> <span class='kw'>=</span> <span class='fu'>c</span>(<span class='st'>"single"</span>, <span class='st'>"groups"</span>,
+  <span class='st'>"paths"</span>), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)
+
+<span class='fu'>splatSimulateSingle</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSplatParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)
+
+<span class='fu'>splatSimulateGroups</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSplatParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)
+
+<span class='fu'>splatSimulatePaths</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newSplatParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>SplatParams object containing parameters for the simulation.
+See <code><a href='SplatParams.html'>SplatParams</a></code> for details.</p></td>
+    </tr>
+    <tr>
+      <th>method</th>
+      <td><p>which simulation method to use. Options are "single" which
+produces a single population, "groups" which produces distinct groups
+(eg. cell types) or "paths" which selects cells from continuous
+trajectories (eg. differentiation processes).</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>any additional parameter settings to override what is provided in
+<code>params</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment object containing the simulated counts and
+intermediate values.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>Parameters can be set in a variety of ways. If no parameters are provided
+the default parameters are used. Any parameters in <code>params</code> can be
+overridden by supplying additional arguments through a call to
+<code><a href='setParams.html'>setParams</a></code>. This design allows the user flexibility in
+how they supply parameters and allows small adjustments without creating a
+new <code>SplatParams</code> object. See examples for a demonstration of how this
+can be used.</p>
+<p>The simulation involves the following steps:</p><ol>
+<li><p>Set up simulation object</p></li>
+<li><p>Simulate library sizes</p></li>
+<li><p>Simulate gene means</p></li>
+<li><p>Simulate groups/paths</p></li>
+<li><p>Simulate BCV adjusted cell means</p></li>
+<li><p>Simulate true counts</p></li>
+<li><p>Simulate dropout</p></li>
+<li><p>Create final dataset</p></li>
+</ol>
+    <p>The final output is a
+<code><a href='http://www.rdocumentation.org/packages/SingleCellExperiment/topics/SingleCellExperiment'>SingleCellExperiment</a></code> object that
+contains the simulated counts but also the values for various intermediate
+steps. These are stored in the <code><a href='http://www.rdocumentation.org/packages/SummarizedExperiment/topics/SummarizedExperiment-class'>colData</a></code>
+(for cell specific information), <code><a href='http://www.rdocumentation.org/packages/SummarizedExperiment/topics/SummarizedExperiment-class'>rowData</a></code>
+(for gene specific information) or <code><a href='http://www.rdocumentation.org/packages/SummarizedExperiment/topics/SummarizedExperiment-class'>assays</a></code>
+(for gene by cell matrices) slots. This additional information includes:</p><dl class='dl-horizontal'>
+    <dt><code>phenoData</code></dt><dd><p><dl class='dl-horizontal'>
+            <dt>Cell</dt><dd><p>Unique cell identifier.</p></dd>
+            <dt>Group</dt><dd><p>The group or path the cell belongs to.</p></dd>
+            <dt>ExpLibSize</dt><dd><p>The expected library size for that cell.</p></dd>
+            <dt>Step (paths only)</dt><dd><p>how far along the path each cell is.</p></dd>
+        </dl></p></dd>
+    <dt><code>featureData</code></dt><dd><p><dl class='dl-horizontal'>
+            <dt>Gene</dt><dd><p>Unique gene identifier.</p></dd>
+            <dt>BaseGeneMean</dt><dd><p>The base expression level for that gene.</p></dd>
+            <dt>OutlierFactor</dt><dd><p>Expression outlier factor for that gene.
+            Values of 1 indicate the gene is not an expression outlier.</p></dd>
+            <dt>GeneMean</dt><dd><p>Expression level after applying outlier factors.</p></dd>
+            <dt>BatchFac[Batch]</dt><dd><p>The batch effects factor for each gene for
+            a particular batch.</p></dd>
+            <dt>DEFac[Group]</dt><dd><p>The differential expression factor for each
+            gene in a particular group. Values of 1 indicate the gene is not
+            differentially expressed.</p></dd>
+            <dt>SigmaFac[Path]</dt><dd><p>Factor applied to genes that have
+            non-linear changes in expression along a path.</p></dd>
+        </dl></p></dd>
+    <dt><code>assayData</code></dt><dd><p><dl class='dl-horizontal'>
+            <dt>BatchCellMeans</dt><dd><p>The mean expression of genes in each cell
+            after adding batch effects.</p></dd>
+            <dt>BaseCellMeans</dt><dd><p>The mean expression of genes in each cell
+            after any differential expression and adjusted for expected
+            library size.</p></dd>
+            <dt>BCV</dt><dd><p>The Biological Coefficient of Variation for each gene
+            in each cell.</p></dd>
+            <dt>CellMeans</dt><dd><p>The mean expression level of genes in each cell
+            adjusted for BCV.</p></dd>
+            <dt>TrueCounts</dt><dd><p>The simulated counts before dropout.</p></dd>
+            <dt>Dropout</dt><dd><p>Logical matrix showing which values have been
+            dropped in which cells.</p></dd>
+        </dl></p></dd>
+</dl>
+    <p>Values that have been added by Splatter are named using <code>UpperCamelCase</code>
+in order to differentiate them from the values added by analysis packages
+which typically use <code>underscore_naming</code>.</p>
+    
+    <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2>
+
+    <p>Zappia L, Phipson B, Oshlack A. Splatter: simulation of single-cell RNA
+sequencing data. Genome Biology (2017).</p>
+<p>Paper: <a href='10.1186/s13059-017-1305-0'>10.1186/s13059-017-1305-0</a></p>
+<p>Code: <a href='https://github.com/Oshlack/splatter'>https://github.com/Oshlack/splatter</a></p>
+    
+    <h2 class="hasAnchor" id="see-also"><a class="anchor" href="#see-also"></a>See also</h2>
+
+    <p><code><a href='splatSimLibSizes.html'>splatSimLibSizes</a></code>, <code><a href='splatSimGeneMeans.html'>splatSimGeneMeans</a></code>,
+<code><a href='splatSimBatchEffects.html'>splatSimBatchEffects</a></code>, <code><a href='splatSimBatchCellMeans.html'>splatSimBatchCellMeans</a></code>,
+<code><a href='splatSimDE.html'>splatSimDE</a></code>, <code><a href='splatSimCellMeans.html'>splatSimCellMeans</a></code>,
+<code><a href='splatSimBCVMeans.html'>splatSimBCVMeans</a></code>, <code><a href='splatSimTrueCounts.html'>splatSimTrueCounts</a></code>,
+<code><a href='splatSimDropout.html'>splatSimDropout</a></code></p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='co'># Simulation with default parameters</span>
+<span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>splatSimulate</span>()</div><div class='output co'>#&gt; <span class='message'>Getting parameters...</span></div><div class='output co'>#&gt; <span class='message'>Creating simulation object...</span></div><div class='output co'>#&gt; <span class='message'>Simulating library sizes...</span></div><div class='output co'>#&gt; <span class='message'>Simulating gene means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating BCV...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts..</span></div><div class='output co'>#&gt; <span class='message'>Simulating dropout (if needed)...</span></div><div class='output co'>#&gt; <span class='message'>Done!</span></div><span class='co'># NOT RUN {</span>
+<span class='co'># Simulation with different number of genes</span>
+<span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>splatSimulate</span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>)
+<span class='co'># Simulation with custom parameters</span>
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='newParams.html'>newSplatParams</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>100</span>, <span class='kw'>mean.rate</span> <span class='kw'>=</span> <span class='fl'>0.5</span>)
+<span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>splatSimulate</span>(<span class='no'>params</span>)
+<span class='co'># Simulation with adjusted custom parameters</span>
+<span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>splatSimulate</span>(<span class='no'>params</span>, <span class='kw'>mean.rate</span> <span class='kw'>=</span> <span class='fl'>0.6</span>, <span class='kw'>out.prob</span> <span class='kw'>=</span> <span class='fl'>0.2</span>)
+<span class='co'># Simulate groups</span>
+<span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>splatSimulate</span>(<span class='kw'>method</span> <span class='kw'>=</span> <span class='st'>"groups"</span>)
+<span class='co'># Simulate paths</span>
+<span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>splatSimulate</span>(<span class='kw'>method</span> <span class='kw'>=</span> <span class='st'>"paths"</span>)
+<span class='co'># }</span></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+
+      <li><a href="#references">References</a></li>
+
+      <li><a href="#see-also">See also</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/splatter.html b/docs/reference/splatter.html
new file mode 100644
index 0000000000000000000000000000000000000000..3bcc5e2822d2234bdd88cae7abd1a5d43bdcb666
--- /dev/null
+++ b/docs/reference/splatter.html
@@ -0,0 +1,147 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>splatter. — splatter • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>splatter.</h1>
+    </div>
+
+    
+    <p><span class="pkg">splatter</span> is a package for the well-documented and reproducible
+simulation of single-cell RNA-seq count data.</p>
+    
+
+        
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>As well as it's own simulation model <span class="pkg">splatter</span> provides functions for
+the estimation of model parameters.</p>
+    
+    <h2 class="hasAnchor" id="see-also"><a class="anchor" href="#see-also"></a>See also</h2>
+
+    <p>Zappia L, Phipson B, Oshlack A. Splatter: Simulation Of Single-Cell RNA
+Sequencing Data. bioRxiv. 2017; doi:10.1101/133173</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      
+      <li><a href="#details">Details</a></li>
+
+      <li><a href="#see-also">See also</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/summariseDiff.html b/docs/reference/summariseDiff.html
new file mode 100644
index 0000000000000000000000000000000000000000..552d74d58c8cf57bff21794fc268d57f54183678
--- /dev/null
+++ b/docs/reference/summariseDiff.html
@@ -0,0 +1,170 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Summarise diffSCESs — summariseDiff • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Summarise diffSCESs</h1>
+    </div>
+
+    
+    <p>Summarise the results of <code><a href='diffSCEs.html'>diffSCEs</a></code>. Calculates the Median
+Absolute Deviation (MAD), Mean Absolute Error (MAE) and Root Mean Squared
+Error (RMSE) for the various properties and ranks them.</p>
+    
+
+    <pre class="usage"><span class='fu'>summariseDiff</span>(<span class='no'>diff</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>diff</th>
+      <td><p>Output from <code><a href='diffSCEs.html'>diffSCEs</a></code></p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>data.frame with MADs, MAEs, RMSEs, scaled statistics and ranks</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim1</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='splatSimulate.html'>splatSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>batchCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Getting parameters...</span></div><div class='output co'>#&gt; <span class='message'>Creating simulation object...</span></div><div class='output co'>#&gt; <span class='message'>Simulating library sizes...</span></div><div class='output co'>#&gt; <span class='message'>Simulating gene means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating BCV...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts..</span></div><div class='output co'>#&gt; <span class='message'>Simulating dropout (if needed)...</span></div><div class='output co'>#&gt; <span class='message'>Done!</span></div><div class='input'><span class='no'>sim2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='simpleSimulate.html'>simpleSimulate</a></span>(<span class='kw'>nGenes</span> <span class='kw'>=</span> <span class='fl'>1000</span>, <span class='kw'>nCells</span> <span class='kw'>=</span> <span class='fl'>20</span>)</div><div class='output co'>#&gt; <span class='message'>Simulating means...</span></div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='input'><span class='no'>difference</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='diffSCEs.html'>diffSCEs</a></span>(<span class='fu'>list</span>(<span class='kw'>Splat</span> <span class='kw'>=</span> <span class='no'>sim1</span>, <span class='kw'>Simple</span> <span class='kw'>=</span> <span class='no'>sim2</span>), <span class='kw'>ref</span> <span class='kw'>=</span> <span class='st'>"Simple"</span>)
+<span class='no'>summary</span> <span class='kw'>&lt;-</span> <span class='fu'>summariseDiff</span>(<span class='no'>difference</span>)
+<span class='fu'>head</span>(<span class='no'>summary</span>)</div><div class='output co'>#&gt;   Dataset Statistic          MAD MADScaled MADRank          MAE MAEScaled
+#&gt; 1   Splat      Mean     2.757589       NaN       1     2.651957       NaN
+#&gt; 2   Splat  Variance    10.467288       NaN       1    10.272985       NaN
+#&gt; 3   Splat ZerosGene    40.000000       NaN       1    44.935000       NaN
+#&gt; 4   Splat   MeanVar     9.682925       NaN       1    12.193247       NaN
+#&gt; 5   Splat MeanZeros    45.000000       NaN       1    44.460000       NaN
+#&gt; 6   Splat   LibSize 56511.000000       NaN       1 59458.300000       NaN
+#&gt;   MAERank         RMSE RMSEScaled RMSERank
+#&gt; 1       1     3.182101        NaN        1
+#&gt; 2       1    13.133714        NaN        1
+#&gt; 3       1    48.428039        NaN        1
+#&gt; 4       1    15.352203        NaN        1
+#&gt; 5       1    53.898052        NaN        1
+#&gt; 6       1 61094.139540        NaN        1</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/winsorize.html b/docs/reference/winsorize.html
new file mode 100644
index 0000000000000000000000000000000000000000..320f7ea7925795103fadf35f30a2d31adfc803e8
--- /dev/null
+++ b/docs/reference/winsorize.html
@@ -0,0 +1,153 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Winsorize vector — winsorize • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Winsorize vector</h1>
+    </div>
+
+    
+    <p>Set outliers in a numeric vector to a specified percentile.</p>
+    
+
+    <pre class="usage"><span class='fu'>winsorize</span>(<span class='no'>x</span>, <span class='no'>q</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>x</th>
+      <td><p>Numeric vector to winsorize</p></td>
+    </tr>
+    <tr>
+      <th>q</th>
+      <td><p>Percentile to set from each end</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>Winsorized numeric vector</p>
+    
+
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+          </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/zinbEstimate.html b/docs/reference/zinbEstimate.html
new file mode 100644
index 0000000000000000000000000000000000000000..5bd42b014258b50ed8063b89c99d272c9e76ca1f
--- /dev/null
+++ b/docs/reference/zinbEstimate.html
@@ -0,0 +1,225 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>Estimate ZINB-WaVE simulation parameters — zinbEstimate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Estimate ZINB-WaVE simulation parameters</h1>
+    </div>
+
+    
+    <p>Estimate simulation parameters for the ZINB-WaVE simulation from a real
+dataset.</p>
+    
+
+    <pre class="usage"><span class='fu'>zinbEstimate</span>(<span class='no'>counts</span>, <span class='kw'>design.samples</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>design.genes</span> <span class='kw'>=</span> <span class='kw'>NULL</span>,
+  <span class='kw'>common.disp</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>iter.init</span> <span class='kw'>=</span> <span class='fl'>2</span>, <span class='kw'>iter.opt</span> <span class='kw'>=</span> <span class='fl'>25</span>, <span class='kw'>stop.opt</span> <span class='kw'>=</span> <span class='fl'>1e-04</span>,
+  <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newZINBParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>(), <span class='no'>...</span>)
+
+<span class='co'># S3 method for SingleCellExperiment</span>
+<span class='fu'>zinbEstimate</span>(<span class='no'>counts</span>, <span class='kw'>design.samples</span> <span class='kw'>=</span> <span class='kw'>NULL</span>,
+  <span class='kw'>design.genes</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>common.disp</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>iter.init</span> <span class='kw'>=</span> <span class='fl'>2</span>, <span class='kw'>iter.opt</span> <span class='kw'>=</span> <span class='fl'>25</span>,
+  <span class='kw'>stop.opt</span> <span class='kw'>=</span> <span class='fl'>1e-04</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newZINBParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+  <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>(), <span class='no'>...</span>)
+
+<span class='co'># S3 method for matrix</span>
+<span class='fu'>zinbEstimate</span>(<span class='no'>counts</span>, <span class='kw'>design.samples</span> <span class='kw'>=</span> <span class='kw'>NULL</span>,
+  <span class='kw'>design.genes</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>common.disp</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>iter.init</span> <span class='kw'>=</span> <span class='fl'>2</span>, <span class='kw'>iter.opt</span> <span class='kw'>=</span> <span class='fl'>25</span>,
+  <span class='kw'>stop.opt</span> <span class='kw'>=</span> <span class='fl'>1e-04</span>, <span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newZINBParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+  <span class='kw'>BPPARAM</span> <span class='kw'>=</span> <span class='fu'>SerialParam</span>(), <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>counts</th>
+      <td><p>either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.</p></td>
+    </tr>
+    <tr>
+      <th>design.samples</th>
+      <td><p>design matrix of sample-level covariates.</p></td>
+    </tr>
+    <tr>
+      <th>design.genes</th>
+      <td><p>design matrix of gene-level covariates.</p></td>
+    </tr>
+    <tr>
+      <th>common.disp</th>
+      <td><p>logical. Whether or not a single dispersion for all
+features is estimated.</p></td>
+    </tr>
+    <tr>
+      <th>iter.init</th>
+      <td><p>number of iterations to use for initalization.</p></td>
+    </tr>
+    <tr>
+      <th>iter.opt</th>
+      <td><p>number of iterations to use for optimization.</p></td>
+    </tr>
+    <tr>
+      <th>stop.opt</th>
+      <td><p>stopping criterion for optimization.</p></td>
+    </tr>
+    <tr>
+      <th>params</th>
+      <td><p>ZINBParams object to store estimated values in.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages.</p></td>
+    </tr>
+    <tr>
+      <th>BPPARAM</th>
+      <td><p>A <code><a href='http://www.rdocumentation.org/packages/BiocParallel/topics/BiocParallelParam-class'>BiocParallelParam</a></code> instance
+giving the parallel back-end to be used. Default is
+<code><a href='http://www.rdocumentation.org/packages/BiocParallel/topics/SerialParam-class'>SerialParam</a></code> which uses a single core.</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>additional arguments passes to <code><a href='http://www.rdocumentation.org/packages/zinbwave/topics/zinbFit'>zinbFit</a></code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>ZINBParams object containing the estimated parameters.</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The function is a wrapper around <code><a href='http://www.rdocumentation.org/packages/zinbwave/topics/zinbFit'>zinbFit</a></code> that takes
+the fitted model and inserts it into a <code><a href='ZINBParams.html'>ZINBParams</a></code> object. See
+<code><a href='ZINBParams.html'>ZINBParams</a></code> for more details on the parameters and
+<code><a href='http://www.rdocumentation.org/packages/zinbwave/topics/zinbFit'>zinbFit</a></code> for details of the estimation procedure.</p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><span class='co'># NOT RUN {</span>
+<span class='fu'>data</span>(<span class='st'>"sc_example_counts"</span>)
+<span class='no'>params</span> <span class='kw'>&lt;-</span> <span class='fu'>zinbEstimate</span>(<span class='no'>sc_example_counts</span>)
+<span class='no'>params</span>
+<span class='co'># }</span></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/docs/reference/zinbSimulate.html b/docs/reference/zinbSimulate.html
new file mode 100644
index 0000000000000000000000000000000000000000..2dea5b285307787c5c4a91773dfe5dbc2375b805
--- /dev/null
+++ b/docs/reference/zinbSimulate.html
@@ -0,0 +1,186 @@
+<!-- Generated by pkgdown: do not edit by hand -->
+<!DOCTYPE html>
+<html>
+  <head>
+  <meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<title>ZINB-WaVE simulation — zinbSimulate • Splatter</title>
+
+<!-- jquery -->
+<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
+
+<!-- pkgdown -->
+<link href="../pkgdown.css" rel="stylesheet">
+<script src="../jquery.sticky-kit.min.js"></script>
+<script src="../pkgdown.js"></script>
+  <link href="../extra.css" rel="stylesheet">
+  
+<!-- mathjax -->
+<script src='https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
+
+<!--[if lt IE 9]>
+<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<![endif]-->
+
+
+<!-- Google analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-52309538-4', 'auto');
+  ga('send', 'pageview');
+
+</script>
+
+  </head>
+
+  <body>
+    <div class="container template-reference-topic">
+      <header>
+      <div class="navbar navbar-default navbar-fixed-top" role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <a class="navbar-brand" href="../index.html">splatter</a>
+    </div>
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="..//index.html">
+    <span class="fa fa-home fa-lg"></span>
+     
+  </a>
+</li>
+<li>
+  <a href="../articles/splatter.html">Get Started</a>
+</li>
+<li>
+  <a href="../reference/index.html">Reference</a>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      
+      <ul class="nav navbar-nav navbar-right">
+        <li>
+  <a href="https://github.com/Oshlack/splatter">
+    <span class="fa fa-github fa-lg"></span>
+     
+  </a>
+</li>
+      </ul>
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+      </header>
+
+      <div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>ZINB-WaVE simulation</h1>
+    </div>
+
+    
+    <p>Simulate counts using the ZINB-WaVE method.</p>
+    
+
+    <pre class="usage"><span class='fu'>zinbSimulate</span>(<span class='kw'>params</span> <span class='kw'>=</span> <span class='fu'><a href='newParams.html'>newZINBParams</a></span>(), <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+    
+    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a> Arguments</h2>
+    <table class="ref-arguments">
+    <colgroup><col class="name" /><col class="desc" /></colgroup>
+    <tr>
+      <th>params</th>
+      <td><p>ZINBParams object containing simulation parameters.</p></td>
+    </tr>
+    <tr>
+      <th>verbose</th>
+      <td><p>logical. Whether to print progress messages</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>any additional parameter settings to override what is provided in
+<code>params</code>.</p></td>
+    </tr>
+    </table>
+    
+    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
+
+    <p>SingleCellExperiment containing simulated counts</p>
+    
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>This function is just a wrapper around <code><a href='http://www.rdocumentation.org/packages/zinbwave/topics/zinbSim'>zinbSim</a></code> that
+takes a <code><a href='ZINBParams.html'>ZINBParams</a></code>, runs the simulation then converts the
+output to a <code><a href='http://www.rdocumentation.org/packages/SingleCellExperiment/topics/SingleCellExperiment'>SingleCellExperiment</a></code> object.
+See <code><a href='http://www.rdocumentation.org/packages/zinbwave/topics/zinbSim'>zinbSim</a></code> and the ZINB-WaVE paper for
+more details about how the simulation works.</p>
+    
+    <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2>
+
+    <p>Campbell K, Yau C. Uncovering genomic trajectories with heterogeneous genetic
+and environmental backgrounds across single-cells and populations. bioRxiv
+(2017).</p>
+<p>Risso D, Perraudeau F, Gribkova S, Dudoit S, Vert J-P. ZINB-WaVE: A general
+and flexible method for signal extraction from single-cell RNA-seq data
+bioRxiv (2017).</p>
+<p>Paper: <a href='10.1101/125112'>10.1101/125112</a></p>
+<p>Code: <a href='https://github.com/drisso/zinbwave'>https://github.com/drisso/zinbwave</a></p>
+    
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='no'>sim</span> <span class='kw'>&lt;-</span> <span class='fu'>zinbSimulate</span>()</div><div class='output co'>#&gt; <span class='message'>Simulating counts...</span></div><div class='output co'>#&gt; <span class='message'>Creating final dataset...</span></div><div class='input'>
+</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      
+      <li><a href="#value">Value</a></li>
+
+      <li><a href="#details">Details</a></li>
+
+      <li><a href="#references">References</a></li>
+      
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </div>
+</div>
+
+      <footer>
+      <div class="copyright">
+  <p>Developed by Luke Zappia, Belinda Phipson, Alicia Oshlack.</p>
+</div>
+
+<div class="pkgdown">
+  <p>Site built with <a href="http://hadley.github.io/pkgdown/">pkgdown</a>.</p>
+</div>
+
+      </footer>
+   </div>
+
+  </body>
+</html>
diff --git a/index.md b/index.md
new file mode 100644
index 0000000000000000000000000000000000000000..24e894f7a1b4da355ce2c483c692121cf395e223
--- /dev/null
+++ b/index.md
@@ -0,0 +1,79 @@
+[![Travis-CI Build Status](https://travis-ci.org/Oshlack/splatter.svg?branch=master)](https://travis-ci.org/Oshlack/splatter)
+[![Coverage Status](https://img.shields.io/codecov/c/github/Oshlack/splatter/master.svg)](https://codecov.io/github/Oshlack/splatter?branch=master)
+[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/Oshlack/splatter?branch=master&svg=true)](https://ci.appveyor.com/project/Oshlack/splatter)
+[![Bioconductor History](https://bioconductor.org/shields/years-in-bioc/splatter.svg)](https://bioconductor.org/packages/devel/bioc/html/splatter.html)
+[![Bioconductor Status](https://bioconductor.org/shields/build/devel/bioc/splatter.svg)](https://bioconductor.org/packages/devel/bioc/html/splatter.html)
+[![Bioconductor Downloads](https://bioconductor.org/shields/downloads/splatter.svg)](https://bioconductor.org/packages/devel/bioc/html/splatter.html)
+
+![Splatter logo](https://s16.postimg.org/xc6u52b0l/splatter_logo_small.png)
+
+Splatter is an R package for the simple simulation of single-cell RNA sequencing
+data. Splatter provides a common interface to multiple simulations that have:
+
+* Functions for estimating simulation parameters
+* Objects for storing those parameters
+* Functions for simulating counts using those parameters
+* Functions for comparing simulations and real datasets
+
+Splatter is built on top of [`scater`][scater] and stores simulations in
+`SCESet` objects. Splatter also has functions for comparing simulations and real
+datasets.
+
+**!Please note!** This site provides documentation for the development version
+of Splatter. For details on the current release please refer to
+https://bioconductor.org/packages/splatter.
+
+## Installation.
+
+### Release version
+
+Splatter has been accepted into the latest version of [Bioconductor][bioc]
+and hence requires the latest version of R (>=3.4).
+
+If you have these installed Splatter can be installed from Bioconductor using
+`biocLite`:
+
+```{r}
+source("https://bioconductor.org/biocLite.R")
+biocLite("splatter")
+```
+
+If you wish to build a local version of the vignette use:
+
+```{r}
+biocLite("splatter", build_vignettes=TRUE)
+```
+
+This will also build the vignette and install all suggested dependencies (which
+aren't required for core functionality). Building the vignette may sometimes 
+fail when run from the command line, if this happens try running the install
+command in RStudio.
+
+### Development version
+
+If you want to try the [development version][devel] this can also be installed
+from Bioconductor:
+
+```{r}
+library(BiocInstaller)
+useDevel()
+biocValid()              # checks for out of date packages
+biocLite()               # (optional) updates out of date packages
+biocLite("splatter")
+```
+
+Depending on the current release cycle you may also need to install the
+development version of R. See [here][bioc-install] for more details.
+
+Alternatively the development version can be installed directly from
+[Github][github]:
+
+```{r}
+devtools::install("Oshlack/splatter")
+```
+
+[scater]: https://github.com/davismcc/scater
+[bioc]: https://bioconductor.org/packages/splatter
+[devel]: https://bioconductor.org/packages/devel/bioc/html/splatter.html
+[bioc-install]: https://www.bioconductor.org/developers/how-to/useDevel/
+[github]: https://github.com/Oshlack/splatter
diff --git a/inst/CITATION b/inst/CITATION
new file mode 100644
index 0000000000000000000000000000000000000000..7d56fb8c7b4a92b03a5897f8ab41f4320e2ee728
--- /dev/null
+++ b/inst/CITATION
@@ -0,0 +1,10 @@
+citEntry(
+    entry = "article",
+    author = "Luke Zappia and Belinda Phipson and Alicia Oshlack",
+    title = "Splatter: simulation of single-cell RNA sequencing data",
+    journal = "Genome Biology",
+    year = "2017",
+    url = "http://dx.doi.org/10.1186/s13059-017-1305-0",
+    doi =  "10.1186/s13059-017-1305-0",
+    textVersion = "Zappia L, Phipson B, Oshlack A. Splatter: Simulation of single-cell RNA sequencing data. Genome Biology. 2017; doi:10.1186/s13059-017-1305-0"
+)
diff --git a/inst/NEWS.Rd b/inst/NEWS.Rd
index f13d1c1c71ffa354053e1b16dd6eaf8cd5cd6948..6b287066109545df632ae56d85815133994a2152 100644
--- a/inst/NEWS.Rd
+++ b/inst/NEWS.Rd
@@ -1,6 +1,23 @@
 \name{NEWS}
 \title{News for Package \pkg{splatter}}
 
+\section{Version 1.1.8, Bioconductor 3.6 Release (2017-10-13)}{
+  \itemize{
+    \item{Now published in Genome Biology!}
+    \item{Converted to the SingleCellExperiment object}
+    \item{Added new simulations: BASiCS, mfa, PhenoPath, ZINB-WaVE}
+    \item{Added batch effects to the Splat simulation. This required a change
+          to the SplatParams object.}
+    \item{Improved scDD estimation}
+    \item{Added and improved comparison functions}
+    \item{Improved default Splat parameters and estimation}
+    \item{Improvements to the Lun2Params object}
+    \item{Added addGeneLength function}
+    \item{Updated simulation references}
+    \item{Various other minor updates and bug fixes}
+  }
+}
+
 \section{Version 0.99.16, Bioconductor 3.5 Release (2017-04-23)}{
   \itemize{
     \item{Splatter is a package for the simple simulation of single-cell
diff --git a/man/BASiCSEstimate.Rd b/man/BASiCSEstimate.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..0fabfebad0e5f63082e073c8eb9913d0bb97bae3
--- /dev/null
+++ b/man/BASiCSEstimate.Rd
@@ -0,0 +1,72 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/BASiCS-estimate.R
+\name{BASiCSEstimate}
+\alias{BASiCSEstimate}
+\alias{BASiCSEstimate.SCESet}
+\alias{BASiCSEstimate.matrix}
+\title{Estimate BASiCS simulation parameters}
+\usage{
+BASiCSEstimate(counts, spike.info = NULL, batch = NULL, n = 20000,
+  thin = 10, burn = 5000, params = newBASiCSParams(), verbose = TRUE,
+  progress = TRUE, ...)
+
+\method{BASiCSEstimate}{SCESet}(counts, spike.info = NULL, batch = NULL,
+  n = 20000, thin = 10, burn = 5000, params = newBASiCSParams(),
+  verbose = TRUE, progress = TRUE, ...)
+
+\method{BASiCSEstimate}{matrix}(counts, spike.info = NULL, batch = NULL,
+  n = 20000, thin = 10, burn = 5000, params = newBASiCSParams(),
+  verbose = TRUE, progress = TRUE, ...)
+}
+\arguments{
+\item{counts}{either a counts matrix or an SCESet object containing count
+data to estimate parameters from.}
+
+\item{spike.info}{data.frame describing spike-ins with two columns: "Name"
+giving the names of the spike-in features (must match
+\code{rownames(counts)}) and "Input" giving the number of input
+molecules.}
+
+\item{batch}{vector giving the batch that each cell belongs to.}
+
+\item{n}{total number of MCMC iterations. Must be \code{>= max(4, thin)} and
+a multiple of \code{thin}.}
+
+\item{thin}{thining period for the MCMC sampler. Must be \code{>= 2}.}
+
+\item{burn}{burn-in period for the MCMC sampler. Must be in the range
+\code{1 <= burn < n} and a multiple of \code{thin}.}
+
+\item{params}{BASiCSParams object to store estimated values in.}
+
+\item{verbose}{logical. Whether to print progress messages.}
+
+\item{progress}{logical. Whether to print additional BASiCS progress
+messages.}
+
+\item{...}{Optional parameters passed to \code{\link[BASiCS]{BASiCS_MCMC}}.}
+}
+\value{
+BASiCSParams object containing the estimated parameters.
+}
+\description{
+Estimate simulation parameters for the BASiCS simulation from a real dataset.
+}
+\details{
+This function is just a wrapper around \code{\link[BASiCS]{BASiCS_MCMC}} that
+takes the output and converts it to a BASiCSParams object. Either a set of
+spike-ins or batch information (or both) must be supplied. If only batch
+information is provided there must be at least two batches. See
+\code{\link[BASiCS]{BASiCS_MCMC}} for details.
+}
+\examples{
+\dontrun{
+data("sc_example_counts")
+spike.info <- data.frame(Name = rownames(sc_example_counts)[1:10],
+                         Input = rnorm(10, 500, 200),
+                         stringsAsFactors = FALSE)
+params <- BASiCSEstimate(sc_example_counts[1:50, 1:20],
+                         spike.info)
+params
+}
+}
diff --git a/man/BASiCSParams.Rd b/man/BASiCSParams.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..0bfb09a000d4d203dedf0eb6e7f73e5161080802
--- /dev/null
+++ b/man/BASiCSParams.Rd
@@ -0,0 +1,59 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/AllClasses.R
+\docType{class}
+\name{BASiCSParams}
+\alias{BASiCSParams}
+\alias{BASiCSParams-class}
+\title{The BASiCSParams class}
+\description{
+S4 class that holds parameters for the BASiCS simulation.
+}
+\section{Parameters}{
+
+
+The BASiCS simulation uses the following parameters:
+\describe{
+    \item{\code{nGenes}}{The number of genes to simulate.}
+    \item{\code{nCells}}{The number of cells to simulate.}
+    \item{\code{[seed]}}{Seed to use for generating random numbers.}
+    \item{\emph{Batch parameters}}{
+        \describe{
+           \item{\code{nBatches}}{Number of batches to simulate.}
+           \item{\code{batchCells}}{Number of cells in each batch.}
+        }
+    }
+    \item{\emph{Gene parameters}}{
+        \describe{
+            \item{\code{gene.params}}{A \code{data.frame} containing gene
+            parameters with two coloumns: \code{Mean} (mean expression for
+            each biological gene) and \code{Delta} (cell-to-cell
+            heterogeneity for each biological gene).}
+        }
+    }
+    \item{\emph{Spike-in parameters}}{
+        \describe{
+            \item{\code{nSpikes}}{The number of spike-ins to simulate.}
+            \item{\code{spike.means}}{Input molecules for each spike-in.}
+        }
+    }
+    \item{\emph{Cell parameters}}{
+        \describe{
+            \item{\code{cell.params}}{A \code{data.frame} containing gene
+            parameters with two coloumns: \code{Phi} (mRNA content factor for
+            each cell, scaled to sum to the number of cells in each batch)
+            and \code{S} (capture efficient for each cell).}
+        }
+    }
+    \item{\emph{Variability parameters}}{
+        \describe{
+            \item{\code{theta}}{Technical variability parameter for each
+            batch.}
+        }
+    }
+}
+
+The parameters not shown in brackets can be estimated from real data using
+\code{\link{BASiCSEstimate}}. For details of the BASiCS simulation see
+\code{\link{BASiCSSimulate}}.
+}
+
diff --git a/man/BASiCSSimulate.Rd b/man/BASiCSSimulate.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..cc92db054bd1f6f8259a9315258eb7719c4736cd
--- /dev/null
+++ b/man/BASiCSSimulate.Rd
@@ -0,0 +1,40 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/BASiCS-simulate.R
+\name{BASiCSSimulate}
+\alias{BASiCSSimulate}
+\title{BASiCS simulation}
+\usage{
+BASiCSSimulate(params = newBASiCSParams(), verbose = TRUE, ...)
+}
+\arguments{
+\item{params}{BASiCSParams object containing simulation parameters.}
+
+\item{verbose}{logical. Whether to print progress messages}
+
+\item{...}{any additional parameter settings to override what is provided in
+\code{params}.}
+}
+\value{
+SingleCellExperiment containing simulated counts
+}
+\description{
+Simulate counts using the BASiCS method.
+}
+\details{
+This function is just a wrapper around \code{\link[BASiCS]{BASiCS_Sim}} that
+takes a \code{\link{BASiCSParams}}, runs the simulation then converts the
+output to an \code{\link[scater]{SCESet}} object. See
+\code{\link[BASiCS]{BASiCS_Sim}} for more details of how the simulation
+works.
+}
+\examples{
+sim <- BASiCSSimulate()
+}
+\references{
+Vallejos CA, Marioni JC, Richardson S. BASiCS: Bayesian Analysis of
+Single-Cell Sequencing data. PLoS Comput. Biol. (2015).
+
+Paper: \url{10.1371/journal.pcbi.1004333}
+
+Code: \url{https://github.com/catavallejos/BASiCS}
+}
diff --git a/man/Lun2Params.Rd b/man/Lun2Params.Rd
index c49a92d153c5606e0cd32dc103a2f74fa7fcc66c..db97ba60ce719bf195a30172f9ae3b870fa2cb68 100644
--- a/man/Lun2Params.Rd
+++ b/man/Lun2Params.Rd
@@ -6,7 +6,7 @@
 \alias{Lun2Params-class}
 \title{The Lun2Params class}
 \description{
-S4 class that holds parameters for the Lun simulation.
+S4 class that holds parameters for the Lun2 simulation.
 }
 \section{Parameters}{
 
diff --git a/man/MFAParams.Rd b/man/MFAParams.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..10671a56d85822bb5a40edb87d8f502e9437b023
--- /dev/null
+++ b/man/MFAParams.Rd
@@ -0,0 +1,34 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/AllClasses.R
+\docType{class}
+\name{MFAParams}
+\alias{MFAParams}
+\alias{MFAParams-class}
+\title{The MFAParams class}
+\description{
+S4 class that holds parameters for the mfa simulation.
+}
+\section{Parameters}{
+
+
+The mfa simulation uses the following parameters:
+\describe{
+    \item{\code{nGenes}}{The number of genes to simulate.}
+    \item{\code{nCells}}{The number of cells to simulate.}
+    \item{\code{[seed]}}{Seed to use for generating random numbers.}
+    \item{\code{[trans.prop]}}{Proportion of genes that show transient
+    expression. These genes are briefly up or down-regulated before returning
+    to their initial state}
+    \item{\code{[zero.neg]}}{Logical. Whether to set negative expression
+    values to zero. This will zero-inflate the data.}
+    \item{\code{[dropout.present]}}{Logical. Whether to simulate dropout.}
+    \item{\code{dropout.lambda}}{Lambda parameter for the exponential
+    dropout function.}
+}
+
+The parameters not shown in brackets can be estimated from real data using
+\code{\link{mfaEstimate}}. See \code{\link[mfa]{create_synthetic}} for more
+details about the parameters. For details of the Splatter implementation of
+the mfa simulation see \code{\link{mfaSimulate}}.
+}
+
diff --git a/man/Params.Rd b/man/Params.Rd
index c8fbe4566a83eea6ec35f0ee19667cbd905fd183..156c6c4e204c14862bed13e076e70900f2543d36 100644
--- a/man/Params.Rd
+++ b/man/Params.Rd
@@ -14,11 +14,11 @@ Virtual S4 class that all other Params classes inherit from.
 The Params class defines the following parameters:
 
 \describe{
-    \item{\code{[nGenes]}}{The number of genes to simulate.}
-    \item{\code{[nCells]}}{The number of cells to simulate.}
-    \item{\code{seed}}{Seed to use for generating random numbers.}
+    \item{\code{nGenes}}{The number of genes to simulate.}
+    \item{\code{nCells}}{The number of cells to simulate.}
+    \item{\code{[seed]}}{Seed to use for generating random numbers.}
 }
 
-The parameters shown in brackets can be estimated from real data.
+The parameters not shown in brackets can be estimated from real data.
 }
 
diff --git a/man/PhenoParams.Rd b/man/PhenoParams.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..b1e135f28ffa19cc6fa11e950bf9295a2d443f6a
--- /dev/null
+++ b/man/PhenoParams.Rd
@@ -0,0 +1,34 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/AllClasses.R
+\docType{class}
+\name{PhenoParams}
+\alias{PhenoParams}
+\alias{PhenoParams-class}
+\title{The PhenoParams class}
+\description{
+S4 class that holds parameters for the PhenoPath simulation.
+}
+\section{Parameters}{
+
+
+The PhenoPath simulation uses the following parameters:
+
+\describe{
+    \item{\code{nGenes}}{The number of genes to simulate.}
+    \item{\code{nCells}}{The number of cells to simulate.}
+    \item{\code{[seed]}}{Seed to use for generating random numbers.}
+    \item{\code{[n.de]}}{Number of genes to simulate from the differential
+    expression regime}
+    \item{\code{[n.pst]}}{Number of genes to simulate from the pseudotime
+    regime}
+    \item{\code{[n.pst.beta]}}{Number of genes to simulate from the
+    pseudotime + beta interactions regime}
+    \item{\code{[n.de.pst.beta]}}{Number of genes to simulate from the
+    differential expression + pseudotime + interactions regime}
+}
+
+The parameters not shown in brackets can be estimated from real data using
+\code{\link{phenoEstimate}}. For details of the PhenoPath simulation
+see \code{\link{phenoSimulate}}.
+}
+
diff --git a/man/SCDDParams.Rd b/man/SCDDParams.Rd
index 8e3b2eabc3900ea0fdb5b79c088d2dbe4f340617..894530c483b0f5685740de994b226019422d0c38 100644
--- a/man/SCDDParams.Rd
+++ b/man/SCDDParams.Rd
@@ -14,29 +14,29 @@ S4 class that holds parameters for the scDD simulation.
 The SCDD simulation uses the following parameters:
 
 \describe{
-    \item{\code{[nGenes]}}{The number of genes to simulate (not used).}
+    \item{\code{nGenes}}{The number of genes to simulate (not used).}
     \item{\code{nCells}}{The number of cells to simulate in each condition.}
     \item{\code{[seed]}}{Seed to use for generating random numbers.}
     \item{\code{SCdat}}{
-    \code{\link[SummarizedExperiment]{SummarizedExperiment}} containing real
+    \code{\link[SingleCellExperiment]{SingleCellExperiment}} containing real
     data.}
-    \item{\code{[nDE]}}{Number of DE genes to simulate.}
-    \item{\code{[nDP]}}{Number of DP genes to simulate.}
-    \item{\code{[nDM]}}{Number of DM genes to simulate.}
-    \item{\code{[nDB]}}{Number of DB genes to simulate.}
-    \item{\code{[nEE]}}{Number of EE genes to simulate.}
-    \item{\code{[nEP]}}{Number of EP genes to simulate.}
+    \item{\code{nDE}}{Number of DE genes to simulate.}
+    \item{\code{nDP}}{Number of DP genes to simulate.}
+    \item{\code{nDM}}{Number of DM genes to simulate.}
+    \item{\code{nDB}}{Number of DB genes to simulate.}
+    \item{\code{nEE}}{Number of EE genes to simulate.}
+    \item{\code{nEP}}{Number of EP genes to simulate.}
     \item{\code{[sd.range]}}{Interval for fold change standard deviations.}
     \item{\code{[modeFC]}}{Values for DP, DM and DB mode fold changes.}
     \item{\code{[varInflation]}}{Variance inflation factors for each
-    condition. If all equal to 1 will be set to \code{NULL} (default)}
+    condition. If all equal to 1 will be set to \code{NULL} (default).}
     \item{\code{[condition]}}{String giving the column that represents
-    biological group of interest}
+    biological group of interest.}
 }
 
 The parameters not shown in brackets can be estimated from real data using
 \code{\link{scDDEstimate}}. See \code{\link[scDD]{simulateSet}} for more
-details of the parameters. For details of the Splatter implementation of the
-scDD simulation see \code{\link{scDDSimulate}}.
+details about the parameters. For details of the Splatter implementation of
+the scDD simulation see \code{\link{scDDSimulate}}.
 }
 
diff --git a/man/SplatParams.Rd b/man/SplatParams.Rd
index 14bca2a036705ada0b92b2e5084609ed98075a48..f1d54f0191fd632c953197b7e47e4d55fd9b9e24 100644
--- a/man/SplatParams.Rd
+++ b/man/SplatParams.Rd
@@ -16,10 +16,18 @@ The Splatter simulation requires the following parameters:
 \describe{
     \item{\code{nGenes}}{The number of genes to simulate.}
     \item{\code{nCells}}{The number of cells to simulate.}
-    \item{\code{[nGroups]}}{The number of groups or paths to simulate.}
-    \item{\code{[groupCells]}}{Vector giving the number of cells in each
-    simulation group/path.}
     \item{\code{[seed]}}{Seed to use for generating random numbers.}
+    \item{\emph{Batch parameters}}{
+        \describe{
+            \item{\code{[nBatches]}}{The number of batches to simulate.}
+            \item{\code{[batchCells]}}{Vector giving the number of cells in
+            each batch.}
+            \item{\code{[batch.facLoc]}}{Location (meanlog) parameter for the
+            batch effect factor log-normal distribution. Can be a vector.}
+            \item{\code{[batch.facScale]}}{Scale (sdlog) parameter for the
+            batch effect factor log-normal distribution. Can be a vector.}
+        }
+    }
     \item{\emph{Mean parameters}}{
         \describe{
             \item{\code{mean.shape}}{Shape parameter for the mean gamma
@@ -46,6 +54,14 @@ The Splatter simulation requires the following parameters:
             expression outlier factor log-normal distribution.}
         }
     }
+    \item{\emph{Group parameters}}{
+        \describe{
+            \item{\code{[nGroups]}}{The number of groups or paths to
+            simulate.}
+            \item{\code{[group.prob]}}{Probability that a cell comes from a
+            group.}
+        }
+    }
     \item{\emph{Differential expression parameters}}{
         \describe{
             \item{\code{[de.prob]}}{Probability that a gene is differentially
diff --git a/man/ZINBParams.Rd b/man/ZINBParams.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..e7fc22a1cdcf7a8627bfbb2c8edd5e0c095fb1b3
--- /dev/null
+++ b/man/ZINBParams.Rd
@@ -0,0 +1,32 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/AllClasses.R
+\docType{class}
+\name{ZINBParams}
+\alias{ZINBParams}
+\alias{ZINBParams-class}
+\title{The ZINBParams class}
+\description{
+S4 class that holds parameters for the ZINB-WaVE simulation.
+}
+\section{Parameters}{
+
+
+The ZINB-WaVE simulation uses the following parameters:
+
+\describe{
+    \item{\code{nGenes}}{The number of genes to simulate.}
+    \item{\code{nCells}}{The number of cells to simulate.}
+    \item{\code{[seed]}}{Seed to use for generating random numbers.}
+    \item{\code{model}}{Object describing a ZINB model.}
+}
+
+The majority of the parameters for this simulation are stored in a
+\code{\link[zinbwave]{ZinbModel}} object. Please refer to the documentation
+for this class and its constructor(\code{\link[zinbwave]{zinbModel}}) for
+details about all the parameters.
+
+The parameters not shown in brackets can be estimated from real data using
+\code{\link{zinbEstimate}}. For details of the ZINB-WaVE simulation
+see \code{\link{zinbSimulate}}.
+}
+
diff --git a/man/addFeatureStats.Rd b/man/addFeatureStats.Rd
index f4f72ef4cd05c914a0cac48746a6118102d5f1ed..4edd20d7f7e2f607ac32420e6d46d73cb8e7bb6a 100644
--- a/man/addFeatureStats.Rd
+++ b/man/addFeatureStats.Rd
@@ -1,5 +1,5 @@
 % Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/SCESet-functions.R
+% Please edit documentation in R/SCE-functions.R
 \name{addFeatureStats}
 \alias{addFeatureStats}
 \title{Add feature statistics}
@@ -8,11 +8,11 @@ addFeatureStats(sce, value = c("counts", "cpm", "tpm", "fpkm"), log = FALSE,
   offset = 1, no.zeros = FALSE)
 }
 \arguments{
-\item{sce}{SCESet to add feature statistics to.}
+\item{sce}{SingleCellExperiment to add feature statistics to.}
 
 \item{value}{the expression value to calculate statistics for. Options are
 "counts", "cpm", "tpm" or "fpkm". The values need to exist in the
-given SCESet.}
+given SingleCellExperiment.}
 
 \item{log}{logical. Whether to take log2 before calculating statistics.}
 
@@ -22,16 +22,16 @@ given SCESet.}
 calculating statistics.}
 }
 \value{
-SCESet with additional feature statistics
+SingleCellExperiment with additional feature statistics
 }
 \description{
-Add additional feature statistics to an SCESet object
+Add additional feature statistics to a SingleCellExperiment object
 }
 \details{
 Currently adds the following statistics: mean, variance, coefficient of
 variation, median and median absolute deviation. Statistics are added to
-the \code{fData} slot and are named \code{Stat[Log]Value[No0]} where
-\code{Log} and \code{No0} are added if those arguments are true.
-UpperCamelCase is used to differentiate these columns from those added by
-\code{scater}.
+the \code{\link[SummarizedExperiment]{rowData}} slot and are named
+\code{Stat[Log]Value[No0]} where \code{Log} and \code{No0} are added if those
+arguments are true. UpperCamelCase is used to differentiate these columns
+from those added by analysis packages.
 }
diff --git a/man/addGeneLengths.Rd b/man/addGeneLengths.Rd
index dd760ad84e2e0e1738c6c6f8142d9929b0c3cdfd..3cfbc6089c343690be25fc9ff46280c08066c300 100644
--- a/man/addGeneLengths.Rd
+++ b/man/addGeneLengths.Rd
@@ -1,5 +1,5 @@
 % Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/SCESet-functions.R
+% Please edit documentation in R/SCE-functions.R
 \name{addGeneLengths}
 \alias{addGeneLengths}
 \title{Add gene lengths}
@@ -8,7 +8,7 @@ addGeneLengths(sce, method = c("generate", "sample"), loc = 7.9,
   scale = 0.7, lengths = NULL)
 }
 \arguments{
-\item{sce}{SCESet to add gene lengths to.}
+\item{sce}{SingleCellExperiment to add gene lengths to.}
 
 \item{method}{Method to use for creating lengths.}
 
@@ -19,25 +19,27 @@ addGeneLengths(sce, method = c("generate", "sample"), loc = 7.9,
 \item{lengths}{Vector of lengths for the sample method.}
 }
 \value{
-SCESet with added gene lengths
+SingleCellExperiment with added gene lengths
 }
 \description{
-Add gene lengths to an SCESet object
+Add gene lengths to an SingleCellExperiment object
 }
 \details{
-This function adds simulated gene lengths to the \code{fData} slot of an
-\code{SCESet} object that can be used for calculating length normalised
-expression values such as TPM or FPKM. The \code{generate} simulates lengths
-using a (rounded) log-normal distribution, with the default \code{loc} and
-\code{scale} parameters based on human coding genes. Alternatively the
-\code{sample} method can be used which randomly samples lengths (with
-replacement) from a supplied vector.
+This function adds simulated gene lengths to the
+\code{\link[SummarizedExperiment]{rowData}} slot of a
+\code{\link[SingleCellExperiment]{SingleCellExperiment}} object that can be
+used for calculating length normalised expression values such as TPM or FPKM.
+The \code{generate} method simulates lengths using a (rounded) log-normal
+distribution, with the default \code{loc} and \code{scale} parameters based
+on human protein-coding genes. Alternatively the \code{sample} method can be
+used which randomly samples lengths (with replacement) from a supplied
+vector.
 }
 \examples{
 # Default generate method
 sce <- simpleSimulate()
 sce <- addGeneLengths(sce)
-head(fData(sce))
+head(rowData(sce))
 # Sample method (human coding genes)
 \dontrun{
 library(TxDb.Hsapiens.UCSC.hg19.knownGene)
diff --git a/man/compareSCESets.Rd b/man/compareSCEs.Rd
similarity index 76%
rename from man/compareSCESets.Rd
rename to man/compareSCEs.Rd
index 9121d6ea357da34aa8cde8008e767731b5a567f4..711a2bee5edcc810c0834dad862b2303bd03c58c 100644
--- a/man/compareSCESets.Rd
+++ b/man/compareSCEs.Rd
@@ -1,14 +1,15 @@
 % Generated by roxygen2: do not edit by hand
 % Please edit documentation in R/compare.R
-\name{compareSCESets}
-\alias{compareSCESets}
-\title{Compare SCESet objects}
+\name{compareSCEs}
+\alias{compareSCEs}
+\title{Compare SingleCellExperiment objects}
 \usage{
-compareSCESets(sces, point.size = 0.1, point.alpha = 0.1, fits = TRUE,
+compareSCEs(sces, point.size = 0.1, point.alpha = 0.1, fits = TRUE,
   colours = NULL)
 }
 \arguments{
-\item{sces}{named list of SCESet objects to combine and compare.}
+\item{sces}{named list of SingleCellExperiment objects to combine and
+compare.}
 
 \item{point.size}{size of points in scatter plots.}
 
@@ -22,16 +23,17 @@ compareSCESets(sces, point.size = 0.1, point.alpha = 0.1, fits = TRUE,
 List containing the combined datasets and plots.
 }
 \description{
-Combine the data from several SCESet objects and produce some basic plots
-comparing them.
+Combine the data from several SingleCellExperiment objects and produce some
+basic plots comparing them.
 }
 \details{
 The returned list has three items:
 
 \describe{
     \item{\code{FeatureData}}{Combined feature data from the provided
-    SCESets.}
-    \item{\code{PhenoData}}{Combined pheno data from the provided SCESets.}
+    SingleCellExperiments.}
+    \item{\code{PhenoData}}{Combined pheno data from the provided
+    SingleCellExperiments.}
     \item{\code{Plots}}{Comparison plots
         \describe{
             \item{\code{Means}}{Boxplot of mean distribution.}
@@ -45,7 +47,7 @@ The returned list has three items:
             \item{\code{ZerosCell}}{Boxplot of the percentage of each cell
             that is zero.}
             \item{\code{MeanZeros}}{Scatter plot with fitted lines showing
-            the mean-dropout relationship.}
+            the mean-zeros relationship.}
     }
   }
 }
@@ -57,9 +59,9 @@ and should be in the correct format to allow you to create further plots
 using \code{\link[ggplot2]{ggplot}}.
 }
 \examples{
-sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-comparison <- compareSCESets(list(Splat = sim1, Simple = sim2))
+comparison <- compareSCEs(list(Splat = sim1, Simple = sim2))
 names(comparison)
 names(comparison$Plots)
 }
diff --git a/man/diffSCESets.Rd b/man/diffSCEs.Rd
similarity index 70%
rename from man/diffSCESets.Rd
rename to man/diffSCEs.Rd
index 529b43468c8216263c72cbf5ebd1405a7cbf7b55..a24a5c28f095a7318c6eae93b42f5d00ddd60e26 100644
--- a/man/diffSCESets.Rd
+++ b/man/diffSCEs.Rd
@@ -1,16 +1,18 @@
 % Generated by roxygen2: do not edit by hand
 % Please edit documentation in R/compare.R
-\name{diffSCESets}
-\alias{diffSCESets}
-\title{Diff SCESet objects}
+\name{diffSCEs}
+\alias{diffSCEs}
+\title{Diff SingleCellExperiment objects}
 \usage{
-diffSCESets(sces, ref, point.size = 0.1, point.alpha = 0.1, fits = TRUE,
+diffSCEs(sces, ref, point.size = 0.1, point.alpha = 0.1, fits = TRUE,
   colours = NULL)
 }
 \arguments{
-\item{sces}{named list of SCESet objects to combine and compare.}
+\item{sces}{named list of SingleCellExperiment objects to combine and
+compare.}
 
-\item{ref}{string giving the name of the SCESet to use as the reference}
+\item{ref}{string giving the name of the SingleCellExperiment to use as the
+reference}
 
 \item{point.size}{size of points in scatter plots.}
 
@@ -24,23 +26,25 @@ diffSCESets(sces, ref, point.size = 0.1, point.alpha = 0.1, fits = TRUE,
 List containing the combined datasets and plots.
 }
 \description{
-Combine the data from several SCESet objects and produce some basic plots
-comparing them to a reference.
+Combine the data from several SingleCellExperiment objects and produce some
+basic plots comparing them to a reference.
 }
 \details{
-This function aims to look at the differences between a reference SCESet and
-one or more others. It requires each SCESet to have the same dimensions.
-Properties are compared by ranks, for example when comparing the means the
-values are ordered and the differences between the reference and another
-dataset plotted. A series of Q-Q plots are also returned.
+This function aims to look at the differences between a reference
+SingleCellExperiment and one or more others. It requires each
+SingleCellExperiment to have the same dimensions. Properties are compared by
+ranks, for example when comparing the means the values are ordered and the
+differences between the reference and another dataset plotted. A series of
+Q-Q plots are also returned.
 
 The returned list has five items:
 
 \describe{
-    \item{\code{Reference}}{The SCESet used as the reference.}
+    \item{\code{Reference}}{The SingleCellExperiment used as the reference.}
     \item{\code{FeatureData}}{Combined feature data from the provided
-    SCESets.}
-    \item{\code{PhenoData}}{Combined pheno data from the provided SCESets.}
+    SingleCellExperiments.}
+    \item{\code{PhenoData}}{Combined pheno data from the provided
+    SingleCellExperiments.}
     \item{\code{Plots}}{Difference plots
         \describe{
             \item{\code{Means}}{Boxplot of mean differences.}
@@ -77,9 +81,9 @@ and should be in the correct format to allow you to create further plots
 using \code{\link[ggplot2]{ggplot}}.
 }
 \examples{
-sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-difference <- diffSCESets(list(Splat = sim1, Simple = sim2), ref = "Simple")
+difference <- diffSCEs(list(Splat = sim1, Simple = sim2), ref = "Simple")
 names(difference)
 names(difference$Plots)
 }
diff --git a/man/expandParams.Rd b/man/expandParams.Rd
index 5d54fc3e122f3566cf5698fde2e0e9a7a724f529..c6f83797cdbadf245f9e033ce8b25c4d1321a748 100644
--- a/man/expandParams.Rd
+++ b/man/expandParams.Rd
@@ -1,15 +1,18 @@
 % Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/AllGenerics.R, R/LunParams-methods.R,
-%   R/SplatParams-methods.R
+% Please edit documentation in R/AllGenerics.R, R/BASiCSParams-methods.R,
+%   R/LunParams-methods.R, R/SplatParams-methods.R
 \docType{methods}
 \name{expandParams}
 \alias{expandParams}
+\alias{expandParams,BASiCSParams-method}
 \alias{expandParams,LunParams-method}
 \alias{expandParams,SplatParams-method}
 \title{Expand parameters}
 \usage{
 expandParams(object, ...)
 
+\S4method{expandParams}{BASiCSParams}(object)
+
 \S4method{expandParams}{LunParams}(object)
 
 \S4method{expandParams}{SplatParams}(object)
diff --git a/man/lun2Estimate.Rd b/man/lun2Estimate.Rd
index 369634764aa1b172861920701a4538e85065448e..d0e240edbbdc6d983727a0e63d4f98e68ccb9283 100644
--- a/man/lun2Estimate.Rd
+++ b/man/lun2Estimate.Rd
@@ -2,22 +2,23 @@
 % Please edit documentation in R/lun2-estimate.R
 \name{lun2Estimate}
 \alias{lun2Estimate}
-\alias{lun2Estimate.SCESet}
+\alias{lun2Estimate.SingleCellExperiment}
 \alias{lun2Estimate.matrix}
 \title{Estimate Lun2 simulation parameters}
 \usage{
 lun2Estimate(counts, plates, params = newLun2Params(), min.size = 200,
   verbose = TRUE, BPPARAM = SerialParam())
 
-\method{lun2Estimate}{SCESet}(counts, plates, params = newLun2Params(),
-  min.size = 200, verbose = TRUE, BPPARAM = SerialParam())
+\method{lun2Estimate}{SingleCellExperiment}(counts, plates,
+  params = newLun2Params(), min.size = 200, verbose = TRUE,
+  BPPARAM = SerialParam())
 
 \method{lun2Estimate}{matrix}(counts, plates, params = newLun2Params(),
   min.size = 200, verbose = TRUE, BPPARAM = SerialParam())
 }
 \arguments{
-\item{counts}{either a counts matrix or an SCESet object containing count
-data to estimate parameters from.}
+\item{counts}{either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.}
 
 \item{plates}{integer vector giving the plate that each cell originated from.}
 
diff --git a/man/lun2Simulate.Rd b/man/lun2Simulate.Rd
index 491ba6787afdfc9bf75f949d3680225f4f15b6e3..4b6c66dfc317aed96b34d707b7b593f93a7e317c 100644
--- a/man/lun2Simulate.Rd
+++ b/man/lun2Simulate.Rd
@@ -17,7 +17,7 @@ lun2Simulate(params = newLun2Params(), zinb = FALSE, verbose = TRUE, ...)
 \code{params}.}
 }
 \value{
-SCESet containing simulated counts.
+SingleCellExperiment containing simulated counts.
 }
 \description{
 Simulate single-cell RNA-seq count data using the method described in Lun
@@ -45,9 +45,9 @@ sim <- lun2Simulate()
 }
 \references{
 Lun ATL, Marioni JC. Overcoming confounding plate effects in differential
-expression analyses of single-cell RNA-seq data. bioRxiv (2016).
+expression analyses of single-cell RNA-seq data. Biostatistics (2017).
 
-Paper: \url{dx.doi.org/10.1101/073973}
+Paper: \url{dx.doi.org/10.1093/biostatistics/kxw055}
 
 Code: \url{https://github.com/MarioniLab/PlateEffects2016}
 }
diff --git a/man/lunEstimate.Rd b/man/lunEstimate.Rd
index 8ee55bea76967ecf9c7fa9a895178fb7950d3c97..82f5e670b199dc49e618014924c6273be5cc5f12 100644
--- a/man/lunEstimate.Rd
+++ b/man/lunEstimate.Rd
@@ -2,19 +2,19 @@
 % Please edit documentation in R/lun-estimate.R
 \name{lunEstimate}
 \alias{lunEstimate}
-\alias{lunEstimate.SCESet}
+\alias{lunEstimate.SingleCellExperiment}
 \alias{lunEstimate.matrix}
 \title{Estimate Lun simulation parameters}
 \usage{
 lunEstimate(counts, params = newLunParams())
 
-\method{lunEstimate}{SCESet}(counts, params = newLunParams())
+\method{lunEstimate}{SingleCellExperiment}(counts, params = newLunParams())
 
 \method{lunEstimate}{matrix}(counts, params = newLunParams())
 }
 \arguments{
-\item{counts}{either a counts matrix or an SCESet object containing count
-data to estimate parameters from.}
+\item{counts}{either a counts matrix or an SingleCellExperiment object
+containing count data to estimate parameters from.}
 
 \item{params}{LunParams object to store estimated values in.}
 }
diff --git a/man/lunSimulate.Rd b/man/lunSimulate.Rd
index 4ccd94ac6181f50aef6f0e710698b88810ba9b51..0e48781f767033532c76864f75eabfcaa08d06d6 100644
--- a/man/lunSimulate.Rd
+++ b/man/lunSimulate.Rd
@@ -15,8 +15,8 @@ lunSimulate(params = newLunParams(), verbose = TRUE, ...)
 \code{params}.}
 }
 \value{
-SCESet object containing the simulated counts and intermediate
-values.
+SingleCellExperiment object containing the simulated counts and
+intermediate values.
 }
 \description{
 Simulate single-cell RNA-seq count data using the method described in Lun,
diff --git a/man/makeCompPanel.Rd b/man/makeCompPanel.Rd
index 1e32fb056211fa791e114c1ffeb0f4d4c46a115e..c91b324ee605b9e6ba6c0fa1acb0074efddfa7bc 100644
--- a/man/makeCompPanel.Rd
+++ b/man/makeCompPanel.Rd
@@ -9,7 +9,7 @@ makeCompPanel(comp, title = "Comparison", labels = c("Means", "Variance",
   "Zeros per cell", "Mean-zeros relationship"))
 }
 \arguments{
-\item{comp}{list returned by \code{\link{compareSCESets}}.}
+\item{comp}{list returned by \code{\link{compareSCEs}}.}
 
 \item{title}{title for the panel.}
 
@@ -19,13 +19,13 @@ makeCompPanel(comp, title = "Comparison", labels = c("Means", "Variance",
 Combined panel plot
 }
 \description{
-Combine the plots from \code{compareSCESets} into a single panel.
+Combine the plots from \code{compareSCEs} into a single panel.
 }
 \examples{
 \dontrun{
-sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-comparison <- compareSCESets(list(Splat = sim1, Simple = sim2))
+comparison <- compareSCEs(list(Splat = sim1, Simple = sim2))
 panel <- makeCompPanel(comparison)
 }
 
diff --git a/man/makeDiffPanel.Rd b/man/makeDiffPanel.Rd
index 10b6f6ba47b3bdef19146808519aafa823172db1..a0239a85c84d5cd3d04f9c3722b2cb26acaab069 100644
--- a/man/makeDiffPanel.Rd
+++ b/man/makeDiffPanel.Rd
@@ -9,7 +9,7 @@ makeDiffPanel(diff, title = "Difference comparison", labels = c("Means",
   "Mean-variance relationship", "Mean-zeros relationship"))
 }
 \arguments{
-\item{diff}{list returned by \code{\link{diffSCESets}}.}
+\item{diff}{list returned by \code{\link{diffSCEs}}.}
 
 \item{title}{title for the panel.}
 
@@ -19,13 +19,13 @@ makeDiffPanel(diff, title = "Difference comparison", labels = c("Means",
 Combined panel plot
 }
 \description{
-Combine the plots from \code{diffSCESets} into a single panel.
+Combine the plots from \code{diffSCEs} into a single panel.
 }
 \examples{
 \dontrun{
-sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-difference <- diffSCESets(list(Splat = sim1, Simple = sim2), ref = "Simple")
+difference <- diffSCEs(list(Splat = sim1, Simple = sim2), ref = "Simple")
 panel <- makeDiffPanel(difference)
 }
 
diff --git a/man/makeOverallPanel.Rd b/man/makeOverallPanel.Rd
index 9e97e5cba3364444efea868b4ab2cb9c2d059851..51b219ba7ce6a8d3a77502085bc2c793b313c4b9 100644
--- a/man/makeOverallPanel.Rd
+++ b/man/makeOverallPanel.Rd
@@ -10,9 +10,9 @@ makeOverallPanel(comp, diff, title = "Overall comparison",
   "Mean-zeros relationship"))
 }
 \arguments{
-\item{comp}{list returned by \code{\link{compareSCESets}}.}
+\item{comp}{list returned by \code{\link{compareSCEs}}.}
 
-\item{diff}{list returned by \code{\link{diffSCESets}}.}
+\item{diff}{list returned by \code{\link{diffSCEs}}.}
 
 \item{title}{title for the panel.}
 
@@ -22,12 +22,12 @@ makeOverallPanel(comp, diff, title = "Overall comparison",
 Combined panel plot
 }
 \description{
-Combine the plots from \code{compSCESets} and \code{diffSCESets} into a
+Combine the plots from \code{compSCEs} and \code{diffSCEs} into a
 single panel.
 }
 \examples{
 \dontrun{
-sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
 comparison <- compSCESets(list(Splat = sim1, Simple = sim2))
 difference <- diffSCESets(list(Splat = sim1, Simple = sim2), ref = "Simple")
diff --git a/man/mfaEstimate.Rd b/man/mfaEstimate.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..002cd047b58ec935bdd1f421756597d8cedb6549
--- /dev/null
+++ b/man/mfaEstimate.Rd
@@ -0,0 +1,37 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/mfa-estimate.R
+\name{mfaEstimate}
+\alias{mfaEstimate}
+\alias{mfaEstimate.SingleCellExperiment}
+\alias{mfaEstimate.matrix}
+\title{Estimate mfa simulation parameters}
+\usage{
+mfaEstimate(counts, params = newMFAParams())
+
+\method{mfaEstimate}{SingleCellExperiment}(counts, params = newMFAParams())
+
+\method{mfaEstimate}{matrix}(counts, params = newMFAParams())
+}
+\arguments{
+\item{counts}{either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.}
+
+\item{params}{MFAParams object to store estimated values in.}
+}
+\value{
+MFAParams object containing the estimated parameters.
+}
+\description{
+Estimate simulation parameters for the mfa simulation from a real dataset.
+}
+\details{
+The \code{nGenes} and \code{nCells} parameters are taken from the size of the
+input data. The dropout lambda parameter is estimate using
+\code{\link[mfa]{empirical_lambda}}. See \code{\link{MFAParams}} for more
+details on the parameters.
+}
+\examples{
+data("sc_example_counts")
+params <- mfaEstimate(sc_example_counts)
+params
+}
diff --git a/man/mfaSimulate.Rd b/man/mfaSimulate.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..ec2a98e243fd7942f29bc715cac6890b68b4397e
--- /dev/null
+++ b/man/mfaSimulate.Rd
@@ -0,0 +1,42 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/mfa-simulate.R
+\name{mfaSimulate}
+\alias{mfaSimulate}
+\title{MFA simulation}
+\usage{
+mfaSimulate(params = newMFAParams(), verbose = TRUE, ...)
+}
+\arguments{
+\item{params}{MFAParams object containing simulation parameters.}
+
+\item{verbose}{Logical. Whether to print progress messages.}
+
+\item{...}{any additional parameter settings to override what is provided in
+\code{params}.}
+}
+\value{
+SingleCellExperiment containing simulated counts
+}
+\description{
+Simulate a bifurcating pseudotime path using the mfa method.
+}
+\details{
+This function is just a wrapper around \code{\link[mfa]{create_synthetic}}
+that takes a \code{\link{MFAParams}}, runs the simulation then converts the
+output from log-expression to counts and returns a
+\code{\link[SingleCellExperiment]{SingleCellExperiment}} object. See
+\code{\link[mfa]{create_synthetic}} and the mfa paper for more details about
+how the simulation works.
+}
+\examples{
+sim <- mfaSimulate()
+}
+\references{
+Campbell KR, Yau C. Probabilistic modeling of bifurcations in single-cell
+gene expression data using a Bayesian mixture of factor analyzers. Wellcome
+Open Research (2017).
+
+Paper: \url{10.12688/wellcomeopenres.11087.1}
+
+Code: \url{https://github.com/kieranrcampbell/mfa}
+}
diff --git a/man/newParams.Rd b/man/newParams.Rd
index 197dc0204454f31bf20343896156205931392de4..e8d75401ae5a00cd3e660850d49fda896940b376 100644
--- a/man/newParams.Rd
+++ b/man/newParams.Rd
@@ -1,25 +1,38 @@
 % Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/AllGenerics.R, R/Lun2Params-methods.R,
-%   R/LunParams-methods.R, R/SCDDParams-methods.R, R/SimpleParams-methods.R,
-%   R/SplatParams-methods.R
+% Please edit documentation in R/AllGenerics.R, R/BASiCSParams-methods.R,
+%   R/Lun2Params-methods.R, R/LunParams-methods.R, R/MFAParams-methods.R,
+%   R/PhenoParams-methods.R, R/SCDDParams-methods.R, R/SimpleParams-methods.R,
+%   R/SplatParams-methods.R, R/ZINBParams-methods.R
 \name{newParams}
 \alias{newParams}
+\alias{newBASiCSParams}
 \alias{newLun2Params}
 \alias{newLunParams}
+\alias{newMFAParams}
+\alias{newPhenoParams}
 \alias{newSCDDParams}
 \alias{newSimpleParams}
 \alias{newSplatParams}
+\alias{newZINBParams}
 \title{New Params}
 \usage{
+newBASiCSParams(...)
+
 newLun2Params(...)
 
 newLunParams(...)
 
+newMFAParams(...)
+
+newPhenoParams(...)
+
 newSCDDParams(...)
 
 newSimpleParams(...)
 
 newSplatParams(...)
+
+newZINBParams(...)
 }
 \arguments{
 \item{...}{additional parameters passed to \code{\link{setParams}}.}
diff --git a/man/phenoEstimate.Rd b/man/phenoEstimate.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..5b698238acbc48c4a606cc9fd7a2c3b550936311
--- /dev/null
+++ b/man/phenoEstimate.Rd
@@ -0,0 +1,38 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/pheno-estimate.R
+\name{phenoEstimate}
+\alias{phenoEstimate}
+\alias{phenoEstimate.SingleCellExperiment}
+\alias{phenoEstimate.matrix}
+\title{Estimate PhenoPath simulation parameters}
+\usage{
+phenoEstimate(counts, params = newPhenoParams())
+
+\method{phenoEstimate}{SingleCellExperiment}(counts,
+  params = newPhenoParams())
+
+\method{phenoEstimate}{matrix}(counts, params = newPhenoParams())
+}
+\arguments{
+\item{counts}{either a counts matrix or an SingleCellExperiment object
+containing count data to estimate parameters from.}
+
+\item{params}{PhenoParams object to store estimated values in.}
+}
+\value{
+PhenoParams object containing the estimated parameters.
+}
+\description{
+Estimate simulation parameters for the PhenoPath simulation from a real
+dataset.
+}
+\details{
+The \code{nGenes} and \code{nCells} parameters are taken from the size of the
+input data. The total number of genes is evenly divided into the four types.
+See \code{\link{PhenoParams}} for more details on the parameters.
+}
+\examples{
+data("sc_example_counts")
+params <- phenoEstimate(sc_example_counts)
+params
+}
diff --git a/man/phenoSimulate.Rd b/man/phenoSimulate.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..ffde04f9d728cfe05a1471ed739f6868a91589ce
--- /dev/null
+++ b/man/phenoSimulate.Rd
@@ -0,0 +1,45 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/pheno-simulate.R
+\name{phenoSimulate}
+\alias{phenoSimulate}
+\title{PhenoPath simulation}
+\usage{
+phenoSimulate(params = newPhenoParams(), verbose = TRUE, ...)
+}
+\arguments{
+\item{params}{PhenoParams object containing simulation parameters.}
+
+\item{verbose}{logical. Whether to print progress messages}
+
+\item{...}{any additional parameter settings to override what is provided in
+\code{params}.}
+}
+\value{
+SingleCellExperiment containing simulated counts
+}
+\description{
+Simulate counts from a pseudotime trajectory using the PhenoPath method.
+}
+\details{
+This function is just a wrapper around
+\code{\link[phenopath]{simulate_phenopath}} that takes a
+\code{\link{PhenoParams}}, runs the simulation then converts the
+output from log-expression to counts and returns a
+\code{\link[SingleCellExperiment]{SingleCellExperiment}} object. The original
+simulated log-expression values are returned in the \code{LogExprs} asssay.
+See \code{\link[phenopath]{simulate_phenopath}} and the PhenoPath paper for
+more details about how the simulation works.
+}
+\examples{
+sim <- phenoSimulate()
+
+}
+\references{
+Campbell K, Yau C. Uncovering genomic trajectories with heterogeneous genetic
+and environmental backgrounds across single-cells and populations. bioRxiv
+(2017).
+
+Paper: \url{10.1101/159913}
+
+Code: \url{https://github.com/kieranrcampbell/phenopath}
+}
diff --git a/man/scDDEstimate.Rd b/man/scDDEstimate.Rd
index c0e309492a663c8119c76e1e4bdb28f52098c299..265183465ffcd3ca73550931c721146c38f57611 100644
--- a/man/scDDEstimate.Rd
+++ b/man/scDDEstimate.Rd
@@ -2,24 +2,42 @@
 % Please edit documentation in R/scDD-estimate.R
 \name{scDDEstimate}
 \alias{scDDEstimate}
-\alias{scDDEstimate.SCESet}
 \alias{scDDEstimate.matrix}
+\alias{scDDEstimate.SingleCellExperiment}
+\alias{scDDEstimate.default}
 \title{Estimate scDD simulation parameters}
 \usage{
-scDDEstimate(counts, conditions, params = newSCDDParams())
+scDDEstimate(counts, params = newSCDDParams(), verbose = TRUE,
+  BPPARAM = SerialParam(), ...)
 
-\method{scDDEstimate}{SCESet}(counts, conditions, params = newSCDDParams())
+\method{scDDEstimate}{matrix}(counts, params = newSCDDParams(),
+  verbose = TRUE, BPPARAM = SerialParam(), conditions, ...)
 
-\method{scDDEstimate}{matrix}(counts, conditions, params = newSCDDParams())
+\method{scDDEstimate}{SingleCellExperiment}(counts, params = newSCDDParams(),
+  verbose = TRUE, BPPARAM = SerialParam(), condition = "condition", ...)
+
+\method{scDDEstimate}{default}(counts, params = newSCDDParams(),
+  verbose = TRUE, BPPARAM = SerialParam(), condition, ...)
 }
 \arguments{
-\item{counts}{either a counts matrix or an SCESet object containing count
-data to estimate parameters from.}
+\item{counts}{either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.}
+
+\item{params}{SCDDParams object to store estimated values in.}
+
+\item{verbose}{logical. Whether to show progress messages.}
+
+\item{BPPARAM}{A \code{\link[BiocParallel]{BiocParallelParam}} instance
+giving the parallel back-end to be used. Default is
+\code{\link[BiocParallel]{SerialParam}} which uses a single core.}
+
+\item{...}{further arguments passed to or from other methods.}
 
 \item{conditions}{Vector giving the condition that each cell belongs to.
 Conditions can be 1 or 2.}
 
-\item{params}{SCDDParams object to store estimated values in.}
+\item{condition}{String giving the column that represents biological group of
+interest.}
 }
 \value{
 SCDDParams object containing the estimated parameters.
@@ -28,13 +46,16 @@ SCDDParams object containing the estimated parameters.
 Estimate simulation parameters for the scDD simulation from a real dataset.
 }
 \details{
-This function is just a wrapper around \code{\link[scDD]{preprocess}} that
-takes the output and converts it to a SCDDParams object. See
-\code{\link[scDD]{preprocess}} for details.
+This function applies \code{\link[scDD]{preprocess}} to the counts then uses
+\code{\link[scDD]{scDD}} to estimate the numbers of each gene type to
+simulate. The output is then converted to a SCDDParams object. See
+\code{\link[scDD]{preprocess}} and \code{\link[scDD]{scDD}} for details.
 }
 \examples{
+\dontrun{
 data("sc_example_counts")
 conditions <- sample(1:2, ncol(sc_example_counts), replace = TRUE)
 params <- scDDEstimate(sc_example_counts, conditions)
 params
 }
+}
diff --git a/man/scDDSimulate.Rd b/man/scDDSimulate.Rd
index 387413b2a636f9169a9bc13bd5ed9382cc42d3b5..24f4c5a62f22470ea1fd9e703e0a7e4e974f72b9 100644
--- a/man/scDDSimulate.Rd
+++ b/man/scDDSimulate.Rd
@@ -25,7 +25,7 @@ giving the parallel back-end to be used. Default is
 \code{params}.}
 }
 \value{
-SCESet containing simulated counts
+SingleCellExperiment containing simulated counts
 }
 \description{
 Simulate counts using the scDD method.
@@ -33,8 +33,9 @@ Simulate counts using the scDD method.
 \details{
 This function is just a wrapper around \code{\link[scDD]{simulateSet}} that
 takes a \code{\link{SCDDParams}}, runs the simulation then converts the
-output to an \code{\link[scater]{SCESet}} object. See
-\code{\link[scDD]{simulateSet}} for more details of how the simulation works.
+output to a \code{\link[SingleCellExperiment]{SingleCellExperiment}} object.
+See \code{\link[scDD]{simulateSet}} for more details about how the simulation
+works.
 }
 \examples{
 \dontrun{
diff --git a/man/setParam.Rd b/man/setParam.Rd
index 9c1ba5341613eb970da5a70d097a52fc521d0f60..378560f36fab9d73f53da98db53106e2d4f0eb6f 100644
--- a/man/setParam.Rd
+++ b/man/setParam.Rd
@@ -1,28 +1,38 @@
 % Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/AllGenerics.R, R/Lun2Params-methods.R,
-%   R/LunParams-methods.R, R/Params-methods.R, R/SCDDParams-methods.R,
-%   R/SplatParams-methods.R
+% Please edit documentation in R/AllGenerics.R, R/BASiCSParams-methods.R,
+%   R/Lun2Params-methods.R, R/LunParams-methods.R, R/Params-methods.R,
+%   R/PhenoParams-methods.R, R/SCDDParams-methods.R, R/SplatParams-methods.R,
+%   R/ZINBParams-methods.R
 \docType{methods}
 \name{setParam}
 \alias{setParam}
+\alias{setParam,BASiCSParams-method}
 \alias{setParam,Lun2Params-method}
 \alias{setParam,LunParams-method}
 \alias{setParam,Params-method}
+\alias{setParam,PhenoParams-method}
 \alias{setParam,SCDDParams-method}
 \alias{setParam,SplatParams-method}
+\alias{setParam,ZINBParams-method}
 \title{Set a parameter}
 \usage{
 setParam(object, name, value)
 
+\S4method{setParam}{BASiCSParams}(object, name, value)
+
 \S4method{setParam}{Lun2Params}(object, name, value)
 
 \S4method{setParam}{LunParams}(object, name, value)
 
 \S4method{setParam}{Params}(object, name, value)
 
+\S4method{setParam}{PhenoParams}(object, name, value)
+
 \S4method{setParam}{SCDDParams}(object, name, value)
 
 \S4method{setParam}{SplatParams}(object, name, value)
+
+\S4method{setParam}{ZINBParams}(object, name, value)
 }
 \arguments{
 \item{object}{object to set parameter in.}
diff --git a/man/simpleEstimate.Rd b/man/simpleEstimate.Rd
index 3be8654a88d7e163a2241a42abd7be00b66c041e..159c87953cde355894abcd344b60ee8ce5106fd3 100644
--- a/man/simpleEstimate.Rd
+++ b/man/simpleEstimate.Rd
@@ -2,19 +2,20 @@
 % Please edit documentation in R/simple-estimate.R
 \name{simpleEstimate}
 \alias{simpleEstimate}
-\alias{simpleEstimate.SCESet}
+\alias{simpleEstimate.SingleCellExperiment}
 \alias{simpleEstimate.matrix}
 \title{Estimate simple simulation parameters}
 \usage{
 simpleEstimate(counts, params = newSimpleParams())
 
-\method{simpleEstimate}{SCESet}(counts, params = newSimpleParams())
+\method{simpleEstimate}{SingleCellExperiment}(counts,
+  params = newSimpleParams())
 
 \method{simpleEstimate}{matrix}(counts, params = newSimpleParams())
 }
 \arguments{
-\item{counts}{either a counts matrix or an SCESet object containing count
-data to estimate parameters from.}
+\item{counts}{either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.}
 
 \item{params}{SimpleParams object to store estimated values in.}
 }
diff --git a/man/simpleSimulate.Rd b/man/simpleSimulate.Rd
index b2f5fda8c2bb960446c0cc808a457c305956f1d0..e52be18cbe30fddf3f5cf79f5c34978144addf48 100644
--- a/man/simpleSimulate.Rd
+++ b/man/simpleSimulate.Rd
@@ -15,7 +15,7 @@ simpleSimulate(params = newSimpleParams(), verbose = TRUE, ...)
 \code{params}.}
 }
 \value{
-SCESet containing simulated counts
+SingleCellExperiment containing simulated counts
 }
 \description{
 Simulate counts from a simple negative binomial distribution without
diff --git a/man/splatEstimate.Rd b/man/splatEstimate.Rd
index f698fd93e1c57409d5f4317350c05b75bb1554c1..b14d5195af99f9d04700f1bd300487cdfc8c951b 100644
--- a/man/splatEstimate.Rd
+++ b/man/splatEstimate.Rd
@@ -2,19 +2,20 @@
 % Please edit documentation in R/splat-estimate.R
 \name{splatEstimate}
 \alias{splatEstimate}
-\alias{splatEstimate.SCESet}
+\alias{splatEstimate.SingleCellExperiment}
 \alias{splatEstimate.matrix}
 \title{Estimate Splat simulation parameters}
 \usage{
 splatEstimate(counts, params = newSplatParams())
 
-\method{splatEstimate}{SCESet}(counts, params = newSplatParams())
+\method{splatEstimate}{SingleCellExperiment}(counts,
+  params = newSplatParams())
 
 \method{splatEstimate}{matrix}(counts, params = newSplatParams())
 }
 \arguments{
-\item{counts}{either a counts matrix or an SCESet object containing count
-data to estimate parameters from.}
+\item{counts}{either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.}
 
 \item{params}{SplatParams object to store estimated values in.}
 }
diff --git a/man/splatSimBCVMeans.Rd b/man/splatSimBCVMeans.Rd
index 315b5ae7c733d54c5f468d38679fcd3491d8801c..9ffc622a39e450d7c0cda24888373d95f77f87b3 100644
--- a/man/splatSimBCVMeans.Rd
+++ b/man/splatSimBCVMeans.Rd
@@ -7,12 +7,12 @@
 splatSimBCVMeans(sim, params)
 }
 \arguments{
-\item{sim}{SCESet to add BCV means to.}
+\item{sim}{SingleCellExperiment to add BCV means to.}
 
 \item{params}{SplatParams object with simulation parameters.}
 }
 \value{
-SCESet with simulated BCV means.
+SingleCellExperiment with simulated BCV means.
 }
 \description{
 Simulate means for each gene in each cell that are adjusted to follow a
diff --git a/man/splatSimBatchCellMeans.Rd b/man/splatSimBatchCellMeans.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..e0d7869c22900a0c204d8993fac9ef87b8bf6b35
--- /dev/null
+++ b/man/splatSimBatchCellMeans.Rd
@@ -0,0 +1,20 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/splat-simulate.R
+\name{splatSimBatchCellMeans}
+\alias{splatSimBatchCellMeans}
+\title{Simulate batch means}
+\usage{
+splatSimBatchCellMeans(sim, params)
+}
+\arguments{
+\item{sim}{SingleCellExperiment to add batch means to.}
+
+\item{params}{SplatParams object with simulation parameters.}
+}
+\value{
+SingleCellExperiment with simulated batch means.
+}
+\description{
+Simulate a mean for each gene in each cell incorporating batch effect
+factors.
+}
diff --git a/man/splatSimBatchEffects.Rd b/man/splatSimBatchEffects.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..c047ab4e6619a133793506e38ac48d9d04186211
--- /dev/null
+++ b/man/splatSimBatchEffects.Rd
@@ -0,0 +1,21 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/splat-simulate.R
+\name{splatSimBatchEffects}
+\alias{splatSimBatchEffects}
+\title{Simulate batch effects}
+\usage{
+splatSimBatchEffects(sim, params)
+}
+\arguments{
+\item{sim}{SingleCellExperiment to add batch effects to.}
+
+\item{params}{SplatParams object with simulation parameters.}
+}
+\value{
+SingleCellExperiment with simulated batch effects.
+}
+\description{
+Simulate batch effects. Batch effect factors for each batch are produced
+using \code{\link{getLNormFactors}} and these are added along with updated
+means for each batch.
+}
diff --git a/man/splatSimCellMeans.Rd b/man/splatSimCellMeans.Rd
index 436fd6fe380941b7c750c94fb67912df304de65d..de5222b2f54d448a1f87f4d65bd8265a757a776c 100644
--- a/man/splatSimCellMeans.Rd
+++ b/man/splatSimCellMeans.Rd
@@ -14,12 +14,12 @@ splatSimGroupCellMeans(sim, params)
 splatSimPathCellMeans(sim, params)
 }
 \arguments{
-\item{sim}{SCESet to add cell means to.}
+\item{sim}{SingleCellExperiment to add cell means to.}
 
 \item{params}{SplatParams object with simulation parameters.}
 }
 \value{
-SCESet with added cell means.
+SingleCellExperiment with added cell means.
 }
 \description{
 Simulate a gene by cell matrix giving the mean expression for each gene in
diff --git a/man/splatSimDE.Rd b/man/splatSimDE.Rd
index 7af1729ba294d3f36deba65f8ec6aa96a7539584..257fb1c7d43b6fbf1a6c9fc11f9d8c0864eae720 100644
--- a/man/splatSimDE.Rd
+++ b/man/splatSimDE.Rd
@@ -11,16 +11,16 @@ splatSimGroupDE(sim, params)
 splatSimPathDE(sim, params)
 }
 \arguments{
-\item{sim}{SCESet to add differential expression to.}
+\item{sim}{SingleCellExperiment to add differential expression to.}
 
 \item{params}{splatParams object with simulation parameters.}
 }
 \value{
-SCESet with simulated differential expression.
+SingleCellExperiment with simulated differential expression.
 }
 \description{
 Simulate differential expression. Differential expression factors for each
 group are produced using \code{\link{getLNormFactors}} and these are added
 along with updated means for each group. For paths care is taked to make sure
-they are simualated in the correct order.
+they are simulated in the correct order.
 }
diff --git a/man/splatSimDropout.Rd b/man/splatSimDropout.Rd
index 166336c8c317a19ffbdebeac8e4016ebcf2336c0..7f68ba3c5ede69f35e49615d824f8f22df785766 100644
--- a/man/splatSimDropout.Rd
+++ b/man/splatSimDropout.Rd
@@ -7,12 +7,12 @@
 splatSimDropout(sim, params)
 }
 \arguments{
-\item{sim}{SCESet to add dropout to.}
+\item{sim}{SingleCellExperiment to add dropout to.}
 
 \item{params}{SplatParams object with simulation parameters.}
 }
 \value{
-SCESet with simulated dropout and observed counts.
+SingleCellExperiment with simulated dropout and observed counts.
 }
 \description{
 A logistic function is used to form a relationshop between the expression
diff --git a/man/splatSimGeneMeans.Rd b/man/splatSimGeneMeans.Rd
index 7d738db8f2efa32e5f5f3f796c732f3cd612b8f0..4a1326948e9356166abe417d1cdd2dc55f279ca6 100644
--- a/man/splatSimGeneMeans.Rd
+++ b/man/splatSimGeneMeans.Rd
@@ -7,12 +7,12 @@
 splatSimGeneMeans(sim, params)
 }
 \arguments{
-\item{sim}{SCESet to add gene means to.}
+\item{sim}{SingleCellExperiment to add gene means to.}
 
 \item{params}{SplatParams object with simulation parameters.}
 }
 \value{
-SCESet with simulated gene means.
+SingleCellExperiment with simulated gene means.
 }
 \description{
 Simulate gene means from a gamma distribution. Also simulates outlier
diff --git a/man/splatSimLibSizes.Rd b/man/splatSimLibSizes.Rd
index 4785021b318feedef285c865cc071497286db40e..3c5c380d91cc3bea40c224f26b0dd564aca7cc26 100644
--- a/man/splatSimLibSizes.Rd
+++ b/man/splatSimLibSizes.Rd
@@ -7,12 +7,12 @@
 splatSimLibSizes(sim, params)
 }
 \arguments{
-\item{sim}{SCESet to add library size to.}
+\item{sim}{SingleCellExperiment to add library size to.}
 
 \item{params}{SplatParams object with simulation parameters.}
 }
 \value{
-SCESet with simulated library sizes.
+SingleCellExperiment with simulated library sizes.
 }
 \description{
 Simulate expected library sizes from a log-normal distribution
diff --git a/man/splatSimTrueCounts.Rd b/man/splatSimTrueCounts.Rd
index 4fc2464f381bb14a4a20a87f80e36bf765a5e2a8..cb2ba3036d6a961229f26b7ddc7a43d2a0daddd5 100644
--- a/man/splatSimTrueCounts.Rd
+++ b/man/splatSimTrueCounts.Rd
@@ -7,12 +7,12 @@
 splatSimTrueCounts(sim, params)
 }
 \arguments{
-\item{sim}{SCESet to add true counts to.}
+\item{sim}{SingleCellExperiment to add true counts to.}
 
 \item{params}{SplatParams object with simulation parameters.}
 }
 \value{
-SCESet with simulated true counts.
+SingleCellExperiment with simulated true counts.
 }
 \description{
 Simulate a true counts matrix. Counts are simulated from a poisson
diff --git a/man/splatSimulate.Rd b/man/splatSimulate.Rd
index 641fc7aa4ae4ca6a22937917b9fb85f015200dce..bf30985a5e88b46e7f516b93e3884463aaf06cc7 100644
--- a/man/splatSimulate.Rd
+++ b/man/splatSimulate.Rd
@@ -31,8 +31,8 @@ trajectories (eg. differentiation processes).}
 \code{params}.}
 }
 \value{
-SCESet object containing the simulated counts and intermediate
-values.
+SingleCellExperiment object containing the simulated counts and
+intermediate values.
 }
 \description{
 Simulate count data from a fictional single-cell RNA-seq experiment using
@@ -56,15 +56,16 @@ The simulation involves the following steps:
     \item Simulate BCV adjusted cell means
     \item Simulate true counts
     \item Simulate dropout
-    \item Create final SCESet object
+    \item Create final dataset
 }
 
-The final output is an \code{\link[scater]{SCESet}} object that contains the
-simulated counts but also the values for various intermediate steps. These
-are stored in the \code{\link[Biobase]{phenoData}} (for cell specific
-information), \code{\link[Biobase]{featureData}} (for gene specific
-information) or \code{\link[Biobase]{assayData}} (for gene by cell matrices)
-slots. This additional information includes:
+The final output is a
+\code{\link[SingleCellExperiment]{SingleCellExperiment}} object that
+contains the simulated counts but also the values for various intermediate
+steps. These are stored in the \code{\link[SummarizedExperiment]{colData}}
+(for cell specific information), \code{\link[SummarizedExperiment]{rowData}}
+(for gene specific information) or \code{\link[SummarizedExperiment]{assays}}
+(for gene by cell matrices) slots. This additional information includes:
 \describe{
     \item{\code{phenoData}}{
         \describe{
@@ -81,22 +82,25 @@ slots. This additional information includes:
             \item{OutlierFactor}{Expression outlier factor for that gene.
             Values of 1 indicate the gene is not an expression outlier.}
             \item{GeneMean}{Expression level after applying outlier factors.}
+            \item{BatchFac[Batch]}{The batch effects factor for each gene for
+            a particular batch.}
             \item{DEFac[Group]}{The differential expression factor for each
             gene in a particular group. Values of 1 indicate the gene is not
             differentially expressed.}
-            \item{GeneMean[Group]}{Expression level of a gene in a particular
-            group after applying differential expression factors.}
             \item{SigmaFac[Path]}{Factor applied to genes that have
             non-linear changes in expression along a path.}
         }
     }
     \item{\code{assayData}}{
         \describe{
-            \item{BaseCellMeans}{The expression of genes in each cell
-            adjusted for expected library size.}
+            \item{BatchCellMeans}{The mean expression of genes in each cell
+            after adding batch effects.}
+            \item{BaseCellMeans}{The mean expression of genes in each cell
+            after any differential expression and adjusted for expected
+            library size.}
             \item{BCV}{The Biological Coefficient of Variation for each gene
             in each cell.}
-            \item{CellMeans}{The expression level of genes in each cell
+            \item{CellMeans}{The mean expression level of genes in each cell
             adjusted for BCV.}
             \item{TrueCounts}{The simulated counts before dropout.}
             \item{Dropout}{Logical matrix showing which values have been
@@ -105,14 +109,14 @@ slots. This additional information includes:
     }
 }
 
-Values that have been added by Splatter are named using \code{CamelCase} in
-order to differentiate them from the values added by Scater which uses
-\code{underscore_naming}.
+Values that have been added by Splatter are named using \code{UpperCamelCase}
+in order to differentiate them from the values added by analysis packages
+which typically use \code{underscore_naming}.
 }
 \examples{
 # Simulation with default parameters
-\dontrun{
 sim <- splatSimulate()
+\dontrun{
 # Simulation with different number of genes
 sim <- splatSimulate(nGenes = 1000)
 # Simulation with custom parameters
@@ -126,8 +130,17 @@ sim <- splatSimulate(method = "groups")
 sim <- splatSimulate(method = "paths")
 }
 }
+\references{
+Zappia L, Phipson B, Oshlack A. Splatter: simulation of single-cell RNA
+sequencing data. Genome Biology (2017).
+
+Paper: \url{10.1186/s13059-017-1305-0}
+
+Code: \url{https://github.com/Oshlack/splatter}
+}
 \seealso{
 \code{\link{splatSimLibSizes}}, \code{\link{splatSimGeneMeans}},
+\code{\link{splatSimBatchEffects}}, \code{\link{splatSimBatchCellMeans}},
 \code{\link{splatSimDE}}, \code{\link{splatSimCellMeans}},
 \code{\link{splatSimBCVMeans}}, \code{\link{splatSimTrueCounts}},
 \code{\link{splatSimDropout}}
diff --git a/man/splatter.Rd b/man/splatter.Rd
index b36d0b6d9bc738daaab5dfee9321be1ee19dd529..fcb03921bb00b58af889c6f803ad3c0af1a86ca8 100644
--- a/man/splatter.Rd
+++ b/man/splatter.Rd
@@ -13,3 +13,7 @@ simulation of single-cell RNA-seq count data.
 As well as it's own simulation model \pkg{splatter} provides functions for
 the estimation of model parameters.
 }
+\seealso{
+Zappia L, Phipson B, Oshlack A. Splatter: Simulation Of Single-Cell RNA
+Sequencing Data. bioRxiv. 2017; doi:10.1101/133173
+}
diff --git a/man/summariseDiff.Rd b/man/summariseDiff.Rd
index 704cc86ebf7a1e0090513fe7919a2b01c27434a0..10b3b0622f8d88dca7db9516cbe5f22bbb61e66c 100644
--- a/man/summariseDiff.Rd
+++ b/man/summariseDiff.Rd
@@ -2,26 +2,25 @@
 % Please edit documentation in R/compare.R
 \name{summariseDiff}
 \alias{summariseDiff}
-\title{Summarise diffSCESets}
+\title{Summarise diffSCESs}
 \usage{
 summariseDiff(diff)
 }
 \arguments{
-\item{diff}{Output from \code{\link{diffSCESets}}}
+\item{diff}{Output from \code{\link{diffSCEs}}}
 }
 \value{
-List with MADs, ranks and both combined in long format
+data.frame with MADs, MAEs, RMSEs, scaled statistics and ranks
 }
 \description{
-Summarise the results of \code{\link{diffSCESets}}. The various
-properties are sorted, differences calculated, the Median Absolute Deviation
-taken as the summary statistic and the ranks calculated.
+Summarise the results of \code{\link{diffSCEs}}. Calculates the Median
+Absolute Deviation (MAD), Mean Absolute Error (MAE) and Root Mean Squared
+Error (RMSE) for the various properties and ranks them.
 }
 \examples{
-sim1 <- splatSimulate(nGenes = 1000, groupCells = 20)
+sim1 <- splatSimulate(nGenes = 1000, batchCells = 20)
 sim2 <- simpleSimulate(nGenes = 1000, nCells = 20)
-difference <- diffSCESets(list(Splat = sim1, Simple = sim2), ref = "Simple")
+difference <- diffSCEs(list(Splat = sim1, Simple = sim2), ref = "Simple")
 summary <- summariseDiff(difference)
-names(summary)
-head(summary$Long)
+head(summary)
 }
diff --git a/man/zinbEstimate.Rd b/man/zinbEstimate.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..7d819e37f7a930b0ee15d1991db1dc406c6396ae
--- /dev/null
+++ b/man/zinbEstimate.Rd
@@ -0,0 +1,69 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/zinb-estimate.R
+\name{zinbEstimate}
+\alias{zinbEstimate}
+\alias{zinbEstimate.SingleCellExperiment}
+\alias{zinbEstimate.matrix}
+\title{Estimate ZINB-WaVE simulation parameters}
+\usage{
+zinbEstimate(counts, design.samples = NULL, design.genes = NULL,
+  common.disp = TRUE, iter.init = 2, iter.opt = 25, stop.opt = 1e-04,
+  params = newZINBParams(), verbose = TRUE, BPPARAM = SerialParam(), ...)
+
+\method{zinbEstimate}{SingleCellExperiment}(counts, design.samples = NULL,
+  design.genes = NULL, common.disp = TRUE, iter.init = 2, iter.opt = 25,
+  stop.opt = 1e-04, params = newZINBParams(), verbose = TRUE,
+  BPPARAM = SerialParam(), ...)
+
+\method{zinbEstimate}{matrix}(counts, design.samples = NULL,
+  design.genes = NULL, common.disp = TRUE, iter.init = 2, iter.opt = 25,
+  stop.opt = 1e-04, params = newZINBParams(), verbose = TRUE,
+  BPPARAM = SerialParam(), ...)
+}
+\arguments{
+\item{counts}{either a counts matrix or a SingleCellExperiment object
+containing count data to estimate parameters from.}
+
+\item{design.samples}{design matrix of sample-level covariates.}
+
+\item{design.genes}{design matrix of gene-level covariates.}
+
+\item{common.disp}{logical. Whether or not a single dispersion for all
+features is estimated.}
+
+\item{iter.init}{number of iterations to use for initalization.}
+
+\item{iter.opt}{number of iterations to use for optimization.}
+
+\item{stop.opt}{stopping criterion for optimization.}
+
+\item{params}{ZINBParams object to store estimated values in.}
+
+\item{verbose}{logical. Whether to print progress messages.}
+
+\item{BPPARAM}{A \code{\link[BiocParallel]{BiocParallelParam}} instance
+giving the parallel back-end to be used. Default is
+\code{\link[BiocParallel]{SerialParam}} which uses a single core.}
+
+\item{...}{additional arguments passes to \code{\link[zinbwave]{zinbFit}}.}
+}
+\value{
+ZINBParams object containing the estimated parameters.
+}
+\description{
+Estimate simulation parameters for the ZINB-WaVE simulation from a real
+dataset.
+}
+\details{
+The function is a wrapper around \code{\link[zinbwave]{zinbFit}} that takes
+the fitted model and inserts it into a \code{\link{ZINBParams}} object. See
+\code{\link{ZINBParams}} for more details on the parameters and
+\code{\link[zinbwave]{zinbFit}} for details of the estimation procedure.
+}
+\examples{
+\dontrun{
+data("sc_example_counts")
+params <- zinbEstimate(sc_example_counts)
+params
+}
+}
diff --git a/man/zinbSimulate.Rd b/man/zinbSimulate.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..17c6611ee19c0ce88a5412947f5945b2737f3738
--- /dev/null
+++ b/man/zinbSimulate.Rd
@@ -0,0 +1,46 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/zinb-simulate.R
+\name{zinbSimulate}
+\alias{zinbSimulate}
+\title{ZINB-WaVE simulation}
+\usage{
+zinbSimulate(params = newZINBParams(), verbose = TRUE, ...)
+}
+\arguments{
+\item{params}{ZINBParams object containing simulation parameters.}
+
+\item{verbose}{logical. Whether to print progress messages}
+
+\item{...}{any additional parameter settings to override what is provided in
+\code{params}.}
+}
+\value{
+SingleCellExperiment containing simulated counts
+}
+\description{
+Simulate counts using the ZINB-WaVE method.
+}
+\details{
+This function is just a wrapper around \code{\link[zinbwave]{zinbSim}} that
+takes a \code{\link{ZINBParams}}, runs the simulation then converts the
+output to a \code{\link[SingleCellExperiment]{SingleCellExperiment}} object.
+See \code{\link[zinbwave]{zinbSim}} and the ZINB-WaVE paper for
+more details about how the simulation works.
+}
+\examples{
+sim <- zinbSimulate()
+
+}
+\references{
+Campbell K, Yau C. Uncovering genomic trajectories with heterogeneous genetic
+and environmental backgrounds across single-cells and populations. bioRxiv
+(2017).
+
+Risso D, Perraudeau F, Gribkova S, Dudoit S, Vert J-P. ZINB-WaVE: A general
+and flexible method for signal extraction from single-cell RNA-seq data
+bioRxiv (2017).
+
+Paper: \url{10.1101/125112}
+
+Code: \url{https://github.com/drisso/zinbwave}
+}
diff --git a/pkgdown/extra.css b/pkgdown/extra.css
new file mode 100644
index 0000000000000000000000000000000000000000..5a8e0b151dcdaa45957ad85404b8e3916e56123c
--- /dev/null
+++ b/pkgdown/extra.css
@@ -0,0 +1,9 @@
+.fl      {color: blue;}
+.fu      {color: #00ADEF;}  /* function */
+.ch,.st  {color: #F47920;}  /* string */
+.kw      {color: #7A52C7;}  /* keyword */
+.co      {color: #8DC63F;}  /* comment */
+
+.message { color: gray;   font-weight: bolder;}
+.error   { color: red;  font-weight: bolder;}
+.warning { color: purple; font-weight: bolder;}
diff --git a/tests/testthat/test-BASiCSParams.R b/tests/testthat/test-BASiCSParams.R
new file mode 100644
index 0000000000000000000000000000000000000000..541abc15815caaa54b6f0ec4b5fff2c35e158e7b
--- /dev/null
+++ b/tests/testthat/test-BASiCSParams.R
@@ -0,0 +1,27 @@
+context("BASiCSParams")
+
+test_that("gene.params checks work", {
+    params <- newBASiCSParams()
+    expect_error(setParam(params, "gene.params", data.frame(A = 1, B = 1)),
+                 "gene.params: Incorrect column names")
+    expect_error(setParam(params, "gene.params",
+                          data.frame(Mean = 1, Disp = "a")),
+                 "gene.params: May only contain the following types: numeric")
+})
+
+test_that("cell.params checks work", {
+    params <- newBASiCSParams()
+    expect_error(setParam(params, "cell.params", data.frame(A = 1, B = 1)),
+                 "cell.params: Incorrect column names")
+    expect_error(setParam(params, "cell.params",
+                          data.frame(Phi = 1, S = "a")),
+                 "cell.params: May only contain the following types: numeric")
+})
+
+test_that("nBatches checks work", {
+    params <- newBASiCSParams()
+    expect_error(setParam(params, "nCells", 1),
+                 "nCells cannot be set directly, set batchCells instead")
+    expect_error(setParam(params, "nBatches", 1),
+                 "nBatches cannot be set directly, set batchCells instead")
+})
diff --git a/tests/testthat/test-PhenoParams.R b/tests/testthat/test-PhenoParams.R
new file mode 100644
index 0000000000000000000000000000000000000000..d5a252daba9f5f300840bc949f8a199b79d6e7a1
--- /dev/null
+++ b/tests/testthat/test-PhenoParams.R
@@ -0,0 +1,15 @@
+context("PhenoParams")
+
+test_that("constructor is valid", {
+    expect_true(validObject(newPhenoParams()))
+})
+
+test_that("nGenes checks work", {
+    params <- newPhenoParams()
+    expect_error(setParam(params, "nGenes", 1),
+                 "nGenes cannot be set directly")
+    params <- setParam(params, "n.de", 0)
+    total <- getParam(params, "n.de") + getParam(params, "n.pst") +
+             getParam(params, "n.pst.beta") + getParam(params, "n.de.pst.beta")
+    expect_equal(getParam(params, "nGenes"), total)
+})
diff --git a/tests/testthat/test-SplatParams.R b/tests/testthat/test-SplatParams.R
index e2d1bd907672f0c0436c7252ad427870d43e9610..208f0dfa24b672635f12709d4823b49cdaa3c7d7 100644
--- a/tests/testthat/test-SplatParams.R
+++ b/tests/testthat/test-SplatParams.R
@@ -1,26 +1,30 @@
 context("SplatParams")
 
-test_that("nGroups checks work", {
+test_that("nBatches checks work", {
   params <- newSplatParams()
   expect_error(setParam(params, "nCells", 1),
-               "nCells cannot be set directly, set groupCells instead")
-  expect_error(setParam(params, "nGroups", 1),
-               "nGroups cannot be set directly, set groupCells instead")
+               "nCells cannot be set directly, set batchCells instead")
+  expect_error(setParam(params, "nBatches", 1),
+               "nBatches cannot be set directly, set batchCells instead")
+})
+
+test_that("nGroups checks work", {
+    params <- newSplatParams()
+    expect_error(setParam(params, "nGroups", 1),
+                 "nGroups cannot be set directly, set group.prob instead")
 })
 
 test_that("path.from checks work", {
     params <- newSplatParams()
-    params <- setParams(params, groupCells = c(10, 10))
+    params <- setParams(params, group.prob = c(0.5, 0.5))
     params <- setParamUnchecked(params, "path.from", c(0, 1))
     expect_silent(validObject(params))
     params <- setParamUnchecked(params, "path.from", c(0, 3))
-    expect_error(validObject(params),
-                 paste('invalid class "SplatParams" object: path.from:',
-                       "All elements must be <= 2"))
+    expect_error(validObject(params), "invalid class")
     params <- setParamUnchecked(params, "path.from", c(1, 0))
     expect_error(validObject(params), "path cannot begin at itself")
     params <- newSplatParams()
-    params <- setParams(params, groupCells = c(10, 10, 10))
+    params <- setParams(params, group.prob = c(0.3, 0.3, 0.4))
     params <- setParamUnchecked(params, "path.from", c(2, 1, 1))
     expect_error(validObject(params), "origin must be specified in path.from")
-})
\ No newline at end of file
+})
diff --git a/tests/testthat/test-ZINBParams.R b/tests/testthat/test-ZINBParams.R
new file mode 100644
index 0000000000000000000000000000000000000000..bbb7abd371aa1cddae7f7332201fe10bfc209f62
--- /dev/null
+++ b/tests/testthat/test-ZINBParams.R
@@ -0,0 +1,13 @@
+context("ZINBParams")
+
+test_that("constructor is valid", {
+    expect_true(validObject(newZINBParams()))
+})
+
+test_that("nGenes checks work", {
+    params <- newZINBParams()
+    expect_error(setParam(params, "nGenes", 1),
+                 "nGenes cannot be set directly")
+    expect_error(setParam(params, "nCells", 1),
+                 "nCells cannot be set directly")
+})
diff --git a/tests/testthat/test-mfa-simulate.R b/tests/testthat/test-mfa-simulate.R
new file mode 100644
index 0000000000000000000000000000000000000000..877e0a9686460f9ec84fe107c0fb1397da969723
--- /dev/null
+++ b/tests/testthat/test-mfa-simulate.R
@@ -0,0 +1,6 @@
+context("mfa simulation")
+
+test_that("mfa simulation output is valid", {
+    expect_true(validObject(mfaSimulate()))
+    expect_true(validObject(mfaSimulate(dropout.present = TRUE)))
+})
diff --git a/tests/testthat/test-pheno-simulate.R b/tests/testthat/test-pheno-simulate.R
new file mode 100644
index 0000000000000000000000000000000000000000..f67a25e72e0ca8cd8ef82537f83a752ae23a429a
--- /dev/null
+++ b/tests/testthat/test-pheno-simulate.R
@@ -0,0 +1,5 @@
+context("PhenoPath simulation")
+
+test_that("PhenoPath simulation output is valid", {
+    expect_true(validObject(phenoSimulate()))
+})
diff --git a/tests/testthat/test-simulate-simple.R b/tests/testthat/test-simple-simulate.R
similarity index 100%
rename from tests/testthat/test-simulate-simple.R
rename to tests/testthat/test-simple-simulate.R
diff --git a/tests/testthat/test-splat-simulate.R b/tests/testthat/test-splat-simulate.R
index ad563b74670749f1ae0f5f8642ac2b6fc2a4119a..9d99cf7b7fc3c762d7a821a255c9ae6415ea87ad 100644
--- a/tests/testthat/test-splat-simulate.R
+++ b/tests/testthat/test-splat-simulate.R
@@ -1,6 +1,7 @@
 context("Splatter simulations")
 
-test.params <- newSplatParams(nGenes = 100, groupCells = c(5, 5), lib.scale = 0)
+test.params <- newSplatParams(nGenes = 100, batchCells = c(5, 5),
+                              group.prob = c(0.5, 0.5), lib.scale = 0)
 
 test_that("splatSimulate output is valid", {
     expect_true(validObject(splatSimulate(test.params, method = "single")))
@@ -10,10 +11,10 @@ test_that("splatSimulate output is valid", {
 
 test_that("one group switches to single mode", {
     expect_warning(splatSimulate(test.params, method = "groups",
-                                 groupCells = c(10)),
+                                 group.prob = c(1)),
                    "nGroups is 1, switching to single mode")
     expect_silent(splatSimulate(test.params, method = "paths",
-                                groupCells = c(10), verbose = FALSE))
+                                group.prob = c(1), verbose = FALSE))
 })
 
 test_that("infinite bcv.df is detected", {
diff --git a/tests/testthat/test-zinb-simulate.R b/tests/testthat/test-zinb-simulate.R
new file mode 100644
index 0000000000000000000000000000000000000000..80b2b1c5bcd8062be039f7a2260458920353d6de
--- /dev/null
+++ b/tests/testthat/test-zinb-simulate.R
@@ -0,0 +1,5 @@
+context("ZINB-WaVE simulation")
+
+test_that("ZINB-WaVE simulation output is valid", {
+    expect_true(validObject(zinbSimulate()))
+})
diff --git a/vignettes/splatter.Rmd b/vignettes/splatter.Rmd
index 7d728abf8869c5d779c9e7ba950ff7babbe54a78..ae895ee3c5d0c192fc358c541f32b2c67d383604 100644
--- a/vignettes/splatter.Rmd
+++ b/vignettes/splatter.Rmd
@@ -89,9 +89,14 @@ The parameters required for the Splat simulation are briefly described here:
 * **Global parameters**
     * `nGenes` - The number of genes to simulate.
     * `nCells` - The number of cells to simulate.
-    * `nGroups` - The number of groups or paths to simulate.
-    * `groupCells` - The number of cells in each group/path.
     * `seed` - Seed to use for generating random numbers.
+* **Batch parameters**
+    * `nBatches` - The number of batches to simulate.
+    * `batchCells` - The number of cells in each batch.
+    * `batch.facLoc` - Location (meanlog) parameter for the batch effects factor
+      log-normal distribution.
+    * `batch.facScale` - Scale (sdlog) parameter for the batch effects factor
+      log-normal distribution.
 * **Mean parameters**
     * `mean.shape` - Shape parameter for the mean gamma distribution.
     * `mean.rate` - Rate parameter for the mean gamma distribution.
@@ -106,6 +111,9 @@ The parameters required for the Splat simulation are briefly described here:
       factor log-normal distribution.
     * `out.facScale` - Scale (sdlog) parameter for the expression outlier factor
       log-normal distribution.
+* **Group parameters**
+    * `nGroups` - The number of groups or paths to simulate.
+    * `group.prob` - The probabilities that cells come from particular groups.
 * **Differential expression parameters**
     * `de.prob` - Probability that a gene is differentially expressed in each
       group or path.
@@ -212,8 +220,8 @@ params <- splatEstimate(sc_example_counts)
 ```
 
 Here we estimated parameters from a counts matrix but `splatEstimate` can also
-take an `SCESet` object from the `scater` package. The estimation process has
-the following steps:
+take a `SingleCellExperiment` object. The estimation process has the following
+steps:
 
 1. Mean parameters are estimated by fitting a gamma distribution to the mean
    expression levels.
@@ -227,7 +235,7 @@ the following steps:
 5. Dropout parameters are estimated by checking if dropout is present and
    fitting a logistic function to the relationship between mean expression and
    proportion of zeros.
-   
+
 For more details of the estimation procedures see `?splatEstimate`.
 
 # Simulating counts
@@ -242,39 +250,45 @@ sim <- splatSimulate(params, nGenes = 1000, dropout.present = FALSE)
 sim
 ```
 
-Looking at the output of `splatSimulate` we can see that `sim` is an `SCESet`
-object with `r nrow(sim)` features (genes) and `r ncol(sim)` samples
-(cells). The main part of this object is a features by samples matrix containing
-the simulated counts (accessed using `counts`), although it can also hold other
-expression measures such as FPKM or TPM. Additionaly an `SCESet` contains
-phenotype information about each cell (accessed using `pData`) and feature
-information about each gene (accessed using `fData`). Splatter uses these slots
-to store information about the intermediate values of the simulation.
-
-```{r SCESet}
+Looking at the output of `splatSimulate` we can see that `sim` is
+`SingleCellExperiment` object with `r nrow(sim)` features (genes) and
+`r ncol(sim)` samples (cells). The main part of this object is a features
+by samples matrix containing the simulated counts (accessed using `counts`),
+although it can also hold other expression measures such as FPKM or TPM.
+Additionaly a `SingleCellExperiment` contains phenotype information about
+each cell (accessed using `colData`) and feature information about each gene
+(accessed using `rowData`). Splatter uses these slots, as well as `assays`, to
+store information about the intermediate values of the simulation.
+
+```{r SCE}
 # Access the counts
 counts(sim)[1:5, 1:5]
 # Information about genes
-head(fData(sim))
+head(rowData(sim))
 # Information about cells
-head(pData(sim))
+head(colData(sim))
 # Gene by cell matrices
-names(assayData(sim))
+names(assays(sim))
 # Example of cell means matrix
-get_exprs(sim, "CellMeans")[1:5, 1:5]
+assays(sim)$CellMeans[1:5, 1:5]
 ```
 
-An additional (big) advantage of outputting an `SCESet` is that we get immediate
-access to all of the `scater` functions. For example we can make a PCA plot:
+An additional (big) advantage of outputting a `SingleCellExperiment` is that we
+get immediate access to other analysis packages, such as the plotting functions
+in `scater`. For example we can make a PCA plot:
 
 ```{r pca}
+# Use scater to calculate logcounts
+sim <- normalise(sim)
+# Plot PCA
 plotPCA(sim)
 ```
 
 (**NOTE:** Your values and plots may look different as the simulation is random
 and produces different results each time it is run.)
 
-For more details of the `SCESet` and what you can do with `scater` refer to the
+For more details about the `SingleCellExperiment` object refer to the [vignette]
+[SCE-vignette]. For information about what you can do with `scater` refer to the
 `scater` documentation and [vignette][scater-vignette].
 
 The `splatSimulate` function outputs the following additional information about
@@ -307,8 +321,8 @@ the simulation:
       cells.
 
 Values that have been added by Splatter are named using `UpperCamelCase` to
-separate them from the `underscore_naming` used by `scater`. For more
-information on the simulation see `?splatSimulate`.
+separate them from the `underscore_naming` used by `scater` and other packages.
+For more information on the simulation see `?splatSimulate`.
 
 ## Simulating groups
 
@@ -316,18 +330,24 @@ So far we have only simulated a single population of cells but often we are
 interested in investigating a mixed population of cells and looking to see what
 cell types are present or what differences there are between them. Splatter is
 able to simulate these situations by changing the `method` argument Here we are
-going to simulate two groups, each with 50 cells, by specifying the `groupCells`
-parameter and setting the `method` parameter to `"groups"`:
+going to simulate two groups, by specifying the `group.prob` parameter and 
+setting the `method` parameter to `"groups"`:
 
 (**NOTE:** We have also set the `verbose` argument to `FALSE` to stop Splatter
 printing progress messages.)
 
 ```{r groups}
-sim.groups <- splatSimulate(groupCells = c(100, 100), method = "groups",
+sim.groups <- splatSimulate(group.prob = c(0.5, 0.5), method = "groups",
                             verbose = FALSE)
+sim.groups <- normalise(sim.groups)
 plotPCA(sim.groups, colour_by = "Group")
 ```
 
+As we have set both the group probabilites to 0.5 we should get approximately
+equal numbers of cells in each group (around 50 in this case). If we wanted
+uneven groups we could set `group.prob` to any set of probabilites that sum to
+1.
+
 ## Simulating paths
 
 The other situation that is often of interest is a differentiation process where
@@ -338,6 +358,7 @@ method.
 
 ```{r paths}
 sim.paths <- splatSimulate(method = "paths", verbose = FALSE)
+sim.paths <- normalise(sim.paths)
 plotPCA(sim.paths, colour_by = "Step")
 ```
 
@@ -348,6 +369,38 @@ to the final, differentiated, cell type. By setting additional parameters it is
 possible to simulate more complex process (for example multiple mature cell
 types from a single progenitor).
 
+## Batch effects
+
+Another factor that is important in the analysis of any sequencing experiment
+are batch effects, technical variation that is common to a set of samples
+processed at the same time. We apply batch effects by telling Splatter how many
+cells are in each batch:
+
+```{r batches}
+sim.batches <- splatSimulate(batchCells = c(50, 50), verbose = FALSE)
+sim.batches <- normalise(sim.batches)
+plotPCA(sim.batches, colour_by = "Batch")
+```
+
+This looks at lot like when we simulated groups and that is because the process
+is very similar. The difference is that batch effects are applied to all genes,
+not just those that are differentially expressed, and the effects are usually
+smaller. By combining groups and batches we can simulate both unwanted variation
+that we aren't interested in (batch) and the wanted variation we are looking for
+(group):
+
+```{r batch-groups}
+sim.groups <- splatSimulate(batchCells = c(50, 50), group.prob = c(0.5, 0.5),
+                            method = "groups", verbose = FALSE)
+sim.groups <- normalise(sim.groups)
+plotPCA(sim.groups, shape_by = "Batch", colour_by = "Group",
+        exprs_values = "counts")
+```
+
+Here we see that the effects of the group (first component) are stronger than
+the batch effects (second component) but by adjusting the parameters we could
+made the batch effects dominate.
+
 ## Convenience functions
 
 Each of the Splatter simulation methods has it's own convenience function.
@@ -359,7 +412,7 @@ simulate paths use `splatSimulatePaths()` (equivalent to
 
 # Other simulations
 
-As well as it's own simulation method the Splatter package contains
+As well as it's own Splat simulation method the Splatter package contains
 implementations of other single-cell RNA-seq simulations that have been
 published or wrappers around simulations included in other packages. To see all
 the available simulations run the `listSims()` function:
@@ -379,54 +432,54 @@ associated with that simulation. For example the prefix for the simple
 simulation is `simple` so it would store it's parameters in a `SimpleParams`
 object that can be created using `newSimpleParams()` or estimated from real
 data using `simpleEstimate()`. To simulate data using that simulation you
-would use `simpleSimulate()`. Each simulation returns an `SCESet` object with
-intermediate values similar to that returned by `splatSimulate()`. For more
-detailed information on each simulation see the appropriate help page (eg.
-`?simpleSimulate` for information on how the simple simulation works or
-`?lun2Estimate` for details of how the Lun 2 simulation estimates
-parameters) or refer to the appropriate paper or package.
+would use `simpleSimulate()`. Each simulation returns a `SingleCellExperiment`
+object with intermediate values similar to that returned by `splatSimulate()`.
+For more detailed information on each simulation see the appropriate help page
+(eg. `?simpleSimulate` for information on how the simple simulation works or `?
+lun2Estimate` for details of how the Lun 2 simulation estimates parameters) or
+refer to the appropriate paper or package.
 
 # Other expression values
 
 Splatter is designed to simulate count data but some analysis methods expect
-other expression values, particularly length-normalised values such as TPM or
-FPKM. The `scater` package has functions for adding these values to an `SCESet`
-object but they require a length for each gene. The `addGeneLengths` can be
-used to simulate these lengths:
+other expression values, particularly length-normalised values such as TPM
+or FPKM. The `scater` package has functions for adding these values to a
+`SingleCellExperiment` object but they require a length for each gene. The
+`addGeneLengths` function can be used to simulate these lengths:
 
 ```{r lengths}
 sim <- simpleSimulate(verbose = FALSE)
 sim <- addGeneLengths(sim)
-head(fData(sim))
+head(rowData(sim))
 ```
 
 We can then use `scater` to calculate TPM:
 
 ```{r TPM}
-tpm(sim) <- calculateTPM(sim, fData(sim)$Length)
+tpm(sim) <- calculateTPM(sim, rowData(sim)$Length)
 tpm(sim)[1:5, 1:5]
 ```
 
 The default method used by `addGeneLengths` to simulate lengths is to generate
 values from a log-normal distribution which are then rounded to give an integer
-length. The parameters for this distribution are based on human coding genes
-but can be adjusted if needed (for example for other species). Alternatively
-lengths can be sampled from a provided vector (see `?addGeneLengths` for details
-and an example).
+length. The parameters for this distribution are based on human protein coding 
+genes but can be adjusted if needed (for example for other species). 
+Alternatively lengths can be sampled from a provided vector (see 
+`?addGeneLengths` for details and an example).
 
 # Comparing simulations and real data
 
 One thing you might like to do after simulating data is to compare it to a real
 dataset, or compare simulations with different parameters or models. Splatter
-provides a function `compareSCESets` that aims to make these comparisons easier.
-As the name suggests this function takes a list of `SCESet` objects, combines
-the datasets and produces some plots comparing them. Let's make two small
-simulations and see how they compare.
+provides a function `compareSCEs` that aims to make these comparisons easier. As
+the name suggests this function takes a list of `SingleCellExperiment` objects,
+combines the datasets and produces some plots comparing them. Let's make two
+small simulations and see how they compare.
 
 ```{r comparison}
-sim1 <- splatSimulate(nGenes = 1000, groupCells = 20, verbose = FALSE)
+sim1 <- splatSimulate(nGenes = 1000, batchCells = 20, verbose = FALSE)
 sim2 <- simpleSimulate(nGenes = 1000, nCells = 20, verbose = FALSE)
-comparison <- compareSCESets(list(Splat = sim1, Simple = sim2))
+comparison <- compareSCEs(list(Splat = sim1, Simple = sim2))
 
 names(comparison)
 names(comparison$Plots)
@@ -454,15 +507,15 @@ ggplot(comparison$PhenoData,
 
 ## Comparing differences
 
-Sometimes instead of visually comparing datasets it may be more interesting to
-look at the differences between them. We can do this using the `diffSCESets`
-function. Similar to `compareSCESets` this function takes a list of `SCESet`
-objects but now we also specify one to be a reference. A series of similar plots
-are returned but instead of showing the overall distributions they demonstrate
-differences from the reference.
+Sometimes instead of visually comparing datasets it may be more interesting
+to look at the differences between them. We can do this using the
+`diffSCEs` function. Similar to `compareSCEs` this function takes a list of
+`SingleCellExperiment` objects but now we also specify one to be a reference.
+A series of similar plots are returned but instead of showing the overall
+distributions they demonstrate differences from the reference.
 
 ```{r difference}
-difference <- diffSCESets(list(Splat = sim1, Simple = sim2), ref = "Simple")
+difference <- diffSCEs(list(Splat = sim1, Simple = sim2), ref = "Simple")
 difference$Plots$Means
 ```
 
@@ -497,6 +550,14 @@ panel <- makeOverallPanel(comparison, difference)
 cowplot::save_plot("overall_panel.png", panel, ncol = 4, nrow = 7)
 ```
 
+# Citing Splatter
+
+If you use Splatter in your work please cite our paper:
+
+```{r citation}
+citation("splatter")
+```
+
 # Session information {-}
 
 ```{r sessionInfo}
@@ -506,3 +567,4 @@ sessionInfo()
 [gamma]: https://en.wikipedia.org/wiki/Gamma_distribution
 [poisson]: https://en.wikipedia.org/wiki/Poisson_distribution
 [scater-vignette]: https://bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/vignette.html
+[SCE-vignette]: https://bioconductor.org/packages/devel/bioc/vignettes/SingleCellExperiment/inst/doc/intro.html