Diffusion Pseudo Time (DPT) is a pseudo time metric based on the transition probability of a diffusion process (Haghverdi et al. 2016).
DPT in addition to its primary function of creating
DiffusionMaps from data.
library(destiny) # load destiny… data(guo) # …and sample data library(gridExtra) # Also we need grid.arrange
DPT is in practice independent of Diffusion Maps:
par(mar = rep(0, 4)) igraph::graph_from_literal( graph <--+ 'transition probabilities' -+ DiffusionMap, data 'transition probabilities' -+ DPT) plot( layout = igraph::layout_as_tree, graph, vertex.size = 50, vertex.color = 'transparent', vertex.frame.color = 'transparent', vertex.label.color = 'black')
However in order not to overcomplicate things, in destiny, you have to create
DPT objects from
(If you really only need the DPT, skip Diffusion Component creation by specifying
n_eigs = 0)
## Warning: as(<dsCMatrix>, "dsTMatrix") is deprecated since Matrix 1.5-0; do as(., ## "TsparseMatrix") instead
The resulting object of a call like this will have three automatically chosen tip cells. You can also specify tip cells:
set.seed(4) DPT(dm, tips = sample(ncol(guo), 3L))dpt_random <-
Plotting without parameters results in the DPT of the first root cell:
TODO: wide plot
grid.arrange(plot(dpt), plot(dpt_random), ncol = 2)
Other possibilities include the DPT from the other tips or everything supported by
TODO: wide plot
grid.arrange( plot(dpt, col_by = 'DPT3'), plot(dpt, col_by = 'Gata4', pal = viridis::magma), ncol = 2 )
DPT object also contains a clustering based on the tip cells and DPT, and you can specify where to draw paths from and to:
plot(dpt, root = 2, paths_to = c(1,3), col_by = 'branch')
You can further divide branches. First simply plot branch colors like we did above, then identify the number of the branch you intend to plot, and then specify it in a subsequent
plot call. In order to see the new branches best, we specify a
dcs argument that visually spreads out out all four branches.
plot(dpt, col_by = 'branch', divide = 3, dcs = c(-1,-3,2), pch = 20)
Haghverdi, Laleh, Maren Büttner, F Alexander Wolf, Florian Buettner, and Fabian J Theis. 2016. “Diffusion Pseudotime Robustly Reconstructs Lineage Branching.” Nature Methods, August. https://doi.org/10.1038/nmeth.3971.