Author: clopes
Date: 2012-01-23 14:04:00 -0800 (Mon, 23 Jan 2012)
New Revision: 28075

Modified:
   
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/AtomicFilter.java
   
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/CompositeFilter.java
   
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/EdgeInteractionFilter.java
   
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/InteractionFilter.java
   
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/NodeInteractionFilter.java
   
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/TopologyFilter.java
Log:
Fixes #624 : [Filters] Wrong combo-box labels

Modified: 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/AtomicFilter.java
===================================================================
--- 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/AtomicFilter.java
  2012-01-23 18:35:06 UTC (rev 28074)
+++ 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/AtomicFilter.java
  2012-01-23 22:04:00 UTC (rev 28075)
@@ -74,7 +74,6 @@
                return network;
        }
 
-       
        public GenericIndex getIndex() {
                return quickFind_index;
        }

Modified: 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/CompositeFilter.java
===================================================================
--- 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/CompositeFilter.java
       2012-01-23 18:35:06 UTC (rev 28074)
+++ 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/CompositeFilter.java
       2012-01-23 22:04:00 UTC (rev 28075)
@@ -55,20 +55,19 @@
        protected boolean negation;
        //Relation relation;
        protected String name;
-       protected BitSet node_bits, edge_bits;
+       protected BitSet nodeBits, edgeBits;
        protected boolean childChanged = true;// so we calculate the first time 
through
        protected CyFilter parent;
        protected String description;
        protected AdvancedSetting advancedSetting = null;
        //private int indexType = -1; //QuickFind.INDEX_NODES 
//QuickFind.INDEX_EDGES 
        protected CyNetwork network;
-       private Logger logger = null;
-
        protected Hashtable<CompositeFilter, Boolean> compositeNotTab = new 
Hashtable<CompositeFilter, Boolean>();
        protected CyApplicationManager applicationManager;
        
+       private static Logger logger = LoggerFactory.getLogger(FilterApp.class);
+       
        public CompositeFilter(CyApplicationManager applicationManager) {
-               logger = LoggerFactory.getLogger(FilterPlugin.class);
                advancedSetting = new AdvancedSetting();
                children = new LinkedList<CyFilter>();
                this.applicationManager = applicationManager;
@@ -76,7 +75,6 @@
 
        public CompositeFilter(String pName) {
                name = pName;
-               logger = LoggerFactory.getLogger(FilterPlugin.class);
                advancedSetting = new AdvancedSetting();
                children = new LinkedList<CyFilter>();
        }
@@ -85,15 +83,19 @@
                if (network != null && network == pNetwork) {
                        return;
                }
+               
                network = pNetwork;
+               
                // Set network for all the children
                if (children == null || children.size() == 0){
                        return;
                }
+               
                for (int i=0; i< children.size(); i++) {
                        children.get(i).setNetwork(pNetwork);
                        children.get(i).childChanged();
                }
+               
                childChanged();
        }
        
