分享

你真的了解热图吗

 ypgao 2017-07-29

热图(heatmap)是分子生物学文章里(尤其是RNA-seq相关论文)经常出现的图片。但热图一般有哪些用途,具体涉及哪些不同的参数画法,不一定所有的人都清楚。本篇短文,我们来说一说这个问题。

1. 关于热图的用途

热图的用途一般有两个。以RNA-seq为例,热图可以:1)直观呈现多样本多个基因的全局表达量变化;2)呈现多样本或多基因表达量的聚类关系。

第一个问题很容易理解,毕竟使用颜色(例如红绿的深浅)来展示多个样本多个基因的表达量高低,既直观又美观。

第二个问题,则需要考虑:你是否要做聚类,是对样本聚类还是对基因聚类。

先介绍需要聚类的情况。例如,对于下图,就是利用12个基因的表达量(右侧字符为gene ID)对48个包含正常人和病人的样本(下方字符为样本ID)进行聚类的结果。我们很容易观察到图中人群在系统关系上(图上方的树形结构)分为了两类。由此,我们从中了解了两类人群的基因表达模式,并对他们进行了分类。如果深入一点讲,这种聚类本质上利用了多组值间两两的差异程度(欧式距离、相关系数等),对多组值进行层级聚类,以最终得到样本间聚类的远近关系。


图1 两组人12个基因表达的聚类图

因此,如果你关心样本(或基因)在检测到的表达量水平如何分类,相关关系如何,那么你可以选择聚类。在这里,你还可以选择:仅在样本水平聚类、仅在基因水平聚类或两者都选择(如图1)。

但并非任何时候,聚类都是最佳的选择。尤其,当你预先设定好的样本排序或基因排序已经很有生物学意义,并且想在最终的图片中呈现,就应该放弃聚类。例如,你已经按照一个代谢通路对基因排好序,只想通过热图展示这条通路上基因的表达量如何变化。因为聚类会将原来很有生物学意义的基因排列打乱了。那么选择不聚类,维持原来数据的排序就是最好的选择(如图2)


图2 植物生长激素代谢通路热图

2. 热图中绘制软件和参数

如果你对R语言有所了解,那么R软件包中的ggplots是不错的选择。如果你不懂这些编程语言,也有其他简单易用的热图绘制软件供选择,例如我们10月30日的文章中介绍的heml1.0。同时热图绘制中主要涉及的几个关键参数,我们最后再介绍一下:

聚类:

也就是上文提到的,是否聚类(是按行聚类、按列聚类还是两者都选),一般软件有这样的选项。例如在R语言ggplots 的heatmap.2 命令中的参数Rowv(行聚类)和Colv(列聚类)。
数据均一化:

大家如何仔细看热图,一定会发现图旁边一般会有一个图例(如下图):


图3 热图中的图例

大部分热图图例的变化范围极小,一般是以0为中心,变异范围在±3以内。这是由于绘图的数据通常变异范围极大。例如RNA的表达量,低丰度的基因的表达量可能在RPKM<10以内。而高丰度基因则RPKM值可以达到10000+。如果不对数据进行均一化,很难在同一套颜色变化幅度范围内展现如此大尺度的数值变异。通常,热图软件都可以选择对绘图数值进行标准正态分布化(Z score)。也就是将一组值通过均一化,使其符合均值为0,方差为1的标准正态分布。

这里又将涉及到一个问题:我们是选择按行均一化、按列均一化还是对所有值均一化。

 按行均一化:将每一行数值分别单独处理,使其符合标准正态分布;
 按列均一化:将每一列数值分别单独处理,使其符合标准正态分布;
 对所有值均一化:将所有的行列数据一起处理,使其符合标准正态分布;

不同处理方式,背后的意义也会有所不同。例如,如果在聚类过程中,你想让高表达的基因对样本的分类起到更大的作用,那么选择“对所有值均一化”也是较好的选择。但通常在热图绘制过程中,我们一般是以基因为单位来观测这些表达量数值的变化的。这意味着,这些基因无论表达量高低,其地位理论上是平等的(至少也是相似的)。即,如果A基因表达量从10变化到20,B基因表达量从100变化到200,我们更关心它们变化的倍数(都是2倍)而不是变化的绝对值(10 vs 190)。那么,我们应该以基因为单位进行归一化。例如在图1中,每一行代表一个基因,则我们应该选择按行进行均一化。

按基因均一化,可以最大程度地呈现每一个基因的变化信息,避免一个超高表达的基因掩盖了其他基因的变化。因此,在热图绘制中,这是常用的归一化策略。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多