knitr::opts_chunk$set(fig.path=".readme_files/", warning=FALSE, message=FALSE, error=FALSE, echo = TRUE)

ℹ️ Tutorials     ℹ️ Reference documentation

Common visualisation tools for single-cell trajectories

Installation

devtools::install_github("dynverse/dynplot")

On linux, udunits2 has to be installed:

Usage

The package provides different ways to plot both the topology and cellular properties of a trajectory:

library(dplyr)
library(dynplot)
library(dynutils)
library(dynwrap)
library(tidyverse)

library(patchwork)

data(example_bifurcating)
trajectory <- example_bifurcating

trajectory <- trajectory %>% add_root()
grouping <- trajectory$prior_information$groups_id
groups <- tibble(dynwrap::group_onto_nearest_milestones(trajectory)) %>% 
  mutate(color=dynplot:::milestone_palette_list$auto(n()))
features_oi <- apply(as.matrix(trajectory$counts), 2, sd) %>% sort() %>% names() %>% tail(10)
feature_oi <- features_oi[[10]]
empty <- ggplot() + theme_void()
question <- empty + geom_text(aes(0, 0, label="????"))
unavailable <- empty + geom_text(aes(0, 0, label="----"))

title <- list(
  dynplot:::empty_plot(), 
  # empty + geom_label(aes(0, 0, label="Topology")),
  empty + geom_label(aes(0, 0, label="Ordering")),
  empty + geom_label(aes(0, 0, label="Grouping/clustering")),
  empty + geom_label(aes(0, 0, label="Expression of \n a single gene")), 
  empty + geom_label(aes(0, 0, label="Pseudotime"))
)

dendro <- list(
  empty + geom_label(aes(0, 0, label="Dendrogram")),
  # plot_dendro(trajectory),
  plot_dendro(trajectory, "milestone"),
  plot_dendro(trajectory, grouping=grouping, groups=groups),
  plot_dendro(trajectory, feature_oi=feature_oi),
  plot_dendro(trajectory, "pseudotime")
)

onedim <- list(
    empty + geom_label(aes(0, 0, label="Onedim")),
    # plot_onedim(trajectory),
    plot_onedim(trajectory, "milestone"),
    plot_onedim(trajectory, grouping=grouping, groups=groups),
    plot_onedim(trajectory, feature_oi=feature_oi),
    plot_onedim(trajectory, "pseudotime")
  )

graph <- list(
  empty + geom_label(aes(0, 0, label="Graph")),
  # plot_graph(trajectory),
  plot_graph(trajectory, "milestone"),
  plot_graph(trajectory, grouping=grouping, groups=groups),
  plot_graph(trajectory, feature_oi=feature_oi),
  plot_graph(trajectory, "pseudotime")
)

dimred <- list(
  empty + geom_label(aes(0, 0, label="Dimensionality reduction")),
  # plot_dimred(trajectory),
  plot_dimred(trajectory, "milestone"),
  plot_dimred(trajectory, grouping=grouping, groups=groups),
  plot_dimred(trajectory, feature_oi=feature_oi),
  plot_dimred(trajectory, "pseudotime")
)

wrap_plots(
  c(title, dendro, onedim, graph, dimred),
  nrow=5,
  byrow=TRUE
) & theme(legend.position = "none")

And to plot the expression and feature importances of many genes along the trajectory

cell_feature_importance <- dynfeature::calculate_cell_feature_importance(trajectory %>% dynwrap::add_waypoints())
plot_heatmap(trajectory, grouping = trajectory$prior_information$grouping_assignment)

Latest changes

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

dynutils::update_news()
cat(dynutils::recent_news())

Dynverse dependencies



dynverse/dynplot2 documentation built on July 2, 2019, 12:18 a.m.