重磅更新!Rserver 插件 for TBtools
写在前面
知道我的朋友,相信都有了解,元旦假期某晚凌晨,我突发起来,折腾了一个困扰我很久很久的问题,并解决了他。
2015年,TBtools 开发之前,我写过一个 Blast3GO,主要用于 GO 注释,富集分析以及可视化。Blast3GO 实现的这些功能,基本都是调用环境中的 R,于是存在四大问题:
依赖用户环境中的 R语言,换句话说,要求用户自己安装 R
存在破坏用户原有 R 语言环境的可能
无法实现绝对的版本控制,以至于无法保证用户体验
确实不稳定....
这些经历,使得我在开发 TBtools 之后,追求绝对纯粹的 Java 实现。于是 TBtools 得以获得某种程度的 便携,简单,简洁,高效。为了解决可视化问题,我自己从零实现了一个绘图引擎,也就是大伙知道的 JIGplot,并一直坚持优化。所以,我一直不想去打包任何可以不打包的软件,更希望自己实现。
然而,几年过去了,我越来发现,每个人的时间,精力是绝对有限的。我可以自己写很多功能,却无法做到绝对的全面,比如转录组数据分析中的差异表达分析。我们几乎可以下个结论,几乎全部差异表达分析软件,都是 R 包(尽管大伙还是知道有 gfold 的)。于是,我只有两个选择:
自己写,这个不可能,也没有意义,毕竟这个轮子造起来也不一定能得到认可,他不比可视化
打包 R,windows下很简单,但是 macOS 呢?TBtools 至少有 10% 的用户是 MacOS 用户
我希望的是 TBtools 继续保持他的跨平台,所以所有功能都是至少支持 windows + MacOS。可以说,元旦假期,我所有抽得出来的时间,加上我在过去一两年,尝试失败,再尝试再失败,还尝试还失败,继续尝试,继续失败的数次,得到的就是一个简单的东西。TBtools 的新插件“Rserver”。
插曲 - 更新 TBtools 版本
11月底,去版纳植物园做了一场 TBtools 培训,培训期间发现,TBtools 的插件安装存在两个优化的点:
MacOS 的插件选择界面,拖拽面板还是遮挡了文件选择面板,这块之前在邵扬的提醒和帮助下,原本是修复的,只是....代码忘记启动。改动前
TBtools 插件分为两类:小插件,无依赖,仅
.jar
文件。对于小插件,除非用户确实没事做,回去解压出来(尽管也没啥用),否则都是顺利安装;大插件,有依赖,于是我一般打包成.zip
文件,然而还是存在不少人习惯性解压缩,最后导致插件没有完整安装。这不是好事。但可以理解,毕竟,任何人看到压缩包(尤其是图标对应上了)的第一反应是解压缩。改动前,
针对这两点,我做了优化。首先是 MacOS 的插件安装面板代码生效;
其次是进一步支持了难以被自动识别的文件后缀.plugin
....这样我相信就不会被解压缩了...
Rserver 插件的安装
目前这个插件已经释放到所有 TBtools 使用交流群(1-7,Emmm,数了一下,又回复到之前的状态,不过现在大伙都实名了,我相信应该好得多)。直接在群共享下载最新版本的 TBtools_JRE1.6.jar,这个 jar。更新到 TBtools v1.074。当然,如果你不更新,那就记得下载 Rserver.zip,反正主程序跟插件耦合程度极低。
OK,拿到这个插件。就可以安装。首先打开 TBtools
找到插件安装位置,点击Install Plugin
拖拽放置,或直接文本选择摁钮选择之后,点击打开,稍等一会即可(插件较大,大概180+Mb,Windows 和 MacOS 用户通用一个插件!)。
插件的使用
Rserver 插件,我原本想做的只是一个差异表达分析插件,但从插件的体积来看,这样并不合适。毕竟以后任何人愿意贡献出 R语言 脚本的,都可以制备成 TBtools 插件并分发。于是,我调整计划,直接将 Rserver 插件作为一个将会被其他所有 R脚本 插件所依赖的插件来开发。完美。这样我只需要细调测试插件即可(注意到,尽管我们有1w+人的社群,但我只召集到不超过20个 MacOS 用户帮忙测试;windows不用)。
使用插件非常简单,首先是打开插件
设置一个输出目录,其他均不设置,这样会启动 Rserver 插件的测试脚本。
如此,点击Start
之后,输出目录会生成一个Rplot.pdf
文件。稍微知道 R 使用的人就会清楚。只要没设置绘图文件路径,同时又在命令行运行,那么 R 会直接保存一个文件到 Rplot.pdf。打开这个文件,即可看到
当然,加入你填入了一段 R 脚本,比如
https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/p.adjust
网页上的这段代码(邵扬提到的)...
输出结果如下
### 注意,指定 repo,代码由邵扬提供
if (!require('ggplot2')) install.packages('ggplot2', repos='https://mirrors.tuna.tsinghua.edu.cn/CRAN/')
library(ggplot2)
ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()
于是你会得到
关于拓展
我们完全可以预见这个插件将会带来的功能绝对拓展:
只要一个 TBtools 用户能跑的 R码,换另一个 TBtools 用户,一样能跑,因为平台完全固定
对于 R脚本来说,绝大多数用户进行修改的,往往只是输入输出文件,这点完全可以通过 TBtools 快速打一个 GUI 界面()
Rserver 插件也直接支持用户原始的 R脚本代码,换句话说,可以写 R包依赖检测与安装,可以直接在代码中设置输入输出文件或目录.... 甚至可以.....
写在后面
昨晚我陪吴老师看了一场电影。这是两年来我们第一次能抽出时间看的一场完整的电影(尽管票价不低,35一张)。卡通电影还不错,最近似乎有点火的,《心灵奇旅》。从我的角度来看,这部电影传达一个理念或许就是:享受生活,活在当下。
当然,这并不太准确。我们讨论了一会,多少让我想起了我似乎从小学就开始在思考的问题。即,
活着,为了什么?当然史铁生在《我与地坛》给出了一个不错的答案死是一件不必急于求成的事。
这段时间一直在路上,或许人生就是在路上。
《心灵奇旅》一条主线,演绎了两类人:
人生中只有目标
人生中毫无目标
当然,什么才是人生目标?就不剧透了,大伙感兴趣的可以看看。
回到主题。
关于 TBtools 的开发,尽管我一直有源源不断的新的开发想法,但如果说我马上进入工作,无法在其上投入过多。那么我会留下的只有两个遗憾:
我希望能提供一个可能,TBtools 用户能够在相互分享 TBtools 相关的内容,以前我想过是卡通热图,后来...总之一直想一直失败,但现在,我想 Rserver 插件马上会提供这个可能。
我写过 EasyGUI 或 AutoGUI,这两个实现和想法,我一直没有放下,然而他们似乎并无用武之地 。但现在不会了,我相信很快,这些想法也会用上。
有时候,或许从技术层面来说,你学过的想过的每一个点,都可能不会是白费功夫。