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

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 package org.tigr.microarray.mev.file.agilent;
2 26 Feb 07 jari 2
2 26 Feb 07 jari 3 import java.util.Hashtable;
2 26 Feb 07 jari 4 import java.util.StringTokenizer;
2 26 Feb 07 jari 5 import java.util.Vector;
2 26 Feb 07 jari 6
2 26 Feb 07 jari 7 /*
2 26 Feb 07 jari 8  * Created on Apr 7, 2004
2 26 Feb 07 jari 9  */
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 /**
2 26 Feb 07 jari 12  * Represents a single data Line of an Agilent File.
2 26 Feb 07 jari 13  * @author vu
2 26 Feb 07 jari 14  */
2 26 Feb 07 jari 15 public class Extract {
2 26 Feb 07 jari 16   private static String TAB = "\t";
2 26 Feb 07 jari 17   
2 26 Feb 07 jari 18   private String parsedLine;
2 26 Feb 07 jari 19   
2 26 Feb 07 jari 20   
2 26 Feb 07 jari 21   /**
2 26 Feb 07 jari 22    * Builds a new tab-delim data line by looking up the column data for each of the
2 26 Feb 07 jari 23    * column headers in 'aHeaders'.  Stores it in private variable 'parsedLine'.
2 26 Feb 07 jari 24    * @param headers  The Header line of the Agilent File
2 26 Feb 07 jari 25    * @param line  The Data line of the Agilent File
2 26 Feb 07 jari 26    * @param columnDef  The columns to be pulled out of the Agilent File
2 26 Feb 07 jari 27    * @param fudger  The String to be added as a "FUDGE"
2 26 Feb 07 jari 28    */
2 26 Feb 07 jari 29   public void parseLineByHeaders(String headers, String line, String columnDef, String fudger) {
2 26 Feb 07 jari 30     //System.out.println("ParsingLine()");
2 26 Feb 07 jari 31     
2 26 Feb 07 jari 32     StringBuffer sb = new StringBuffer();
2 26 Feb 07 jari 33     
2 26 Feb 07 jari 34     //get a Hashtable where the column data can be found using the Header as a key
2 26 Feb 07 jari 35     Hashtable ht = this.hashify(headers, line);
2 26 Feb 07 jari 36     
2 26 Feb 07 jari 37     //Break the columnDef into Tokens
2 26 Feb 07 jari 38     StringTokenizer st = new StringTokenizer(columnDef, Extract.TAB);
2 26 Feb 07 jari 39     
2 26 Feb 07 jari 40     //Look up each header in Hashtable, fudge if necessary
2 26 Feb 07 jari 41     while(st.hasMoreTokens()) {
2 26 Feb 07 jari 42       String header = st.nextToken();
2 26 Feb 07 jari 43       
2 26 Feb 07 jari 44       //find it
2 26 Feb 07 jari 45       String element = (String) ht.get(header);
2 26 Feb 07 jari 46       if(element == null) {
2 26 Feb 07 jari 47         //couldn't find the header, so fudge it with 'fudger'
2 26 Feb 07 jari 48         sb.append(fudger);
2 26 Feb 07 jari 49         sb.append(Extract.TAB);
2 26 Feb 07 jari 50       } else {
2 26 Feb 07 jari 51         sb.append(element);
2 26 Feb 07 jari 52         sb.append(Extract.TAB);
2 26 Feb 07 jari 53       }
2 26 Feb 07 jari 54       
2 26 Feb 07 jari 55     }//end i
2 26 Feb 07 jari 56     
2 26 Feb 07 jari 57     this.parsedLine = sb.toString();
2 26 Feb 07 jari 58   }//end parseLineByHeader()
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    * @param indices
2 26 Feb 07 jari 64    * @param line
2 26 Feb 07 jari 65    * @param fudger
2 26 Feb 07 jari 66    */
2 26 Feb 07 jari 67   public void parseLineByIndex(String indices, String line, String fudger) {
2 26 Feb 07 jari 68     StringBuffer sb = new StringBuffer();
2 26 Feb 07 jari 69     
2 26 Feb 07 jari 70     StringTokenizer stLine = new StringTokenizer(line, Extract.TAB);
2 26 Feb 07 jari 71     Vector vToken = new Vector();
2 26 Feb 07 jari 72     while(stLine.hasMoreTokens()) {
2 26 Feb 07 jari 73       String token = stLine.nextToken();
2 26 Feb 07 jari 74       vToken.add(token);
2 26 Feb 07 jari 75     }
2 26 Feb 07 jari 76     
2 26 Feb 07 jari 77     StringTokenizer stIndex = new StringTokenizer(indices, Extract.TAB);
2 26 Feb 07 jari 78     while(stIndex.hasMoreTokens()) {
2 26 Feb 07 jari 79       String token = stIndex.nextToken();
2 26 Feb 07 jari 80       if(token.equals(MeVerizer.FUDGE)) {
2 26 Feb 07 jari 81         sb.append(fudger);
2 26 Feb 07 jari 82         sb.append(Extract.TAB);
2 26 Feb 07 jari 83       } else {
2 26 Feb 07 jari 84         Integer IToken = new Integer(token);
2 26 Feb 07 jari 85         int iToken = IToken.intValue();
2 26 Feb 07 jari 86         String s = (String) vToken.elementAt(iToken);
2 26 Feb 07 jari 87         sb.append(s);
2 26 Feb 07 jari 88         sb.append(Extract.TAB);
2 26 Feb 07 jari 89       }
2 26 Feb 07 jari 90     }//end while
2 26 Feb 07 jari 91     
2 26 Feb 07 jari 92     this.parsedLine = sb.toString();
2 26 Feb 07 jari 93   }//end parseLineByIndex()
2 26 Feb 07 jari 94   
2 26 Feb 07 jari 95   
2 26 Feb 07 jari 96   /**
2 26 Feb 07 jari 97    * Creates a Hashtable where the column headers are the keys for the column data
2 26 Feb 07 jari 98    * @param headers  Tab-delimited Header line of Agilent file
2 26 Feb 07 jari 99    * @param line        Tab-delimited Data line of Agilent file
2 26 Feb 07 jari 100    * @return  
2 26 Feb 07 jari 101    */
2 26 Feb 07 jari 102   private Hashtable hashify(String headers, String line) {
2 26 Feb 07 jari 103     Hashtable htReturn = new Hashtable();
2 26 Feb 07 jari 104     
2 26 Feb 07 jari 105     StringTokenizer stLine = new StringTokenizer(line, "\t");
2 26 Feb 07 jari 106     StringTokenizer stHeader = new StringTokenizer(headers, "\t");
2 26 Feb 07 jari 107     
2 26 Feb 07 jari 108     while(stHeader.hasMoreTokens()) {
2 26 Feb 07 jari 109       String header = stHeader.nextToken();
2 26 Feb 07 jari 110       String element = stLine.nextToken();
2 26 Feb 07 jari 111       
2 26 Feb 07 jari 112       htReturn.put(header, element);
2 26 Feb 07 jari 113       //System.out.println(header + "\t" + element);
2 26 Feb 07 jari 114     }
2 26 Feb 07 jari 115     
2 26 Feb 07 jari 116     return htReturn;
2 26 Feb 07 jari 117   }
2 26 Feb 07 jari 118   
2 26 Feb 07 jari 119   
2 26 Feb 07 jari 120   /**
2 26 Feb 07 jari 121    * Get the new tab-delim data line.
2 26 Feb 07 jari 122    * @return  Returns the new tab-delim data line
2 26 Feb 07 jari 123    */
2 26 Feb 07 jari 124   public String getParsedLine() {
2 26 Feb 07 jari 125     return this.parsedLine;
2 26 Feb 07 jari 126   }
2 26 Feb 07 jari 127 }//end class