Differences between revisions 17 and 18
Revision 17 as of 2007-04-03 10:48:32
Size: 9646
Editor: 207-172-104-38
Comment:
Revision 18 as of 2007-04-05 17:30:35
Size: 10071
Editor: pix39
Comment:
Deletions are marked like this. Additions are marked like this.
Line 140: Line 140:
import cytoscape.plugin.PluginInfo;
import cytoscape.plugin.PluginInfo.Category;
Line 147: Line 150:
  public PluginInfo getPluginInfoObj()   public PluginInfo getPluginInfoObject()
Line 152: Line 155:
    // this is free text but all core plugins are of category 'core'
    Info.setCategory("core");

// this is free text but several categories (including "Core") are set up based on website categories
    Info.setCategory("SomeText") OR Info.setCategory(Category.CORE)
Line 156: Line 161:
    Info.setCytoscapeVersion("2.5");
    // this is the site you could download this plugin from. This is used for finding updates
    // if the plugin lacks this no updates can/will ever be downloaded through the auto-updater
    Info.setProjectUrl("http://where-I-find-this-plugin/plugins.xml");
Line 162: Line 170:
Any of the methods above that are not set are set to some default values when {{{new PluginInfo()}}} is called. CytoscapeInit uses the PluginManager to register all plugins. A plugin installed through our new system will have this information already set through the xml describing it. Any plugin installed through another process is encouraged to use the PluginInfo object to give as much information as possible about the plugin. Any of the methods above that are not set are set to some default values when {{{new PluginInfo()}}} is called. CytoscapeInit uses the PluginManager to register all plugins. A plugin installed through our new system will have this information already set through the xml describing it. Any plugin installed through another process is encouraged to use the PluginInfo object to give as much information as possible about the plugin.  
Line 175: Line 183:
    (2) PluginListDialog.java
    (3) PluginInstallDialog.java
    (2) PluginUrlDialog.java
    (3) PluginUpdateDialog.java
Line 189: Line 197:
Plugins that do not implement the getPluginInfoObj() method and are not installed through the xml above will still be listed in "installed plugins" but will have less information.   Plugins that do not implement the getPluginInfoObject() method and are not installed through the xml above will still be listed in "installed plugins" but will have less information and will be unable to update.

RFC Name : Auto Plugin Install

Editor(s): ...

TableOfContents([2])

About this document

This is an official Request for Comment (RFC) for Auto Plugin Install.

