专栏首页优雅RFancyHeatmap,支持输出嵌入网站了!

FancyHeatmap,支持输出嵌入网站了!

开篇主题,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从某意义上来说,似乎更有用了一些了。

本文分享自微信公众号 - 优雅R(elegant-r)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 「R」curly curly,更好的非标准计算

    rlang v0.4.0引入了新的非标准计算操作符 {{。这大大方便了dplyr重编程。

    王诗翔呀
  • 「R」数据可视化12 : 生存曲线

    我们经常用随机森林等机器学习又或者是其他数据挖掘的方法寻找某些疾病的biomarker或者候选基因。但是来自临床的数据包括了生存事件等信息,数据的内容有所不同,...

    王诗翔呀
  • 「R」Windows R 安装包显示无法锁定目录怎么搞?

    参考:https://stackoverflow.com/questions/14382209/r-install-packages-returns-faile...

    王诗翔呀
  • Django学习-第六讲(上):Django数据库原生的方法操作

    我们使用Django来操作MySQL,实际上底层还是通过Python来操作的。因此我们想要用Django来操作MySQL,首先还是需要安装一个驱动程序。在Pyt...

    小海怪的互联网
  • 对后端开发的理解

    参考: https://www.zhihu.com/question/23084473

    平凡的学生族
  • Zimg—轻量级图片服务器搭建利器

    在一个互联网应用中,图片扮演着越来越重要的角色。有稳定的可扩展的图片存储服务器就显得尤为的重要,云厂商们提供了便利的图片存储服务,花钱就可以解决了。这里简单介绍...

    歪脖贰点零
  • 用代码判断当前系统是否支持某个版本的feature

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.blog.c...

    Jerry Wang
  • 如何通过Java代码判断当前的环境是否支持JRE 9

    JDK9已经出来有一段时间了,因此很多流行的Java应用纷纷增添了对JDK9乃至JDK10的支持,比如Tomcat。

    Jerry Wang
  • MyBatis的发展和选型

    相应的工具类如:springjdbc、jdbcutils、Apache DbUtils等。这样的工具类主要解决了一下几个问题:

    Java_老男孩
  • 判断两个Integer值相等为什么不用==

    挑战者

扫码关注云+社区

领取腾讯云代金券