== Making diffusion maps with Slingshot == You can either assigned cells to clusters based on [https://bioconductor.org/packages/release/bioc/vignettes/slingshot/inst/doc/vignette.html | Slingshot protocol ] or make a single cell object, i.e. from the Seurat object. Example commands for convert to single cell object from Seurat. * **Making a single cell object from a Seurat object** {{{ library(Seurat) library(SingleCellExperiment) sce <- as.SingleCellExperiment(seuratObject) #this has the cell classification table(sce$ident) }}} == Calculate pseudotime and lineages with Slingshot == You can use either PCA/UMAP/TSNE for reduction. Since Slingshot is designed for cases in which cells fall along a continuous trajectory, it's better to use PCA if clearly discrete clusters presented in UMAP, as mentioned in [https://github.com/kstreet13/slingshot/issues/43 | Slingshot github page] {{{ sce <- slingshot(sce, clusterLabels = ident, reducedDim = "PCA", allow.breaks = FALSE) # get the lineages: lnes <- getLineages(reducedDim(sce,"PCA"), sce$ident) lnes@lineages }}} If you know the which cluster is the origin ( last cluster), you can assign starting cluster/last cluster: {{{ sce <- slingshot(sce, clusterLabels = ident, reducedDim = "PCA", allow.breaks = FALSE, start.clus="2") # get the lineages: lnes <- getLineages(reducedDim(sce2,"PCA"), sce2$ident, start.clus = "2") lnes@lineages }}} == Visualize the pseudotime or lineages == You can draw plot with first pseudotime as x-axis, and y-axis is the cell type. If you have multiple lineages, cells that were identified as being specific to Lineage 2 will have NA values for slingPseudotime_1 ( [https://github.com/kstreet13/slingshot/issues/42 | slingshot github page] ) {{{ library(Polychrome) library(ggbeeswarm) library(ggthemes) # this define the cluster color. You can change it with different color scheme. my_color <- createPalette(length(levels(sce$ident)), c("#010101", "#ff0000"), M=1000) names(my_color) <- unique(as.character(sce$ident)) slingshot_df <- data.frame(colData(sce)) # re-order y-axis for better figure: This should be tailored with your own cluster names # slingshot_df$ident = factor(slingshot_df$ident, levels=c(4,2,1,0,3,5,6)) ggplot(slingshot_df, aes(x = slingPseudotime_1, y = ident, colour = ident)) + geom_quasirandom(groupOnX = FALSE) + theme_classic() + xlab("First Slingshot pseudotime") + ylab("cell type") + ggtitle("Cells ordered by Slingshot pseudotime")+scale_colour_manual(values = my_color) }}} To plot lineages along the cells in PCAs: {{{ plot(reducedDims(sce)$PCA, col = my_color[as.character(sce$ident)], pch=16, asp = 1) legend("bottomleft",legend = names(my_color[levels(sce$ident)]), fill = my_color[levels(sce$ident)]) lines(SlingshotDataSet(lnes), lwd=2, type = 'lineages', col = c("black")) }}}