For details on RFCs in general, check out the [http://www.answers.com/main/ntquery?method=4&dsid=2222&dekey=Request+for+Comments&gwp=8&curtab=2222_1&linktext=Request%20for%20Comments Wikipedia Entry: Request for Comments (RFCs)]

Status

How to Comment

To view/add comments, click on any of 'Comment' links below. By adding your ideas to the Wiki directly, we can more easily organize everyone's ideas, and keep clear records. Be sure to include today's date and your name for each comment. Here is an example to get things started: ["/Comment"].

Try to keep your comments as concrete and constructive as possible. For example, if you find a part of the RFC makes no sense, please say so, but don't stop there. Take the extra step and propose alternatives.

Proposal

Cytoscape plugins are mainly developed by third parties to add extra functionality to Cytoscape. Many plugin authors are willing to share the plugins they developed. Cytoscape maintains a long list of plugins at Cytoscape website at (http://cytoscape.org/plugins2.php) and the list is growing over time.

Right now, if a user wants to install a plugin, he/she can only do it manually. (1) Look at the Cytoscape website or the plugin website he/she knows. (2) Download the plugin, (3) Install the plugin into the Cytoscape. To manage the plugins (add/delete/update), user needs to keep track of each plugins manually and must know where the Cytoscape plugins are placed (in a designated directory).

The goal of this project is to provide a “Plugin manager” at Cytoscape to automate the the plugin installation process, so the users will have GUIs to manage their plugins (add/delete/update). The GUIs will integrate Cytoscape, plugin website, and installation process together and user even don’t need to know what the designated Cytoscape plugin directory is. We also note that “Firefox” and “Eclipse” already have such practice to add their add-ons.

This project should include three components: (1) plugin database (2) plugin web site (3) plugin manager

Use Cases

Load a plugin “BiNGO” into Cytoscape with Plugin_Manager.

1. Launch Cytoscape, click menu “Plugins”, click submenu “Import/update plugins”.

2. A dialog with title “Plugin manager” shows up. All the plugins installed are listed in the JTable. There are three buttons at the right side of JTable, “Get plugins”, “Uninstall” and “Find Updates”.

3. Click the button “Get plugins”. A new dialog with title “Plugin List” pops up, which list all the plugins available (Retrieved dynamically from “CyPluginDB”). In the dialog, there is a JTree, which list five categories of Cytoscape plugins (“Functional Enrichment plugins”, “Analysis plugins”, “Network and Attribute I/O Plugins”, “Network Inference Plugins”). Click the tree node “Functional Enrichment plugins” expands the node, which list all the plugins belong to this category.

4. Click “BiNGO”, a new dialog with title “Add BiNGO Plugin” show up, which gives detail description of the plugin. A plugin may have several versions for download. Each radio button represents plugin versions that are compatible with the current Cytoscape version. There are three buttons at the end of the page, “Install”, “Use once”, “Cancel”. – If multiple versions are compatible might the user expect a description for each one so they can tell which one they want? If not offering the most recent version by default may make more sense.

5. Selected the version of plugin, click “Install” button will initiate the installation process. (License agreement dialog and progress bar) If “Use once” is clicked, the plugin will be load into memory only, not persist in disk.

6. After Installation is completed, an info dialog will inform the user that the plugin is installed.

Data flow diagram

attachment:DataFlowDiagram.png

Note: The web site may be built with PHP and MySQL. Cytoscape will have different versions. Plugins will also have different versions. Different versions may not compatible each other. Therefore a dynamic web site with database as back-end is desirable to retrieve plugins, which are compatible with current Cyoscape version.

Plugin database

Host: chianti.ucsd.edu Database name: CyPluginDB

* Current Design:

attachment:CyPluginDB_Schema.png

Plugin webpages

Host: cytoscape.org

1. Main page, which lists all the plugins. Same as usual, but data source will be from CyPluginDB. If the DB is updated, this page will be updated automatically.

  • pluginList.php

2. Pages for each plugin

getPlugin.php parameters: PluginName

Plugin data management

1. Plugin author submit plugin to Cytoscape pluginSubmit.php (Web form)

Title: Submit Plugin to Cytoscape (File_upload) Authors: xxx Plugin_Name: textField Plugin_version: textField Release Date: May 2, 2005 Institution: textField Jar File: textField Verified to work in Cytoscape version: 2.3, 2.4 (checkboxes) Plugin URL: XXXXXXX.com

Submit button, cancel button

2. Load plugin to CyPluginDB after validation pluginLoading.py (web form, password required to upload, DB admin only) (ToDo: ScreenShot)

Plugin Manager

1. Manager makes http fetch request to given url (default to cytoscape.org), expect back an xml document with information about all available plugins:

<project>
  <!-- global info regarding the project these plugins come from -->
  <name> Cytoscape Plugins </name>
  <description> Test </description>
  <url> http://cytoscape.org/plugin-inquiry-url </url>

  <pluginlist>                          
        <plugin>
          <uniqueID>Some text that is the same from one version to the next</uniqueID>
          <name> foobar </name>
          <description> blah </description>
          <pluginVersion> 1.0 </pluginVersion>
          <cytoscapeVersion> 2.5 </cytoscapeVersion>
          <!-- jar or zip supported -->
          <filetype> jar </filetype>
          <category> Enrichment </category>
          <url> http://url/to/download/jar-or-zip-file.xxx </url>
          <authorlist>
            <author>
              <name> </name>
              <institution> </institution>
            </author>
          </authorlist>
        </plugin>
  </pluginlist>
</project>

User gets dialog box with plugins available for cytoscape version in use. This makes it easy for anyone else to set up a document for plugin downloads at their own site in case they don't submit to us.

PluginMgr (public methods)

Registering a Plugin

  • CytocapePlugin has a new method "getPluginInfoObj()". All plugins are encouraged to use this to make registering with the manager simpler. The following example mirrors the information that we would expect to get from the xml document that describes plugins available for download. To implement the method:

import cytoscape.plugin.PluginInfo;
import cytoscape.plugin.PluginInfo.Category;

public class MyPlugin extends CytoscapePlugin 
  {
  public MyPlugin()
    {
    // do all my work
    }

  public PluginInfo getPluginInfoObject() 
    {
    PluginInfo Info = new PluginInfo(); 
    Info.setName("MyPlugin");
    Info.setDescription("Just something to show the user");

    // this is free text but several categories (including "Core") are set up based on website categories
    Info.setCategory("SomeText") OR Info.setCategory(Category.CORE)

    // used to check for updated versions
    Info.setPluginVersion("0.5");

    // this is the site you could download this plugin from.  This is used for finding updates
    // if the plugin lacks this no updates can/will ever be downloaded through the auto-updater
    Info.setProjectUrl("http://where-I-find-this-plugin/plugins.xml");
    }
  }

Any of the methods above that are not set are set to some default values when new PluginInfo() is called. CytoscapeInit uses the PluginManager to register all plugins. A plugin installed through our new system will have this information already set through the xml describing it. Any plugin installed through another process is encouraged to use the PluginInfo object to give as much information as possible about the plugin.

Implementation Plan

Deferred Items

Open Issues

Backward Compatibility

Plugins that do not implement the getPluginInfoObject() method and are not installed through the xml above will still be listed in "installed plugins" but will have less information and will be unable to update.

Expected growth and plan for growth

References

Comments

PageComment2

Pluginwebsite (last edited 2009-02-12 01:03:45 by localhost)

Funding for Cytoscape is provided by a federal grant from the U.S. National Institute of General Medical Sciences (NIGMS) of the Na tional Institutes of Health (NIH) under award number GM070743-01. Corporate funding is provided through a contract from Unilever PLC.

MoinMoin Appliance - Powered by TurnKey Linux