资讯专栏INFORMATION COLUMN

Cytoscape插件开发小结

galaxy_robot / 1716人阅读

摘要:前段时间接了一个,是给生命学院的老师开发一个的插件。如果你一定要使用的新特性,可以尝试一下使用最新版本的插件。这可以参考这个插件的。阅读别人开发的插件是最快捷的学习方法,当你多方求索而不得时可以考虑在的里面求助。

前段时间接了一个 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 packaging

Cytoscape 的插件就是 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,挑几个样例过一遍代码,再开始编码。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65947.html

相关文章

  • vim插件vundle/bundle安装错误小结

    摘要:事情经过是这样的换了台机器,想部署自己的开发环境。结果原来机器明明好使的插件,现在居然不好使了。报了各种错误,以为是插件中有个各种路径是原来的机器路劲,那就重新安装吧。 事情经过是这样的:换了台linux机器,想部署自己的开发环境。那vimrc必须配置上。结果原来机器明明好使的vundle插件,现在居然不好使了。报了各种错误,以为是插件中有个各种路径是原来的机器路劲,那就重新安装吧。明...

    honmaple 评论0 收藏0
  • 面试小结(三)

    摘要:好了,我的面试小结似乎告一段落了,希望自己以后多写写技术型的博客,这种总结型的博客,次之 1、项目中使用的技术栈,遇到的问题,解决办法;2、这个是我的项目中的问题:Rax中banner图,使用插件还是手写;3、react怎么使用循环渲染;4、开发的项目兼容哪些浏览器;5、自己单独负责项目过什么项目(体现自己的基础);6、手机兼容:弹性盒子,安卓手机不支持,这个问题遇到过吗; 参考:op...

    魏明 评论0 收藏0
  • 面试小结(三)

    摘要:好了,我的面试小结似乎告一段落了,希望自己以后多写写技术型的博客,这种总结型的博客,次之 1、项目中使用的技术栈,遇到的问题,解决办法;2、这个是我的项目中的问题:Rax中banner图,使用插件还是手写;3、react怎么使用循环渲染;4、开发的项目兼容哪些浏览器;5、自己单独负责项目过什么项目(体现自己的基础);6、手机兼容:弹性盒子,安卓手机不支持,这个问题遇到过吗; 参考:op...

    ephererid 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<