knitr::opts_chunk$set(echo = FALSE, warning = FALSE, error = FALSE, message = FALSE)
method_expand <- function(method_name){
  method_name <- c(method_name,
                   "ESCO-tree",
                   "ESCO-traj",
                   "SCRIP-GP-trendedBCV",
                   "SCRIP-GP-commonBCV",
                   "SCRIP-BGP-commonBCV",
                   "SCRIP-BP",
                   "SCRIP-BGP-trendedBCV",
                   "Splat-paths",
                   "SplatPop-paths",
                   "SCRIP-paths",
                   "scDesign3-tree",
                   "scMultiSim-tree")
  method_name <- method_name[-24]
  return(method_name)
}
methods <- simmethods::get_method()

A collection of 49 simulation methods for single-cell and spatial transcriptome data

Simmethods collects and documents 49 popular and common simulation methods for single-cell and spatial transcriptome data. To satisfy user's requirements in different scenarios, we bundled the simulators comprehensively and users can simulate many kinds of single-cell RNA-seq data (different number of groups, batches, differential expressed genes and even data with differentiation trajectory) using certain methods. If you want to learn how to use a certain simulation method, please check the following chart and commit an issue or send an Email to us when you have any question.

The Table of Simulation Methods

method_name <- names(methods)
method_name <- method_expand(method_name)

method_table <- purrr::map_dfr(method_name, .f = function(x){
  real_name <- stringr::str_split(x, pattern = "-", simplify = TRUE)[1]
  method_definition <- methods[[real_name]][[paste0(real_name, "_method")]]

  ## Language
  if(method_definition$programming == "R"){
    logo <- "'man/figures/R_logo.png' "
    size <- paste("height='23px'", "width='30px'")
    Language <- paste0("<img src=", logo, size, ">")
  }else{
    logo <- "'man/figures/python_logo.png' "
    size <- paste("height='28px'", "width='84px'")
    Language <- paste0("<img src=", logo, size, ">")
  }

  ## DOI
  if(!is.null(method_definition$manuscript$doi)){
    DOI <- paste0("<a href=",
                  paste0("'https://doi.org/", method_definition$manuscript$doi),
                  "'><img src='man/figures/doi_logo.png' height='24px' width = '24px'></a>")
  }else{
    DOI <- ""
  }

  ## URL
  if(!is.null(method_definition$url) | !is.null(method_definition$authors$github)){
    if(stringr::str_detect(method_definition$url, pattern = "cran")){
      png_logo <- "'man/figures/CRAN.png' "
      url_size <- "height='12.5px' width = '30px'"
    }else if(stringr::str_detect(method_definition$url, pattern = "bioconductor")){
      png_logo <- "'man/figures/bioconductor_logo.png' "
      url_size <- "height='36px' width = '30px'"
    }else if(stringr::str_detect(method_definition$url, pattern = "github")){
      png_logo <- "'man/figures/github_logo.png' "
      url_size <- "height='21px' width = '38px'"
    }else{
      png_logo <- "'man/figures/URL.png' "
      url_size <- "height='25px' width = '25px'"
    }
    if(!is.null(method_definition$authors$github)){
      png_logo2 <- "'man/figures/github_logo.png' "
      url_size2 <- "height='21px' width = '38px'"
    }
    if(!is.null(method_definition$authors$github)){
      if(method_definition$authors$github == method_definition$url){
        URL <- paste0("<a href=",
                  paste0("'", method_definition$url),
                  paste0("'><img src=", png_logo, url_size, "></a>"))
      }else{
        URL <- paste(paste0("<a href=",
                     paste0("'", method_definition$url),
                     paste0("'><img src=", png_logo, url_size, "></a>")),
               paste0("<a href=",
                  paste0("'", method_definition$authors$github),
                  paste0("'><img src=", png_logo2, url_size2, "></a>")))
      }
    }else{
      URL <- paste0("<a href=",
                  paste0("'", method_definition$url),
                  paste0("'><img src=", png_logo, url_size, "></a>"))
    }

  }else{
    URL <- ""
  }

  ## Journal
  if(is.null(method_definition$manuscript$journal)){
    Journal <- ""
  }else{
    Journal <- method_definition$manuscript$journal
  }

  method_summary <- tibble::tibble(Method = x,
                                   Language = Language,
                                   URL = URL,
                                   DOI = DOI,
                                   Journal = Journal)
  method_summary
})
method_table <- plyr::arrange(method_table, Method)
method_table <- tibble::add_column(method_table, ID=1:nrow(method_table), .before = "Method")
knitr::kable(method_table, align = c("clcccl"))

New methods

We are glad to add new simulation methods if some methods are innovative and creative that many users commonly used. If you have the requirements, please tell me by email (duohongrui@cqnu.edu.cn) or raise an issue for that.

Citation

Duo H, Li Y, Lan Y, et al. Systematic evaluation with practical guidelines for single-cell and spatially resolved transcriptomics data simulation under multiple scenarios. Genome Biology, 2024, 25(1): 145.



duohongrui/simmethods documentation built on June 17, 2024, 10:49 a.m.