@@ -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" );
0 commit comments