From a8d37da10b8ee86c64d1add90330b2b7921872b5 Mon Sep 17 00:00:00 2001 From: rpoplin Date: Thu, 5 Aug 2010 14:12:19 +0000 Subject: [PATCH] Checking in everyone's changes to the variant recalibrator. We now calculate the variant quality score as a LOD score between the true and false hypothesis. Allele Count prior is changed to be (1 - 0.5^ac). Known prior breaks out HapMap sites git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3952 348d0f76-0448-11de-a6fe-93d51630548a --- .../GenerateVariantClustersWalker.java | 6 +-- .../VariantGaussianMixtureModel.java | 29 +++++++------- .../VariantRecalibrator.java | 39 ++++++++++++++----- .../sting/utils/QualityUtils.java | 10 ++++- ...ntRecalibrationWalkersIntegrationTest.java | 4 +- 5 files changed, 60 insertions(+), 28 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/GenerateVariantClustersWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/GenerateVariantClustersWalker.java index 211882ab2..5e7bbfed9 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/GenerateVariantClustersWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/GenerateVariantClustersWalker.java @@ -67,7 +67,7 @@ public class GenerateVariantClustersWalker extends RodWalker ignoreInputFilterSet = null; + private int numUnstable = 0; //--------------------------------------------------------------------------------------------------------------- // @@ -185,11 +186,27 @@ public class VariantRecalibrator extends RodWalker 1, Most likely numerical instability during clustering !!!!!"); + } final VariantDataManager dataManager = new VariantDataManager( reduceSum, theModel.dataManager.annotationKeys ); reduceSum.clear(); // Don't need this ever again, clean up some memory diff --git a/java/src/org/broadinstitute/sting/utils/QualityUtils.java b/java/src/org/broadinstitute/sting/utils/QualityUtils.java index 86537ce4f..272b47e01 100755 --- a/java/src/org/broadinstitute/sting/utils/QualityUtils.java +++ b/java/src/org/broadinstitute/sting/utils/QualityUtils.java @@ -30,7 +30,11 @@ public class QualityUtils { } static public double qualToProb(int qual) { - return 1.0 - Math.pow(10.0, ((double) qual)/-10.0); + return qualToProb( (double)qual ); + } + + static public double qualToProb(double qual) { + return 1.0 - Math.pow(10.0, qual/(-10.0)); } /** @@ -76,6 +80,10 @@ public class QualityUtils { static public double phredScaleErrorRate(double errorRate) { return -10.0*Math.log10(errorRate); } + + static public double lodToPhredScaleErrorRate(double lod) { + return phredScaleErrorRate(1.0 / (Math.pow(10.0, lod) + 1.0)); + } /** * Return a quality score, capped at max qual. diff --git a/java/test/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantRecalibrationWalkersIntegrationTest.java b/java/test/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantRecalibrationWalkersIntegrationTest.java index 1fc5df0c1..a3026df16 100755 --- a/java/test/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantRecalibrationWalkersIntegrationTest.java +++ b/java/test/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantRecalibrationWalkersIntegrationTest.java @@ -12,7 +12,7 @@ public class VariantRecalibrationWalkersIntegrationTest extends WalkerTest { @Test public void testGenerateVariantClusters() { HashMap e = new HashMap(); - e.put( validationDataLocation + "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf", "72558d2c49bb94dc59e9d4146fe0bc05" ); + e.put( validationDataLocation + "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf", "05d1692624a28cd9446feac8fd2408ab" ); for ( Map.Entry entry : e.entrySet() ) { String vcf = entry.getKey(); @@ -37,7 +37,7 @@ public class VariantRecalibrationWalkersIntegrationTest extends WalkerTest { @Test public void testVariantRecalibrator() { HashMap e = new HashMap(); - e.put( validationDataLocation + "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf", "0cb94385ced8a7a537d7bc79f82c01d3" ); + e.put( validationDataLocation + "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf", "4570c93c96de61342d75c1c658e2d5c1" ); for ( Map.Entry entry : e.entrySet() ) { String vcf = entry.getKey();