mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/fom/FOMContentComponent.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2004, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: FOMContentComponent.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.7 $
2 26 Feb 07 jari 8  * $Date: 2006/03/24 15:50:09 $
2 26 Feb 07 jari 9  * $Author: eleanorahowe $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.cluster.gui.impl.fom;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 15 import java.awt.GridBagLayout;
2 26 Feb 07 jari 16 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 17 import java.awt.event.ActionListener;
2 26 Feb 07 jari 18 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 19
2 26 Feb 07 jari 20 import javax.swing.JButton;
2 26 Feb 07 jari 21 import javax.swing.JComponent;
2 26 Feb 07 jari 22 import javax.swing.JFrame;
2 26 Feb 07 jari 23 import javax.swing.JList;
2 26 Feb 07 jari 24 import javax.swing.JPanel;
2 26 Feb 07 jari 25 import javax.swing.JScrollPane;
2 26 Feb 07 jari 26 import javax.swing.JTextArea;
2 26 Feb 07 jari 27
2 26 Feb 07 jari 28 import org.tigr.microarray.mev.cluster.gui.IDisplayMenu;
2 26 Feb 07 jari 29 import org.tigr.microarray.mev.cluster.gui.IFramework;
2 26 Feb 07 jari 30
2 26 Feb 07 jari 31 public class FOMContentComponent extends JPanel implements java.io.Serializable {
2 26 Feb 07 jari 32     
2 26 Feb 07 jari 33     private FOMGraph fomGraph;
2 26 Feb 07 jari 34     private float[] fom_values;
2 26 Feb 07 jari 35     private float[] variances;
2 26 Feb 07 jari 36     private boolean showVariance = false;
2 26 Feb 07 jari 37     private GridBagConstraints gbc;
2 26 Feb 07 jari 38     
2 26 Feb 07 jari 39     public FOMContentComponent(float[] fom_values, float [] variances) {
2 26 Feb 07 jari 40   setLayout(new GridBagLayout());
2 26 Feb 07 jari 41   this.fom_values = fom_values;
2 26 Feb 07 jari 42         this.variances = variances;
2 26 Feb 07 jari 43         if(this.variances != null) {
2 26 Feb 07 jari 44             showVariance = true;
2 26 Feb 07 jari 45       this.fomGraph = new FOMGraph(fom_values, variances, "Mean Adjusted FOM values (\u00B1 SD)  vs.  Number of Clusters", "Number of Clusters", "Mean Adjusted FOM", true);            
2 26 Feb 07 jari 46         }
2 26 Feb 07 jari 47         else {
2 26 Feb 07 jari 48       this.fomGraph = new FOMGraph(fom_values, variances, "FOM value vs. # of clusters", "Number of Clusters", "Adjusted FOM", false);
2 26 Feb 07 jari 49         }
2 26 Feb 07 jari 50         this.fomGraph.setItems(createXItems(fom_values.length), createYItems(fom_values));
2 26 Feb 07 jari 51   this.fomGraph.setMaxYValue((float)Math.ceil(getMaxValue(fom_values)));
2 26 Feb 07 jari 52   GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 53   gbc.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 54   gbc.gridx = 0;
2 26 Feb 07 jari 55   gbc.gridy = 0;
2 26 Feb 07 jari 56   gbc.weightx = 0.9;
2 26 Feb 07 jari 57   gbc.weighty = 1.0;
2 26 Feb 07 jari 58   add(this.fomGraph, gbc);
2 26 Feb 07 jari 59   gbc.gridx = 1;
2 26 Feb 07 jari 60   gbc.weightx = 0.1;
2 26 Feb 07 jari 61   add(createValuesList(fom_values), gbc);
2 26 Feb 07 jari 62     }
2 26 Feb 07 jari 63     public static String[] getPersistenceDelegateArgs(){
2 26 Feb 07 jari 64       return new String[]{"fom_values", "variances"};
2 26 Feb 07 jari 65     }
2 26 Feb 07 jari 66     
2 26 Feb 07 jari 67     public void setFOMIterationValues(float [][] values) {
2 26 Feb 07 jari 68         fomGraph.setFOMIterationValues(values);
2 26 Feb 07 jari 69     }
2 26 Feb 07 jari 70     
2 26 Feb 07 jari 71     public BufferedImage getImage() {
2 26 Feb 07 jari 72   return this.fomGraph.getImage();
2 26 Feb 07 jari 73     }
2 26 Feb 07 jari 74     
2 26 Feb 07 jari 75     private JComponent createValuesList(float[] fom_values) {
2 26 Feb 07 jari 76   String[] items = new String[fom_values.length];
2 26 Feb 07 jari 77   for (int i=0; i<fom_values.length; i++) {
2 26 Feb 07 jari 78       items[i] = String.valueOf(i+1) + "---->" + String.valueOf(Math.round(fom_values[i]*1000)/1000f);
2 26 Feb 07 jari 79             if(showVariance)
2 26 Feb 07 jari 80                 items[i] += " \u00B1 " + String.valueOf(Math.round(variances[i]*1000)/1000f);
2 26 Feb 07 jari 81   }
2 26 Feb 07 jari 82   JPanel listPanel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 83   JScrollPane scroll = new JScrollPane(new JList(items));
2 26 Feb 07 jari 84   
2 26 Feb 07 jari 85   GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 86   gbc.fill = GridBagConstraints.BOTH;
2 26 Feb 07 jari 87   gbc.gridx = 0;
2 26 Feb 07 jari 88   gbc.gridy = 0;
2 26 Feb 07 jari 89   gbc.weightx = 1.0;
2 26 Feb 07 jari 90   gbc.weighty = 1.0;
2 26 Feb 07 jari 91   listPanel.add(scroll, gbc);
2 26 Feb 07 jari 92   gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 93   gbc.gridy = 1;
2 26 Feb 07 jari 94   gbc.weighty = 0.0;
2 26 Feb 07 jari 95   JButton button = new JButton("Details");
2 26 Feb 07 jari 96   button.addActionListener(new ActionListener() {
2 26 Feb 07 jari 97       public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 98     onDetails();
2 26 Feb 07 jari 99       }
2 26 Feb 07 jari 100   });
2 26 Feb 07 jari 101   listPanel.add(button, gbc);
2 26 Feb 07 jari 102   return listPanel;
2 26 Feb 07 jari 103     }
2 26 Feb 07 jari 104     
2 26 Feb 07 jari 105     private void onDetails() {
2 26 Feb 07 jari 106   JFrame f = new JFrame("Details");
2 26 Feb 07 jari 107   JTextArea t = new JTextArea();
2 26 Feb 07 jari 108   t.setEditable(false);
2 26 Feb 07 jari 109   JScrollPane sp = new JScrollPane(t);
2 26 Feb 07 jari 110   StringBuffer sb = new StringBuffer();
2 26 Feb 07 jari 111   for (int i=0; i<fom_values.length; i++) {
2 26 Feb 07 jari 112       sb.append(String.valueOf(i+1) + "\t" + String.valueOf(Math.round(fom_values[i]*1000)/1000f)+"\n");
2 26 Feb 07 jari 113   }
2 26 Feb 07 jari 114   t.setText(sb.toString());
2 26 Feb 07 jari 115   t.setCaretPosition(0);
2 26 Feb 07 jari 116   f.getContentPane().add(sp);
2 26 Feb 07 jari 117   f.setSize(200, 200);
2 26 Feb 07 jari 118   java.awt.Dimension screenSize = f.getToolkit().getScreenSize();
2 26 Feb 07 jari 119   f.setLocation(screenSize.width/2 - f.getSize().width/2, screenSize.height/2 - f.getSize().height/2);
2 26 Feb 07 jari 120   f.setVisible(true);
2 26 Feb 07 jari 121     }
2 26 Feb 07 jari 122     
2 26 Feb 07 jari 123     public void onSelected(IFramework framework) {
2 26 Feb 07 jari 124   this.fomGraph.setAntiAliasing(framework.getDisplayMenu().isAntiAliasing());
2 26 Feb 07 jari 125     }
2 26 Feb 07 jari 126     
2 26 Feb 07 jari 127     public void onMenuChanged(IDisplayMenu menu) {
2 26 Feb 07 jari 128   this.fomGraph.setAntiAliasing(menu.isAntiAliasing());
2 26 Feb 07 jari 129     }
2 26 Feb 07 jari 130     
2 26 Feb 07 jari 131     private String[] createXItems(int iterations) {
2 26 Feb 07 jari 132   String[] items = new String[iterations];
2 26 Feb 07 jari 133   for (int i=0; i<items.length; i++) {
2 26 Feb 07 jari 134       if ((i+1)%5 == 0 || i == 0 || i == items.length-1) {
2 26 Feb 07 jari 135     items[i] = String.valueOf(i+1);
2 26 Feb 07 jari 136       }
2 26 Feb 07 jari 137   }
2 26 Feb 07 jari 138   return items;
2 26 Feb 07 jari 139     }
2 26 Feb 07 jari 140     
2 26 Feb 07 jari 141     private float getMaxValue(float[] fom_values) {
2 26 Feb 07 jari 142   float max_value = -Float.MAX_VALUE;
2 26 Feb 07 jari 143   for (int i=0; i<fom_values.length; i++) {
2 26 Feb 07 jari 144       max_value = Math.max(max_value, fom_values[i]);
2 26 Feb 07 jari 145   }
2 26 Feb 07 jari 146   return max_value;
2 26 Feb 07 jari 147     }
2 26 Feb 07 jari 148     
2 26 Feb 07 jari 149     private String[] createYItems(float[] fom_values) {
2 26 Feb 07 jari 150   int number_of_items = (int)Math.ceil(getMaxValue(fom_values))+1;
2 26 Feb 07 jari 151   String[] items = new String[number_of_items];
2 26 Feb 07 jari 152   for (int i=0; i<items.length; i++) {
2 26 Feb 07 jari 153       if (i%2 == 0 || i == items.length-1) {
2 26 Feb 07 jari 154     items[i] = String.valueOf(i);
2 26 Feb 07 jari 155       }
2 26 Feb 07 jari 156   }
2 26 Feb 07 jari 157   return items;
2 26 Feb 07 jari 158     }
2 26 Feb 07 jari 159     
2 26 Feb 07 jari 160     /////////////////////////////////////////////////////////////////
2 26 Feb 07 jari 161 /*    public static void main(String[] args) throws Exception {
2 26 Feb 07 jari 162   javax.swing.JFrame frame = new javax.swing.JFrame();
2 26 Feb 07 jari 163   frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
2 26 Feb 07 jari 164   float[] fom_values = new float[] {1.5f, 0.88888888888f, 0.6666666666f, 2.5f, 0.33333333333f, 0.0f};
2 26 Feb 07 jari 165   FOMContentComponent content = new FOMContentComponent(fom_values);
2 26 Feb 07 jari 166   frame.getContentPane().add(content);
2 26 Feb 07 jari 167   frame.setSize(700, 400);
2 26 Feb 07 jari 168   java.awt.Dimension screenSize = frame.getToolkit().getScreenSize();
2 26 Feb 07 jari 169   frame.setLocation(screenSize.width/2 - frame.getSize().width/2, screenSize.height/2 - frame.getSize().height/2);
2 26 Feb 07 jari 170   frame.setVisible(true);
2 26 Feb 07 jari 171     }
2 26 Feb 07 jari 172  **/
2 26 Feb 07 jari 173   /**
2 26 Feb 07 jari 174    * @return Returns the fom_values.
2 26 Feb 07 jari 175    */
2 26 Feb 07 jari 176   public float[] getFom_values() {
2 26 Feb 07 jari 177     return fom_values;
2 26 Feb 07 jari 178   }
2 26 Feb 07 jari 179   /**
2 26 Feb 07 jari 180    * @param fom_values The fom_values to set.
2 26 Feb 07 jari 181    */
2 26 Feb 07 jari 182   public void setFom_values(float[] fom_values) {
2 26 Feb 07 jari 183     this.fom_values = fom_values;
2 26 Feb 07 jari 184     gbc.gridx = 1;
2 26 Feb 07 jari 185     gbc.weightx = 0.1;
2 26 Feb 07 jari 186     add(createValuesList(fom_values), gbc);
2 26 Feb 07 jari 187   }
2 26 Feb 07 jari 188   /**
2 26 Feb 07 jari 189    * @return Returns the fomGraph.
2 26 Feb 07 jari 190    */
2 26 Feb 07 jari 191   public FOMGraph getFomGraph() {
2 26 Feb 07 jari 192     return fomGraph;
2 26 Feb 07 jari 193   }
2 26 Feb 07 jari 194   /**
2 26 Feb 07 jari 195    * @param fomGraph The fomGraph to set.
2 26 Feb 07 jari 196    */
2 26 Feb 07 jari 197   public void setFomGraph(FOMGraph fomGraph) {
2 26 Feb 07 jari 198     this.fomGraph = fomGraph;
2 26 Feb 07 jari 199     gbc.gridx = 0;
2 26 Feb 07 jari 200     gbc.weightx = 0.9;
2 26 Feb 07 jari 201     add(this.fomGraph, gbc);
2 26 Feb 07 jari 202   }
2 26 Feb 07 jari 203   /**
2 26 Feb 07 jari 204    * @return Returns the showVariance.
2 26 Feb 07 jari 205    */
2 26 Feb 07 jari 206   public boolean isShowVariance() {
2 26 Feb 07 jari 207     return showVariance;
2 26 Feb 07 jari 208   }
2 26 Feb 07 jari 209   /**
2 26 Feb 07 jari 210    * @param showVariance The showVariance to set.
2 26 Feb 07 jari 211    */
2 26 Feb 07 jari 212   public void setShowVariance(boolean showVariance) {
2 26 Feb 07 jari 213     this.showVariance = showVariance;
2 26 Feb 07 jari 214   }
2 26 Feb 07 jari 215   /**
2 26 Feb 07 jari 216    * @return Returns the variances.
2 26 Feb 07 jari 217    */
2 26 Feb 07 jari 218   public float[] getVariances() {
2 26 Feb 07 jari 219     return variances;
2 26 Feb 07 jari 220   }
2 26 Feb 07 jari 221   /**
2 26 Feb 07 jari 222    * @param variances The variances to set.
2 26 Feb 07 jari 223    */
2 26 Feb 07 jari 224   public void setVariances(float[] variances) {
2 26 Feb 07 jari 225     this.variances = variances;
2 26 Feb 07 jari 226   }
2 26 Feb 07 jari 227 }