18.5 Comparing the different trajectories

All of these trajectories show very similar results. We can quantify the overlap by looking at the correlation of the pseudo-time positions of the cells.

First, we will make a data.frame containing the corresponding information

dL <- data.frame(
    ArchR = projHeme5$LymphoidU, 
    SlingShot = projHeme5$Slingshot_Lymphoid.Curve1, 
    Monocle = projHeme5$Monocle_Lymphoid_solo, 
    Groups = projHeme5$Clusters2
)

Then, we can look at the correlation across these different approaches.

corL <- cor(dL[, 1:3], use="complete.obs")
corL
##               ArchR SlingShot   Monocle
## ArchR     1.0000000 0.9956354 0.9234801
## SlingShot 0.9956354 1.0000000 0.9128725
## Monocle   0.9234801 0.9128725 1.0000000

We can also plot one-to-one correlation plots to show the pairwise comparisons.

lymphoid_cells <- c("Progenitor","CLP","PreB","B")
dL <- dL[!is.na(rowSums(dL[,1:3])), ,drop=FALSE] #Remove NA rows for cells not in trajectory
p1 <- ggPoint(dL[,1], dL[,2], paste0(dL[,"Groups"]), pal = paletteDiscrete(projHeme5$Clusters2)[lymphoid_cells], xlabel="ArchR", ylabel="Sling", labelAsFactors=F, labelMeans=F)
p2 <- ggPoint(dL[,1], dL[,3], paste0(dL[,"Groups"]), pal = paletteDiscrete(projHeme5$Clusters2)[lymphoid_cells], xlabel="ArchR", ylabel="Mon",labelAsFactors=F, labelMeans=F)
p3 <- ggPoint(dL[,2], dL[,3], paste0(dL[,"Groups"]), pal = paletteDiscrete(projHeme5$Clusters2)[lymphoid_cells], xlabel="Sling", ylabel="Mon",labelAsFactors=F, labelMeans=F)
ggAlignPlots(p1,p2,p3,type="h")

In most cases, ArchR and Slingshot agree more closely than either does with Monocle3, but this is not altogether surprising given the different methodologies. This, of course, does not mean that one is correct and the others are not but serves to accent that they are slightly different.