Author: jm
Date: 2012-05-04 13:12:38 -0700 (Fri, 04 May 2012)
New Revision: 29116

Modified:
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllEdgesTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllNodesTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllEdgesTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllNodesTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllTask.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllEdgesTaskTest.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllNodesTaskTest.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllTaskTest.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllEdgesTaskTest.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllNodesTaskTest.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllTaskTest.java
   
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
Log:
Fixes #946: Optimized the way selection is done by reducing number of heap 
allocations and method calls;  Changed CyNode's "selected" attribute to default 
to false when created instead of null.

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllEdgesTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllEdgesTask.java
  2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllEdgesTask.java
  2012-05-04 20:12:38 UTC (rev 29116)
@@ -34,6 +34,7 @@
 
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyTableUtil;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
@@ -61,7 +62,7 @@
                undoSupport.postEdit(new SelectionEdit(eventHelper, "Deselect 
All Edges", network, view,
                                SelectionEdit.SelectionFilter.EDGES_ONLY));
                tm.setProgress(0.2);
-               selectUtils.setSelectedEdges(network, network.getEdgeList(), 
false);
+               selectUtils.setSelectedEdges(network, 
CyTableUtil.getEdgesInState(network, CyNetwork.SELECTED, true), false);
                tm.setProgress(0.6);
                updateView();
                tm.setProgress(1.0);

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllNodesTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllNodesTask.java
  2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllNodesTask.java
  2012-05-04 20:12:38 UTC (rev 29116)
@@ -34,6 +34,7 @@
 
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyTableUtil;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
@@ -62,7 +63,7 @@
                undoSupport.postEdit(new SelectionEdit(eventHelper, "Deselect 
All Nodes", network, view,
                                SelectionEdit.SelectionFilter.NODES_ONLY));
                tm.setProgress(0.2);
-               selectUtils.setSelectedNodes(network, network.getNodeList(), 
false);
+               selectUtils.setSelectedNodes(network, 
CyTableUtil.getNodesInState(network, CyNetwork.SELECTED, true), false);
                tm.setProgress(0.7);
                updateView();
                tm.setProgress(1.0);

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllTask.java
       2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/DeselectAllTask.java
       2012-05-04 20:12:38 UTC (rev 29116)
@@ -34,6 +34,7 @@
 
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyTableUtil;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
@@ -62,9 +63,9 @@
                        new SelectionEdit(eventHelper, "Deselect All Nodes and 
Edges", network, view,
                                          
SelectionEdit.SelectionFilter.NODES_AND_EDGES));
                tm.setProgress(0.2);
-               selectUtils.setSelectedEdges(network, network.getEdgeList(), 
false);
+               selectUtils.setSelectedEdges(network, 
CyTableUtil.getEdgesInState(network, CyNetwork.SELECTED, true), false);
                tm.setProgress(0.5);
-               selectUtils.setSelectedNodes(network, network.getNodeList(), 
false);
+               selectUtils.setSelectedNodes(network, 
CyTableUtil.getNodesInState(network, CyNetwork.SELECTED, true), false);
                tm.setProgress(0.7);
                updateView();
                tm.setProgress(1.0);

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllEdgesTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllEdgesTask.java
    2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllEdgesTask.java
    2012-05-04 20:12:38 UTC (rev 29116)
@@ -34,6 +34,7 @@
 
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyTableUtil;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
@@ -62,7 +63,7 @@
                        new SelectionEdit(eventHelper, "Select All Edges", 
network, view,
                                          
SelectionEdit.SelectionFilter.EDGES_ONLY));
                tm.setProgress(0.3);
-               selectUtils.setSelectedEdges(network,network.getEdgeList(), 
true);
+               selectUtils.setSelectedEdges(network, 
CyTableUtil.getEdgesInState(network, CyNetwork.SELECTED, false), true);
                tm.setProgress(0.8);
                updateView();
                tm.setProgress(1.0);

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllNodesTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllNodesTask.java
    2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllNodesTask.java
    2012-05-04 20:12:38 UTC (rev 29116)
@@ -34,6 +34,7 @@
 
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyTableUtil;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
@@ -64,7 +65,7 @@
                        new SelectionEdit(eventHelper, "Select All Nodes", 
network, view,
                                          
SelectionEdit.SelectionFilter.NODES_ONLY));
                tm.setProgress(0.2);
-               selectUtils.setSelectedNodes(network,network.getNodeList(), 
true);
+               
selectUtils.setSelectedNodes(network,CyTableUtil.getNodesInState(network, 
CyNetwork.SELECTED, false), true);
                tm.setProgress(0.6);
                updateView();
                tm.setProgress(1.0);

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllTask.java
 2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/select/SelectAllTask.java
 2012-05-04 20:12:38 UTC (rev 29116)
