Author: mkirby
Date: 2012-07-11 15:13:33 -0700 (Wed, 11 Jul 2012)
New Revision: 29845
Modified:
csplugins/trunk/soc/mkirby/CytoBridge/pom.xml
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/CyActivator.java
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkManager.java
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NodeViewListener.java
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCCallHandler.java
Log:
mkirby: Updates.
Modified: csplugins/trunk/soc/mkirby/CytoBridge/pom.xml
===================================================================
--- csplugins/trunk/soc/mkirby/CytoBridge/pom.xml 2012-07-11 22:06:54 UTC
(rev 29844)
+++ csplugins/trunk/soc/mkirby/CytoBridge/pom.xml 2012-07-11 22:13:33 UTC
(rev 29845)
@@ -73,6 +73,11 @@
</dependency>
<dependency>
<groupId>org.cytoscape</groupId>
+ <artifactId>layout-api</artifactId>
+ <version>${cytoscape.api.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.cytoscape</groupId>
<artifactId>core-task-api</artifactId>
<version>${cytoscape.api.version}</version>
</dependency>
Modified:
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/CyActivator.java
===================================================================
---
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/CyActivator.java
2012-07-11 22:06:54 UTC (rev 29844)
+++
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/CyActivator.java
2012-07-11 22:13:33 UTC (rev 29845)
@@ -4,11 +4,16 @@
import org.cytoscape.application.swing.CySwingApplication;
import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyTableFactory;
+import org.cytoscape.model.CyTableManager;
+import org.cytoscape.property.CyProperty;
import org.cytoscape.service.util.AbstractCyActivator;
+import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
import org.cytoscape.view.model.CyNetworkViewFactory;
import org.cytoscape.view.model.CyNetworkViewManager;
import org.cytoscape.view.model.events.AddedNodeViewsListener;
import org.cytoscape.view.vizmap.VisualMappingManager;
+import org.cytoscape.work.TaskManager;
import org.osgi.framework.BundleContext;
@@ -35,16 +40,24 @@
CyNetworkViewManager netViewMan =
getService(bc,CyNetworkViewManager.class);
VisualMappingManager visMan =
getService(bc,VisualMappingManager.class);
+ CyTableFactory tabFact = getService(bc,CyTableFactory.class);
+ CyTableManager tabMan = getService(bc,CyTableManager.class);
+
+ CyLayoutAlgorithmManager layMan =
getService(bc,CyLayoutAlgorithmManager.class);
+
CySwingApplication cytoscapeDesktopService =
getService(bc,CySwingApplication.class);
//Create instance of NetworkManager with the factories/managers
- NetworkManager myManager = new NetworkManager(netFact,
netViewFact, netMan, netViewMan);
+ NetworkManager myManager = new NetworkManager(netFact,
netViewFact, netMan, netViewMan, tabFact, tabMan);
//Create and register CytoBridge as a Service
CytoBridgeAction cytoBridgeAction = new
CytoBridgeAction(cytoscapeDesktopService, myManager);
registerService(bc,cytoBridgeAction,CyAction.class, new
Properties());
- NodeViewListener listen = new NodeViewListener(visMan);
+ TaskManager tm = getService(bc, TaskManager.class);
+ CyProperty cyPropertyServiceRef =
getService(bc,CyProperty.class,"(cyPropertyName=cytoscape3.props)");
+
+ NodeViewListener listen = new NodeViewListener(visMan, layMan,
tm, cyPropertyServiceRef);
registerService(bc,listen,AddedNodeViewsListener.class, new
Properties());
}
}
Modified:
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkManager.java
===================================================================
---
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkManager.java
2012-07-11 22:06:54 UTC (rev 29844)
+++
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkManager.java
2012-07-11 22:13:33 UTC (rev 29845)
@@ -1,5 +1,6 @@
package org.cytoscape.cytobridge;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
@@ -10,6 +11,8 @@
import org.cytoscape.model.CyNetworkManager;
import org.cytoscape.model.CyNode;
import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableFactory;
+import org.cytoscape.model.CyTableManager;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.CyNetworkViewFactory;
import org.cytoscape.view.model.CyNetworkViewManager;
@@ -24,9 +27,15 @@
private CyNetworkManager netMan;
private CyNetworkViewManager netViewMan;
+ private CyTableFactory tabFact;
+ private CyTableManager tabMan;
+
/** Maintains a reference to all networks created by the plugin. */
private Map<String, NetworkSync> currentNets;
+ /** Maintains a reference to all tables created by the plugin. */
+ private Map<String, CyTable> currentTabs;
+
/** Constructs this Network manager with the needed factories/managers.
*
* @param netFact
@@ -35,14 +44,20 @@
* @param netViewMan
*/
public NetworkManager(CyNetworkFactory netFact, CyNetworkViewFactory
netViewFact,
- CyNetworkManager
netMan, CyNetworkViewManager netViewMan) {
+ CyNetworkManager
netMan, CyNetworkViewManager netViewMan,
+ CyTableFactory tabFact,
CyTableManager tabMan) {
this.netFact = netFact;
this.netViewFact = netViewFact;
this.netMan = netMan;
this.netViewMan = netViewMan;
+ this.tabFact = tabFact;
+ this.tabMan = tabMan;
+
currentNets = new HashMap<String, NetworkSync>();
+
+ currentTabs = new HashMap<String, CyTable>();
}
/** Handles creation and updating of a network sent through the plugin.
@@ -52,16 +67,58 @@
* @param edgeFrom A vector of edge sources.
* @param edgeTo A vector of edge destinations.
*/
- public void pushNetwork(String netName, Vector<Integer> nodes,
Vector<Double> edgeFrom, Vector<Double> edgeTo) {
+ public void pushNetwork(String netName, Vector<Integer> nodes,
Vector<Integer> edges, Vector<Integer> edgeFrom, Vector<Integer> edgeTo) {
if (currentNets.containsKey(netName)) {
//Update the appropriate CyNetwork
System.out.println("Updating network "+netName);
CyNetwork network =
currentNets.get(netName).getNetwork();
- CyNode node = network.addNode();
- network.getRow(node).set(CyNetwork.NAME, "55");
- currentNets.get(netName).getNodeMap().put(55, node);
+ //Any nodes to Add?
+ for (Integer n : nodes) {
+ if
(!currentNets.get(netName).getNodeMap().containsKey(n)) {
+ System.out.println("Adding node "+n);
+ CyNode node = network.addNode();
+
network.getRow(node).set(CyNetwork.NAME, n+"");
+
currentNets.get(netName).getNodeMap().put(n, node);
+ }
+ }
+ //Any nodes to remove?
+ Vector<CyNode> remove = new Vector<CyNode>();
+ for (Integer n :
currentNets.get(netName).getNodeMap().keySet()) {
+ if (!nodes.contains(n)) {
+ System.out.println("Removing node "+n);
+
remove.add(currentNets.get(netName).getNodeMap().get(n));
+ }
+ }
+ network.removeNodes(remove);
+
+ //Any edges to Add?
+ int i = 0;
+ for (Integer e : edges) {
+ if
(!currentNets.get(netName).getEdgeMap().containsKey(e)) {
+ System.out.println("Adding edge "+e);
+ CyNode fromNode =
currentNets.get(netName).getNodeMap().get(edgeFrom.get(i).intValue());
+ CyNode toNode =
currentNets.get(netName).getNodeMap().get(edgeTo.get(i).intValue());
+ CyEdge edge = network.addEdge(fromNode,
toNode, false);
+
network.getRow(edge).set(CyNetwork.NAME, e+"");
+
currentNets.get(netName).getEdgeMap().put(e, edge);
+ }
+ i++;
+ }
+ //Any edges to remove?
+ Vector<CyEdge> removee = new Vector<CyEdge>();
+ for (Integer e :
currentNets.get(netName).getEdgeMap().keySet()) {
+ if (!edges.contains(e)) {
+ System.out.println("Removing edge "+e);
+
removee.add(currentNets.get(netName).getEdgeMap().get(e));
+ }
+ }
+ network.removeEdges(removee);
+ currentNets.get(netName).getNetworkView().updateView();
+
+ System.out.println("Done updating!");
+
} else {
//Create the CyNetwork
System.out.println("Creating network "+netName);
@@ -86,8 +143,8 @@
CyNode fromNode =
nodeMap.get(edgeFrom.get(e).intValue());
CyNode toNode =
nodeMap.get(edgeTo.get(e).intValue());
CyEdge edge = network.addEdge(fromNode, toNode,
false);
- network.getRow(edge).set(CyNetwork.NAME, e+"");
- edgeMap.put(e, edge);
+ network.getRow(edge).set(CyNetwork.NAME,
edges.get(e)+"");
+ edgeMap.put(edges.get(e), edge);
}
System.out.println("Got edges...");
@@ -101,44 +158,103 @@
netMan.addNetwork(network);
netViewMan.addNetworkView(networkView);
}
-
- //create network, record network id
- //create map from r-id to suid or Cynode
- //create similar ,map for edges
- //create all nodes, update maps
- //create all edges, update maps
- //create view
- //register network
- //register view
}
+ public void pushNetTable(String netName, Vector<String> gheads,
Vector<String> gdata) {
+ if (!currentNets.containsKey(netName)) {
+ System.out.println("That network doesn't exist!");
+ return ;
+ }
+ NetworkSync netSyn = currentNets.get(netName);
+
+ try {
+ //Network Attributes
+ CyTable gtable =
netSyn.getNetwork().getDefaultNetworkTable();
+ for (int g=0; g<gheads.size(); g++) {
+ if (gtable.getColumn(gheads.get(g))==null) {
+ gtable.createColumn(gheads.get(g),
String.class, true, "");
+ }
+
gtable.getRow(netSyn.getNetwork().getSUID()).set(gheads.get(g), gdata.get(g));
+ }
+ } catch(Exception e) {
+ System.out.println(e.getMessage());
+ }
+ System.out.println("Updating network table for network
"+netName);
+ }
- public void pushTables(String netName, Vector<String> nheads,
Vector<String> ndata, Vector<String> eheads, Vector<String> edata) {
+ public void pushNodeTable(String netName, Vector<String> nheads,
Vector<Integer> nrids, Vector<String> ndata) {
if (!currentNets.containsKey(netName)) {
System.out.println("That network doesn't exist!");
return ;
}
-
- CyNetwork network = currentNets.get(netName).getNetwork();
- CyTable ntable = network.getDefaultNodeTable();
-
- for (int n=0; n<nheads.size(); n++) {
- ntable.createColumn(nheads.get(n), String.class, true,
"");
- for (int i=0; i<ndata.size()/nheads.size();i++) {
- //ntable.getRow(i).set(nheads.get(n),
ndata.get(i));
+ NetworkSync netSyn = currentNets.get(netName);
+
+ try {
+ //Node attributes
+ CyTable ntable =
netSyn.getNetwork().getDefaultNodeTable();
+ for (int n=0; n<nheads.size(); n++) {
+ if (ntable.getColumn(nheads.get(n))==null) {
+ ntable.createColumn(nheads.get(n),
String.class, true, "");
+ }
+ for (int i=0; i<ndata.size()/nheads.size();i++)
{
+
ntable.getRow(netSyn.getNodeMap().get(nrids.get(i)).getSUID()).set(nheads.get(n),
ndata.get(i+(n*ndata.size()/nheads.size())));
+ }
}
+ } catch(Exception e) {
+ System.out.println(e.getMessage());
}
-
- CyTable etable = network.getDefaultEdgeTable();
-
- for (int e=0; e<eheads.size(); e++) {
- etable.createColumn(eheads.get(e), String.class, true,
"");
- for (int i=0; i<edata.size()/eheads.size();i++) {
- //etable.getRow(i).set(eheads.get(e),
edata.get(i));
+ System.out.println("Updating node table for network "+netName);
+ }
+
+ public void pushEdgeTable(String netName, Vector<String> eheads,
Vector<Integer> erids, Vector<String> edata) {
+ if (!currentNets.containsKey(netName)) {
+ System.out.println("That network doesn't exist!");
+ return ;
+ }
+ NetworkSync netSyn = currentNets.get(netName);
+
+ try {
+ //Edge Attributes
+ CyTable etable =
netSyn.getNetwork().getDefaultEdgeTable();
+ for (int e=0; e<eheads.size(); e++) {
+ if (etable.getColumn(eheads.get(e))==null) {
+ etable.createColumn(eheads.get(e),
String.class, true, "");
+ }
+ for (int i=0; i<edata.size()/eheads.size();i++)
{
+
etable.getRow(netSyn.getEdgeMap().get(erids.get(i)).getSUID()).set(eheads.get(e),
edata.get(i+(e*edata.size()/eheads.size())));
+ }
}
+ } catch(Exception e) {
+ System.out.println(e.getMessage());
}
-
- System.out.println("Updating tables for network "+netName);
+ System.out.println("Updating edge table for network "+netName);
}
+
+ public void pushTable(String tabName, Vector<String> heads,
Vector<String> data) {
+ if (currentTabs.containsKey(tabName)) {
+ //Update the appropriate CyTable
+ System.out.println("Updating table "+tabName);
+ CyTable table = currentTabs.get(tabName);
+ } else {
+ CyTable table= tabFact.createTable(tabName, "cytobid",
Integer.class, true, true);
+
+ try {
+ for (int e=0; e<heads.size(); e++) {
+ table.createColumn(heads.get(e),
String.class, true, "");
+ for (int i=0;
i<data.size()/heads.size();i++) {
+
//table.getRow().set(heads.get(e), data.get(i+(e*data.size()/heads.size())));
+ }
+ }
+ } catch(Exception e) {
+ System.out.println(e.getMessage());
+ }
+
+ //Store a reference to this network and its associated
maps
+ currentTabs.put(tabName, table);
+
+ //Add network and network view to appropriate managers
+ tabMan.addTable(table);
+ }
+ }
}
Modified:
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NodeViewListener.java
===================================================================
---
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NodeViewListener.java
2012-07-11 22:06:54 UTC (rev 29844)
+++
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NodeViewListener.java
2012-07-11 22:13:33 UTC (rev 29845)
@@ -1,40 +1,61 @@
package org.cytoscape.cytobridge;
-import java.util.Collection;
+import java.util.HashSet;
+import java.util.Properties;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
import org.cytoscape.model.CyRow;
+import org.cytoscape.property.CyProperty;
+import org.cytoscape.view.layout.CyLayoutAlgorithm;
+import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.View;
import org.cytoscape.view.model.events.AddedNodeViewsEvent;
import org.cytoscape.view.model.events.AddedNodeViewsListener;
import org.cytoscape.view.vizmap.VisualMappingManager;
import org.cytoscape.view.vizmap.VisualStyle;
+import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.TaskManager;
public class NodeViewListener implements AddedNodeViewsListener {
+ private static final String DEF_LAYOUT = "force-directed";
+
private VisualMappingManager visMan;
+ private CyLayoutAlgorithmManager layMan;
+ private TaskManager tm;
+ private Properties props;
- public NodeViewListener(VisualMappingManager visMan) {
+ public NodeViewListener(VisualMappingManager visMan,
CyLayoutAlgorithmManager layMan, TaskManager tm,
+ CyProperty<Properties>
cyPropertyServiceRef) {
this.visMan = visMan;
+ this.layMan = layMan;
+ this.tm = tm;
+ this.props = cyPropertyServiceRef.getProperties();
}
public void handleEvent(AddedNodeViewsEvent e) {
//update layout automatically (of new nodes)
CyNetworkView networkView = e.getSource();
- Collection<CyRow> wasSelected =
networkView.getModel().getDefaultNodeTable().getMatchingRows(CyNetwork.SELECTED,
true);
- for (CyRow node : wasSelected) {
- node.set(CyNetwork.SELECTED, false);
- }
VisualStyle style = visMan.getVisualStyle(networkView);
for (View<CyNode> v : e.getNodeViews()) {
-
networkView.getModel().getRow(v.getModel()).set(CyNetwork.SELECTED, true);
style.apply(networkView.getModel().getRow(v.getModel()),
networkView.getNodeView(v.getModel()));
}
- for (CyRow node : wasSelected) {
- node.set(CyNetwork.SELECTED, true);
+
+ String pref = CyLayoutAlgorithmManager.DEFAULT_LAYOUT_NAME;
+ if (props != null)
+ pref = props.getProperty("preferredLayoutAlgorithm",
DEF_LAYOUT);
+
+ final CyLayoutAlgorithm layout = layMan.getLayout(pref);
+ if (layout != null) {
+ TaskIterator ti =
layout.createTaskIterator(networkView, layout.getDefaultLayoutContext(),
+ new
HashSet<View<CyNode>>(e.getNodeViews()), "");
+ tm.execute(ti);
+ } else {
+ throw new IllegalArgumentException("Couldn't find
layout algorithm: " + pref);
}
+
networkView.updateView();
}
Modified:
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCCallHandler.java
===================================================================
---
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCCallHandler.java
2012-07-11 22:06:54 UTC (rev 29844)
+++
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCCallHandler.java
2012-07-11 22:13:33 UTC (rev 29845)
@@ -69,22 +69,43 @@
return "Thanks";
}
- public String pushNetwork(String name, Vector<Integer> nodes,
Vector<Double> edgeFrom, Vector<Double> edgeTo) throws XmlRpcException {
+ public String pushNetwork(String name, Vector<Integer> nodes,
Vector<Integer> edges, Vector<Integer> edgeFrom, Vector<Integer> edgeTo) throws
XmlRpcException {
if (edgeFrom.size()!=edgeTo.size()) {
throw new XmlRpcException("ERROR: Edge mismatch!");
}
System.out.println("Got "+nodes.size()+" nodes.");
- myManager.pushNetwork(name, nodes, edgeFrom, edgeTo);
+ try {
+ myManager.pushNetwork(name, nodes, edges, edgeFrom, edgeTo);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
return "Pushed to Cytoscape.";
}
- public String pushTables(String name, Vector<String> nheads, Vector<String>
ndata, Vector<String> eheads, Vector<String> edata) {
- myManager.pushTables(name, nheads, ndata, eheads, edata);
+ /*
+ public String pushTables(String name, Vector<String> gheads, Vector<String>
gdata, Vector<String> nheads, Vector<Integer> nrids, Vector<String> ndata,
Vector<String> eheads, Vector<Integer> erids, Vector<String> edata) {
+ myManager.pushTables(name, gheads, gdata, nheads, nrids, ndata,
eheads, erids, edata);
return "Pushed to Cytoscape.";
+ }*/
+
+ public void pushNetTable(String name, Vector<String> gheads, Vector<String>
gdata) {
+ myManager.pushNetTable(name, gheads, gdata);
}
+
+ public void pushNodeTable(String name, Vector<String> nheads,
Vector<Integer> nrids, Vector<String> ndata) {
+ myManager.pushNodeTable(name, nheads, nrids, ndata);
+ }
+ public void pushEdgeTable(String name, Vector<String> eheads,
Vector<Integer> erids, Vector<String> edata) {
+ myManager.pushEdgeTable(name, eheads, erids, edata);
+ }
+
+ public void pushTable(String name, Vector<String> heads, Vector<String>
data) {
+ myManager.pushTable(name, heads, data);
+ }
+
/**
* Returns a string representing the version of the plugin.
--
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.