|
28 | 28 | import org.jetbrains.annotations.Nullable; |
29 | 29 | import org.junit.Assert; |
30 | 30 | import org.junit.Test; |
| 31 | +import org.labkey.api.collections.CaseInsensitiveHashSet; |
31 | 32 | import org.labkey.api.data.ConvertHelper; |
32 | 33 | import org.labkey.api.pipeline.ObjectKeySerialization; |
33 | 34 | import org.labkey.api.pipeline.PairSerializer; |
@@ -294,6 +295,7 @@ private Map<ReadData, Pair<File, File>> performFastqPreprocessing(SequenceReadse |
294 | 295 |
|
295 | 296 | Map<ReadData, Pair<File, File>> toAlign = new LinkedHashMap<>(); |
296 | 297 | int i = 0; |
| 298 | + Set<String> basenamesUsed = new CaseInsensitiveHashSet(); |
297 | 299 | for (ReadData d : rs.getReadData()) |
298 | 300 | { |
299 | 301 | i++; |
@@ -334,7 +336,7 @@ private Map<ReadData, Pair<File, File>> performFastqPreprocessing(SequenceReadse |
334 | 336 | getJob().getLogger().debug("Will not copy inputs to working directory"); |
335 | 337 | } |
336 | 338 |
|
337 | | - pair = preprocessFastq(pair.first, pair.second, preprocessingActions, suffix); |
| 339 | + pair = preprocessFastq(pair.first, pair.second, preprocessingActions, suffix, basenamesUsed); |
338 | 340 | toAlign.put(d, pair); |
339 | 341 | } |
340 | 342 |
|
@@ -460,7 +462,7 @@ private SequenceTaskHelper getHelper() |
460 | 462 | /** |
461 | 463 | * Attempt to normalize FASTQ files and perform preprocessing such as trimming. |
462 | 464 | */ |
463 | | - public Pair<File, File> preprocessFastq(File inputFile1, @Nullable File inputFile2, List<RecordedAction> actions, String statusSuffix) throws PipelineJobException, IOException |
| 465 | + public Pair<File, File> preprocessFastq(File inputFile1, @Nullable File inputFile2, List<RecordedAction> actions, String statusSuffix, Set<String> basenamesUsed) throws PipelineJobException, IOException |
464 | 466 | { |
465 | 467 | getJob().setStatus(PipelineJob.TaskStatus.running, PREPROCESS_FASTQ_STATUS); |
466 | 468 | getJob().getLogger().info("Beginning preprocessing for file: " + inputFile1.getName()); |
@@ -504,20 +506,34 @@ public Pair<File, File> preprocessFastq(File inputFile1, @Nullable File inputFil |
504 | 506 | steps = combinedSteps; |
505 | 507 |
|
506 | 508 | String originalbaseName = SequenceTaskHelper.getMinimalBaseName(inputFile1.getName()); |
| 509 | + int i = 0; |
| 510 | + while (basenamesUsed.contains(originalbaseName)) |
| 511 | + { |
| 512 | + i++; |
| 513 | + originalbaseName = originalbaseName + "." + i; |
| 514 | + } |
| 515 | + basenamesUsed.add(originalbaseName); |
507 | 516 | String originalbaseName2 = null; |
508 | 517 |
|
509 | 518 | //log read count: |
510 | 519 | Pair<Long, Long> previousCounts = FastqUtils.logSequenceCounts(inputFile1, inputFile2, getJob().getLogger(), null, null); |
511 | 520 |
|
512 | 521 | if (inputFile2 != null) |
513 | 522 | { |
514 | | - originalbaseName2 = SequenceTaskHelper.getMinimalBaseName(inputFile2.getName()); |
| 523 | + originalbaseName2 = SequenceTaskHelper.getUnzippedBaseName(inputFile2.getName()); |
| 524 | + i = 0; |
| 525 | + while (basenamesUsed.contains(originalbaseName2)) |
| 526 | + { |
| 527 | + i++; |
| 528 | + originalbaseName2 = originalbaseName2 + "." + i; |
| 529 | + } |
| 530 | + basenamesUsed.add(originalbaseName2); |
515 | 531 |
|
516 | 532 | if (originalbaseName.equalsIgnoreCase(originalbaseName2)) |
517 | 533 | { |
518 | | - getJob().getLogger().debug("Forward and reverse FASTQs have the same basename. Appending .1 and .2 as suffixes."); |
519 | | - originalbaseName = originalbaseName + ".1"; |
520 | | - originalbaseName2 = originalbaseName2 + ".2"; |
| 534 | + getJob().getLogger().debug("Forward and reverse FASTQs have the same basename. Appending .R1 and .R2 as suffixes."); |
| 535 | + originalbaseName = originalbaseName + ".R1"; |
| 536 | + originalbaseName2 = originalbaseName2 + ".R2"; |
521 | 537 | } |
522 | 538 | } |
523 | 539 |
|
|
0 commit comments