收藏贴之一 | 写过热图工具的人,给你理清热图数据标准化

写在前面

热图,或称热力图,是外文 Heatmap 的直译。在几乎所有数值分析相关工作中都可以看到。生物信息学数据,自然躲不过。无论是形态数据,还是基因拷贝数数据,或是基因表达量,都可以使用热图来进行可视化分析。
于是,热图,大家都在用。但是并不是每个人都能相对细致的了解热图的方方面面。事实上,这种情况下使用工具进行热图绘制 ,就像是到药店买药。你以为买到的药可以缓解感冒的,但是你可能不知道这个时候你绝对不能喝酒。当然,这也是我认为奇怪的地方,似乎很少有帖子比较细致的阐述热图的各个细节。
为此,我酝酿了很久,直到今天,我偷得两三个小时的时间,可以写下这篇推文。我写过热图工具,[ 代码层面的从零实现,而不是调用已有的聚类或其他包 ],所以我有信心可以讲清楚。希望这篇推文:

  1. 对已经熟练使用热图工具的科研人员有一定的帮助。

  2. 对尚未了结热图的科研人员,有认知补充的作用。

热图的基本认知

常常,我们手上会有这样的矩阵。

这样的的基因表达量,我们需要花很多的精力可能才能看出基因在不同样品中的表达量变化。
于是,这个时候,我们会进行热图展示,只需要将这个数值矩阵从Excel中复制,并黏贴到TBtools中,点击Start即可。

这个时候,我们可以非常直观的看出,多数 BrrMTP 家族成员在 Sample4 中高表达。

事实上,多数情况下,我们绘制热图会类似上图。在一些情况下,矩阵中没有极端值,那么效果会很不错。但是常常是无法避免的,所以一般我们会对数据一定的转换。

数据的预处理,标准化,归一化

对数转换

上述热图可视化存在明显的可改进空间,其中一个明显的红色方格使得整个其他数据之间的差异无法被直观的观测。返回到原始的数值矩阵,我们可以看到,只有那个数值是超过30的,其他数值都不高。
在这种情况下,我们一般都会对数据进行对数转换,也就是是常见的 [ log-transformed ] ,对于整个表达矩阵每个值 x,取对数为 log(x),对数的底可以使e, 10, 2等等,看具体需要。在TBtools中,勾选 [ 近期更新的版本中,不再默认勾选 ]

于是会得到

从这张图,我们可以非常清晰的看到每个基因在每个样品中的表达量高低。我们也很清楚,对数转换并不对改变数据掉调性,所以,无论是同个基因在不同样品,还是不同基因在同个样品中的基因的表达量都是可比较的。

进行对数转换的时候,我们常常不会直接取 log(x) ,而是会取 log(x+1),这样做的主要原因是,很多时候,我们会得到不少基因在某些样品没有表达,对于 0 ,无法取对数。于是,我们的参数一般定为

于是我们得到

在多数情况下,我个人的建议是,对数转换得到的不错的结果,那么是最好的。

正态标准化

基因表达是动态变化的,结构基因往往表达量高,而转录因子往往表达量低。所以,有一定生物学数据分析经验的,更多的关心基因的表达趋势而不是表达量高低。这个时候,常见的策略是,对数据进行基因内标准化,对应上述数据,就是行内的标准化。简单的来说,就是逐个基因提取不同样本的表达量,得到一个数组,对这个数组进行标准化。具体逻辑如下:

直接应用公式 [ 一般而言,说标准化,那么就是正态标准化,亦即认为数据是正态分布的 ],

其中 μ 即数组的平均值,δ 即数组的标准差。在TBtools中,我们可以

于是得到

可以看到,经过行标准化,我们可以逐个查看每个基因在不同样品中的表达趋势变化,也可以做一定的比较。

这种时候,我们可能会有疑问

表达量 1.38 小于 1.42,而前者反而是红色,后者反而是淡黄色。事实上,这就是行标准化的的一个问题。一旦进行行标准化,不同行之间,绝对数值是不可比较的,只有趋势是可以比较的。这并不是软件的问题,而是一个对具体逻辑理解的问题,我们可以直接查看标准化后数值矩阵。

也就是标准化之后,1.38 在他所属的行中,其实是最高的值,相反,1.42则不是。

0-1标准化

或称min-max标准化。很多时候,我们可能会认为数据就是平均分布的,而不是正态分布[ 虽然,无论数据是什么分布,你取对数,可以使数据更倾向于正态分布 ]。或者,我们会看到,存在部分值确实过于极端,使得整体数据的可视化效果不明显。此时 ,我们常常会使用0-1标准化。这类标准化与正态标准化类似,不过使用的是另外一个公式 ,

在TBtools中,使用

于是得到

事实上,我更多的使用 0-1标准化。这并不是因为这一标准化方式更好,而是因为这一方式更符合多数人的直观认知。使用这一标准化方式,可以使基因在不同样品里面的表达量最高值为1,最低值为0,所以我们可以直观地看到每一行都有一个相同的最红的方块,和一个相同的最蓝的方块。

写在后面

时间有限,也可能是我快一个月没有动笔。确实写起来比较慢。那么就分成几次推送吧。今次先到这里。下一个帖子的主题是热图中聚类与分析。预祝各位元旦快乐。
如果你的目的只是画一张热图,可以查看热图课程,目前元旦活动。

(0)

相关推荐