Size: 896
Comment:
|
Size: 1438
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 12: | Line 12: |
GrouupingStrategyFactory.createGroupingStrategy(GroupingStrategyFactory.STACKING_STRATEGY); | GroupingStrategyFactory.createGroupingStrategy(GroupingStrategyFactory.STACKING_STRATEGY); |
Line 23: | Line 23: |
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 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 |
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:
CyNodes (as it is done currently)
- A new data structure