拟时序分析的热图提取基因问题

昨天我在单细胞天地讲解了使用monocle2进行拟时序分析的方法,基本上跟着我的代码走一波就可以学会了,当然具体参数理解需要自行发力哦,见:使用monocle做拟时序分析(单细胞谱系发育) 用法只是最基础的知识而已,更多的时候,我们需要活学活用,比如课程学员提到的问题,就是因为做不到活学活用,他想知道下面的拟时序分析的热图提取基因,学员把基因按照发育顺序绘制了热图,而这些基因被他分成了3组,想拿基因去做GO/KEGG等数据库进行功能注释,不知道如何获取基因名字。

我这里不能拿学员真实项目数据来演示,所以还是用我们的老朋友,拿scRNAseq包的表达矩阵测试,见:使用monocle做拟时序分析(单细胞谱系发育)

首先根据细胞发育谱系来绘制热图

因为前面的教程 使用monocle做拟时序分析(单细胞谱系发育) 我们已经把细胞发育情况做出来了,就是NPC细胞跟另外3种细胞从生理上就不一样,所以是单独的发育轨迹,而 “GW16” and “GW21” ,“GW21+3” 这种孕期细胞,就可以很清晰的看到时间被反映在我们的拟时序分析结果了。

大家可以重温教程  使用monocle做拟时序分析(单细胞谱系发育)  里面的4个绘图代码:

plot_cell_trajectory(cds, color_by = "Biological_Condition")  
# 可以很明显看到细胞的发育轨迹 
plot_cell_trajectory(cds, color_by = "State")
plot_cell_trajectory(cds, color_by = "Pseudotime")
plot_cell_trajectory(cds, color_by = "State") +
  facet_wrap(~State, nrow = 1)

我们前面构建细胞发育谱系,使用的是不同Biological_Condition的细胞类型之间使用monocle找到的两千多个基因。

简单的一个函数就可以绘制热图:

plot_pseudotime_heatmap(cds[ordering_genes,],
                        num_clusters = 3,
                        cores = 1,
                        show_rownames = T)

可以看到, 这个图就和学员求助的图一模一样啦,因为基因数量两千多个,所以画出来肯定是看不清晰的啦。

既然基因被分成了3组,想拿基因去做GO/KEGG等数据库进行功能注释,就需要获取基因名字。

这个做不出来,不怪学员,因为正常人很难想到,这个绘图函数其实是可以调整返回数据对象的,而且官网例子也没有提到。

需要看函数的帮助文档,如下:

hclust_method    
The method used by pheatmap to perform hirearchical clustering of the rows.
hclust_method = "ward.D2"
return_heatmap    
Whether to return the pheatmap object to the user.

很明显,这个函数其实就是pheatmap的一个包装罢了,本质上也是调用  hclust 而已,使用的是ward.D2距离。

然后解析热图函数返回对象

根据帮助文档,我们修改参数,这样monocle的plot_pseudotime_heatmap函数就有返回值了,是一个对象。

p=plot_pseudotime_heatmap(cds[ordering_genes,],
                        num_clusters = 3,
                        cores = 1,return_heatmap=T,
                        show_rownames = T)

从pheatmap的对象里面提取基因名字就很简单了,就是在p$tree_row里面

> p$tree_row

Call:
hclust(d = d, method = method)

Cluster method   : ward.D2 
Number of objects: 2200 

就可以拿到基因名对应的cluster啦,代码如下:

clusters <- cutree(p$tree_row, k = 3)
clustering <- data.frame(clusters)
clustering[,1] <- as.character(clustering[,1])
colnames(clustering) <- "Gene_Clusters"
table(clustering)

实际上学员提问是有问题的

因为学员之间丢出这个热图,然后咨询如何在图片里面提取基因名字,所以大家只能是问是pdf还是png的图片呢?是不是可以AI或者PS解析它,拿到基因名字呢?

如果学员是直接问:使用monocle的plot_pseudotime_heatmap函数绘制的热图里面的基因聚集成为3类,该如何提取基因名字,其实就很简单了。

这个答疑虽然是给基础课程的学员,但实际上这个内容在单细胞转录组的进阶课程,如果学了就不需要提问了。

今天是教师节,我放一个收款二维码吧,如果你曾经受益于我的教程,也算是我的学生,意思一下即可!

(0)

相关推荐

  • ComplexHeatmap绘制热图详细步骤

    pheatmap是一个非常受欢迎的绘制热图的R包.ComplexHeatmap包即是受之启发而来.你可以发现Heatmap()函数中很多参数都与pheatmap()相同.在pheatmap的时代(请允 ...

  • R语言绘制圈图、环形热图可视化基因组实战:展示基因数据比较

    原文链接:http://tecdat.cn/?p=23891 可以使用环状图形展示基因数据比较.可以添加多种图展信息,如热图.散点图等. 本文目标: 可视化基因组数据 制作环形热图 环形热图很漂亮.可 ...

  • 萌新学完GEO课程复现SCI文章差异基因的热图

    文章标题是:Tinagl1 Suppresses Triple-Negative Breast Cancer Progression and Metastasis by Simultaneously ...

  • 为什么我代码里面选择top1000的sd基因绘制热图呢

    实际上写完了这个全网最好的差异分析代码:免费的数据分析付费的成品代码 我就可以收工用来,但是永远不能低估粉丝的疑惑数量,任何一个细节都会被拿出来剖析. 比如代码里面我挑选了top1000的sd基因绘制 ...

  • 我想知道这个热图里面的约百个基因是什么

    日常刷文献,看到一个热图,非常长!如下:   也不知道为什么,也许纯粹是突然奇想吧,出一个习题给学徒,拿到这个热图里面的基因名字.我给出3个提示,看看大家属于哪一种人! 首先,是可以使用图片识别软件, ...

  • 多个基因集相关性热图

    目录 单细胞转录组学习笔记-1 单细胞转录组学习笔记-2 单细胞转录组上游分析之shell回顾 获取Github代码包以及准备工作 常说的表达矩阵,那得到之后呢? 由表达矩阵看内部异质性 重复平均表达 ...

  • Tips! | 只有一个基因,怎么做一张高调的热图?

    写在前面 Hmmm,可能全网也就我一个人会写这个主题.很久以前,这个标题已经躺在我的草稿中,迟迟没有动笔.今天联川沈工提到他们计划出血大赠送,填表就送书 - 强烈建议看今天的二号推文.前述有关注< ...

  • 热图怎么做? | 热图函数pheatmap() | | 百迈客生物基因

    是不是会经常绘制热图?那热图怎么做?先看一眼这个函数的参数,这么多,而且最后还有省略号.那么我们应该怎么合理使用这些参数让你的热图看起来更加高大上呢? pheatmap(mat, color = co ...

  • 区分上下调基因的热图操作

    我们通常画热图都是这个样子,发文章没有什么问题: 但是很多时候我们想区分上下调基因,让人一看就能看出哪些是上调基因,哪些是下调基因,我们可以进行一下区分的. 代码很简单的,关键点是数据准备,代码可以随 ...

  • 八大数据分析模型之——热图分析模型(四)

    诸葛君说:产品/运营们最痛苦的莫过于说服开发部门同意我们的网页改版方案,他们往往会充满怀疑的反问:为什么要这样做?总之,在你无法证明"你是对的"情况下,所有的沟通仿佛都站不住脚,今 ...