Please review the Java-Docs at http://db.systemsbiology.net/cytoscape/grouping/doc/ and comment.
/CommentSemantics (is Group a good word to use? what other wording would you suggest?)
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:
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.
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