@@ -111,7 +113,6 @@
        }
        
        public boolean passesFilter(Object obj) {
-               
                List<CyNode> nodes_list = null;
                List<CyEdge> edges_list=null;
 
@@ -119,13 +120,13 @@
                if (obj instanceof CyNode) {
                        nodes_list = network.getNodeList();
                        index = nodes_list.lastIndexOf(obj);    
-                       return node_bits.get(index);                    
+                       return nodeBits.get(index);                     
                }
                
                if (obj instanceof CyEdge) {
                        edges_list = network.getEdgeList();
                        index = edges_list.lastIndexOf(obj);    
-                       return edge_bits.get(index);                    
+                       return edgeBits.get(index);                     
                }
                
                return false;
@@ -134,113 +135,104 @@
        public void setNegation(boolean pNegation) {
                negation = pNegation;
        }
+       
        public boolean getNegation() {
                return negation;
        }
        
        private void calculateNodeBitSet() {
-               //System.out.println("Entering 
CompositeFilter.calculatNodeBits() ... ");       
-       
                // set the initial bits to a clone of the first child
                if (children.get(0).getNodeBits() == null) {
-                       node_bits = new BitSet(network.getNodeCount()); 
+                       nodeBits = new BitSet(network.getNodeCount());  
+               } else {
+                       nodeBits = (BitSet) 
children.get(0).getNodeBits().clone();                                          
    
                }
-               else {
-                       node_bits = (BitSet) 
children.get(0).getNodeBits().clone();                                          
   
-               }
 
                // now perform the requested relation with each subsequent child
                for ( int i = 1; i < children.size(); i++ ) {
                        CyFilter n = children.get(i);
+                       
                        if ( advancedSetting.getRelation() == Relation.AND ) {  
                                if (n.getNodeBits() == null) {
-                                       node_bits = new BitSet();//all set to 
false
+                                       nodeBits = new BitSet();//all set to 
false
                                        return;
                                }
+                               
                                if ((n instanceof 
CompositeFilter)&&(compositeNotTab.get(n).booleanValue()==true)) {
                                        BitSet tmpBitSet = (BitSet) 
n.getNodeBits().clone();                                    
                                        tmpBitSet.flip(0, 
network.getNodeCount());
-                                       node_bits.and(tmpBitSet);               
                                                                        
+                                       nodeBits.and(tmpBitSet);                
                                                                        
+                               } else {
+                                       nodeBits.and(n.getNodeBits());          
                                                                        
                                }
-                               else {
-                                       node_bits.and(n.getNodeBits());         
                                                                        
-                               }
-                               
                        } else if ( advancedSetting.getRelation() == 
Relation.OR ) {
                                if (n.getNodeBits() != null) {
-                                       if ((n instanceof 
CompositeFilter)&&(compositeNotTab.get(n).booleanValue()==true)) {
+                                       if ((n instanceof CompositeFilter) && 
(compositeNotTab.get(n).booleanValue() == true)) {
                                                BitSet tmpBitSet = (BitSet) 
n.getNodeBits().clone();
                                                tmpBitSet.flip(0, 
network.getNodeCount());
-                                               node_bits.or(tmpBitSet);        
                                                                                
+                                               nodeBits.or(tmpBitSet);         
                                                                        
+                                       } else {
+                                               nodeBits.or(n.getNodeBits());   
                                        
                                        }
-                                       else {
-                                               node_bits.or(n.getNodeBits());  
                                        
-                                       }
                                }
-                       }
-                       else { //advancedSetting.getRelation() == 
Relation.XOR|NOR 
+                       } else { //advancedSetting.getRelation() == 
Relation.XOR|NOR 
                                logger.warn("CompositeFilter: Relation.XOR|NOR: 
not implemented yet");
                        } 
                }
 
                if (negation) {
-                               node_bits.flip(0, network.getNodeCount());
+                       nodeBits.flip(0, network.getNodeCount());
                }
        }
        
-       
        private void calculateEdgeBitSet() {
-               //System.out.println("Entering 
CompositeFilter.calculatEdgeBits() ... ");       
-                               
                // if there are no children, just return an empty bitset
                if ( children.size() <= 0 ) {
-                       edge_bits = new BitSet();
+                       edgeBits = new BitSet();
                        return;
                }
 
                // set the initial bits to a clone of the first child
                if (children.get(0).getEdgeBits() == null) {
-                       edge_bits = new BitSet();
+                       edgeBits = new BitSet();
+               } else {
+                       edgeBits = (BitSet) 
children.get(0).getEdgeBits().clone();                                          
    
                }
-               else {
-                       edge_bits = (BitSet) 
children.get(0).getEdgeBits().clone();                                          
   
-               }
 
                // now perform the requested relation with each subsequent child
                for ( int i = 1; i < children.size(); i++ ) {
                        CyFilter n = children.get(i);
+                       
                        if ( advancedSetting.getRelation() == Relation.AND ) {  
                                if (n.getEdgeBits() == null) {
-                                       edge_bits =  new BitSet(); 
+                                       edgeBits =  new BitSet(); 
                                        return;//all set to false
                                }
+                               
                                if ((n instanceof 
CompositeFilter)&&(compositeNotTab.get(n).booleanValue()==true)) {
                                        BitSet tmpBitSet = (BitSet) 
n.getEdgeBits().clone();
                                        tmpBitSet.flip(0, 
network.getEdgeCount());
-                                       edge_bits.and(tmpBitSet);               
                                                                        
-                               }
-                               else {
-                                       edge_bits.and(n.getEdgeBits());         
                                                                        
+                                       edgeBits.and(tmpBitSet);                
                                                                        
+                               } else {
+                                       edgeBits.and(n.getEdgeBits());          
                                                                        
                                }                               
                        } else if ( advancedSetting.getRelation() == 
Relation.OR ) {
                                if (n.getEdgeBits() != null) {
                                        if ((n instanceof 
CompositeFilter)&&(compositeNotTab.get(n).booleanValue()==true)) {
                                                BitSet tmpBitSet = (BitSet) 
n.getEdgeBits().clone();
                                                tmpBitSet.flip(0, 
network.getEdgeCount());
-                                               edge_bits.or(tmpBitSet);        
                                                                                
+                                               edgeBits.or(tmpBitSet);         
                                                                        
+                                       } else {
+                                               edgeBits.or(n.getEdgeBits());   
                                        
                                        }
-                                       else {
-                                               edge_bits.or(n.getEdgeBits());  
                                        
-                                       }
                                }
-                       }
-                       else { //advancedSetting.getRelation() == 
Relation.XOR|NOR 
+                       } else { //advancedSetting.getRelation() == 
Relation.XOR|NOR 
                                logger.warn("CompositeFilter: Relation.XOR|NOR: 
not implemented yet");
                        } 
                }
 
                if (negation) {
-                               edge_bits.flip(0, network.getEdgeCount());
+                               edgeBits.flip(0, network.getEdgeCount());
                }
        }
        
@@ -258,8 +250,8 @@
                                
                // if there are no children, just create empty bitSet
                if ( children.size() <= 0 ) {
-                       node_bits = new BitSet(network.getNodeCount());
-                       edge_bits = new BitSet(network.getEdgeCount());
+                       nodeBits = new BitSet(network.getNodeCount());
+                       edgeBits = new BitSet(network.getEdgeCount());
                        return;
                }
 
@@ -276,7 +268,6 @@
                childChanged = false;
        }
        
-       
        private void updateSelectionType() {
                boolean selectNode = false;
                boolean selectEdge = false;
@@ -309,15 +300,14 @@
 
        public BitSet getEdgeBits() {
                apply();
-               return edge_bits;
+               return edgeBits;
        }
        
        public BitSet getNodeBits() {
                apply();
-               return node_bits;
+               return nodeBits;
        }
 
-       
        public void removeChild( CyFilter pChild ) {
                if (pChild instanceof CompositeFilter) {
                        compositeNotTab.remove(pChild);
@@ -360,7 +350,6 @@
                // notify parents
                childChanged();
        }
-
        
        // called by any children
        public void childChanged() {
@@ -390,7 +379,6 @@
                name = pName;
        }
 
-       
        public String getDescription() {
                return description;
        }
@@ -425,6 +413,7 @@
     public String getLabel() {
         AdvancedSetting as = getAdvancedSetting();
         String prefix = "";
+        
         if (as.isGlobalChecked()) {
             prefix = "global: ";
         }
@@ -435,13 +424,6 @@
         return prefix + getName();
     }
 
-       /**
-        * @return the string represention of this Filter.
-        */
-       public String toString() {
-               return getLabel();
-       }
-       
        public String toSerializedForm() {
                String retStr = "<Composite>\n";
                
@@ -450,42 +432,50 @@
                retStr = retStr + "Negation=" + negation + "\n";
 
                for (int i=0; i< children.size(); i++) {
-
                        if (children.get(i) instanceof AtomicFilter) {
                                AtomicFilter atomicFilter = 
(AtomicFilter)children.get(i);
                                retStr = retStr + atomicFilter.toString()+"\n";
-                       }
-                       else  {// it is a CompositeFilter
+                       } else  {// it is a CompositeFilter
                                CompositeFilter tmpFilter = 
(CompositeFilter)children.get(i);
                                retStr = retStr + "CompositeFilter=" + 
tmpFilter.getName()+ ":" + compositeNotTab.get(tmpFilter)+"\n";
                        }
                }
+               
                retStr += "</Composite>";
 
                return retStr;
        }
 
-       /**
-        */
+       @Override
        public boolean equals(Object other_object) {
                if (!(other_object instanceof CompositeFilter)) {
                        return false;
                }
+               
                CompositeFilter theOtherFilter = (CompositeFilter) other_object;
                
                if 
(theOtherFilter.toSerializedForm().equalsIgnoreCase(this.toSerializedForm())) {
                        return true;
                }
+               
                return false;
        }
 
        /**
         * CompositeFilter may be cloned.
         */
+       @Override
        public Object clone() {
                logger.warn("CompositeFilter.clone() not implemented yet");
                
                return null;
-       }       
-
+       }
+       
+       /**
+        * @return the string represention of this Filter.
+        */
+    @Override
+       public String toString() {
+               return getLabel();
+       }
 }

Modified: 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/EdgeInteractionFilter.java
===================================================================
--- 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/EdgeInteractionFilter.java
 2012-01-23 18:35:06 UTC (rev 28074)
+++ 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/EdgeInteractionFilter.java
 2012-01-23 22:04:00 UTC (rev 28075)
@@ -92,18 +92,18 @@
                // EdgeInteractionFilter will select edge only
                edges_list = network.getEdgeList();
                int objectCount = edges_list.size();
-               edge_bits = new BitSet(objectCount); // all the bits are false 
at very beginning
+               edgeBits = new BitSet(objectCount); // all the bits are false 
at very beginning
 
                if (nodeType != NODE_UNDEFINED) {
                        for (int i=0; i<objectCount; i++) {
                                if (isHit(edges_list.get(i), 
passFilter_nodeBits)) {
-                                       edge_bits.set(i);
+                                       edgeBits.set(i);
                                }
                        }                       
                }
                        
                if (negation) {
-                       edge_bits.flip(0, objectCount);
+                       edgeBits.flip(0, objectCount);
                }
 
                childChanged = false;

Modified: 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/InteractionFilter.java
===================================================================
--- 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/InteractionFilter.java
     2012-01-23 18:35:06 UTC (rev 28074)
+++ 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/InteractionFilter.java
     2012-01-23 22:04:00 UTC (rev 28075)
@@ -57,7 +57,6 @@
                super(applicationManager);
        }
 
-
        public InteractionFilter(String pName, CyApplicationManager 
applicationManager) {
                super(applicationManager);
                name = pName;
@@ -80,19 +79,20 @@
                if (nodeType == pNodeType) {
                        return;
                }
+               
                nodeType = pNodeType;
+               
                if (nodeType == NODE_SOURCE) {
                        isSourceChecked = true;
                        isTargetChecked = false;
-               }
-               else if (nodeType == NODE_TARGET) {
+               } else if (nodeType == NODE_TARGET) {
                        isSourceChecked = false;
-                       isTargetChecked = true;                 
-               }
-               else if (nodeType == NODE_SOURCE_TARGET) {
+                       isTargetChecked = true;
+               } else if (nodeType == NODE_SOURCE_TARGET) {
                        isSourceChecked = true;
-                       isTargetChecked = true;                                 
+                       isTargetChecked = true;
                }
+               
                childChanged = true;
        }
 
@@ -114,23 +114,7 @@
                updateNodeType();               
        }
        
-       private void updateNodeType() {
-               //update nodeType
-               if (isSourceChecked && isTargetChecked) {
-                       nodeType = NODE_SOURCE_TARGET;
-               }
-               else if (isSourceChecked) {
-                       nodeType = NODE_SOURCE;
-               }
-               else if (isTargetChecked) {
-                       nodeType = NODE_TARGET;
-               }
-               else {
-                       nodeType = NODE_UNDEFINED;
-               }
-       }
-       
-                               
+       @Override
        public void setNetwork(CyNetwork pNetwork) {
                if (network != null && network == pNetwork) {
                        return;
@@ -143,8 +127,8 @@
                childChanged();
        }
        
-       
-       public String toString() {
+       @Override
+       public String toSerializedForm() {
                String retStr = "<InteractionFilter>\n";
                
                retStr = retStr + "name=" + name + "\n";
@@ -154,8 +138,7 @@
 
                if (passFilter == null) {
                        retStr += "passFilter=null\n";                  
-               }
-               else {
+               } else {
                        retStr += "passFilter=" + passFilter.getName()+"\n";    
                                        
                }
                
@@ -163,4 +146,17 @@
 
                return retStr;
        }
+       
+       private void updateNodeType() {
+               //update nodeType
+               if (isSourceChecked && isTargetChecked) {
+                       nodeType = NODE_SOURCE_TARGET;
+               } else if (isSourceChecked) {
+                       nodeType = NODE_SOURCE;
+               } else if (isTargetChecked) {
+                       nodeType = NODE_TARGET;
+               } else {
+                       nodeType = NODE_UNDEFINED;
+               }
+       }
 }

Modified: 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/NodeInteractionFilter.java
===================================================================
--- 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/NodeInteractionFilter.java
 2012-01-23 18:35:06 UTC (rev 28074)
+++ 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/NodeInteractionFilter.java
 2012-01-23 22:04:00 UTC (rev 28075)
@@ -90,18 +90,18 @@
                // NodeInteractionFilter will select node only
                nodes_list = network.getNodeList();
                int objectCount = nodes_list.size();
-               node_bits = new BitSet(objectCount); // all the bits are false 
at very beginning
+               nodeBits = new BitSet(objectCount); // all the bits are false 
at very beginning
                        
                if ((nodeType != 
NODE_UNDEFINED)&&(!passFilter.getName().equalsIgnoreCase("None"))) {
                        for (int i=0; i<objectCount; i++) {
                                if (isHit(nodes_list.get(i))) {
-                                       node_bits.set(i);
+                                       nodeBits.set(i);
                                }
                        }                       
                }
                        
                if (negation) {
-                       node_bits.flip(0, objectCount);
+                       nodeBits.flip(0, objectCount);
                }
 
                childChanged = false;

Modified: 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/TopologyFilter.java
===================================================================
--- 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/TopologyFilter.java
        2012-01-23 18:35:06 UTC (rev 28074)
+++ 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/TopologyFilter.java
        2012-01-23 22:04:00 UTC (rev 28075)
@@ -93,17 +93,19 @@
                return withinDistance;
        }
 
+       @Override
        public BitSet getNodeBits() {
                apply();
-               return node_bits;
+               return nodeBits;
        }
        
+       @Override
        public BitSet getEdgeBits(){
                apply();
-               return edge_bits;               
+               return edgeBits;                
        }
        
-       
+       @Override
        public void apply() {
                if ( !childChanged ) 
                        return;
@@ -140,29 +142,71 @@
                        }
                        
                        //
-                       node_bits = new BitSet(objectCount); // all the bits 
are false at very beginning
+                       nodeBits = new BitSet(objectCount); // all the bits are 
false at very beginning
                        
                        for (int i=0; i<objectCount; i++) {
                                if (isHit(nodes_list.get(i), indexMap)) {
-                                       node_bits.set(i);
+                                       nodeBits.set(i);
                                }
                        }                       
-               }
-               else {
+               } else {
                        
LoggerFactory.getLogger(TopologyFilter.class).error("objectType is undefined.");
                        return;
                }
 
                if (negation) {
                        if (advancedSetting.isNodeChecked()) {
-                               node_bits.flip(0, objectCount);
+                               nodeBits.flip(0, objectCount);
                        }
                }
 
                childChanged = false;
        }
 
