`

Cytoscape 3 Simple App 开发(转载)

阅读更多

    历经磨难,Cytoscape终于迎来了3.0的发布。API完全不兼容了,各种插件必须要升级才能在3.0中运行。

    追随乔大爷的脚步,Cytoscape 3.0的插件(plug-in)改名叫应用(app),还开了一个App Store。看看Cytoscape的红火,各行各业都是打造产业链和共赢的生态环境才能获得大的成功,互联网如此,移动设备如此,生命科学也是如此。不仅仅是API的变动,开发方式也发生了巨大的改变。为了一定程度上的兼容性,Cytoscape 3.0中的应用分为两种:

  • 简单应用(simple App):基本等同于以前2.X版本中的插件,开发方式基本一致;
  • 套装应用(Bundle App):基于OGSi的应用,可以为其他应用提供API、不会出现库的版本冲突等。

    先说说简单应用的开发,给个最简单的例子,例子来自Creating a Simple Cytoscape 3 App,稍作修改和说明。

这个简单应用有两个类:

  • HideSingletonNodesApp:应用的入口,必须继承AbstractCySwingApp。

这个类的代码如下,保存到HideSingletonNodesApp.java文件:

import org.cytoscape.app.swing.AbstractCySwingApp;
import org.cytoscape.app.swing.CySwingAppAdapter;

public class HideSingletonNodesApp extends AbstractCySwingApp 
{
    public HideSingletonNodesApp(CySwingAppAdapter adapter)
    {
        super(adapter);
        adapter.getCySwingApplication()
                    .addAction(new MenuAction(adapter));
    }
}

 

  • MenuAction类:在Cytoscape的Select菜单中加入菜单项,实现隐藏孤立点(跟其他所有点都不相连的点)功能:

这个类的代码如下,保存到MenuAction.java文件:

 

import java.awt.event.ActionEvent;

import org.cytoscape.app.CyAppAdapter;
import org.cytoscape.application.CyApplicationManager;
import org.cytoscape.application.swing.AbstractCyAction;
import org.cytoscape.model.CyEdge;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.presentation.property.BasicVisualLexicon;


public class MenuAction extends AbstractCyAction {
    private final CyAppAdapter adapter;

    public MenuAction(CyAppAdapter adapter) {
        super("Hide unconnected nodes",
            adapter.getCyApplicationManager(),
            "network",
            adapter.getCyNetworkViewManager());
        this.adapter = adapter;
        setPreferredMenu("Select");
    }

    public void actionPerformed(ActionEvent e) {
        final CyApplicationManager manager = adapter.getCyApplicationManager();
        final CyNetworkView networkView = manager.getCurrentNetworkView();
        final CyNetwork network = networkView.getModel();

        for (CyNode node : network.getNodeList()) {
            if (network.getNeighborList(node, CyEdge.Type.ANY).isEmpty())
                networkView.getNodeView(node).setVisualProperty(
                    BasicVisualLexicon.NODE_VISIBLE, false);
        }

        networkView.updateView();
    }
}
 

 


这个简单应用的代码就是这样。接下来还需要一个文件描述应用的基本情况,供Cytoscape在加载应用时读取。这个文件是app-manifest:

1
2
3
4
5
Cytoscape-App-Version: 0.1
Cytoscape-App-Name: HideSingletonNodesApp
Cytoscape-App: HideSingletonNodesApp
Cytoscape-App-Works-With: 3.0
Cytoscape-API-Compatibility: 3.0

第一行是应用的版本号,第二行是应用名称,第三行是应用入口类,接下来是应用运行的Cytoscape版本。Cytoscape网站上给出的教程中的文件到此就结束了。但这样得到的应用加载时会保存,提示缺少第5行这样的信息,即应用所兼容的API版本。

把上述三个文件放到同一个目录下,下载Cytoscape3-api.jar放到同一目录下,编译打包:

1
2
javac -cp Cytoscape3-api.jar *.java
jar cfm HideSingletonNodesApp.jar app-manifest *.class

在当前目录下得到的HideSingletonNodesApp.jar。到Cytoscape中,Apps -> App Manager -> Install from File .. ,安装这个Jar文件。安装后可以在Currently Installed中看到应用的基本信息,在Select菜单的最下面可以看到Hide unconnected nodes菜单项。

就现在Cytoscape的应用情况来看,大部分的应用按照Simple App的形式开发就足够了。但诸如MCODE之类准官方的应用都迁移到了套装应用的模式上,这是未来的趋势。但相互之间API的依赖,会不会陷入Linux库依赖一样的情况?毕竟,Cytoscape不是给计算机玩家用的,很多用户是生物医学的人,简单易用直观是才是王道。

迫于用户反馈,我们的插件也得升级了。ClusterViz发布三年,没发文章,倒是被人用在了一些大项目中,还发了NG之类的好文章;发了文章的一些东西反倒是没人用。这跟Journal of Statistical Software能成为影响因子最高的统计学期刊或许是一个道理:show me the codes!

 

注:原文地址:http://gossipcoder.com/?p=1376

参考链接:http://opentutorials.cgl.ucsf.edu/index.php/Tutorial:Creating_a_Simple_Cytoscape_3_App

分享到:
评论

相关推荐

    Cytoscape3.7.1安装包

    Cytoscape是一个专注于开源网络可视化和分析的软件。它的核心是提供基础的功能布局和查询网络,并依据基本的数据的结合成可视化网络。Cytoscape源自系统生物学,用于将生物分子交互网络与高通量基因表达数据和其他的...

    appstore:Cytoscape App Store Web应用程序代码

    Cytoscape App Store 是用于托管的 Web应用 如果您想了解管理程序,代码库简介并查看完整的测试协议,请访问App Store Wiki页面: : 请注意,App Store也可以部署为Docker容器。 要了解更多信息,请访问: : 。 ...

    Cytoscape3_5_0Manual.pdf

    Cytoscape是一款图形化显示网络并进行分析和编辑的软件,它支持多种网络描述格式,也可以用...Cytoscape还能够为网络添加丰富的注释信息,并且可以利用自身以及第三方开发的大量功能插件,针对网络问题进行深入分析。 

    网络图cytoscape.js

    Cytoscape.js 是一个强大的...总结,Cytoscape.js是一个强大且灵活的网络图库,适用于Web开发中的各种数据可视化需求。通过与JSON数据的集成,它能轻松地处理复杂的数据结构,使得网络图的创建和更新变得更加便捷。

    Cytoscape_3_6_1_macos.dmg

    Cytoscape_3_6_1_macos

    RCy3:由Cytoscape开发人员社区重新设计和协作维护的新版RCy3

    我们从RCy3的主要重构开始,其中包括: 与graphNEL对象模型的独立性统一的函数和参数名称支持Cytoscape命令对Cytoscape应用程序的更好支持请参阅以获取完整的发行说明与CyREST和Cytoscape服务模型协调开发 与其他...

    Cytoscape 3.7.2 windows系统

    Cytoscape is an open source software platform for visualizing molecular interaction networks and biological pathways and integrating these networks with annotations, gene expression profiles and other...

    Cytoscape_3_7_2_windows_64bit.exe

    在写文章的过程中,我们经常需要对蛋白互作...为大家介绍一种可以对网络图进行自定义绘制的软件:Cytoscape,它是一款图形化显示网络并进行编辑和分析的软件,可以对获得的蛋白-蛋白互作网络图进行修改和进一步分析。

    Cytoscape_3_2_1_windows_64bit.rar

    标题中的"Cytoscape_3_2_1_windows_64bit.rar"表明这是一份适用于Windows 64位系统的Cytoscape 3.2.1版本的压缩包文件。描述中提到的功能,揭示了Cytoscape在生命科学研究中的核心作用。 首先,Cytoscape的核心功能...

    cytoscape mannual

    Cytoscape 由美国国家癌症研究所(NCI)资助开发,并且是开源的,遵循 GNU 宽通用公共许可证 (LGPL)。这意味着任何人都可以免费下载并使用 Cytoscape,同时也可以修改源代码以适应特定需求。 #### 2.5.1 版本更新...

    Cytoscape使用方法(正式版本)_Cytoscape_

    **Cytoscape使用方法(正式版本):深入探索网络可视化工具** Cytoscape是一款强大的开源软件,专为生物信息学和复杂网络分析而设计。它提供了丰富的功能,包括网络构建、可视化、分析和应用扩展,使得研究人员能够对...

    cytoscape manual

    Cytoscape是一款开源的软件工具,主要用于在生物信息学领域分析和可视化基因调控网络以及蛋白质相互作用网络等。基因调控网络是细胞中基因表达的调控系统,对于理解细胞的生理和病理过程至关重要。Cytoscape不仅可以...

    cytoscape.js

    总之,Cytoscape.js 是一个强大且灵活的工具,对于需要在网络图上展示复杂数据的Web开发人员来说,是一个不可或缺的资源。其丰富的功能和易用性使得网络图表的创建变得更加简单和高效。通过深入研究和实践,你可以...

    cytoscape-d3:D3.js 对 Cytoscape 3 的支持

    Cytoscape 到 D3.js 导出器 发布历史 2014 年 9 月 28 日 - 版本 1.0.2 发布。 仅小修复(无新功能)。 2014 年 9 月 15 日 - 版本 1.0.1 发布。 当用户选择网络和视图时,节点位置 (x, y) 将作为节点属性添加。 这...

    cytoscape使用教程

    Cytoscape是一款开源的网络可视化和分析软件,最初用于生物学领域,整合分子间...由于其开源的性质,用户可以免费使用和修改软件,同时也可以参与到软件的开发和改进中,通过社区贡献新的插件或反馈错误和改进建议。

    cytoscape简单操作

    ### Cytoscape简单操作知识点详解 #### 一、Cytoscape简介及应用场景 Cytoscape是一款广泛应用于生物信息学领域的开源软件平台,主要用于复杂网络数据的可视化与分析。通过直观的图形用户界面,用户可以轻松地构建...

    前端项目-cytoscape.zip

    标题中的“前端项目-cytoscape.zip”表明这是一个与前端开发相关的项目,主要涉及的是一个名为Cytoscape的库。Cytoscape是一个强大的工具,主要用于网络(图论)的分析和可视化。在前端开发中,这样的库可以帮助...

    Cytoscape中文用户手册.pdf

    Cytoscape是一款基于Java语言开发的开源软件平台,主要用于复杂的网络数据可视化与生物信息学研究中的数据分析工作。它通过图形界面为用户提供了一种直观的方式来探索大规模网络结构以及它们之间的关系。Cytoscape...

Global site tag (gtag.js) - Google Analytics