Author: pwang
Date: 2011-10-30 01:04:03 -0700 (Sun, 30 Oct 2011)
New Revision: 27347

Modified:
   
csplugins/trunk/ucsd/ruschein/PanGIA-impl/src/main/java/org/idekerlab/PanGIAPlugin/NestedNetworkCreator.java
Log:
refactored to work with Cy3

Modified: 
csplugins/trunk/ucsd/ruschein/PanGIA-impl/src/main/java/org/idekerlab/PanGIAPlugin/NestedNetworkCreator.java
===================================================================
--- 
csplugins/trunk/ucsd/ruschein/PanGIA-impl/src/main/java/org/idekerlab/PanGIAPlugin/NestedNetworkCreator.java
        2011-10-29 22:22:15 UTC (rev 27346)
+++ 
csplugins/trunk/ucsd/ruschein/PanGIA-impl/src/main/java/org/idekerlab/PanGIAPlugin/NestedNetworkCreator.java
        2011-10-30 08:04:03 UTC (rev 27347)
@@ -17,6 +17,7 @@
 import org.cytoscape.view.vizmap.VisualStyle;
 import org.cytoscape.work.TaskMonitor;
 import org.cytoscape.view.layout.CyLayoutAlgorithm;
+import org.cytoscape.model.CyRow;
 
 
 /**
@@ -118,16 +119,16 @@
        private CyNetwork overviewNetwork = null;
        private Map<TypedLinkNodeModule<String, BFEdge>, CyNode> 
moduleToCyNodeMap;
        private int maxSize = 0;
-       private final int MAX_NETWORK_VIEWS = PropUtil.getInt(CytoscapeInit
-                       .getProperties(), "moduleNetworkViewCreationThreshold", 
0);
+       private int MAX_NETWORK_VIEWS = 5 ; //PropUtil.getInt(CytoscapeInit
+                       //.getProperties(), 
"moduleNetworkViewCreationThreshold", 0);
        private final PriorityQueue<NetworkAndScore> networksOrderedByScores = 
new PriorityQueue(
                        100);
 
 //     VisualStyle moduleVS = 
Cytoscape.getVisualMappingManager().getCalculatorCatalog().
 //                                                             
getVisualStyle(VisualStyleObserver.VS_MODULE_NAME);
 
-       private final CyTable nodeAttribs = Cytoscape.getNodeAttributes();
-       private final CyTable edgeAttribs = Cytoscape.getEdgeAttributes();
+//     private final CyTable nodeAttribs = Cytoscape.getNodeAttributes();
+//     private final CyTable edgeAttribs = Cytoscape.getEdgeAttributes();
        
        public static List<String> getEdgeAttributeNames()
        {
@@ -171,8 +172,15 @@
                        String geneticEdgeAttrName
                        )
        {
+               try {                   
+                       MAX_NETWORK_VIEWS = new 
Integer(ServicesUtil.cytoscapePropertiesServiceRef.getProperties().getProperty("moduleNetworkViewCreationThreshold")).intValue();
                       
+               }
+               catch (Exception e){
+                       MAX_NETWORK_VIEWS = 5;
+               }
+
                // Network attributes created here is required for managing 
Visual Styles.
-               final CyTable networkAttr = Cytoscape.getNetworkAttributes();
+               //final CyTable networkAttr = Cytoscape.getNetworkAttributes();
                
                moduleToCyNodeMap = new HashMap<TypedLinkNodeModule<String, 
BFEdge>, CyNode>();
 
@@ -195,8 +203,8 @@
                        final TypedLinkNodeModule<String, BFEdge> sourceModule 
= edge.source().value();
                        CyNode sourceNode = moduleToCyNodeMap.get(sourceModule);
                        if (sourceNode == null) {
-                               final String nodeName = 
getNodeName(sourceModule,nodeIndex,module_name,nodeAttrName);
-                               sourceNode = makeOverviewNode(nodeName, 
sourceModule,nodeAttribs,physicalNetwork,geneticNetwork);
+                               final String nodeName = 
getNodeName(overviewNetwork, sourceModule,nodeIndex,module_name,nodeAttrName);
+                               sourceNode = makeOverviewNode(nodeName, 
sourceModule,physicalNetwork,geneticNetwork);
                                //moduleToCyNodeMap.put(sourceModule, 
sourceNode);
                                ++nodeIndex;
                        }
@@ -204,8 +212,8 @@
                        final TypedLinkNodeModule<String, BFEdge> targetModule 
= edge.target().value();
                        CyNode targetNode = moduleToCyNodeMap.get(targetModule);
                        if (targetNode == null) {
-                               final String nodeName = 
getNodeName(targetModule,nodeIndex,module_name,nodeAttrName);
-                               targetNode = makeOverviewNode(nodeName, 
targetModule,nodeAttribs,physicalNetwork,geneticNetwork);
+                               final String nodeName = 
getNodeName(overviewNetwork, targetModule,nodeIndex,module_name,nodeAttrName);
+                               targetNode = makeOverviewNode(nodeName, 
targetModule,physicalNetwork,geneticNetwork);
                                //moduleToCyNodeMap.put(targetModule, 
targetNode);
                                ++nodeIndex;
                        }
@@ -213,7 +221,7 @@
                        
                        //final CyEdge newEdge = 
Cytoscape.getCyEdge(sourceNode, targetNode, Semantics.INTERACTION, 
COMPLEX_INTERACTION_TYPE, /* create = */true);
                        CyEdge newEdge = overviewNetwork.addEdge(sourceNode, 
targetNode, false);
-                       newEdge.getCyRow().set(Semantics.INTERACTION, 
COMPLEX_INTERACTION_TYPE);
+                       newEdge.getCyRow().set("interaction", 
COMPLEX_INTERACTION_TYPE);
 
                        //edgeAttribs.setAttribute(newEdge.getIdentifier(), 
