专栏名称: 生信札记
记录和分享生信学习经验和数据处理技巧
分享
目录
相关文章推荐
今天看啥  ›  专栏  ›  生信札记

[原创]FancyHeatmap,支持输出嵌入网站了!

生信札记  · 公众号  ·  · 2020-02-06 19:59

开篇主题,FancyHeatmap支持HTML输出,可嵌入已有数据库浏览器框架

写在前面

FancyHeatmap,是我给TBtools中“卡通式热图”命的名字。前述,在公众号上,我已经推出了这个功能相关的新手教程。在后续,我也发现有不少人已经应用:

  1. 在小麦上

  2. 在拟南芥上

  3. 在花生上

  4. 在小米上

  5. 在荔枝上
    ....【注:均尚未发表,故不截图....】

用的人确实还是不会太少的。

为啥写FancyHeatmap

这是一种更为直观的表达量探索工具。相比于常规的热图,“卡通式热图”更符合人的直觉。当然,看起来也有趣一点。事实上,这个功能是“芯片盛行年代”时,就已经有人提出来了。他们发表了“eFP browser”文章。这是一个数据库框架,主要是方便别人搭建这类“卡通式热图”的网页数据库。然而...说实话,我第一次尝试部署作者提供的框架式,花了不只三天。主要问题是:

  1. 需要对网站部署和linux运维有基本认知,如果是要搭建数据库,那么这个觉悟是有的;如果只是想使用卡通式热图探索下表达量的多数人,那么花力气在数据库搭建上,确实得不偿失。

  2. 框架的依赖复杂,而且都是旧版本(我最后使用docker centOS 6 ...以及一些麻烦的调整才搞定的)

  3. MySQL~~~

  4. 原本是用于芯片的,对于FPKM数值,需要修改脚本
    ....

综上,让我再碰这个数据库框架是不可能的。于是有一天,我开发JIGplot的过程中,灵机一动,实现一个ImageEle用于加载图片,不就行了吗?这个应该很简单啊。
很快,实现了FancyHeatmap第一版,需要的是三个文件:

  1. ColorCode2Sample.tab

  2. GeneExp.tab

  3. Image.tga



【注:可以看到,放大之后,图片失真】

非常简单。我之前也写过详细的教程在公众号《生信札记》上。而这个版本【注:第一版】也就是上述其他人所使用的版本。

支持SVG输入,得到矢量图输出和更多的交互式分析

第一版的FancyHeatmap,虽然比较多人使用。但是他存在一个致命的缺点:使用TGA格式的图片作为输入。TGA当然好,只是毕竟位图。图片输出的分辨率已经确定,带来两个问题:

  1. 无法提供良好的后续图片编辑功能,好的文章,往往一个Figure有几个Sub Figures

  2. 输出的图片用于网站,无法良好的应对缩放

Sad。我当然知道eFP browser似乎并没有想法去实现矢量图输入与输出。但是这个没关系啊。于是我进一步开发JIGplot,提供一个SVGtoJIGSubPanel的功能。换句话说,只要将SVG对象转换成JIGplot引擎的对象,那么我就可做任意我想做的操纵。Tada!
于是,FancyHeatmap比eFP browser又多了一个功能【前述:方便也是一个超越】,实现了矢量图输入与输出。当然,不仅如此。
既然不再是ImageEle,而是JIGElement的组合,那么我们可以直接在每个JIGElement上加动作,实现更多的交互分析可能。


支持HTML输出,可嵌入数据库类网站

Emmm... 事实上,自从TBtools推出FancyHeatmap的功能之后,不时有人联系过来。其中大半部分人其实是想在他们的数据库中嵌入这一功能
前述已经提到,eFP browser本身就是做这个事情的,但我个人认为 ,除非公司层面也准备好了docker镜像,否则搭建成本一定很高。更不说docker image是否能够实现eFP browser的Sub HTML。Anyway,专门帮别人搭建数据库的公司还是有的,只要收费合理【注:个人估计2万以上是合理收费】,还是有不少公司愿意做的。
于是,我也收到了一些寻求合作的邮件,当然最后直接将合作转交给课题组的师弟去负责【注:很多时候,我并没有时间掺和也不想掺和】。
但是 ,刚才也提到了。目前无论是eFP Browser还是FancyHeatmap的已有应用,使用的都是第一版本:

  1. 位图输出,缩放失真

  2. 无法良好交互

FancyHeatMap的第二版使用SVG输入,已经搞定这些事情。然而,毕竟是Desktop Application。要搬到浏览器上面,JavaApplet....已经被时代所抛弃。于是,我今天灵机一动,搞个HTML输出不就行了吗?
三下五除二,【边带娃,边Coding】,很快,就实现了。


可以看到,完美!作为一个HTML文件,他就可以直接嵌入到其他任何已有数据库框架。另外,我还非常友好地提供了DIY的方式

也就是,只要用SampleID,写一点JavaScript代码,你想怎么交互,那么就是你的事情....


于是,TBtools的FancyHeatMap从某意义上来说,似乎更有用了一些了。

写在最后

Emmm... 过去的两三个月,似乎一直没有Coding。暂时来说,Java似乎有点生疏了,当然perl估计也差不多,JavaScript...说实话,我又看了大半个小时的语法,才写的....

OKay,推送就写这么多了。最近在忙毕业的事情,也没太多时间整有的没的。基本上,关于FancyHeatmap,自己折腾的人不少哈。这样挺好的。
而如果是寻求合作,建议直接联系我目前所在课题组PI

夏瑞教授 rxia@scau.edu.cn

如果你执意要跟我联系,那么也没问题,

CJ: ccj0410@gmail.com



今天看啥 -
本文地址:http://www.jintiankansha.me/t/9IARCfnKBO