差异表达基因热图怎么看_热图的解读及边界聚类的意义

热图(heatmap)是分子生物学文章里(尤其是microarray, RNA-seq相关论文)经常出现的图片。但热图一般有哪些用途,具体涉及哪些不同的参数画法,需要清楚了解。

1. 关于热图的用途

热图的用途一般有两个。

以RNA-seq为例,热图可以:

1)直观呈现多样本多个基因的全局表达量变化;

2)呈现多样本或多基因表达量的聚类关系。

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

第二个需要考虑:聚类的对象是什么,是否需要聚类。

这里对典型的聚类进行举例。

例如,下图中即对12个基因的表达量(行代表基因,右侧字符为gene ID)及48个包含正常人和病人的样本(列代表样本,下方字符为样本ID)进行聚类的结果。我们很容易观察到图中基因群及人群样本在系统关系上的分类(图边界上方及图边界左边的树形结构)。

由此,我们从图中了解了人群样本的基因表达模式,并可以对他们进行分类。详细说来,聚类本质上利用的是多组值间两两的差异程度或者相似程度(比如欧式距离、相关系数等)作为依据,对多组值进行层级聚类,以最终得到样本间聚类的远近关系。

aa434e4293fb579983c4282d0af2f039.png
两组人12个基因表达的聚类图

那么什么聚类有什么用呢?

从样本角度讲,聚类可以观察到你采集的不同组别样本是否被分类到一起了。因为,理论上如果样本来自于同一个组,其特征应该是相似的,那么在进行聚类的时候就很容易因为相似就被聚在一起。而如果在实际操作中,某一个应该属于该组的样本被聚类到别的组了,那就说明这个样本本身的变异度很高,或者说在之前的样本采集或者测序过程中出了什么问题,则需要在正式进行接来的分析前考虑把该异常样本剔除掉。如下图如示,对照组(C)的样本聚类中出现了实验组(T),说明实验室组样本T可能有异常,需要进一步溯源其差异原因。必要情况下要予以剔除。

00d9cbf8741d2b9d439ac6b240b1d8a9.png
示例

从基因表达角度讲,聚类可以观察到那些基因群具体比较一致的表达变化。因为基因的上下游关系一般是连锁反应的,也就是说一个基因的表达增加可能能够带动一系列的基因的表达增加。那么从聚类图中就可以看到这个连锁的相关性,也是就看到一群基因被聚集在了一起(如上图边界左边的树状图)。

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

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

9193f58c1495b0f4bd395a14e302563a.png
植物生长激素代谢通路热图

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

如果你对R语言有所了解,那么R软件包中的ggplots是不错的选择,ggplots 的heatmap.2 命令中的参数Rowv(行聚类)和Colv(列聚类)。如果你不懂这些编程语言,也有其他简单易用的热图绘制软件供选择,例如专栏中之前介绍的heml1.0。

在对无论是microarray或者RNAseq进行聚类前一定要进行标准化(Normalization)。因为不进行标准化的数值有可能相互差异太大,导致热图的显示扭曲。这种标准化除了是对表达数据进行整理(比如去头去尾,保留数据群的3/4), 还包括对比如z-score变换,如下图有些microarray数据集的热图中可能会出现的图例;再比如有时候进行的log2变换。不过,这些都不会强制的,主要还是看自己数据的表达差异大不大,如果太大,就需要变换一下,使数据范围变窄一点,容易显示。

2e9f0a1a2c1df486601109759cab7b61.png
热图中的图例

比如:以RNAseq为例,某低丰度的基因的表达量在RPKM<10以内。而某高丰度基因则RPKM值达到100000+。如果不对数据进行均一化,很难在同一套颜色变化幅度范围内展现如此大尺度的数值变异。而如果进行Log10变换,则分别为log10(100000)=5,log10(10)=1。此时的层次在一个量级,热图的显示也不至于太跨度太大。通常,热图软件都可以选择对绘图数值进行标准正态分布化(Z score)。也就是将一组值通过均一化,使其符合均值为0,方差为1的标准正态分布。

对于大部分的microarray热图图例的变化范围很小,一般是以0为中心,变异范围在±3以内,这些绘图基本都是基于数据的变换后实现的。对于RNAseq而言,由于counts都是正数的,所以其热图在标准化后也还是正数,此时的图例显示一般在0-10之间。

值得注意的是:

在进行均一化时,我们是选择按行均一化、按列均一化还是对所有值均一化。

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

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

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

更新于2020年8月22日

  • 12
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ggplot是一个数据可视化包,可以用于创建各种图形,包括热图。在基因表达研究中,热图可以用于展示基因在不同样本或条件下的表达水平。 首先,我们需要准备基因表达数据和相应的样本信息。基因表达数据是一个包含基因名称和表达水平的矩阵,每行代表一个基因,每列代表一个样本。样本信息是一个包含样本名称、条件或类别等信息的数据框。 接下来,使用ggplot进行热图的绘制。首先,我们需要用到ggplot的geom_tile函数,该函数可以创建矩形图块用于展示每个基因在每个样本中的表达水平。通过设置颜色映射,可以将高表达和低表达基因区分开来。我们还可以添加颜色条以表示表达水平的范围。 为了更好地理解基因表达数据的模式,我们可以对基因和样本进行聚类。在ggplot中,我们可以使用row_cluster和column_cluster参数来控制基因和样本的聚类。通过将相似的基因和样本放在一起,我们可以更好地观察它们之间的相似性和差异性。 另外,我们还可以添加行和列的注释信息。例如,可以根据基因的功能或特征对基因进行分组,并在热图的边缘添加注释。这样可以帮助更好地理解基因的生物学意义。 最后,通过调整坐标轴标签、图例和标题等参数,我们可以进一步美化和定制热图的外观。这样我们就可以更直观地观察基因在不同样本或条件下的表达模式,发现隐藏在数据中的模式和趋势。 总而言之,使用ggplot进行基因表达热图的绘制可以帮助我们更好地展示和理解基因在不同样本或条件下的表达水平,并揭示基因之间的相似性和差异性。它是基因表达研究中常用的数据可视化方法之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值