说在前面
单细胞拟时序分析(Pseudotime)是揭示不同细胞之间分化轨迹的重要方式,在很多单细胞测序为主的研究中我们都能见到不同展示方式的轨迹分析。截止到目前,用于拟时序分析的软件已经有很多了,其中最有名的就是Monocle,但是使用这个软件进行轨迹推断不能自动找出起点,需要有先验的生物学知识做支撑,而且都是流程化分析。今天,Immugent就来介绍另一款常用的轨迹分析软件:TSCAN。
image.png
这个软件早在2016年就发表在Nucleic Acids Research杂志上,不仅有R包,还有在线的网页版工具(https://zhiji.shinyapps.io/TSCAN/),可谓是非常亲民了。TSCAN相对于其它同类型软件来说最大的优点就是可以使用自己的降维和细胞聚类结果。这种高度的灵活性对于scRNA-seq数据至关重要,因为目前还没有处理数据的通用最佳方法。
因为Immugent水平有限,只能粗浅的介绍一下TSCAN最基本的使用方法,有算法开发能力的小伙伴还是下载原文自行解读比较好。
代码实现
我这里使用的是之前的一个单细胞数据集,大家实操时可以使用自己的单细胞数据进行验证。
library(SingleCellExperiment)
library(TSCAN)
library(M3Drop)
library(monocle)
library(destiny)
library(SLICER)
library(ouija)
library(scater)
library(ggplot2)
library(ggthemes)
library(ggbeeswarm)
library(corrplot)
# 读取数据
PT_SCE <- readRDS("demo.rds")
PT_SCE$cell_type2 <- factor(
PT_SCE$cell_type2,
levels = c("zy", "early2cell", "mid2cell", "late2cell",
"4cell", "8cell", "16cell", "earlyblast",
"midblast", "lateblast")
)
cellLabels <- PT_SCE$cell_type2
table(cellLabels)
PT <- counts(PT_SCE)
colnames(PT) <- cellLabels
PT_SCE <- runPCA(PT_SCE)
plotPCA(PT_SCE, colour_by = "cell_type2")
image.png
TSCAN非常容易实操,就几个常用函数,下面演示时,小编使用的是所有表达基因,当然大家也可以挑选基因进行拟时序分析。
procPT <- TSCAN::preprocess(PT)
colnames(procPT) <- 1:ncol(PT)
PTclust <- TSCAN::exprmclust(procPT,
clusternum = 10)
TSCAN::plotmclust(PTclust)
PTorderTSCAN <- TSCAN::TSCANorder(PTclust,
orderonly = FALSE,flip = T)
head(PTorderTSCAN,10)
dim(PTorderTSCAN)
pseudotime_order_tscan <- as.character(PTorderTSCAN$sample_name)
PT_SCE$pseudotime_order_tscan <- NA
PT_SCE$pseudotime_order_tscan[as.numeric(PTorderTSCAN$sample_name)] <-
PTorderTSCAN$Pseudotime
image.png
TSCAN首先会基于正态分布混合的mclust对细胞进行聚类;然后,构建最小的生成树以连接群集。这种处理方式特别适合10x平台的数据,因为测序深度不足会有很多基因表达为0。最后,连接最多簇数的该树的分支作为确定拟时序分析的主分支。
轨迹构建完成了,那么接下来就来看一下效果如何。
cellLabels[PTclust$clusterid == 10]
ggplot(as.data.frame(colData(PT_SCE)),
aes(x = pseudotime_order_tscan,
y = cell_type2, colour = cell_type2)) +
geom_quasirandom(groupOnX = FALSE) +
scale_color_tableau() + theme_classic() +
xlab("TSCAN pseudotime") + ylab("Timepoint") +
ggtitle("Cells ordered by TSCAN pseudotime")
plotExpression(PT_SCE,
"Eomes",
x = "pseudotime_order_tscan",
colour_by = "cell_type2",
show_violin = FALSE,
show_smooth = TRUE)
image.png
image.png
从上面的结果看,这个分化轨迹还是相当准确的。
小结
TSCAN这个软件虽然没有Monocle火热,但是也有自身的优点。但是截止到目前这个软件被引用的并不多,可能一部分原因是作者没有给出很好的教程吧。
好啦,本次分享到这里就结束了,欢迎有想法的小伙伴通过后台与我们联系。















网友评论