-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
142 lines (121 loc) · 5.33 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
---
output:
github_document:
html_preview: FALSE
editor_options:
chunk_output_type: console
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, warning = FALSE, error = FALSE, message = FALSE)
```
```{r echo=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)
}
```
```{r}
methods <- simmethods::get_method()
```
<img src="man/figures/simmethods_logo.png" align="right" width = "193px" height="223px"/>
# 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
```{r}
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.