R/listSims.R

#' List simulations
#'
#' List all the simulations that are currently available in Splatter with a
#' brief description.
#'
#' @param print logical. Whether to print to the console.
#'
#' @return Invisibly returns a data.frame containing the information that is
#' displayed.
#' @examples
#' listSims()
#' @export
listSims <- function(print = TRUE) {

    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 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", "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", "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", "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",
                   "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."),
                 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
                   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."),
                 c("scDD", "scDD", "10.1186/s13059-016-1077-y",
                   "kdkorthauer/scDD",
                   "The scDD simulation samples a given dataset and can
                   simulate differentially expressed and differentially
                   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."),
                 c("SparseDC", "sparseDC", "10.1093/nar/gkx1113",
                   "cran/SparseDC",
                   "The SparseDC simulation simulates a set of clusters
                   across two conditions, where some clusters may be present in
                   only one condition."))

    sims.table <- data.frame(Name        = rep(NA, length(sims)),
                             Prefix      = rep(NA, length(sims)),
                             DOI         = rep(NA, length(sims)),
                             GitHub      = rep(NA, length(sims)),
                             Description = rep(NA, length(sims)))

    for (idx in seq_along(sims)) {
        entry <- sims[[idx]]
        entry[5] <- gsub("[[:space:]]+", " ", entry[5])
        sims.table[idx, ] <- entry
    }

    if (print) {
        cat("Splatter currently contains", length(sims), "simulations", "\n\n")
        for (idx in seq_len(nrow(sims.table))) {
            sim <- as.character(sims.table[idx, ])
            cat(crayon::bold(sim[1]), crayon::yellow(paste0("(", sim[2], ")")),
                "\n")
            cat(crayon::bold("DOI:"), crayon::cyan(sim[3]), "\t",
                crayon::bold("GitHub:"), crayon::cyan(sim[4]), "\n")
            cat(sim[5], "\n\n")
        }
    }

    invisible(sims.table)
}
Granoia/splatter-mod documentation built on May 28, 2019, 12:31 a.m.