TSCAN: Pseudo-time reconstruction and evaluation in single-cell RNA-seq analysis
单细胞分析工具(TSCAN)是为更好地支持单细胞RNA-seq分析中伪时间重构而开发的软件工具。TSCAN使用基于集群(cluster-based )的最小生成树(MST)方法对单元格进行排序。首先将单元聚类分群,然后构造一个MST来连接每群的中心。将每个细胞投射到树形上得到伪时间,利用细胞的有序序列研究基因表达随伪时间的动态变化。MST构造前的聚类降低了树空间的复杂度(也节约了计算资源),这通常会改善cell的排序。它还允许用户根据先验知识方便地调整排序。TSCAN有一个图形用户界面(GUI)来支持数据可视化和用户交互。此外,还建立了定量方法来客观评价和比较不同的伪时间重建方法。
TSCAN概述:
(A -b)一个玩具例子,说明基于细胞的MST的局限性。在这里,细胞(蓝色圆圈)被放置在一个二维空间中,真正的生物时间是自上而下运行的。连接单元格的MST不是惟一的。(A)和(B)都是可能的解决办法,(B)更符合事实。然而,在现实中,随机测量噪声可能会将标记为“*”的单元格从箭头和虚线所示的其他单元格中移开。因此,(B)不再是MST。另一方面,(A)中的MST并不反映细胞的真实顺序。(C)如果先将类似的细胞分组成集群,然后构建一个MST来连接集群中心,就可以找到真正的时间轴。(D) TSCAN首先构建基于集群的MST(例如,以5个不同颜色编码的细胞集群为例;数字表示集群中心)。树可以有多个路径(例如1-2-3-4或1-2-3-5)。TSCAN通过将每个单元投射到树的边缘来对每个路径上的单元进行排序。(E)保留的主成分的数目是通过找出由两条线(虚线)组成的最佳分段线性拟合来确定的。
我们来走一个例子:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("TSCAN")
## ------------------------------------------------------------------------
library(TSCAN)
data(lpsdata)
head(lpsdata)
dim(lpsdata)
class(lpsdata)
# Load the PBMC dataset
library(Seurat)
pbmc.data <- Read10X(data.dir = "D:\\Users\\Administrator\\Desktop\\RStudio\\single_cell\\filtered_gene_bc_matrices\\hg19")
# Initialize the Seurat object with the raw (non-normalized data).
pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.features = 200)
seuratdf<-as.matrix(pbmc@assays$RNA@counts)
head(seuratdf)
dim(seuratdf)
rownames(lpsdata)
class(seuratdf)
preprocess the raw single-cell data
procdata <- preprocess(seuratdf,cvcutoff = 0)
dim(procdata)
Perform model-based clustering on expression values:
lpsmclust <- exprmclust(procdata)
fitting ...
|========================================================================================================================================| 100%
plotmclust(lpsmclust,show_cell_names = F)
Construct TSCAN order after exprmclust
lpsorder <- TSCANorder(lpsmclust)
lpsorder
testing differentially expressed genes
diffval <- difftest(procdata,lpsorder)
#Selected differentially expressed genes under qvlue cutoff of 0.05
head(row.names(diffval)[diffval$qval < 0.05])
[1] "RPL22" "RPL11" "SH3BGRL3" "CD52" "LAPTM5" "YBX1"
STAT2expr <- log2(seuratdf["RPL11",]+1)
singlegeneplot(STAT2expr, TSCANorder(lpsmclust,flip=TRUE,orderonly=FALSE))
交互操作:
TSCANui()# 打开交互界面
网友评论