前言
在之前的两篇推文;SCENT:单细胞层面干性评估的扛把子,CCAT:SCENT的形象代言者,干性分析新秀中,我们已经介绍了两版SCENT的功能框架,今天Immugent就来通过代码实操来展示在实际数据分析中如何使用SCENT。
在SCENT的实际分析中,单细胞分化能力的估计可以通过两种不同的方式完成:(1)使用SCENT算法,该算法根据基因网络上扩散过程的熵来近似评估细胞的分化潜力,也称为信号熵率;(2)另一种就是通过SCENT的升级版,也就是称为CCAT来实现对大数据集分化潜力的快速评估。后一种方法使用的是与SCENT相同的PPI网络,但只使用网络中基因的连通性和连接程度。
作者建议使用的基因网络是蛋白质-蛋白质相互作用(PPI)网络,因为更有效的细胞倾向于过度表达蛋白质网络枢纽。事实上,尽管PPI网络只是底层信号网络的表征,但它忽略了时间、空间和生物学背景,而且SCENT是使用测量到的细胞基因表达谱来提供生物学背景,实际上是根据边缘对中蛋白质的高表达程度来加权PPI网络中的边缘。
代码实操
SCENT分析的第一步就是准备PPI基因网络,在这里使用的特定PPI网络来自于Pathway Commons,它是一个整合资源,将来自几个不同来源的PPI整理在一起。特别地,该网络是通过整合以下来源构建的:人类蛋白质参考数据库(HPRD),国家癌症研究所自然途径相互作用数据库(NCI-PID),相互作用组(完整)和分子相互作用数据库(MINT)。
library(SCENT)
data(net13Jun12)
print(dim(net13Jun12.m))
然后载入示例数据
data(dataChu)
print(dim(scChu.m))
lscChu0.m <- log2(scChu.m+1)
range(lscChu0.m)
Differentiation potency estimation using Signaling Entropy Rate (SR)
integ.l <- DoIntegPPI(exp.m = lscChu.m, ppiA.m = net13Jun12.m)
str(integ.l)
sr.o <- CompSRana(integ.l, local = FALSE, mc.cores = 4)
boxplot(srChu.v ~ phenoChu.v, main = "SR potency estimates", xlab = "Cell Type", ylab = "SR")
Differentiation potency estimation using CCAT
ccat.v <- CompCCAT(exp = lscChu0.m, ppiA = net13Jun12.m)
boxplot(ccat.v ~ phenoChu.v, main = "SR potency estimates", xlab = "Cell Type", ylab = "SR")
Infer the potency states in a cell population
pot.o <- InferPotencyStates(potest.v=srChu.v, pheno.v = phenoChu.v)
pot.o$distr
Integration with diffusion maps to infer differentiation trajectories
data(dataLiver)
dim(scLiver.m)
summary(factor(phenoLiver.v))
ccat.v <- CompCCAT(exp = scLiver.m, ppiA = net13Jun12.m)
boxplot(ccat.v ~ names(phenoLiver.v),xlab="Embryonic stages",ylab="CCAT",col=colorLiver.v)
inf.o <- InferDMAPandRoot(pot=ccat.v, exp = scLiver.m, kDMAP=30, pctop=0.05)
plot(inf.o$dc[,1],inf.o$dc[,2],col=colorLiver.v[phenoLiver.v],xlab="DC1",ylab="DC2",axes=FALSE,main="Cells colored by timepoint")
points(inf.o$dc[inf.o$root,1],inf.o$dc[inf.o$root,2],pch=22,col="red",cex=2)
text(inf.o$dc[inf.o$root,1],inf.o$dc[inf.o$root,2],label="Root",font=2,col="red",pos=1)
par(xpd=TRUE)
legend(x=inf.o$dc[inf.o$root,1],y=0.1,levels(factor(names(phenoLiver.v))),pch=21,col=colorLiver.v,cex=.75)
plot(inf.o$dc[,1],inf.o$dc[,2],col=inf.o$color,xlab="DC1",ylab="DC2",axes=FALSE,main="Cells colored by CCAT");
points(inf.o$dc[inf.o$root,1],inf.o$dc[inf.o$root,2],pch=22,col="red",cex=2);
text(inf.o$dc[inf.o$root,1],inf.o$dc[inf.o$root,2],label="Root",font=2,col="red",pos=1)
par(xpd=TRUE);
legend(x=inf.o$dc[inf.o$root,1],y=0.1,c("High","Low"),pch=21,col=c("black","skyblue"))
dptCCAT.o <- destiny::DPT(inf.o$dmap,tips=inf.o$root);
destiny::plot(dptCCAT.o,dcs=1:2,col_by="dpt",paths_to=1:3,pch=23,col_path=marray::maPalette(low="darkgreen",mid="green",high="yellow",k=3),lwd=3)
因此,有两个主要的轨迹开始于组细胞,一个轨迹描述分化为肝细胞,另一个描述分化为胆管细胞,有关具体的生物学知识解读参见文章(A. E. Teschendorff and Wang 2020).
说在最后
SCENT的代码教程全部都是使用的示例数据,非常方便大家直接进行复现。然而,一些细心的小伙伴可能会问:对于小鼠和人的单细胞数据,SCENT都能分析吗?答案是肯定的,虽然作者只提供了人的PPI基因互作网络,但是我们自己在分析小鼠的数据时,可以进行同源基因的转化,从而可以用于对小鼠单细胞数据的分析。此外,如果想以后每次都不用将基因ID转化为Symbol进行分析,我们可以直接将作者提供的PPI基因互作网络给注释成人的Symbol矩阵,那么以后就可以直接使用啦。
好啦,本期分享到这里就结束了,我们下期再会~~