From d88dcce1e450f2cb8ee1b934f376b1ea0c3a27fd Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Thu, 25 Feb 2021 09:27:17 -0500 Subject: [PATCH] SW implementation is command line argument in FilterAlignmentArtifacts --- .../FilterAlignmentArtifacts.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/realignmentfilter/FilterAlignmentArtifacts.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/realignmentfilter/FilterAlignmentArtifacts.java index 19eac4f1d5a..26b3fd61900 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/realignmentfilter/FilterAlignmentArtifacts.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/realignmentfilter/FilterAlignmentArtifacts.java @@ -10,10 +10,7 @@ import htsjdk.variant.variantcontext.writer.VariantContextWriter; import htsjdk.variant.vcf.VCFHeader; import htsjdk.variant.vcf.VCFHeaderLine; -import org.broadinstitute.barclay.argparser.Argument; -import org.broadinstitute.barclay.argparser.ArgumentCollection; -import org.broadinstitute.barclay.argparser.CommandLineProgramProperties; -import org.broadinstitute.barclay.argparser.ExperimentalFeature; +import org.broadinstitute.barclay.argparser.*; import org.broadinstitute.barclay.help.DocumentedFeature; import org.broadinstitute.hellbender.cmdline.StandardArgumentDefinitions; import org.broadinstitute.hellbender.engine.AssemblyRegion; @@ -111,7 +108,6 @@ public class FilterAlignmentArtifacts extends MultiVariantWalkerGroupedOnStart { public static final int DEFAULT_MAX_GROUPED_SPAN = 10_000; private static final int MIN_UNITIG_LENGTH = 30; private static final int ASSEMBLY_PADDING = 50; - private static final SmithWatermanAligner ALIGNER = SmithWatermanAligner.getAligner(SmithWatermanAligner.Implementation.FASTEST_AVAILABLE); @Argument(fullName = StandardArgumentDefinitions.OUTPUT_LONG_NAME, shortName = StandardArgumentDefinitions.OUTPUT_SHORT_NAME, doc="The output filtered VCF file", optional=false) @@ -135,10 +131,15 @@ public class FilterAlignmentArtifacts extends MultiVariantWalkerGroupedOnStart { @Argument(fullName= AssemblyBasedCallerArgumentCollection.BAM_OUTPUT_LONG_NAME, shortName= AssemblyBasedCallerArgumentCollection.BAM_OUTPUT_SHORT_NAME, doc="File to which assembled haplotypes should be written", optional = true) public String bamOutputPath = null; + @Advanced + @Argument(fullName = AssemblyBasedCallerArgumentCollection.SMITH_WATERMAN_LONG_NAME, doc = "Which Smith-Waterman implementation to use, generally FASTEST_AVAILABLE is the right choice", optional = true) + public SmithWatermanAligner.Implementation smithWatermanImplementation = SmithWatermanAligner.Implementation.JAVA; + @ArgumentCollection protected RealignmentArgumentCollection realignmentArgumentCollection = new RealignmentArgumentCollection(); + private SmithWatermanAligner smithWatermanAligner; private VariantContextWriter vcfWriter; private RealignmentEngine realignmentEngine; private SAMFileHeader bamHeader; @@ -173,6 +174,7 @@ protected int defaultMaxGroupedSpan() { @Override public void onTraversalStart() { + smithWatermanAligner = SmithWatermanAligner.getAligner(smithWatermanImplementation); realignmentEngine = new RealignmentEngine(realignmentArgumentCollection); vcfWriter = createVCFWriter(outputVcf); @@ -210,14 +212,14 @@ public void apply(List variantContexts, ReferenceContext referen // TODO: give this tool M2 Assembler args to allow override default M2ArgumentCollection? - final AssemblyResultSet assemblyResult = AssemblyBasedCallerUtils.assembleReads(assemblyRegion, Collections.emptyList(), MTAC, bamHeader, samplesList, logger, referenceReader, assemblyEngine, ALIGNER, false); + final AssemblyResultSet assemblyResult = AssemblyBasedCallerUtils.assembleReads(assemblyRegion, Collections.emptyList(), MTAC, bamHeader, samplesList, logger, referenceReader, assemblyEngine, smithWatermanAligner, false); final AssemblyRegion regionForGenotyping = assemblyResult.getRegionForGenotyping(); final Map> reads = AssemblyBasedCallerUtils.splitReadsBySample(samplesList, bamHeader, regionForGenotyping.getReads()); final AlleleLikelihoods readLikelihoods = likelihoodCalculationEngine.computeReadLikelihoods(assemblyResult,samplesList,reads); readLikelihoods.switchToNaturalLog(); - final Map readRealignments = AssemblyBasedCallerUtils.realignReadsToTheirBestHaplotype(readLikelihoods, assemblyResult.getReferenceHaplotype(), assemblyResult.getPaddedReferenceLoc(), ALIGNER); + final Map readRealignments = AssemblyBasedCallerUtils.realignReadsToTheirBestHaplotype(readLikelihoods, assemblyResult.getReferenceHaplotype(), assemblyResult.getPaddedReferenceLoc(), smithWatermanAligner); readLikelihoods.changeEvidence(readRealignments); writeBamOutput(assemblyResult, readLikelihoods, new HashSet<>(readLikelihoods.alleles()), regionForGenotyping.getSpan());