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

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * Created on Feb 17, 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.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
2 26 Feb 07 jari 10 import javax.swing.JFileChooser;
2 26 Feb 07 jari 11 import javax.swing.JFrame;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import org.tigr.microarray.mev.TMEV;
2 26 Feb 07 jari 14
2 26 Feb 07 jari 15 /**
2 26 Feb 07 jari 16  * @author iVu
2 26 Feb 07 jari 17  */
2 26 Feb 07 jari 18 public class RamaResult {
2 26 Feb 07 jari 19   private double[] gamma1;
2 26 Feb 07 jari 20   private double[] gamma2;
2 26 Feb 07 jari 21   private double[] qLo;
2 26 Feb 07 jari 22   private double[] qUp;
2 26 Feb 07 jari 23   
2 26 Feb 07 jari 24   private double shift;
2 26 Feb 07 jari 25   
2 26 Feb 07 jari 26   private int minIter;
2 26 Feb 07 jari 27   private int B;
2 26 Feb 07 jari 28   
2 26 Feb 07 jari 29   private boolean allOut;
2 26 Feb 07 jari 30   private boolean hasGenes;
2 26 Feb 07 jari 31   
2 26 Feb 07 jari 32   private String[] genes;
2 26 Feb 07 jari 33   
2 26 Feb 07 jari 34   private String startTime;
2 26 Feb 07 jari 35   private String endTime;
2 26 Feb 07 jari 36   
2 26 Feb 07 jari 37   
2 26 Feb 07 jari 38   public RamaResult( double[] g1, double[] g2, double[] qLoP, double[] qUpP,
2 26 Feb 07 jari 39       double shiftP, String startTimeP, String endTimeP ) {
2 26 Feb 07 jari 40     this.gamma1 = g1;
2 26 Feb 07 jari 41     this.gamma2 = g2;
2 26 Feb 07 jari 42     this.qLo = qLoP;
2 26 Feb 07 jari 43     this.qUp = qUpP;
2 26 Feb 07 jari 44     this.allOut = true;
2 26 Feb 07 jari 45     this.shift = shiftP;
2 26 Feb 07 jari 46     this.hasGenes = false;
2 26 Feb 07 jari 47     this.startTime = startTimeP;
2 26 Feb 07 jari 48     this.endTime = endTimeP;
2 26 Feb 07 jari 49   }
2 26 Feb 07 jari 50   public RamaResult( double[] g1, double[] g2, double shiftP, 
2 26 Feb 07 jari 51       String startTimeP, String endTimeP ) {
2 26 Feb 07 jari 52     this.gamma1 = g1;
2 26 Feb 07 jari 53     this.gamma2 = g2;
2 26 Feb 07 jari 54     this.allOut = false;
2 26 Feb 07 jari 55     this.shift = shiftP;
2 26 Feb 07 jari 56     this.hasGenes = false;
2 26 Feb 07 jari 57     this.startTime = startTimeP;
2 26 Feb 07 jari 58     this.endTime = endTimeP;
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      * 
2 26 Feb 07 jari 64      * @param gamma1
2 26 Feb 07 jari 65      * @param gamma2
2 26 Feb 07 jari 66      * @param genes
2 26 Feb 07 jari 67      */
2 26 Feb 07 jari 68     public void saveRamaResult( JFrame frame ) {
2 26 Feb 07 jari 69         String currentPath = TMEV.getDataPath();
2 26 Feb 07 jari 70         RamaTextFileFilter textFilter = new RamaTextFileFilter();
2 26 Feb 07 jari 71         JFileChooser chooser = new JFileChooser( currentPath );
2 26 Feb 07 jari 72         chooser.addChoosableFileFilter( textFilter );
2 26 Feb 07 jari 73         if( chooser.showSaveDialog( frame ) == JFileChooser.APPROVE_OPTION ) {
2 26 Feb 07 jari 74             File saveFile;
2 26 Feb 07 jari 75
2 26 Feb 07 jari 76             if( chooser.getFileFilter() == textFilter ) {
2 26 Feb 07 jari 77                 //make sure to add .txt
2 26 Feb 07 jari 78                 String path = chooser.getSelectedFile().getPath();
2 26 Feb 07 jari 79                 //System.out.println( "path" + path );
2 26 Feb 07 jari 80                 if( path.toLowerCase().endsWith("txt") ) {
2 26 Feb 07 jari 81                     //great, already ok
2 26 Feb 07 jari 82                     saveFile = new File(path);
2 26 Feb 07 jari 83                 } else {
2 26 Feb 07 jari 84                     //add it
2 26 Feb 07 jari 85                     String subPath;
2 26 Feb 07 jari 86                     int period = path.lastIndexOf(".txt");
2 26 Feb 07 jari 87                     //System.out.println( "period:" + period );
2 26 Feb 07 jari 88                     if( period != -1 ) {
2 26 Feb 07 jari 89                         //System.out.println("period found");
2 26 Feb 07 jari 90                         subPath = path.substring(0, period);
2 26 Feb 07 jari 91                     } else {
2 26 Feb 07 jari 92                         //System.out.println("period not found");
2 26 Feb 07 jari 93                         subPath = path;
2 26 Feb 07 jari 94                     }
2 26 Feb 07 jari 95                     String newPath = subPath + ".txt";
2 26 Feb 07 jari 96                     //System.out.println( "newPath:" + newPath );
2 26 Feb 07 jari 97                     saveFile = new File(newPath);
2 26 Feb 07 jari 98                 }
2 26 Feb 07 jari 99             } else {
2 26 Feb 07 jari 100                 saveFile = chooser.getSelectedFile();
2 26 Feb 07 jari 101             }
2 26 Feb 07 jari 102             StringBuffer sb = new StringBuffer();
2 26 Feb 07 jari 103             if( this.hasGenes ) {
2 26 Feb 07 jari 104               sb.append( "GeneName" );
2 26 Feb 07 jari 105             }
2 26 Feb 07 jari 106             if( allOut ) {
2 26 Feb 07 jari 107               sb.append( Rama.TAB );
2 26 Feb 07 jari 108               sb.append( "qLow" );
2 26 Feb 07 jari 109               sb.append( Rama.TAB );
2 26 Feb 07 jari 110               sb.append( "qUp" );
2 26 Feb 07 jari 111             }
2 26 Feb 07 jari 112             sb.append( Rama.TAB );
2 26 Feb 07 jari 113             sb.append( "IntensityA" );
2 26 Feb 07 jari 114             sb.append( Rama.TAB );
2 26 Feb 07 jari 115             sb.append( "IntensityB" );
2 26 Feb 07 jari 116             sb.append( Rama.END_LINE );
2 26 Feb 07 jari 117             
2 26 Feb 07 jari 118             for( int i = 0; i < this.gamma1.length; i++ ) {
2 26 Feb 07 jari 119               if( allOut ) {
2 26 Feb 07 jari 120                 sb.append( this.qLo[ i ] );
2 26 Feb 07 jari 121                 sb.append( Rama.TAB );
2 26 Feb 07 jari 122                 sb.append( this.qUp[ i ] );
2 26 Feb 07 jari 123                 sb.append( Rama.TAB );
2 26 Feb 07 jari 124               }
2 26 Feb 07 jari 125               if( this.hasGenes ) {
2 26 Feb 07 jari 126                 sb.append( this.genes[ i ] );
2 26 Feb 07 jari 127               }
2 26 Feb 07 jari 128                 sb.append( Rama.TAB );
2 26 Feb 07 jari 129               sb.append( this.gamma1[ i ] );
2 26 Feb 07 jari 130                 sb.append( Rama.TAB );
2 26 Feb 07 jari 131               sb.append( this.gamma2[ i ] );
2 26 Feb 07 jari 132         sb.append( Rama.END_LINE );
2 26 Feb 07 jari 133             }
2 26 Feb 07 jari 134             
2 26 Feb 07 jari 135             this.writeFile(saveFile, sb.toString());
2 26 Feb 07 jari 136         } else {
2 26 Feb 07 jari 137             //System.out.println("User cancelled Gene List Save");
2 26 Feb 07 jari 138         }
2 26 Feb 07 jari 139     }//onSaveGeneList()
2 26 Feb 07 jari 140
2 26 Feb 07 jari 141
2 26 Feb 07 jari 142     /**
2 26 Feb 07 jari 143      * Write the String s to File f
2 26 Feb 07 jari 144      * 
2 26 Feb 07 jari 145      * @param f
2 26 Feb 07 jari 146      * @param s
2 26 Feb 07 jari 147      */
2 26 Feb 07 jari 148     private void writeFile(File f, String s) {
2 26 Feb 07 jari 149         try {
2 26 Feb 07 jari 150             FileWriter fw = new FileWriter(f);
2 26 Feb 07 jari 151             fw.write(s);
2 26 Feb 07 jari 152             fw.flush();
2 26 Feb 07 jari 153             fw.close();
2 26 Feb 07 jari 154         } catch( IOException e ) {
2 26 Feb 07 jari 155             e.printStackTrace();
2 26 Feb 07 jari 156         }
2 26 Feb 07 jari 157     }//writeFile()
2 26 Feb 07 jari 158   
2 26 Feb 07 jari 159   
2 26 Feb 07 jari 160     public void setGenes( String[] genesP ) {
2 26 Feb 07 jari 161       this.genes = genesP;
2 26 Feb 07 jari 162       if( genesP != null && genesP.length == this.gamma1.length ) {
2 26 Feb 07 jari 163         this.hasGenes = true;
2 26 Feb 07 jari 164       } else {
2 26 Feb 07 jari 165         this.hasGenes = false;
2 26 Feb 07 jari 166       }
2 26 Feb 07 jari 167     }
2 26 Feb 07 jari 168     public void setB( int BP ) {
2 26 Feb 07 jari 169       this.B = BP;
2 26 Feb 07 jari 170     }
2 26 Feb 07 jari 171     public void setMinIter( int minIterP ) {
2 26 Feb 07 jari 172       this.minIter = minIterP;
2 26 Feb 07 jari 173     }
2 26 Feb 07 jari 174     
2 26 Feb 07 jari 175     
2 26 Feb 07 jari 176     public int getB() { 
2 26 Feb 07 jari 177       return this.B;
2 26 Feb 07 jari 178     }
2 26 Feb 07 jari 179     public int getMinIter() {
2 26 Feb 07 jari 180       return this.minIter;
2 26 Feb 07 jari 181     }
2 26 Feb 07 jari 182   public double[] getGamma1() {
2 26 Feb 07 jari 183     return this.gamma1;
2 26 Feb 07 jari 184   }
2 26 Feb 07 jari 185   public double[] getGamma2() { 
2 26 Feb 07 jari 186     return this.gamma2;
2 26 Feb 07 jari 187   }
2 26 Feb 07 jari 188   public double[] getQLo() {
2 26 Feb 07 jari 189     return this.qLo;
2 26 Feb 07 jari 190   }
2 26 Feb 07 jari 191   public double[] getQUp() {
2 26 Feb 07 jari 192     return this.qUp;
2 26 Feb 07 jari 193   }
2 26 Feb 07 jari 194   public String[] getGenes() {
2 26 Feb 07 jari 195     return this.genes;
2 26 Feb 07 jari 196   }
2 26 Feb 07 jari 197   public double getShift() {
2 26 Feb 07 jari 198     return this.shift;
2 26 Feb 07 jari 199   }
2 26 Feb 07 jari 200   public String getStartTime() {
2 26 Feb 07 jari 201     return this.startTime;
2 26 Feb 07 jari 202   }
2 26 Feb 07 jari 203   public String getEndTime() {
2 26 Feb 07 jari 204     return this.endTime;
2 26 Feb 07 jari 205   }
2 26 Feb 07 jari 206   public String[] getResultHeader() {
2 26 Feb 07 jari 207     String[] toReturn;
2 26 Feb 07 jari 208     
2 26 Feb 07 jari 209     int iCol;
2 26 Feb 07 jari 210     if( this.allOut && this.hasGenes ) {
2 26 Feb 07 jari 211       toReturn = new String[ 5 ];
2 26 Feb 07 jari 212       toReturn[ 0 ] = "GeneName";
2 26 Feb 07 jari 213       toReturn[ 1 ] = "qLo";
2 26 Feb 07 jari 214       toReturn[ 2 ] = "qUp";
2 26 Feb 07 jari 215       toReturn[ 3 ] = "Gamma1";
2 26 Feb 07 jari 216       toReturn[ 4 ] = "Gamma2";
2 26 Feb 07 jari 217     } else if( this.allOut && !this.hasGenes ) {
2 26 Feb 07 jari 218       toReturn = new String[ 4 ];
2 26 Feb 07 jari 219       toReturn[ 0 ] = "qLo";
2 26 Feb 07 jari 220       toReturn[ 1 ] = "qUp";
2 26 Feb 07 jari 221       toReturn[ 2 ] = "Gamma1";
2 26 Feb 07 jari 222       toReturn[ 3 ] = "Gamma2";
2 26 Feb 07 jari 223     } else if( !this.allOut && this.hasGenes ) {
2 26 Feb 07 jari 224       toReturn = new String[ 3 ];
2 26 Feb 07 jari 225       toReturn[ 0 ] = "GeneName";
2 26 Feb 07 jari 226       toReturn[ 1 ] = "Gamma1";
2 26 Feb 07 jari 227       toReturn[ 2 ] = "Gamma2";
2 26 Feb 07 jari 228     } else {
2 26 Feb 07 jari 229       toReturn = new String[ 2 ];
2 26 Feb 07 jari 230       toReturn[ 0 ] = "Gamma1";
2 26 Feb 07 jari 231       toReturn[ 1 ] = "Gamma2";
2 26 Feb 07 jari 232     }
2 26 Feb 07 jari 233     
2 26 Feb 07 jari 234     return toReturn;
2 26 Feb 07 jari 235   }//getResultHeader();
2 26 Feb 07 jari 236   public Object[][] getResultTable() {
2 26 Feb 07 jari 237     int iCol;
2 26 Feb 07 jari 238     if( this.allOut && this.hasGenes ) {
2 26 Feb 07 jari 239       iCol = 5;
2 26 Feb 07 jari 240     } else if( this.allOut && !this.hasGenes ) {
2 26 Feb 07 jari 241       iCol = 4;
2 26 Feb 07 jari 242     } else if( !this.allOut && this.hasGenes ) {
2 26 Feb 07 jari 243       iCol = 3;
2 26 Feb 07 jari 244     } else {
2 26 Feb 07 jari 245       iCol = 2;
2 26 Feb 07 jari 246     }
2 26 Feb 07 jari 247     
2 26 Feb 07 jari 248     Object[][] toReturn = new Object[ this.gamma1.length ][ iCol ];
2 26 Feb 07 jari 249     for( int i = 0; i < this.gamma1.length; i ++ ) {
2 26 Feb 07 jari 250       int jIndex = 0;
2 26 Feb 07 jari 251       
2 26 Feb 07 jari 252       if( this.hasGenes ) {
2 26 Feb 07 jari 253         toReturn[ i ][ jIndex ] = this.genes[ i ];
2 26 Feb 07 jari 254         jIndex ++;
2 26 Feb 07 jari 255       }
2 26 Feb 07 jari 256       if( this.allOut ) {
2 26 Feb 07 jari 257         toReturn[ i ][ jIndex ] = Double.toString( this.qLo[ i ] );
2 26 Feb 07 jari 258         jIndex ++;
2 26 Feb 07 jari 259         toReturn[ i ][ jIndex ] = Double.toString( this.qUp[ i ] );
2 26 Feb 07 jari 260         jIndex ++;
2 26 Feb 07 jari 261       }
2 26 Feb 07 jari 262       toReturn[ i ][ jIndex ] = Double.toString( this.gamma1[ i ] );
2 26 Feb 07 jari 263       jIndex ++;
2 26 Feb 07 jari 264       toReturn[ i ][ jIndex ] = Double.toString( this.gamma2[ i ] );
2 26 Feb 07 jari 265       jIndex ++;
2 26 Feb 07 jari 266     }
2 26 Feb 07 jari 267     
2 26 Feb 07 jari 268     return toReturn;
2 26 Feb 07 jari 269   }//getResultTable();
2 26 Feb 07 jari 270 }