DPT:diffusion pseudotime||扩散伪时间重
Haghverdi L, B ttner M, Wolf FA, Buettner F, Theis FJ. Diffusion pseudotime robustly reconstructs lineage branching. Nat. Methods 2016, 13: 845-8.
分化细胞的时间顺序本质上隐含在它们的单细胞表达产物中。文章描述了一种有效的方法来根据扩散伪时间(diffusion pseudotime (DPT))来估计这个阶数,DPT利用扩散样随机游动来测量细胞间的转移。我们的DPT软件实现可以重建细胞的发育进程,识别瞬态或亚稳态、分支决定和分化终点。
基因表达谱可以为基因如何调控发育过程提供重要见解。然而,遗传调控的内在随机性和外部影响往往导致细胞强烈的异质性和不同步性。与传统分析方法相比,单细胞分析技术允许对细胞调控状态 进行系统观察,因为它们在不同的发育阶段捕获细胞 。由于细胞在测量过程中被破坏,因此必须从静态快照数据推断基因动力学和细胞时序。这一般是通过根据表达相似性对细胞进行排序来实现的,这就是所谓的伪时间排序。现有的(2016)伪时间算法在应用于具有分支谱系的数据时面临稳健性和可扩展性方面的挑战。
扩散假时间 DPT 是一种基于随机行走的距离,它是基于扩散映射空间中的简单欧氏距离计算的。扩散图是恢复高维观测的低维结构的非线性方法 。通过定义坐标作为转换矩阵 的主要特征向量,该矩阵描述了分化不同阶段细胞数据点之间的随机游走。扩散图大大降低了噪声,能够表示分枝数据,但至今仅用于可视化 。我们的主要贡献是在这个空间 (DPT) 上的一个测量的推导,它适合恢复数据下面的生物过程的动力学,特别地,从单细胞数据中识别发展轨迹。将 DPT定义为通过比较细胞向不同细胞命运分化的概率对细胞进行排序。
图 | 扩散假时间揭示了单细胞水平上的时间排序和细胞轨迹。(a) 扩散转移矩阵 Txy 是通过计算细胞 x 和 y 表达水平上局部核的重叠而构建的 (1)。扩散假时间 dpt (x,y) 近似表示映射流形 (2) 上 x 和 y 之间的测地线距离(geodesic distance )。分支点被确定为与分支末端的反相关距离相关的点 (3)。(b) 应用 DPT 对 3934 个单细胞在早期造血过程中的 42 个基因的单细胞 qPCR 进行分析 ,从原始条纹 (PS)、神经板 (NP)、头部褶皱 (HF)、4 个体节 GFP 阴性 (4SGfi) 和 4 个体节 GFP 阳性 (4SG) 进行分类。DPT 识别内皮分支 1 (4SGfi) 和红系分支 2 (4SG)(下图中的蓝色细胞)。(c) 两个分支中基因 Erg 和 Ikaros 的动力学。黑线表示 50 个相邻单元格的移动平均值。红色垂直线表示分支点。(d) 基因表达热图(平滑超过 50 个相邻细胞),细胞按 DPT 排序,分支和基因按第一次主要变化排序(见补充说明,第 2 节),用黑色三角形表示(向上:激活,向下:失活)。底部饼图显示了处于四种亚稳态的细胞分数(亚稳态群体是高密度 DPT 区域,在饼图上方以黑色水平线表示)。library(Seurat)
library(destiny)
library(Biobase)
data(guo)
> guo
ExpressionSet (storageMode: lockedEnvironment)
assayData: 48 features, 428 samples
element names: exprs
protocolData: none
phenoData
sampleNames: 10 11 ... 442 (428 total)
varLabels: Cell num_cells
varMetadata: labelDescription
featureData: none
experimentData: use 'experimentData(object)'
Annotation:
dm <- DiffusionMap(guo)
?DPT
dpt <- DPT(dm,tips=01)
plot(dpt)
p1<-plot(dpt, col_by = 'DPT3')
p2<-plot(dpt, col_by = 'Gata4', pal = viridis::magma)
p3<-plot(dpt, root = 2, paths_to = c(1,3), col_by = 'branch')
CombinePlots(plots = list(p1, p2,p3))
plot(dpt, col_by = 'branch', divide = 3, dcs = c(-1,-3,2), pch = 20)
我就想着用我的pbmc数据试一下啊。
pbmc <- readRDS(file = "D:\\Users\\Administrator\\Desktop\\Novo周运来\\SingleCell\\scrna_tools/pbmc3k_final.rds")
pd <- new('AnnotatedDataFrame', data = as.data.frame(pbmc@meta.data))
fData <- data.frame(gene_short_name = row.names(data), row.names = row.names(data))
fd <- new('AnnotatedDataFrame', data = fData)
myExpressionSet <- ExpressionSet(assayData=data,
phenoData=pd,
annotation="yunlai")
myExpressionSet
ExpressionSet (storageMode: lockedEnvironment)
assayData: 13714 features, 2638 samples
element names: exprs
protocolData: none
phenoData
sampleNames: AAACATACAACCAC AAACATTGAGCTAC ... TTTGCATGCCTCAC (2638 total)
varLabels: orig.ident nCount_RNA ... Phase (9 total)
varMetadata: labelDescription
featureData: none
experimentData: use 'experimentData(object)'
Annotation: yunlai
dm <- DiffusionMap(myExpressionSet)
dpt <- DPT(dm)
plot(dpt)
说好的轨迹呢?!
p1<-plot(dpt, col_by = 'DPT3')
p2<-plot(dpt, col_by = 'Gata4', pal = viridis::magma)
p3<-plot(dpt, root = 2, paths_to = c(1,3), col_by = 'branch')
CombinePlots(plots = list(p1, p2,p3))
plot(dpt, col_by = 'branch', divide = 3, dcs = c(-1,-3,2), pch = 20)
可见,不是所有的数据都可以做出肉眼可见的轨迹的,但是为什么monocle2是可以的呢!