2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
* 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 |
* MeVotation reads an Agilent Pattern File, parses it, and returns a tab-delim String |
2 |
26 Feb 07 |
jari |
* representing the parsed .ann file. |
2 |
26 Feb 07 |
jari |
13 |
* |
2 |
26 Feb 07 |
jari |
* @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 |
* Constructor. Creates Reader object to read 'agilentPattern' File, replacing |
2 |
26 Feb 07 |
jari |
* blank cells with 'blankReplacement' and storing the Vector of Lines locally |
2 |
26 Feb 07 |
jari |
* @param agilentPattern The Agilent Pattern File to be parsed |
2 |
26 Feb 07 |
jari |
* @param blankReplacement A String to be used as a placeholder for blanks |
2 |
26 Feb 07 |
jari |
* @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 |
* Creates an AgilentFile object which does the parsing |
2 |
26 Feb 07 |
jari |
* @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 |
//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 |
//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 |
* Compiles a tab-delim String that can be written to a new File. At this time |
2 |
26 Feb 07 |
jari |
* (20040419), there are only 2 types of Agilent Oligo pattern files. There are |
2 |
26 Feb 07 |
jari |
* 8-column patterns and 9-col patterns. The 9-col contains 1 extra column of |
2 |
26 Feb 07 |
jari |
* TopHit. |
2 |
26 Feb 07 |
jari |
* @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 |
//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 |
//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 |