mev-4.0.01/source/org/tigr/microarray/mev/cluster/algorithm/AlgorithmData.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2004, 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: AlgorithmData.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.5 $
2 26 Feb 07 jari 8  * $Date: 2006/02/23 21:19:42 $
2 26 Feb 07 jari 9  * $Author: caliente $
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.algorithm;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.io.Serializable;
2 26 Feb 07 jari 15 import java.util.HashMap;
2 26 Feb 07 jari 16 import java.util.Iterator;
2 26 Feb 07 jari 17 import java.util.Map;
2 26 Feb 07 jari 18
2 26 Feb 07 jari 19 import org.tigr.microarray.mev.cluster.Cluster;
2 26 Feb 07 jari 20 import org.tigr.util.FloatMatrix;
2 26 Feb 07 jari 21
2 26 Feb 07 jari 22 /**
2 26 Feb 07 jari 23  * This class is used to pass data and necessary parameters 
2 26 Feb 07 jari 24  * to a calculation algorithm, and to receive the result of 
2 26 Feb 07 jari 25  * calculation.
2 26 Feb 07 jari 26  */
2 26 Feb 07 jari 27 public class AlgorithmData implements Serializable {
2 26 Feb 07 jari 28
2 26 Feb 07 jari 29     private HashMap matrixes;
2 26 Feb 07 jari 30     private HashMap intMatrices;
2 26 Feb 07 jari 31     private HashMap intArrays;
2 26 Feb 07 jari 32     private HashMap stringArrays;
2 26 Feb 07 jari 33     private HashMap objectMatrices;
2 26 Feb 07 jari 34     private AlgorithmParameters parameters;
2 26 Feb 07 jari 35     private HashMap clusters;
2 26 Feb 07 jari 36     private HashMap resultMap;  //resultMap used in TEASE
2 26 Feb 07 jari 37                   //KEY: node number, value: algorithmData
2 26 Feb 07 jari 38     /**
2 26 Feb 07 jari 39      * Construct an <code>AlgorithmData</code>.
2 26 Feb 07 jari 40      */
2 26 Feb 07 jari 41     public AlgorithmData() {
2 26 Feb 07 jari 42         matrixes   = new HashMap();
2 26 Feb 07 jari 43         intMatrices = new HashMap();
2 26 Feb 07 jari 44         intArrays  = new HashMap();
2 26 Feb 07 jari 45         stringArrays = new HashMap();
2 26 Feb 07 jari 46         objectMatrices = new HashMap();
2 26 Feb 07 jari 47         parameters = new AlgorithmParameters();
2 26 Feb 07 jari 48         clusters = new HashMap();
2 26 Feb 07 jari 49         resultMap = new HashMap();
2 26 Feb 07 jari 50     }
2 26 Feb 07 jari 51     
2 26 Feb 07 jari 52     public void copy(AlgorithmData data) {
2 26 Feb 07 jari 53         this.matrixes   = data.matrixes;
2 26 Feb 07 jari 54         this.intMatrices = data.intMatrices;
2 26 Feb 07 jari 55         this.intArrays  = data.intArrays;
2 26 Feb 07 jari 56         this.stringArrays = data.stringArrays;
2 26 Feb 07 jari 57         this.objectMatrices = data.objectMatrices;
2 26 Feb 07 jari 58         this.parameters = data.parameters;
2 26 Feb 07 jari 59         this.clusters = data.clusters;
2 26 Feb 07 jari 60         this.resultMap = data.resultMap;
2 26 Feb 07 jari 61     }
2 26 Feb 07 jari 62
2 26 Feb 07 jari 63     /**
2 26 Feb 07 jari 64      * Adds a matrix of float values by its name.
2 26 Feb 07 jari 65      *
2 26 Feb 07 jari 66      * @param name the name of the matrix.
2 26 Feb 07 jari 67      * @param matrix the <code>FloatMatrix</code> to be added.
2 26 Feb 07 jari 68      */
2 26 Feb 07 jari 69     public void addMatrix(String name, FloatMatrix matrix) {
2 26 Feb 07 jari 70         matrixes.put( name, matrix );
2 26 Feb 07 jari 71     }
2 26 Feb 07 jari 72
2 26 Feb 07 jari 73         /**
2 26 Feb 07 jari 74      * Adds a matrix of int values by its name.
2 26 Feb 07 jari 75      *
2 26 Feb 07 jari 76      * @param name the name of the matrix.
2 26 Feb 07 jari 77      * @param matrix the <code>FloatMatrix</code> to be added.
2 26 Feb 07 jari 78      */
2 26 Feb 07 jari 79     public void addIntMatrix(String name, int [][] matrix) {
2 26 Feb 07 jari 80         intMatrices.put( name, matrix );
2 26 Feb 07 jari 81     } 
2 26 Feb 07 jari 82     
2 26 Feb 07 jari 83     /**
2 26 Feb 07 jari 84      * Adds a cluster by its name.
2 26 Feb 07 jari 85      *
2 26 Feb 07 jari 86      * @param name the name of the cluster.
2 26 Feb 07 jari 87      * @param cluster the <code>Cluster</code> to be added.
2 26 Feb 07 jari 88      */
2 26 Feb 07 jari 89     public void addCluster( String name, Cluster cluster ) {
2 26 Feb 07 jari 90         clusters.put( name, cluster );
2 26 Feb 07 jari 91     }
2 26 Feb 07 jari 92
2 26 Feb 07 jari 93     /**
2 26 Feb 07 jari 94      * Gets a cluster by its name.
2 26 Feb 07 jari 95      *
2 26 Feb 07 jari 96      * @param name the name of the cluster.
2 26 Feb 07 jari 97      */
2 26 Feb 07 jari 98     public Cluster getCluster( String name ) {
2 26 Feb 07 jari 99         return(Cluster) clusters.get( name );
2 26 Feb 07 jari 100     }
2 26 Feb 07 jari 101
2 26 Feb 07 jari 102     /**
2 26 Feb 07 jari 103      * Adds a parameter by its name.
2 26 Feb 07 jari 104      *
2 26 Feb 07 jari 105      * @param name the name of a parameter.
2 26 Feb 07 jari 106      * @param value the string which presents parameter value.
2 26 Feb 07 jari 107      */
2 26 Feb 07 jari 108     public void addParam( String name, String value ) {
2 26 Feb 07 jari 109         parameters.setProperty(name, value);
2 26 Feb 07 jari 110     }
2 26 Feb 07 jari 111
2 26 Feb 07 jari 112     /**
2 26 Feb 07 jari 113      * Gets a matrix of float values by its name.
2 26 Feb 07 jari 114      *
2 26 Feb 07 jari 115      * @param name the name of <code>FloatMatrix</code>.
2 26 Feb 07 jari 116      */
2 26 Feb 07 jari 117     public FloatMatrix getMatrix(String name) {
2 26 Feb 07 jari 118         return(FloatMatrix)matrixes.get( name );
2 26 Feb 07 jari 119     }
2 26 Feb 07 jari 120     
2 26 Feb 07 jari 121     /**
2 26 Feb 07 jari 122      * Gets a matrix of float values by its name.
2 26 Feb 07 jari 123      *
2 26 Feb 07 jari 124      * @param name the name of <code>FloatMatrix</code>.
2 26 Feb 07 jari 125      */
2 26 Feb 07 jari 126     public int [][] getIntMatrix(String name) {
2 26 Feb 07 jari 127         return(int [][])intMatrices.get( name );
2 26 Feb 07 jari 128     }
2 26 Feb 07 jari 129
2 26 Feb 07 jari 130     /**
2 26 Feb 07 jari 131      * Returns true if this data contains matrix.
2 26 Feb 07 jari 132      *
2 26 Feb 07 jari 133      * @param name the name of a matrix.
2 26 Feb 07 jari 134      */
2 26 Feb 07 jari 135     public boolean containsMatrix(String name) {
2 26 Feb 07 jari 136         return matrixes.containsKey(name);
2 26 Feb 07 jari 137     }
2 26 Feb 07 jari 138
2 26 Feb 07 jari 139     /**
2 26 Feb 07 jari 140      * Adds a matrix of int values by its name
2 26 Feb 07 jari 141      *
2 26 Feb 07 jari 142      * @param name the name of the matrix.
2 26 Feb 07 jari 143      * @param intArray the array to be added.
2 26 Feb 07 jari 144      */
2 26 Feb 07 jari 145     public void addIntArray(String name, int[] intArray) {
2 26 Feb 07 jari 146         intArrays.put(name, intArray);
2 26 Feb 07 jari 147     }
2 26 Feb 07 jari 148     
2 26 Feb 07 jari 149     /**
2 26 Feb 07 jari 150      * Stores resultMap from TEASE analysis 
2 26 Feb 07 jari 151      * @param resultMap
2 26 Feb 07 jari 152      */
2 26 Feb 07 jari 153     public void addResultAlgorithmData(Integer key, AlgorithmData value) {
2 26 Feb 07 jari 154       //System.out.println(key+ " added");
2 26 Feb 07 jari 155       this.resultMap.put(key, value);
2 26 Feb 07 jari 156     }
2 26 Feb 07 jari 157     
2 26 Feb 07 jari 158     /**
2 26 Feb 07 jari 159      * Return the algorithmData corresponding to the key
2 26 Feb 07 jari 160      * @return value, algorithmData
2 26 Feb 07 jari 161      */
2 26 Feb 07 jari 162     public AlgorithmData getResultAlgorithmData(Object key) {
2 26 Feb 07 jari 163       return (AlgorithmData)this.resultMap.get(key);
2 26 Feb 07 jari 164     }
2 26 Feb 07 jari 165
2 26 Feb 07 jari 166     /**
2 26 Feb 07 jari 167      * Gets a matrix of int values by its name.
2 26 Feb 07 jari 168      *
2 26 Feb 07 jari 169      * @param name the name of matrix.
2 26 Feb 07 jari 170      */
2 26 Feb 07 jari 171     public int[] getIntArray(String name) {
2 26 Feb 07 jari 172         return(int[])intArrays.get(name);
2 26 Feb 07 jari 173     }
2 26 Feb 07 jari 174
2 26 Feb 07 jari 175
2 26 Feb 07 jari 176     /**
2 26 Feb 07 jari 177      * Adds a matrix of int values by its name
2 26 Feb 07 jari 178      *
2 26 Feb 07 jari 179      * @param name the name of the matrix.
2 26 Feb 07 jari 180      * @param intArray the array to be added.
2 26 Feb 07 jari 181      */
2 26 Feb 07 jari 182     public void addStringArray(String name, String [] stringArray) {
2 26 Feb 07 jari 183         stringArrays.put(name, stringArray);
2 26 Feb 07 jari 184     }
2 26 Feb 07 jari 185
2 26 Feb 07 jari 186     /**
2 26 Feb 07 jari 187      * Gets a matrix of int values by its name.
2 26 Feb 07 jari 188      *
2 26 Feb 07 jari 189      * @param name the name of matrix.
2 26 Feb 07 jari 190      */
2 26 Feb 07 jari 191     public String[] getStringArray(String name) {
2 26 Feb 07 jari 192         return(String[])stringArrays.get(name);
2 26 Feb 07 jari 193     }
2 26 Feb 07 jari 194     
2 26 Feb 07 jari 195     public void addObjectMatrix(String name, Object objM [][]){
2 26 Feb 07 jari 196         this.objectMatrices.put(name, objM);
2 26 Feb 07 jari 197     }
2 26 Feb 07 jari 198     
2 26 Feb 07 jari 199     public Object [][] getObjectMatrix(String name){
2 26 Feb 07 jari 200         return (Object [][])(this.objectMatrices.get(name));
2 26 Feb 07 jari 201     }
2 26 Feb 07 jari 202     
2 26 Feb 07 jari 203     /**
2 26 Feb 07 jari 204      * Returns count of float matrixes.
2 26 Feb 07 jari 205      */
2 26 Feb 07 jari 206     public int size() {
2 26 Feb 07 jari 207         return matrixes.size();
2 26 Feb 07 jari 208     }
2 26 Feb 07 jari 209
2 26 Feb 07 jari 210     /**
2 26 Feb 07 jari 211      * Returns float matrixes names.
2 26 Feb 07 jari 212      */
2 26 Feb 07 jari 213     public String[] getMatrixNames() {
2 26 Feb 07 jari 214         return getKeys(matrixes);
2 26 Feb 07 jari 215     }
2 26 Feb 07 jari 216
2 26 Feb 07 jari 217     /**
2 26 Feb 07 jari 218      * Returns clusters names.
2 26 Feb 07 jari 219      */
2 26 Feb 07 jari 220     public String[] getClusterNames() {
2 26 Feb 07 jari 221         return getKeys(clusters);
2 26 Feb 07 jari 222     }
2 26 Feb 07 jari 223
2 26 Feb 07 jari 224     private String[] getKeys(HashMap map) {
2 26 Feb 07 jari 225         Iterator iter = map.keySet().iterator();
2 26 Feb 07 jari 226         String[] result = new String[map.size()];
2 26 Feb 07 jari 227         int counter = 0;
2 26 Feb 07 jari 228         while (iter.hasNext())
2 26 Feb 07 jari 229             result[counter++] = (String)iter.next();
2 26 Feb 07 jari 230         return result;
2 26 Feb 07 jari 231     }
2 26 Feb 07 jari 232
2 26 Feb 07 jari 233     /**
2 26 Feb 07 jari 234      * Gets parameters.
2 26 Feb 07 jari 235      */
2 26 Feb 07 jari 236     public AlgorithmParameters getParams() { return parameters;}
2 26 Feb 07 jari 237
2 26 Feb 07 jari 238     // utility functions
2 26 Feb 07 jari 239     public Map getProperties() { return parameters.getMap(); }
2 26 Feb 07 jari 240     public Map getMatrixes()   { return matrixes; }
2 26 Feb 07 jari 241     public Map getIntArrays()  { return intArrays; }
2 26 Feb 07 jari 242     public Map getStringArrays() { return this.stringArrays; }
2 26 Feb 07 jari 243     public Map getObjectMatrices() { return this.objectMatrices; }
2 26 Feb 07 jari 244     public Map getClusters()   { return clusters;  }
2 26 Feb 07 jari 245 }