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
<- data.frame(
dL 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.
<- cor(dL[, 1:3], use="complete.obs")
corL
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.
<- c("Progenitor","CLP","PreB","B")
lymphoid_cells <- dL[!is.na(rowSums(dL[,1:3])), ,drop=FALSE] #Remove NA rows for cells not in trajectory
dL <- ggPoint(dL[,1], dL[,2], paste0(dL[,"Groups"]), pal = paletteDiscrete(projHeme5$Clusters2)[lymphoid_cells], xlabel="ArchR", ylabel="Sling", labelAsFactors=F, labelMeans=F)
p1 <- ggPoint(dL[,1], dL[,3], paste0(dL[,"Groups"]), pal = paletteDiscrete(projHeme5$Clusters2)[lymphoid_cells], xlabel="ArchR", ylabel="Mon",labelAsFactors=F, labelMeans=F)
p2 <- ggPoint(dL[,2], dL[,3], paste0(dL[,"Groups"]), pal = paletteDiscrete(projHeme5$Clusters2)[lymphoid_cells], xlabel="Sling", ylabel="Mon",labelAsFactors=F, labelMeans=F)
p3 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.