摘要:前段時間接了一個,是給生命學院的老師開發一個的插件。如果你一定要使用的新特性,可以嘗試一下使用最新版本的插件。這可以參考這個插件的。閱讀別人開發的插件是最快捷的學習方法,當你多方求索而不得時可以考慮在的里面求助。
前段時間接了一個 parttime job,是給生命學院的老師開發一個 Cytoscape 的插件。本文做個簡單的技術總結,所有的細節都基于 Cytoscape3.3.0,閱讀時請注意版本號。
Hello World from Maven首先要安裝好 Cytoscape、JDK 8 和 Maven。在此我不做贅述。
如果你沒有接觸過 Maven,最好稍微了解一下。因為 Hello World 就需要利用 Maven 命令自動生產模范代碼。Cytoscape 的 wiki 上便有詳細的介紹,請參見 Tutorial:Creating_an_OSGi_Bundle_Cytoscape_3_App。
關于 Maven,還有兩個問題需要解決,其中一個是如果你使用了 Java 8 的函數式編程特性,很有可能導致編譯能通過但是沒辦法用 Maven 打包,這是 Maven 插件的問題,我的解決方案是避免使用。如果你一定要使用 Java 8 的新特性,可以嘗試一下使用最新版本的插件。另外一個問題是怎樣引入一個外部的 jar 包。這可以參考 stringApp 這個插件的 pom.xml。注意,其中 groupID 是org.cytoscape的這些包依賴的寫法和末尾那些外部包依賴寫法上的區別。因為Cytoscape自己的那些包只是編譯時依賴,而外部包是運行時依賴。
More about packagingCytoscape 的插件就是 jar包,除了需要放在jar包里面的常規 class 文件,我們還需要放一些數據文件,比如 sqlite3 的數據庫,csv 格式的文本文件等等。那么怎么在運行時訪問這些資源呢?
針對這個問題,你可以看我在Stackoverflow上的一個回答:add sqlite DB to executable JAR file
AbstactTask一般情況下可以繼承 AbstractTask,將任務在 run 方法中實現。這樣做的好處在于 Cytoscape 可以捕獲到其中的異常,在日志中顯示,以供除蟲。而且可以利用 TaskMonitor 顯示執行任務的進度。但是在實踐中發現顯示任務進度這個功能會和彈出窗口沖突,也就是說我沒法在執行任務的中途彈出一個窗口讓用戶做一些選擇。這個時候就只能放棄繼承 AbstractTask,直接把任務放在所觸發的動作中。
Debugging可以使用標準輸出,也可以使用 Cytoscape 的日志系統。(在 Windows 下使用命令行啟動 Cytoscape,但是 cmd 的標準輸出并不能顯示,所以推薦用后者)后者可以點擊 Cytoscape 界面左下角的圖標顯示。
import org.apache.log4j.Logger; final Logger logger = Logger.getLogger("org.cytoscape.application.userlog");Resources
閱讀別人開發的 Cytoscape 插件是最快捷的學習方法,當你多方求索而不得時可以考慮在 Cytoscape 的 Google Groups 里面求助。如果還是不行,就只能訴諸 Cytoscape 源碼了。
就說這么多,建議從這里開始,https://github.com/cytoscape/cytoscape-app-samples,挑幾個樣例過一遍代碼,再開始編碼。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65947.html
摘要:事情經過是這樣的換了臺機器,想部署自己的開發環境。結果原來機器明明好使的插件,現在居然不好使了。報了各種錯誤,以為是插件中有個各種路徑是原來的機器路勁,那就重新安裝吧。 事情經過是這樣的:換了臺linux機器,想部署自己的開發環境。那vimrc必須配置上。結果原來機器明明好使的vundle插件,現在居然不好使了。報了各種錯誤,以為是插件中有個各種路徑是原來的機器路勁,那就重新安裝吧。明...
閱讀 900·2021-11-22 12:04
閱讀 2102·2021-11-02 14:46
閱讀 624·2021-08-30 09:44
閱讀 2107·2019-08-30 15:54
閱讀 728·2019-08-29 13:48
閱讀 1597·2019-08-29 12:56
閱讀 3451·2019-08-28 17:51
閱讀 3287·2019-08-26 13:44