-
Notifications
You must be signed in to change notification settings - Fork 26
/
README.Rmd
executable file
·114 lines (86 loc) · 5.58 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
---
output:
github_document:
html_preview: FALSE
editor_options:
chunk_output_type: console
---
<!-- README.md is generated from README.Rmd. Please edit that file -->
```{r, echo = FALSE, message = FALSE, error = FALSE, warning = FALSE}
library(tidyverse)
library(dynmethods)
data("methods")
methods <- methods %>% filter(!method_source %in% c("control")) # controls are not actual TI methods
```
<!-- badges: start -->
[![R-CMD-check](https://github.com/dynverse/dynmethods/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/dynverse/dynmethods/actions/workflows/R-CMD-check.yaml)
[![Codecov test coverage](https://codecov.io/gh/dynverse/dynmethods/branch/master/graph/badge.svg)](https://app.codecov.io/gh/dynverse/dynmethods?branch=master)
[**ℹ️ Tutorials**](https://dynverse.org)
[**ℹ️ Reference documentation**](https://dynverse.org/reference/dynmethods)
<!-- badges: end -->
<br><img src="man/figures/logo.png" align="right" />
# A collection of `r nrow(methods)` trajectory inference methods
This package contains wrappers for trajectory inference (TI) methods. The output of each method is transformed into a common trajectory model using [dynwrap](https://www.github.com/dynverse/dynwrap), which allows easy [visualisation and comparison](https://www.github.com/dynverse/dyno). All methods are wrapped inside a docker container, which avoids dependency issues, and also makes it easy to add a new method.
**To run any of these methods, interpret the results and visualise the trajectory, see the [dyno package](https://www.github.com/dynverse/dyno).**
To include your own method, feel free to send us a [pull request](https://github.com/dynverse/dynmethods/pulls) or create an [issue](https://github.com/dynverse/dynmethods/labels/new%20method). The easiest way to add a new method is [through a docker container](https://dynverse.github.io/dynwrap/articles/create_ti_method_docker.html), so that dependencies don't pose any issues for other users, but we also welcome methods [directly wrapped inside of R](https://dynverse.github.io/dynwrap/articles/create_ti_method_r.html). The main benefit of adding your own method is that users can easily compare your method with others and [visualise/interpret the output](https://www.github.com/dynverse/dyno). Moreover, your method will be compared to other methods within [the TI method evaluation](https://doi.org/10.1101/276907).
## List of included methods
```{r, echo = FALSE, warning = FALSE, error = FALSE, message = FALSE, results='asis'}
df <-
methods %>%
arrange(method_name) %>%
mutate(
docker_url = paste0("https://hub.docker.com/r/", container_docker),
docker_svg = paste0("https://img.shields.io/docker/v/", container_docker, "/latest?logo=docker"),
github_actions_svg = paste0("https://github.com/", container_docker, "/workflows/make/badge.svg"),
github_actions_link = paste0("https://github.com/", container_docker, "/actions?query=workflow%3Amake"),
Method = method_name,
Doi = map_chr(manuscript_doi, function(do) if (!is.null(do) && !is.na(do)) paste0("<a href='https://doi.org/", do, "'><img src='man/figures/doi_logo.png' height='16'></a>") else "" ),
Docker = paste0("[![Version](", docker_svg, ")](", docker_url, ")"),
Code = paste0("[code](", container_url, ")"),
Status = paste0("[![Build status](", github_actions_svg, ")](", github_actions_link, ")"),
Authors = map_chr(method_authors, function(authors) {
if (length(authors) > 0) {
first <- authors[[1]]
if (length(first) == 1 && is.na(first)) {
return("")
}
map_chr(authors, function(author) {
if (is.null(author$family)) {
author$family <- ""
}
author_text <- paste0(author$given, " ", author$family)
if (!is.null(author$ORCID)) {
author_text <- paste0(author_text, " <a href='https://orcid.org/", author$ORCID, "'><img src='man/figures/orcid_logo.svg' height='16'></a>")
}
if (!is.null(author$github)) {
author_text <- paste0(author_text, " <a href='https://github.com/", author$github, "'><img src='man/figures/github_logo.png' height='16'></a>")
}
author_text %>% paste0("<sub>", ., "</sub>")
}) %>% paste0(collapse = "<br>")
} else {
""
}
})
)
df %>%
select(Method, Doi, Code, Docker, Status, Authors) %>%
knitr::kable()
```
## Sources
We used following resources to get a (hopefully exhaustive) list of all TI methods:
[Anthony Gitter's single-cell-pseudotime](https://github.com/agitter/single-cell-pseudotime) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1297423.svg)](https://doi.org/10.5281/zenodo.1297423)
[Sean Davis' awesome-single-cell](https://github.com/seandavi/awesome-single-cell)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1294021.svg)](https://doi.org/10.5281/zenodo.1294021)
[Luke Zappia's scRNA-tools](https://www.scrna-tools.org)
[![DOI](https://zenodo.org/badge/DOI/10.1101/206573.svg)](https://doi.org/10.1101/206573)
## New methods
Some methods are not wrapped (yet). Check out the [issues](https://github.com/dynverse/dynmethods/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Anew_method) for an overview
## Latest changes
Check out `news(package = "dynwrap")` or [NEWS.md](NEWS.md) for a full list of changes.
<!-- This section gets automatically generated from NEWS.md -->
```{r news, echo=FALSE, results="asis"}
cat(dynutils::recent_news())
```
## Dynverse dependencies
<!-- Generated by "update_dependency_graphs.R" in the main dynverse repo -->
![](man/figures/dependencies.png)