+       public void setNodeBits(BitSet b) {
+               nodeBits = b;
+               //parent.childChanged();
+       }
+
+       public void setEdgeBits(BitSet b) {
+               edgeBits = b;
+               //parent.childChanged();
+       }
+
+       @Override
+       public void setNetwork(CyNetwork pNetwork) {
+               if (network != null && network == pNetwork) {
+                       return;
+               }
+               network = pNetwork;
+               if (passFilter != null) {
+                       passFilter.setNetwork(network);                 
+               }
+
+               childChanged();
+       }
        
+       @Override
+       public String toSerializedForm() {
+               String retStr = "<TopologyFilter>\n";
+               
+               retStr = retStr + "name=" + name + "\n";
+               retStr = retStr + advancedSetting.toString() + "\n";
+               retStr = retStr + "Negation=" + negation + "\n";
+               retStr = retStr + "minNeighbors=" + minNeighbors + "\n";
+               retStr = retStr + "withinDistance=" + withinDistance + "\n";
+
+               if (passFilter == null) {
+                       retStr += "passFilter=null\n";                  
+               } else {
+                       retStr += "passFilter=" + passFilter.getName()+"\n";    
                                        
+               }
+               
+               retStr += "</TopologyFiler>";
+
+               return retStr;
+       }
+       
        private boolean isHit(CyNode pObj, HashMap<Integer, Integer> pIndexMap) 
{
                // Get all the neighbors for pNode that pass the given filter
                Set<CyNode> neighborSet = new HashSet<CyNode>();
@@ -216,70 +260,4 @@
                }
        }
        