@@ -34,6 +34,7 @@
 
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyTableUtil;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
@@ -62,9 +63,9 @@
                        new SelectionEdit(eventHelper, "Select All Nodes and 
Edges", network, view,
                                          
SelectionEdit.SelectionFilter.NODES_AND_EDGES));
                monitor.setProgress(0.2);
-               selectUtils.setSelectedNodes(network, network.getNodeList(), 
true);
+               selectUtils.setSelectedNodes(network, 
CyTableUtil.getNodesInState(network, CyNetwork.SELECTED, false), true);
                monitor.setProgress(0.5);
-               selectUtils.setSelectedEdges(network, network.getEdgeList(), 
true);
+               selectUtils.setSelectedEdges(network, 
CyTableUtil.getEdgesInState(network, CyNetwork.SELECTED, false), true);
                monitor.setProgress(0.8);
                updateView();
                monitor.setProgress(1.0);

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllEdgesTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllEdgesTaskTest.java
      2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllEdgesTaskTest.java
      2012-05-04 20:12:38 UTC (rev 29116)
@@ -33,7 +33,12 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.HashSet;
+import java.util.Set;
 
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.undo.UndoSupport;
@@ -53,6 +58,16 @@
                when(net.getDefaultEdgeTable()).thenReturn(edgeTable);
                UndoSupport undoSupport = mock(UndoSupport.class);
 
+               Set<CyRow> selectedEdges = new HashSet<CyRow>();
+               selectedEdges.add(r1);
+               selectedEdges.add(r2);
+               when(edgeTable.getMatchingRows(CyNetwork.SELECTED, 
true)).thenReturn(selectedEdges);
+               
+               when (r1.get(CyNetwork.SUID, Long.class)).thenReturn(1L);
+               when (net.getEdge(1L)).thenReturn(e1);
+               when (r2.get(CyNetwork.SUID, Long.class)).thenReturn(2L);
+               when (net.getEdge(2L)).thenReturn(e2);
+
                // run the task
                Task t = new DeselectAllEdgesTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.run(tm);

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllNodesTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllNodesTaskTest.java
      2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllNodesTaskTest.java
      2012-05-04 20:12:38 UTC (rev 29116)
@@ -33,7 +33,12 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.HashSet;
+import java.util.Set;
 
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.undo.UndoSupport;
@@ -53,6 +58,16 @@
                when(net.getDefaultNodeTable()).thenReturn(nodeTable);
                UndoSupport undoSupport = mock(UndoSupport.class);
 
+               Set<CyRow> selectedNodes = new HashSet<CyRow>();
+               selectedNodes.add(r3);
+               selectedNodes.add(r4);
+               when(nodeTable.getMatchingRows(CyNetwork.SELECTED, 
true)).thenReturn(selectedNodes);
+               
+               when (r3.get(CyNetwork.SUID, Long.class)).thenReturn(3L);
+               when (net.getNode(3L)).thenReturn(e3);
+               when (r4.get(CyNetwork.SUID, Long.class)).thenReturn(4L);
+               when (net.getNode(4L)).thenReturn(e4);
+               
                // run the task
                Task t = new DeselectAllNodesTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.run(tm);

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllTaskTest.java
   2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/DeselectAllTaskTest.java
   2012-05-04 20:12:38 UTC (rev 29116)
@@ -33,7 +33,12 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.HashSet;
+import java.util.Set;
 
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.undo.UndoSupport;
@@ -55,6 +60,26 @@
                when(net.getDefaultEdgeTable()).thenReturn(edgeTable);
                UndoSupport undoSupport = mock(UndoSupport.class);
 
+               Set<CyRow> selectedEdges = new HashSet<CyRow>();
+               selectedEdges.add(r1);
+               selectedEdges.add(r2);
+               when(edgeTable.getMatchingRows(CyNetwork.SELECTED, 
true)).thenReturn(selectedEdges);
+               
+               when (r1.get(CyNetwork.SUID, Long.class)).thenReturn(1L);
+               when (net.getEdge(1L)).thenReturn(e1);
+               when (r2.get(CyNetwork.SUID, Long.class)).thenReturn(2L);
+               when (net.getEdge(2L)).thenReturn(e2);
+
+               Set<CyRow> selectedNodes = new HashSet<CyRow>();
+               selectedNodes.add(r3);
+               selectedNodes.add(r4);
+               when(nodeTable.getMatchingRows(CyNetwork.SELECTED, 
true)).thenReturn(selectedNodes);
+               
+               when (r3.get(CyNetwork.SUID, Long.class)).thenReturn(3L);
+               when (net.getNode(3L)).thenReturn(e3);
+               when (r4.get(CyNetwork.SUID, Long.class)).thenReturn(4L);
+               when (net.getNode(4L)).thenReturn(e4);
+
                // run the task
                Task t = new DeselectAllTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.run(tm);

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllEdgesTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllEdgesTaskTest.java
        2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllEdgesTaskTest.java
        2012-05-04 20:12:38 UTC (rev 29116)
