mev-4.0.01/source/org/tigr/microarray/mev/file/agilent/MeVotation.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * Created on Apr 19, 2004
2 26 Feb 07 jari 3  */
2 26 Feb 07 jari 4 package org.tigr.microarray.mev.file.agilent;
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.IOException;
2 26 Feb 07 jari 8 import java.util.Vector;
2 26 Feb 07 jari 9
2 26 Feb 07 jari 10 /**
2 26 Feb 07 jari 11  * MeVotation reads an Agilent Pattern File, parses it, and returns a tab-delim String
2 26 Feb 07 jari 12  * representing the parsed .ann file.
2 26 Feb 07 jari 13  * 
2 26 Feb 07 jari 14  * @author vu
2 26 Feb 07 jari 15  */
2 26 Feb 07 jari 16 public class MeVotation {
2 26 Feb 07 jari 17   static String TAB = "\t";
2 26 Feb 07 jari 18   static String END_LINE = "\r\n";
2 26 Feb 07 jari 19   
2 26 Feb 07 jari 20   private Vector vLine;
2 26 Feb 07 jari 21   private AgilentFile af;
2 26 Feb 07 jari 22   
2 26 Feb 07 jari 23   
2 26 Feb 07 jari 24   /**
2 26 Feb 07 jari 25    * Constructor.  Creates Reader object to read 'agilentPattern' File, replacing
2 26 Feb 07 jari 26    * blank cells with 'blankReplacement' and storing the Vector of Lines locally
2 26 Feb 07 jari 27    * @param agilentPattern  The Agilent Pattern File to be parsed
2 26 Feb 07 jari 28    * @param blankReplacement  A String to be used as a placeholder for blanks
2 26 Feb 07 jari 29    * @throws IOException  
2 26 Feb 07 jari 30    */
2 26 Feb 07 jari 31   public MeVotation() {
2 26 Feb 07 jari 32     //
2 26 Feb 07 jari 33   }//end constructor
2 26 Feb 07 jari 34   
2 26 Feb 07 jari 35   
2 26 Feb 07 jari 36   /**
2 26 Feb 07 jari 37    * Creates an AgilentFile object which does the parsing
2 26 Feb 07 jari 38    * @throws UnrecognizedPatternException  If the Pattern is an unknown format
2 26 Feb 07 jari 39    */
2 26 Feb 07 jari 40   public void parseAgilentPattern(File agilentPattern, String blankReplacement) 
2 26 Feb 07 jari 41   throws UnrecognizedPatternException, IOException  {
2 26 Feb 07 jari 42     //read the file
2 26 Feb 07 jari 43     Reader r = new Reader();
2 26 Feb 07 jari 44     r.readFile(agilentPattern);
2 26 Feb 07 jari 45     //this.vLine = r.getVNullLine(blankReplacement);
2 26 Feb 07 jari 46     this.vLine = r.getVNullLineBasedOnHeader( blankReplacement );
2 26 Feb 07 jari 47     this.af = new AgilentFile(this.vLine);
2 26 Feb 07 jari 48   }
2 26 Feb 07 jari 49   
2 26 Feb 07 jari 50   
2 26 Feb 07 jari 51   /**
2 26 Feb 07 jari 52    * Compiles a tab-delim String that can be written to a new File.  At this time
2 26 Feb 07 jari 53    * (20040419), there are only 2 types of Agilent Oligo pattern files.  There are
2 26 Feb 07 jari 54    * 8-column patterns and 9-col patterns.  The 9-col contains 1 extra column of
2 26 Feb 07 jari 55    * TopHit.
2 26 Feb 07 jari 56    * @return  Tab-delimited String representing the new .ann File to be written
2 26 Feb 07 jari 57    */
2 26 Feb 07 jari 58   public String getFileString() {
2 26 Feb 07 jari 59     StringBuffer sbReturn = new StringBuffer();
2 26 Feb 07 jari 60     
2 26 Feb 07 jari 61     Vector v = this.af.getVAgilentFeature();
2 26 Feb 07 jari 62     if(this.af.getPatternType() == AgilentFile.EIGHT_COL) {
2 26 Feb 07 jari 63       sbReturn.append("UID\tR\tC\tGeneName\tDescription\r\n");
2 26 Feb 07 jari 64       for(int i = 0; i < v.size(); i ++) {
2 26 Feb 07 jari 65         EightFeature ef = (EightFeature) v.elementAt(i);
2 26 Feb 07 jari 66         if(! ef.getControlType().equals(AgilentFeature.sIgnore)) {
2 26 Feb 07 jari 67           sbReturn.append(ef.getRefNumber());
2 26 Feb 07 jari 68           sbReturn.append(MeVotation.TAB);
2 26 Feb 07 jari 69           sbReturn.append(ef.getRow());
2 26 Feb 07 jari 70           sbReturn.append(MeVotation.TAB);
2 26 Feb 07 jari 71           sbReturn.append(ef.getCol());
2 26 Feb 07 jari 72           sbReturn.append(MeVotation.TAB);
2 26 Feb 07 jari 73           sbReturn.append(this.nullify(ef.getGeneName()));
2 26 Feb 07 jari 74           sbReturn.append(MeVotation.TAB);
2 26 Feb 07 jari 75           sbReturn.append(this.nullify(ef.getDesc()));
2 26 Feb 07 jari 76           sbReturn.append(MeVotation.END_LINE);
2 26 Feb 07 jari 77         }
2 26 Feb 07 jari 78       }//end i
2 26 Feb 07 jari 79     } else if(this.af.getPatternType() == AgilentFile.NINE_COL) {
2 26 Feb 07 jari 80       sbReturn.append("UID\tR\tC\tGeneName\tDescription\tTopHit\r\n");
2 26 Feb 07 jari 81       for(int i = 0; i < v.size(); i ++) {
2 26 Feb 07 jari 82         TopFeature tf = (TopFeature) v.elementAt(i);
2 26 Feb 07 jari 83         if(! tf.getControlType().equals(AgilentFeature.sIgnore)) {
2 26 Feb 07 jari 84           sbReturn.append(tf.getRefNumber());
2 26 Feb 07 jari 85           sbReturn.append(MeVotation.TAB);
2 26 Feb 07 jari 86           sbReturn.append(tf.getRow());
2 26 Feb 07 jari 87           sbReturn.append(MeVotation.TAB);
2 26 Feb 07 jari 88           sbReturn.append(tf.getCol());
2 26 Feb 07 jari 89           sbReturn.append(MeVotation.TAB);
2 26 Feb 07 jari 90           sbReturn.append(this.nullify(tf.getName()));
2 26 Feb 07 jari 91           sbReturn.append(MeVotation.TAB);
2 26 Feb 07 jari 92           sbReturn.append(this.nullify(tf.getDesc()));
2 26 Feb 07 jari 93           sbReturn.append(MeVotation.TAB);
2 26 Feb 07 jari 94           sbReturn.append(this.nullify(TopFeature.parseAccession(tf.getTopHit())));
2 26 Feb 07 jari 95           sbReturn.append(MeVotation.END_LINE);
2 26 Feb 07 jari 96         }
2 26 Feb 07 jari 97         
2 26 Feb 07 jari 98         if( i == 100 ) {
2 26 Feb 07 jari 99           //System.out.println(sbReturn.toString());
2 26 Feb 07 jari 100         }
2 26 Feb 07 jari 101       }//end i
2 26 Feb 07 jari 102     } else {
2 26 Feb 07 jari 103       //something really funky
2 26 Feb 07 jari 104       System.out.println("SomethingReallyFunky");
2 26 Feb 07 jari 105     }
2 26 Feb 07 jari 106     
2 26 Feb 07 jari 107     return sbReturn.toString();
2 26 Feb 07 jari 108   }
2 26 Feb 07 jari 109   
2 26 Feb 07 jari 110   
2 26 Feb 07 jari 111   private String nullify(String s) {
2 26 Feb 07 jari 112     if(s == null) {
2 26 Feb 07 jari 113       return "null";
2 26 Feb 07 jari 114     } else if(s.equals("")){
2 26 Feb 07 jari 115       return "null";
2 26 Feb 07 jari 116     } else if(s.equals("NA")) {
2 26 Feb 07 jari 117       return "null";
2 26 Feb 07 jari 118     } else {
2 26 Feb 07 jari 119       return s;
2 26 Feb 07 jari 120     }
2 26 Feb 07 jari 121   }
2 26 Feb 07 jari 122 }//end class