2 |
26 Feb 07 |
jari |
1 |
package org.tigr.microarray.mev.file; |
2 |
26 Feb 07 |
jari |
2 |
|
2 |
26 Feb 07 |
jari |
3 |
/** |
2 |
26 Feb 07 |
jari |
* <p>Title: GenepixFileParser</p> |
2 |
26 Feb 07 |
jari |
* <p>Description: Read a GenePix file, convert to TIGR tav file format, and |
2 |
26 Feb 07 |
jari |
* provide it as an output. |
2 |
26 Feb 07 |
jari |
* <br><br> The constructors receive GenePix file or file name. If using thread to |
2 |
26 Feb 07 |
jari |
* load the file, provide true to the constructor. It should call isCompleted() |
2 |
26 Feb 07 |
jari |
* method to check if the complement of loading before calling getTavFile() to |
2 |
26 Feb 07 |
jari |
* have the output. The output is in a form of vector that contains a number |
2 |
26 Feb 07 |
jari |
* of vector with 8 elements as following: |
2 |
26 Feb 07 |
jari |
* <table boarder=0, cellpadding=1> |
2 |
26 Feb 07 |
jari |
* <tr><th>Index</th><th>Data Type</th><th>Contents</th></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>1</td><td>Integer</td><td>Intensity of Channel A</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>2</td><td>Integer</td><td>Intensity of Channel B</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>3</td><td>Integer</td><td>Slide Row</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>4</td><td>Integer</td><td>Slide Column</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>5</td><td>Integer</td><td>Meta Row</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>6</td><td>Integer</td><td>Meta Column</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>7</td><td>String</td><td>Name (in GenePix File)</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>8</td><td>String</td><td>ID (in GenePix File)</td></tr> |
2 |
26 Feb 07 |
jari |
* </table> |
2 |
26 Feb 07 |
jari |
* </p> |
2 |
26 Feb 07 |
jari |
* <p>Copyright: Copyright (c) 2003</p> |
2 |
26 Feb 07 |
jari |
* <p>Company: The Institute for Genomic Research</p> |
2 |
26 Feb 07 |
jari |
* @author Jianwei (Jerry) Li |
2 |
26 Feb 07 |
jari |
* @version 1.0 |
2 |
26 Feb 07 |
jari |
28 |
*/ |
2 |
26 Feb 07 |
jari |
29 |
|
2 |
26 Feb 07 |
jari |
30 |
import java.io.BufferedReader; |
2 |
26 Feb 07 |
jari |
31 |
import java.io.File; |
2 |
26 Feb 07 |
jari |
32 |
import java.io.FileInputStream; |
2 |
26 Feb 07 |
jari |
33 |
import java.io.IOException; |
2 |
26 Feb 07 |
jari |
34 |
import java.io.InputStreamReader; |
2 |
26 Feb 07 |
jari |
35 |
import java.util.StringTokenizer; |
2 |
26 Feb 07 |
jari |
36 |
import java.util.Vector; |
2 |
26 Feb 07 |
jari |
37 |
|
2 |
26 Feb 07 |
jari |
38 |
import javax.swing.JOptionPane; |
2 |
26 Feb 07 |
jari |
39 |
|
2 |
26 Feb 07 |
jari |
40 |
import org.tigr.util.StringSplitter; |
2 |
26 Feb 07 |
jari |
41 |
|
2 |
26 Feb 07 |
jari |
42 |
public class GenepixFileParser extends Thread{ |
2 |
26 Feb 07 |
jari |
43 |
|
2 |
26 Feb 07 |
jari |
44 |
private final int FIRST_NUM = 1; |
2 |
26 Feb 07 |
jari |
45 |
|
2 |
26 Feb 07 |
jari |
46 |
private final String BLOCK = "\"Block\""; |
2 |
26 Feb 07 |
jari |
47 |
private final String BLOCK_N = "Block"; |
2 |
26 Feb 07 |
jari |
48 |
private final String COLUMN = "\"Column\""; |
2 |
26 Feb 07 |
jari |
49 |
private final String COLUMN_N = "Column"; |
2 |
26 Feb 07 |
jari |
50 |
private final String F_PIX = "\"F Pixels\""; |
2 |
26 Feb 07 |
jari |
51 |
private final String F_PIX_N = "F Pixels"; |
2 |
26 Feb 07 |
jari |
52 |
private final String ID = "\"ID\""; |
2 |
26 Feb 07 |
jari |
53 |
private final String ID_N = "ID"; |
2 |
26 Feb 07 |
jari |
54 |
private final String NAME = "\"Name\""; |
2 |
26 Feb 07 |
jari |
55 |
private final String NAME_N = "Name"; |
2 |
26 Feb 07 |
jari |
56 |
private final String RW = "\"Row\""; |
2 |
26 Feb 07 |
jari |
57 |
private final String ROW_N = "Row"; |
2 |
26 Feb 07 |
jari |
58 |
private final String WAVE_KEY_1 = "ImageName"; |
2 |
26 Feb 07 |
jari |
59 |
private final String WAVE_KEY_2 = "Wavelengths"; |
2 |
26 Feb 07 |
jari |
60 |
private final String FLAGS = "\"Flags\""; |
2 |
26 Feb 07 |
jari |
61 |
private final String FLAGS_N = "Flags"; |
2 |
26 Feb 07 |
jari |
62 |
|
2 |
26 Feb 07 |
jari |
63 |
private boolean ready; // indicates if the process is completed. |
2 |
26 Feb 07 |
jari |
64 |
private boolean hasError; |
2 |
26 Feb 07 |
jari |
65 |
private File gprFile; |
2 |
26 Feb 07 |
jari |
66 |
private int taskEnd, counter; |
2 |
26 Feb 07 |
jari |
67 |
private int fPixAddr; |
2 |
26 Feb 07 |
jari |
68 |
private String errorMsg; |
2 |
26 Feb 07 |
jari |
69 |
private String chA, chB, chAn, chBn; |
2 |
26 Feb 07 |
jari |
70 |
private String chAs, chAsn, chBs, chBsn; |
2 |
26 Feb 07 |
jari |
71 |
private String bgChA, bgChB, bgChAn, bgChBn; |
2 |
26 Feb 07 |
jari |
72 |
private Vector tavFile; |
2 |
26 Feb 07 |
jari |
73 |
|
2 |
26 Feb 07 |
jari |
74 |
public GenepixFileParser() { |
2 |
26 Feb 07 |
jari |
75 |
this(new String("")); |
2 |
26 Feb 07 |
jari |
76 |
} |
2 |
26 Feb 07 |
jari |
77 |
|
2 |
26 Feb 07 |
jari |
78 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Constructor: </b> |
2 |
26 Feb 07 |
jari |
* <p><b>Parameters: </b> |
2 |
26 Feb 07 |
jari |
* <br> genepixFileName --- the name of GenePix file to be loaded.. |
2 |
26 Feb 07 |
jari |
82 |
*****************************************************************************/ |
2 |
26 Feb 07 |
jari |
83 |
public GenepixFileParser(String genepixFileName) { |
2 |
26 Feb 07 |
jari |
84 |
this(new File(genepixFileName)); |
2 |
26 Feb 07 |
jari |
85 |
} |
2 |
26 Feb 07 |
jari |
86 |
|
2 |
26 Feb 07 |
jari |
87 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Constructor: </b> |
2 |
26 Feb 07 |
jari |
* <p><b>Parameters: </b> |
2 |
26 Feb 07 |
jari |
* <br> genepixFile --- the GenePix files to be loaded. |
2 |
26 Feb 07 |
jari |
91 |
*****************************************************************************/ |
2 |
26 Feb 07 |
jari |
92 |
public GenepixFileParser(File genepixFile) { |
2 |
26 Feb 07 |
jari |
93 |
this(genepixFile, false); |
2 |
26 Feb 07 |
jari |
94 |
} |
2 |
26 Feb 07 |
jari |
95 |
|
2 |
26 Feb 07 |
jari |
96 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Constructor: </b> |
2 |
26 Feb 07 |
jari |
* <p><b>Parameters: </b> |
2 |
26 Feb 07 |
jari |
* <br> genepixFileName --- the name of GenePix file to be loaded. |
2 |
26 Feb 07 |
jari |
* <br> useThread --- true for using thread to complete the process. |
2 |
26 Feb 07 |
jari |
101 |
*****************************************************************************/ |
2 |
26 Feb 07 |
jari |
102 |
public GenepixFileParser(String genepixFileName, boolean useThread) { |
2 |
26 Feb 07 |
jari |
103 |
this(new File(genepixFileName), useThread); |
2 |
26 Feb 07 |
jari |
104 |
} |
2 |
26 Feb 07 |
jari |
105 |
|
2 |
26 Feb 07 |
jari |
106 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Constructor: </b> |
2 |
26 Feb 07 |
jari |
* <p><b>Parameters: </b> |
2 |
26 Feb 07 |
jari |
* <br> genepixFile --- the GenePix files to be loaded. |
2 |
26 Feb 07 |
jari |
* <br> useThread --- true for using thread to complete the process. |
2 |
26 Feb 07 |
jari |
111 |
*****************************************************************************/ |
2 |
26 Feb 07 |
jari |
112 |
public GenepixFileParser(File genepixFile, boolean useThread) { |
2 |
26 Feb 07 |
jari |
113 |
if(genepixFile != null){ |
2 |
26 Feb 07 |
jari |
114 |
gprFile = genepixFile; |
2 |
26 Feb 07 |
jari |
115 |
errorMsg = new String(""); |
2 |
26 Feb 07 |
jari |
116 |
ready = false; |
2 |
26 Feb 07 |
jari |
117 |
hasError = false; |
2 |
26 Feb 07 |
jari |
118 |
taskEnd = 0; |
2 |
26 Feb 07 |
jari |
119 |
if(!useThread){ |
2 |
26 Feb 07 |
jari |
120 |
startLoad(); |
2 |
26 Feb 07 |
jari |
// following codes are for testing. |
2 |
26 Feb 07 |
jari |
/* Vector test; |
2 |
26 Feb 07 |
jari |
for(int i=0; i<tavFile.size(); i++){ |
2 |
26 Feb 07 |
jari |
test = (Vector)tavFile.elementAt(i); |
2 |
26 Feb 07 |
jari |
for(int j=0; j<test.size(); j++){ |
2 |
26 Feb 07 |
jari |
if(j<6){ |
2 |
26 Feb 07 |
jari |
System.out.print((Integer)test.elementAt(j)); |
2 |
26 Feb 07 |
jari |
} else { |
2 |
26 Feb 07 |
jari |
System.out.print((String)test.elementAt(j)); |
2 |
26 Feb 07 |
jari |
130 |
} |
2 |
26 Feb 07 |
jari |
System.out.print('\t'); |
2 |
26 Feb 07 |
jari |
132 |
} |
2 |
26 Feb 07 |
jari |
System.out.print('\n'); |
2 |
26 Feb 07 |
jari |
134 |
}*/ |
2 |
26 Feb 07 |
jari |
135 |
} |
2 |
26 Feb 07 |
jari |
136 |
} |
2 |
26 Feb 07 |
jari |
137 |
} |
2 |
26 Feb 07 |
jari |
138 |
|
2 |
26 Feb 07 |
jari |
139 |
/*************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* returns the current step of the loading. |
2 |
26 Feb 07 |
jari |
142 |
**************************************************************************/ |
2 |
26 Feb 07 |
jari |
143 |
public int getCurrentStep() { return counter; } |
2 |
26 Feb 07 |
jari |
144 |
|
2 |
26 Feb 07 |
jari |
145 |
/*************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* if error occurs, calling this method to get error message. |
2 |
26 Feb 07 |
jari |
148 |
**************************************************************************/ |
2 |
26 Feb 07 |
jari |
149 |
public String getErrorMessage() { return errorMsg; } |
2 |
26 Feb 07 |
jari |
150 |
|
2 |
26 Feb 07 |
jari |
151 |
/*************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* returns the total number of the steps for completing the file loading. |
2 |
26 Feb 07 |
jari |
* Normally, this is the number of spots (rows). |
2 |
26 Feb 07 |
jari |
155 |
**************************************************************************/ |
2 |
26 Feb 07 |
jari |
156 |
public int getProgressEnd() { return taskEnd; } |
2 |
26 Feb 07 |
jari |
157 |
|
2 |
26 Feb 07 |
jari |
158 |
/*************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* returns a vector that contains a number of vector with 8 elements as |
2 |
26 Feb 07 |
jari |
* following: |
2 |
26 Feb 07 |
jari |
* <table boarder=0, cellpadding=1> |
2 |
26 Feb 07 |
jari |
* <tr><th>Index</th><th>Data Type</th><th>Contents</th></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>1</td><td>Integer</td><td>Intensity of Channel A</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>2</td><td>Integer</td><td>Intensity of Channel B</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>3</td><td>Integer</td><td>Slide Row</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>4</td><td>Integer</td><td>Slide Column</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>5</td><td>Integer</td><td>Meta Row</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>6</td><td>Integer</td><td>Meta Column</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>7</td><td>String</td><td>Name (in GenePix File)</td></tr> |
2 |
26 Feb 07 |
jari |
* <tr><td>8</td><td>String</td><td>ID (in GenePix File)</td></tr> |
2 |
26 Feb 07 |
jari |
* </table> |
2 |
26 Feb 07 |
jari |
* <b>Note: </b> Before calling this method, isCompleted() should be called |
2 |
26 Feb 07 |
jari |
* to ensure the loading is completed. |
2 |
26 Feb 07 |
jari |
175 |
**************************************************************************/ |
2 |
26 Feb 07 |
jari |
176 |
public Vector getTavFile() { return tavFile; } |
2 |
26 Feb 07 |
jari |
177 |
|
2 |
26 Feb 07 |
jari |
178 |
/*************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* return ture if there is an error during the loading; otherwise, false. |
2 |
26 Feb 07 |
jari |
181 |
**************************************************************************/ |
2 |
26 Feb 07 |
jari |
182 |
public boolean hasError() { return hasError; } |
2 |
26 Feb 07 |
jari |
183 |
|
2 |
26 Feb 07 |
jari |
184 |
/*************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* return ture if the loading is done; otherwise, false. |
2 |
26 Feb 07 |
jari |
187 |
**************************************************************************/ |
2 |
26 Feb 07 |
jari |
188 |
public boolean isCompleted() { return ready; } |
2 |
26 Feb 07 |
jari |
189 |
|
2 |
26 Feb 07 |
jari |
190 |
/*************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* overrides an abstract method to implement the main function of class. |
2 |
26 Feb 07 |
jari |
193 |
**************************************************************************/ |
2 |
26 Feb 07 |
jari |
194 |
public void run () { |
2 |
26 Feb 07 |
jari |
195 |
startLoad(); |
2 |
26 Feb 07 |
jari |
196 |
} |
2 |
26 Feb 07 |
jari |
197 |
|
2 |
26 Feb 07 |
jari |
198 |
public static void main(String[] args) { |
2 |
26 Feb 07 |
jari |
199 |
if(args != null){ |
2 |
26 Feb 07 |
jari |
200 |
GenepixFileParser genepixFileLoader1 = new GenepixFileParser(args[0]); |
2 |
26 Feb 07 |
jari |
201 |
} else { |
2 |
26 Feb 07 |
jari |
202 |
GenepixFileParser genepixFileLoader1 = new GenepixFileParser(); |
2 |
26 Feb 07 |
jari |
203 |
} |
2 |
26 Feb 07 |
jari |
204 |
} |
2 |
26 Feb 07 |
jari |
205 |
|
2 |
26 Feb 07 |
jari |
206 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* calculate density for a channel |
2 |
26 Feb 07 |
jari |
* <p><b>Parameters: </b> |
2 |
26 Feb 07 |
jari |
* <br> tuple -- all information in one row |
2 |
26 Feb 07 |
jari |
* <br> med -- address for either channel A or B median column |
2 |
26 Feb 07 |
jari |
* <br> area -- spot area in number of pixels |
2 |
26 Feb 07 |
jari |
* <br> backg -- address for background medien column |
2 |
26 Feb 07 |
jari |
* <p><b>Return: </b> the density |
2 |
26 Feb 07 |
jari |
215 |
***************************************************************************/ |
2 |
26 Feb 07 |
jari |
216 |
private String calculateDensity(String[] tuple, int med, int sat, int backg){ |
2 |
26 Feb 07 |
jari |
217 |
float fMedian, bMedian, fPix, bPix, fSat; |
2 |
26 Feb 07 |
jari |
218 |
int temp; |
2 |
26 Feb 07 |
jari |
219 |
String den = new String(""); |
2 |
26 Feb 07 |
jari |
220 |
fMedian = Float.parseFloat(tuple[med]); |
2 |
26 Feb 07 |
jari |
221 |
bMedian = Float.parseFloat(tuple[backg]); |
2 |
26 Feb 07 |
jari |
//temp = (int)((fMedian - bMedian) * area); |
2 |
26 Feb 07 |
jari |
223 |
|
2 |
26 Feb 07 |
jari |
224 |
fPix = Float.parseFloat(tuple[fPixAddr]); |
2 |
26 Feb 07 |
jari |
225 |
fSat = Float.parseFloat(tuple[sat]); |
2 |
26 Feb 07 |
jari |
226 |
fSat = fSat / 100; |
2 |
26 Feb 07 |
jari |
227 |
temp = (int)(fPix * (fMedian - bMedian) * ( 1 - fSat)); |
2 |
26 Feb 07 |
jari |
//temp = (fPix * (fMedian - bMedian) * ( 1 - fSat)); |
2 |
26 Feb 07 |
jari |
229 |
|
2 |
26 Feb 07 |
jari |
230 |
den += temp; |
2 |
26 Feb 07 |
jari |
231 |
return den; |
2 |
26 Feb 07 |
jari |
232 |
} |
2 |
26 Feb 07 |
jari |
233 |
|
2 |
26 Feb 07 |
jari |
234 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* assignes values to the keys for searching right columns. |
2 |
26 Feb 07 |
jari |
* <p><b>Parameter: </b> |
2 |
26 Feb 07 |
jari |
* <br> wvs --- the wave lenghts. |
2 |
26 Feb 07 |
jari |
239 |
***************************************************************************/ |
2 |
26 Feb 07 |
jari |
240 |
private void defineKeys(String[] wvs) { |
2 |
26 Feb 07 |
jari |
241 |
chA = new String("\"F" + wvs[0] + " Median\""); |
2 |
26 Feb 07 |
jari |
242 |
chB = new String("\"F" + wvs[1] + " Median\""); |
2 |
26 Feb 07 |
jari |
243 |
chAs = new String("\"F" + wvs[0] + " % Sat.\""); |
2 |
26 Feb 07 |
jari |
244 |
chBs = new String("\"F" + wvs[1] + " % Sat.\""); |
2 |
26 Feb 07 |
jari |
245 |
bgChA = new String("\"B" + wvs[0] + " Median\""); |
2 |
26 Feb 07 |
jari |
246 |
bgChB = new String("\"B" + wvs[1] + " Median\""); |
2 |
26 Feb 07 |
jari |
247 |
|
2 |
26 Feb 07 |
jari |
248 |
chAn = new String("F" + wvs[0] + " Median"); |
2 |
26 Feb 07 |
jari |
249 |
chBn = new String("F" + wvs[1] + " Median"); |
2 |
26 Feb 07 |
jari |
250 |
chAsn = new String("F" + wvs[0] + " % Sat."); |
2 |
26 Feb 07 |
jari |
251 |
chBsn = new String("F" + wvs[1] + " % Sat."); |
2 |
26 Feb 07 |
jari |
252 |
bgChAn = new String("B" + wvs[0] + " Median"); |
2 |
26 Feb 07 |
jari |
253 |
bgChBn = new String("B" + wvs[1] + " Median"); |
2 |
26 Feb 07 |
jari |
254 |
} |
2 |
26 Feb 07 |
jari |
255 |
|
2 |
26 Feb 07 |
jari |
256 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* find the address of the column that is interested. |
2 |
26 Feb 07 |
jari |
* <p><b>Parameters: </b> |
2 |
26 Feb 07 |
jari |
* <br> str -- a line of the file |
2 |
26 Feb 07 |
jari |
* <br> key -- column name to be searched |
2 |
26 Feb 07 |
jari |
* <br> noQuato -- column name withouth quato. |
2 |
26 Feb 07 |
jari |
* <P><b>Return: </b> the index of the column |
2 |
26 Feb 07 |
jari |
264 |
****************************************************************************/ |
2 |
26 Feb 07 |
jari |
265 |
private int findRightCol(String str[], String key, String noQuato){ |
2 |
26 Feb 07 |
jari |
266 |
int addr = 0; |
2 |
26 Feb 07 |
jari |
267 |
int size = str.length; |
2 |
26 Feb 07 |
jari |
268 |
int i; |
2 |
26 Feb 07 |
jari |
269 |
String temp = new String(""); |
2 |
26 Feb 07 |
jari |
270 |
|
2 |
26 Feb 07 |
jari |
271 |
for(i=0; i<str.length; i++){ |
2 |
26 Feb 07 |
jari |
272 |
if(str[i].equalsIgnoreCase(key) || str[i].equalsIgnoreCase(noQuato)){ |
2 |
26 Feb 07 |
jari |
273 |
addr = i; |
2 |
26 Feb 07 |
jari |
274 |
i = str.length; |
2 |
26 Feb 07 |
jari |
275 |
} |
2 |
26 Feb 07 |
jari |
276 |
} |
2 |
26 Feb 07 |
jari |
277 |
return addr; |
2 |
26 Feb 07 |
jari |
278 |
} |
2 |
26 Feb 07 |
jari |
279 |
|
2 |
26 Feb 07 |
jari |
280 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* find the wave lengths from the header information |
2 |
26 Feb 07 |
jari |
* <p><b>Parameters: </b> |
2 |
26 Feb 07 |
jari |
* <br> str -- a line of the file that contains wave lengths. |
2 |
26 Feb 07 |
jari |
* <P><b>Return: </b> the wave lengths as an array. |
2 |
26 Feb 07 |
jari |
286 |
****************************************************************************/ |
2 |
26 Feb 07 |
jari |
287 |
private String[] getWaveLengths(String str){ |
2 |
26 Feb 07 |
jari |
288 |
int num; |
2 |
26 Feb 07 |
jari |
289 |
String wv; |
2 |
26 Feb 07 |
jari |
290 |
String tempWave[] = new String[2]; |
2 |
26 Feb 07 |
jari |
291 |
String wavStr = new String(str.substring(str.indexOf('=')+1, str.lastIndexOf('\"'))); |
2 |
26 Feb 07 |
jari |
292 |
StringTokenizer token = new StringTokenizer(wavStr); |
2 |
26 Feb 07 |
jari |
293 |
|
2 |
26 Feb 07 |
jari |
294 |
num = 0; |
2 |
26 Feb 07 |
jari |
295 |
while(token.hasMoreTokens()){ |
2 |
26 Feb 07 |
jari |
296 |
wv = token.nextToken(); |
2 |
26 Feb 07 |
jari |
297 |
if(isNumber(wv)){ |
2 |
26 Feb 07 |
jari |
298 |
tempWave[num] = new String(wv); |
2 |
26 Feb 07 |
jari |
299 |
num++; |
2 |
26 Feb 07 |
jari |
300 |
} |
2 |
26 Feb 07 |
jari |
301 |
} |
2 |
26 Feb 07 |
jari |
302 |
return tempWave; |
2 |
26 Feb 07 |
jari |
303 |
} |
2 |
26 Feb 07 |
jari |
304 |
|
2 |
26 Feb 07 |
jari |
305 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
*<b>Description: </b> |
2 |
26 Feb 07 |
jari |
* check if a parameter is a character. |
2 |
26 Feb 07 |
jari |
*<p><b>Parameter: </b> |
2 |
26 Feb 07 |
jari |
*<br> x --- the input to be checked. |
2 |
26 Feb 07 |
jari |
*<p><b>Return: </b> true if the input is a character; otherwise, false. |
2 |
26 Feb 07 |
jari |
311 |
****************************************************************************/ |
2 |
26 Feb 07 |
jari |
312 |
private boolean isChar(char x){ |
2 |
26 Feb 07 |
jari |
313 |
boolean b = true; |
2 |
26 Feb 07 |
jari |
314 |
|
2 |
26 Feb 07 |
jari |
315 |
switch(x) { |
2 |
26 Feb 07 |
jari |
316 |
case '1': case '2': case '3': case '4': case '5': case '6': case '7': |
2 |
26 Feb 07 |
jari |
317 |
case '8': case '9': case '0': |
2 |
26 Feb 07 |
jari |
318 |
b = false; |
2 |
26 Feb 07 |
jari |
319 |
break; |
2 |
26 Feb 07 |
jari |
320 |
|
2 |
26 Feb 07 |
jari |
321 |
default: b = true; |
2 |
26 Feb 07 |
jari |
322 |
} |
2 |
26 Feb 07 |
jari |
323 |
return b; |
2 |
26 Feb 07 |
jari |
324 |
} |
2 |
26 Feb 07 |
jari |
325 |
|
2 |
26 Feb 07 |
jari |
326 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
*<b>Description: </b> |
2 |
26 Feb 07 |
jari |
* check if a input string is a number. |
2 |
26 Feb 07 |
jari |
*<p><b>Parameter: </b> |
2 |
26 Feb 07 |
jari |
*<br> x --- the input to be checked. |
2 |
26 Feb 07 |
jari |
*<p><b>Return: </b> true if the input is a character; otherwise, false. |
2 |
26 Feb 07 |
jari |
332 |
****************************************************************************/ |
2 |
26 Feb 07 |
jari |
333 |
private boolean isNumber(String x){ |
2 |
26 Feb 07 |
jari |
334 |
boolean b = true; |
2 |
26 Feb 07 |
jari |
335 |
int length = x.length(); |
2 |
26 Feb 07 |
jari |
336 |
|
2 |
26 Feb 07 |
jari |
337 |
for(int i=0; i<length; i++){ |
2 |
26 Feb 07 |
jari |
338 |
if(isChar(x.charAt(i))){ |
2 |
26 Feb 07 |
jari |
339 |
b = false; |
2 |
26 Feb 07 |
jari |
340 |
i = length; |
2 |
26 Feb 07 |
jari |
341 |
} |
2 |
26 Feb 07 |
jari |
342 |
} |
2 |
26 Feb 07 |
jari |
343 |
return b; |
2 |
26 Feb 07 |
jari |
344 |
} |
2 |
26 Feb 07 |
jari |
345 |
|
2 |
26 Feb 07 |
jari |
346 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
*<b>Description: </b> |
2 |
26 Feb 07 |
jari |
* check if a string contains wave length information. |
2 |
26 Feb 07 |
jari |
*<p><b>Parameter: </b> |
2 |
26 Feb 07 |
jari |
*<br> str --- the input to be checked. |
2 |
26 Feb 07 |
jari |
*<p><b>Return: </b> true if the input contains the info; otherwise, false. |
2 |
26 Feb 07 |
jari |
352 |
****************************************************************************/ |
2 |
26 Feb 07 |
jari |
353 |
private boolean isWaveLengthDefination(String str){ |
2 |
26 Feb 07 |
jari |
354 |
String temp = str; |
2 |
26 Feb 07 |
jari |
355 |
if(temp.charAt(0) == '\"' && temp.indexOf('=') > 0){ |
2 |
26 Feb 07 |
jari |
356 |
temp = temp.substring(1, temp.indexOf('=')); |
2 |
26 Feb 07 |
jari |
357 |
if(temp.equalsIgnoreCase(WAVE_KEY_1) || temp.equalsIgnoreCase(WAVE_KEY_2)){ |
2 |
26 Feb 07 |
jari |
358 |
return true; |
2 |
26 Feb 07 |
jari |
359 |
} else { |
2 |
26 Feb 07 |
jari |
360 |
return false; |
2 |
26 Feb 07 |
jari |
361 |
} |
2 |
26 Feb 07 |
jari |
362 |
} else { |
2 |
26 Feb 07 |
jari |
363 |
return false; |
2 |
26 Feb 07 |
jari |
364 |
} |
2 |
26 Feb 07 |
jari |
365 |
} |
2 |
26 Feb 07 |
jari |
366 |
|
2 |
26 Feb 07 |
jari |
367 |
/*************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* reads the genepix file into a vector; each line in the file is an element |
2 |
26 Feb 07 |
jari |
* in the vector. |
2 |
26 Feb 07 |
jari |
* <p>Return: </b> the contents of genepix file. |
2 |
26 Feb 07 |
jari |
372 |
***************************************************************************/ |
2 |
26 Feb 07 |
jari |
373 |
private Vector readGenePixFile(){ |
2 |
26 Feb 07 |
jari |
374 |
FileInputStream fileInput; |
2 |
26 Feb 07 |
jari |
375 |
BufferedReader buf = null; |
2 |
26 Feb 07 |
jari |
376 |
Vector temp = new Vector(2000, 500); |
2 |
26 Feb 07 |
jari |
377 |
String aLine = new String(""); |
2 |
26 Feb 07 |
jari |
378 |
|
2 |
26 Feb 07 |
jari |
379 |
try{ |
2 |
26 Feb 07 |
jari |
380 |
fileInput = new FileInputStream(gprFile); |
2 |
26 Feb 07 |
jari |
381 |
buf = new BufferedReader(new InputStreamReader (fileInput)); |
2 |
26 Feb 07 |
jari |
382 |
} catch (IOException ex){ |
2 |
26 Feb 07 |
jari |
383 |
hasError = true; |
2 |
26 Feb 07 |
jari |
384 |
errorMsg = "Failed to open " + gprFile.getName() + ": " + ex.getMessage(); |
2 |
26 Feb 07 |
jari |
385 |
return temp; |
2 |
26 Feb 07 |
jari |
386 |
} |
2 |
26 Feb 07 |
jari |
387 |
|
2 |
26 Feb 07 |
jari |
388 |
while(true) { |
2 |
26 Feb 07 |
jari |
389 |
try { |
2 |
26 Feb 07 |
jari |
390 |
aLine = buf.readLine(); |
2 |
26 Feb 07 |
jari |
391 |
if(aLine == null) break; |
2 |
26 Feb 07 |
jari |
392 |
temp.add(aLine); |
2 |
26 Feb 07 |
jari |
393 |
} catch (IOException e) { |
2 |
26 Feb 07 |
jari |
394 |
hasError = true; |
2 |
26 Feb 07 |
jari |
395 |
errorMsg = "Failed to read " + gprFile.getName() + ": " + e.getMessage(); |
2 |
26 Feb 07 |
jari |
396 |
temp.removeAllElements(); |
2 |
26 Feb 07 |
jari |
397 |
return temp; |
2 |
26 Feb 07 |
jari |
398 |
} |
2 |
26 Feb 07 |
jari |
399 |
} |
2 |
26 Feb 07 |
jari |
400 |
return temp; |
2 |
26 Feb 07 |
jari |
401 |
} |
2 |
26 Feb 07 |
jari |
402 |
|
2 |
26 Feb 07 |
jari |
403 |
/************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* remove the all end spaces from a string, if it contains. |
2 |
26 Feb 07 |
jari |
* <p><b>Parameter: </b> |
2 |
26 Feb 07 |
jari |
* <br> str -- the string that has multiple spaces at the end. |
2 |
26 Feb 07 |
jari |
* <p><b>Return: </b> a string without space at the end. |
2 |
26 Feb 07 |
jari |
409 |
***************************************************************************/ |
2 |
26 Feb 07 |
jari |
410 |
private String removeAllEndSpaces(String str){ |
2 |
26 Feb 07 |
jari |
411 |
String temp = new String(str); |
2 |
26 Feb 07 |
jari |
412 |
|
2 |
26 Feb 07 |
jari |
413 |
if(temp.length() > 0){ |
2 |
26 Feb 07 |
jari |
414 |
while(temp.charAt(temp.length()-1) == ' '){ |
2 |
26 Feb 07 |
jari |
415 |
temp = temp.substring(0, temp.length()-1); |
2 |
26 Feb 07 |
jari |
416 |
if(temp.length() <= 0) break; |
2 |
26 Feb 07 |
jari |
417 |
} |
2 |
26 Feb 07 |
jari |
418 |
} |
2 |
26 Feb 07 |
jari |
419 |
return temp; |
2 |
26 Feb 07 |
jari |
420 |
} |
2 |
26 Feb 07 |
jari |
421 |
|
2 |
26 Feb 07 |
jari |
422 |
/************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* remove the all head spaces from a string, if it contains. |
2 |
26 Feb 07 |
jari |
* <p><b>Parameter: </b> |
2 |
26 Feb 07 |
jari |
* <br> str -- the string that has multiple spaces at the end. |
2 |
26 Feb 07 |
jari |
* <p><b>Return: </b> a string without space at the end. |
2 |
26 Feb 07 |
jari |
428 |
***************************************************************************/ |
2 |
26 Feb 07 |
jari |
429 |
private String removeAllHeadSpaces(String str){ |
2 |
26 Feb 07 |
jari |
430 |
int length, i; |
2 |
26 Feb 07 |
jari |
431 |
boolean spc = false; |
2 |
26 Feb 07 |
jari |
432 |
String temp = new String(str); |
2 |
26 Feb 07 |
jari |
433 |
|
2 |
26 Feb 07 |
jari |
434 |
length = temp.length(); |
2 |
26 Feb 07 |
jari |
435 |
|
2 |
26 Feb 07 |
jari |
436 |
if(length > 0){ |
2 |
26 Feb 07 |
jari |
437 |
while(temp.charAt(0) == ' ') { |
2 |
26 Feb 07 |
jari |
438 |
temp = temp.substring(1); |
2 |
26 Feb 07 |
jari |
439 |
if(temp.length() <= 0) break; |
2 |
26 Feb 07 |
jari |
440 |
} |
2 |
26 Feb 07 |
jari |
441 |
} |
2 |
26 Feb 07 |
jari |
442 |
return temp; |
2 |
26 Feb 07 |
jari |
443 |
} |
2 |
26 Feb 07 |
jari |
444 |
|
2 |
26 Feb 07 |
jari |
445 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
*<b>Description: </b> |
2 |
26 Feb 07 |
jari |
* splits a string and set the elemet to an array. |
2 |
26 Feb 07 |
jari |
*<p><b>Parameter: </b> |
2 |
26 Feb 07 |
jari |
*<br> str --- the input to be splited. |
2 |
26 Feb 07 |
jari |
*<br> num --- the number of columns. |
2 |
26 Feb 07 |
jari |
*<p><b>Return: </b> the name. |
2 |
26 Feb 07 |
jari |
452 |
****************************************************************************/ |
2 |
26 Feb 07 |
jari |
453 |
private String[] separateLine(String str){ |
2 |
26 Feb 07 |
jari |
454 |
String name[]; |
2 |
26 Feb 07 |
jari |
455 |
String tempStr = new String(""); |
2 |
26 Feb 07 |
jari |
456 |
StringSplitter spliter = new StringSplitter('\t'); |
2 |
26 Feb 07 |
jari |
457 |
spliter.init(str); |
2 |
26 Feb 07 |
jari |
458 |
|
2 |
26 Feb 07 |
jari |
459 |
int num = spliter.countTokens()+1; |
2 |
26 Feb 07 |
jari |
460 |
int length = 0; |
2 |
26 Feb 07 |
jari |
461 |
|
2 |
26 Feb 07 |
jari |
462 |
name = new String[num]; |
2 |
26 Feb 07 |
jari |
463 |
if(num > 1){ |
2 |
26 Feb 07 |
jari |
464 |
while(spliter.hasMoreTokens()){ |
2 |
26 Feb 07 |
jari |
465 |
tempStr = spliter.nextToken(); |
2 |
26 Feb 07 |
jari |
466 |
tempStr = removeAllEndSpaces(tempStr); |
2 |
26 Feb 07 |
jari |
467 |
tempStr = removeAllHeadSpaces(tempStr); |
2 |
26 Feb 07 |
jari |
468 |
name[length++] = tempStr; |
2 |
26 Feb 07 |
jari |
469 |
} |
2 |
26 Feb 07 |
jari |
470 |
} |
2 |
26 Feb 07 |
jari |
471 |
return name; |
2 |
26 Feb 07 |
jari |
472 |
} |
2 |
26 Feb 07 |
jari |
473 |
|
2 |
26 Feb 07 |
jari |
474 |
|
2 |
26 Feb 07 |
jari |
475 |
/**************************************************************************** |
2 |
26 Feb 07 |
jari |
* <b>Description: </b> |
2 |
26 Feb 07 |
jari |
* starts the process to convert the file and ensure output to be ready. |
2 |
26 Feb 07 |
jari |
478 |
**************************************************************************/ |
2 |
26 Feb 07 |
jari |
479 |
private void startLoad(){ |
2 |
26 Feb 07 |
jari |
480 |
boolean going, noError; |
2 |
26 Feb 07 |
jari |
481 |
String aLine = new String(""); |
2 |
26 Feb 07 |
jari |
482 |
String densA = new String(""); |
2 |
26 Feb 07 |
jari |
483 |
String densB = new String(""); |
2 |
26 Feb 07 |
jari |
484 |
String name = new String(""); |
2 |
26 Feb 07 |
jari |
485 |
String id = new String(""); |
2 |
26 Feb 07 |
jari |
486 |
String tavFileName; |
2 |
26 Feb 07 |
jari |
487 |
String colValues[]; |
2 |
26 Feb 07 |
jari |
488 |
String colNames[]; |
2 |
26 Feb 07 |
jari |
489 |
String waves[] = new String[2]; // first for channel A and second for B. |
2 |
26 Feb 07 |
jari |
490 |
int hLines; |
2 |
26 Feb 07 |
jari |
491 |
int max = 0; |
2 |
26 Feb 07 |
jari |
492 |
int maxRow = 0; |
2 |
26 Feb 07 |
jari |
493 |
int maxCol = 0; |
2 |
26 Feb 07 |
jari |
494 |
int maxMetaCol, block, row, col, metaRow, metaCol, slideRow, slideCol; |
2 |
26 Feb 07 |
jari |
495 |
int i; |
2 |
26 Feb 07 |
jari |
496 |
int flagInt, blockIndex, colIndex, rowIndex, nameIndex, idIndex,flagIndex,flag; |
2 |
26 Feb 07 |
jari |
497 |
int f635m, b635m, f635s, f532m, f532s, b532m; |
2 |
26 Feb 07 |
jari |
498 |
int fSize; |
2 |
26 Feb 07 |
jari |
499 |
Vector gprFileContents; |
2 |
26 Feb 07 |
jari |
500 |
Vector tavLine; |
2 |
26 Feb 07 |
jari |
501 |
|
2 |
26 Feb 07 |
jari |
502 |
gprFileContents = readGenePixFile(); |
2 |
26 Feb 07 |
jari |
503 |
taskEnd = gprFileContents.size(); |
2 |
26 Feb 07 |
jari |
504 |
if(taskEnd <= 0){ |
2 |
26 Feb 07 |
jari |
505 |
return; |
2 |
26 Feb 07 |
jari |
506 |
} |
2 |
26 Feb 07 |
jari |
507 |
|
2 |
26 Feb 07 |
jari |
508 |
counter = 0; |
2 |
26 Feb 07 |
jari |
509 |
noError = true; |
2 |
26 Feb 07 |
jari |
510 |
fSize = gprFileContents.size(); |
2 |
26 Feb 07 |
jari |
511 |
|
2 |
26 Feb 07 |
jari |
// determing the number of lines for header info |
2 |
26 Feb 07 |
jari |
513 |
hLines = 0; |
2 |
26 Feb 07 |
jari |
514 |
going = true; |
2 |
26 Feb 07 |
jari |
515 |
while(going){ |
2 |
26 Feb 07 |
jari |
516 |
aLine = (String)gprFileContents.elementAt(hLines); |
2 |
26 Feb 07 |
jari |
517 |
if(aLine.charAt(0) == '"' || isChar(aLine.charAt(0))){ |
2 |
26 Feb 07 |
jari |
// scanner could use different wavelength for the two chennels |
2 |
26 Feb 07 |
jari |
519 |
if(isWaveLengthDefination(aLine)){ |
2 |
26 Feb 07 |
jari |
520 |
waves = getWaveLengths(aLine); |
2 |
26 Feb 07 |
jari |
521 |
} |
2 |
26 Feb 07 |
jari |
522 |
going = true; |
2 |
26 Feb 07 |
jari |
523 |
hLines++; |
2 |
26 Feb 07 |
jari |
524 |
} else { |
2 |
26 Feb 07 |
jari |
525 |
if(hLines == FIRST_NUM){ |
2 |
26 Feb 07 |
jari |
526 |
going = true; |
2 |
26 Feb 07 |
jari |
527 |
hLines++; |
2 |
26 Feb 07 |
jari |
528 |
} else{ |
2 |
26 Feb 07 |
jari |
529 |
going = false; |
2 |
26 Feb 07 |
jari |
530 |
} |
2 |
26 Feb 07 |
jari |
531 |
} |
2 |
26 Feb 07 |
jari |
532 |
} |
2 |
26 Feb 07 |
jari |
533 |
|
2 |
26 Feb 07 |
jari |
534 |
defineKeys(waves); |
2 |
26 Feb 07 |
jari |
535 |
aLine = (String)gprFileContents.elementAt(hLines-1); |
2 |
26 Feb 07 |
jari |
536 |
colNames = separateLine(aLine); |
2 |
26 Feb 07 |
jari |
537 |
|
2 |
26 Feb 07 |
jari |
538 |
blockIndex = findRightCol(colNames, BLOCK, BLOCK_N); |
2 |
26 Feb 07 |
jari |
539 |
colIndex = findRightCol(colNames, COLUMN, COLUMN_N); |
2 |
26 Feb 07 |
jari |
540 |
rowIndex = findRightCol(colNames, RW, ROW_N); |
2 |
26 Feb 07 |
jari |
541 |
nameIndex = findRightCol(colNames, NAME, NAME_N); |
2 |
26 Feb 07 |
jari |
542 |
idIndex = findRightCol(colNames, ID, ID_N); |
2 |
26 Feb 07 |
jari |
//wwang |
2 |
26 Feb 07 |
jari |
544 |
flagIndex=findRightCol(colNames,FLAGS , FLAGS_N); |
2 |
26 Feb 07 |
jari |
//System.out.print(flagIndex); |
2 |
26 Feb 07 |
jari |
546 |
|
2 |
26 Feb 07 |
jari |
547 |
aLine = (String)gprFileContents.elementAt(fSize-1); |
2 |
26 Feb 07 |
jari |
548 |
colValues = separateLine(aLine); |
2 |
26 Feb 07 |
jari |
549 |
|
2 |
26 Feb 07 |
jari |
550 |
if(colValues.length > 2){ |
2 |
26 Feb 07 |
jari |
551 |
max = Integer.parseInt(colValues[blockIndex]); |
2 |
26 Feb 07 |
jari |
552 |
maxCol = Integer.parseInt(colValues[colIndex]); |
2 |
26 Feb 07 |
jari |
553 |
maxRow = Integer.parseInt(colValues[rowIndex]); |
2 |
26 Feb 07 |
jari |
554 |
} else { |
2 |
26 Feb 07 |
jari |
555 |
JOptionPane.showMessageDialog(null, |
2 |
26 Feb 07 |
jari |
556 |
"You might add extra space at the end of file.\n(" + gprFile.getName() + |
2 |
26 Feb 07 |
jari |
557 |
"). \nPlease remove it and reload again.", "GenePix File Loader", |
2 |
26 Feb 07 |
jari |
558 |
JOptionPane.ERROR_MESSAGE); |
2 |
26 Feb 07 |
jari |
559 |
noError = false; |
2 |
26 Feb 07 |
jari |
560 |
} |
2 |
26 Feb 07 |
jari |
561 |
|
2 |
26 Feb 07 |
jari |
562 |
if(noError){ |
2 |
26 Feb 07 |
jari |
563 |
if(max <= 12){ |
2 |
26 Feb 07 |
jari |
564 |
maxMetaCol = 2; |
2 |
26 Feb 07 |
jari |
565 |
} else { |
2 |
26 Feb 07 |
jari |
566 |
maxMetaCol = 4; |
2 |
26 Feb 07 |
jari |
567 |
} |
2 |
26 Feb 07 |
jari |
// check if the original file has been modified. |
2 |
26 Feb 07 |
jari |
569 |
noError = true; |
2 |
26 Feb 07 |
jari |
570 |
/* |
2 |
26 Feb 07 |
jari |
if((max * maxCol * maxRow) + hLines != gprFileContents.size()){ |
2 |
26 Feb 07 |
jari |
JOptionPane.showMessageDialog(null, |
2 |
26 Feb 07 |
jari |
"You might have dropped some of your spots in the file \n(" + |
2 |
26 Feb 07 |
jari |
gprFile.getName() + ".\nThe GenePix Loader requires an original gpr file.", |
2 |
26 Feb 07 |
jari |
"GenePix File Loader", JOptionPane.ERROR_MESSAGE); |
2 |
26 Feb 07 |
jari |
noError = false; |
2 |
26 Feb 07 |
jari |
577 |
} |
2 |
26 Feb 07 |
jari |
578 |
*/ |
2 |
26 Feb 07 |
jari |
579 |
if(noError){ |
2 |
26 Feb 07 |
jari |
580 |
fPixAddr = findRightCol(colNames, F_PIX, F_PIX_N); |
2 |
26 Feb 07 |
jari |
581 |
|
2 |
26 Feb 07 |
jari |
582 |
f635m = findRightCol(colNames, chA, chAn); |
2 |
26 Feb 07 |
jari |
583 |
f635s = findRightCol(colNames, chAs, chAsn); |
2 |
26 Feb 07 |
jari |
584 |
b635m = findRightCol(colNames, bgChA, bgChAn); |
2 |
26 Feb 07 |
jari |
585 |
|
2 |
26 Feb 07 |
jari |
586 |
f532m = findRightCol(colNames, chB, chBn); |
2 |
26 Feb 07 |
jari |
587 |
f532s = findRightCol(colNames, chBs, chBsn); |
2 |
26 Feb 07 |
jari |
588 |
b532m = findRightCol(colNames, bgChB, bgChBn); |
2 |
26 Feb 07 |
jari |
//wwang |
2 |
26 Feb 07 |
jari |
590 |
flagIndex=findRightCol(colNames,FLAGS , FLAGS_N); |
2 |
26 Feb 07 |
jari |
591 |
|
2 |
26 Feb 07 |
jari |
592 |
tavFile = new Vector(fSize - hLines, (fSize - hLines)>>2); |
2 |
26 Feb 07 |
jari |
593 |
counter = hLines; |
2 |
26 Feb 07 |
jari |
594 |
|
2 |
26 Feb 07 |
jari |
595 |
for(i = hLines; i<fSize; i++){ |
2 |
26 Feb 07 |
jari |
596 |
aLine = (String)gprFileContents.elementAt(i); |
2 |
26 Feb 07 |
jari |
597 |
colValues = separateLine(aLine); |
2 |
26 Feb 07 |
jari |
598 |
|
2 |
26 Feb 07 |
jari |
599 |
block = Integer.parseInt(colValues[blockIndex]); |
2 |
26 Feb 07 |
jari |
600 |
col = Integer.parseInt(colValues[colIndex]); |
2 |
26 Feb 07 |
jari |
601 |
row = Integer.parseInt(colValues[rowIndex]); |
2 |
26 Feb 07 |
jari |
//wwang got flag value |
2 |
26 Feb 07 |
jari |
603 |
flag = Integer.parseInt(colValues[flagIndex]); |
2 |
26 Feb 07 |
jari |
//System.out.print(flag); |
2 |
26 Feb 07 |
jari |
// channel A is always for Cy3 and B for Cy3 in .tav file |
2 |
26 Feb 07 |
jari |
606 |
densA = calculateDensity(colValues, f532m, f532s, b532m); |
2 |
26 Feb 07 |
jari |
607 |
densB = calculateDensity(colValues, f635m, f635s, b635m); |
2 |
26 Feb 07 |
jari |
608 |
metaRow = ((block -1) / maxMetaCol) + 1; |
2 |
26 Feb 07 |
jari |
609 |
metaCol = ((block -1) % maxMetaCol) + 1; |
2 |
26 Feb 07 |
jari |
610 |
slideRow = (metaRow - 1) * maxRow + row; |
2 |
26 Feb 07 |
jari |
611 |
slideCol = (metaCol -1 ) * maxCol + col; |
2 |
26 Feb 07 |
jari |
612 |
name = colValues[nameIndex]; |
2 |
26 Feb 07 |
jari |
613 |
id = colValues[idIndex]; |
2 |
26 Feb 07 |
jari |
//wwang add loading flag |
2 |
26 Feb 07 |
jari |
615 |
tavLine = new Vector(9); |
2 |
26 Feb 07 |
jari |
616 |
tavLine.add(new Integer(densA)); |
2 |
26 Feb 07 |
jari |
617 |
tavLine.add(new Integer(densB)); |
2 |
26 Feb 07 |
jari |
618 |
tavLine.add(new Integer(slideRow)); |
2 |
26 Feb 07 |
jari |
619 |
tavLine.add(new Integer(slideCol)); |
2 |
26 Feb 07 |
jari |
620 |
tavLine.add(new Integer(metaRow)); |
2 |
26 Feb 07 |
jari |
621 |
tavLine.add(new Integer(metaCol)); |
2 |
26 Feb 07 |
jari |
622 |
tavLine.add(name); |
2 |
26 Feb 07 |
jari |
623 |
tavLine.add(id); |
2 |
26 Feb 07 |
jari |
624 |
tavLine.add(new Integer(flag)); |
2 |
26 Feb 07 |
jari |
625 |
tavFile.add(tavLine); |
2 |
26 Feb 07 |
jari |
626 |
counter++; |
2 |
26 Feb 07 |
jari |
627 |
} // end of the for loop for a single file. |
2 |
26 Feb 07 |
jari |
628 |
|
2 |
26 Feb 07 |
jari |
629 |
ready = true; |
2 |
26 Feb 07 |
jari |
630 |
counter = taskEnd; |
2 |
26 Feb 07 |
jari |
631 |
} |
2 |
26 Feb 07 |
jari |
632 |
} |
2 |
26 Feb 07 |
jari |
633 |
} |
2 |
26 Feb 07 |
jari |
634 |
} |