mev-4.0.01/source/org/tigr/microarray/mev/r/RamaSummaryViewer.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * Created on Jan 14, 2005
2 26 Feb 07 jari 3  */
2 26 Feb 07 jari 4 package org.tigr.microarray.mev.r;
2 26 Feb 07 jari 5
2 26 Feb 07 jari 6 import java.awt.Color;
2 26 Feb 07 jari 7 import java.awt.Dimension;
2 26 Feb 07 jari 8 import java.awt.Font;
2 26 Feb 07 jari 9 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 10 import java.awt.GridBagLayout;
2 26 Feb 07 jari 11 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 12 import java.awt.event.ActionListener;
2 26 Feb 07 jari 13 import java.awt.image.BufferedImage;
2 26 Feb 07 jari 14 import java.beans.Expression;
2 26 Feb 07 jari 15
2 26 Feb 07 jari 16 import javax.swing.BorderFactory;
2 26 Feb 07 jari 17 import javax.swing.BoxLayout;
2 26 Feb 07 jari 18 import javax.swing.JButton;
2 26 Feb 07 jari 19 import javax.swing.JComponent;
2 26 Feb 07 jari 20 import javax.swing.JFrame;
2 26 Feb 07 jari 21 import javax.swing.JLabel;
2 26 Feb 07 jari 22 import javax.swing.JOptionPane;
2 26 Feb 07 jari 23 import javax.swing.JPanel;
2 26 Feb 07 jari 24 import javax.swing.JScrollPane;
2 26 Feb 07 jari 25 import javax.swing.JTable;
2 26 Feb 07 jari 26 import javax.swing.border.Border;
2 26 Feb 07 jari 27 import javax.swing.border.TitledBorder;
2 26 Feb 07 jari 28 import javax.swing.event.TableModelEvent;
2 26 Feb 07 jari 29 import javax.swing.table.DefaultTableModel;
2 26 Feb 07 jari 30 import javax.swing.table.TableColumn;
2 26 Feb 07 jari 31
2 26 Feb 07 jari 32 import org.tigr.microarray.mev.cluster.gui.Experiment;
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.gui.IData;
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.IDisplayMenu;
2 26 Feb 07 jari 35 import org.tigr.microarray.mev.cluster.gui.IFramework;
2 26 Feb 07 jari 36 import org.tigr.microarray.mev.cluster.gui.IViewer;
2 26 Feb 07 jari 37
2 26 Feb 07 jari 38
2 26 Feb 07 jari 39 /**
2 26 Feb 07 jari 40  * Should display delta, rho, class assignment, discriminant score, genelist
2 26 Feb 07 jari 41  * 
2 26 Feb 07 jari 42  * @author vu
2 26 Feb 07 jari 43  */
2 26 Feb 07 jari 44 public class RamaSummaryViewer extends JPanel implements IViewer, ActionListener {
2 26 Feb 07 jari 45   private Rconnection rc;
2 26 Feb 07 jari 46   
2 26 Feb 07 jari 47   private JButton shutdownButton;
2 26 Feb 07 jari 48   private JButton saveResult;
2 26 Feb 07 jari 49   
2 26 Feb 07 jari 50   private JFrame jf;
2 26 Feb 07 jari 51   
2 26 Feb 07 jari 52   private RamaResult result;
2 26 Feb 07 jari 53   
2 26 Feb 07 jari 54   
2 26 Feb 07 jari 55     /**
2 26 Feb 07 jari 56      * 
2 26 Feb 07 jari 57      * @param resultP
2 26 Feb 07 jari 58      */
2 26 Feb 07 jari 59     public RamaSummaryViewer( RamaResult resultP ) {
2 26 Feb 07 jari 60     this.result = resultP;
2 26 Feb 07 jari 61     
2 26 Feb 07 jari 62     this.setLayout(new GridBagLayout());
2 26 Feb 07 jari 63     GridBagConstraints c1 = new GridBagConstraints();
2 26 Feb 07 jari 64     c1.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 65     c1.anchor = GridBagConstraints.FIRST_LINE_START;
2 26 Feb 07 jari 66     
2 26 Feb 07 jari 67     //create Panel for params and button
2 26 Feb 07 jari 68     JPanel leftPanel = this.createLeftPanel();
2 26 Feb 07 jari 69     c1.gridx = 0;
2 26 Feb 07 jari 70     c1.gridy = 0;
2 26 Feb 07 jari 71     this.add(leftPanel, c1);
2 26 Feb 07 jari 72     
2 26 Feb 07 jari 73     //create tablePanel
2 26 Feb 07 jari 74     JPanel tablePanel = this.createTablePanel( result );
2 26 Feb 07 jari 75     c1.gridx = 1;
2 26 Feb 07 jari 76     c1.gridy = 0;
2 26 Feb 07 jari 77     this.add( tablePanel, c1 );
2 26 Feb 07 jari 78     }//end constructor
2 26 Feb 07 jari 79     
2 26 Feb 07 jari 80     
2 26 Feb 07 jari 81     /**
2 26 Feb 07 jari 82      * 
2 26 Feb 07 jari 83      * @param result
2 26 Feb 07 jari 84      * @return
2 26 Feb 07 jari 85      */
2 26 Feb 07 jari 86     private JPanel createTablePanel( RamaResult result ) {
2 26 Feb 07 jari 87       JPanel returnPanel = new JPanel();
2 26 Feb 07 jari 88       returnPanel.setSize( 600,400 );
2 26 Feb 07 jari 89       
2 26 Feb 07 jari 90       //display gammas in a jtable
2 26 Feb 07 jari 91     DefaultTableModel dm = new DefaultTableModel();
2 26 Feb 07 jari 92       dm.setDataVector( result.getResultTable(), result.getResultHeader() );
2 26 Feb 07 jari 93     TableSorter sorter = new TableSorter( dm );
2 26 Feb 07 jari 94     JTable jt = new JTable( sorter ) {
2 26 Feb 07 jari 95       public void tableChanged(TableModelEvent e) {
2 26 Feb 07 jari 96         super.tableChanged(e);
2 26 Feb 07 jari 97         repaint();
2 26 Feb 07 jari 98       }
2 26 Feb 07 jari 99     };
2 26 Feb 07 jari 100     sorter.setTableHeader( jt.getTableHeader() );
2 26 Feb 07 jari 101     jt.setPreferredScrollableViewportSize(new Dimension(600, 400));
2 26 Feb 07 jari 102     
2 26 Feb 07 jari 103     //set column widths
2 26 Feb 07 jari 104     jt.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
2 26 Feb 07 jari 105     TableColumn column = null;
2 26 Feb 07 jari 106     for ( int i = 0; i < result.getResultHeader().length; i ++ ) {
2 26 Feb 07 jari 107       column = jt.getColumnModel().getColumn(i);
2 26 Feb 07 jari 108       if (i == 0) {
2 26 Feb 07 jari 109         column.setPreferredWidth(200);
2 26 Feb 07 jari 110       } else  {
2 26 Feb 07 jari 111         column.setPreferredWidth(100);
2 26 Feb 07 jari 112       } 
2 26 Feb 07 jari 113     }
2 26 Feb 07 jari 114     //add components and return
2 26 Feb 07 jari 115     JScrollPane jsp = new JScrollPane( jt );
2 26 Feb 07 jari 116     returnPanel.add( jsp );
2 26 Feb 07 jari 117       
2 26 Feb 07 jari 118       return returnPanel;
2 26 Feb 07 jari 119     }//createResultPanel()
2 26 Feb 07 jari 120     
2 26 Feb 07 jari 121     
2 26 Feb 07 jari 122     /**
2 26 Feb 07 jari 123      * 
2 26 Feb 07 jari 124      * @return
2 26 Feb 07 jari 125      */
2 26 Feb 07 jari 126     private JPanel createLeftPanel() {
2 26 Feb 07 jari 127     JPanel leftPanel = new JPanel();
2 26 Feb 07 jari 128     leftPanel.setSize( 200, 400 );
2 26 Feb 07 jari 129     leftPanel.setBackground( Color.RED );
2 26 Feb 07 jari 130     leftPanel.setLayout( new GridBagLayout() );
2 26 Feb 07 jari 131     GridBagConstraints c2 = new GridBagConstraints();
2 26 Feb 07 jari 132     c2.fill = GridBagConstraints.HORIZONTAL;
2 26 Feb 07 jari 133     
2 26 Feb 07 jari 134     //add paramPanel
2 26 Feb 07 jari 135     c2.gridx = 0;
2 26 Feb 07 jari 136     c2.gridy = 0;
2 26 Feb 07 jari 137     leftPanel.add( this.createParamPanel( result.getShift(), 
2 26 Feb 07 jari 138         result.getB(), result.getMinIter() ), c2 );
2 26 Feb 07 jari 139     
2 26 Feb 07 jari 140     //add buttonPanel
2 26 Feb 07 jari 141     c2.gridx = 0;
2 26 Feb 07 jari 142     c2.gridy = 1;
2 26 Feb 07 jari 143     leftPanel.add( this.createButtonPanel(), c2 );
2 26 Feb 07 jari 144       
2 26 Feb 07 jari 145     return leftPanel;
2 26 Feb 07 jari 146     }//createLeftPanel()
2 26 Feb 07 jari 147
2 26 Feb 07 jari 148
2 26 Feb 07 jari 149     /**
2 26 Feb 07 jari 150      * Displays the parameters used for classification
2 26 Feb 07 jari 151      * 
2 26 Feb 07 jari 152      * @param delta
2 26 Feb 07 jari 153      * @param rho
2 26 Feb 07 jari 154      * @return
2 26 Feb 07 jari 155      */
2 26 Feb 07 jari 156     private JPanel createParamPanel( double shift, int B, int minIter ) {
2 26 Feb 07 jari 157         //create a JPanel
2 26 Feb 07 jari 158         JPanel toReturn = new JPanel();
2 26 Feb 07 jari 159         Border loweredBorder = BorderFactory.createEtchedBorder();
2 26 Feb 07 jari 160          
2 26 Feb 07 jari 161         Dimension d = new Dimension( 150, 80 );
2 26 Feb 07 jari 162         toReturn.setPreferredSize(d);
2 26 Feb 07 jari 163         toReturn.setMaximumSize(d);
2 26 Feb 07 jari 164         toReturn.setMinimumSize(d);
2 26 Feb 07 jari 165         Font font = new Font("Arial", Font.PLAIN, 12);
2 26 Feb 07 jari 166         toReturn.setBorder(BorderFactory.createTitledBorder(loweredBorder,
2 26 Feb 07 jari 167                 "Parameters Used", TitledBorder.LEFT,
2 26 Feb 07 jari 168                 TitledBorder.DEFAULT_POSITION, font, Color.GRAY));
2 26 Feb 07 jari 169
2 26 Feb 07 jari 170         //list the params vertically
2 26 Feb 07 jari 171         BoxLayout bl = new BoxLayout(toReturn, BoxLayout.Y_AXIS);
2 26 Feb 07 jari 172         toReturn.setLayout(bl);
2 26 Feb 07 jari 173
2 26 Feb 07 jari 174         //create the JLabels and add them to the JPanel
2 26 Feb 07 jari 175         String sShift = new Float( shift ).toString();
2 26 Feb 07 jari 176         JLabel sLabel = new JLabel(new String("  Shift = " + sShift + "  "));
2 26 Feb 07 jari 177         JLabel bLabel = new JLabel(new String("  B = " + B + "  "));
2 26 Feb 07 jari 178         JLabel minIterLabel = new JLabel("  minIter = " + minIter + "  ");
2 26 Feb 07 jari 179         toReturn.add(sLabel);
2 26 Feb 07 jari 180         toReturn.add(bLabel);
2 26 Feb 07 jari 181         toReturn.add(minIterLabel);
2 26 Feb 07 jari 182         
2 26 Feb 07 jari 183         return toReturn;
2 26 Feb 07 jari 184     }//createDRPanel()
2 26 Feb 07 jari 185     
2 26 Feb 07 jari 186     
2 26 Feb 07 jari 187     /**
2 26 Feb 07 jari 188      * 
2 26 Feb 07 jari 189      * @return
2 26 Feb 07 jari 190      */
2 26 Feb 07 jari 191     private JPanel createButtonPanel() {
2 26 Feb 07 jari 192       JPanel toReturn = new JPanel();
2 26 Feb 07 jari 193       toReturn.setLayout( new BoxLayout( toReturn, BoxLayout.Y_AXIS ) );
2 26 Feb 07 jari 194       toReturn.setSize( 300, 400 );
2 26 Feb 07 jari 195       
2 26 Feb 07 jari 196       //Dimension d = new Dimension( 175, 25 );
2 26 Feb 07 jari 197       Dimension dButton = new Dimension( 150, 25 );
2 26 Feb 07 jari 198       
2 26 Feb 07 jari 199       //create shutdown button
2 26 Feb 07 jari 200       this.shutdownButton = new JButton( "Shutdown Rserve" );
2 26 Feb 07 jari 201       this.shutdownButton.setPreferredSize( dButton );
2 26 Feb 07 jari 202       this.shutdownButton.setMinimumSize( dButton );
2 26 Feb 07 jari 203       this.shutdownButton.setMaximumSize( dButton );
2 26 Feb 07 jari 204       this.shutdownButton.addActionListener( this );
2 26 Feb 07 jari 205     
2 26 Feb 07 jari 206       //create save button
2 26 Feb 07 jari 207     this.saveResult = new JButton( "Save Results" );
2 26 Feb 07 jari 208     this.saveResult.setPreferredSize( dButton );
2 26 Feb 07 jari 209     this.saveResult.setMinimumSize( dButton );
2 26 Feb 07 jari 210     this.saveResult.setMaximumSize( dButton );
2 26 Feb 07 jari 211     this.saveResult.addActionListener( this );
2 26 Feb 07 jari 212     
2 26 Feb 07 jari 213     //add to panel
2 26 Feb 07 jari 214     //toReturn.add( Box.createHorizontalGlue() );
2 26 Feb 07 jari 215     toReturn.add( this.saveResult );
2 26 Feb 07 jari 216     //toReturn.add( Box.createHorizontalGlue() );
2 26 Feb 07 jari 217       toReturn.add( this.shutdownButton );
2 26 Feb 07 jari 218     //toReturn.add( Box.createHorizontalGlue() );
2 26 Feb 07 jari 219       
2 26 Feb 07 jari 220       return toReturn;
2 26 Feb 07 jari 221     }//createButtonPanel()
2 26 Feb 07 jari 222
2 26 Feb 07 jari 223     
2 26 Feb 07 jari 224     /**
2 26 Feb 07 jari 225      * 
2 26 Feb 07 jari 226      */
2 26 Feb 07 jari 227   public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 228     if( e.getSource() == this.shutdownButton ) {
2 26 Feb 07 jari 229       try {
2 26 Feb 07 jari 230         int i = JOptionPane.showConfirmDialog( this.jf, "Really Shutdown Rserve?",
2 26 Feb 07 jari 231             "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE );
2 26 Feb 07 jari 232         if( i == JOptionPane.OK_OPTION ) {
2 26 Feb 07 jari 233           if( this.rc != null ) {
2 26 Feb 07 jari 234             this.rc.shutdown();
2 26 Feb 07 jari 235           }
2 26 Feb 07 jari 236           this.shutdownButton.setEnabled( false );
2 26 Feb 07 jari 237         }
2 26 Feb 07 jari 238       } catch( RSrvException e1 ) {
2 26 Feb 07 jari 239         e1.printStackTrace();
2 26 Feb 07 jari 240       }
2 26 Feb 07 jari 241     } else if( e.getSource() == this.saveResult ) {
2 26 Feb 07 jari 242       this.result.saveRamaResult( this.jf );
2 26 Feb 07 jari 243     }
2 26 Feb 07 jari 244   }//actionPerformed()
2 26 Feb 07 jari 245
2 26 Feb 07 jari 246
2 26 Feb 07 jari 247     public JComponent getContentComponent() {
2 26 Feb 07 jari 248         return this;
2 26 Feb 07 jari 249     }//getContentComponent()
2 26 Feb 07 jari 250     public JComponent getHeaderComponent() {
2 26 Feb 07 jari 251         return null;
2 26 Feb 07 jari 252     }
2 26 Feb 07 jari 253     public JComponent getRowHeaderComponent() {
2 26 Feb 07 jari 254         return null;
2 26 Feb 07 jari 255     }
2 26 Feb 07 jari 256     public JComponent getCornerComponent(int cornerIndex) {
2 26 Feb 07 jari 257         return null;
2 26 Feb 07 jari 258     }
2 26 Feb 07 jari 259     public void onSelected(IFramework framework) {
2 26 Feb 07 jari 260
2 26 Feb 07 jari 261     }
2 26 Feb 07 jari 262     public void onDataChanged(IData data) {
2 26 Feb 07 jari 263
2 26 Feb 07 jari 264     }
2 26 Feb 07 jari 265     public void onMenuChanged(IDisplayMenu menu) {
2 26 Feb 07 jari 266
2 26 Feb 07 jari 267     }
2 26 Feb 07 jari 268     public void onDeselected() {
2 26 Feb 07 jari 269
2 26 Feb 07 jari 270     }
2 26 Feb 07 jari 271     public void onClosed() {
2 26 Feb 07 jari 272
2 26 Feb 07 jari 273     }
2 26 Feb 07 jari 274     public BufferedImage getImage() {
2 26 Feb 07 jari 275         return null;
2 26 Feb 07 jari 276     }
2 26 Feb 07 jari 277     public int[][] getClusters() {
2 26 Feb 07 jari 278         return null;
2 26 Feb 07 jari 279     }
2 26 Feb 07 jari 280     public Experiment getExperiment() {
2 26 Feb 07 jari 281         return null;
2 26 Feb 07 jari 282     }
2 26 Feb 07 jari 283     public int getViewerType() {
2 26 Feb 07 jari 284         return 0;
2 26 Feb 07 jari 285     }
2 26 Feb 07 jari 286     
2 26 Feb 07 jari 287     
2 26 Feb 07 jari 288     public static void main( String[] args ) {
2 26 Feb 07 jari 289       String[] genes = new String[ 1 ];
2 26 Feb 07 jari 290       double[] g1 = new double[ 1 ];
2 26 Feb 07 jari 291       double[] g2 = new double[ 1 ];
2 26 Feb 07 jari 292       double shift = .2d;
2 26 Feb 07 jari 293       String start = "12:30";
2 26 Feb 07 jari 294       String end = "1:30";
2 26 Feb 07 jari 295       
2 26 Feb 07 jari 296       genes[ 0 ] = "test1";
2 26 Feb 07 jari 297       g1[ 0 ] = .5d;
2 26 Feb 07 jari 298       g2[ 0 ] = 1.1d;
2 26 Feb 07 jari 299       
2 26 Feb 07 jari 300       RamaResult result = new RamaResult( g1, g2, shift, start, end );
2 26 Feb 07 jari 301       result.setGenes( genes );
2 26 Feb 07 jari 302     result.setB( 2 );
2 26 Feb 07 jari 303     result.setMinIter( 3 );
2 26 Feb 07 jari 304       RamaSummaryViewer v = new RamaSummaryViewer( result );
2 26 Feb 07 jari 305     
2 26 Feb 07 jari 306       JFrame jf = new JFrame(  );
2 26 Feb 07 jari 307       jf.setSize( 800, 600 );
2 26 Feb 07 jari 308       jf.getContentPane().add( v );
2 26 Feb 07 jari 309       jf.setVisible( true );
2 26 Feb 07 jari 310       jf.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
2 26 Feb 07 jari 311       
2 26 Feb 07 jari 312       /*
2 26 Feb 07 jari 313       try {
2 26 Feb 07 jari 314         System.out.println( "Trying to start stuff" );
2 26 Feb 07 jari 315       //Runtime.getRuntime().exec( "/Applications/Dev/R.app" );
2 26 Feb 07 jari 316             Runtime rt = Runtime.getRuntime();
2 26 Feb 07 jari 317             Process proc = rt.exec("R CMD Rserve --no-save");
2 26 Feb 07 jari 318             
2 26 Feb 07 jari 319             InputStream stderr = proc.getErrorStream();
2 26 Feb 07 jari 320             InputStreamReader isr = new InputStreamReader(stderr);
2 26 Feb 07 jari 321             BufferedReader br = new BufferedReader(isr);
2 26 Feb 07 jari 322             String line = null;
2 26 Feb 07 jari 323             System.out.println("<ERROR>");
2 26 Feb 07 jari 324             while ( (line = br.readLine()) != null)
2 26 Feb 07 jari 325                 System.out.println(line);
2 26 Feb 07 jari 326             System.out.println("</ERROR>");
2 26 Feb 07 jari 327             
2 26 Feb 07 jari 328     } catch( IOException e ) {
2 26 Feb 07 jari 329       e.printStackTrace();
2 26 Feb 07 jari 330     }
2 26 Feb 07 jari 331       */
2 26 Feb 07 jari 332     /*
2 26 Feb 07 jari 333       RamaSummaryViewer v = new RamaSummaryViewer( 11.134, 10000, 21000 );
2 26 Feb 07 jari 334       JFrame jf = new JFrame(  );
2 26 Feb 07 jari 335       jf.setSize( 400, 300 );
2 26 Feb 07 jari 336       jf.getContentPane().add( v );
2 26 Feb 07 jari 337       jf.setVisible( true );
2 26 Feb 07 jari 338       jf.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
2 26 Feb 07 jari 339       */
2 26 Feb 07 jari 340     }
2 26 Feb 07 jari 341
2 26 Feb 07 jari 342
2 26 Feb 07 jari 343   /* (non-Javadoc)
2 26 Feb 07 jari 344    * @see org.tigr.microarray.mev.cluster.gui.IViewer#setExperiment(org.tigr.microarray.mev.cluster.gui.Experiment)
2 26 Feb 07 jari 345    */
2 26 Feb 07 jari 346   public void setExperiment(Experiment e) {
2 26 Feb 07 jari 347     // TODO Auto-generated method stub
2 26 Feb 07 jari 348     
2 26 Feb 07 jari 349   }
2 26 Feb 07 jari 350
2 26 Feb 07 jari 351
2 26 Feb 07 jari 352   /* (non-Javadoc)
2 26 Feb 07 jari 353    * @see org.tigr.microarray.mev.cluster.gui.IViewer#getExperimentID()
2 26 Feb 07 jari 354    */
2 26 Feb 07 jari 355   public int getExperimentID() {
2 26 Feb 07 jari 356     // TODO Auto-generated method stub
2 26 Feb 07 jari 357     return 0;
2 26 Feb 07 jari 358   }
2 26 Feb 07 jari 359
2 26 Feb 07 jari 360
2 26 Feb 07 jari 361   /* (non-Javadoc)
2 26 Feb 07 jari 362    * @see org.tigr.microarray.mev.cluster.gui.IViewer#setExperimentID(int)
2 26 Feb 07 jari 363    */
2 26 Feb 07 jari 364   public void setExperimentID(int id) {
2 26 Feb 07 jari 365     // TODO Auto-generated method stub
2 26 Feb 07 jari 366     
2 26 Feb 07 jari 367   }
2 26 Feb 07 jari 368
2 26 Feb 07 jari 369
2 26 Feb 07 jari 370   /* (non-Javadoc)
2 26 Feb 07 jari 371    * @see org.tigr.microarray.mev.cluster.gui.IViewer#getExpression()
2 26 Feb 07 jari 372    */
2 26 Feb 07 jari 373   public Expression getExpression() {
2 26 Feb 07 jari 374     // TODO Auto-generated method stub
2 26 Feb 07 jari 375     return null;
2 26 Feb 07 jari 376   }
2 26 Feb 07 jari 377 }//end class