寫(xiě)在前面
知道我的朋友,相信都有了解消痛,元旦假期某晚凌晨且叁,我突發(fā)起來(lái),折騰了一個(gè)困擾我很久很久的問(wèn)題秩伞,并解決了他逞带。
2015年,TBtools 開(kāi)發(fā)之前纱新,我寫(xiě)過(guò)一個(gè) Blast3GO掰担,主要用于 GO 注釋?zhuān)患治鲆约翱梢暬last3GO 實(shí)現(xiàn)的這些功能怒炸,基本都是調(diào)用環(huán)境中的 R带饱,于是存在四大問(wèn)題:
- 依賴(lài)用戶(hù)環(huán)境中的 R語(yǔ)言,換句話(huà)說(shuō)阅羹,要求用戶(hù)自己安裝 R
- 存在破壞用戶(hù)原有 R 語(yǔ)言環(huán)境的可能
- 無(wú)法實(shí)現(xiàn)絕對(duì)的版本控制勺疼,以至于無(wú)法保證用戶(hù)體驗(yàn)
- 確實(shí)不穩(wěn)定....
這些經(jīng)歷,使得我在開(kāi)發(fā) TBtools 之后捏鱼,追求絕對(duì)純粹的 Java 實(shí)現(xiàn)执庐。于是 TBtools 得以獲得某種程度的 便攜,簡(jiǎn)單导梆,簡(jiǎn)潔轨淌,高效。為了解決可視化問(wèn)題看尼,我自己從零實(shí)現(xiàn)了一個(gè)繪圖引擎递鹉,也就是大伙知道的 JIGplot,并一直堅(jiān)持優(yōu)化藏斩。所以躏结,我一直不想去打包任何可以不打包的軟件,更希望自己實(shí)現(xiàn)狰域。
然而媳拴,幾年過(guò)去了黄橘,我越來(lái)發(fā)現(xiàn),每個(gè)人的時(shí)間屈溉,精力是絕對(duì)有限的塞关。我可以自己寫(xiě)很多功能,卻無(wú)法做到絕對(duì)的全面子巾,比如轉(zhuǎn)錄組數(shù)據(jù)分析中的差異表達(dá)分析描孟。我們幾乎可以下個(gè)結(jié)論,幾乎全部差異表達(dá)分析軟件砰左,都是 R 包(盡管大伙還是知道有 gfold 的)匿醒。于是,我只有兩個(gè)選擇:
- 自己寫(xiě)缠导,這個(gè)不可能廉羔,也沒(méi)有意義,畢竟這個(gè)輪子造起來(lái)也不一定能得到認(rèn)可僻造,他不比可視化
- 打包 R憋他,windows下很簡(jiǎn)單,但是 macOS 呢髓削?TBtools 至少有 10% 的用戶(hù)是 MacOS 用戶(hù)
我希望的是 TBtools 繼續(xù)保持他的跨平臺(tái)竹挡,所以所有功能都是至少支持 windows + MacOS×⑻牛可以說(shuō)揪罕,元旦假期,我所有抽得出來(lái)的時(shí)間宝泵,加上我在過(guò)去一兩年好啰,嘗試失敗,再?lài)L試再失敗儿奶,還嘗試還失敗框往,繼續(xù)嘗試,繼續(xù)失敗的數(shù)次闯捎,得到的就是一個(gè)簡(jiǎn)單的東西椰弊。TBtools 的新插件“Rserver”。
插曲 - 更新 TBtools 版本
11月底瓤鼻,去版納植物園做了一場(chǎng) TBtools 培訓(xùn)秉版,培訓(xùn)期間發(fā)現(xiàn),TBtools 的插件安裝存在兩個(gè)優(yōu)化的點(diǎn):
-
MacOS 的插件選擇界面娱仔,拖拽面板還是遮擋了文件選擇面板沐飘,這塊之前在邵揚(yáng)的提醒和幫助下游桩,原本是修復(fù)的牲迫,只是....代碼忘記啟動(dòng)耐朴。改動(dòng)前
-
TBtools 插件分為兩類(lèi):小插件,無(wú)依賴(lài)盹憎,僅
.jar
文件筛峭。對(duì)于小插件,除非用戶(hù)確實(shí)沒(méi)事做陪每,回去解壓出來(lái)(盡管也沒(méi)啥用)影晓,否則都是順利安裝;大插件檩禾,有依賴(lài)挂签,于是我一般打包成.zip
文件,然而還是存在不少人習(xí)慣性解壓縮盼产,最后導(dǎo)致插件沒(méi)有完整安裝饵婆。這不是好事。但可以理解戏售,畢竟侨核,任何人看到壓縮包(尤其是圖標(biāo)對(duì)應(yīng)上了)的第一反應(yīng)是解壓縮。改動(dòng)前灌灾,
針對(duì)這兩點(diǎn)搓译,我做了優(yōu)化。首先是 MacOS 的插件安裝面板代碼生效锋喜;
其次是進(jìn)一步支持了難以被自動(dòng)識(shí)別的文件后綴.plugin
....這樣我相信就不會(huì)被解壓縮了...
Rserver 插件的安裝
目前這個(gè)插件已經(jīng)釋放到所有 TBtools 使用交流群(1-7些己,Emmm,數(shù)了一下嘿般,又回復(fù)到之前的狀態(tài)轴总,不過(guò)現(xiàn)在大伙都實(shí)名了,我相信應(yīng)該好得多)博个。直接在群共享下載最新版本的 TBtools_JRE1.6.jar怀樟,這個(gè) jar。更新到 TBtools v1.074盆佣。當(dāng)然往堡,如果你不更新,那就記得下載 Rserver.zip共耍,反正主程序跟插件耦合程度極低虑灰。
OK,拿到這個(gè)插件痹兜。就可以安裝穆咐。首先打開(kāi) TBtools
找到插件安裝位置,點(diǎn)擊
Install Plugin
拖拽放置,或直接文本選擇摁鈕選擇之后对湃,點(diǎn)擊打開(kāi)崖叫,稍等一會(huì)即可(插件較大,大概180+Mb拍柒,Windows 和 MacOS 用戶(hù)通用一個(gè)插件P目)。
插件的使用
Rserver 插件拆讯,我原本想做的只是一個(gè)差異表達(dá)分析插件脂男,但從插件的體積來(lái)看,這樣并不合適种呐。畢竟以后任何人愿意貢獻(xiàn)出 R語(yǔ)言 腳本的宰翅,都可以制備成 TBtools 插件并分發(fā)。于是爽室,我調(diào)整計(jì)劃堕油,直接將 Rserver 插件作為一個(gè)將會(huì)被其他所有 R腳本 插件所依賴(lài)的插件來(lái)開(kāi)發(fā)。完美肮之。這樣我只需要細(xì)調(diào)測(cè)試插件即可(注意到掉缺,盡管我們有1w+人的社群,但我只召集到不超過(guò)20個(gè) MacOS 用戶(hù)幫忙測(cè)試戈擒;windows不用)眶明。
使用插件非常簡(jiǎn)單,首先是打開(kāi)插件
設(shè)置一個(gè)輸出目錄筐高,其他均不設(shè)置搜囱,這樣會(huì)啟動(dòng) Rserver 插件的測(cè)試腳本。
如此柑土,點(diǎn)擊
Start
之后蜀肘,輸出目錄會(huì)生成一個(gè)Rplot.pdf
文件。稍微知道 R 使用的人就會(huì)清楚稽屏。只要沒(méi)設(shè)置繪圖文件路徑扮宠,同時(shí)又在命令行運(yùn)行,那么 R 會(huì)直接保存一個(gè)文件到 Rplot.pdf狐榔。打開(kāi)這個(gè)文件坛增,即可看到當(dāng)然,加入你填入了一段 R 腳本薄腻,比如
https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/p.adjust
網(wǎng)頁(yè)上的這段代碼(邵揚(yáng)提到的)...
輸出結(jié)果如下
當(dāng)然收捣,你可以檢測(cè)和安裝一個(gè)R包(比如大家都愛(ài)的
ggplot2
)于是你會(huì)得到
關(guān)于拓展
我們完全可以預(yù)見(jiàn)這個(gè)插件將會(huì)帶來(lái)的功能絕對(duì)拓展:
- 只要一個(gè) TBtools 用戶(hù)能跑的 R碼,換另一個(gè) TBtools 用戶(hù)庵楷,一樣能跑罢艾,因?yàn)槠脚_(tái)完全固定
- 對(duì)于 R腳本來(lái)說(shuō)楣颠,絕大多數(shù)用戶(hù)進(jìn)行修改的,往往只是輸入輸出文件咐蚯,這點(diǎn)完全可以通過(guò) TBtools 快速打一個(gè) GUI 界面()
- Rserver 插件也直接支持用戶(hù)原始的 R腳本代碼童漩,換句話(huà)說(shuō),可以寫(xiě) R包依賴(lài)檢測(cè)與安裝仓蛆,可以直接在代碼中設(shè)置輸入輸出文件或目錄.... 甚至可以.....
寫(xiě)在后面
昨晚我陪吳老師看了一場(chǎng)電影睁冬。這是兩年來(lái)我們第一次能抽出時(shí)間看的一場(chǎng)完整的電影(盡管票價(jià)不低挎春,35一張)看疙。卡通電影還不錯(cuò)直奋,最近似乎有點(diǎn)火的能庆,《心靈奇旅》。從我的角度來(lái)看脚线,這部電影傳達(dá)一個(gè)理念或許就是:享受生活搁胆,活在當(dāng)下。
當(dāng)然邮绿,這并不太準(zhǔn)確渠旁。我們討論了一會(huì),多少讓我想起了我似乎從小學(xué)就開(kāi)始在思考的問(wèn)題船逮。即顾腊,
活著,為了什么挖胃?當(dāng)然史鐵生在《我與地壇》給出了一個(gè)不錯(cuò)的答案死是一件不必急于求成的事杂靶。
這段時(shí)間一直在路上,或許人生就是在路上酱鸭。
《心靈奇旅》一條主線(xiàn)吗垮,演繹了兩類(lèi)人:
- 人生中只有目標(biāo)
- 人生中毫無(wú)目標(biāo)
當(dāng)然,什么才是人生目標(biāo)凹髓?就不劇透了烁登,大伙感興趣的可以看看。
回到主題蔚舀。
關(guān)于 TBtools 的開(kāi)發(fā)防泵,盡管我一直有源源不斷的新的開(kāi)發(fā)想法,但如果說(shuō)我馬上進(jìn)入工作蝗敢,無(wú)法在其上投入過(guò)多捷泞。那么我會(huì)留下的只有兩個(gè)遺憾:
- 我希望能提供一個(gè)可能,TBtools 用戶(hù)能夠在相互分享 TBtools 相關(guān)的內(nèi)容寿谴,以前我想過(guò)是卡通熱圖锁右,后來(lái)...總之一直想一直失敗,但現(xiàn)在,我想 Rserver 插件馬上會(huì)提供這個(gè)可能咏瑟。
- 我寫(xiě)過(guò) EasyGUI 或 AutoGUI拂到,這兩個(gè)實(shí)現(xiàn)和想法,我一直沒(méi)有放下码泞,然而他們似乎并無(wú)用武之地 兄旬。但現(xiàn)在不會(huì)了,我相信很快余寥,這些想法也會(huì)用上领铐。
有時(shí)候,或許從技術(shù)層面來(lái)說(shuō)宋舷,你學(xué)過(guò)的想過(guò)的每一個(gè)點(diǎn)绪撵,都可能不會(huì)是白費(fèi)功夫。