热图(Heatmap)之大,一屏放不下?

写在前面

久前,我开放了 TBtools 掰弯热图的功能。我自认为是TBtools的掰弯热图,至少目前还是市面上独此一家,同时,保证了所有人都上手就会用。这一功能,也已经被在一些期刊论文所引用。
无论是TBtools的Amazing Heatmap,还是后面增加的 掰弯 模式,都只是我个人开发绘图引擎 JIGplot 过程中测试实用性而顺手写出来的。然而,可能往往你做的东西不会得到认可,而期间所得到的副产品则更多人喜爱。
尽管如此,社交网络上,总是存在这样那样的人,他们或者用与不用你写的工具,但却一定会对你做的事情指指点点。正如:

  • ?热图有什么?

  • ?掰弯的热图,又有什么用?

直的不行,那就弯啊

大丈夫,能屈能伸。这个道理,过分简单。前两天正好想到一个不错点,改进了JIGplot,于是掰弯热图也得到一定的增强。所以,可以用以下两个图片来回复上述问题。

版面总是有限的。注意到,上述两张图的长宽几乎一致。经典的长方形热图(要么太高,要么太胖),事实上不利于排版(放不下,要么就字体缩得太小)。用有限的空间展示更多的信息,那么掰弯时最常见的操作,比如Circos。

开放TBtools,转眼近四年。无论是《生信札记》公众号的后台,或者是使用交流QQ群(~10,000人在群)。每天我都会看到这样那样的使用问题,意见更或者建议。绝大多数都是善意的,也是好的。但也一直收到各种各样的恶语,无论他们用或没用过TBtools,受益或者没受益于TBtools。一开始,我当然是不爽的。后来,我早就习惯的,脾气也慢慢变好了,讲真的,现实中各式各样的人遇到过,网络上,更奇葩的各式各样的人,我也遇到过。真诚,欣赏,厌恶,担心,阴阳等等,其实也很有趣。你得到了朋友,也会得到敌人。

好的,那么回到主题,既然我都淡定了,那么为什么还要写这个推文。

TBtools热图功能增强了!

知道我的人都知道,近两个月来,我一直在忙家里的事情。这对个人工作的开展来说,有利有弊。弊端简单且明显,所有时间都碎片化,几乎无法很好很快地完成一些任务。好处就是....既然啥都干不了,那就瞎想。瞎想是我个人从高中养成的习惯。有些搞不定的问题就记着,有碎片化时间了,比如坐车,睡不着,那就开始想这些问题。很多时候,这些问题总会一个一个被解决。昨天,我正好想到了热图工具相关的可增强的点。

渲染速度更快

之前的TBtools版本,绘制十多个样本X上千个基因的热图时,存在一定的卡顿。针对这个,我优化了:

  1. 数据框加载与读取逻辑,因为是自己从零写的dataframe, 支持了各式各样的NA,空格,缺列等等

  2. 数据框存储与操作,....不在使用数列的数列,直接使用二维数组。

  3. 颜色映射逻辑,热图其实就是画形状,按照一定的尺度进行颜色映射,JIGplot原本直接使用我之前写的JJplot2的ColarMapper。小时候的我Naive,那个逻辑不行,现在已经更新。
    ....

聚类速度更快

与上述类似,聚类涉及到距离计算和聚类操作,两个步骤,我都做了调优。距离的计算中,通过存一个Hash,减少重复计算。聚类,也是类似。

掰弯功能增强

之前的TBtools掰弯热图,其实...不支持列聚类,当然,并没有太多人发现或者其实很少人需要对列聚类?不过这一直是我想做的事情。最后当然是完成了。

  1. 列名能更好的排布

  2. 列聚类树终于支持掰弯!

....
当然还有更多,只是,那些似乎不太值得写出来。

写在最后

追求卓越,成功就会紧随而至,吗?

(0)

相关推荐