摘要:前段時(shí)間接了一個(gè),是給生命學(xué)院的老師開(kāi)發(fā)一個(gè)的插件。如果你一定要使用的新特性,可以嘗試一下使用最新版本的插件。這可以參考這個(gè)插件的。閱讀別人開(kāi)發(fā)的插件是最快捷的學(xué)習(xí)方法,當(dāng)你多方求索而不得時(shí)可以考慮在的里面求助。
前段時(shí)間接了一個(gè) parttime job,是給生命學(xué)院的老師開(kāi)發(fā)一個(gè) Cytoscape 的插件。本文做個(gè)簡(jiǎn)單的技術(shù)總結(jié),所有的細(xì)節(jié)都基于 Cytoscape3.3.0,閱讀時(shí)請(qǐng)注意版本號(hào)。
Hello World from Maven首先要安裝好 Cytoscape、JDK 8 和 Maven。在此我不做贅述。
如果你沒(méi)有接觸過(guò) Maven,最好稍微了解一下。因?yàn)?Hello World 就需要利用 Maven 命令自動(dòng)生產(chǎn)模范代碼。Cytoscape 的 wiki 上便有詳細(xì)的介紹,請(qǐng)參見(jiàn) Tutorial:Creating_an_OSGi_Bundle_Cytoscape_3_App。
關(guān)于 Maven,還有兩個(gè)問(wèn)題需要解決,其中一個(gè)是如果你使用了 Java 8 的函數(shù)式編程特性,很有可能導(dǎo)致編譯能通過(guò)但是沒(méi)辦法用 Maven 打包,這是 Maven 插件的問(wèn)題,我的解決方案是避免使用。如果你一定要使用 Java 8 的新特性,可以嘗試一下使用最新版本的插件。另外一個(gè)問(wèn)題是怎樣引入一個(gè)外部的 jar 包。這可以參考 stringApp 這個(gè)插件的 pom.xml。注意,其中 groupID 是org.cytoscape的這些包依賴的寫(xiě)法和末尾那些外部包依賴寫(xiě)法上的區(qū)別。因?yàn)镃ytoscape自己的那些包只是編譯時(shí)依賴,而外部包是運(yùn)行時(shí)依賴。
More about packagingCytoscape 的插件就是 jar包,除了需要放在jar包里面的常規(guī) class 文件,我們還需要放一些數(shù)據(jù)文件,比如 sqlite3 的數(shù)據(jù)庫(kù),csv 格式的文本文件等等。那么怎么在運(yùn)行時(shí)訪問(wèn)這些資源呢?
針對(duì)這個(gè)問(wèn)題,你可以看我在Stackoverflow上的一個(gè)回答:add sqlite DB to executable JAR file
AbstactTask一般情況下可以繼承 AbstractTask,將任務(wù)在 run 方法中實(shí)現(xiàn)。這樣做的好處在于 Cytoscape 可以捕獲到其中的異常,在日志中顯示,以供除蟲(chóng)。而且可以利用 TaskMonitor 顯示執(zhí)行任務(wù)的進(jìn)度。但是在實(shí)踐中發(fā)現(xiàn)顯示任務(wù)進(jìn)度這個(gè)功能會(huì)和彈出窗口沖突,也就是說(shuō)我沒(méi)法在執(zhí)行任務(wù)的中途彈出一個(gè)窗口讓用戶做一些選擇。這個(gè)時(shí)候就只能放棄繼承 AbstractTask,直接把任務(wù)放在所觸發(fā)的動(dòng)作中。
Debugging可以使用標(biāo)準(zhǔn)輸出,也可以使用 Cytoscape 的日志系統(tǒng)。(在 Windows 下使用命令行啟動(dòng) Cytoscape,但是 cmd 的標(biāo)準(zhǔn)輸出并不能顯示,所以推薦用后者)后者可以點(diǎn)擊 Cytoscape 界面左下角的圖標(biāo)顯示。
import org.apache.log4j.Logger; final Logger logger = Logger.getLogger("org.cytoscape.application.userlog");Resources
閱讀別人開(kāi)發(fā)的 Cytoscape 插件是最快捷的學(xué)習(xí)方法,當(dāng)你多方求索而不得時(shí)可以考慮在 Cytoscape 的 Google Groups 里面求助。如果還是不行,就只能訴諸 Cytoscape 源碼了。
就說(shuō)這么多,建議從這里開(kāi)始,https://github.com/cytoscape/cytoscape-app-samples,挑幾個(gè)樣例過(guò)一遍代碼,再開(kāi)始編碼。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/65947.html
摘要:事情經(jīng)過(guò)是這樣的換了臺(tái)機(jī)器,想部署自己的開(kāi)發(fā)環(huán)境。結(jié)果原來(lái)機(jī)器明明好使的插件,現(xiàn)在居然不好使了。報(bào)了各種錯(cuò)誤,以為是插件中有個(gè)各種路徑是原來(lái)的機(jī)器路勁,那就重新安裝吧。 事情經(jīng)過(guò)是這樣的:換了臺(tái)linux機(jī)器,想部署自己的開(kāi)發(fā)環(huán)境。那vimrc必須配置上。結(jié)果原來(lái)機(jī)器明明好使的vundle插件,現(xiàn)在居然不好使了。報(bào)了各種錯(cuò)誤,以為是插件中有個(gè)各種路徑是原來(lái)的機(jī)器路勁,那就重新安裝吧。明...
摘要:好了,我的面試小結(jié)似乎告一段落了,希望自己以后多寫(xiě)寫(xiě)技術(shù)型的博客,這種總結(jié)型的博客,次之 1、項(xiàng)目中使用的技術(shù)棧,遇到的問(wèn)題,解決辦法;2、這個(gè)是我的項(xiàng)目中的問(wèn)題:Rax中banner圖,使用插件還是手寫(xiě);3、react怎么使用循環(huán)渲染;4、開(kāi)發(fā)的項(xiàng)目兼容哪些瀏覽器;5、自己?jiǎn)为?dú)負(fù)責(zé)項(xiàng)目過(guò)什么項(xiàng)目(體現(xiàn)自己的基礎(chǔ));6、手機(jī)兼容:彈性盒子,安卓手機(jī)不支持,這個(gè)問(wèn)題遇到過(guò)嗎; 參考:op...
摘要:好了,我的面試小結(jié)似乎告一段落了,希望自己以后多寫(xiě)寫(xiě)技術(shù)型的博客,這種總結(jié)型的博客,次之 1、項(xiàng)目中使用的技術(shù)棧,遇到的問(wèn)題,解決辦法;2、這個(gè)是我的項(xiàng)目中的問(wèn)題:Rax中banner圖,使用插件還是手寫(xiě);3、react怎么使用循環(huán)渲染;4、開(kāi)發(fā)的項(xiàng)目兼容哪些瀏覽器;5、自己?jiǎn)为?dú)負(fù)責(zé)項(xiàng)目過(guò)什么項(xiàng)目(體現(xiàn)自己的基礎(chǔ));6、手機(jī)兼容:彈性盒子,安卓手機(jī)不支持,這個(gè)問(wèn)題遇到過(guò)嗎; 參考:op...
閱讀 883·2021-11-22 12:04
閱讀 2088·2021-11-02 14:46
閱讀 616·2021-08-30 09:44
閱讀 2098·2019-08-30 15:54
閱讀 715·2019-08-29 13:48
閱讀 1587·2019-08-29 12:56
閱讀 3441·2019-08-28 17:51
閱讀 3279·2019-08-26 13:44