REFERENCE_NETWORK_NAME_ATTRIB, origPhysNetwork.getTitle()   + "/" + 
origGenNetwork.getTitle());
                        newEdge.getCyRow().set(REFERENCE_NETWORK_NAME_ATTRIB, 
origPhysNetwork.getCyRow().get("name", String.class) + "/" + 
origGenNetwork.getCyRow().get("name", String.class));
@@ -259,9 +267,24 @@
                float percentCompleted = 100.0f - remainingPercentage;
                while ((network = networksOrderedByScores.poll()) != null) {
                        final boolean createView = networkViewCount++ < 
MAX_NETWORK_VIEWS;
-                       final CyNetwork nestedNetwork = 
generateNestedNetwork(network.getNodeName(), network.getGenes(), 
origPhysNetwork, origGenNetwork, physicalNetwork,geneticNetwork, createView, 
networkAttr, isGNetSigned, geneticEdgeAttrName);
-                       final CyNode node = 
Cytoscape.getCyNode(network.getNodeName(), false);
-                       node.setNetwork(nestedNetwork);
+                       final CyNetwork nestedNetwork = 
generateNestedNetwork(network.getNodeName(), network.getGenes(), 
origPhysNetwork, origGenNetwork, physicalNetwork,geneticNetwork, createView, 
isGNetSigned, geneticEdgeAttrName);
+                       
+                       
+                       Collection<CyRow> rows = 
overviewNetwork.getDefaultNodeTable().getMatchingRows("name", 
network.getNodeName());
+                       
+                       Iterator<CyNode> nodeIt= 
overviewNetwork.getNodeList().iterator();
+                       
+                       while (nodeIt.hasNext()){
+                               CyNode aNode = nodeIt.next();
+                               String nodeName = aNode.getCyRow().get("name", 
String.class);
+                               if 
(nodeName.equalsIgnoreCase(network.getNodeName())){
+                                       aNode.setNetwork(nestedNetwork);        
+                                       break;
+                               }
+                       }
+                       
+                       //final CyNode node = 
Cytoscape.getCyNode(network.getNodeName(), false);
+                       //node.setNetwork(nestedNetwork);                       
        
 
                        percentCompleted += percentIncrement;
                        
taskMonitor.setProgress(Math.round(percentCompleted)/100.0);
@@ -274,7 +297,7 @@
                
        }
 
