跟着NC学pseudotime| monocle2 拟时序分析 + 树形图

简介: 跟着NC学pseudotime| monocle2 拟时序分析 + 树形图

本文首发于“生信补给站”公众号  https://mp.weixin.qq.com/s/u50VeedGKnsCGIB-XsM4cw


拟时(pseudotime)分析,又称细胞轨迹(cell trajectory)分析,根据不同细胞亚群基因表达量随时间的变化情况通过拟时分析可以来推断发育过程细胞的分化轨迹或细胞亚型的演化过程。并非一定要不同时间段做实验的结果,因为细胞本身存在拟时序变化,细胞是有变化的,可以做拟时序分析。


本期分享2020年的Nature Communications文章 Single-cell analysis reveals new evolutionary complexity in uveal melanoma中的拟时序分析结果图,常规可视化的基础上添加了树形图,更直观。



一 加载数据 R包


本次介绍monocle2进行拟时序分析

#BiocManager::install("monocle")
library(monocle)
#载入注释后的数据
load('pbmc_tutorial_singleR.RData')
pbmc
#An object of class Seurat 
#13714 features across 2638 samples within 1 assay 
#Active assay: RNA (13714 features, 2000 variable features)
# 3 dimensional reductions calculated: pca, umap, tsne

二 Monocle2分析


2.1 通过seurat结果导入数据


#Extract data, phenotype data, and feature data from the SeuratObject
data <- as(as.matrix(pbmc@assays$RNA@counts), 'sparseMatrix')
pd <- new('AnnotatedDataFrame', data = pbmc@meta.data)
fData <- data.frame(gene_short_name = row.names(data), row.names = row.names(data))
fd <- new('AnnotatedDataFrame', data = fData)
#构建S4对象,CellDataSet
HSMM <- newCellDataSet(data,
                              phenoData = pd,
                              featureData = fd,
                              lowerDetectionLimit = 0.5,
                              expressionFamily = negbinomial.size())


注意expressionFamily的选择:

单细胞稀疏矩阵的话用negbinomial.size(),如果是UMI的话不要标准化;

FPKM值用tobit();

logFPKM值用gaussianff()


2.2 估计size factors 和 dispersions (需要)

## 
HSMM <- estimateSizeFactors(HSMM)
HSMM <- estimateDispersions(HSMM)


2.3 过滤低质量细胞

HSMM <- detectGenes(HSMM, min_expr = 3 )
print(head(fData(HSMM)))
expressed_genes <- row.names(subset(fData(HSMM),
                                    num_cells_expressed >= 10))
head(pData(HSMM))


2.4 选择基因

diff_test_res <- differentialGeneTest(HSMM[expressed_genes,],
                                      fullModelFormulaStr = "~ seurat_clusters")
ordering_genes <- row.names (subset(diff_test_res, qval < 0.1)) ## 不要也写0.1 ,而是要写0.01。
HSMM <- setOrderingFilter(HSMM, ordering_genes)
plot_ordering_genes(HSMM)

这里选择基因的方式有很多,说明文档中建议以下4种选择基因的方式

(1)选择发育差异表达基因

(2)选择clusters差异表达基因

(3)选择离散程度高的基因

(4)自定义发育marker基因


2.5 降维 & 排序

HSMM <- reduceDimension(HSMM, max_components = 3,
                        num_dim = 20,
method = 'DDRTree') # DDRTree方式
HSMM <- orderCells(HSMM)


三 Monocle2可视化


3.1 基于各种“类型”可视化

有了树结构后,分类颜色是可以自己指定的。而且可以直接使用ggplot2的color设置,是不是觉得多了解一下ggplot2很有必要

详见:ggplot2|详解八大基本绘图要素

colour=c("#DC143C","#0000FF","#20B2AA","#FFA500","#9370DB","#98FB98","#F08080","#1E90FF","#7CFC00","#FFFF00",  
            "#808000","#FF00FF","#FA8072","#7B68EE","#9400D3","#800080","#A0522D","#D2B48C","#D2691E","#87CEEB","#40E0D0","#5F9EA0",
            "#FF1493","#0000CD","#008B8B","#FFE4B5","#8A2BE2","#228B22","#E9967A","#4682B4","#32CD32","#F0E68C","#FFFFE0","#EE82EE",
            "#FF6347","#6A5ACD","#9932CC","#8B008B","#8B4513","#DEB887")
a1 <- plot_cell_trajectory(HSMM, color_by = "seurat_clusters") + scale_color_manual(values = colour)
a2 <- plot_cell_trajectory(HSMM, color_by = "State") + scale_color_manual(values = colour)
a3 <- plot_cell_trajectory(HSMM, color_by = "Pseudotime") 
a4 <- plot_cell_trajectory(HSMM, color_by = "labels")  + scale_color_manual(values = colour)
(a1 + a2) / (a3 + a4)


