Author: pwang
Date: 2011-10-31 03:57:02 -0700 (Mon, 31 Oct 2011)
New Revision: 27348

Modified:
   
csplugins/trunk/ucsd/ruschein/PanGIA-impl/src/main/java/org/idekerlab/PanGIAPlugin/NestedNetworkCreator.java
Log:
Use subnetwork for nestedNetwork

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-30 08:04:03 UTC (rev 27347)
+++ 
csplugins/trunk/ucsd/ruschein/PanGIA-impl/src/main/java/org/idekerlab/PanGIAPlugin/NestedNetworkCreator.java
        2011-10-31 10:57:02 UTC (rev 27348)
@@ -18,6 +18,7 @@
 import org.cytoscape.work.TaskMonitor;
 import org.cytoscape.view.layout.CyLayoutAlgorithm;
 import org.cytoscape.model.CyRow;
+import org.cytoscape.model.subnetwork.CyRootNetwork;
 
 
 /**
@@ -398,53 +399,76 @@
 
                // First, create network without view.
                //final CyNetwork nestedNetwork = 
Cytoscape.createNetwork(networkName, overviewNetwork, false);
-               final CyNetwork nestedNetwork = 
ServicesUtil.cyNetworkFactoryServiceRef.getInstance();
+               //final CyNetwork nestedNetwork = 
ServicesUtil.cyNetworkFactoryServiceRef.getInstance();
+
+                               
+               // Add the nodes to our new nested network.
+//             final List<CyNode> nodes = new ArrayList<CyNode>();
+//             for (final String nodeName : nodeNames) {
+//                     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);
+//                     nodes.add(node);
+//                     //nodeAttributes.setAttribute(node.getIdentifier(), 
VisualStyleObserver.PARENT_MODULE_ATTRIBUTE_NAME, networkName);
+//                     
node.getCyRow().set(VisualStyleObserver.PARENT_MODULE_ATTRIBUTE_NAME, 
networkName);
+//             }
+
                
-               //networkAttr.setAttribute(nestedNetwork.getIdentifier(),       
VisualStyleObserver.NETWORK_TYPE_ATTRIBUTE_NAME, NetworkType.MODULE.name());
-               
nestedNetwork.getCyRow().set(VisualStyleObserver.NETWORK_TYPE_ATTRIBUTE_NAME, 
NetworkType.MODULE.name());
+               // Find the list of nodes
                
-               //CyTable nodeAttributes = Cytoscape.getNodeAttributes();
+               HashMap<String,CyNode> name_node_map = new 
HashMap<String,CyNode>();
+               Iterator<CyNode> node_it = 
origPhysNetwork.getNodeList().iterator();
+               while(node_it.hasNext()){
+                       CyNode node = node_it.next();
+                       String name = node.getCyRow().get("name", String.class);
+                       name_node_map.put(name, node);
+               }
                
-               // Add the nodes to our new nested network.
                final List<CyNode> nodes = new ArrayList<CyNode>();
                for (final String nodeName : nodeNames) {
-                       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);
-                       nodes.add(node);
-                       //nodeAttributes.setAttribute(node.getIdentifier(), 
VisualStyleObserver.PARENT_MODULE_ATTRIBUTE_NAME, networkName);
+                       CyNode node = name_node_map.get(nodeName);
+                       nodes.add(node);        
+               }
+               
+               List<CyNode> nodeList = getIntersectingNodes(origPhysNetwork, 
nodes);
+               Iterator<CyNode> it = nodeList.iterator();
+               while(it.hasNext()){
+
+                       CyNode node = it.next(); 
                        
node.getCyRow().set(VisualStyleObserver.PARENT_MODULE_ATTRIBUTE_NAME, 
networkName);
                }
-
                
-               //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));
-               
+               //List<CyEdge> edges = (List<CyEdge>) 
origPhysNetwork..getConnectingEdgeList(nodeList);
+               List<CyEdge> edges = 
getConnectingEdges(origPhysNetwork,nodeList);
+
                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.getSource(), 
edge.getTarget(), false);
                                
//cyEdgeAttrs.setAttribute(edge.getIdentifier(), "PanGIA.Interaction Type", 
"Physical");
                                edge.getCyRow().set("PanGIA.Interaction Type", 
"Physical");
                        }
                }
 
                // Add the edges induced by "origGenNetwork" to our new nested 
network.
-               edges = (List<CyEdge>) 
origGenNetwork.getConnectingEdges(getIntersectingNodes(origGenNetwork, nodes));
-               for (final CyEdge edge : edges)
+               //edges = (List<CyEdge>) 
origGenNetwork.getConnectingEdges(getIntersectingNodes(origGenNetwork, nodes));
+               
+               List<CyNode> nodeList2 = getIntersectingNodes(origGenNetwork, 
nodes);
+               List<CyEdge >edges2 =  getConnectingEdges(origGenNetwork, 
nodeList2);
+               
+               
+               for (final CyEdge edge : edges2)
                {
                        if 
(geneticNetwork.containsEdge(edge.getSource().getCyRow().get("name", 
String.class),edge.getTarget().getCyRow().get("name", String.class)))
                        {
                                //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"))  
@@ -486,6 +510,16 @@
                        }
                }
 
+               //Merge two edge list
+               edges.addAll(edges2);
+               
+               //
+               CyRootNetwork rootNetwork = 
ServicesUtil.cyRootNetworkFactory.convert(origPhysNetwork);         
+               CyNetwork nestedNetwork = 
rootNetwork.addSubNetwork(getIntersectingNodes(origPhysNetwork, nodes), edges);
+
+               
nestedNetwork.getCyRow().set(VisualStyleObserver.NETWORK_TYPE_ATTRIBUTE_NAME, 
NetworkType.MODULE.name());
+
+               
                if (createNetworkView) {
                        CyNetworkView theView = 
ServicesUtil.cyNetworkViewFactoryServiceRef.getNetworkView(nestedNetwork);
                        
@@ -604,4 +638,19 @@
 
                return commonNodes;
        }
+       
+       private List<CyEdge> getConnectingEdges(CyNetwork network,List<CyNode> 
nodeList)
+       {
+               HashSet<CyEdge> edgeSet = new HashSet<CyEdge>();
+               Iterator<CyNode> it = nodeList.iterator();
+               while(it.hasNext()){
+                       CyNode node = it.next();
+                       List<CyEdge> edgeList = 
network.getAdjacentEdgeList(node, CyEdge.Type.ANY);
+                       edgeSet.addAll(edgeList);
+               }
+               
+               return new ArrayList<CyEdge>(edgeSet);
+       }
+       
+       
 }

-- 
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