-       private String getNodeName(TypedLinkNodeModule<String, BFEdge> module, 
int nodeIndex, Map<TypedLinkNodeModule<String, BFEdge>,String> module_name, 
String nodeAttrName)
+       private String getNodeName(CyNetwork network, 
TypedLinkNodeModule<String, BFEdge> module, int nodeIndex, 
Map<TypedLinkNodeModule<String, BFEdge>,String> module_name, String 
nodeAttrName)
        {
                
                
@@ -282,19 +305,31 @@
                if (module.size()<=2) 
                {
                        Iterator<String> genes = 
module.getMemberValues().iterator();
-                       String newName = 
"["+String.valueOf(nodeAttribs.getAttribute(genes.next(),nodeAttrName));
-                       while (genes.hasNext()) newName+=", 
"+String.valueOf(nodeAttribs.getAttribute(genes.next(),nodeAttrName));
-                       return findNextAvailableNodeName(newName+"]");
+
+                       
+                       //String newName = 
"["+String.valueOf(nodeAttribs.getAttribute(genes.next(),nodeAttrName));
+                       CyRow[] rows= (CyRow[]) 
network.getDefaultNodeTable().getMatchingRows(nodeAttrName, 
genes.next()).toArray();
+                       String newName = "["+String.valueOf(rows[0]);
+                       
+                       while (genes.hasNext()) 
+                       {
+                               //newName+=", 
"+String.valueOf(nodeAttribs.getAttribute(genes.next(),nodeAttrName));
+                               CyRow[] rows1= (CyRow[]) 
network.getDefaultNodeTable().getMatchingRows(nodeAttrName, 
genes.next()).toArray();
+                               String newName1 = "["+String.valueOf(rows1[0]);
+                               
+                               newName+=", "+String.valueOf(newName1);
+                       }
+                       return findNextAvailableNodeName(network, newName+"]");
                }
                
                //Annotate large complexes
                if (module_name!=null)
                {
                        String name = module_name.get(module);
-                       if (name!=null) return findNextAvailableNodeName(name);
+                       if (name!=null) return 
findNextAvailableNodeName(network, name);
                }
                
-               return findNextAvailableNodeName("Module" + nodeIndex);
+               return findNextAvailableNodeName(network, "Module" + nodeIndex);
        }
        
        CyNetwork getOverviewNetwork() {
@@ -306,14 +341,18 @@
         */
        private CyNode makeOverviewNode(final String nodeName,
                        final TypedLinkNodeModule<String, BFEdge> module,
-                       final CyTable nodeAttribs, TypedLinkNetwork<String, 
Float> physicalNetwork, TypedLinkNetwork<String, Float> geneticNetwork) {
+                       TypedLinkNetwork<String, Float> physicalNetwork, 
TypedLinkNetwork<String, Float> geneticNetwork) {
                
                
-               final CyNode newNode = Cytoscape.getCyNode(nodeName, true); // 
create=true
+               //final CyNode newNode = Cytoscape.getCyNode(nodeName, true); 
// create=true
                
+               CyNode newNode = overviewNetwork.addNode();
+               newNode.getCyRow().set("name", nodeName);
+               
+               
                moduleToCyNodeMap.put(module, newNode);
                
-               overviewNetwork.addNode(newNode);
+               //overviewNetwork.addNode(newNode);
                
                //Add attributes
                final Set<String> genes = module.getMemberValues();
@@ -352,43 +391,47 @@
        private CyNetwork generateNestedNetwork(final String networkName,
                        final Set<String> nodeNames, final CyNetwork 
origPhysNetwork,
                        final CyNetwork origGenNetwork, 
TypedLinkNetwork<String, Float> physicalNetwork, TypedLinkNetwork<String, 
Float> geneticNetwork, final boolean createNetworkView,
-                       final CyTable networkAttr, boolean isGNetSigned, String 
geneticEdgeAttrName)
+                       boolean isGNetSigned, String geneticEdgeAttrName)
        {
                if (nodeNames.isEmpty())
                        return null;
 
                // First, create network without view.
-               final CyNetwork nestedNetwork = 
Cytoscape.createNetwork(networkName, overviewNetwork, false);
+               //final CyNetwork nestedNetwork = 
Cytoscape.createNetwork(networkName, overviewNetwork, false);
+               final CyNetwork nestedNetwork = 
ServicesUtil.cyNetworkFactoryServiceRef.getInstance();
                
                //networkAttr.setAttribute(nestedNetwork.getIdentifier(),       
VisualStyleObserver.NETWORK_TYPE_ATTRIBUTE_NAME, NetworkType.MODULE.name());
-               nestedNetwork.getCyRow().set(   
VisualStyleObserver.NETWORK_TYPE_ATTRIBUTE_NAME, NetworkType.MODULE.name());
+               
nestedNetwork.getCyRow().set(VisualStyleObserver.NETWORK_TYPE_ATTRIBUTE_NAME, 
NetworkType.MODULE.name());
                
-               CyTable nodeAttributes = Cytoscape.getNodeAttributes();
+               //CyTable nodeAttributes = Cytoscape.getNodeAttributes();
                
                // Add the nodes to our new nested network.
                final List<CyNode> nodes = new ArrayList<CyNode>();
                for (final String nodeName : nodeNames) {
-                       final CyNode node = Cytoscape.getCyNode(nodeName, /* 
create = */false);
+                       final CyNode node = nestedNetwork.addNode(); 
//Cytoscape.getCyNode(nodeName, /* create = */false);
+                       node.getCyRow().set("name", nodeName);
                        if (node == null) {
                                System.err.println("in 
NestedNetworkCreator.generateNestedNetwork() (in the PanGIA plug-in): unknown 
node: \"" + nodeName + "\"!");
                                throw new IllegalStateException("unknown node: 
\"" + nodeName + "\"!");
                        }
-                       nestedNetwork.addNode(node);
+                       //nestedNetwork.addNode(node);
                        nodes.add(node);
                        //nodeAttributes.setAttribute(node.getIdentifier(), 
VisualStyleObserver.PARENT_MODULE_ATTRIBUTE_NAME, networkName);
                        
node.getCyRow().set(VisualStyleObserver.PARENT_MODULE_ATTRIBUTE_NAME, 
networkName);
                }
 
                
