library(tidyverse)
library(dynmethods)

data("methods")
methods <- methods %>% filter(!method_source %in% c("control")) # controls are not actual TI methods

R-CMD-check Codecov test coverage ℹ️ Tutorials     ℹ️ Reference documentation


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, 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.

List of included methods

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 DOI

Sean Davis' awesome-single-cell DOI

Luke Zappia's scRNA-tools DOI

New methods

Some methods are not wrapped (yet). Check out the issues for an overview

Latest changes

Check out news(package = "dynwrap") or NEWS.md for a full list of changes.

cat(dynutils::recent_news())

Dynverse dependencies



dynverse/dynmethods documentation built on Jan. 18, 2024, 4:44 a.m.