mev-4.0.01/source/org/tigr/microarray/mev/cluster/clusterUtil/ClusterList.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2003, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4  */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: ClusterList.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.8 $
2 26 Feb 07 jari 8  * $Date: 2006/05/02 16:56:57 $
2 26 Feb 07 jari 9  * $Author: eleanorahowe $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.cluster.clusterUtil;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.Color;
2 26 Feb 07 jari 15 import java.util.Vector;
2 26 Feb 07 jari 16
2 26 Feb 07 jari 17 /** The ClusterList class is used to collect and administer
2 26 Feb 07 jari 18  * a collection of clusters.  The ClusterList object typically is
2 26 Feb 07 jari 19  * used to collect clusters created from a particular analysis run.
2 26 Feb 07 jari 20  *
2 26 Feb 07 jari 21  */
2 26 Feb 07 jari 22 public class ClusterList extends Vector {        
2 26 Feb 07 jari 23   
2 26 Feb 07 jari 24     /** a String identifing the algorithm origin.
2 26 Feb 07 jari 25      * (possibly the origin will not be an algorithm)
2 26 Feb 07 jari 26      */    
2 26 Feb 07 jari 27     String algorithmName;
2 26 Feb 07 jari 28     /** result index if applicable
2 26 Feb 07 jari 29      */    
2 26 Feb 07 jari 30     int algorithmIndex;
2 26 Feb 07 jari 31  
2 26 Feb 07 jari 32     /** Creates new ClusterList */
2 26 Feb 07 jari 33     public ClusterList() {
2 26 Feb 07 jari 34         super();
2 26 Feb 07 jari 35     }
2 26 Feb 07 jari 36     
2 26 Feb 07 jari 37     /** Creates a new ClusterList provided an initial
2 26 Feb 07 jari 38      * cluster count.
2 26 Feb 07 jari 39      */    
2 26 Feb 07 jari 40     public ClusterList(int numberOfClusters){
2 26 Feb 07 jari 41         super(numberOfClusters);
2 26 Feb 07 jari 42     }
2 26 Feb 07 jari 43     
2 26 Feb 07 jari 44     /** Creates a new ClusterList with the provided algorithm (source) name.
2 26 Feb 07 jari 45      */    
2 26 Feb 07 jari 46     public ClusterList(String AlgorithmName){
2 26 Feb 07 jari 47         this.algorithmName = AlgorithmName;
2 26 Feb 07 jari 48     }
2 26 Feb 07 jari 49     
2 26 Feb 07 jari 50     public static String[] getPersistenceDelegateArgs() {
2 26 Feb 07 jari 51       return new String[]{"vector", "algorithmName", "algorithmIndex"};
2 26 Feb 07 jari 52     }
2 26 Feb 07 jari 53     public Vector getVector() {
2 26 Feb 07 jari 54       return new Vector();
2 26 Feb 07 jari 55     }
2 26 Feb 07 jari 56     
2 26 Feb 07 jari 57     public ClusterList(Vector v, String name, int index) {
2 26 Feb 07 jari 58       super(v);
2 26 Feb 07 jari 59       this.algorithmIndex = index;
2 26 Feb 07 jari 60       this.algorithmName = name;
2 26 Feb 07 jari 61     }
2 26 Feb 07 jari 62     
2 26 Feb 07 jari 63     /** Adds a cluster to the list
2 26 Feb 07 jari 64      */
2 26 Feb 07 jari 65     public void addCluster(Cluster cluster){
2 26 Feb 07 jari 66         add(cluster);
2 26 Feb 07 jari 67     }
2 26 Feb 07 jari 68     
2 26 Feb 07 jari 69     /** removes a provided cluster from the list.
2 26 Feb 07 jari 70      */    
2 26 Feb 07 jari 71     public void removeCluster(Cluster cluster){
2 26 Feb 07 jari 72         this.remove(cluster);
2 26 Feb 07 jari 73     }
2 26 Feb 07 jari 74     
2 26 Feb 07 jari 75     /** removes a cluster a a provided position.
2 26 Feb 07 jari 76      */    
2 26 Feb 07 jari 77     public void removeClusterAt(int clusterIndex){
2 26 Feb 07 jari 78         if(isInRange(clusterIndex))
2 26 Feb 07 jari 79             this.removeElementAt(clusterIndex);
2 26 Feb 07 jari 80     }
2 26 Feb 07 jari 81     
2 26 Feb 07 jari 82     /** returns a cluster at the provied index.
2 26 Feb 07 jari 83      */
2 26 Feb 07 jari 84     public Cluster getClusterAt(int clusterIndex){
2 26 Feb 07 jari 85         if(isInRange(clusterIndex))
2 26 Feb 07 jari 86             return (Cluster)this.elementAt(clusterIndex);
2 26 Feb 07 jari 87         return null;
2 26 Feb 07 jari 88     }
2 26 Feb 07 jari 89     
2 26 Feb 07 jari 90     /** Returns the last cluster in the list.
2 26 Feb 07 jari 91      */    
2 26 Feb 07 jari 92     public Cluster lastCluster(){
2 26 Feb 07 jari 93         if(!this.isEmpty())
2 26 Feb 07 jari 94             return (Cluster)this.lastElement();
2 26 Feb 07 jari 95         return null;        
2 26 Feb 07 jari 96     }
2 26 Feb 07 jari 97     
2 26 Feb 07 jari 98     /** returns a cluster color given a cluster index.
2 26 Feb 07 jari 99      * @param clusterIndex
2 26 Feb 07 jari 100      */    
2 26 Feb 07 jari 101     public Color getClusterColor(int clusterIndex){
2 26 Feb 07 jari 102         if(isInRange(clusterIndex))
2 26 Feb 07 jari 103             return ((Cluster)this.elementAt(clusterIndex)).getClusterColor();
2 26 Feb 07 jari 104         return null;
2 26 Feb 07 jari 105     }
2 26 Feb 07 jari 106     
2 26 Feb 07 jari 107     /** Returns the cluster name for the specified
2 26 Feb 07 jari 108      * cluster index.
2 26 Feb 07 jari 109      *
2 26 Feb 07 jari 110      */    
2 26 Feb 07 jari 111     public String getClusterName(int clusterIndex){
2 26 Feb 07 jari 112         if(isInRange(clusterIndex))
2 26 Feb 07 jari 113             return ((Cluster)this.elementAt(clusterIndex)).getClusterLabel();
2 26 Feb 07 jari 114         return null;
2 26 Feb 07 jari 115     }
2 26 Feb 07 jari 116
2 26 Feb 07 jari 117     /** Returns clusterID (cluster node) for the
2 26 Feb 07 jari 118      * specified cluster index.
2 26 Feb 07 jari 119      */    
2 26 Feb 07 jari 120     public String getClusterID(int clusterIndex){
2 26 Feb 07 jari 121         if(isInRange(clusterIndex))
2 26 Feb 07 jari 122             return ((Cluster)this.elementAt(clusterIndex)).getClusterID();
2 26 Feb 07 jari 123         return null;
2 26 Feb 07 jari 124     }
2 26 Feb 07 jari 125     
2 26 Feb 07 jari 126     /** Returns clsuter serial number for the specified cluster index
2 26 Feb 07 jari 127      */    
2 26 Feb 07 jari 128    public int getClusterSerialNumber(int clusterIndex){
2 26 Feb 07 jari 129         if(isInRange(clusterIndex))
2 26 Feb 07 jari 130             return ((Cluster)this.elementAt(clusterIndex)).getSerialNumber();
2 26 Feb 07 jari 131         return -1;
2 26 Feb 07 jari 132     }
2 26 Feb 07 jari 133     
2 26 Feb 07 jari 134     /** Returns the algorithm name (node name) for the generation of
2 26 Feb 07 jari 135      * clusters in the ClusterList
2 26 Feb 07 jari 136      */    
2 26 Feb 07 jari 137     public String getAlgorithmName(){
2 26 Feb 07 jari 138         return this.algorithmName;
2 26 Feb 07 jari 139     }
2 26 Feb 07 jari 140     public void setAlgorithmName(String name) {
2 26 Feb 07 jari 141       algorithmName = name;
2 26 Feb 07 jari 142     }
2 26 Feb 07 jari 143     
2 26 Feb 07 jari 144     /** Returns a result index for the ClusterList
2 26 Feb 07 jari 145      */    
2 26 Feb 07 jari 146     public int getAlgorithmIndex(){
2 26 Feb 07 jari 147         return this.algorithmIndex;
2 26 Feb 07 jari 148     } 
2 26 Feb 07 jari 149     public void setAlgorithmIndex(int index) {
2 26 Feb 07 jari 150       this.algorithmIndex = index;
2 26 Feb 07 jari 151     }
2 26 Feb 07 jari 152     
2 26 Feb 07 jari 153     /** Returns true if the index is in range.
2 26 Feb 07 jari 154      */    
2 26 Feb 07 jari 155     protected boolean isInRange(int index){
2 26 Feb 07 jari 156         return (index > -1 && index < size());
2 26 Feb 07 jari 157     }
2 26 Feb 07 jari 158     
2 26 Feb 07 jari 159     /** Returns true if the cluster from the specified clusterID
2 26 Feb 07 jari 160      * (node name) is already saved
2 26 Feb 07 jari 161      */    
2 26 Feb 07 jari 162     public boolean isClusterSaved(String clusterID, int [] indices){              
2 26 Feb 07 jari 163         for(int i = 0; i < size(); i++){
2 26 Feb 07 jari 164             if(this.getClusterID(i).equals(clusterID))
2 26 Feb 07 jari 165                 if(this.getCluster(clusterID).doIndicesMatch(indices))
2 26 Feb 07 jari 166                     return true;                
2 26 Feb 07 jari 167         }
2 26 Feb 07 jari 168         return false;
2 26 Feb 07 jari 169     }
2 26 Feb 07 jari 170     
2 26 Feb 07 jari 171     /** Returns true if a cluster exists in the list with the
2 26 Feb 07 jari 172      * provided serila number.
2 26 Feb 07 jari 173      */    
2 26 Feb 07 jari 174         public boolean isClusterSaved(int serialNumber){              
2 26 Feb 07 jari 175         for(int i = 0; i < size(); i++){
2 26 Feb 07 jari 176             if(this.getClusterSerialNumber(i) == serialNumber)
2 26 Feb 07 jari 177                 return true;
2 26 Feb 07 jari 178         }
2 26 Feb 07 jari 179         return false;
2 26 Feb 07 jari 180     }
2 26 Feb 07 jari 181     
2 26 Feb 07 jari 182     /** Returns the cluster given a clusterID
2 26 Feb 07 jari 183      */    
2 26 Feb 07 jari 184     public Cluster getCluster(String clusterID){
2 26 Feb 07 jari 185         Cluster curr;
2 26 Feb 07 jari 186         for(int i = 0; i < size(); i++){
2 26 Feb 07 jari 187             curr = getClusterAt(i);
2 26 Feb 07 jari 188             if((curr.getClusterID()).equals(clusterID))
2 26 Feb 07 jari 189                 return curr;
2 26 Feb 07 jari 190         }
2 26 Feb 07 jari 191         return null;
2 26 Feb 07 jari 192     }
2 26 Feb 07 jari 193     
2 26 Feb 07 jari 194     /** Returns a cluster given a cluster serial number
2 26 Feb 07 jari 195      * @param serialNumber a cluster serial number
2 26 Feb 07 jari 196      * @return returned Cluster
2 26 Feb 07 jari 197      */    
2 26 Feb 07 jari 198     public Cluster getCluster(int serialNumber){
2 26 Feb 07 jari 199         Cluster curr;
2 26 Feb 07 jari 200         for(int i = 0; i < size(); i++){
2 26 Feb 07 jari 201             curr = getClusterAt(i);
2 26 Feb 07 jari 202             if(curr.getSerialNumber() == serialNumber)
2 26 Feb 07 jari 203                 return curr;
2 26 Feb 07 jari 204         }
2 26 Feb 07 jari 205         return null;
2 26 Feb 07 jari 206     }
2 26 Feb 07 jari 207     
2 26 Feb 07 jari 208     /** Removes a cluster with the specified clusterID
2 26 Feb 07 jari 209      */    
2 26 Feb 07 jari 210     public void removeCluster(String clusterID){
2 26 Feb 07 jari 211         Cluster cluster = getCluster(clusterID);
2 26 Feb 07 jari 212         if(cluster != null)
2 26 Feb 07 jari 213             removeCluster(cluster);
2 26 Feb 07 jari 214     }
2 26 Feb 07 jari 215     
2 26 Feb 07 jari 216     /** Removes a cluster with specified serial number
2 26 Feb 07 jari 217      */    
2 26 Feb 07 jari 218     public void removeCluster(int serialNumber){
2 26 Feb 07 jari 219         Cluster cluster = getCluster(serialNumber);
2 26 Feb 07 jari 220         if(cluster != null)
2 26 Feb 07 jari 221             removeCluster(cluster);
2 26 Feb 07 jari 222     }
2 26 Feb 07 jari 223     
2 26 Feb 07 jari 224  
2 26 Feb 07 jari 225 }