mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/dam/DAMGUI.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2005, 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 package org.tigr.microarray.mev.cluster.gui.impl.dam;
2 26 Feb 07 jari 7
2 26 Feb 07 jari 8 import java.awt.Frame;
2 26 Feb 07 jari 9 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 10 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 11 import java.util.Vector;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import javax.swing.JOptionPane;
2 26 Feb 07 jari 14 import javax.swing.tree.DefaultMutableTreeNode;
2 26 Feb 07 jari 15
2 26 Feb 07 jari 16 import org.tigr.microarray.mev.cluster.Cluster;
2 26 Feb 07 jari 17 import org.tigr.microarray.mev.cluster.NodeList;
2 26 Feb 07 jari 18 import org.tigr.microarray.mev.cluster.algorithm.Algorithm;
2 26 Feb 07 jari 19 import org.tigr.microarray.mev.cluster.algorithm.AlgorithmData;
2 26 Feb 07 jari 20 import org.tigr.microarray.mev.cluster.algorithm.AlgorithmEvent;
2 26 Feb 07 jari 21 import org.tigr.microarray.mev.cluster.algorithm.AlgorithmException;
2 26 Feb 07 jari 22 import org.tigr.microarray.mev.cluster.algorithm.AlgorithmListener;
2 26 Feb 07 jari 23 import org.tigr.microarray.mev.cluster.gui.Experiment;
2 26 Feb 07 jari 24 import org.tigr.microarray.mev.cluster.gui.IClusterGUI;
2 26 Feb 07 jari 25 import org.tigr.microarray.mev.cluster.gui.IData;
2 26 Feb 07 jari 26 import org.tigr.microarray.mev.cluster.gui.IDistanceMenu;
2 26 Feb 07 jari 27 import org.tigr.microarray.mev.cluster.gui.IFramework;
2 26 Feb 07 jari 28 import org.tigr.microarray.mev.cluster.gui.IViewer;
2 26 Feb 07 jari 29 import org.tigr.microarray.mev.cluster.gui.LeafInfo;
2 26 Feb 07 jari 30 import org.tigr.microarray.mev.cluster.gui.helpers.CentroidUserObject;
2 26 Feb 07 jari 31 import org.tigr.microarray.mev.cluster.gui.helpers.ClusterTableViewer;
2 26 Feb 07 jari 32 import org.tigr.microarray.mev.cluster.gui.helpers.ExperimentClusterCentroidViewer;
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.gui.helpers.ExperimentClusterTableViewer;
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 35 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.Logger;
2 26 Feb 07 jari 36 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.Progress;
2 26 Feb 07 jari 37 import org.tigr.util.FloatMatrix;
2 26 Feb 07 jari 38
2 26 Feb 07 jari 39 public class DAMGUI implements IClusterGUI {
2 26 Feb 07 jari 40     
2 26 Feb 07 jari 41     private Experiment experiment;
2 26 Feb 07 jari 42     private Experiment unusedExperiment;
2 26 Feb 07 jari 43     private Experiment usedExperiment;
2 26 Feb 07 jari 44     
2 26 Feb 07 jari 45     private Algorithm algorithm;
2 26 Feb 07 jari 46     private Progress progress;
2 26 Feb 07 jari 47     private IFramework framework;
2 26 Feb 07 jari 48     private float minDist;
2 26 Feb 07 jari 49     private float maxDist;
2 26 Feb 07 jari 50     private int num_genes;
2 26 Feb 07 jari 51     private int mode;
2 26 Feb 07 jari 52     
2 26 Feb 07 jari 53     public static int A0 = 0;
2 26 Feb 07 jari 54     public static int A1 = 1;
2 26 Feb 07 jari 55     public static int A2 = 2;
2 26 Feb 07 jari 56     public static int A3 = 3;
2 26 Feb 07 jari 57     
2 26 Feb 07 jari 58     private FloatMatrix matrix3D;
2 26 Feb 07 jari 59     private FloatMatrix matrixS;
2 26 Feb 07 jari 60     private Logger logger;
2 26 Feb 07 jari 61     
2 26 Feb 07 jari 62     private int algorithmSelection=0;
2 26 Feb 07 jari 63     private int classificationSelection=0;
2 26 Feb 07 jari 64     private boolean isPDA;
2 26 Feb 07 jari 65     private boolean preSelectGenes;
2 26 Feb 07 jari 66     private int numberOfClasses;
2 26 Feb 07 jari 67     private int kValue;
2 26 Feb 07 jari 68     private double alpha;
2 26 Feb 07 jari 69     
2 26 Feb 07 jari 70     private IData iData;
2 26 Feb 07 jari 71     
2 26 Feb 07 jari 72     DAMClassificationEditor damClassEditor;
2 26 Feb 07 jari 73     
2 26 Feb 07 jari 74     Vector[] classificationVector;
2 26 Feb 07 jari 75     int[] trainingIndices;  // array for experiments indices that are selected into the classes
2 26 Feb 07 jari 76     int[] testIndices;  // array for experiments indices that are selected into the classes
2 26 Feb 07 jari 77     int[] classes;     // array for class numbers that contain experiments
2 26 Feb 07 jari 78     
2 26 Feb 07 jari 79     int[] columns;
2 26 Feb 07 jari 80     int[] rows;
2 26 Feb 07 jari 81     int[] usedGeneIndices;
2 26 Feb 07 jari 82     int[] unusedGeneIndices;
2 26 Feb 07 jari 83     
2 26 Feb 07 jari 84     boolean classifyGenes = false;
2 26 Feb 07 jari 85     
2 26 Feb 07 jari 86     private int[][] clusters;
2 26 Feb 07 jari 87     private int[][] geneClusters;
2 26 Feb 07 jari 88     
2 26 Feb 07 jari 89     private FloatMatrix means, means_used, means_unused;
2 26 Feb 07 jari 90     private FloatMatrix variances, variances_used, variances_unused;
2 26 Feb 07 jari 91     
2 26 Feb 07 jari 92     /**
2 26 Feb 07 jari 93      * Initialize the algorithm's parameters and execute it.
2 26 Feb 07 jari 94      */
2 26 Feb 07 jari 95     public DefaultMutableTreeNode execute(IFramework framework) throws AlgorithmException {
2 26 Feb 07 jari 96         this.framework = framework;
2 26 Feb 07 jari 97         this.experiment = framework.getData().getExperiment();
2 26 Feb 07 jari 98         this.iData = framework.getData();
2 26 Feb 07 jari 99         
2 26 Feb 07 jari 100         Listener listener = new Listener();
2 26 Feb 07 jari 101         
2 26 Feb 07 jari 102         try {
2 26 Feb 07 jari 103             
2 26 Feb 07 jari 104             DAMInitDialog damInitDialog = new DAMInitDialog(framework.getFrame(), true);
2 26 Feb 07 jari 105             
2 26 Feb 07 jari 106             if (damInitDialog.showModal() != JOptionPane.OK_OPTION) {
2 26 Feb 07 jari 107                 return null;
2 26 Feb 07 jari 108             }
2 26 Feb 07 jari 109             
2 26 Feb 07 jari 110             classifyGenes = damInitDialog.isEvaluateGenesSelected();
2 26 Feb 07 jari 111             algorithmSelection = damInitDialog.getAssessmentSelection();
2 26 Feb 07 jari 112             isPDA = damInitDialog.isPDASelected();
2 26 Feb 07 jari 113             numberOfClasses = damInitDialog.getNumClasses();
2 26 Feb 07 jari 114             kValue = damInitDialog.getKValue();
2 26 Feb 07 jari 115             alpha = damInitDialog.getAlphaValue();
2 26 Feb 07 jari 116             
2 26 Feb 07 jari 117             preSelectGenes = !(damInitDialog.getSkipGeneSelectionValue());
2 26 Feb 07 jari 118             
2 26 Feb 07 jari 119             
2 26 Feb 07 jari 120             DAMClassificationEditor damClassEditor = new DAMClassificationEditor(framework, classifyGenes, numberOfClasses);
2 26 Feb 07 jari 121             damClassEditor.setVisible(true);
2 26 Feb 07 jari 122             
2 26 Feb 07 jari 123             while (!damClassEditor.isNextPressed()) {
2 26 Feb 07 jari 124                 if (damClassEditor.isCancelPressed()) {
2 26 Feb 07 jari 125                     return null;
2 26 Feb 07 jari 126                 } else {
2 26 Feb 07 jari 127                     continue;
2 26 Feb 07 jari 128                 }
2 26 Feb 07 jari 129             }
2 26 Feb 07 jari 130             
2 26 Feb 07 jari 131             AlgorithmData data = new AlgorithmData();
2 26 Feb 07 jari 132             
2 26 Feb 07 jari 133             boolean useGenes = damInitDialog.isEvaluateGenesSelected();
2 26 Feb 07 jari 134             if (useGenes) {
2 26 Feb 07 jari 135                 mode = 1;
2 26 Feb 07 jari 136                 data.addParam("dam-mode", "1");
2 26 Feb 07 jari 137             } else {
2 26 Feb 07 jari 138                 mode = 3;
2 26 Feb 07 jari 139                 data.addParam("dam-mode", "3");
2 26 Feb 07 jari 140             }
2 26 Feb 07 jari 141             
2 26 Feb 07 jari 142             classificationVector = damClassEditor.getClassification();
2 26 Feb 07 jari 143             trainingIndices = new int[classificationVector[0].size()];
2 26 Feb 07 jari 144             classes = new int[classificationVector[1].size()];
2 26 Feb 07 jari 145             testIndices = new int[classificationVector[2].size()];
2 26 Feb 07 jari 146             
2 26 Feb 07 jari 147             for (int i = 0; i < trainingIndices.length; i++) {
2 26 Feb 07 jari 148                 trainingIndices[i] = ((Integer)(classificationVector[0].get(i))).intValue();
2 26 Feb 07 jari 149                 classes[i] = ((Integer)(classificationVector[1].get(i))).intValue();
2 26 Feb 07 jari 150             }
2 26 Feb 07 jari 151             
2 26 Feb 07 jari 152             for (int i = 0; i < testIndices.length; i++) {
2 26 Feb 07 jari 153                 testIndices[i] = ((Integer)(classificationVector[2].get(i))).intValue();
2 26 Feb 07 jari 154             }
2 26 Feb 07 jari 155             
2 26 Feb 07 jari 156             algorithm = framework.getAlgorithmFactory().getAlgorithm("DAM");
2 26 Feb 07 jari 157             algorithm.addAlgorithmListener(listener);
2 26 Feb 07 jari 158             
2 26 Feb 07 jari 159             logger = new Logger(framework.getFrame(), "DAM Log Window", listener);
2 26 Feb 07 jari 160             logger.show();
2 26 Feb 07 jari 161             logger.append("Starting DAM calculation\n");
2 26 Feb 07 jari 162             
2 26 Feb 07 jari 163             FloatMatrix Cov;
2 26 Feb 07 jari 164             Experiment experiment = framework.getData().getExperiment();
2 26 Feb 07 jari 165             
2 26 Feb 07 jari 166             if(classifyGenes) {
2 26 Feb 07 jari 167               //Problem here: if the program has a gene cluster (maybe also if it
2 26 Feb 07 jari 168               //has an experiment cluster) the matrix returned is null.  
2 26 Feb 07 jari 169                 FloatMatrix temp;
2 26 Feb 07 jari 170                 temp = (experiment.getMatrix()).transpose();
2 26 Feb 07 jari 171                 System.out.println("floatmatrix size: " + temp.m + ", " + temp.n);
2 26 Feb 07 jari 172               data.addMatrix("experiment", temp);
2 26 Feb 07 jari 173                 
2 26 Feb 07 jari 174             } else {
2 26 Feb 07 jari 175                 data.addMatrix("experiment", experiment.getMatrix());
2 26 Feb 07 jari 176             }
2 26 Feb 07 jari 177             
2 26 Feb 07 jari 178             data.addParam("distance-factor", String.valueOf(1.0f));
2 26 Feb 07 jari 179             IDistanceMenu menu = framework.getDistanceMenu();
2 26 Feb 07 jari 180             data.addParam("distance-absolute", String.valueOf(menu.isAbsoluteDistance()));
2 26 Feb 07 jari 181             
2 26 Feb 07 jari 182             data.addParam("algorithmSelection", String.valueOf(algorithmSelection));
2 26 Feb 07 jari 183             data.addParam("isPDA", String.valueOf(isPDA));
2 26 Feb 07 jari 184             data.addParam("preSelectGenes", String.valueOf(preSelectGenes));
2 26 Feb 07 jari 185             data.addParam("numberOfClasses", String.valueOf(numberOfClasses));
2 26 Feb 07 jari 186             data.addParam("kValue", String.valueOf(kValue));
2 26 Feb 07 jari 187             data.addParam("alpha", String.valueOf(alpha));
2 26 Feb 07 jari 188             
2 26 Feb 07 jari 189             data.addIntArray("trainingIndices", trainingIndices);
2 26 Feb 07 jari 190             data.addIntArray("classes", classes);
2 26 Feb 07 jari 191             data.addIntArray("testIndices", testIndices);
2 26 Feb 07 jari 192             
2 26 Feb 07 jari 193             int function = menu.getDistanceFunction();
2 26 Feb 07 jari 194             if (function == Algorithm.DEFAULT) {
2 26 Feb 07 jari 195                 function = Algorithm.COVARIANCE;
2 26 Feb 07 jari 196             }
2 26 Feb 07 jari 197             data.addParam("distance-function", String.valueOf(function));
2 26 Feb 07 jari 198             data.addParam("dam-mode", String.valueOf(mode));
2 26 Feb 07 jari 199             
2 26 Feb 07 jari 200             AlgorithmData result = null;
2 26 Feb 07 jari 201             DefaultMutableTreeNode node = null;
2 26 Feb 07 jari 202             long start = System.currentTimeMillis();
2 26 Feb 07 jari 203             switch (mode) {
2 26 Feb 07 jari 204                 case 1: // Spots
2 26 Feb 07 jari 205                     data.addParam("distance-function", String.valueOf(function));
2 26 Feb 07 jari 206                     result = algorithm.execute(data);
2 26 Feb 07 jari 207                     matrixS = result.getMatrix("S");
2 26 Feb 07 jari 208                     matrix3D = result.getMatrix("matrix3D");
2 26 Feb 07 jari 209                     usedGeneIndices = result.getIntArray("usedGeneIndices");
2 26 Feb 07 jari 210                     unusedGeneIndices = result.getIntArray("unusedGeneIndices");
2 26 Feb 07 jari 211                     node = new DefaultMutableTreeNode("DAM - genes");
2 26 Feb 07 jari 212                     break;
2 26 Feb 07 jari 213                 case 3: // Experiments
2 26 Feb 07 jari 214                     result = algorithm.execute(data);
2 26 Feb 07 jari 215                     matrixS = result.getMatrix("S");
2 26 Feb 07 jari 216                     matrix3D = result.getMatrix("matrix3D");
2 26 Feb 07 jari 217                     usedGeneIndices = result.getIntArray("usedGeneIndices");
2 26 Feb 07 jari 218                     unusedGeneIndices = result.getIntArray("unusedGeneIndices");
2 26 Feb 07 jari 219                     
2 26 Feb 07 jari 220 /*
2 26 Feb 07 jari 221              if (preSelectGenes) {
2 26 Feb 07 jari 222                  System.out.println("DAMGUI.java: usedGeneIndices size: " + usedGeneIndices.length);
2 26 Feb 07 jari 223                  for(int i=0; i< usedGeneIndices.length; i++) {
2 26 Feb 07 jari 224                      System.out.print(usedGeneIndices[i] + ", ");
2 26 Feb 07 jari 225                  }
2 26 Feb 07 jari 226                  System.out.println(" ");
2 26 Feb 07 jari 227                  System.out.println(" ");
2 26 Feb 07 jari 228                  System.out.println("DAMGUI.java: unusedGeneIndices size: " + unusedGeneIndices.length);
2 26 Feb 07 jari 229                  for(int i=0; i< unusedGeneIndices.length; i++) {
2 26 Feb 07 jari 230                      System.out.print(unusedGeneIndices[i] + ", ");
2 26 Feb 07 jari 231                  }
2 26 Feb 07 jari 232                  System.out.println(" ");
2 26 Feb 07 jari 233                  System.out.println(" ");
2 26 Feb 07 jari 234              }
2 26 Feb 07 jari 235  */
2 26 Feb 07 jari 236                     
2 26 Feb 07 jari 237                     node = new DefaultMutableTreeNode("DAM - samples");
2 26 Feb 07 jari 238                     break;
2 26 Feb 07 jari 239                 default:
2 26 Feb 07 jari 240                     break;
2 26 Feb 07 jari 241             }
2 26 Feb 07 jari 242             
2 26 Feb 07 jari 243             Cluster result_cluster = result.getCluster("cluster");
2 26 Feb 07 jari 244             NodeList nodeList = result_cluster.getNodeList();
2 26 Feb 07 jari 245             
2 26 Feb 07 jari 246             int k = numberOfClasses*3;
2 26 Feb 07 jari 247             this.clusters = new int[k][];
2 26 Feb 07 jari 248             
2 26 Feb 07 jari 249   //          System.out.println(" ");
2 26 Feb 07 jari 250             for (int i=0; i<k; i++) {
2 26 Feb 07 jari 251                 clusters[i] = nodeList.getNode(i).getFeaturesIndexes();
2 26 Feb 07 jari 252                 
2 26 Feb 07 jari 253             }
2 26 Feb 07 jari 254             
2 26 Feb 07 jari 255             Cluster gene_cluster = result.getCluster("geneCluster");
2 26 Feb 07 jari 256             nodeList = gene_cluster.getNodeList();
2 26 Feb 07 jari 257             
2 26 Feb 07 jari 258             this.geneClusters = new int[2][];
2 26 Feb 07 jari 259             
2 26 Feb 07 jari 260   //          System.out.println(" ");
2 26 Feb 07 jari 261             for (int i=0; i<2; i++) {
2 26 Feb 07 jari 262                 geneClusters[i] = nodeList.getNode(i).getFeaturesIndexes();
2 26 Feb 07 jari 263                 
2 26 Feb 07 jari 264             }
2 26 Feb 07 jari 265             
2 26 Feb 07 jari 266             this.means = result.getMatrix("clusters_means");
2 26 Feb 07 jari 267             this.variances = result.getMatrix("clusters_variances");
2 26 Feb 07 jari 268             
2 26 Feb 07 jari 269             this.means_used = result.getMatrix("clusters_means_used");
2 26 Feb 07 jari 270             this.variances_used = result.getMatrix("clusters_variances_used");
2 26 Feb 07 jari 271             
2 26 Feb 07 jari 272             this.means_unused = result.getMatrix("clusters_means_unused");
2 26 Feb 07 jari 273             this.variances_unused = result.getMatrix("clusters_variances_unused");
2 26 Feb 07 jari 274             
2 26 Feb 07 jari 275             columns = new int[(experiment.getMatrix()).getColumnDimension()];
2 26 Feb 07 jari 276             for(int i=0; i< columns.length; i++) {
2 26 Feb 07 jari 277                 columns[i] = i;
2 26 Feb 07 jari 278             }
2 26 Feb 07 jari 279             
2 26 Feb 07 jari 280             rows = new int[(experiment.getMatrix()).getRowDimension()];
2 26 Feb 07 jari 281             for(int i=0; i< rows.length; i++) {
2 26 Feb 07 jari 282                 rows[i] = i;
2 26 Feb 07 jari 283             }
2 26 Feb 07 jari 284             
2 26 Feb 07 jari 285             
2 26 Feb 07 jari 286             if (classifyGenes) {
2 26 Feb 07 jari 287                 usedExperiment = new Experiment((experiment.getMatrix()).getMatrix(rows, usedGeneIndices), usedGeneIndices, rows);
2 26 Feb 07 jari 288                 unusedExperiment = new Experiment((experiment.getMatrix()).getMatrix(rows, unusedGeneIndices), unusedGeneIndices, rows);
2 26 Feb 07 jari 289             } else {
2 26 Feb 07 jari 290                 usedExperiment = new Experiment((experiment.getMatrix()).getMatrix(usedGeneIndices, columns), columns, usedGeneIndices);
2 26 Feb 07 jari 291                 unusedExperiment = new Experiment((experiment.getMatrix()).getMatrix(unusedGeneIndices, columns), columns, unusedGeneIndices);
2 26 Feb 07 jari 292             }
2 26 Feb 07 jari 293             
2 26 Feb 07 jari 294 /*
2 26 Feb 07 jari 295                 System.out.println("DAMGUI.java - means: " + means.getRowDimension() + " X " + means.getColumnDimension());
2 26 Feb 07 jari 296                 System.out.println("DAMGUI.java - variances: " + variances.getRowDimension() + " X " + variances.getColumnDimension());
2 26 Feb 07 jari 297  
2 26 Feb 07 jari 298                 System.out.println("DAMGUI.java - matrix3D " + matrix3D.getRowDimension() + " X " + matrix3D.getColumnDimension());
2 26 Feb 07 jari 299                 for(int i=0; i< matrix3D.getRowDimension(); i++) {
2 26 Feb 07 jari 300                     for(int j=0; j< matrix3D.getColumnDimension(); j++) {
2 26 Feb 07 jari 301                         System.out.print(matrix3D.get(i, j) + ", ");
2 26 Feb 07 jari 302                     }
2 26 Feb 07 jari 303                     System.out.println(" ");
2 26 Feb 07 jari 304                 }
2 26 Feb 07 jari 305  */
2 26 Feb 07 jari 306             
2 26 Feb 07 jari 307             logger.append("Creating the result viewers\n");
2 26 Feb 07 jari 308             long time = System.currentTimeMillis() - start;
2 26 Feb 07 jari 309             if(algorithmSelection == A3) //only classification
2 26 Feb 07 jari 310                 addClassificationResultNodes(framework.getFrame(), node, time, menu.getFunctionName(function), experiment);
2 26 Feb 07 jari 311             else
2 26 Feb 07 jari 312                 addValidationResultNodes(framework.getFrame(), node, time, menu.getFunctionName(function), experiment);
2 26 Feb 07 jari 313             
2 26 Feb 07 jari 314             
2 26 Feb 07 jari 315             return node;
2 26 Feb 07 jari 316         } finally {
2 26 Feb 07 jari 317             if (algorithm != null) {
2 26 Feb 07 jari 318                 algorithm.removeAlgorithmListener(listener);
2 26 Feb 07 jari 319             }
2 26 Feb 07 jari 320             if (logger != null) {
2 26 Feb 07 jari 321                 logger.dispose();
2 26 Feb 07 jari 322             }
2 26 Feb 07 jari 323         }
2 26 Feb 07 jari 324     }
2 26 Feb 07 jari 325     
2 26 Feb 07 jari 326     /**
2 26 Feb 07 jari 327      * Adds classification nodes into a result tree root.
2 26 Feb 07 jari 328      */
2 26 Feb 07 jari 329     private void addClassificationResultNodes(Frame frame, DefaultMutableTreeNode node, long time, String function, Experiment experiment) {
2 26 Feb 07 jari 330         addExpressionImages(node);
2 26 Feb 07 jari 331         addCentroidViews(node);
2 26 Feb 07 jari 332         addTableViews(node);
2 26 Feb 07 jari 333         add3DViewNode(frame, node, experiment);
2 26 Feb 07 jari 334         addClusterInfo(node);
2 26 Feb 07 jari 335         addGeneralInfoNode(node, time, function);
2 26 Feb 07 jari 336     }
2 26 Feb 07 jari 337     
2 26 Feb 07 jari 338     /**
2 26 Feb 07 jari 339      * Adds validation nodes into a result tree root.
2 26 Feb 07 jari 340      */
2 26 Feb 07 jari 341     private void addValidationResultNodes(Frame frame, DefaultMutableTreeNode node, long time, String function, Experiment experiment) {
2 26 Feb 07 jari 342         addExpressionImages(node);
2 26 Feb 07 jari 343         addCentroidViews(node);
2 26 Feb 07 jari 344         addTableViews(node);
2 26 Feb 07 jari 345         add3DViewNode(frame, node, experiment);
2 26 Feb 07 jari 346         addClusterInfo(node);
2 26 Feb 07 jari 347         addGeneralInfoNode(node, time, function);
2 26 Feb 07 jari 348     }
2 26 Feb 07 jari 349     
2 26 Feb 07 jari 350     
2 26 Feb 07 jari 351     private void addTableViews(DefaultMutableTreeNode root) {
2 26 Feb 07 jari 352         DefaultMutableTreeNode node = new DefaultMutableTreeNode("Table views");
2 26 Feb 07 jari 353         IViewer tabViewer, tabViewer1;
2 26 Feb 07 jari 354         DefaultMutableTreeNode[] nodeArray = new DefaultMutableTreeNode[3];
2 26 Feb 07 jari 355         nodeArray[0] = new DefaultMutableTreeNode("Classifiers");
2 26 Feb 07 jari 356         
2 26 Feb 07 jari 357         if(this.algorithmSelection != A3) { //has validation
2 26 Feb 07 jari 358             nodeArray[1] = new DefaultMutableTreeNode("Initial Classification");
2 26 Feb 07 jari 359             nodeArray[2] = new DefaultMutableTreeNode("Validation Classification");
2 26 Feb 07 jari 360         } else {  //just classification
2 26 Feb 07 jari 361             nodeArray[1] = new DefaultMutableTreeNode("Classified");
2 26 Feb 07 jari 362             nodeArray[2] = new DefaultMutableTreeNode("Classifiers + Classified");
2 26 Feb 07 jari 363         }
2 26 Feb 07 jari 364         DefaultMutableTreeNode usedNode;
2 26 Feb 07 jari 365         DefaultMutableTreeNode unusedNode;
2 26 Feb 07 jari 366         
2 26 Feb 07 jari 367         if (classifyGenes) {
2 26 Feb 07 jari 368             tabViewer = new ClusterTableViewer(this.experiment, this.clusters, this.iData);
2 26 Feb 07 jari 369         } else {
2 26 Feb 07 jari 370             tabViewer = new ExperimentClusterTableViewer(this.experiment, this.clusters, this.iData);
2 26 Feb 07 jari 371         }
2 26 Feb 07 jari 372         
2 26 Feb 07 jari 373         for (int i =0; i < numberOfClasses; i++) {
2 26 Feb 07 jari 374             nodeArray[0].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1), tabViewer, new Integer(i))));
2 26 Feb 07 jari 375         }
2 26 Feb 07 jari 376         for (int i = numberOfClasses; i < 2*numberOfClasses; i++) {
2 26 Feb 07 jari 377             nodeArray[1].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - numberOfClasses), tabViewer, new Integer(i))));
2 26 Feb 07 jari 378         }
2 26 Feb 07 jari 379         for (int i =2*numberOfClasses; i < 3*numberOfClasses; i++) {
2 26 Feb 07 jari 380             nodeArray[2].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - 2*numberOfClasses), tabViewer, new Integer(i))));
2 26 Feb 07 jari 381         }
2 26 Feb 07 jari 382         
2 26 Feb 07 jari 383                 
2 26 Feb 07 jari 384         for (int i = 0; i < nodeArray.length; i++) {
2 26 Feb 07 jari 385             node.add(nodeArray[i]);
2 26 Feb 07 jari 386         }
2 26 Feb 07 jari 387         
2 26 Feb 07 jari 388         
2 26 Feb 07 jari 389         if (classifyGenes) {
2 26 Feb 07 jari 390             tabViewer = new ClusterTableViewer(this.experiment, this.clusters, this.iData);
2 26 Feb 07 jari 391         } else {
2 26 Feb 07 jari 392             tabViewer = new ExperimentClusterTableViewer(this.experiment, this.clusters, this.iData);
2 26 Feb 07 jari 393         }
2 26 Feb 07 jari 394         
2 26 Feb 07 jari 395         
2 26 Feb 07 jari 396         if (preSelectGenes) {
2 26 Feb 07 jari 397             if (classifyGenes) {
2 26 Feb 07 jari 398                 tabViewer1 = new ExperimentClusterTableViewer(this.experiment, this.geneClusters, this.iData);
2 26 Feb 07 jari 399                 usedNode = new DefaultMutableTreeNode(new LeafInfo("Used Exp Table View", tabViewer1, new Integer(0)));
2 26 Feb 07 jari 400                 unusedNode = new DefaultMutableTreeNode(new LeafInfo("Unused Exp Table View", tabViewer1, new Integer(1)));
2 26 Feb 07 jari 401             } else {
2 26 Feb 07 jari 402                 tabViewer1 = new ClusterTableViewer(this.experiment, this.geneClusters, this.iData);
2 26 Feb 07 jari 403                 usedNode = new DefaultMutableTreeNode(new LeafInfo("Used Gene Table View", tabViewer1, new Integer(0)));
2 26 Feb 07 jari 404                 unusedNode = new DefaultMutableTreeNode(new LeafInfo("Unused Gene Table View", tabViewer1, new Integer(1)));
2 26 Feb 07 jari 405             }
2 26 Feb 07 jari 406             node.add(usedNode);
2 26 Feb 07 jari 407             node.add(unusedNode);
2 26 Feb 07 jari 408         }
2 26 Feb 07 jari 409         
2 26 Feb 07 jari 410         root.add(node);
2 26 Feb 07 jari 411     }
2 26 Feb 07 jari 412     
2 26 Feb 07 jari 413     
2 26 Feb 07 jari 414     
2 26 Feb 07 jari 415     /**
2 26 Feb 07 jari 416      * Adds node with 3D viewer.
2 26 Feb 07 jari 417      */
2 26 Feb 07 jari 418     private void add3DViewNode(Frame frame, DefaultMutableTreeNode node, Experiment experiment) {
2 26 Feb 07 jari 419         
2 26 Feb 07 jari 420         if (matrix3D == null || matrix3D.getColumnDimension() < 3) {
2 26 Feb 07 jari 421             return;
2 26 Feb 07 jari 422         }
2 26 Feb 07 jari 423         
2 26 Feb 07 jari 424         DAM3DViewer dam3DViewer;
2 26 Feb 07 jari 425         if(mode == 1) {
2 26 Feb 07 jari 426             dam3DViewer = new DAM3DViewer(frame, mode, matrix3D, experiment, true);
2 26 Feb 07 jari 427         }
2 26 Feb 07 jari 428         else {
2 26 Feb 07 jari 429             dam3DViewer = new DAM3DViewer(frame, mode, matrix3D, experiment, false);
2 26 Feb 07 jari 430         }
2 26 Feb 07 jari 431         
2 26 Feb 07 jari 432         node.add(new DefaultMutableTreeNode(new LeafInfo("Gene Component 3D view", dam3DViewer, dam3DViewer.getJPopupMenu())));
2 26 Feb 07 jari 433     }
2 26 Feb 07 jari 434     
2 26 Feb 07 jari 435     /**
2 26 Feb 07 jari 436      * Adds node with a general information.
2 26 Feb 07 jari 437      */
2 26 Feb 07 jari 438     private void addGeneralInfoNode(DefaultMutableTreeNode node, long time, String function) {
2 26 Feb 07 jari 439         DefaultMutableTreeNode gNode = new DefaultMutableTreeNode("General Information");
2 26 Feb 07 jari 440         if (matrixS != null) {
2 26 Feb 07 jari 441             gNode.add(new DefaultMutableTreeNode("Components: "+matrixS.getColumnDimension()));
2 26 Feb 07 jari 442         }
2 26 Feb 07 jari 443         gNode.add(new DefaultMutableTreeNode("Time: "+String.valueOf(time)+" ms"));
2 26 Feb 07 jari 444         gNode.add(new DefaultMutableTreeNode(function));
2 26 Feb 07 jari 445         node.add(gNode);
2 26 Feb 07 jari 446     }
2 26 Feb 07 jari 447     
2 26 Feb 07 jari 448     
2 26 Feb 07 jari 449     /**
2 26 Feb 07 jari 450      * Adds nodes to display centroid charts.
2 26 Feb 07 jari 451      */
2 26 Feb 07 jari 452     private void addCentroidViews(DefaultMutableTreeNode root) {
2 26 Feb 07 jari 453         DefaultMutableTreeNode centroidNode = new DefaultMutableTreeNode("Centroid Graphs");
2 26 Feb 07 jari 454         DefaultMutableTreeNode expressionNode = new DefaultMutableTreeNode("Expression Graphs");
2 26 Feb 07 jari 455         
2 26 Feb 07 jari 456         DAMCentroidViewer centroidViewer;
2 26 Feb 07 jari 457         ExperimentClusterCentroidViewer expCentroidViewer ;
2 26 Feb 07 jari 458         DAMCentroidViewer geneCentroidViewer;
2 26 Feb 07 jari 459         
2 26 Feb 07 jari 460         DefaultMutableTreeNode[] centroidNodeArray = new DefaultMutableTreeNode[3];
2 26 Feb 07 jari 461         DefaultMutableTreeNode[] expressionNodeArray = new DefaultMutableTreeNode[3];
2 26 Feb 07 jari 462         
2 26 Feb 07 jari 463         centroidNodeArray[0] = new DefaultMutableTreeNode("Classifiers");
2 26 Feb 07 jari 464         centroidNodeArray[1] = new DefaultMutableTreeNode("Classified");
2 26 Feb 07 jari 465         centroidNodeArray[2] = new DefaultMutableTreeNode("Classifiers + Classified");
2 26 Feb 07 jari 466         
2 26 Feb 07 jari 467         expressionNodeArray[0] = new DefaultMutableTreeNode("Classifiers");
2 26 Feb 07 jari 468         expressionNodeArray[1] = new DefaultMutableTreeNode("Classified");
2 26 Feb 07 jari 469         expressionNodeArray[2] = new DefaultMutableTreeNode("Classifiers + Classified");
2 26 Feb 07 jari 470         
2 26 Feb 07 jari 471         
2 26 Feb 07 jari 472         DefaultMutableTreeNode unusedGeneCentroidNode;
2 26 Feb 07 jari 473         DefaultMutableTreeNode unusedGeneExpressionNode;
2 26 Feb 07 jari 474         
2 26 Feb 07 jari 475         DefaultMutableTreeNode usedGeneCentroidNode;
2 26 Feb 07 jari 476         DefaultMutableTreeNode usedGeneExpressionNode;
2 26 Feb 07 jari 477         
2 26 Feb 07 jari 478         if(classifyGenes){
2 26 Feb 07 jari 479             centroidViewer = new DAMCentroidViewer(this.experiment, clusters);
2 26 Feb 07 jari 480             centroidViewer.setMeans(this.means.A);
2 26 Feb 07 jari 481             centroidViewer.setVariances(this.variances.A);
2 26 Feb 07 jari 482             
2 26 Feb 07 jari 483             for (int i =0; i < numberOfClasses; i++) {
2 26 Feb 07 jari 484                 centroidNodeArray[0].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1), centroidViewer, new CentroidUserObject(i, CentroidUserObject.VARIANCES_MODE))));
2 26 Feb 07 jari 485                 expressionNodeArray[0].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1), centroidViewer, new CentroidUserObject(i, CentroidUserObject.VALUES_MODE))));
2 26 Feb 07 jari 486             }
2 26 Feb 07 jari 487             for (int i = numberOfClasses; i < 2*numberOfClasses; i++) {
2 26 Feb 07 jari 488                 centroidNodeArray[1].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - numberOfClasses), centroidViewer, new CentroidUserObject(i, CentroidUserObject.VARIANCES_MODE))));
2 26 Feb 07 jari 489                 expressionNodeArray[1].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - numberOfClasses), centroidViewer, new CentroidUserObject(i, CentroidUserObject.VALUES_MODE))));
2 26 Feb 07 jari 490             }
2 26 Feb 07 jari 491             for (int i =2*numberOfClasses; i < 3*numberOfClasses; i++) {
2 26 Feb 07 jari 492                 centroidNodeArray[2].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - 2*numberOfClasses), centroidViewer, new CentroidUserObject(i, CentroidUserObject.VARIANCES_MODE))));
2 26 Feb 07 jari 493                 expressionNodeArray[2].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 -2*numberOfClasses), centroidViewer, new CentroidUserObject(i, CentroidUserObject.VALUES_MODE))));
2 26 Feb 07 jari 494             }
2 26 Feb 07 jari 495             
2 26 Feb 07 jari 496             DAMCentroidsViewer centroidsViewer = new DAMCentroidsViewer(this.experiment, clusters);
2 26 Feb 07 jari 497             centroidsViewer.setMeans(this.means.A);
2 26 Feb 07 jari 498             centroidsViewer.setVariances(this.variances.A);
2 26 Feb 07 jari 499             
2 26 Feb 07 jari 500             
2 26 Feb 07 jari 501             for (int i = 0; i < centroidNodeArray.length; i++) {
2 26 Feb 07 jari 502                 centroidNode.add(centroidNodeArray[i]);
2 26 Feb 07 jari 503                 expressionNode.add(expressionNodeArray[i]);
2 26 Feb 07 jari 504             }
2 26 Feb 07 jari 505             
2 26 Feb 07 jari 506             expCentroidViewer = new DAMExperimentCentroidViewer(this.experiment, geneClusters);
2 26 Feb 07 jari 507             expCentroidViewer.setMeans(this.means_used.A);
2 26 Feb 07 jari 508             expCentroidViewer.setVariances(this.variances_used.A);
2 26 Feb 07 jari 509             
2 26 Feb 07 jari 510             if (preSelectGenes) {
2 26 Feb 07 jari 511                 usedGeneCentroidNode = new DefaultMutableTreeNode(new LeafInfo("Used Exp Centroid Graph", expCentroidViewer, new CentroidUserObject(0, CentroidUserObject.VARIANCES_MODE)));
2 26 Feb 07 jari 512                 usedGeneExpressionNode = new DefaultMutableTreeNode(new LeafInfo("Used Exp Expression Graph ", expCentroidViewer, new CentroidUserObject(0, CentroidUserObject.VALUES_MODE)));
2 26 Feb 07 jari 513                 
2 26 Feb 07 jari 514                 unusedGeneCentroidNode = new DefaultMutableTreeNode(new LeafInfo("Unused Exp Centroid Graph", expCentroidViewer, new CentroidUserObject(1, CentroidUserObject.VARIANCES_MODE)));
2 26 Feb 07 jari 515                 unusedGeneExpressionNode = new DefaultMutableTreeNode(new LeafInfo("Unused Exp Expression Graph ", expCentroidViewer, new CentroidUserObject(1, CentroidUserObject.VALUES_MODE)));
2 26 Feb 07 jari 516                 
2 26 Feb 07 jari 517                 centroidNode.add(usedGeneCentroidNode);
2 26 Feb 07 jari 518                 expressionNode.add(usedGeneExpressionNode);
2 26 Feb 07 jari 519                 
2 26 Feb 07 jari 520                 centroidNode.add(unusedGeneCentroidNode);
2 26 Feb 07 jari 521                 expressionNode.add(unusedGeneExpressionNode);
2 26 Feb 07 jari 522             }
2 26 Feb 07 jari 523             
2 26 Feb 07 jari 524         }
2 26 Feb 07 jari 525         else{
2 26 Feb 07 jari 526             expCentroidViewer = new DAMExperimentCentroidViewer(this.experiment, clusters);
2 26 Feb 07 jari 527             
2 26 Feb 07 jari 528             expCentroidViewer.setMeans(this.means.A);
2 26 Feb 07 jari 529             expCentroidViewer.setVariances(this.variances.A);
2 26 Feb 07 jari 530             
2 26 Feb 07 jari 531             for (int i =0; i < numberOfClasses; i++) {
2 26 Feb 07 jari 532                 centroidNodeArray[0].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1), expCentroidViewer, new CentroidUserObject(i, CentroidUserObject.VARIANCES_MODE))));
2 26 Feb 07 jari 533                 expressionNodeArray[0].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1), expCentroidViewer, new CentroidUserObject(i, CentroidUserObject.VALUES_MODE))));
2 26 Feb 07 jari 534             }
2 26 Feb 07 jari 535             for (int i = numberOfClasses; i < 2*numberOfClasses; i++) {
2 26 Feb 07 jari 536                 centroidNodeArray[1].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - numberOfClasses), expCentroidViewer, new CentroidUserObject(i, CentroidUserObject.VARIANCES_MODE))));
2 26 Feb 07 jari 537                 expressionNodeArray[1].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - numberOfClasses), expCentroidViewer, new CentroidUserObject(i, CentroidUserObject.VALUES_MODE))));
2 26 Feb 07 jari 538             }
2 26 Feb 07 jari 539             for (int i =2*numberOfClasses; i < 3*numberOfClasses; i++) {
2 26 Feb 07 jari 540                 centroidNodeArray[2].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - 2*numberOfClasses), expCentroidViewer, new CentroidUserObject(i, CentroidUserObject.VARIANCES_MODE))));
2 26 Feb 07 jari 541                 expressionNodeArray[2].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 -2*numberOfClasses), expCentroidViewer, new CentroidUserObject(i, CentroidUserObject.VALUES_MODE))));
2 26 Feb 07 jari 542             }
2 26 Feb 07 jari 543             
2 26 Feb 07 jari 544             DAMExperimentCentroidsViewer expCentroidsViewer = new DAMExperimentCentroidsViewer(this.experiment, clusters);
2 26 Feb 07 jari 545             
2 26 Feb 07 jari 546             expCentroidsViewer.setMeans(this.means.A);
2 26 Feb 07 jari 547             expCentroidsViewer.setVariances(this.variances.A);
2 26 Feb 07 jari 548             
2 26 Feb 07 jari 549             for (int i = 0; i < centroidNodeArray.length; i++) {
2 26 Feb 07 jari 550                 centroidNode.add(centroidNodeArray[i]);
2 26 Feb 07 jari 551                 expressionNode.add(expressionNodeArray[i]);
2 26 Feb 07 jari 552             }
2 26 Feb 07 jari 553             
2 26 Feb 07 jari 554             geneCentroidViewer = new DAMCentroidViewer(this.experiment, geneClusters);
2 26 Feb 07 jari 555             geneCentroidViewer.setMeans(this.means_used.A);
2 26 Feb 07 jari 556             geneCentroidViewer.setVariances(this.variances_used.A);
2 26 Feb 07 jari 557             
2 26 Feb 07 jari 558             if (preSelectGenes) {
2 26 Feb 07 jari 559                 usedGeneCentroidNode = new DefaultMutableTreeNode(new LeafInfo("Used Gene Centroid Graph", geneCentroidViewer, new CentroidUserObject(0, CentroidUserObject.VARIANCES_MODE)));
2 26 Feb 07 jari 560                 usedGeneExpressionNode = new DefaultMutableTreeNode(new LeafInfo("Used Gene Expression Graph ", geneCentroidViewer, new CentroidUserObject(0, CentroidUserObject.VALUES_MODE)));
2 26 Feb 07 jari 561                 
2 26 Feb 07 jari 562                 unusedGeneCentroidNode = new DefaultMutableTreeNode(new LeafInfo("Unused Gene Centroid Graph", geneCentroidViewer, new CentroidUserObject(1, CentroidUserObject.VARIANCES_MODE)));
2 26 Feb 07 jari 563                 unusedGeneExpressionNode = new DefaultMutableTreeNode(new LeafInfo("Unused Gene Expression Graph ", geneCentroidViewer, new CentroidUserObject(1, CentroidUserObject.VALUES_MODE)));
2 26 Feb 07 jari 564                 
2 26 Feb 07 jari 565                 centroidNode.add(usedGeneCentroidNode);
2 26 Feb 07 jari 566                 expressionNode.add(usedGeneExpressionNode);
2 26 Feb 07 jari 567                 
2 26 Feb 07 jari 568                 centroidNode.add(unusedGeneCentroidNode);
2 26 Feb 07 jari 569                 expressionNode.add(unusedGeneExpressionNode);
2 26 Feb 07 jari 570             }
2 26 Feb 07 jari 571             
2 26 Feb 07 jari 572         }
2 26 Feb 07 jari 573         
2 26 Feb 07 jari 574         root.add(centroidNode);
2 26 Feb 07 jari 575         root.add(expressionNode);
2 26 Feb 07 jari 576     }
2 26 Feb 07 jari 577     
2 26 Feb 07 jari 578     
2 26 Feb 07 jari 579     /**
2 26 Feb 07 jari 580      * Adds node with cluster information.
2 26 Feb 07 jari 581      */
2 26 Feb 07 jari 582     
2 26 Feb 07 jari 583     private void addClusterInfo(DefaultMutableTreeNode root) {
2 26 Feb 07 jari 584         DefaultMutableTreeNode node = new DefaultMutableTreeNode("Cluster Information");
2 26 Feb 07 jari 585         if(this.classifyGenes)
2 26 Feb 07 jari 586             node.add(new DefaultMutableTreeNode(new LeafInfo("Genes in Classes (#,%)", new DAMInfoViewer(this.clusters, this.experiment.getNumberOfGenes(), numberOfClasses, usedGeneIndices.length, unusedGeneIndices.length, alpha, algorithmSelection, isPDA, preSelectGenes))));
2 26 Feb 07 jari 587         else
2 26 Feb 07 jari 588             node.add(new DefaultMutableTreeNode(new LeafInfo("Samples in Classes (#,%)", new DAMInfoViewer(this.clusters, this.experiment.getNumberOfSamples(), false, numberOfClasses, usedGeneIndices.length, unusedGeneIndices.length, alpha, algorithmSelection, isPDA, preSelectGenes))));
2 26 Feb 07 jari 589         
2 26 Feb 07 jari 590         root.add(node);
2 26 Feb 07 jari 591     }
2 26 Feb 07 jari 592     
2 26 Feb 07 jari 593     
2 26 Feb 07 jari 594     /**
2 26 Feb 07 jari 595      * Adds nodes to display clusters data.
2 26 Feb 07 jari 596      */
2 26 Feb 07 jari 597     private void addExpressionImages(DefaultMutableTreeNode root) {
2 26 Feb 07 jari 598         DefaultMutableTreeNode node = new DefaultMutableTreeNode("Expression Images");
2 26 Feb 07 jari 599         IViewer expViewer, unusedGeneExpViewer, usedGeneExpViewer;
2 26 Feb 07 jari 600         DefaultMutableTreeNode[] nodeArray = new DefaultMutableTreeNode[3];
2 26 Feb 07 jari 601         
2 26 Feb 07 jari 602         nodeArray[0] = new DefaultMutableTreeNode("Classifiers");
2 26 Feb 07 jari 603         nodeArray[1] = new DefaultMutableTreeNode("Classified");
2 26 Feb 07 jari 604         nodeArray[2] = new DefaultMutableTreeNode("Classifiers + Classified");
2 26 Feb 07 jari 605         
2 26 Feb 07 jari 606         if (classifyGenes) {
2 26 Feb 07 jari 607             expViewer = new DAMExperimentViewer(this.experiment, this.clusters);
2 26 Feb 07 jari 608         } else {
2 26 Feb 07 jari 609             expViewer = new DAMExperimentClusterViewer(this.experiment, this.clusters);
2 26 Feb 07 jari 610         }
2 26 Feb 07 jari 611         
2 26 Feb 07 jari 612         for (int i =0; i < numberOfClasses; i++) {
2 26 Feb 07 jari 613             nodeArray[0].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1), expViewer, new Integer(i))));
2 26 Feb 07 jari 614         }
2 26 Feb 07 jari 615         for (int i = numberOfClasses; i < 2*numberOfClasses; i++) {
2 26 Feb 07 jari 616             nodeArray[1].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - numberOfClasses), expViewer, new Integer(i))));
2 26 Feb 07 jari 617         }
2 26 Feb 07 jari 618         for (int i =2*numberOfClasses; i < 3*numberOfClasses; i++) {
2 26 Feb 07 jari 619             nodeArray[2].add(new DefaultMutableTreeNode(new LeafInfo("Class "+String.valueOf(i+1 - 2*numberOfClasses), expViewer, new Integer(i))));
2 26 Feb 07 jari 620         }
2 26 Feb 07 jari 621         
2 26 Feb 07 jari 622         for (int i = 0; i < nodeArray.length; i++) {
2 26 Feb 07 jari 623             node.add(nodeArray[i]);
2 26 Feb 07 jari 624         }
2 26 Feb 07 jari 625         
2 26 Feb 07 jari 626         unusedGeneExpViewer = new DAMExperimentViewer(unusedExperiment, null);
2 26 Feb 07 jari 627         usedGeneExpViewer = new DAMExperimentViewer(usedExperiment, null);
2 26 Feb 07 jari 628         
2 26 Feb 07 jari 629         if (preSelectGenes) {
2 26 Feb 07 jari 630             if (classifyGenes) {
2 26 Feb 07 jari 631                 node.add(new DefaultMutableTreeNode(new LeafInfo("Used Exp Expression", usedGeneExpViewer)));
2 26 Feb 07 jari 632                 node.add(new DefaultMutableTreeNode(new LeafInfo("Unused Exp Expression", unusedGeneExpViewer)));
2 26 Feb 07 jari 633             } else {
2 26 Feb 07 jari 634                 node.add(new DefaultMutableTreeNode(new LeafInfo("Used Gene Expression", usedGeneExpViewer)));
2 26 Feb 07 jari 635                 node.add(new DefaultMutableTreeNode(new LeafInfo("Unused Gene Expression", unusedGeneExpViewer)));
2 26 Feb 07 jari 636             }
2 26 Feb 07 jari 637         }
2 26 Feb 07 jari 638         
2 26 Feb 07 jari 639         root.add(node);
2 26 Feb 07 jari 640         
2 26 Feb 07 jari 641     }
2 26 Feb 07 jari 642     
2 26 Feb 07 jari 643     
2 26 Feb 07 jari 644     
2 26 Feb 07 jari 645     /**
2 26 Feb 07 jari 646      * The class to listen to dialog and algorithm events.
2 26 Feb 07 jari 647      */
2 26 Feb 07 jari 648     private class Listener extends DialogListener implements AlgorithmListener {
2 26 Feb 07 jari 649         
2 26 Feb 07 jari 650         public void valueChanged(AlgorithmEvent event) {
2 26 Feb 07 jari 651             logger.append(event.getDescription());
2 26 Feb 07 jari 652         }
2 26 Feb 07 jari 653         
2 26 Feb 07 jari 654         public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 655             String command = e.getActionCommand();
2 26 Feb 07 jari 656             if (command.equals("cancel-command")) {
2 26 Feb 07 jari 657                 algorithm.abort();
2 26 Feb 07 jari 658                 logger.dispose();
2 26 Feb 07 jari 659             }
2 26 Feb 07 jari 660         }
2 26 Feb 07 jari 661         
2 26 Feb 07 jari 662         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 663             algorithm.abort();
2 26 Feb 07 jari 664             logger.dispose();
2 26 Feb 07 jari 665         }
2 26 Feb 07 jari 666     }
2 26 Feb 07 jari 667     
2 26 Feb 07 jari 668 }