-       
-       public String toString() {
-               String retStr = "<TopologyFilter>\n";
-               
-               retStr = retStr + "name=" + name + "\n";
-               retStr = retStr + advancedSetting.toString() + "\n";
-               retStr = retStr + "Negation=" + negation + "\n";
-               retStr = retStr + "minNeighbors=" + minNeighbors + "\n";
-               retStr = retStr + "withinDistance=" + withinDistance + "\n";
-
-               if (passFilter == null) {
-                       retStr += "passFilter=null\n";                  
-               }
-               else {
-                       retStr += "passFilter=" + passFilter.getName()+"\n";    
                                        
-               }
-               
-               retStr += "</TopologyFiler>";
-
-               return retStr;
-               
-       }
-       
-       public void setNodeBits(BitSet b) {
-               node_bits = b;
-               //parent.childChanged();
-       }
-
-       public void setEdgeBits(BitSet b) {
-               edge_bits = b;
-               //parent.childChanged();
-       }
-
-       public void setParent(CyFilter p) {
-               parent = p;
-       }
-       public CyFilter getParent() {
-               return parent;
-       }
-               
-       public void setNegation(boolean pNot) {
-               negation = pNot;
-               //getParent().childChanged();
-       }
-       public boolean getNegation() {
-               return negation;
-       }
-
-       public String getName(){
-               return name;
-       }
-       public void setName(String pName){
-               name = pName;
-       }
-
-       public void setNetwork(CyNetwork pNetwork) {
-               if (network != null && network == pNetwork) {
-                       return;
-               }
-               network = pNetwork;
-               if (passFilter != null) {
-                       passFilter.setNetwork(network);                 
-               }
-
-               childChanged();
-       }
 }

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