@@ -1383,57 +1383,66 @@ public File doAlignmentForSet(List<Pair<File, File>> inputFiles, ReferenceGenome
13831383 AlignmentStep .AlignmentOutput alignmentOutput = alignmentStep .performAlignment (rs , forwardFastqs , reverseFastqs , outputDirectory , referenceGenome , SequenceTaskHelper .getUnzippedBaseName (inputFiles .get (0 ).first .getName ()) + "." + alignmentStep .getProvider ().getName ().toLowerCase (), String .valueOf (lowestReadDataId ), platformUnit );
13841384 getHelper ().getFileManager ().addStepOutputs (alignmentAction , alignmentOutput );
13851385
1386- if (alignmentOutput .getBAM () == null || !alignmentOutput .getBAM ().exists ())
1387- {
1388- throw new PipelineJobException ("Unable to find BAM file after alignment: " + alignmentOutput .getBAM ());
1389- }
13901386 Date end = new Date ();
13911387 alignmentAction .setEndTime (end );
13921388 getJob ().getLogger ().info (alignmentStep .getProvider ().getLabel () + " Duration: " + DurationFormatUtils .formatDurationWords (end .getTime () - start .getTime (), true , true ));
13931389 actions .add (alignmentAction );
13941390
1395- SequenceUtil .logFastqBamDifferences (getJob ().getLogger (), alignmentOutput .getBAM ());
1396-
1397- ToolParameterDescriptor mergeParam = alignmentStep .getProvider ().getParameterByName (AbstractAlignmentStepProvider .SUPPORT_MERGED_UNALIGNED );
1398- boolean doMergeUnaligned = alignmentStep .getProvider ().supportsMergeUnaligned () && mergeParam != null && mergeParam .extractValue (getJob (), alignmentStep .getProvider (), alignmentStep .getStepIdx (), Boolean .class , false );
1399- if (doMergeUnaligned )
1391+ boolean discardBam = alignmentStep .getProvider ().getParameterByName (AbstractAlignmentStepProvider .DISCARD_BAM ).extractValue (getJob (), alignmentStep .getProvider (), alignmentStep .getStepIdx (), Boolean .class , false );
1392+ if (discardBam && alignmentOutput .getBAM () == null )
14001393 {
1401- getJob ().setStatus (PipelineJob .TaskStatus .running , "MERGING UNALIGNED READS INTO BAM" + msgSuffix );
1402- getJob ().getLogger ().info ("merging unaligned reads into BAM" );
1403- File idx = SequenceAnalysisService .get ().getExpectedBamOrCramIndex (alignmentOutput .getBAM ());
1404- if (idx .exists ())
1405- {
1406- getJob ().getLogger ().debug ("deleting index: " + idx .getPath ());
1407- idx .delete ();
1408- }
1409-
1410- //merge unaligned reads and clean file
1411- MergeBamAlignmentWrapper wrapper = new MergeBamAlignmentWrapper (getJob ().getLogger ());
1412- wrapper .executeCommand (referenceGenome .getWorkingFastaFile (), alignmentOutput .getBAM (), inputFiles , null );
1413- getHelper ().getFileManager ().addCommandsToAction (wrapper .getCommandsExecuted (), alignmentAction );
1394+ getJob ().getLogger ().info ("The alignment did not produce a BAM, but discardBam was selected. BAM stats steps will be skipped." );
14141395 }
14151396 else
14161397 {
1417- getJob ().getLogger ().info ("skipping merge of unaligned reads on BAM" );
1418- }
1398+ if (alignmentOutput .getBAM () == null || !alignmentOutput .getBAM ().exists ())
1399+ {
1400+ throw new PipelineJobException ("Unable to find BAM file after alignment: " + alignmentOutput .getBAM ());
1401+ }
14191402
1420- if (alignmentStep .doAddReadGroups ())
1421- {
1422- getJob ().setStatus (PipelineJob .TaskStatus .running , "ADDING READ GROUPS" + msgSuffix );
1423- AddOrReplaceReadGroupsWrapper wrapper = new AddOrReplaceReadGroupsWrapper (getJob ().getLogger ());
1424- wrapper .executeCommand (alignmentOutput .getBAM (), null , rs .getReadsetId ().toString (), rs .getPlatform (), (platformUnit == null ? rs .getReadsetId ().toString () : platformUnit ), rs .getName ().replaceAll (" " , "_" ));
1425- getHelper ().getFileManager ().addCommandsToAction (wrapper .getCommandsExecuted (), alignmentAction );
1426- }
1427- else
1428- {
1429- getJob ().getLogger ().info ("skipping read group assignment" );
1430- }
1403+ SequenceUtil .logFastqBamDifferences (getJob ().getLogger (), alignmentOutput .getBAM ());
14311404
1432- //generate stats
1433- getJob ().setStatus (PipelineJob .TaskStatus .running , "Generating BAM Stats" );
1434- FlagStatRunner runner = new FlagStatRunner (getJob ().getLogger ());
1435- runner .execute (alignmentOutput .getBAM ());
1436- getHelper ().getFileManager ().addCommandsToAction (runner .getCommandsExecuted (), alignmentAction );
1405+ ToolParameterDescriptor mergeParam = alignmentStep .getProvider ().getParameterByName (AbstractAlignmentStepProvider .SUPPORT_MERGED_UNALIGNED );
1406+ boolean doMergeUnaligned = alignmentStep .getProvider ().supportsMergeUnaligned () && mergeParam != null && mergeParam .extractValue (getJob (), alignmentStep .getProvider (), alignmentStep .getStepIdx (), Boolean .class , false );
1407+ if (doMergeUnaligned )
1408+ {
1409+ getJob ().setStatus (PipelineJob .TaskStatus .running , "MERGING UNALIGNED READS INTO BAM" + msgSuffix );
1410+ getJob ().getLogger ().info ("merging unaligned reads into BAM" );
1411+ File idx = SequenceAnalysisService .get ().getExpectedBamOrCramIndex (alignmentOutput .getBAM ());
1412+ if (idx .exists ())
1413+ {
1414+ getJob ().getLogger ().debug ("deleting index: " + idx .getPath ());
1415+ idx .delete ();
1416+ }
1417+
1418+ //merge unaligned reads and clean file
1419+ MergeBamAlignmentWrapper wrapper = new MergeBamAlignmentWrapper (getJob ().getLogger ());
1420+ wrapper .executeCommand (referenceGenome .getWorkingFastaFile (), alignmentOutput .getBAM (), inputFiles , null );
1421+ getHelper ().getFileManager ().addCommandsToAction (wrapper .getCommandsExecuted (), alignmentAction );
1422+ }
1423+ else
1424+ {
1425+ getJob ().getLogger ().info ("skipping merge of unaligned reads on BAM" );
1426+ }
1427+
1428+ if (alignmentStep .doAddReadGroups ())
1429+ {
1430+ getJob ().setStatus (PipelineJob .TaskStatus .running , "ADDING READ GROUPS" + msgSuffix );
1431+ AddOrReplaceReadGroupsWrapper wrapper = new AddOrReplaceReadGroupsWrapper (getJob ().getLogger ());
1432+ wrapper .executeCommand (alignmentOutput .getBAM (), null , rs .getReadsetId ().toString (), rs .getPlatform (), (platformUnit == null ? rs .getReadsetId ().toString () : platformUnit ), rs .getName ().replaceAll (" " , "_" ));
1433+ getHelper ().getFileManager ().addCommandsToAction (wrapper .getCommandsExecuted (), alignmentAction );
1434+ }
1435+ else
1436+ {
1437+ getJob ().getLogger ().info ("skipping read group assignment" );
1438+ }
1439+
1440+ //generate stats
1441+ getJob ().setStatus (PipelineJob .TaskStatus .running , "Generating BAM Stats" );
1442+ FlagStatRunner runner = new FlagStatRunner (getJob ().getLogger ());
1443+ runner .execute (alignmentOutput .getBAM ());
1444+ getHelper ().getFileManager ().addCommandsToAction (runner .getCommandsExecuted (), alignmentAction );
1445+ }
14371446
14381447 _resumer .setReadDataAlignmentDone (lowestReadDataId , actions , alignmentOutput .getBAM ());
14391448
0 commit comments