mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/helpers/CentroidExperimentHeader.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  * $RCSfile: CentroidExperimentHeader.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.8 $
2 26 Feb 07 jari 8  * $Date: 2006/05/02 16:56:57 $
2 26 Feb 07 jari 9  * $Author: eleanorahowe $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 package org.tigr.microarray.mev.cluster.gui.helpers;
2 26 Feb 07 jari 14
2 26 Feb 07 jari 15
2 26 Feb 07 jari 16 import java.awt.Color;
2 26 Feb 07 jari 17 import java.awt.Dimension;
2 26 Feb 07 jari 18 import java.awt.Font;
2 26 Feb 07 jari 19 import java.awt.FontMetrics;
2 26 Feb 07 jari 20 import java.awt.Graphics;
2 26 Feb 07 jari 21 import java.awt.Graphics2D;
2 26 Feb 07 jari 22 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 23 import java.awt.GridBagLayout;
2 26 Feb 07 jari 24 import java.awt.Insets;
2 26 Feb 07 jari 25 import java.awt.RenderingHints;
2 26 Feb 07 jari 26 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 27 import java.beans.Encoder;
2 26 Feb 07 jari 28 import java.beans.Expression;
2 26 Feb 07 jari 29 import java.beans.PersistenceDelegate;
2 26 Feb 07 jari 30
2 26 Feb 07 jari 31 import java.io.IOException;
2 26 Feb 07 jari 32 import java.io.ObjectInputStream;
2 26 Feb 07 jari 33 import java.io.ObjectOutputStream;
2 26 Feb 07 jari 34
2 26 Feb 07 jari 35 import javax.swing.JComponent;
2 26 Feb 07 jari 36 import javax.swing.JPanel;
2 26 Feb 07 jari 37
2 26 Feb 07 jari 38 import org.tigr.microarray.mev.cluster.gui.Experiment;
2 26 Feb 07 jari 39 import org.tigr.util.FloatMatrix;
2 26 Feb 07 jari 40
2 26 Feb 07 jari 41 /**
2 26 Feb 07 jari 42  *  Creates a header with a centroid vector image and centroid label
2 26 Feb 07 jari 43  */
2 26 Feb 07 jari 44 public class CentroidExperimentHeader extends JPanel {
2 26 Feb 07 jari 45     
2 26 Feb 07 jari 46     private String vectorString;
2 26 Feb 07 jari 47     private CentroidVectorPanel centroidVectorPanel;
2 26 Feb 07 jari 48     private int [][] clusters;
2 26 Feb 07 jari 49     protected int clusterIndex = 0;
2 26 Feb 07 jari 50     private int currHeight;
2 26 Feb 07 jari 51     private int currWidth;
2 26 Feb 07 jari 52     private Insets insets = new Insets(0, 10, 0, 0);
2 26 Feb 07 jari 53     private ExperimentHeader expHeader;
2 26 Feb 07 jari 54     private BufferedImage posColorImage;
2 26 Feb 07 jari 55     private BufferedImage negColorImage;
2 26 Feb 07 jari 56     private boolean useDoubleGradient = true;
2 26 Feb 07 jari 57     private FloatMatrix centroidData;
2 26 Feb 07 jari 58     
2 26 Feb 07 jari 59     private FloatMatrix mainCentroidData;
2 26 Feb 07 jari 60     /**
2 26 Feb 07 jari 61      * Constructs a <code>CentroidExperimentHeader</code> with specified experiment
2 26 Feb 07 jari 62      * header, centroid data, and centroid vector label.
2 26 Feb 07 jari 63      * @param expHeader <code>ExperimentHeader</code> passed header component
2 26 Feb 07 jari 64      * @param centroidData, has data for all centroids that can be shown in the header
2 26 Feb 07 jari 65      * @param vectorString, label for centroid vector
2 26 Feb 07 jari 66      */
2 26 Feb 07 jari 67     public CentroidExperimentHeader(JComponent expHeader, FloatMatrix centroidData, int [][] clusters, String vectorString) {
2 26 Feb 07 jari 68         super();
2 26 Feb 07 jari 69         setLayout(new GridBagLayout());
2 26 Feb 07 jari 70         this.centroidData = centroidData;
2 26 Feb 07 jari 71         setBackground(Color.white);
2 26 Feb 07 jari 72         this.clusters = clusters;
2 26 Feb 07 jari 73         this.expHeader = (ExperimentHeader)expHeader;
2 26 Feb 07 jari 74         this.mainCentroidData = centroidData;
2 26 Feb 07 jari 75         this.centroidVectorPanel = new CentroidVectorPanel(centroidData, insets);
2 26 Feb 07 jari 76         add(expHeader, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
2 26 Feb 07 jari 77         add(centroidVectorPanel, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
2 26 Feb 07 jari 78         this.vectorString = vectorString;
2 26 Feb 07 jari 79         currWidth = currHeight = 0;
2 26 Feb 07 jari 80     }
2 26 Feb 07 jari 81     
2 26 Feb 07 jari 82     public static PersistenceDelegate getPersistenceDelegate(){
2 26 Feb 07 jari 83       return new CentroidExperimentHeaderPersistenceDelegate();
2 26 Feb 07 jari 84     }
2 26 Feb 07 jari 85     public JComponent getExpHeader(){return expHeader;}
2 26 Feb 07 jari 86     public FloatMatrix getCentroidData(){return centroidData;}
2 26 Feb 07 jari 87     public int[][] getClusters(){return clusters;}
2 26 Feb 07 jari 88     public String getVectorString(){return vectorString;}
2 26 Feb 07 jari 89     public void setExperiment(Experiment e){
2 26 Feb 07 jari 90       this.expHeader.setExperiment(e);
2 26 Feb 07 jari 91     }
2 26 Feb 07 jari 92     private CentroidExperimentHeader(){ }
2 26 Feb 07 jari 93     
2 26 Feb 07 jari 94     /**
2 26 Feb 07 jari 95      *  Returns the current width of the header.
2 26 Feb 07 jari 96      */
2 26 Feb 07 jari 97     public int getCurrWidth(){
2 26 Feb 07 jari 98         return currWidth;
2 26 Feb 07 jari 99     }
2 26 Feb 07 jari 100     
2 26 Feb 07 jari 101     /**
2 26 Feb 07 jari 102      *  Returns the current height of the header.
2 26 Feb 07 jari 103      */
2 26 Feb 07 jari 104     public int getCurrHeight(){
2 26 Feb 07 jari 105         return currHeight + this.expHeader.getHeight();
2 26 Feb 07 jari 106     }
2 26 Feb 07 jari 107     
2 26 Feb 07 jari 108     /**
2 26 Feb 07 jari 109      * Sets index of current cluster to view
2 26 Feb 07 jari 110      */
2 26 Feb 07 jari 111     public void setClusterIndex(int index){
2 26 Feb 07 jari 112         this.clusterIndex = index;
2 26 Feb 07 jari 113         this.centroidVectorPanel.setCurrentCluster(index);
2 26 Feb 07 jari 114     }
2 26 Feb 07 jari 115     
2 26 Feb 07 jari 116     /**
2 26 Feb 07 jari 117      * Sets the flag to use a double gradient
2 26 Feb 07 jari 118      * @return
2 26 Feb 07 jari 119      */
2 26 Feb 07 jari 120     public void setUseDoubleGradient(boolean useDouble){
2 26 Feb 07 jari 121       useDoubleGradient = useDouble;
2 26 Feb 07 jari 122     }
2 26 Feb 07 jari 123     
2 26 Feb 07 jari 124
2 26 Feb 07 jari 125     /**
2 26 Feb 07 jari 126      * Returns current cluster
2 26 Feb 07 jari 127      */
2 26 Feb 07 jari 128     public int [] getCluster(){
2 26 Feb 07 jari 129         return clusters[clusterIndex];
2 26 Feb 07 jari 130     }
2 26 Feb 07 jari 131     
2 26 Feb 07 jari 132     private static class CentroidExperimentHeaderPersistenceDelegate extends PersistenceDelegate{
2 26 Feb 07 jari 133
2 26 Feb 07 jari 134     protected Expression instantiate(Object o, Encoder encoder) {
2 26 Feb 07 jari 135       CentroidExperimentHeader oldInstance = (CentroidExperimentHeader)o;
2 26 Feb 07 jari 136       return new Expression(oldInstance, oldInstance.getClass(), "new", 
2 26 Feb 07 jari 137           new Object[]{oldInstance.getExpHeader(), oldInstance.getCentroidData(), oldInstance.getClusters(), oldInstance.getVectorString()});
2 26 Feb 07 jari 138     }
2 26 Feb 07 jari 139       
2 26 Feb 07 jari 140     public void initialize(Class type, Object oldInstance, Object newInstance, Encoder encoder) {
2 26 Feb 07 jari 141       
2 26 Feb 07 jari 142     }
2 26 Feb 07 jari 143
2 26 Feb 07 jari 144     }
2 26 Feb 07 jari 145     
2 26 Feb 07 jari 146     /**
2 26 Feb 07 jari 147      * The component to display som vector.
2 26 Feb 07 jari 148      */
2 26 Feb 07 jari 149     public class CentroidVectorPanel extends JPanel {
2 26 Feb 07 jari 150         
2 26 Feb 07 jari 151         private FloatMatrix codes;
2 26 Feb 07 jari 152         private int cluster;
2 26 Feb 07 jari 153         private float maxValue = 3f;
2 26 Feb 07 jari 154         private float minValue = -3f;
2 26 Feb 07 jari 155         private float midValue = 0.0f;
2 26 Feb 07 jari 156         private Dimension elementSize = new Dimension(20,5);
2 26 Feb 07 jari 157         private boolean drawBorders = true;
2 26 Feb 07 jari 158         private boolean isAntiAliasing = false;
2 26 Feb 07 jari 159         private Color missingColor = new Color(128, 128, 128);
2 26 Feb 07 jari 160         private Insets insets = new Insets(0,0,0,0);
2 26 Feb 07 jari 161         
2 26 Feb 07 jari 162         
2 26 Feb 07 jari 163         /**
2 26 Feb 07 jari 164          * Constructs a <code>SOMVectorPanel</code> with specified codes.
2 26 Feb 07 jari 165          */
2 26 Feb 07 jari 166         private CentroidVectorPanel(FloatMatrix codes, Insets insets) {
2 26 Feb 07 jari 167             setBackground(Color.white);
2 26 Feb 07 jari 168             this.codes = codes;
2 26 Feb 07 jari 169             this.insets = insets;
2 26 Feb 07 jari 170         }
2 26 Feb 07 jari 171         
2 26 Feb 07 jari 172         private CentroidVectorPanel(){ }
2 26 Feb 07 jari 173         
2 26 Feb 07 jari 174         /**
2 26 Feb 07 jari 175          * Sets gradient images.
2 26 Feb 07 jari 176          */
2 26 Feb 07 jari 177  /*       public void setColorImages(BufferedImage posColorImage, BufferedImage negColorImage) {
2 26 Feb 07 jari 178             CentroidExperimentHeader.this.posColorImage = posColorImage;
2 26 Feb 07 jari 179             CentroidExperimentHeader.this.negColorImage = negColorImage;
2 26 Feb 07 jari 180         }
2 26 Feb 07 jari 181   */      
2 26 Feb 07 jari 182         /**
2 26 Feb 07 jari 183          * Sets color for NaN values.
2 26 Feb 07 jari 184          */
2 26 Feb 07 jari 185         public void setMissingColor(Color color) {
2 26 Feb 07 jari 186             this.missingColor = color;
2 26 Feb 07 jari 187         }
2 26 Feb 07 jari 188         
2 26 Feb 07 jari 189         /**
2 26 Feb 07 jari 190          * Sets current index of a cluster.
2 26 Feb 07 jari 191          */
2 26 Feb 07 jari 192         public void setCurrentCluster(int cluster) {
2 26 Feb 07 jari 193             this.cluster = cluster;
2 26 Feb 07 jari 194         }
2 26 Feb 07 jari 195         
2 26 Feb 07 jari 196         /**
2 26 Feb 07 jari 197          * Sets the draw borders attribute.
2 26 Feb 07 jari 198          */
2 26 Feb 07 jari 199         public void setDrawBorders(boolean draw) {
2 26 Feb 07 jari 200             this.drawBorders = draw;
2 26 Feb 07 jari 201         }
2 26 Feb 07 jari 202         
2 26 Feb 07 jari 203         /**
2 26 Feb 07 jari 204          * Sets the anti aliasing attribute.
2 26 Feb 07 jari 205          */
2 26 Feb 07 jari 206         public void setAntiAliasing(boolean value) {
2 26 Feb 07 jari 207             this.isAntiAliasing = value;
2 26 Feb 07 jari 208         }
2 26 Feb 07 jari 209         
2 26 Feb 07 jari 210         /**
2 26 Feb 07 jari 211          * Sets min and max values.
2 26 Feb 07 jari 212          */
2 26 Feb 07 jari 213         public void setValues(float minValue, float maxValue) {
2 26 Feb 07 jari 214             this.maxValue = maxValue;
2 26 Feb 07 jari 215             this.minValue = minValue;
2 26 Feb 07 jari 216         }
2 26 Feb 07 jari 217
2 26 Feb 07 jari 218         /**
2 26 Feb 07 jari 219          * Sets min and max values.
2 26 Feb 07 jari 220          */
2 26 Feb 07 jari 221         public void setValues(float minValue, float midValue,  float maxValue) {
2 26 Feb 07 jari 222             this.maxValue = maxValue;
2 26 Feb 07 jari 223             this.minValue = minValue;
2 26 Feb 07 jari 224             this.midValue = midValue;
2 26 Feb 07 jari 225         }   
2 26 Feb 07 jari 226         
2 26 Feb 07 jari 227         public int getCurrWidth(){
2 26 Feb 07 jari 228             return currWidth;
2 26 Feb 07 jari 229         }
2 26 Feb 07 jari 230         
2 26 Feb 07 jari 231         /**
2 26 Feb 07 jari 232          * Sets left margin
2 26 Feb 07 jari 233          */
2 26 Feb 07 jari 234         public void setLeftInset(int leftMargin){
2 26 Feb 07 jari 235             insets.left = leftMargin;
2 26 Feb 07 jari 236         }
2 26 Feb 07 jari 237         
2 26 Feb 07 jari 238         public int getCurrHeight(){
2 26 Feb 07 jari 239             return currHeight;
2 26 Feb 07 jari 240         }
2 26 Feb 07 jari 241         
2 26 Feb 07 jari 242         
2 26 Feb 07 jari 243         /**
2 26 Feb 07 jari 244          * Updates the component size.
2 26 Feb 07 jari 245          */
2 26 Feb 07 jari 246         public void updateSize(Dimension size) {
2 26 Feb 07 jari 247             this.elementSize = new Dimension(size);
2 26 Feb 07 jari 248             setFont(new Font("monospaced", Font.PLAIN, size.height));
2 26 Feb 07 jari 249             Graphics2D g = (Graphics2D)getGraphics();
2 26 Feb 07 jari 250             
2 26 Feb 07 jari 251             int strWidth = 0;
2 26 Feb 07 jari 252             
2 26 Feb 07 jari 253             if(g != null){
2 26 Feb 07 jari 254                 if (isAntiAliasing) {
2 26 Feb 07 jari 255                     ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
2 26 Feb 07 jari 256                     ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
2 26 Feb 07 jari 257                 }
2 26 Feb 07 jari 258                 FontMetrics metrics = g.getFontMetrics();
2 26 Feb 07 jari 259                 strWidth = metrics.stringWidth(vectorString)+10;
2 26 Feb 07 jari 260             }
2 26 Feb 07 jari 261             
2 26 Feb 07 jari 262             int width  = size.width*this.codes.getColumnDimension() + strWidth + insets.left + 10;
2 26 Feb 07 jari 263             int height = size.height+10;
2 26 Feb 07 jari 264             currWidth = width;
2 26 Feb 07 jari 265             currHeight = height;
2 26 Feb 07 jari 266             
2 26 Feb 07 jari 267             this.setMinimumSize(new Dimension(width, height));
2 26 Feb 07 jari 268             setPreferredSize(new Dimension(width, height));
2 26 Feb 07 jari 269             setSize(width, height);
2 26 Feb 07 jari 270             validate();
2 26 Feb 07 jari 271         }
2 26 Feb 07 jari 272         
2 26 Feb 07 jari 273         
2 26 Feb 07 jari 274         /**
2 26 Feb 07 jari 275          * Paints the component into specified graphics.
2 26 Feb 07 jari 276          */
2 26 Feb 07 jari 277         public void paint(Graphics g) {
2 26 Feb 07 jari 278             super.paint(g);
2 26 Feb 07 jari 279
2 26 Feb 07 jari 280             if(getCluster().length < 1)
2 26 Feb 07 jari 281                 return;
2 26 Feb 07 jari 282             
2 26 Feb 07 jari 283             if (isAntiAliasing) {
2 26 Feb 07 jari 284                 ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
2 26 Feb 07 jari 285                 ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
2 26 Feb 07 jari 286             }
2 26 Feb 07 jari 287
2 26 Feb 07 jari 288             final int samples = codes.getColumnDimension();
2 26 Feb 07 jari 289             for (int i=0; i<samples; i++) {
2 26 Feb 07 jari 290                 fillRectAt(g, i, getColor(codes.get(this.cluster, i)));
2 26 Feb 07 jari 291                 if (this.drawBorders) {
2 26 Feb 07 jari 292                     drawRectAt(g, i, Color.black);
2 26 Feb 07 jari 293                 }
2 26 Feb 07 jari 294             }
2 26 Feb 07 jari 295             g.setColor(Color.black);
2 26 Feb 07 jari 296             g.drawString(vectorString, elementSize.width*samples+10 + insets.left, elementSize.height);
2 26 Feb 07 jari 297         }
2 26 Feb 07 jari 298         
2 26 Feb 07 jari 299         /**
2 26 Feb 07 jari 300          * Fill in rect for the specified sample.
2 26 Feb 07 jari 301          */
2 26 Feb 07 jari 302         private void fillRectAt(Graphics g, int sample, Color color) {
2 26 Feb 07 jari 303             g.setColor(color);
2 26 Feb 07 jari 304             g.fillRect(sample*elementSize.width + insets.left, 0, elementSize.width, elementSize.height);
2 26 Feb 07 jari 305         }
2 26 Feb 07 jari 306         
2 26 Feb 07 jari 307         /**
2 26 Feb 07 jari 308          * Draw rect for the specified sample.
2 26 Feb 07 jari 309          */
2 26 Feb 07 jari 310         private void drawRectAt(Graphics g, int sample, Color color) {
2 26 Feb 07 jari 311             g.setColor(color);
2 26 Feb 07 jari 312             g.drawRect(sample*elementSize.width + insets.left, 0, elementSize.width-1, elementSize.height-1);
2 26 Feb 07 jari 313         }
2 26 Feb 07 jari 314         
2 26 Feb 07 jari 315         
2 26 Feb 07 jari 316         /**
2 26 Feb 07 jari 317          * Calculates color for passed value.
2 26 Feb 07 jari 318          */
2 26 Feb 07 jari 319         private Color getColor(float value) {
2 26 Feb 07 jari 320             if (Float.isNaN(value)) {
2 26 Feb 07 jari 321                 return missingColor;
2 26 Feb 07 jari 322             }
2 26 Feb 07 jari 323             
2 26 Feb 07 jari 324             float maximum;
2 26 Feb 07 jari 325             int colorIndex, rgb;
2 26 Feb 07 jari 326             
2 26 Feb 07 jari 327             if(useDoubleGradient) {
2 26 Feb 07 jari 328               maximum = value < midValue ? this.minValue : this.maxValue;
2 26 Feb 07 jari 329           colorIndex = (int) (255 * (value-midValue) / (maximum - midValue));
2 26 Feb 07 jari 330           colorIndex = colorIndex > 255 ? 255 : colorIndex;
2 26 Feb 07 jari 331           rgb = value < midValue ? negColorImage.getRGB(255 - colorIndex, 0)
2 26 Feb 07 jari 332               : posColorImage.getRGB(colorIndex, 0);
2 26 Feb 07 jari 333             } else {
2 26 Feb 07 jari 334               float span = this.maxValue - this.minValue;
2 26 Feb 07 jari 335               if(value <= minValue)
2 26 Feb 07 jari 336                 colorIndex = 0;
2 26 Feb 07 jari 337               else if(value >= maxValue)
2 26 Feb 07 jari 338                 colorIndex = 255;
2 26 Feb 07 jari 339               else
2 26 Feb 07 jari 340                 colorIndex = (int)(((value - this.minValue)/span) * 255);
2 26 Feb 07 jari 341                
2 26 Feb 07 jari 342               rgb = posColorImage.getRGB(colorIndex,0);
2 26 Feb 07 jari 343             }
2 26 Feb 07 jari 344             return new Color(rgb);
2 26 Feb 07 jari 345         }
2 26 Feb 07 jari 346         
2 26 Feb 07 jari 347     }
2 26 Feb 07 jari 348     
2 26 Feb 07 jari 349     /**
2 26 Feb 07 jari 350      * Updates the viewer size.
2 26 Feb 07 jari 351      */
2 26 Feb 07 jari 352     public void updateSize(Dimension size) {
2 26 Feb 07 jari 353         centroidVectorPanel.updateSize(size);
2 26 Feb 07 jari 354         //expHeader.updateSizes(currWidth, this.centroidVectorPanel.elementSize.width);
2 26 Feb 07 jari 355     }
2 26 Feb 07 jari 356     
2 26 Feb 07 jari 357     /**
2 26 Feb 07 jari 358      * Sets the current index of a cluster.
2 26 Feb 07 jari 359      */
2 26 Feb 07 jari 360     public void setCurrentCluster(int cluster) {
2 26 Feb 07 jari 361         clusterIndex = cluster;
2 26 Feb 07 jari 362         centroidVectorPanel.setCurrentCluster(cluster);
2 26 Feb 07 jari 363     }
2 26 Feb 07 jari 364     
2 26 Feb 07 jari 365     /**
2 26 Feb 07 jari 366      * Sets the draw borders attribute.
2 26 Feb 07 jari 367      */
2 26 Feb 07 jari 368     public void setDrawBorders(boolean draw) {
2 26 Feb 07 jari 369         centroidVectorPanel.setDrawBorders(draw);
2 26 Feb 07 jari 370     }
2 26 Feb 07 jari 371     
2 26 Feb 07 jari 372     /**
2 26 Feb 07 jari 373      * Sets min and max values.
2 26 Feb 07 jari 374      */
2 26 Feb 07 jari 375     public void setValues(float minValue, float maxValue) {
2 26 Feb 07 jari 376         centroidVectorPanel.setValues(minValue, maxValue);
2 26 Feb 07 jari 377     }
2 26 Feb 07 jari 378
2 26 Feb 07 jari 379     /**
2 26 Feb 07 jari 380      * Sets min and max values.
2 26 Feb 07 jari 381      */
2 26 Feb 07 jari 382     public void setValues(float minValue, float midValue, float maxValue) {
2 26 Feb 07 jari 383         centroidVectorPanel.setValues(minValue, midValue, maxValue);
2 26 Feb 07 jari 384     }
2 26 Feb 07 jari 385     
2 26 Feb 07 jari 386     
2 26 Feb 07 jari 387     /**
2 26 Feb 07 jari 388      * Sets positive and negative images
2 26 Feb 07 jari 389      */
2 26 Feb 07 jari 390     public void setNegAndPosColorImages(BufferedImage neg, BufferedImage pos){
2 26 Feb 07 jari 391         CentroidExperimentHeader.this.negColorImage = neg;
2 26 Feb 07 jari 392         CentroidExperimentHeader.this.posColorImage = pos;
2 26 Feb 07 jari 393     }
2 26 Feb 07 jari 394     
2 26 Feb 07 jari 395     /**
2 26 Feb 07 jari 396      * Sets color for NaN values.
2 26 Feb 07 jari 397      */
2 26 Feb 07 jari 398     public void setMissingColor(Color color) {
2 26 Feb 07 jari 399         centroidVectorPanel.setMissingColor(color);
2 26 Feb 07 jari 400     }
2 26 Feb 07 jari 401     
2 26 Feb 07 jari 402     /**
2 26 Feb 07 jari 403      * Sets the anti aliasing attribute.
2 26 Feb 07 jari 404      */
2 26 Feb 07 jari 405     public void setAntiAliasing(boolean value) {
2 26 Feb 07 jari 406         centroidVectorPanel.setAntiAliasing(value);
2 26 Feb 07 jari 407     }
2 26 Feb 07 jari 408     
2 26 Feb 07 jari 409     
2 26 Feb 07 jari 410 }