@@ -33,7 +33,12 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.HashSet;
+import java.util.Set;
 
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.undo.UndoSupport;
@@ -53,6 +58,16 @@
                when(net.getDefaultEdgeTable()).thenReturn(edgeTable);
                UndoSupport undoSupport = mock(UndoSupport.class);
 
+               Set<CyRow> deselectedEdges = new HashSet<CyRow>();
+               deselectedEdges.add(r1);
+               deselectedEdges.add(r2);
+               when(edgeTable.getMatchingRows(CyNetwork.SELECTED, 
false)).thenReturn(deselectedEdges);
+               
+               when (r1.get(CyNetwork.SUID, Long.class)).thenReturn(1L);
+               when (net.getEdge(1L)).thenReturn(e1);
+               when (r2.get(CyNetwork.SUID, Long.class)).thenReturn(2L);
+               when (net.getEdge(2L)).thenReturn(e2);
+
                // run the task
                Task t = new SelectAllEdgesTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.run(tm);

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllNodesTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllNodesTaskTest.java
        2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllNodesTaskTest.java
        2012-05-04 20:12:38 UTC (rev 29116)
@@ -33,7 +33,12 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.HashSet;
+import java.util.Set;
 
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.undo.UndoSupport;
@@ -53,6 +58,16 @@
                when(net.getDefaultNodeTable()).thenReturn(nodeTable);
                UndoSupport undoSupport = mock(UndoSupport.class);
 
+               Set<CyRow> deselectedNodes = new HashSet<CyRow>();
+               deselectedNodes.add(r3);
+               deselectedNodes.add(r4);
+               when(nodeTable.getMatchingRows(CyNetwork.SELECTED, 
false)).thenReturn(deselectedNodes);
+               
+               when (r3.get(CyNetwork.SUID, Long.class)).thenReturn(3L);
+               when (net.getNode(3L)).thenReturn(e3);
+               when (r4.get(CyNetwork.SUID, Long.class)).thenReturn(4L);
+               when (net.getNode(4L)).thenReturn(e4);
+               
                // run the task
                Task t = new SelectAllNodesTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.run(tm);

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllTaskTest.java
     2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAllTaskTest.java
     2012-05-04 20:12:38 UTC (rev 29116)
@@ -33,7 +33,12 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.HashSet;
+import java.util.Set;
 
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.undo.UndoSupport;
@@ -55,6 +60,26 @@
                when(net.getDefaultEdgeTable()).thenReturn(edgeTable);
                UndoSupport undoSupport = mock(UndoSupport.class);
 
+               Set<CyRow> deselectedNodes = new HashSet<CyRow>();
+               deselectedNodes.add(r3);
+               deselectedNodes.add(r4);
+               when(nodeTable.getMatchingRows(CyNetwork.SELECTED, 
false)).thenReturn(deselectedNodes);
+               
+               when (r3.get(CyNetwork.SUID, Long.class)).thenReturn(3L);
+               when (net.getNode(3L)).thenReturn(e3);
+               when (r4.get(CyNetwork.SUID, Long.class)).thenReturn(4L);
+               when (net.getNode(4L)).thenReturn(e4);
+
+               Set<CyRow> deselectedEdges = new HashSet<CyRow>();
+               deselectedEdges.add(r1);
+               deselectedEdges.add(r2);
+               when(edgeTable.getMatchingRows(CyNetwork.SELECTED, 
false)).thenReturn(deselectedEdges);
+               
+               when (r1.get(CyNetwork.SUID, Long.class)).thenReturn(1L);
+               when (net.getEdge(1L)).thenReturn(e1);
+               when (r2.get(CyNetwork.SUID, Long.class)).thenReturn(2L);
+               when (net.getEdge(2L)).thenReturn(e2);
+
                // run the task
                Task t = new SelectAllTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.run(tm);

Modified: 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
   2012-05-04 20:09:49 UTC (rev 29115)
+++ 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
   2012-05-04 20:12:38 UTC (rev 29116)
@@ -50,7 +50,6 @@
 import org.cytoscape.model.events.RemovedNodesEvent;
 import org.cytoscape.model.subnetwork.CyRootNetwork;
 import org.cytoscape.model.subnetwork.CySubNetwork;
-import org.mockito.cglib.core.Local;
 
 
 /**
@@ -102,6 +101,7 @@
                        ret = parent.addNode();
                        // then add the resulting CyNode to this network
                        addNodeInternal(ret);
+                       getRow(ret).set(SELECTED, false);
                }
 
                if (fireAddedNodesAndEdgesEvents)

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