Skip to content

Commit 3a6b43e

Browse files
committed
Fix for alignments that dont produce BAMs
1 parent f5e1eb7 commit 3a6b43e

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/SequenceAlignmentTask.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,9 @@ else if (pair.first.equals(pair.second))
675675

676676
private void alignSet(Readset rs, String basename, Map<ReadData, Pair<File, File>> files, ReferenceGenome referenceGenome) throws IOException, PipelineJobException
677677
{
678+
AlignmentStep alignmentStep = getHelper().getSingleStep(AlignmentStep.class).create(getHelper());
679+
boolean discardBam = alignmentStep.getProvider().getParameterByName(AbstractAlignmentStepProvider.DISCARD_BAM).extractValue(getJob(), alignmentStep.getProvider(), alignmentStep.getStepIdx(), Boolean.class, false);
680+
678681
File bam;
679682
if (_resumer.isInitialAlignmentDone())
680683
{
@@ -696,11 +699,26 @@ private void alignSet(Readset rs, String basename, Map<ReadData, Pair<File, File
696699
getTaskFileManagerImpl().deleteIntermediateFiles(toRetain);
697700
}
698701

699-
AlignmentStep alignmentStep = getHelper().getSingleStep(AlignmentStep.class).create(getHelper());
700-
boolean discardBam = alignmentStep.getProvider().getParameterByName(AbstractAlignmentStepProvider.DISCARD_BAM).extractValue(getJob(), alignmentStep.getProvider(), alignmentStep.getStepIdx(), Boolean.class, false);
701702
_resumer.setInitialAlignmentDone(bam, alignActions, discardBam);
702703
}
703704

705+
// This is a special case where the alignment does not actually generate a permanent BAM
706+
if (bam == null && discardBam)
707+
{
708+
if (!SequencePipelineService.get().getSteps(getJob(), BamProcessingStep.class).isEmpty())
709+
{
710+
throw new PipelineJobException("No BAM was created, but post-procesing steps were selected!");
711+
}
712+
713+
if (!SequencePipelineService.get().getSteps(getJob(), AnalysisStep.class).isEmpty())
714+
{
715+
throw new PipelineJobException("No BAM was created, but analysis steps were selected!");
716+
}
717+
718+
getJob().getLogger().info("No BAM was created, but discard BAM was selected, so skipping all downstream steps");
719+
return;
720+
}
721+
704722
//post-processing
705723
if (_resumer.isBamPostProcessingBamDone())
706724
{
@@ -787,7 +805,6 @@ else if (step.expectToCreateNewBam())
787805

788806
//always end with coordinate sorted
789807
getJob().setStatus(PipelineJob.TaskStatus.running, "SORTING BAM");
790-
AlignmentStep alignmentStep = getHelper().getSingleStep(AlignmentStep.class).create(getHelper());
791808
if (_resumer.isBamSortDone())
792809
{
793810
getJob().getLogger().info("BAM sort already performed, resuming");

SequenceAnalysis/src/org/labkey/sequenceanalysis/run/bampostprocessing/SortSamStep.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
*/
2626
public class SortSamStep extends AbstractCommandPipelineStep<SortSamWrapper> implements BamProcessingStep
2727
{
28-
public SortSamStep(PipelineStepProvider provider, PipelineContext ctx)
28+
public SortSamStep(PipelineStepProvider<?> provider, PipelineContext ctx)
2929
{
3030
super(provider, ctx, new SortSamWrapper(ctx.getLogger()));
3131
}

0 commit comments

Comments
 (0)