mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/bridge/BridgeWorker.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * Created on Feb 24, 2006
2 26 Feb 07 jari 3  */
2 26 Feb 07 jari 4 package org.tigr.microarray.mev.cluster.gui.impl.bridge;
2 26 Feb 07 jari 5
2 26 Feb 07 jari 6 import java.io.File;
2 26 Feb 07 jari 7 import java.io.FileWriter;
2 26 Feb 07 jari 8 import java.io.IOException;
2 26 Feb 07 jari 9 import java.util.Calendar;
2 26 Feb 07 jari 10 import java.util.GregorianCalendar;
2 26 Feb 07 jari 11
2 26 Feb 07 jari 12 import javax.swing.JFrame;
2 26 Feb 07 jari 13 import javax.swing.JOptionPane;
2 26 Feb 07 jari 14
2 26 Feb 07 jari 15 import org.tigr.microarray.mev.r.RProgress;
2 26 Feb 07 jari 16 import org.tigr.microarray.mev.r.RSrvException;
2 26 Feb 07 jari 17 import org.tigr.microarray.mev.r.Rconnection;
2 26 Feb 07 jari 18 import org.tigr.microarray.mev.r.SwingWorker;
2 26 Feb 07 jari 19
2 26 Feb 07 jari 20 /**
2 26 Feb 07 jari 21  * @author iVu
2 26 Feb 07 jari 22  */
2 26 Feb 07 jari 23 public class BridgeWorker extends SwingWorker {
2 26 Feb 07 jari 24   private Rconnection rc;
2 26 Feb 07 jari 25   
2 26 Feb 07 jari 26   private String sClear;
2 26 Feb 07 jari 27   private String sLibrary;
2 26 Feb 07 jari 28   private String sData;
2 26 Feb 07 jari 29   private String sReform;
2 26 Feb 07 jari 30   private String sMcmc;
2 26 Feb 07 jari 31   private String sAvg1;
2 26 Feb 07 jari 32   private String sAvg2;
2 26 Feb 07 jari 33   private String sPost;
2 26 Feb 07 jari 34   
2 26 Feb 07 jari 35   private double threshold;
2 26 Feb 07 jari 36   
2 26 Feb 07 jari 37   private boolean ok;
2 26 Feb 07 jari 38   private boolean done;
2 26 Feb 07 jari 39
2 26 Feb 07 jari 40   private RProgress progress;
2 26 Feb 07 jari 41   
2 26 Feb 07 jari 42   private BridgeResult result;
2 26 Feb 07 jari 43   
2 26 Feb 07 jari 44   
2 26 Feb 07 jari 45   public BridgeWorker( Rconnection rcP, String clearP, String libraryP, 
2 26 Feb 07 jari 46       String dataP, String reformP, String mcmcP, String avg1P, 
2 26 Feb 07 jari 47       String avg2P, String postP, double thresholdP, RProgress progressP ) {
2 26 Feb 07 jari 48     this.rc = rcP;
2 26 Feb 07 jari 49     this.sClear = clearP;
2 26 Feb 07 jari 50     this.sLibrary = libraryP;
2 26 Feb 07 jari 51     this.sData = dataP;
2 26 Feb 07 jari 52     this.sReform = reformP;
2 26 Feb 07 jari 53     this.sMcmc = mcmcP;
2 26 Feb 07 jari 54     this.sAvg1 = avg1P;
2 26 Feb 07 jari 55     this.sAvg2 = avg2P;
2 26 Feb 07 jari 56     this.sPost = postP;
2 26 Feb 07 jari 57     this.threshold = thresholdP;
2 26 Feb 07 jari 58     this.progress = progressP;
2 26 Feb 07 jari 59   }//constructor()
2 26 Feb 07 jari 60
2 26 Feb 07 jari 61
2 26 Feb 07 jari 62     /**
2 26 Feb 07 jari 63      * Write the String s to File f
2 26 Feb 07 jari 64      * 
2 26 Feb 07 jari 65      * @param f
2 26 Feb 07 jari 66      * @param s
2 26 Feb 07 jari 67      */
2 26 Feb 07 jari 68     private void writeFile(File f, String s) {
2 26 Feb 07 jari 69         try {
2 26 Feb 07 jari 70             FileWriter fw = new FileWriter(f);
2 26 Feb 07 jari 71             fw.write(s);
2 26 Feb 07 jari 72             fw.flush();
2 26 Feb 07 jari 73             fw.close();
2 26 Feb 07 jari 74         } catch( IOException e ) {
2 26 Feb 07 jari 75             e.printStackTrace();
2 26 Feb 07 jari 76         }
2 26 Feb 07 jari 77     }//writeFile()
2 26 Feb 07 jari 78   
2 26 Feb 07 jari 79   
2 26 Feb 07 jari 80   public Object construct() {
2 26 Feb 07 jari 81     this.ok = false;
2 26 Feb 07 jari 82     this.done = false;
2 26 Feb 07 jari 83     
2 26 Feb 07 jari 84     //record the start time
2 26 Feb 07 jari 85     Calendar startCal = new GregorianCalendar();
2 26 Feb 07 jari 86     int startHour = startCal.get( Calendar.HOUR_OF_DAY );
2 26 Feb 07 jari 87     int startMin = startCal.get( Calendar.MINUTE );
2 26 Feb 07 jari 88     String startTime = startHour + ":" + startMin;
2 26 Feb 07 jari 89     System.out.println( "Bridge started at " + startTime );
2 26 Feb 07 jari 90     
2 26 Feb 07 jari 91     try {
2 26 Feb 07 jari 92       //should clear R
2 26 Feb 07 jari 93       this.rc.voidEval( this.sClear );
2 26 Feb 07 jari 94       
2 26 Feb 07 jari 95       //load rama
2 26 Feb 07 jari 96       this.rc.voidEval( this.sLibrary );
2 26 Feb 07 jari 97       
2 26 Feb 07 jari 98       //load data as vector
2 26 Feb 07 jari 99       this.rc.voidEval( this.sData );
2 26 Feb 07 jari 100       
2 26 Feb 07 jari 101       //reform vector data into matrix
2 26 Feb 07 jari 102       this.rc.voidEval( this.sReform );
2 26 Feb 07 jari 103       
2 26 Feb 07 jari 104       //for testing
2 26 Feb 07 jari 105       double[][] matrix = this.rc.eval( "bData" ).asDoubleMatrix();
2 26 Feb 07 jari 106       StringBuffer sb = new StringBuffer();
2 26 Feb 07 jari 107       for( int i = 0; i < matrix.length; i ++ ) {
2 26 Feb 07 jari 108         if( i > 0 ) {
2 26 Feb 07 jari 109           sb.append( "\r\n" );
2 26 Feb 07 jari 110         }
2 26 Feb 07 jari 111         
2 26 Feb 07 jari 112         for( int j = 0; j < matrix[ i ].length; j ++ ) {
2 26 Feb 07 jari 113           //System.out.println(i+":"+j + "="+matrix[ i ][j ]);
2 26 Feb 07 jari 114           if( j > 0 ) {
2 26 Feb 07 jari 115             sb.append( "\t" );
2 26 Feb 07 jari 116           }
2 26 Feb 07 jari 117           sb.append( matrix[ i ][ j ] );
2 26 Feb 07 jari 118         }
2 26 Feb 07 jari 119       }
2 26 Feb 07 jari 120       //File f = new File("/Users/iVu/Documents/Dev/MeV/out.txt");
2 26 Feb 07 jari 121       //this.writeFile( f, sb.toString() );
2 26 Feb 07 jari 122       
2 26 Feb 07 jari 123       
2 26 Feb 07 jari 124       //call fit.model()
2 26 Feb 07 jari 125       this.rc.voidEval( this.sMcmc );
2 26 Feb 07 jari 126       
2 26 Feb 07 jari 127       //record the end time
2 26 Feb 07 jari 128       Calendar endCal = new GregorianCalendar();
2 26 Feb 07 jari 129       int endHour = endCal.get( Calendar.HOUR_OF_DAY );
2 26 Feb 07 jari 130       int endMin = endCal.get( Calendar.MINUTE );
2 26 Feb 07 jari 131       String endTime = endHour + ":" + endMin;
2 26 Feb 07 jari 132       System.out.println( "Bridge ended at " + endTime );
2 26 Feb 07 jari 133       
2 26 Feb 07 jari 134       //avg gammas first
2 26 Feb 07 jari 135       this.rc.voidEval( this.sAvg1 );
2 26 Feb 07 jari 136       this.rc.voidEval( this.sAvg2 );
2 26 Feb 07 jari 137       
2 26 Feb 07 jari 138       //retrieve gammas
2 26 Feb 07 jari 139       double[] gamma1 = rc.eval( "gamma1" ).asDoubleArray();
2 26 Feb 07 jari 140       double[] gamma2 = rc.eval( "gamma2" ).asDoubleArray();
2 26 Feb 07 jari 141       
2 26 Feb 07 jari 142       double[] postP = rc.eval( this.sPost ).asDoubleArray();
2 26 Feb 07 jari 143       
2 26 Feb 07 jari 144       this.result = new BridgeResult( gamma1, gamma2, postP, this.threshold );
2 26 Feb 07 jari 145       
2 26 Feb 07 jari 146       //seems to have worked
2 26 Feb 07 jari 147       this.ok = true;
2 26 Feb 07 jari 148       this.done = true;
2 26 Feb 07 jari 149     } catch ( RSrvException e ) {
2 26 Feb 07 jari 150       e.printStackTrace();
2 26 Feb 07 jari 151       //this.rama.error( e.getMessage() );
2 26 Feb 07 jari 152       this.ok = false;
2 26 Feb 07 jari 153       this.done = false;
2 26 Feb 07 jari 154       this.error( e.getMessage() );
2 26 Feb 07 jari 155     } finally {
2 26 Feb 07 jari 156       this.progress.kill();
2 26 Feb 07 jari 157     }
2 26 Feb 07 jari 158     
2 26 Feb 07 jari 159     //System.out.println( "Done with construct()" );
2 26 Feb 07 jari 160     return this.result;
2 26 Feb 07 jari 161   }//construct()
2 26 Feb 07 jari 162   
2 26 Feb 07 jari 163   
2 26 Feb 07 jari 164   public void finished() {
2 26 Feb 07 jari 165     this.ok = true;
2 26 Feb 07 jari 166     this.done = true;
2 26 Feb 07 jari 167     //System.out.println( "Finished" );
2 26 Feb 07 jari 168   }
2 26 Feb 07 jari 169   
2 26 Feb 07 jari 170   
2 26 Feb 07 jari 171   /**
2 26 Feb 07 jari 172    * Displays an error dialog
2 26 Feb 07 jari 173    * @param message
2 26 Feb 07 jari 174    */
2 26 Feb 07 jari 175   public void error( String message ) {
2 26 Feb 07 jari 176     JOptionPane.showMessageDialog( new JFrame(), 
2 26 Feb 07 jari 177         message, "Input Error", JOptionPane.ERROR_MESSAGE );
2 26 Feb 07 jari 178   }//end error()
2 26 Feb 07 jari 179   
2 26 Feb 07 jari 180   
2 26 Feb 07 jari 181   
2 26 Feb 07 jari 182   public boolean isOk() {
2 26 Feb 07 jari 183     return this.ok;
2 26 Feb 07 jari 184   }
2 26 Feb 07 jari 185   public boolean isDone() {
2 26 Feb 07 jari 186     return this.done;
2 26 Feb 07 jari 187   }
2 26 Feb 07 jari 188   public BridgeResult getResult() {
2 26 Feb 07 jari 189     return this.result;
2 26 Feb 07 jari 190   }
2 26 Feb 07 jari 191 }//end class