From ca4eab1d23b62f3e1a347d7e8dc0e8771fb32418 Mon Sep 17 00:00:00 2001 From: ebanks Date: Wed, 9 Jun 2010 20:36:46 +0000 Subject: [PATCH] Now annotations that require reads return null if there's no alignment context, so that running without reads adds annotations only for the appropriate fields. Added an integration test for the read-less case. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3525 348d0f76-0448-11de-a6fe-93d51630548a --- .../sting/gatk/walkers/annotator/AlleleBalance.java | 4 +++- .../sting/gatk/walkers/annotator/DepthOfCoverage.java | 3 +++ .../broadinstitute/sting/gatk/walkers/annotator/LowMQ.java | 3 +++ .../sting/gatk/walkers/annotator/MappingQualityZero.java | 3 +++ .../sting/gatk/walkers/annotator/QualByDepth.java | 3 +++ .../sting/gatk/walkers/annotator/RMSMappingQuality.java | 3 +++ .../sting/gatk/walkers/annotator/RankSumTest.java | 4 +++- .../sting/gatk/walkers/annotator/SecondBaseSkew.java | 3 +++ .../sting/gatk/walkers/annotator/SpanningDeletions.java | 3 +++ .../walkers/annotator/VariantAnnotatorIntegrationTest.java | 7 +++++++ 10 files changed, 34 insertions(+), 2 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/AlleleBalance.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/AlleleBalance.java index 63aee013c..3ac64aa6a 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/AlleleBalance.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/AlleleBalance.java @@ -43,7 +43,9 @@ import java.util.Arrays; public class AlleleBalance implements InfoFieldAnnotation, StandardAnnotation { public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { - + if ( stratifiedContexts.size() == 0 ) + return null; + if ( !vc.isBiallelic() ) return null; final Map genotypes = vc.getGenotypes(); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/DepthOfCoverage.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/DepthOfCoverage.java index a016e9116..ca2de7047 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/DepthOfCoverage.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/DepthOfCoverage.java @@ -17,6 +17,9 @@ import java.util.Arrays; public class DepthOfCoverage implements InfoFieldAnnotation, StandardAnnotation { public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { + if ( stratifiedContexts.size() == 0 ) + return null; + int depth = 0; for ( String sample : stratifiedContexts.keySet() ) depth += stratifiedContexts.get(sample).getContext(StratifiedAlignmentContext.StratifiedContextType.COMPLETE).size(); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/LowMQ.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/LowMQ.java index a13f08abf..c7cfc0955 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/LowMQ.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/LowMQ.java @@ -18,6 +18,9 @@ import java.util.Arrays; public class LowMQ implements InfoFieldAnnotation { public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { + if ( stratifiedContexts.size() == 0 ) + return null; + double mq0 = 0; double mq10 = 0; double total = 0; diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/MappingQualityZero.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/MappingQualityZero.java index d9f7e684c..66322d36c 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/MappingQualityZero.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/MappingQualityZero.java @@ -19,6 +19,9 @@ import java.util.Arrays; public class MappingQualityZero implements InfoFieldAnnotation, StandardAnnotation { public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { + if ( stratifiedContexts.size() == 0 ) + return null; + int mq0 = 0; for ( String sample : stratifiedContexts.keySet() ) { ReadBackedPileup pileup = stratifiedContexts.get(sample).getContext(StratifiedAlignmentContext.StratifiedContextType.COMPLETE).getBasePileup(); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/QualByDepth.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/QualByDepth.java index 7099a5529..e21306ec8 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/QualByDepth.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/QualByDepth.java @@ -17,6 +17,9 @@ import java.util.Arrays; public class QualByDepth implements InfoFieldAnnotation, StandardAnnotation { public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { + if ( stratifiedContexts.size() == 0 ) + return null; + final Map genotypes = vc.getGenotypes(); if ( genotypes == null || genotypes.size() == 0 ) return null; diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/RMSMappingQuality.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/RMSMappingQuality.java index ca744bbbb..bdad04063 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/RMSMappingQuality.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/RMSMappingQuality.java @@ -18,6 +18,9 @@ import java.util.*; public class RMSMappingQuality implements InfoFieldAnnotation, StandardAnnotation { public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { + if ( stratifiedContexts.size() == 0 ) + return null; + ArrayList qualities = new ArrayList(); for ( String sample : stratifiedContexts.keySet() ) { ReadBackedPileup pileup = stratifiedContexts.get(sample).getContext(StratifiedAlignmentContext.StratifiedContextType.COMPLETE).getBasePileup(); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/RankSumTest.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/RankSumTest.java index 3156e75e4..3f230e49e 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/RankSumTest.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/RankSumTest.java @@ -19,7 +19,9 @@ public abstract class RankSumTest implements InfoFieldAnnotation, WorkInProgress private static final double minPValue = 1e-10; public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { - + if ( stratifiedContexts.size() == 0 ) + return null; + if ( !vc.isBiallelic() || !vc.isSNP() ) return null; diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/SecondBaseSkew.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/SecondBaseSkew.java index 21f5045d4..01cdd9de2 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/SecondBaseSkew.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/SecondBaseSkew.java @@ -53,6 +53,9 @@ public class SecondBaseSkew implements InfoFieldAnnotation, ExperimentalAnnotati public List getDescriptions() { return Arrays.asList(new VCFInfoHeaderLine(KEY_NAME, 1, VCFInfoHeaderLine.INFO_TYPE.Float, "Chi-square Secondary Base Skew")); } public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { + if ( stratifiedContexts.size() == 0 ) + return null; + String annotation = getAnnotation(ref, stratifiedContexts, vc); if ( annotation == null ) return null; diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/SpanningDeletions.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/SpanningDeletions.java index 2ff018b8d..403b22663 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/SpanningDeletions.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/SpanningDeletions.java @@ -18,6 +18,9 @@ import java.util.Arrays; public class SpanningDeletions implements InfoFieldAnnotation, StandardAnnotation { public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { + if ( stratifiedContexts.size() == 0 ) + return null; + int deletions = 0; int depth = 0; for ( String sample : stratifiedContexts.keySet() ) { diff --git a/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java b/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java index 1d59e67d9..3589865fc 100755 --- a/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java +++ b/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java @@ -110,4 +110,11 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { executeTest("test file doesn't have annotations, asking for annotations, #2", spec); } + @Test + public void testNoReads() { + WalkerTestSpec spec = new WalkerTestSpec( + baseTestString() + " -G \"Standard\" -B variant,VCF," + validationDataLocation + "vcfexample3empty.vcf -L 1:10,000,000-10,050,000", 1, + Arrays.asList("07af9983127c62e96accc03db2fb523e")); + executeTest("test file doesn't have annotations, not passing it any reads", spec); + } } \ No newline at end of file