mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/sam/SAMGraphViewer.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  * SAMGraphViewer.java
2 26 Feb 07 jari 7  *
2 26 Feb 07 jari 8  * Created on January 28, 2003, 9:52 AM
2 26 Feb 07 jari 9  */
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 package org.tigr.microarray.mev.cluster.gui.impl.sam;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import java.awt.BasicStroke;
2 26 Feb 07 jari 14 import java.awt.Color;
2 26 Feb 07 jari 15 import java.awt.Graphics;
2 26 Feb 07 jari 16 import java.awt.Graphics2D;
2 26 Feb 07 jari 17 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 18 import java.beans.Expression;
2 26 Feb 07 jari 19 import java.text.DecimalFormat;
2 26 Feb 07 jari 20
2 26 Feb 07 jari 21 import javax.swing.JComponent;
2 26 Feb 07 jari 22 import javax.swing.JPanel;
2 26 Feb 07 jari 23
2 26 Feb 07 jari 24 import org.tigr.microarray.mev.cluster.gui.Experiment;
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.IDisplayMenu;
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
2 26 Feb 07 jari 30 /**
2 26 Feb 07 jari 31  *
2 26 Feb 07 jari 32  * @author  nbhagaba
2 26 Feb 07 jari 33  * @version 
2 26 Feb 07 jari 34  */
2 26 Feb 07 jari 35 public class SAMGraphViewer extends JPanel implements IViewer {
2 26 Feb 07 jari 36
2 26 Feb 07 jari 37     private double[] yArray, xArray;
2 26 Feb 07 jari 38     private double delta; 
2 26 Feb 07 jari 39     int originX, originY;
2 26 Feb 07 jari 40     int studyDesign;
2 26 Feb 07 jari 41     int exptID = 0;
2 26 Feb 07 jari 42
2 26 Feb 07 jari 43     /** Creates new SAMGraphViewer */
2 26 Feb 07 jari 44     public SAMGraphViewer(double[] xArray, double[] yArray, int studyDesign, double delta) {
2 26 Feb 07 jari 45         this.yArray = yArray;
2 26 Feb 07 jari 46         this.xArray = xArray;  
2 26 Feb 07 jari 47         this.delta = delta; 
2 26 Feb 07 jari 48         this.studyDesign = studyDesign;
2 26 Feb 07 jari 49         this.setBackground(Color.white);
2 26 Feb 07 jari 50     }
2 26 Feb 07 jari 51     
2 26 Feb 07 jari 52     public SAMGraphViewer(double[] xArray, double[] yArray, Integer studyDesign, Double delta){
2 26 Feb 07 jari 53       this(xArray, yArray, studyDesign.intValue(), delta.doubleValue());
2 26 Feb 07 jari 54     }
2 26 Feb 07 jari 55     public Expression getExpression() {
2 26 Feb 07 jari 56       return new Expression(this, this.getClass(), "new", 
2 26 Feb 07 jari 57           new Object[]{xArray, yArray, new Integer(studyDesign), new Double(delta)});
2 26 Feb 07 jari 58     }
2 26 Feb 07 jari 59     public void paint(Graphics g) {
2 26 Feb 07 jari 60         super.paint(g);
2 26 Feb 07 jari 61         if ((studyDesign == SAMInitDialog.TWO_CLASS_UNPAIRED) || (studyDesign == SAMInitDialog.TWO_CLASS_PAIRED) || (studyDesign == SAMInitDialog.CENSORED_SURVIVAL) || (studyDesign == SAMInitDialog.ONE_CLASS)) {
2 26 Feb 07 jari 62             paint1(g);
2 26 Feb 07 jari 63         } else if (studyDesign == SAMInitDialog.MULTI_CLASS) {
2 26 Feb 07 jari 64             paint2(g);
2 26 Feb 07 jari 65         }
2 26 Feb 07 jari 66         
2 26 Feb 07 jari 67     }
2 26 Feb 07 jari 68     
2 26 Feb 07 jari 69     private void paint1(Graphics g) {
2 26 Feb 07 jari 70         Graphics2D g2D = (Graphics2D)g;
2 26 Feb 07 jari 71         int panelWidth = this.getWidth();
2 26 Feb 07 jari 72         int panelHeight = this.getHeight();
2 26 Feb 07 jari 73         originX = (int)Math.round((double)(this.getWidth()/2));
2 26 Feb 07 jari 74         originY = (int)Math.round((double)(this.getHeight()/2));
2 26 Feb 07 jari 75         double origMaxXValue = getMax(xArray);
2 26 Feb 07 jari 76         double origMaxYValue = getMax(yArray);
2 26 Feb 07 jari 77         double origMinXValue = getMin(xArray);
2 26 Feb 07 jari 78         double origMinYValue = getMin(yArray);
2 26 Feb 07 jari 79         
2 26 Feb 07 jari 80         double xScalingFactor = getXScalingFactor(origMaxXValue, origMinXValue); // relative to originX and originY
2 26 Feb 07 jari 81         double yScalingFactor = getYScalingFactor(origMaxYValue, origMinYValue); // relative to originX and originY
2 26 Feb 07 jari 82         
2 26 Feb 07 jari 83         final float dash1[] = {10.0f};
2 26 Feb 07 jari 84         
2 26 Feb 07 jari 85         final BasicStroke dashed = new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash1, 0.0f);
2 26 Feb 07 jari 86         
2 26 Feb 07 jari 87         //System.out.println("xScalingFactor = " + xScalingFactor + ", yScalingFactor = " + yScalingFactor);
2 26 Feb 07 jari 88         
2 26 Feb 07 jari 89         //draw axes
2 26 Feb 07 jari 90         g2D.setStroke(new BasicStroke(2.0f));
2 26 Feb 07 jari 91         g2D.drawLine(0, (int)Math.round((double)(this.getHeight()/2)), this.getWidth(), (int)Math.round((double)(this.getHeight()/2)));
2 26 Feb 07 jari 92         g2D.drawLine((int)Math.round((double)(this.getWidth()/2)), 0, (int)Math.round((double)(this.getWidth()/2)), this.getHeight());
2 26 Feb 07 jari 93         
2 26 Feb 07 jari 94         double[] xIntervalArray = new double[6];
2 26 Feb 07 jari 95         double[] yIntervalArray = new double[6];
2 26 Feb 07 jari 96         
2 26 Feb 07 jari 97         double xIncrement = 0.0d;
2 26 Feb 07 jari 98         double yIncrement = 0.0d;
2 26 Feb 07 jari 99         
2 26 Feb 07 jari 100         if (Math.abs(origMaxXValue) > Math.abs(origMinXValue)) {
2 26 Feb 07 jari 101             xIncrement = Math.abs((double)(origMaxXValue/5.0d));
2 26 Feb 07 jari 102         } else {
2 26 Feb 07 jari 103             xIncrement = Math.abs((double)(origMinXValue/5.0d));
2 26 Feb 07 jari 104         }
2 26 Feb 07 jari 105         
2 26 Feb 07 jari 106         if (Math.abs(origMaxYValue) > Math.abs(origMinYValue)) {
2 26 Feb 07 jari 107             yIncrement = Math.abs((double)(origMaxYValue/5.0d));
2 26 Feb 07 jari 108         } else {
2 26 Feb 07 jari 109             yIncrement = Math.abs((double)(origMinYValue/5.0d));
2 26 Feb 07 jari 110         }
2 26 Feb 07 jari 111         
2 26 Feb 07 jari 112         double xCounter = 0.0d;
2 26 Feb 07 jari 113         double yCounter = 0.0d;
2 26 Feb 07 jari 114         for (int i = 0; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 115             xIntervalArray[i] = xCounter;
2 26 Feb 07 jari 116             xCounter = xCounter + xIncrement;
2 26 Feb 07 jari 117             yIntervalArray[i] = yCounter;
2 26 Feb 07 jari 118             yCounter = yCounter + yIncrement;
2 26 Feb 07 jari 119         }
2 26 Feb 07 jari 120         
2 26 Feb 07 jari 121         //draw x tick marks
2 26 Feb 07 jari 122         
2 26 Feb 07 jari 123         for (int i = 1; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 124             g2D.drawLine((int)Math.round(xIntervalArray[i]*xScalingFactor) +this.getWidth()/2, this.getHeight()/2 - 5, (int)Math.round(xIntervalArray[i]*xScalingFactor) +this.getWidth()/2, this.getHeight()/2 + 5);
2 26 Feb 07 jari 125         }
2 26 Feb 07 jari 126         
2 26 Feb 07 jari 127         for (int i = 1; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 128             g2D.drawLine(this.getWidth()/2 - (int)Math.round(xIntervalArray[i]*xScalingFactor), this.getHeight()/2 - 5, this.getWidth()/2 - (int)Math.round(xIntervalArray[i]*xScalingFactor), this.getHeight()/2 + 5);
2 26 Feb 07 jari 129         }
2 26 Feb 07 jari 130         
2 26 Feb 07 jari 131         
2 26 Feb 07 jari 132         //draw  reference line of slope = 1
2 26 Feb 07 jari 133         g2D.drawLine(this.getWidth()/2 - (int)Math.round(xIntervalArray[5]*xScalingFactor), this.getHeight()/2 + (int)Math.round(xIntervalArray[5]*yScalingFactor), this.getWidth()/2 + (int)Math.round(xIntervalArray[5]*xScalingFactor), this.getHeight()/2 - (int)Math.round(xIntervalArray[5]*yScalingFactor));
2 26 Feb 07 jari 134         
2 26 Feb 07 jari 135         g2D.setColor(Color.gray);
2 26 Feb 07 jari 136         
2 26 Feb 07 jari 137         g2D.setStroke(new BasicStroke(1.0f));
2 26 Feb 07 jari 138         
2 26 Feb 07 jari 139         //draw horizonal grid lines
2 26 Feb 07 jari 140         for (int i = 1; i < yIntervalArray.length; i++) {
2 26 Feb 07 jari 141             g2D.drawLine(0, this.getHeight()/2 + (int)Math.round(yIntervalArray[i]*yScalingFactor), this.getWidth(), this.getHeight()/2 + (int)Math.round(yIntervalArray[i]*yScalingFactor));
2 26 Feb 07 jari 142         }
2 26 Feb 07 jari 143         
2 26 Feb 07 jari 144         for (int i = 1; i < yIntervalArray.length; i++) {
2 26 Feb 07 jari 145             g2D.drawLine(0, this.getHeight()/2 - (int)Math.round(yIntervalArray[i]*yScalingFactor), this.getWidth(), this.getHeight()/2 - (int)Math.round(yIntervalArray[i]*yScalingFactor));
2 26 Feb 07 jari 146         }
2 26 Feb 07 jari 147         
2 26 Feb 07 jari 148         g2D.setStroke(new BasicStroke(2.0f));
2 26 Feb 07 jari 149         g2D.setColor(Color.black);
2 26 Feb 07 jari 150         
2 26 Feb 07 jari 151         DecimalFormat nf = new DecimalFormat();
2 26 Feb 07 jari 152         nf.setMaximumFractionDigits(2);
2 26 Feb 07 jari 153         
2 26 Feb 07 jari 154         //tick labels
2 26 Feb 07 jari 155         for (int i = 1; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 156             g2D.drawString(nf.format((double)xIntervalArray[i]), (int)Math.round(xIntervalArray[i]*xScalingFactor) +this.getWidth()/2 - 10, this.getHeight()/2 + 20);
2 26 Feb 07 jari 157         }
2 26 Feb 07 jari 158         
2 26 Feb 07 jari 159         for (int i = 1; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 160             g2D.drawString("-" + nf.format((double)xIntervalArray[i]), this.getWidth()/2 - (int)Math.round(xIntervalArray[i]*xScalingFactor) - 10, this.getHeight()/2 + 20);
2 26 Feb 07 jari 161         }
2 26 Feb 07 jari 162         
2 26 Feb 07 jari 163         for (int i = 1; i < yIntervalArray.length; i++) {
2 26 Feb 07 jari 164             g2D.drawString(nf.format((double)yIntervalArray[i]), this.getWidth()/2 - 30, this.getHeight()/2 - (int)Math.round(yIntervalArray[i]*yScalingFactor) - 5);
2 26 Feb 07 jari 165         }
2 26 Feb 07 jari 166         
2 26 Feb 07 jari 167         for (int i = 1; i < yIntervalArray.length; i++) {
2 26 Feb 07 jari 168             g2D.drawString("-" + nf.format((double)yIntervalArray[i]), this.getWidth()/2 - 30, this.getHeight()/2 + (int)Math.round(yIntervalArray[i]*yScalingFactor) - 5);
2 26 Feb 07 jari 169         }
2 26 Feb 07 jari 170         
2 26 Feb 07 jari 171         int deltaOffset = (int)Math.round(delta*yScalingFactor);
2 26 Feb 07 jari 172         
2 26 Feb 07 jari 173         //draw dashed lines for delta limits
2 26 Feb 07 jari 174         g2D.setStroke(dashed);
2 26 Feb 07 jari 175         
2 26 Feb 07 jari 176         g2D.drawLine(this.getWidth()/2 - (int)Math.round(xIntervalArray[5]*xScalingFactor), this.getHeight()/2 + (int)Math.round(xIntervalArray[5]*yScalingFactor) - deltaOffset, this.getWidth()/2 + (int)Math.round(xIntervalArray[5]*xScalingFactor), this.getHeight()/2 - (int)Math.round(xIntervalArray[5]*yScalingFactor) - deltaOffset);
2 26 Feb 07 jari 177         g2D.drawLine(this.getWidth()/2 - (int)Math.round(xIntervalArray[5]*xScalingFactor), this.getHeight()/2 + (int)Math.round(xIntervalArray[5]*yScalingFactor) + deltaOffset, this.getWidth()/2 + (int)Math.round(xIntervalArray[5]*xScalingFactor), this.getHeight()/2 - (int)Math.round(xIntervalArray[5]*yScalingFactor) + deltaOffset);
2 26 Feb 07 jari 178         
2 26 Feb 07 jari 179         g2D.setStroke(new BasicStroke(2.0f));
2 26 Feb 07 jari 180         
2 26 Feb 07 jari 181         boolean posSigEncountered = false;
2 26 Feb 07 jari 182         boolean negSigEncountered = false;
2 26 Feb 07 jari 183         
2 26 Feb 07 jari 184         int lowestPosSigIndex = 0;
2 26 Feb 07 jari 185         int highestNegSigIndex = 0;
2 26 Feb 07 jari 186         
2 26 Feb 07 jari 187         for (int i = 0; i < xArray.length; i++) {
2 26 Feb 07 jari 188             if ( (xArray[i] > 0.0d) && ((yArray[i] - xArray[i]) > delta) ) {
2 26 Feb 07 jari 189                 lowestPosSigIndex = i;
2 26 Feb 07 jari 190                 posSigEncountered = true;
2 26 Feb 07 jari 191                 break;
2 26 Feb 07 jari 192             }
2 26 Feb 07 jari 193         }
2 26 Feb 07 jari 194         
2 26 Feb 07 jari 195         for (int i = 0; i < xArray.length; i++) {
2 26 Feb 07 jari 196             if ( (xArray[i] < 0.0d) && ((xArray[i] - yArray[i]) > delta) ) {
2 26 Feb 07 jari 197                 highestNegSigIndex = i;
2 26 Feb 07 jari 198                 negSigEncountered = true;
2 26 Feb 07 jari 199             }
2 26 Feb 07 jari 200         }
2 26 Feb 07 jari 201         
2 26 Feb 07 jari 202         Color[] pointColor = new Color[xArray.length];
2 26 Feb 07 jari 203         
2 26 Feb 07 jari 204         if ((posSigEncountered)&&(negSigEncountered)) {
2 26 Feb 07 jari 205             for (int i = 0; i < (highestNegSigIndex + 1); i++) {
2 26 Feb 07 jari 206                 //negSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 207                 pointColor[i] = Color.green.darker();
2 26 Feb 07 jari 208             }
2 26 Feb 07 jari 209             
2 26 Feb 07 jari 210             for (int i = (highestNegSigIndex + 1); i < lowestPosSigIndex; i++) {
2 26 Feb 07 jari 211                 //nonSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 212                 pointColor[i] = Color.black;
2 26 Feb 07 jari 213             }
2 26 Feb 07 jari 214             
2 26 Feb 07 jari 215             for (int i = lowestPosSigIndex; i < xArray.length; i++) {
2 26 Feb 07 jari 216                 //posSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 217                 pointColor[i] = Color.red;
2 26 Feb 07 jari 218             }
2 26 Feb 07 jari 219             
2 26 Feb 07 jari 220         } else if((posSigEncountered)&&(!negSigEncountered)) {
2 26 Feb 07 jari 221             for (int i = 0; i < lowestPosSigIndex; i++) {
2 26 Feb 07 jari 222                 //nonSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 223                 pointColor[i] = Color.black;
2 26 Feb 07 jari 224             }
2 26 Feb 07 jari 225             
2 26 Feb 07 jari 226             for (int i = lowestPosSigIndex; i < xArray.length; i++) {
2 26 Feb 07 jari 227                 //posSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 228                 pointColor[i] = Color.red;
2 26 Feb 07 jari 229             }
2 26 Feb 07 jari 230         } else if ((!posSigEncountered) && (negSigEncountered)) {
2 26 Feb 07 jari 231             for (int i = 0; i < (highestNegSigIndex + 1); i++) {
2 26 Feb 07 jari 232                 //negSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 233                 pointColor[i] = Color.green.darker();
2 26 Feb 07 jari 234             }
2 26 Feb 07 jari 235             for (int i = (highestNegSigIndex + 1); i < xArray.length; i++) {
2 26 Feb 07 jari 236                 //nonSigGenes.add(new Integer[sortedDArrayIndices[i]]);
2 26 Feb 07 jari 237                 pointColor[i] = Color.black;
2 26 Feb 07 jari 238             }
2 26 Feb 07 jari 239         } else if ((!posSigEncountered) && (!negSigEncountered)) {
2 26 Feb 07 jari 240             for (int i = 0; i < xArray.length; i++) {
2 26 Feb 07 jari 241                 //nonSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 242                 pointColor[i] = Color.black;
2 26 Feb 07 jari 243             }
2 26 Feb 07 jari 244         }
2 26 Feb 07 jari 245         
2 26 Feb 07 jari 246         //draw data points
2 26 Feb 07 jari 247         for (int i = 0; i < xArray.length; i++) {
2 26 Feb 07 jari 248                 /*
2 26 Feb 07 jari 249                 if (((yArray[i] - xArray[i]) > delta) && (yArray[i] > 0.0d) ) {
2 26 Feb 07 jari 250                     g2D.setColor(Color.red);
2 26 Feb 07 jari 251                 } else if (((yArray[i] - xArray[i]) < (-1.0d)*delta) && (yArray[i] < 0.0d) ) {
2 26 Feb 07 jari 252                     g2D.setColor(Color.green.darker());
2 26 Feb 07 jari 253                 }
2 26 Feb 07 jari 254                  */
2 26 Feb 07 jari 255             g2D.setColor(pointColor[i]);
2 26 Feb 07 jari 256             drawPoint(g2D, xArray[i], yArray[i], getXScalingFactor(origMaxXValue, origMinXValue), getYScalingFactor(origMaxYValue, origMinYValue), 5);
2 26 Feb 07 jari 257             g2D.setColor(Color.black);
2 26 Feb 07 jari 258             //g2D.drawOval((midX + expectedXArray[i]),
2 26 Feb 07 jari 259         }
2 26 Feb 07 jari 260         
2 26 Feb 07 jari 261         g2D.drawString( "X axis = Expected, Y axis = Observed", this.getWidth()/2 + 25, this.getHeight() - 25);
2 26 Feb 07 jari 262     }
2 26 Feb 07 jari 263     
2 26 Feb 07 jari 264     private void paint2(Graphics g) {
2 26 Feb 07 jari 265         Graphics2D g2D = (Graphics2D)g;
2 26 Feb 07 jari 266         int panelWidth = this.getWidth();
2 26 Feb 07 jari 267         int panelHeight = this.getHeight();
2 26 Feb 07 jari 268         originX = 30;
2 26 Feb 07 jari 269         originY = (int)Math.round((double)(this.getHeight() - 30));
2 26 Feb 07 jari 270         double origMaxXValue = getMax(xArray);
2 26 Feb 07 jari 271         double origMaxYValue = getMax(yArray);
2 26 Feb 07 jari 272         double origMinXValue = getMin(xArray);
2 26 Feb 07 jari 273         double origMinYValue = getMin(yArray);
2 26 Feb 07 jari 274         
2 26 Feb 07 jari 275         double xScalingFactor = getXScalingFactor(origMaxXValue, origMinXValue); // relative to originX and originY
2 26 Feb 07 jari 276         double yScalingFactor = getYScalingFactor(origMaxYValue, origMinYValue); // relative to originX and originY
2 26 Feb 07 jari 277         
2 26 Feb 07 jari 278         final float dash1[] = {10.0f};
2 26 Feb 07 jari 279         
2 26 Feb 07 jari 280         final BasicStroke dashed = new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash1, 0.0f);
2 26 Feb 07 jari 281         
2 26 Feb 07 jari 282         //System.out.println("xScalingFactor = " + xScalingFactor + ", yScalingFactor = " + yScalingFactor);
2 26 Feb 07 jari 283         
2 26 Feb 07 jari 284         //draw axes
2 26 Feb 07 jari 285         g2D.setStroke(new BasicStroke(2.0f));
2 26 Feb 07 jari 286         g2D.drawLine(0, (int)Math.round((double)(this.getHeight() - 30)), this.getWidth(), (int)Math.round((double)(this.getHeight() - 30)));
2 26 Feb 07 jari 287         g2D.drawLine(30, 0, 30, this.getHeight());
2 26 Feb 07 jari 288         
2 26 Feb 07 jari 289         double[] xIntervalArray = new double[6];
2 26 Feb 07 jari 290         double[] yIntervalArray = new double[6];
2 26 Feb 07 jari 291         
2 26 Feb 07 jari 292         double xIncrement = 0.0d;
2 26 Feb 07 jari 293         double yIncrement = 0.0d;
2 26 Feb 07 jari 294         
2 26 Feb 07 jari 295         if (Math.abs(origMaxXValue) > Math.abs(origMinXValue)) {
2 26 Feb 07 jari 296             xIncrement = Math.abs((double)(origMaxXValue/5.0d));
2 26 Feb 07 jari 297         } else {
2 26 Feb 07 jari 298             xIncrement = Math.abs((double)(origMinXValue/5.0d));
2 26 Feb 07 jari 299         }
2 26 Feb 07 jari 300         
2 26 Feb 07 jari 301         if (Math.abs(origMaxYValue) > Math.abs(origMinYValue)) {
2 26 Feb 07 jari 302             yIncrement = Math.abs((double)(origMaxYValue/5.0d));
2 26 Feb 07 jari 303         } else {
2 26 Feb 07 jari 304             yIncrement = Math.abs((double)(origMinYValue/5.0d));
2 26 Feb 07 jari 305         }
2 26 Feb 07 jari 306         
2 26 Feb 07 jari 307         double xCounter = 0.0d;
2 26 Feb 07 jari 308         double yCounter = 0.0d;
2 26 Feb 07 jari 309         for (int i = 0; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 310             xIntervalArray[i] = xCounter;
2 26 Feb 07 jari 311             xCounter = xCounter + xIncrement;
2 26 Feb 07 jari 312             yIntervalArray[i] = yCounter;
2 26 Feb 07 jari 313             yCounter = yCounter + yIncrement;
2 26 Feb 07 jari 314         }
2 26 Feb 07 jari 315         
2 26 Feb 07 jari 316         //draw x tick marks
2 26 Feb 07 jari 317         
2 26 Feb 07 jari 318         for (int i = 1; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 319             g2D.drawLine((int)Math.round(xIntervalArray[i]*xScalingFactor) + 30, (this.getHeight() - 30) - 5, (int)Math.round(xIntervalArray[i]*xScalingFactor) + 30, (this.getHeight() - 30) + 5);
2 26 Feb 07 jari 320         }
2 26 Feb 07 jari 321         
2 26 Feb 07 jari 322         
2 26 Feb 07 jari 323         
2 26 Feb 07 jari 324         //for (int i = 1; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 325         //    g2D.drawLine(this.getWidth()/2 - (int)Math.round(xIntervalArray[i]*xScalingFactor), this.getHeight()/2 - 5, this.getWidth()/2 - (int)Math.round(xIntervalArray[i]*xScalingFactor), this.getHeight()/2 + 5);
2 26 Feb 07 jari 326         //}
2 26 Feb 07 jari 327         
2 26 Feb 07 jari 328         
2 26 Feb 07 jari 329         //draw reference line of slope = 1
2 26 Feb 07 jari 330         g2D.drawLine(30, this.getHeight() - 30, 30 + (int)Math.round(xIntervalArray[5]*xScalingFactor), this.getHeight() - 30 - (int)Math.round(xIntervalArray[5]*yScalingFactor));
2 26 Feb 07 jari 331         
2 26 Feb 07 jari 332         g2D.setColor(Color.gray);
2 26 Feb 07 jari 333         
2 26 Feb 07 jari 334         g2D.setStroke(new BasicStroke(1.0f));
2 26 Feb 07 jari 335         
2 26 Feb 07 jari 336         //draw horizonal grid lines
2 26 Feb 07 jari 337         for (int i = 1; i < yIntervalArray.length; i++) {
2 26 Feb 07 jari 338             g2D.drawLine(0, this.getHeight() - 30 - (int)Math.round(yIntervalArray[i]*yScalingFactor), this.getWidth(), this.getHeight() - 30 - (int)Math.round(yIntervalArray[i]*yScalingFactor));
2 26 Feb 07 jari 339         }
2 26 Feb 07 jari 340         
2 26 Feb 07 jari 341         //for (int i = 1; i < yIntervalArray.length; i++) {
2 26 Feb 07 jari 342         //    g2D.drawLine(0, this.getHeight()/2 - (int)Math.round(yIntervalArray[i]*yScalingFactor), this.getWidth(), this.getHeight()/2 - (int)Math.round(yIntervalArray[i]*yScalingFactor));
2 26 Feb 07 jari 343         //}
2 26 Feb 07 jari 344         
2 26 Feb 07 jari 345         g2D.setStroke(new BasicStroke(2.0f));
2 26 Feb 07 jari 346         g2D.setColor(Color.black);
2 26 Feb 07 jari 347         
2 26 Feb 07 jari 348         DecimalFormat nf = new DecimalFormat();
2 26 Feb 07 jari 349         nf.setMaximumFractionDigits(2);
2 26 Feb 07 jari 350         
2 26 Feb 07 jari 351         //tick labels
2 26 Feb 07 jari 352         for (int i = 1; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 353             g2D.drawString(nf.format((double)xIntervalArray[i]), (int)Math.round(xIntervalArray[i]*xScalingFactor) + 10, this.getHeight() - 5);
2 26 Feb 07 jari 354         }
2 26 Feb 07 jari 355         
2 26 Feb 07 jari 356         //for (int i = 1; i < xIntervalArray.length; i++) {
2 26 Feb 07 jari 357         //    g2D.drawString("-" + nf.format((double)xIntervalArray[i]), this.getWidth()/2 - (int)Math.round(xIntervalArray[i]*xScalingFactor) - 10, this.getHeight()/2 + 20);
2 26 Feb 07 jari 358         //}
2 26 Feb 07 jari 359         
2 26 Feb 07 jari 360         for (int i = 1; i < yIntervalArray.length; i++) {
2 26 Feb 07 jari 361             g2D.drawString(nf.format((double)yIntervalArray[i]), 5, this.getHeight() - 30 - (int)Math.round(yIntervalArray[i]*yScalingFactor) - 5);
2 26 Feb 07 jari 362         }
2 26 Feb 07 jari 363         
2 26 Feb 07 jari 364         //for (int i = 1; i < yIntervalArray.length; i++) {
2 26 Feb 07 jari 365         //    g2D.drawString("-" + nf.format((double)yIntervalArray[i]), this.getWidth()/2 - 30, this.getHeight()/2 + (int)Math.round(yIntervalArray[i]*yScalingFactor) - 5);
2 26 Feb 07 jari 366         //}
2 26 Feb 07 jari 367         
2 26 Feb 07 jari 368         int deltaOffset = (int)Math.round(delta*yScalingFactor);
2 26 Feb 07 jari 369         
2 26 Feb 07 jari 370         //draw dashed lines for delta limits
2 26 Feb 07 jari 371         g2D.setStroke(dashed);
2 26 Feb 07 jari 372         
2 26 Feb 07 jari 373         g2D.drawLine(30, this.getHeight() - 30 - deltaOffset, 30 + (int)Math.round(xIntervalArray[5]*xScalingFactor), this.getHeight() - 30 - (int)Math.round(xIntervalArray[5]*yScalingFactor) - deltaOffset);
2 26 Feb 07 jari 374         g2D.drawLine(30, this.getHeight() - 30 + deltaOffset, 30 + (int)Math.round(xIntervalArray[5]*xScalingFactor), this.getHeight() - 30 - (int)Math.round(xIntervalArray[5]*yScalingFactor) + deltaOffset);
2 26 Feb 07 jari 375         
2 26 Feb 07 jari 376         g2D.setStroke(new BasicStroke(2.0f));
2 26 Feb 07 jari 377         
2 26 Feb 07 jari 378         boolean posSigEncountered = false;
2 26 Feb 07 jari 379         boolean negSigEncountered = false;
2 26 Feb 07 jari 380         
2 26 Feb 07 jari 381         int lowestPosSigIndex = 0;
2 26 Feb 07 jari 382         int highestNegSigIndex = 0;
2 26 Feb 07 jari 383         
2 26 Feb 07 jari 384         for (int i = 0; i < xArray.length; i++) {
2 26 Feb 07 jari 385             if ( (xArray[i] > 0.0d) && ((yArray[i] - xArray[i]) > delta) ) {
2 26 Feb 07 jari 386                 lowestPosSigIndex = i;
2 26 Feb 07 jari 387                 posSigEncountered = true;
2 26 Feb 07 jari 388                 break;
2 26 Feb 07 jari 389             }
2 26 Feb 07 jari 390         }
2 26 Feb 07 jari 391         
2 26 Feb 07 jari 392         for (int i = 0; i < xArray.length; i++) {
2 26 Feb 07 jari 393             if ( (xArray[i] < 0.0d) && ((xArray[i] - yArray[i]) > delta) ) {
2 26 Feb 07 jari 394                 highestNegSigIndex = i;
2 26 Feb 07 jari 395                 negSigEncountered = true;
2 26 Feb 07 jari 396             }
2 26 Feb 07 jari 397         }
2 26 Feb 07 jari 398         
2 26 Feb 07 jari 399         Color[] pointColor = new Color[xArray.length];
2 26 Feb 07 jari 400         
2 26 Feb 07 jari 401         if ((posSigEncountered)&&(negSigEncountered)) {
2 26 Feb 07 jari 402             for (int i = 0; i < (highestNegSigIndex + 1); i++) {
2 26 Feb 07 jari 403                 //negSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 404                 pointColor[i] = Color.green.darker();
2 26 Feb 07 jari 405             }
2 26 Feb 07 jari 406             
2 26 Feb 07 jari 407             for (int i = (highestNegSigIndex + 1); i < lowestPosSigIndex; i++) {
2 26 Feb 07 jari 408                 //nonSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 409                 pointColor[i] = Color.black;
2 26 Feb 07 jari 410             }
2 26 Feb 07 jari 411             
2 26 Feb 07 jari 412             for (int i = lowestPosSigIndex; i < xArray.length; i++) {
2 26 Feb 07 jari 413                 //posSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 414                 pointColor[i] = Color.red;
2 26 Feb 07 jari 415             }
2 26 Feb 07 jari 416             
2 26 Feb 07 jari 417         } else if((posSigEncountered)&&(!negSigEncountered)) {
2 26 Feb 07 jari 418             for (int i = 0; i < lowestPosSigIndex; i++) {
2 26 Feb 07 jari 419                 //nonSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 420                 pointColor[i] = Color.black;
2 26 Feb 07 jari 421             }
2 26 Feb 07 jari 422             
2 26 Feb 07 jari 423             for (int i = lowestPosSigIndex; i < xArray.length; i++) {
2 26 Feb 07 jari 424                 //posSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 425                 pointColor[i] = Color.red;
2 26 Feb 07 jari 426             }
2 26 Feb 07 jari 427         } else if ((!posSigEncountered) && (negSigEncountered)) {
2 26 Feb 07 jari 428             for (int i = 0; i < (highestNegSigIndex + 1); i++) {
2 26 Feb 07 jari 429                 //negSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 430                 pointColor[i] = Color.green.darker();
2 26 Feb 07 jari 431             }
2 26 Feb 07 jari 432             for (int i = (highestNegSigIndex + 1); i < xArray.length; i++) {
2 26 Feb 07 jari 433                 //nonSigGenes.add(new Integer[sortedDArrayIndices[i]]);
2 26 Feb 07 jari 434                 pointColor[i] = Color.black;
2 26 Feb 07 jari 435             }
2 26 Feb 07 jari 436         } else if ((!posSigEncountered) && (!negSigEncountered)) {
2 26 Feb 07 jari 437             for (int i = 0; i < xArray.length; i++) {
2 26 Feb 07 jari 438                 //nonSigGenes.add(new Integer(sortedDArrayIndices[i]));
2 26 Feb 07 jari 439                 pointColor[i] = Color.black;
2 26 Feb 07 jari 440             }
2 26 Feb 07 jari 441         }
2 26 Feb 07 jari 442         
2 26 Feb 07 jari 443         //draw data points
2 26 Feb 07 jari 444         for (int i = 0; i < xArray.length; i++) {
2 26 Feb 07 jari 445             
2 26 Feb 07 jari 446             g2D.setColor(pointColor[i]);
2 26 Feb 07 jari 447             drawPoint(g2D, xArray[i], yArray[i], getXScalingFactor(origMaxXValue, origMinXValue), getYScalingFactor(origMaxYValue, origMinYValue), 5);
2 26 Feb 07 jari 448             g2D.setColor(Color.black);
2 26 Feb 07 jari 449             //g2D.drawOval((midX + expectedXArray[i]),
2 26 Feb 07 jari 450         }
2 26 Feb 07 jari 451         
2 26 Feb 07 jari 452         g2D.drawString( "X axis = Expected, Y axis = Observed", 40, 20);
2 26 Feb 07 jari 453         
2 26 Feb 07 jari 454         
2 26 Feb 07 jari 455     }
2 26 Feb 07 jari 456     
2 26 Feb 07 jari 457     private void drawPoint(Graphics2D g2D, double xValue, double yValue, double xScale, double yScale, int diameter) {
2 26 Feb 07 jari 458         int xRaw = (int)Math.round(xValue*xScale);
2 26 Feb 07 jari 459         int yRaw = (int)Math.round(yValue*yScale);
2 26 Feb 07 jari 460         //System.out.println("xValue = " + xValue + " , yValue = " + yValue + ", xRaw = " + xRaw + ", yRaw  = " + yRaw);
2 26 Feb 07 jari 461         
2 26 Feb 07 jari 462         int xCoord = 0;
2 26 Feb 07 jari 463         int yCoord = 0;
2 26 Feb 07 jari 464         
2 26 Feb 07 jari 465         //if (xValue >= 0) {
2 26 Feb 07 jari 466         if ((studyDesign == SAMInitDialog.TWO_CLASS_UNPAIRED) || (studyDesign == SAMInitDialog.TWO_CLASS_PAIRED) || (studyDesign == SAMInitDialog.CENSORED_SURVIVAL) || (studyDesign == SAMInitDialog.ONE_CLASS)) {
2 26 Feb 07 jari 467             xCoord = (int)Math.round((double)(this.getWidth()/2)) + xRaw;
2 26 Feb 07 jari 468             //} else {
2 26 Feb 07 jari 469             //xCoord = Math.round((float)(this.getWidth()/2)) - xRaw;
2 26 Feb 07 jari 470             //}
2 26 Feb 07 jari 471             
2 26 Feb 07 jari 472             //if (yValue >= 0) {
2 26 Feb 07 jari 473             yCoord = (int)Math.round((double)(this.getHeight()/2)) - yRaw;
2 26 Feb 07 jari 474             //} else {
2 26 Feb 07 jari 475             //yCoord = Math.round((float)(this.getHeight()/2)) + yRaw;
2 26 Feb 07 jari 476             //}
2 26 Feb 07 jari 477         } else if (studyDesign == SAMInitDialog.MULTI_CLASS) {
2 26 Feb 07 jari 478             xCoord = 30 + xRaw;
2 26 Feb 07 jari 479             yCoord = (int)Math.round((double)(this.getHeight() - 30)) - yRaw;
2 26 Feb 07 jari 480         }
2 26 Feb 07 jari 481         
2 26 Feb 07 jari 482         g2D.fillOval(xCoord, yCoord, diameter, diameter);
2 26 Feb 07 jari 483         
2 26 Feb 07 jari 484     }
2 26 Feb 07 jari 485     
2 26 Feb 07 jari 486     private double getMax(double[] array) {
2 26 Feb 07 jari 487         double max = Double.NEGATIVE_INFINITY;
2 26 Feb 07 jari 488         for (int i = 0; i < array.length; i++) {
2 26 Feb 07 jari 489             if (max < array[i]) {
2 26 Feb 07 jari 490                 max = array[i];
2 26 Feb 07 jari 491             }
2 26 Feb 07 jari 492         }
2 26 Feb 07 jari 493         return max;
2 26 Feb 07 jari 494     }
2 26 Feb 07 jari 495     
2 26 Feb 07 jari 496     private double getMin(double[] array) {
2 26 Feb 07 jari 497         double min = Double.POSITIVE_INFINITY;
2 26 Feb 07 jari 498         for (int i = 0; i < array.length; i++) {
2 26 Feb 07 jari 499             if (min > array[i]) {
2 26 Feb 07 jari 500                 min = array[i];
2 26 Feb 07 jari 501             }
2 26 Feb 07 jari 502         }
2 26 Feb 07 jari 503         return min;
2 26 Feb 07 jari 504     }    
2 26 Feb 07 jari 505     
2 26 Feb 07 jari 506     
2 26 Feb 07 jari 507     private double getXScalingFactor(double maxValue, double minValue) {
2 26 Feb 07 jari 508         double largest = 1;
2 26 Feb 07 jari 509         if ((maxValue > 0)&&(minValue > 0)) {
2 26 Feb 07 jari 510             largest = maxValue;
2 26 Feb 07 jari 511         } else if ((maxValue > 0)&&(minValue < 0)) {
2 26 Feb 07 jari 512             if (maxValue > Math.abs(minValue)) {
2 26 Feb 07 jari 513                 largest = maxValue;
2 26 Feb 07 jari 514             } else {
2 26 Feb 07 jari 515                 largest = Math.abs(minValue);
2 26 Feb 07 jari 516             }
2 26 Feb 07 jari 517         } else if (maxValue <= 0) {
2 26 Feb 07 jari 518             largest = Math.abs(minValue);
2 26 Feb 07 jari 519         } else if (minValue == 0) {
2 26 Feb 07 jari 520             largest = maxValue;
2 26 Feb 07 jari 521         }
2 26 Feb 07 jari 522         
2 26 Feb 07 jari 523         double scalingFactor =0;
2 26 Feb 07 jari 524         if ((studyDesign == SAMInitDialog.TWO_CLASS_UNPAIRED) || (studyDesign == SAMInitDialog.TWO_CLASS_PAIRED) || (studyDesign == SAMInitDialog.CENSORED_SURVIVAL) || (studyDesign == SAMInitDialog.ONE_CLASS)) {
2 26 Feb 07 jari 525             scalingFactor = (this.getWidth()/2 - 50)/largest;
2 26 Feb 07 jari 526         } else if (studyDesign == SAMInitDialog.MULTI_CLASS) {
2 26 Feb 07 jari 527             scalingFactor = ((this.getWidth() - 50) - 30)/largest;
2 26 Feb 07 jari 528         }
2 26 Feb 07 jari 529         
2 26 Feb 07 jari 530         return scalingFactor;
2 26 Feb 07 jari 531     }
2 26 Feb 07 jari 532     
2 26 Feb 07 jari 533     private double getYScalingFactor(double maxValue, double minValue) {
2 26 Feb 07 jari 534         double largest = 1;
2 26 Feb 07 jari 535         if ((maxValue > 0)&&(minValue > 0)) {
2 26 Feb 07 jari 536             largest = maxValue;
2 26 Feb 07 jari 537         } else if ((maxValue > 0)&&(minValue < 0)) {
2 26 Feb 07 jari 538             if (maxValue > Math.abs(minValue)) {
2 26 Feb 07 jari 539                 largest = maxValue;
2 26 Feb 07 jari 540             } else {
2 26 Feb 07 jari 541                 largest = Math.abs(minValue);
2 26 Feb 07 jari 542             }
2 26 Feb 07 jari 543         } else if (maxValue <= 0) {
2 26 Feb 07 jari 544             largest = Math.abs(minValue);
2 26 Feb 07 jari 545         } else if (minValue == 0) {
2 26 Feb 07 jari 546             largest = maxValue;
2 26 Feb 07 jari 547         }
2 26 Feb 07 jari 548         
2 26 Feb 07 jari 549         double scalingFactor = 0;
2 26 Feb 07 jari 550         if ((studyDesign == SAMInitDialog.TWO_CLASS_UNPAIRED) || (studyDesign == SAMInitDialog.TWO_CLASS_PAIRED) || (studyDesign == SAMInitDialog.CENSORED_SURVIVAL) || (studyDesign == SAMInitDialog.ONE_CLASS)) {
2 26 Feb 07 jari 551             scalingFactor = (this.getHeight()/2 - 50)/largest;
2 26 Feb 07 jari 552         } else if (studyDesign == SAMInitDialog.MULTI_CLASS) {
2 26 Feb 07 jari 553             scalingFactor = ((this.getHeight() - 30) - 50)/largest;
2 26 Feb 07 jari 554         }
2 26 Feb 07 jari 555         
2 26 Feb 07 jari 556         return scalingFactor;
2 26 Feb 07 jari 557     }
2 26 Feb 07 jari 558     
2 26 Feb 07 jari 559     
2 26 Feb 07 jari 560     
2 26 Feb 07 jari 561
2 26 Feb 07 jari 562     /**
2 26 Feb 07 jari 563      * Invoked by the framework when this viewer was deselected.
2 26 Feb 07 jari 564      */
2 26 Feb 07 jari 565     public void onDeselected() {
2 26 Feb 07 jari 566     }
2 26 Feb 07 jari 567     
2 26 Feb 07 jari 568     /**
2 26 Feb 07 jari 569      * Invoked by the framework when data is changed,
2 26 Feb 07 jari 570      * if this viewer is selected.
2 26 Feb 07 jari 571      * @see IData
2 26 Feb 07 jari 572      */
2 26 Feb 07 jari 573     public void onDataChanged(IData data) {
2 26 Feb 07 jari 574     }
2 26 Feb 07 jari 575     
2 26 Feb 07 jari 576     /**
2 26 Feb 07 jari 577      * Invoked when the framework is going to be closed.
2 26 Feb 07 jari 578      */
2 26 Feb 07 jari 579     public void onClosed() {
2 26 Feb 07 jari 580     }
2 26 Feb 07 jari 581     
2 26 Feb 07 jari 582     /**
2 26 Feb 07 jari 583      * Returns a component to be inserted into scroll pane view port.
2 26 Feb 07 jari 584      */
2 26 Feb 07 jari 585     public JComponent getContentComponent() {
2 26 Feb 07 jari 586         return this;
2 26 Feb 07 jari 587     }
2 26 Feb 07 jari 588     
2 26 Feb 07 jari 589     /**
2 26 Feb 07 jari 590      * Invoked by the framework to save or to print viewer image.
2 26 Feb 07 jari 591      */
2 26 Feb 07 jari 592     public BufferedImage getImage() {
2 26 Feb 07 jari 593         return null;
2 26 Feb 07 jari 594     }
2 26 Feb 07 jari 595     
2 26 Feb 07 jari 596     /**
2 26 Feb 07 jari 597      * Invoked by the framework when this viewer is selected.
2 26 Feb 07 jari 598      */
2 26 Feb 07 jari 599     public void onSelected(IFramework framework) {
2 26 Feb 07 jari 600     }
2 26 Feb 07 jari 601     
2 26 Feb 07 jari 602     /**
2 26 Feb 07 jari 603      * Invoked by the framework when display menu is changed,
2 26 Feb 07 jari 604      * if this viewer is selected.
2 26 Feb 07 jari 605      * @see IDisplayMenu
2 26 Feb 07 jari 606      */
2 26 Feb 07 jari 607     public void onMenuChanged(IDisplayMenu menu) {
2 26 Feb 07 jari 608     }
2 26 Feb 07 jari 609     
2 26 Feb 07 jari 610     /**
2 26 Feb 07 jari 611      * Returns a component to be inserted into scroll pane header.
2 26 Feb 07 jari 612      */
2 26 Feb 07 jari 613     public JComponent getHeaderComponent() {
2 26 Feb 07 jari 614         return null;
2 26 Feb 07 jari 615     }
2 26 Feb 07 jari 616     
2 26 Feb 07 jari 617     /** Returns the corner component corresponding to the indicated corner,
2 26 Feb 07 jari 618      * posibly null
2 26 Feb 07 jari 619      */
2 26 Feb 07 jari 620     public JComponent getCornerComponent(int cornerIndex) {
2 26 Feb 07 jari 621         return null;
2 26 Feb 07 jari 622     }
2 26 Feb 07 jari 623     
2 26 Feb 07 jari 624     /** Returns a component to be inserted into the scroll pane row header
2 26 Feb 07 jari 625      */
2 26 Feb 07 jari 626     public JComponent getRowHeaderComponent() {
2 26 Feb 07 jari 627         return null;
2 26 Feb 07 jari 628     }
2 26 Feb 07 jari 629         
2 26 Feb 07 jari 630     public int[][] getClusters() {
2 26 Feb 07 jari 631         return null;
2 26 Feb 07 jari 632     }
2 26 Feb 07 jari 633     
2 26 Feb 07 jari 634     public Experiment getExperiment() {
2 26 Feb 07 jari 635         return null;
2 26 Feb 07 jari 636     }
2 26 Feb 07 jari 637     
2 26 Feb 07 jari 638     /** Returns int value indicating viewer type
2 26 Feb 07 jari 639      * Cluster.GENE_CLUSTER, Cluster.EXPERIMENT_CLUSTER, or -1 for both or unspecified
2 26 Feb 07 jari 640      */
2 26 Feb 07 jari 641     public int getViewerType() {
2 26 Feb 07 jari 642         return -1;
2 26 Feb 07 jari 643     }
2 26 Feb 07 jari 644     
2 26 Feb 07 jari 645   /** This method is only implemented to fulfill the IViewer interface requirements
2 26 Feb 07 jari 646    * @see org.tigr.microarray.mev.cluster.gui.IViewer#setExperiment(org.tigr.microarray.mev.cluster.gui.Experiment)
2 26 Feb 07 jari 647    */
2 26 Feb 07 jari 648   public void setExperiment(Experiment e) {
2 26 Feb 07 jari 649     //This method is only implemented to fulfill the IViewer interface requirements
2 26 Feb 07 jari 650   }
2 26 Feb 07 jari 651
2 26 Feb 07 jari 652   /** This method is only implemented to fulfill the IViewer interface requirements
2 26 Feb 07 jari 653    * @see org.tigr.microarray.mev.cluster.gui.IViewer#getExperimentID()
2 26 Feb 07 jari 654    */
2 26 Feb 07 jari 655   public int getExperimentID() {
2 26 Feb 07 jari 656     return exptID;
2 26 Feb 07 jari 657   }
2 26 Feb 07 jari 658
2 26 Feb 07 jari 659   /** This method is only implemented to fulfill the IViewer interface requirements
2 26 Feb 07 jari 660    * @see org.tigr.microarray.mev.cluster.gui.IViewer#setExperimentID(int)
2 26 Feb 07 jari 661    */
2 26 Feb 07 jari 662   public void setExperimentID(int id) {
2 26 Feb 07 jari 663     
2 26 Feb 07 jari 664   }
2 26 Feb 07 jari 665
2 26 Feb 07 jari 666 }