From ab1c48745beca74be9382e4b2dc3793488278d41 Mon Sep 17 00:00:00 2001 From: Eric Banks Date: Wed, 21 Mar 2012 12:13:52 -0400 Subject: [PATCH 1/4] Need to catch RuntimeExceptions coming out of Picard too so that they show up as UserErrors (some BAM errors are thrown as REs). --- .../gatk/iterators/MalformedBAMErrorReformatingIterator.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/iterators/MalformedBAMErrorReformatingIterator.java b/public/java/src/org/broadinstitute/sting/gatk/iterators/MalformedBAMErrorReformatingIterator.java index f5dee4961..ca155a27f 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/iterators/MalformedBAMErrorReformatingIterator.java +++ b/public/java/src/org/broadinstitute/sting/gatk/iterators/MalformedBAMErrorReformatingIterator.java @@ -6,6 +6,7 @@ import net.sf.samtools.util.CloseableIterator; import org.broadinstitute.sting.utils.exceptions.UserException; import java.io.File; +import java.io.IOException; import java.util.Iterator; /** @@ -23,7 +24,7 @@ public class MalformedBAMErrorReformatingIterator implements CloseableIterator Date: Wed, 21 Mar 2012 12:14:31 -0400 Subject: [PATCH 2/4] Minor cleanup --- .../iterators/MalformedBAMErrorReformatingIterator.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/iterators/MalformedBAMErrorReformatingIterator.java b/public/java/src/org/broadinstitute/sting/gatk/iterators/MalformedBAMErrorReformatingIterator.java index ca155a27f..18bf16d71 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/iterators/MalformedBAMErrorReformatingIterator.java +++ b/public/java/src/org/broadinstitute/sting/gatk/iterators/MalformedBAMErrorReformatingIterator.java @@ -1,12 +1,10 @@ package org.broadinstitute.sting.gatk.iterators; -import net.sf.samtools.SAMFormatException; import net.sf.samtools.SAMRecord; import net.sf.samtools.util.CloseableIterator; import org.broadinstitute.sting.utils.exceptions.UserException; import java.io.File; -import java.io.IOException; import java.util.Iterator; /** @@ -24,7 +22,7 @@ public class MalformedBAMErrorReformatingIterator implements CloseableIterator Date: Wed, 21 Mar 2012 12:42:13 -0400 Subject: [PATCH 3/4] Bug fix: merge NO_VARIATION records with those of another type. The sad part is that this WAS covered by integration tests but someone updated the MD5s without actually paying attention... --- .../gatk/walkers/variantutils/CombineVariants.java | 13 +++++++++++++ .../CombineVariantsIntegrationTest.java | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java index 684b9102a..3066b0bc6 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java @@ -243,6 +243,19 @@ public class CombineVariants extends RodWalker { if (multipleAllelesMergeType == VariantContextUtils.MultipleAllelesMergeType.BY_TYPE) { Map> VCsByType = VariantContextUtils.separateVariantContextsByType(vcs); + + // TODO -- clean this up in a refactoring + // merge NO_VARIATION into another type of variant (based on the ordering in VariantContext.Type) + if ( VCsByType.containsKey(VariantContext.Type.NO_VARIATION) && VCsByType.size() > 1 ) { + final List refs = VCsByType.remove(VariantContext.Type.NO_VARIATION); + for ( VariantContext.Type type : VariantContext.Type.values() ) { + if ( VCsByType.containsKey(type) ) { + VCsByType.get(type).addAll(refs); + break; + } + } + } + // iterate over the types so that it's deterministic for (VariantContext.Type type : VariantContext.Type.values()) { if (VCsByType.containsKey(type)) diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java index d74aac79d..5282c9e58 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java @@ -110,7 +110,7 @@ public class CombineVariantsIntegrationTest extends WalkerTest { " -priority NA19240_BGI,NA19240_ILLUMINA,NA19240_WUGSC,denovoInfo" + " -genotypeMergeOptions UNIQUIFY -L 1"), 1, - Arrays.asList("ab72f4bfb16d3894942149173a087647")); + Arrays.asList("ee43a558fd3faeaa447acab89f0001d5")); executeTest("threeWayWithRefs", spec); } From 58245bfa2f753ce0cc4c58f95b59f6e0a6963fe3 Mon Sep 17 00:00:00 2001 From: Eric Banks Date: Wed, 21 Mar 2012 12:44:09 -0400 Subject: [PATCH 4/4] Bug fix: check to see whether there's a BasePileup before asking for one. --- .../broadinstitute/sting/gatk/walkers/annotator/LowMQ.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/LowMQ.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/LowMQ.java index 753740258..4a0c7a6da 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/LowMQ.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/LowMQ.java @@ -31,8 +31,10 @@ public class LowMQ extends InfoFieldAnnotation { double total = 0; for ( Map.Entry sample : stratifiedContexts.entrySet() ) { - ReadBackedPileup pileup = sample.getValue().getBasePileup(); - for (PileupElement p : pileup ) + if ( !sample.getValue().hasBasePileup() ) + continue; + + for ( PileupElement p : sample.getValue().getBasePileup() ) { if ( p.getMappingQual() == 0 ) { mq0 += 1; } if ( p.getMappingQual() <= 10 ) { mq10 += 1; }