diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/ContrastiveRecalibrator.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/ContrastiveRecalibrator.java index 692aae3a3..8311faba6 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/ContrastiveRecalibrator.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/ContrastiveRecalibrator.java @@ -210,7 +210,7 @@ public class ContrastiveRecalibrator extends RodWalker reduceSum ) { dataManager.setData( reduceSum ); - dataManager.normalizeData(); + dataManager.normalizeData(); // Each data point is now (x - mean) / standard deviation final GaussianMixtureModel goodModel = engine.generateModel( dataManager.getTrainingData() ); engine.evaluateData( dataManager.getData(), goodModel, false ); final GaussianMixtureModel badModel = engine.generateModel( dataManager.selectWorstVariants( VRAC.PERCENT_BAD_VARIANTS ) ); @@ -250,12 +250,10 @@ public class ContrastiveRecalibrator extends RodWalker fakeData = new ExpandingArrayList(); @@ -266,6 +264,7 @@ public class ContrastiveRecalibrator extends RodWalker data ) { @@ -50,36 +49,28 @@ public class VariantRecalibratorEngine { } } - ///////////////////////////// - // Private Methods used for initialization - ///////////////////////////// - - private void initialize( final VariantRecalibratorArgumentCollection VRAC ) { - } - ///////////////////////////// // Private Methods used for generating a GaussianMixtureModel ///////////////////////////// private void variationalBayesExpectationMaximization( final GaussianMixtureModel model, final List data ) { - model.cacheEmpiricalStats(); model.initializeRandomModel( data, VRAC.NUM_KMEANS_ITERATIONS ); // The VBEM loop model.normalizePMixtureLog10(); model.expectationStep( data ); - double currentLikelihood; + double currentChangeInMixtureCoefficients; int iteration = 0; logger.info("Finished iteration " + iteration ); while( iteration < VRAC.MAX_ITERATIONS ) { iteration++; model.maximizationStep( data ); - currentLikelihood = model.normalizePMixtureLog10(); - model.expectationStep( data ); - logger.info("Current change in mixture coefficients = " + String.format("%.5f", currentLikelihood)); + currentChangeInMixtureCoefficients = model.normalizePMixtureLog10(); + model.expectationStep(data); + logger.info("Current change in mixture coefficients = " + String.format("%.5f", currentChangeInMixtureCoefficients)); logger.info("Finished iteration " + iteration ); - if( iteration > 2 && currentLikelihood < MIN_PROB_CONVERGENCE ) { + if( iteration > 2 && currentChangeInMixtureCoefficients < MIN_PROB_CONVERGENCE ) { logger.info("Convergence!"); break; }