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

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * Created on Feb 6, 2006
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.util.Calendar;
2 26 Feb 07 jari 7 import java.util.GregorianCalendar;
2 26 Feb 07 jari 8
2 26 Feb 07 jari 9
2 26 Feb 07 jari 10 /**
2 26 Feb 07 jari 11  * @author iVu
2 26 Feb 07 jari 12  */
2 26 Feb 07 jari 13 public class RSwingWorker extends SwingWorker {
2 26 Feb 07 jari 14   private Rconnection rc;
2 26 Feb 07 jari 15   
2 26 Feb 07 jari 16   private RamaResult ramaResult;
2 26 Feb 07 jari 17   
2 26 Feb 07 jari 18   private String sClear;
2 26 Feb 07 jari 19   private String sLibrary;
2 26 Feb 07 jari 20   private String sData;
2 26 Feb 07 jari 21   private String sReform;
2 26 Feb 07 jari 22   private String sMcmc;
2 26 Feb 07 jari 23   private String sAvgGamma1;
2 26 Feb 07 jari 24   private String sAvgGamma2;
2 26 Feb 07 jari 25   private String sQLo;
2 26 Feb 07 jari 26   private String sQUp;
2 26 Feb 07 jari 27   private String sShift;
2 26 Feb 07 jari 28   
2 26 Feb 07 jari 29   private boolean allOut;
2 26 Feb 07 jari 30   private boolean ok;
2 26 Feb 07 jari 31   private boolean done;
2 26 Feb 07 jari 32   
2 26 Feb 07 jari 33   private RProgress progress;
2 26 Feb 07 jari 34   
2 26 Feb 07 jari 35   private Rama rama;
2 26 Feb 07 jari 36   
2 26 Feb 07 jari 37   
2 26 Feb 07 jari 38   public RSwingWorker( Rconnection rcP, String sClearP, String sLibraryP,  
2 26 Feb 07 jari 39       String sDataP, String sReformP, String sMcmcP, boolean allOutP,
2 26 Feb 07 jari 40       String sAvgGamma1P, String sAvgGamma2P, String sQLoP, String sQUpP,
2 26 Feb 07 jari 41       String sShiftP, RProgress progressP, Rama ramaP ) {
2 26 Feb 07 jari 42     this.rc = rcP;
2 26 Feb 07 jari 43     this.sClear = sClearP;
2 26 Feb 07 jari 44     this.sLibrary = sLibraryP;
2 26 Feb 07 jari 45     this.sData = sDataP;
2 26 Feb 07 jari 46     this.sReform = sReformP;
2 26 Feb 07 jari 47     this.sMcmc = sMcmcP;
2 26 Feb 07 jari 48     this.sQLo = sQLoP;
2 26 Feb 07 jari 49     this.sQUp = sQUpP;
2 26 Feb 07 jari 50     this.sShift = sShiftP;
2 26 Feb 07 jari 51     this.allOut = allOutP;
2 26 Feb 07 jari 52     this.sAvgGamma1 = sAvgGamma1P;
2 26 Feb 07 jari 53     this.sAvgGamma2 = sAvgGamma2P;
2 26 Feb 07 jari 54     this.progress = progressP;
2 26 Feb 07 jari 55     this.rama = ramaP;
2 26 Feb 07 jari 56   }//constructor()
2 26 Feb 07 jari 57   
2 26 Feb 07 jari 58   
2 26 Feb 07 jari 59
2 26 Feb 07 jari 60   /**
2 26 Feb 07 jari 61    * 
2 26 Feb 07 jari 62    */
2 26 Feb 07 jari 63   public Object construct() {
2 26 Feb 07 jari 64     this.done = false;
2 26 Feb 07 jari 65     
2 26 Feb 07 jari 66     //record the start time
2 26 Feb 07 jari 67     Calendar startCal = new GregorianCalendar();
2 26 Feb 07 jari 68     int startHour = startCal.get( Calendar.HOUR_OF_DAY );
2 26 Feb 07 jari 69     int startMin = startCal.get( Calendar.MINUTE );
2 26 Feb 07 jari 70     String startTime = startHour + ":" + startMin;
2 26 Feb 07 jari 71     
2 26 Feb 07 jari 72     try {
2 26 Feb 07 jari 73       //should clear R
2 26 Feb 07 jari 74       this.rc.voidEval( this.sClear );
2 26 Feb 07 jari 75       
2 26 Feb 07 jari 76       //load rama
2 26 Feb 07 jari 77       this.rc.voidEval( this.sLibrary );
2 26 Feb 07 jari 78       
2 26 Feb 07 jari 79       //load data as vector
2 26 Feb 07 jari 80       this.rc.voidEval( this.sData );
2 26 Feb 07 jari 81       
2 26 Feb 07 jari 82       //reform vector data into matrix
2 26 Feb 07 jari 83       this.rc.voidEval( this.sReform );
2 26 Feb 07 jari 84       
2 26 Feb 07 jari 85       //call fit.model()
2 26 Feb 07 jari 86       this.rc.voidEval( this.sMcmc );
2 26 Feb 07 jari 87       
2 26 Feb 07 jari 88       //retrieve shift
2 26 Feb 07 jari 89       double shift = rc.eval( this.sShift ).asDouble();
2 26 Feb 07 jari 90       
2 26 Feb 07 jari 91       //record the end time
2 26 Feb 07 jari 92       Calendar endCal = new GregorianCalendar();
2 26 Feb 07 jari 93       int endHour = endCal.get( Calendar.HOUR_OF_DAY );
2 26 Feb 07 jari 94       int endMin = endCal.get( Calendar.MINUTE );
2 26 Feb 07 jari 95       String endTime = endHour + ":" + endMin;
2 26 Feb 07 jari 96       
2 26 Feb 07 jari 97       //if allOut, gammas need to be averaged and qLo+qUp need to be fetched
2 26 Feb 07 jari 98       double[] qLo;
2 26 Feb 07 jari 99       double[] qUp;
2 26 Feb 07 jari 100       double[] gamma1;
2 26 Feb 07 jari 101       double[] gamma2;
2 26 Feb 07 jari 102       if( this.allOut ) {
2 26 Feb 07 jari 103         //avg gamms first
2 26 Feb 07 jari 104         this.rc.voidEval( this.sAvgGamma1 );
2 26 Feb 07 jari 105         this.rc.voidEval( this.sAvgGamma2 );
2 26 Feb 07 jari 106         
2 26 Feb 07 jari 107         //retrieve gammas
2 26 Feb 07 jari 108         gamma1 = rc.eval( "gamma1" ).asDoubleArray();
2 26 Feb 07 jari 109         gamma2 = rc.eval( "gamma2" ).asDoubleArray();
2 26 Feb 07 jari 110         
2 26 Feb 07 jari 111         //get credible intervals
2 26 Feb 07 jari 112         qLo = this.rc.eval( this.sQLo ).asDoubleArray();
2 26 Feb 07 jari 113         qUp = this.rc.eval( this.sQUp ).asDoubleArray();
2 26 Feb 07 jari 114         
2 26 Feb 07 jari 115         this.ramaResult = new RamaResult( gamma1, gamma2, 
2 26 Feb 07 jari 116             qLo, qUp, shift, startTime, endTime );
2 26 Feb 07 jari 117       } else {
2 26 Feb 07 jari 118         //retrieve gammas
2 26 Feb 07 jari 119         gamma1 = rc.eval( "gamma1" ).asDoubleArray();
2 26 Feb 07 jari 120         gamma2 = rc.eval( "gamma2" ).asDoubleArray();
2 26 Feb 07 jari 121         
2 26 Feb 07 jari 122         this.ramaResult = new RamaResult( gamma1, gamma2, shift,
2 26 Feb 07 jari 123             startTime, endTime );
2 26 Feb 07 jari 124       }
2 26 Feb 07 jari 125       
2 26 Feb 07 jari 126       this.ok = true;
2 26 Feb 07 jari 127       this.done = true;
2 26 Feb 07 jari 128     } catch ( RSrvException e ) {
2 26 Feb 07 jari 129       e.printStackTrace();
2 26 Feb 07 jari 130       this.rama.error( e.getMessage() );
2 26 Feb 07 jari 131       this.ok = false;
2 26 Feb 07 jari 132       this.done = false;
2 26 Feb 07 jari 133     } finally {
2 26 Feb 07 jari 134       this.progress.kill();
2 26 Feb 07 jari 135     }
2 26 Feb 07 jari 136     
2 26 Feb 07 jari 137     return null;
2 26 Feb 07 jari 138   }//construct
2 26 Feb 07 jari 139   
2 26 Feb 07 jari 140   
2 26 Feb 07 jari 141   public void finished() {
2 26 Feb 07 jari 142     //System.out.println( "Finished" );
2 26 Feb 07 jari 143     this.rama.fireThreadFinished( this, this.ramaResult );
2 26 Feb 07 jari 144   }
2 26 Feb 07 jari 145   
2 26 Feb 07 jari 146   
2 26 Feb 07 jari 147   
2 26 Feb 07 jari 148   public boolean isOk() {
2 26 Feb 07 jari 149     return this.ok;
2 26 Feb 07 jari 150   }
2 26 Feb 07 jari 151   public boolean isDone() {
2 26 Feb 07 jari 152     return this.done;
2 26 Feb 07 jari 153   }
2 26 Feb 07 jari 154   public boolean isAllOut() {
2 26 Feb 07 jari 155     return this.allOut;
2 26 Feb 07 jari 156   }
2 26 Feb 07 jari 157
2 26 Feb 07 jari 158 }