Differences between revisions 13 and 44 (spanning 31 versions)
Revision 13 as of 2006-02-28 02:19:18
Size: 1438
Editor: pix39
Comment:
Revision 44 as of 2006-03-02 20:38:38
Size: 1596
Editor: pix39
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

 * /CommentSemantics (is {{{Group}}} a good word to use? what other wording would you suggest?)
 * /CommentInterfaces
Line 5: Line 8:
Example 1. Algorithm calculated groups: {{{
//
Example 1. Algorithm calculated groups:
Line 7: Line 11:
{{{CyNetwork [] groups = someAlgorithm.calculateGroups(someArgs); CyNetwork [] groups = someAlgorithm.calculateGroups(someArgs);
Line 14: Line 18:
   if(groups[i].nodeCount() > SOME_LIMIT){
    collapsingStrategy.group(myNetwork,groups[i]); // this collapses the groups
   }else{
    stackingStrategy.group(myNetwork,groups[i]); // this aligns the nodes in a stack
   }

   // Layout the nodes in a column
   stackingStrategy.group(myNetwork,groups[i]);

   if(groups[i].nodeCount() > SOME_LIMIT)
        // collapse groups that are too large
        collapsingStrategy.group(myNetwork,groups[i]);
Line 26: Line 32:
 1. I decided to name the interfaces in this API using the {{{group}}} word instead of the {{{MetaNode}}} word. A {{{MetaNode}}} is a way of grouping nodes/edges in a graph. The more general concept here is grouping.
 2. The {{{GroupingManager}}} is an interface to the data structure that stores groups for each network. We have not decided as a group what data structure will do this. Alternatives that have been mentioned in the past are:
   * CyAttributes
   * CyNodes (as it is done currently)
   * A new data structure 
 1. I decided to name the interfaces in this API using the {{{group}}} word instead of the {{{MetaNode}}} word. A {{{MetaNode}}} is a way of grouping nodes/edges in a graph. The more general concept is grouping.
 1. The {{{GroupingManager}}} is an interface to the data structure that stores groups for Cytoscape networks. We have not decided what data structure will do this. Alternatives that have been mentioned in the past are:
  * {{{CyAttributes}}}
  * {{{CyNodes}}} (as it is done currently)
  * A new data structure

/CommentDataStructure

Please review the Java-Docs at http://db.systemsbiology.net/cytoscape/grouping/doc/ and comment.

To give you a better idea of how the interfaces work together, here is an example:

// Example 1. Algorithm calculated groups:

CyNetwork [] groups = someAlgorithm.calculateGroups(someArgs);
groupManager.addGroupsToNetwork(myNetwork);
GroupingStrategy collapsingStrategy = 
     GroupingStrategyFactory.createGroupingStrategy(GroupingStrategyFactory.COLLAPSING_STRATEGY);
GroupingStrategy stackingStrategy =
     GroupingStrategyFactory.createGroupingStrategy(GroupingStrategyFactory.STACKING_STRATEGY);
for(int i = 0; i < groups.length; i++){

   // Layout the nodes in a column
   stackingStrategy.group(myNetwork,groups[i]);

   if(groups[i].nodeCount() > SOME_LIMIT)
        // collapse groups that are too large
        collapsingStrategy.group(myNetwork,groups[i]); 

}

Notes:

  1. I decided to name the interfaces in this API using the group word instead of the MetaNode word. A MetaNode is a way of grouping nodes/edges in a graph. The more general concept is grouping.

  2. The GroupingManager is an interface to the data structure that stores groups for Cytoscape networks. We have not decided what data structure will do this. Alternatives that have been mentioned in the past are:

    • CyAttributes

    • CyNodes (as it is done currently)

    • A new data structure

/CommentDataStructure

API (last edited 2009-02-12 01:04:00 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