| Version 2 (modified by , 5 years ago) ( diff ) |
|---|
Making diffusion maps with Slingshot
You can either assigned cells to clusters based on | 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 in UMAP, as mentioned in | 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
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 ( | slingshot github page )
library(Polychrome)
library(ggbeeswarm)
library(ggthemes)
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:
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)
# 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"))
