Changeset 4055
- Timestamp:
- Dec 12, 2007, 9:20:25 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.5-stable/src/plugins/core/net/sf/basedb/plugins/IlluminaRawDataImporter.java
r3820 r4055 86 86 import net.sf.basedb.util.parser.FlatFileParser.Data; 87 87 import net.sf.basedb.util.parser.FlatFileParser.Line; 88 import net.sf.basedb.util.parser.FlatFileParser.LineType; 88 89 89 90 /** … … 128 129 )); 129 130 131 130 132 private static final PluginParameter<String> invalidColumnsErrorParameter = new PluginParameter<String>( 131 133 "invalidColumnsError", … … 251 253 storeValue(job, request, fileParameter); 252 254 storeValue(job, request, ri.getParameter(CHARSET)); 255 storeValue(job, request, ri.getParameter(DECIMAL_SEPARATOR)); 253 256 254 257 // Associations … … 300 303 Create a FlatFileParser that can parse Illumina data files: 301 304 <ul> 302 <li>Data splitter: ,305 <li>Data splitter: (,|\t) 303 306 <li>Header regexp: (.+)=(.*?),* 304 <li>Data header: TargetI d,.*307 <li>Data header: TargetID(,|\t).* 305 308 </ul> 309 NOTE! To begin with we support both comma and tab as column splitter but 310 later on (in {@link #isImportable(FlatFileParser)}) when we know which one is actually 311 used, we change this in the parser. We need to do this since numbers may 312 use comma as decimal separator. 306 313 */ 307 314 @Override … … 309 316 throws BaseException 310 317 { 318 String separator = "(,|\\t)"; 311 319 FlatFileParser ffp = new FlatFileParser(); 312 ffp.setDataSplitterRegexp(Pattern.compile( ","));313 ffp.setDataHeaderRegexp(Pattern.compile("TargetID ,.*"));320 ffp.setDataSplitterRegexp(Pattern.compile(separator)); 321 ffp.setDataHeaderRegexp(Pattern.compile("TargetID"+separator + ".*")); 314 322 ffp.setHeaderRegexp(Pattern.compile("(.+)=(.*?),*")); 315 323 return ffp; 316 324 } 317 325 /** 318 @return A lways "dot"326 @return As specified by job parameter or "dot" if not 319 327 */ 320 328 @Override 321 329 protected String getDecimalSeparator() 322 330 { 323 return "dot"; 331 String separator = super.getDecimalSeparator(); 332 if (separator == null) separator = "dot"; 333 return separator; 324 334 } 325 335 … … 333 343 { 334 344 String firstLine = ffp.getLineCount() >= 1 ? ffp.getLine(0).line() : null; 335 return firstLine != null && firstLine.contains("Illumina") ; 345 boolean isIllumina = firstLine != null && firstLine.contains("Illumina"); 346 if (isIllumina) 347 { 348 String separator = ","; 349 FlatFileParser.Line lastLine = ffp.getLine(ffp.getLineCount()-1); 350 if (lastLine.type() == LineType.DATA_HEADER) 351 { 352 int firstTab = lastLine.line().indexOf("\t"); 353 if (firstTab > 0 && firstTab < lastLine.line().indexOf(",")) 354 { 355 separator = "\\t"; 356 } 357 ffp.setDataSplitterRegexp(Pattern.compile(separator)); 358 } 359 } 360 return isIllumina; 336 361 } 337 362 … … 592 617 parameters.add(fileParameter); 593 618 parameters.add(getCharsetParameter(null, null, null)); 619 parameters.add(getDecimalSeparatorParameter(null, null, (String)job.getValue(DECIMAL_SEPARATOR))); 594 620 595 621 // parameters for scan, protocol and software
Note: See TracChangeset
for help on using the changeset viewer.