分别为根据 seurat cluster ,State ,Pseudotime 和 singleR注释后的cell type 着色。


3.2 分面展示

可以使用分面单独查看各单一celltype的时序状态

#其他的类似
plot_cell_trajectory(HSMM, color_by = "labels") +
  facet_wrap(~labels, nrow = 2) #设置几行几列展示


3.3 添加“树形图”

基本展示完了,那如何得到文章中的结果呢?

此处需要plot_complex_cell_trajectory函数添加“树形图”即可

p1 <- plot_cell_trajectory(HSMM, x = 1, y = 2, color_by = "labels") + 
  theme(legend.position='none',panel.border = element_blank()) + #去掉第一个的legend
  scale_color_manual(values = colour) 
p2 <- plot_complex_cell_trajectory(HSMM, x = 1, y = 2,
                                   color_by = "labels")+
  scale_color_manual(values = colour) +
  theme(legend.title = element_blank())


p1 / p2


其中:p1中没有展示legend, p2去掉legend的legend.title 。ggplot2的函数可以无缝链接,不想看一下吗?

ggplot2|theme主题设置,详解绘图优化-“精雕细琢”


相关文章
|
2月前
|
传感器 编解码 人工智能
中科星图——MCD43A4 V6天底双向反射率分布函数调整反射率(NBAR)数据集
中科星图——MCD43A4 V6天底双向反射率分布函数调整反射率(NBAR)数据集
127 8
|
2月前
|
编解码 算法
【论文速递】Remote Sensing2021 : 通过半全局匹配法的SAR立体图像DSM生成以及惩罚方程的评估
【论文速递】Remote Sensing2021 : 通过半全局匹配法的SAR立体图像DSM生成以及惩罚方程的评估
|
2月前
|
存储 自然语言处理 数据可视化
基于词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析(上)
基于词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析
112 0
|
2月前
|
Web App开发 算法 数据挖掘
JCR一区7.3分|内质网应激+分型+药物筛选分子对接
这篇研究分析了溃疡性结肠炎(UC)内质网应激相关基因特征,发表在《Frontiers in Immunology》杂志上。通过基因表达谱和加权基因共表达网络分析,研究人员识别出915个差异表达基因和11个关键的内质网应激相关基因(ERSRGs),这些基因在UC中具有诊断价值。他们还发现诺斯卡品作为小分子药物,可能通过影响ERS对UC产生治疗潜力。此外,研究揭示了ERS在UC发病机制中的重要角色,并与免疫细胞浸润和结肠粘膜侵袭相关。通过一致性聚类,确定了ERS相关的亚型,这些发现为理解UC的病理机制和潜在治疗提供了新见解。
35 0
|
2月前
|
机器学习/深度学习 定位技术
GEE(CCDC-2)——根据以获取的研究区CCDC系数进行土地覆被分类分析
GEE(CCDC-2)——根据以获取的研究区CCDC系数进行土地覆被分类分析
83 0
成信大ENVI_IDL第二周实验内容:提取所有MODIS气溶胶产品中AOD+详细解析
成信大ENVI_IDL第二周实验内容:提取所有MODIS气溶胶产品中AOD+详细解析
169 0
|
7月前
|
移动开发 人工智能
马尔可夫链预测举例——钢琴销售的存贮策略
马尔可夫链预测举例——钢琴销售的存贮策略
120 0
|
11月前
|
数据采集 数据可视化
揭秘水文覆盖变化!使用 R 语言轻松处理 MODIS .nc 文件
GRACE水文数据包括地表水蓄积(SWS)、土壤水蓄积(SSS)、总水蓄积(TWS)等变量,通常以每月为单位进行统计和融合,并以网格的形式提供各个区域的数据。 在这里,我们将通过使用 R 语言及其相关包对 GRACE 数据进行研究。具体来说,我们将使用 ncdf4 包读取 GRACE 的 .nc 数据,并进行数据的预处理和可视化分析。
131 0
|
数据库
利用massdatabase包提取物种KEGG通路与基因/化合物对应信息
最近手头处理一批代谢组数据, 想基于几十个关键差异代谢物代谢物进行下KEGG富集,能想到有两种方式解决,一种常用方式就是基于MetaboAnalyst在线富集,另一种就是解析出该物种的通路与代谢物的对应关系文件,然后用Y叔叔的Clusterprofiler包富集。经一番搜索,massdatabase包可帮我们轻松获得这个文件。 作者:凯凯何_Boy 链接:https://www.jianshu.com/p/654784925903 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
213 1
成信大ENVI_IDL第二周课后作业:提取n个点的气溶胶厚度+详细解析
成信大ENVI_IDL第二周课后作业:提取n个点的气溶胶厚度+详细解析
61 0