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++){
if(groups[i].nodeCount() > SOME_LIMIT){
- collapsingStrategy.group(myNetwork,groups[i]); // this collapses the groups
- stackingStrategy.group(myNetwork,groups[i]); // this aligns the nodes in a stack
}
}}}
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 here is grouping.
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