#' The Params virtual class #' #' Virtual S4 class that all other Params classes inherit from. #' #' @section Parameters: #' #' 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.} #' } #' #' The parameters shown in brackets can be estimated from real data. #' #' @name Params #' @rdname Params #' @aliases Params-class setClass("Params", contains = "VIRTUAL", slots = c(nGenes = "numeric", nCells = "numeric", seed = "numeric"), prototype = prototype(nGenes = 10000, nCells = 100, seed = sample(1:1e6, 1))) #' The SimpleParams class #' #' S4 class that holds parameters for the simple simulation. #' #' @section Parameters: #' #' The simple 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{mean.shape}}{The shape parameter for the mean gamma #' distribution.} #' \item{\code{mean.rate}}{The rate parameter for the mean gamma #' distribution.} #' \item{\code{[count.disp]}}{The dispersion parameter for the counts #' negative binomial distribution.} #' } #' #' The parameters not shown in brackets can be estimated from real data using #' \code{\link{simpleEstimate}}. For details of the simple simulation #' see \code{\link{simpleSimulate}}. #' #' @name SimpleParams #' @rdname SimpleParams #' @aliases SimpleParams-class #' @exportClass SimpleParams setClass("SimpleParams", contains = "Params", slots = c(mean.shape = "numeric", mean.rate = "numeric", count.disp = "numeric"), prototype = prototype(mean.shape = 0.4, mean.rate = 0.3, count.disp = 0.1)) #' The SplatParams class #' #' S4 class that holds parameters for the Splatter simulation. #' #' @section Parameters: #' #' 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{Mean parameters}}{ #' \describe{ #' \item{\code{mean.shape}}{Shape parameter for the mean gamma #' distribution.} #' \item{\code{mean.rate}}{Rate parameter for the mean gamma #' distribution.} #' } #' } #' \item{\emph{Library size parameters}}{ #' \describe{ #' \item{\code{lib.loc}}{Location (meanlog) parameter for the #' library size log-normal distribution.} #' \item{\code{lib.scale}}{Scale (sdlog) parameter for the library #' size log-normal distribution.} #' } #' } #' \item{\emph{Expression outlier parameters}}{ #' \describe{ #' \item{\code{out.prob}}{Probability that a gene is an expression #' outlier.} #' \item{\code{out.facLoc}}{Location (meanlog) parameter for the #' expression outlier factor log-normal distribution.} #' \item{\code{out.facScale}}{Scale (sdlog) parameter for the #' expression outlier factor log-normal distribution.} #' } #' } #' \item{\emph{Differential expression parameters}}{ #' \describe{ #' \item{\code{[de.prob]}}{Probability that a gene is differentially #' expressed in a group. Can be a vector.} #' \item{\code{[de.loProb]}}{Probability that a differentially #' expressed gene is down-regulated. Can be a vector.} #' \item{\code{[de.facLoc]}}{Location (meanlog) parameter for the #' differential expression factor log-normal distribution. Can be a #' vector.} #' \item{\code{[de.facScale]}}{Scale (sdlog) parameter for the #' differential expression factor log-normal distribution. Can be a #' vector.} #' } #' } #' \item{\emph{Biological Coefficient of Variation parameters}}{ #' \describe{ #' \item{\code{bcv.common}}{Underlying common dispersion across all #' genes.} #' \item{\code{bcv.df}}{Degrees of Freedom for the BCV inverse #' chi-squared distribution.} #' } #' } #' \item{\emph{Dropout parameters}}{ #' \describe{ #' \item{\code{dropout.present}}{Logical. Whether to simulate #' dropout.} #' \item{\code{dropout.mid}}{Midpoint parameter for the dropout #' logistic function.} #' \item{\code{dropout.shape}}{Shape parameter for the dropout #' logistic function.} #' } #' } #' \item{\emph{Differentiation path parameters}}{ #' \describe{ #' \item{\code{[path.from]}}{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.} #' \item{\code{[path.length]}}{Vector giving the number of steps to #' simulate along each path. If a single value is given it will be #' applied to all paths.} #' \item{\code{[path.skew]}}{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.} #' \item{\code{[path.nonlinearProb]}}{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.} #' \item{\code{[path.sigmaFac]}}{Sigma factor for non-linear gene #' paths. A higher value will result in more extreme non-linear #' variations along a path.} #' } #' } #' } #' #' The parameters not shown in brackets can be estimated from real data using #' \code{\link{splatEstimate}}. For details of the Splatter simulation #' see \code{\link{splatSimulate}}. #' #' @name SplatParams #' @rdname SplatParams #' @aliases SplatParams-class #' @exportClass SplatParams setClass("SplatParams", contains = "Params", slots = c(nGroups = "numeric", groupCells = "numeric", mean.shape = "numeric", mean.rate = "numeric", lib.loc = "numeric", lib.scale = "numeric", out.prob = "numeric", out.facLoc = "numeric", out.facScale = "numeric", de.prob = "numeric", de.downProb = "numeric", de.facLoc = "numeric", de.facScale = "numeric", bcv.common = "numeric", bcv.df = "numeric", dropout.present = "logical", dropout.mid = "numeric", dropout.shape = "numeric", path.from = "numeric", path.length = "numeric", path.skew = "numeric", path.nonlinearProb = "numeric", path.sigmaFac = "numeric"), prototype = prototype(nGroups = 1, groupCells = 100, mean.rate = 0.3, mean.shape = 0.6, lib.loc = 11, lib.scale = 0.2, out.prob = 0.05, out.facLoc = 4, out.facScale = 0.5, de.prob = 0.1, de.downProb = 0.5, de.facLoc = 4, de.facScale = 1, bcv.common = 0.1, bcv.df = 60, dropout.present = FALSE, dropout.mid = 0, dropout.shape = -1, path.from = 0, path.length = 100, path.skew = 0.5, path.nonlinearProb = 0.1, path.sigmaFac = 0.8)) #' The LunParams class #' #' S4 class that holds parameters for the Lun simulation. #' #' @section Parameters: #' #' The Lun 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{[nGroups]}}{The number of groups 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{Mean parameters}}{ #' \describe{ #' \item{\code{[mean.shape]}}{Shape parameter for the mean gamma #' distribution.} #' \item{\code{[mean.rate]}}{Rate parameter for the mean gamma #' distribution.} #' } #' } #' \item{\emph{Counts parameters}}{ #' \describe{ #' \item{\code{[count.disp]}}{The dispersion parameter for the #' counts negative binomial distribution.} #' } #' } #' \item{\emph{Differential expression parameters}}{ #' \describe{ #' \item{\code{[de.nGenes]}}{The number of genes that are #' differentially expressed in each group} #' \item{\code{[de.upProp]}}{The proportion of differentially #' expressed genes that are up-regulated in each group} #' \item{\code{[de.upFC]}}{The fold change for up-regulated genes} #' \item{\code{[de.downFC]}}{The fold change for down-regulated #' genes} #' } #' } #' } #' #' The parameters not shown in brackets can be estimated from real data using #' \code{\link{lunEstimate}}. For details of the Lun simulation see #' \code{\link{lunSimulate}}. #' #' @name LunParams #' @rdname LunParams #' @aliases LunParams-class #' @exportClass LunParams setClass("LunParams", contains = "SimpleParams", slots = c(nGroups = "numeric", groupCells = "numeric", de.nGenes = "numeric", de.upProp = "numeric", de.upFC = "numeric", de.downFC = "numeric"), prototype = prototype(nGroups = 1, groupCells = 100, mean.shape = 2, mean.rate = 2, de.nGenes = 1000, de.upProp = 0.5, de.upFC = 5, de.downFC = 0)) #' The Lun2Params class #' #' S4 class that holds parameters for the Lun simulation. #' #' @section Parameters: #' #' The Lun2 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{Gene parameters}}{ #' \describe{ #' \item{\code{gene.params}}{A \code{data.frame} containing gene #' parameters with two coloumns: \code{Mean} (mean expression for #' each gene) and \code{Disp} (dispersion for each gene).} #' \item{\code{zi.params}}{A \code{data.frame} containing #' zero-inflated gene parameters with three coloumns: \code{Mean} #' (mean expression for each gene), \code{Disp} (dispersion for #' each, gene), and \code{Prop} (zero proportion for each gene).} #' } #' } #' \item{\code{[nPlates]}}{The number of plates to simulate.} #' \item{\emph{Plate parameters}}{ #' \describe{ #' \item{\code{plate.ingroup}}{Character vecotor giving the plates #' considered to be part of the "ingroup".} #' \item{\code{plate.mod}}{Plate effect modifier factor. The plate #' effect variance is divided by this value.} #' \item{\code{plate.var}}{Plate effect variance.} #' } #' } #' \item{\emph{Cell parameters}}{ #' \describe{ #' \item{\code{cell.plates}}{Factor giving the plate that each cell #' comes from.} #' \item{\code{cell.libSizes}}{Library size for each cell.} #' \item{\code{cell.libMod}}{Modifier factor for library sizes. #' The library sizes are multiplied by this value.} #' } #' } #' \item{\emph{Differential expression parameters}}{ #' \describe{ #' \item{\code{de.nGenes}}{Number of differentially expressed #' genes.} #' \item{\code{de.fc}}{Fold change for differentially expressed #' genes.} #' } #' } #' } #' #' The parameters not shown in brackets can be estimated from real data using #' \code{\link{lun2Estimate}}. For details of the Lun2 simulation see #' \code{\link{lun2Simulate}}. #' #' @name Lun2Params #' @rdname Lun2Params #' @aliases Lun2Params-class #' @exportClass Lun2Params setClass("Lun2Params", contains = "Params", slots = c(nPlates = "numeric", plate.ingroup = "character", plate.mod = "numeric", plate.var = "numeric", gene.params = "data.frame", zi.params = "data.frame", cell.plates = "numeric", cell.libSizes = "numeric", cell.libMod = "numeric", de.nGenes = "numeric", de.fc = "numeric"), prototype = prototype(nPlates = 1, cell.plates = factor(rep(1, 100)), plate.ingroup = "1", plate.mod = 1, plate.var = 14, gene.params = data.frame(Mean = rep(3.2, 10000), Disp = rep(0.03, 10000) ), zi.params = data.frame(Mean = rep(1.6, 10000), Disp = rep(0.1, 10000), Prop = rep(2.3e-6, 10000) ), cell.libSizes = rep(70000, 100), cell.libMod = 1, de.nGenes = 0, de.fc = 3)) #' The SCDDParams class #' #' S4 class that holds parameters for the scDD simulation. #' #' @section Parameters: #' #' The SCDD simulation uses the following parameters: #' #' \describe{ #' \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 #' 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{[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)} #' \item{\code{[condition]}}{String giving the column that represents #' 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}}. #' #' @name SCDDParams #' @rdname SCDDParams #' @aliases SCDDParams-class #' @exportClass SCDDParams setClass("SCDDParams", contains = "Params", slots = c(SCdat = "SummarizedExperiment", nDE = "numeric", nDP = "numeric", nDM = "numeric", nDB = "numeric", nEE = "numeric", nEP = "numeric", sd.range = "numeric", modeFC = "numeric", varInflation = "numeric", condition = "character"), prototype = prototype(SCdat = SummarizedExperiment::SummarizedExperiment(), nCells = 100, nDE = 250, nDP = 250, nDM = 250, nDB = 250, nEE = 5000, nEP = 4000, sd.range = c(1, 3), modeFC = c(2, 3, 4), varInflation = c(1, 1), condition = "condition"))