-               CyTable cyEdgeAttrs = Cytoscape.getEdgeAttributes();
+               //CyTable cyEdgeAttrs = Cytoscape.getEdgeAttributes();
                                
                // Add the edges induced by "origPhysNetwork" to our new nested 
network.
                List<CyEdge> edges = (List<CyEdge>) 
origPhysNetwork.getConnectingEdgeList(getIntersectingNodes(origPhysNetwork, 
nodes));
+               
                for (final CyEdge edge : edges)
                {
                        if 
(physicalNetwork.containsEdge(edge.getSource().getCyRow().get("name", 
String.class),edge.getTarget().getCyRow().get("name", String.class)))
                        {
-                               nestedNetwork.addEdge(edge);
+                               //nestedNetwork.addEdge(edge);
+                               nestedNetwork.addEdge(edge.getSource(), 
edge.getTarget(), false);
                                
//cyEdgeAttrs.setAttribute(edge.getIdentifier(), "PanGIA.Interaction Type", 
"Physical");
                                edge.getCyRow().set("PanGIA.Interaction Type", 
"Physical");
                        }
@@ -400,7 +443,8 @@
                {
                        if 
(geneticNetwork.containsEdge(edge.getSource().getCyRow().get("name", 
String.class),edge.getTarget().getCyRow().get("name", String.class)))
                        {
-                               nestedNetwork.addEdge(edge);
+                               //nestedNetwork.addEdge(edge);
+                               nestedNetwork.addEdge(edge.getSource(), 
edge.getTarget(), false);
                                //Object existingAttribute = 
cyEdgeAttrs.getAttribute(edge.getIdentifier(), "PanGIA.Interaction Type");
                                Object existingAttribute = 
edge.getCyRow().getRaw("PanGIA.Interaction Type");
                                if (existingAttribute==null || 
!existingAttribute.equals("Physical"))  
@@ -489,17 +533,21 @@
         *            The node name we'd like to use, if it is available. If 
not we
         *            use it as a prefix instead.
         */
-       private String findNextAvailableNodeName(final String 
initialPreference) {
+       private String findNextAvailableNodeName(CyNetwork network, final 
String initialPreference) {
                // Try the preferred choice first:
-               CyNode node = Cytoscape
-                               .getCyNode(initialPreference, /* create = 
*/false);
-               if (node == null)
+               //CyNode node = Cytoscape
+               //              .getCyNode(initialPreference, /* create = 
*/false);
+               
+               if (network.getDefaultNodeTable().getMatchingRows("name", 
initialPreference).isEmpty())
+               //if (node == null)
                        return initialPreference;
 
                for (int suffix = 1; true; ++suffix) {
                        final String titleCandidate = initialPreference + "-" + 
suffix;
-                       node = Cytoscape.getCyNode(titleCandidate, /* create = 
*/false);
-                       if (node == null)
+                       
+                       if 
(network.getDefaultNodeTable().getMatchingRows("name", 
titleCandidate).isEmpty())                    
+                       //node = Cytoscape.getCyNode(titleCandidate, /* create 
= */false);
+                       //if (node == null)
                                return titleCandidate;
                }
        }

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to