mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/knnc/KNNCValidationInfoViewer.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  * KNNCValidationInfoViewer.java
2 26 Feb 07 jari 7  *
2 26 Feb 07 jari 8  * Created on May 17, 2004, 12:11 PM
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.knnc;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import java.awt.Color;
2 26 Feb 07 jari 14 import java.awt.Dimension;
2 26 Feb 07 jari 15 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 16 import java.awt.GridBagLayout;
2 26 Feb 07 jari 17 import java.awt.Insets;
2 26 Feb 07 jari 18
2 26 Feb 07 jari 19 import javax.swing.JComponent;
2 26 Feb 07 jari 20 import javax.swing.JLabel;
2 26 Feb 07 jari 21 import javax.swing.JPanel;
2 26 Feb 07 jari 22 import javax.swing.JTextArea;
2 26 Feb 07 jari 23
2 26 Feb 07 jari 24 import org.tigr.microarray.mev.cluster.gui.impl.ViewerAdapter;
2 26 Feb 07 jari 25
2 26 Feb 07 jari 26 /**
2 26 Feb 07 jari 27  *
2 26 Feb 07 jari 28  * @author  nbhagaba
2 26 Feb 07 jari 29  */
2 26 Feb 07 jari 30 public class KNNCValidationInfoViewer extends ViewerAdapter implements java.io.Serializable {
2 26 Feb 07 jari 31     public static final long serialVersionUID = 202009020001L;
2 26 Feb 07 jari 32     
2 26 Feb 07 jari 33     private JComponent header;
2 26 Feb 07 jari 34     private JTextArea  content;
2 26 Feb 07 jari 35     private int[] origNumInFiltTrgSetByClass, numberCorrectlyClassifiedByClass, numberIncorrectlyClassifiedByClass;
2 26 Feb 07 jari 36     
2 26 Feb 07 jari 37     /** Creates a new instance of KNNCValidationInfoViewer */
2 26 Feb 07 jari 38     public KNNCValidationInfoViewer(int[] origNumInFiltTrgSetByClass, int[] numberCorrectlyClassifiedByClass, int[] numberIncorrectlyClassifiedByClass) {
2 26 Feb 07 jari 39         this.origNumInFiltTrgSetByClass = origNumInFiltTrgSetByClass;
2 26 Feb 07 jari 40         this.numberCorrectlyClassifiedByClass = numberCorrectlyClassifiedByClass;
2 26 Feb 07 jari 41         this.numberIncorrectlyClassifiedByClass = numberIncorrectlyClassifiedByClass;
2 26 Feb 07 jari 42         header  = createHeader();
2 26 Feb 07 jari 43         content = createContent();
2 26 Feb 07 jari 44         setMaxWidth(content, header);        
2 26 Feb 07 jari 45     }
2 26 Feb 07 jari 46     
2 26 Feb 07 jari 47     public KNNCValidationInfoViewer(JTextArea content, JComponent header){
2 26 Feb 07 jari 48       this.content = content;
2 26 Feb 07 jari 49       this.header = header;
2 26 Feb 07 jari 50         setMaxWidth(content, header);      
2 26 Feb 07 jari 51     }
2 26 Feb 07 jari 52     /**
2 26 Feb 07 jari 53      * Returns component to be inserted into the framework scroll pane.
2 26 Feb 07 jari 54      */
2 26 Feb 07 jari 55     public JComponent getContentComponent() {
2 26 Feb 07 jari 56         return content;
2 26 Feb 07 jari 57     }
2 26 Feb 07 jari 58     
2 26 Feb 07 jari 59     /**
2 26 Feb 07 jari 60      * Returns the viewer header.
2 26 Feb 07 jari 61      */
2 26 Feb 07 jari 62     public JComponent getHeaderComponent() {
2 26 Feb 07 jari 63         return header;
2 26 Feb 07 jari 64     }    
2 26 Feb 07 jari 65     
2 26 Feb 07 jari 66     /**
2 26 Feb 07 jari 67      * Creates the viewer header.
2 26 Feb 07 jari 68      */
2 26 Feb 07 jari 69     private JComponent createHeader() {
2 26 Feb 07 jari 70         JPanel panel = new JPanel(new GridBagLayout());
2 26 Feb 07 jari 71         panel.setBackground(Color.white);
2 26 Feb 07 jari 72         GridBagConstraints gbc = new GridBagConstraints();
2 26 Feb 07 jari 73         gbc.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 74         gbc.insets = new Insets(10, 0, 10, 0);
2 26 Feb 07 jari 75         panel.add(new JLabel("<html><body bgcolor='#FFFFFF'><font face='serif' size='5' color='#000080'><b>Leave one out cross-validation (LOOCV) statistics</b></font></body></html>"), gbc);        
2 26 Feb 07 jari 76         return panel;
2 26 Feb 07 jari 77     }   
2 26 Feb 07 jari 78     
2 26 Feb 07 jari 79     private JTextArea createContent(){
2 26 Feb 07 jari 80         JTextArea area = new JTextArea();
2 26 Feb 07 jari 81         area.setEditable(false);
2 26 Feb 07 jari 82         area.setMargin(new Insets(0, 10, 0, 0));  
2 26 Feb 07 jari 83         StringBuffer sb = new StringBuffer();
2 26 Feb 07 jari 84         for (int i = 1; i < this.origNumInFiltTrgSetByClass.length; i++) {
2 26 Feb 07 jari 85             sb.append("Class " + i + ":\n\t");
2 26 Feb 07 jari 86             sb.append("Original number* of training set elements in class = " + this.origNumInFiltTrgSetByClass[i] + "\n\t");
2 26 Feb 07 jari 87             sb.append("Number of training set elements correctly assigned to class by LOOCV = " + this.numberCorrectlyClassifiedByClass[i] + "\n\t");
2 26 Feb 07 jari 88             sb.append("Number of training set elements falsely assigned to class by LOOCV = " + this.numberIncorrectlyClassifiedByClass[i] + "\n");
2 26 Feb 07 jari 89         }
2 26 Feb 07 jari 90         sb.append("\n\n*Indicates number of training set elements in a given class after variance filtering, if applied.");
2 26 Feb 07 jari 91         
2 26 Feb 07 jari 92         area.setText(sb.toString());
2 26 Feb 07 jari 93         area.setCaretPosition(0);
2 26 Feb 07 jari 94         return area;        
2 26 Feb 07 jari 95     }
2 26 Feb 07 jari 96
2 26 Feb 07 jari 97     /**
2 26 Feb 07 jari 98      * Synchronize content and header sizes.
2 26 Feb 07 jari 99      */
2 26 Feb 07 jari 100     private void setMaxWidth(JComponent content, JComponent header) {
2 26 Feb 07 jari 101         int c_width = content.getPreferredSize().width;
2 26 Feb 07 jari 102         int h_width = header.getPreferredSize().width;
2 26 Feb 07 jari 103         if (c_width > h_width) {
2 26 Feb 07 jari 104             header.setPreferredSize(new Dimension(c_width, header.getPreferredSize().height));
2 26 Feb 07 jari 105         } else {
2 26 Feb 07 jari 106             content.setPreferredSize(new Dimension(h_width, content.getPreferredSize().height));
2 26 Feb 07 jari 107         }
2 26 Feb 07 jari 108     }    
2 26 Feb 07 jari 109 }