From 4e109f58bfb8e090315277fa2b226f79eb1bd16f Mon Sep 17 00:00:00 2001 From: ebanks Date: Wed, 3 Nov 2010 03:44:59 +0000 Subject: [PATCH] In preparation for Ryan's jumping into SLOD: getting rid of bad hack to ensure P(AF=i) is calculated in the strand-specific cases. With Mark's recent changes this is no longer necessary and just makes the code slower. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4620 348d0f76-0448-11de-a6fe-93d51630548a --- .../genotyper/AlleleFrequencyCalculationModel.java | 4 +--- .../walkers/genotyper/ExactAFCalculationModel.java | 11 +---------- .../walkers/genotyper/GridSearchAFEstimation.java | 10 ++-------- .../walkers/genotyper/UnifiedGenotyperEngine.java | 6 +++--- 4 files changed, 7 insertions(+), 24 deletions(-) diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/AlleleFrequencyCalculationModel.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/AlleleFrequencyCalculationModel.java index a7e56dee8..34a874313 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/AlleleFrequencyCalculationModel.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/AlleleFrequencyCalculationModel.java @@ -81,14 +81,12 @@ public abstract class AlleleFrequencyCalculationModel implements Cloneable { * @param GLs genotype likelihoods * @param log10AlleleFrequencyPriors priors * @param log10AlleleFrequencyPosteriors array (pre-allocated) to store results - * @param minFrequencyToCalculate the minimum frequency which needs to be calculated */ protected abstract void getLog10PNonRef(RefMetaDataTracker tracker, ReferenceContext ref, Map GLs, double[] log10AlleleFrequencyPriors, - double[] log10AlleleFrequencyPosteriors, - int minFrequencyToCalculate); + double[] log10AlleleFrequencyPosteriors); /** * Can be overridden by concrete subclasses diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/ExactAFCalculationModel.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/ExactAFCalculationModel.java index 0facc1889..a4786771a 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/ExactAFCalculationModel.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/ExactAFCalculationModel.java @@ -59,8 +59,7 @@ public class ExactAFCalculationModel extends AlleleFrequencyCalculationModel { ReferenceContext ref, Map GLs, double[] log10AlleleFrequencyPriors, - double[] log10AlleleFrequencyPosteriors, - int minFrequencyToCalculate) { + double[] log10AlleleFrequencyPosteriors) { int numSamples = GLs.size(); @@ -148,14 +147,6 @@ public class ExactAFCalculationModel extends AlleleFrequencyCalculationModel { for (int k=0; k <= numChr; k++) log10AlleleFrequencyPosteriors[k] = logYMatrix[j][k] + log10AlleleFrequencyPriors[k]; - - - // TODO: we really need to get rid of this and the minFrequencyToCalculate argument - // it's possible that we need to calculate higher frequencies - int maxAlleleFrequencyToTest = numChr; - for (int i = maxAlleleFrequencyToTest; i <= minFrequencyToCalculate; i++) - log10AlleleFrequencyPosteriors[i] = log10AlleleFrequencyPosteriors[maxAlleleFrequencyToTest]; - } diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/GridSearchAFEstimation.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/GridSearchAFEstimation.java index 581b3b6a0..6d4cbdc27 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/GridSearchAFEstimation.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/GridSearchAFEstimation.java @@ -57,8 +57,7 @@ public class GridSearchAFEstimation extends AlleleFrequencyCalculationModel { ReferenceContext ref, Map GLs, double[] log10AlleleFrequencyPriors, - double[] log10AlleleFrequencyPosteriors, - int minFrequencyToCalculate) { + double[] log10AlleleFrequencyPosteriors) { initializeAFMatrix(GLs); // first, calculate for AF=0 (no change to matrix) @@ -77,17 +76,12 @@ public class GridSearchAFEstimation extends AlleleFrequencyCalculationModel { // an optimization to speed up the calculation: if we are beyond the local maximum such // that subsequent likelihoods won't factor into the confidence score, just quit - if ( i >= minFrequencyToCalculate && maxLikelihoodSeen - log10AlleleFrequencyPosteriors[i] > LOG10_OPTIMIZATION_EPSILON ) + if ( maxLikelihoodSeen - log10AlleleFrequencyPosteriors[i] > LOG10_OPTIMIZATION_EPSILON ) return; if ( log10AlleleFrequencyPosteriors[i] > maxLikelihoodSeen ) maxLikelihoodSeen = log10AlleleFrequencyPosteriors[i]; } - - // TODO: we really need to get rid of this and the minFrequencyToCalculate argument - // it's possible that we need to calculate higher frequencies - for (int i = maxAlleleFrequencyToTest; i <= minFrequencyToCalculate; i++) - log10AlleleFrequencyPosteriors[i] = log10AlleleFrequencyPosteriors[maxAlleleFrequencyToTest]; } /** diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/UnifiedGenotyperEngine.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/UnifiedGenotyperEngine.java index b5b464e65..2c6bf42ce 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/UnifiedGenotyperEngine.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/genotyper/UnifiedGenotyperEngine.java @@ -162,7 +162,7 @@ public class UnifiedGenotyperEngine { // 'zero' out the AFs (so that we don't have to worry if not all samples have reads at this position) clearAFarray(log10AlleleFrequencyPosteriors.get()); - afcm.get().getLog10PNonRef(tracker, refContext, GLs, log10AlleleFrequencyPriors, log10AlleleFrequencyPosteriors.get(), 0); + afcm.get().getLog10PNonRef(tracker, refContext, GLs, log10AlleleFrequencyPriors, log10AlleleFrequencyPosteriors.get()); // find the most likely frequency int bestAFguess = MathUtils.maxElementIndex(log10AlleleFrequencyPosteriors.get()); @@ -239,7 +239,7 @@ public class UnifiedGenotyperEngine { GLs.clear(); glcm.get().getLikelihoods(tracker, refContext, stratifiedContexts, StratifiedAlignmentContext.StratifiedContextType.FORWARD, genotypePriors, GLs); clearAFarray(log10AlleleFrequencyPosteriors.get()); - afcm.get().getLog10PNonRef(tracker, refContext, GLs, log10AlleleFrequencyPriors, log10AlleleFrequencyPosteriors.get(), bestAFguess); + afcm.get().getLog10PNonRef(tracker, refContext, GLs, log10AlleleFrequencyPriors, log10AlleleFrequencyPosteriors.get()); //double[] normalizedLog10Posteriors = MathUtils.normalizeFromLog10(log10AlleleFrequencyPosteriors.get(), true); double forwardLog10PofNull = log10AlleleFrequencyPosteriors.get()[0]; double forwardLog10PofF = MathUtils.log10sum(log10AlleleFrequencyPosteriors.get(), 1); @@ -249,7 +249,7 @@ public class UnifiedGenotyperEngine { GLs.clear(); glcm.get().getLikelihoods(tracker, refContext, stratifiedContexts, StratifiedAlignmentContext.StratifiedContextType.REVERSE, genotypePriors, GLs); clearAFarray(log10AlleleFrequencyPosteriors.get()); - afcm.get().getLog10PNonRef(tracker, refContext, GLs, log10AlleleFrequencyPriors, log10AlleleFrequencyPosteriors.get(), bestAFguess); + afcm.get().getLog10PNonRef(tracker, refContext, GLs, log10AlleleFrequencyPriors, log10AlleleFrequencyPosteriors.get()); //normalizedLog10Posteriors = MathUtils.normalizeFromLog10(log10AlleleFrequencyPosteriors.get(), true); double reverseLog10PofNull = log10AlleleFrequencyPosteriors.get()[0]; double reverseLog10PofF = MathUtils.log10sum(log10AlleleFrequencyPosteriors.get(), 1);