library(tidyverse) library(dynmethods) data("methods") methods <- methods %>% filter(!method_source %in% c("control")) # controls are not actual TI methods
ℹ️ Tutorials ℹ️ Reference documentation
r nrow(methods)
trajectory inference methodsThis package contains wrappers for trajectory inference (TI) methods. The output of each method is transformed into a common trajectory model using dynwrap, which allows easy visualisation and comparison. 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.
To include your own method, feel free to send us a pull request or create an issue. The easiest way to add a new method is through a docker container, so that dependencies don't pose any issues for other users, but we also welcome methods directly wrapped inside of R. The main benefit of adding your own method is that users can easily compare your method with others and visualise/interpret the output. Moreover, your method will be compared to other methods within the TI method evaluation.
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()
We used following resources to get a (hopefully exhaustive) list of all TI methods:
Anthony Gitter's single-cell-pseudotime
Sean Davis' awesome-single-cell
Some methods are not wrapped (yet). Check out the issues for an overview
Check out news(package = "dynwrap")
or NEWS.md for a full list of changes.
cat(dynutils::recent_news())
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.