diff --git a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java index 9523ae50b..d8f30c5da 100755 --- a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java @@ -144,7 +144,7 @@ public class GenomeAnalysisEngine { /** * A currently hacky unique name for this GATK instance */ - private String myName = "GATK_" + Math.abs(new Random().nextInt()); + private String myName = "GATK_" + Math.abs(getRandomGenerator().nextInt()); /** * our walker manager @@ -183,6 +183,15 @@ public class GenomeAnalysisEngine { this.referenceMetaDataFiles = referenceMetaDataFiles; } + /** + * Static random number generator and seed. + */ + private static final long GATK_RANDOM_SEED = 47382911L; + private static Random randomGenerator = new Random(GATK_RANDOM_SEED); + + public static final Random getRandomGenerator() { return randomGenerator; } + public static void resetRandomGenerator() { randomGenerator.setSeed(GATK_RANDOM_SEED); } + /** * Actually run the GATK with the specified walker. * diff --git a/java/src/org/broadinstitute/sting/gatk/iterators/DownsampleIterator.java b/java/src/org/broadinstitute/sting/gatk/iterators/DownsampleIterator.java index b2de2b386..1342f11fd 100755 --- a/java/src/org/broadinstitute/sting/gatk/iterators/DownsampleIterator.java +++ b/java/src/org/broadinstitute/sting/gatk/iterators/DownsampleIterator.java @@ -3,21 +3,18 @@ package org.broadinstitute.sting.gatk.iterators; import net.sf.samtools.SAMRecord; import java.util.Iterator; -import java.util.Random; -import org.broadinstitute.sting.gatk.ReadProperties; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; public class DownsampleIterator implements StingSAMIterator { StingSAMIterator it; - Random generator; int cutoff; SAMRecord next; public DownsampleIterator(StingSAMIterator it, double fraction) { this.it = it; - generator = new Random(); cutoff = (int)(fraction * 10000); next = getNextRecord(); } @@ -41,7 +38,7 @@ public class DownsampleIterator implements StingSAMIterator { if ( !it.hasNext() ) return null; SAMRecord rec = it.next(); - if ( generator.nextInt(10000) < cutoff ) + if ( GenomeAnalysisEngine.getRandomGenerator().nextInt(10000) < cutoff ) return rec; } } diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java index 8e6f41ca8..f890f9964 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java @@ -48,7 +48,6 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.refdata.utils.helpers.DbSNPHelper; import org.broadinstitute.sting.gatk.walkers.annotator.interfaces.*; import org.broadinstitute.sting.gatk.walkers.annotator.genomicannotator.*; -import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.exceptions.UserException; diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/interfaces/AnnotationInterfaceManager.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/interfaces/AnnotationInterfaceManager.java index 89106a360..fafa4cd55 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/interfaces/AnnotationInterfaceManager.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/interfaces/AnnotationInterfaceManager.java @@ -3,10 +3,7 @@ package org.broadinstitute.sting.gatk.walkers.annotator.interfaces; import org.broadinstitute.sting.utils.classloader.PluginManager; import org.broadinstitute.sting.utils.exceptions.UserException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; +import java.util.*; public class AnnotationInterfaceManager { private static PluginManager infoFieldAnnotationPluginManager = new PluginManager(InfoFieldAnnotation.class); @@ -70,7 +67,12 @@ public class AnnotationInterfaceManager { for ( Class c : annotationTypePluginManager.getInterfaces() ) classMap.put(c.getSimpleName(), c); - HashSet classes = new HashSet(); + // use a TreeSet so that classes are returned deterministically (the plugin manager apparently isn't deterministic) + TreeSet classes = new TreeSet(new Comparator() { + public int compare(Class o1, Class o2) { + return o1.getSimpleName().compareTo(o2.getSimpleName()); + } + }); if ( annotationGroupsToUse.size() != 1 || !"none".equals(annotationGroupsToUse.get(0)) ) { for ( String group : annotationGroupsToUse ) { diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/beagle/ProduceBeagleInputWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/beagle/ProduceBeagleInputWalker.java index 916bfa9e3..45575827c 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/beagle/ProduceBeagleInputWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/beagle/ProduceBeagleInputWalker.java @@ -33,6 +33,7 @@ import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Hidden; import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils; @@ -95,14 +96,12 @@ public class ProduceBeagleInputWalker extends RodWalker { private Set samples = null; private Set BOOTSTRAP_FILTER = new HashSet( Arrays.asList("bootstrap") ); - private Random generator; private int bootstrapSetSize = 0; private int testSetSize = 0; private CachingFormatter formatter = new CachingFormatter("%5.4f ", 100000); private int certainFPs = 0; public void initialize() { - generator = new Random(); samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(ROD_NAME)); @@ -244,7 +243,7 @@ public class ProduceBeagleInputWalker extends RodWalker { log10Likelihoods = genotype.getLikelihoods().getAsVector(); // see if we need to randomly mask out genotype in this position. - if ( generator.nextDouble() <= insertedNoCallRate ) { + if ( GenomeAnalysisEngine.getRandomGenerator().nextDouble() <= insertedNoCallRate ) { // we are masking out this genotype log10Likelihoods = isMaleOnChrX ? HAPLOID_FLAT_LOG10_LIKELIHOODS : DIPLOID_FLAT_LOG10_LIKELIHOODS; } diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperEngine.java b/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperEngine.java index edc96d9eb..c0d092afd 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperEngine.java @@ -152,7 +152,7 @@ public class UnifiedGenotyperEngine { Map stratifiedContexts = getFilteredAndStratifiedContexts(UAC, refContext, rawContext, model); if ( stratifiedContexts == null ) - return (UAC.OutputMode != OUTPUT_MODE.EMIT_ALL_SITES ? null : new VariantCallContext(generateEmptyContext(tracker, refContext, stratifiedContexts, rawContext), refContext.getBase(), false)); + return (UAC.OutputMode != OUTPUT_MODE.EMIT_ALL_SITES ? null : generateEmptyContext(tracker, refContext, stratifiedContexts, rawContext)); VariantContext vc = calculateLikelihoods(tracker, refContext, stratifiedContexts, AlignmentContextUtils.ReadOrientation.COMPLETE, null, true, model); @@ -201,7 +201,7 @@ public class UnifiedGenotyperEngine { return null; } - private VariantContext generateEmptyContext(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, AlignmentContext rawContext) { + private VariantCallContext generateEmptyContext(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, AlignmentContext rawContext) { VariantContext vc; if ( UAC.GenotypingMode == GenotypeLikelihoodsCalculationModel.GENOTYPING_MODE.GENOTYPE_GIVEN_ALLELES ) { final VariantContext vcInput = tracker.getVariantContext(ref, "alleles", null, ref.getLocus(), true); @@ -226,7 +226,7 @@ public class UnifiedGenotyperEngine { vc = annotationEngine.annotateContext(tracker, ref, stratifiedContexts, vc).iterator().next(); } - return vc; + return new VariantCallContext(vc, ref.getBase(), false); } private VariantContext createVariantContextFromLikelihoods(ReferenceContext refContext, Allele refAllele, Map GLs) { @@ -300,7 +300,7 @@ public class UnifiedGenotyperEngine { if ( vc.getNSamples() == 0 ) return (UAC.OutputMode != OUTPUT_MODE.EMIT_ALL_SITES ? estimateReferenceConfidence(vc, stratifiedContexts, getGenotypePriors(model).getHeterozygosity(), false, 1.0) : - new VariantCallContext(generateEmptyContext(tracker, refContext, stratifiedContexts, rawContext), refContext.getBase(), false)); + generateEmptyContext(tracker, refContext, stratifiedContexts, rawContext)); // 'zero' out the AFs (so that we don't have to worry if not all samples have reads at this position) clearAFarray(log10AlleleFrequencyPosteriors.get()); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java b/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java index a855e3658..e3428a5ec 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java @@ -32,6 +32,7 @@ import net.sf.samtools.util.SequenceUtil; import net.sf.picard.reference.IndexedFastaSequenceFile; import org.broad.tribble.util.variantcontext.VariantContext; import org.broadinstitute.sting.commandline.*; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.arguments.ValidationExclusion; import org.broadinstitute.sting.gatk.datasources.reads.SAMReaderID; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; @@ -627,7 +628,7 @@ public class IndelRealigner extends ReadWalker { // use 'Smith-Waterman' to create alternate consenses from reads that mismatch the reference, using totalRawMismatchSum as the random seed if ( !USE_KNOWN_INDELS_ONLY && !NO_SW ) - generateAlternateConsensesFromReads(altAlignmentsToTest, altConsenses, reference, leftmostIndex, totalRawMismatchSum); + generateAlternateConsensesFromReads(altAlignmentsToTest, altConsenses, reference, leftmostIndex); // if ( debugOn ) System.out.println("------\nChecking consenses...\n--------\n"); @@ -878,8 +879,7 @@ public class IndelRealigner extends ReadWalker { private void generateAlternateConsensesFromReads(final LinkedList altAlignmentsToTest, final Set altConsensesToPopulate, final byte[] reference, - final int leftmostIndex, - final long randomSeed) { + final int leftmostIndex) { // if we are under the limit, use all reads to generate alternate consenses if ( altAlignmentsToTest.size() <= MAX_READS_FOR_CONSENSUSES ) { @@ -891,9 +891,8 @@ public class IndelRealigner extends ReadWalker { // otherwise, choose reads for alternate consenses randomly else { int readsSeen = 0; - Random generator = new Random(randomSeed); while ( readsSeen++ < MAX_READS_FOR_CONSENSUSES && altConsensesToPopulate.size() <= MAX_CONSENSUSES) { - int index = generator.nextInt(altAlignmentsToTest.size()); + int index = GenomeAnalysisEngine.getRandomGenerator().nextInt(altAlignmentsToTest.size()); AlignedRead aRead = altAlignmentsToTest.remove(index); if ( CHECKEARLY ) createAndAddAlternateConsensus1(aRead, altConsensesToPopulate, reference,leftmostIndex); else createAndAddAlternateConsensus(aRead.getReadBases(), altConsensesToPopulate, reference); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/RecalDataManager.java b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/RecalDataManager.java index 80c85b826..fdbeb6a31 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/RecalDataManager.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/RecalDataManager.java @@ -25,6 +25,7 @@ package org.broadinstitute.sting.gatk.walkers.recalibration; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.exceptions.UserException; import org.broadinstitute.sting.utils.sam.GATKSAMRecord; @@ -314,11 +315,10 @@ public class RecalDataManager { * @param read The SAMRecord to parse * @param originalQualScores The array of original quality scores to modify during the correction * @param solidRecalMode Which mode of solid recalibration to apply - * @param coinFlip A random number generator * @param refBases The reference for this read * @return A new array of quality scores that have been ref bias corrected */ - public static byte[] calcColorSpace( final SAMRecord read, byte[] originalQualScores, final SOLID_RECAL_MODE solidRecalMode, final Random coinFlip, final byte[] refBases ) { + public static byte[] calcColorSpace( final SAMRecord read, byte[] originalQualScores, final SOLID_RECAL_MODE solidRecalMode, final byte[] refBases ) { final Object attr = read.getAttribute(RecalDataManager.COLOR_SPACE_ATTRIBUTE_TAG); if( attr != null ) { @@ -354,7 +354,7 @@ public class RecalDataManager { final boolean setBaseN = true; originalQualScores = solidRecalSetToQZero(read, readBases, inconsistency, originalQualScores, refBasesDirRead, setBaseN); } else if( solidRecalMode == SOLID_RECAL_MODE.REMOVE_REF_BIAS ) { // Use the color space quality to probabilistically remove ref bases at inconsistent color space bases - solidRecalRemoveRefBias(read, readBases, inconsistency, colorImpliedBases, refBasesDirRead, coinFlip); + solidRecalRemoveRefBias(read, readBases, inconsistency, colorImpliedBases, refBasesDirRead); } } else { @@ -435,10 +435,9 @@ public class RecalDataManager { * @param inconsistency The array of 1/0 that says if this base is inconsistent with its color * @param colorImpliedBases The bases implied by the color space, RC'd if necessary * @param refBases The reference which has been RC'd if necessary - * @param coinFlip A random number generator */ private static void solidRecalRemoveRefBias( final SAMRecord read, byte[] readBases, final int[] inconsistency, final byte[] colorImpliedBases, - final byte[] refBases, final Random coinFlip) { + final byte[] refBases) { final Object attr = read.getAttribute(RecalDataManager.COLOR_SPACE_QUAL_ATTRIBUTE_TAG); if( attr != null ) { @@ -457,7 +456,7 @@ public class RecalDataManager { if( jjj == iii || inconsistency[jjj] == 0 ) { // Don't want to correct the previous base a second time if it was already corrected in the previous step if( readBases[jjj] == refBases[jjj] ) { if( colorSpaceQuals[jjj] == colorSpaceQuals[jjj+1] ) { // Equal evidence for the color implied base and the reference base, so flip a coin - final int rand = coinFlip.nextInt( 2 ); + final int rand = GenomeAnalysisEngine.getRandomGenerator().nextInt( 2 ); if( rand == 0 ) { // The color implied base won the coin flip readBases[jjj] = colorImpliedBases[jjj]; } @@ -471,7 +470,7 @@ public class RecalDataManager { diffInQuality++; } final int numHigh = Math.round( numLow * (float)Math.pow(10.0f, (float) diffInQuality / 10.0f) ); // The color with higher quality is exponentially more likely - final int rand = coinFlip.nextInt( numLow + numHigh ); + final int rand = GenomeAnalysisEngine.getRandomGenerator().nextInt( numLow + numHigh ); if( rand >= numLow ) { // higher q score won if( maxQuality == (int)colorSpaceQuals[jjj] ) { readBases[jjj] = colorImpliedBases[jjj]; diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java index 8be0a3d8b..4bf3e2381 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java @@ -123,8 +123,6 @@ public class TableRecalibrationWalker extends ReadWalker { @Argument(fullName="fractionToOut1", shortName="fraction", doc="Fraction of records to be placed in out1 (must be 0 >= fraction <= 1); all other records are placed in out2", required=false) protected double fraction = 0.5; - @Argument(fullName="randomSeed", shortName="seed", doc="Random seed to use; if 0, current time will be used", required=false) - protected long SEED = 0; - protected static final String INPUT_VARIANT_ROD_BINDING_NAME = "variant"; - protected Random generator; protected int iFraction; /** @@ -87,11 +84,6 @@ public class RandomlySplitVariants extends RodWalker { vcfWriter1.writeHeader(new VCFHeader(hInfo, samples)); vcfWriter2 = new StandardVCFWriter(file2, true); vcfWriter2.writeHeader(new VCFHeader(hInfo, samples)); - - if ( SEED == 0 ) - generator = new Random(); - else - generator = new Random(SEED); } /** @@ -108,7 +100,7 @@ public class RandomlySplitVariants extends RodWalker { Collection vcs = tracker.getVariantContexts(ref, INPUT_VARIANT_ROD_BINDING_NAME, null, context.getLocation(), true, false); for ( VariantContext vc : vcs ) { - int random = generator.nextInt(1000); + int random = GenomeAnalysisEngine.getRandomGenerator().nextInt(1000); if ( random < iFraction ) vcfWriter1.add(vc, ref.getBase()); else diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index 80efbcdf6..ec5ddfd64 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -25,6 +25,7 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; import org.broad.tribble.util.variantcontext.Genotype; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.utils.MendelianViolation; import org.broad.tribble.util.variantcontext.VariantContext; import org.broad.tribble.vcf.VCFConstants; @@ -127,7 +128,6 @@ public class SelectVariants extends RodWalker { private int variantNumber = 0; private int nVariantsAdded = 0; private int positionToAdd = 0; - private Random generator; private RandomVariantStructure [] variantArray; @@ -185,8 +185,6 @@ public class SelectVariants extends RodWalker { SELECT_RANDOM_FRACTION = fractionRandom > 0; if (SELECT_RANDOM_FRACTION) logger.info("Selecting " + fractionRandom + " variants at random from the variant track"); - - generator = new Random(); } /** @@ -253,7 +251,7 @@ public class SelectVariants extends RodWalker { if (SELECT_RANDOM_NUMBER) { randomlyAddVariant(++variantNumber, sub, ref.getBase()); } - else if (!SELECT_RANDOM_FRACTION || generator.nextDouble() < fractionRandom) { + else if (!SELECT_RANDOM_FRACTION || GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom) { vcfWriter.add(sub, ref.getBase()); } } @@ -332,7 +330,7 @@ public class SelectVariants extends RodWalker { variantArray[nVariantsAdded++] = new RandomVariantStructure(vc, refBase); else { - double v = generator.nextDouble(); + double v = GenomeAnalysisEngine.getRandomGenerator().nextDouble(); double t = (1.0/(rank-numRandom+1)); if ( v < t) { variantArray[positionToAdd].set(vc, refBase); diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/ReadErrorRateWalker.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/ReadErrorRateWalker.java index 550a3f74d..9f41ddc69 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/ReadErrorRateWalker.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/ReadErrorRateWalker.java @@ -25,6 +25,7 @@ package org.broadinstitute.sting.oneoffprojects.walkers; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.refdata.ReadMetaDataTracker; import org.broadinstitute.sting.gatk.walkers.ReadWalker; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; @@ -37,7 +38,6 @@ import net.sf.samtools.SAMRecord; import java.util.HashMap; import java.util.Map; -import java.util.Random; import java.io.PrintStream; /** @@ -108,15 +108,13 @@ public class ReadErrorRateWalker extends ReadWalker data, final Random rand, final int numKMeansIterations ) { + public void initializeRandomModel( final List data, final int numKMeansIterations ) { // initialize random Gaussian means // BUGBUG: this is broken up this way to match the order of calls to rand.nextDouble() in the old code for( final MultivariateGaussian gaussian : gaussians ) { - gaussian.initializeRandomMu( rand ); + gaussian.initializeRandomMu( GenomeAnalysisEngine.getRandomGenerator() ); } // initialize means using K-means algorithm logger.info( "Initializing model with " + numKMeansIterations + " k-means iterations..." ); - initializeMeansUsingKMeans( data, numKMeansIterations, rand ); + initializeMeansUsingKMeans( data, numKMeansIterations ); // initialize uniform mixture coefficients, random covariance matrices, and initial hyperparameters for( final MultivariateGaussian gaussian : gaussians ) { gaussian.pMixtureLog10 = Math.log10( 1.0 / ((double) gaussians.size()) ); - gaussian.initializeRandomSigma( rand ); + gaussian.initializeRandomSigma( GenomeAnalysisEngine.getRandomGenerator() ); gaussian.hyperParameter_a = degreesOfFreedom; gaussian.hyperParameter_b = shrinkage; gaussian.hyperParameter_lambda = dirichletParameter; } } - private void initializeMeansUsingKMeans( final List data, final int numIterations, final Random rand ) { + private void initializeMeansUsingKMeans( final List data, final int numIterations ) { int ttt = 0; while( ttt++ < numIterations ) { @@ -123,7 +123,7 @@ public class GaussianMixtureModel { if( numAssigned != 0 ) { gaussian.divideEqualsMu( ((double) numAssigned) ); } else { - gaussian.initializeRandomMu( rand ); + gaussian.initializeRandomMu( GenomeAnalysisEngine.getRandomGenerator() ); } } } diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/VariantDataManager.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/VariantDataManager.java index 42ebfe74c..6787cc211 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/VariantDataManager.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/VariantDataManager.java @@ -3,6 +3,7 @@ package org.broadinstitute.sting.playground.gatk.walkers.variantrecalibration; import cern.jet.random.Normal; import org.apache.log4j.Logger; import org.broad.tribble.util.variantcontext.VariantContext; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils; @@ -29,9 +30,6 @@ public class VariantDataManager { private final ExpandingArrayList trainingSets; private final VariantRecalibratorArgumentCollection VRAC; - private final static long RANDOM_SEED = 83409701; - private final static Random rand = new Random( RANDOM_SEED ); // this is going to cause problems if it is ever used in an integration test, planning to get rid of HRun anyway - protected final static Logger logger = Logger.getLogger(VariantDataManager.class); public VariantDataManager( final List annotationKeys, final VariantRecalibratorArgumentCollection VRAC ) { @@ -157,7 +155,7 @@ public class VariantDataManager { double value; if( jitter && annotationKey.equalsIgnoreCase("HRUN") ) { // HRun values must be jittered a bit to work in this GMM value = Double.parseDouble( (String)vc.getAttribute( annotationKey ) ); - value += -0.25 + 0.5 * rand.nextDouble(); + value += -0.25 + 0.5 * GenomeAnalysisEngine.getRandomGenerator().nextDouble(); } else if( annotationKey.equals("QUAL") ) { value = vc.getPhredScaledQual(); } else { diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/VariantRecalibratorEngine.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/VariantRecalibratorEngine.java index a1ffd23ea..b4ce0040a 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/VariantRecalibratorEngine.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantrecalibration/VariantRecalibratorEngine.java @@ -3,7 +3,6 @@ package org.broadinstitute.sting.playground.gatk.walkers.variantrecalibration; import org.apache.log4j.Logger; import java.util.List; -import java.util.Random; /** * Created by IntelliJ IDEA. @@ -22,8 +21,6 @@ public class VariantRecalibratorEngine { // the unified argument collection final private VariantRecalibratorArgumentCollection VRAC; - private final static long RANDOM_SEED = 91801305; - private final Random rand = new Random( RANDOM_SEED ); private final static double MIN_PROB_CONVERGENCE_LOG10 = 1.0; ///////////////////////////// @@ -67,7 +64,7 @@ public class VariantRecalibratorEngine { private void variationalBayesExpectationMaximization( final GaussianMixtureModel model, final List data ) { model.cacheEmpiricalStats( data ); - model.initializeRandomModel( data, rand, VRAC.NUM_KMEANS_ITERATIONS ); + model.initializeRandomModel( data, VRAC.NUM_KMEANS_ITERATIONS ); // The VBEM loop double previousLikelihood = model.expectationStep( data ); diff --git a/java/src/org/broadinstitute/sting/utils/BaseUtils.java b/java/src/org/broadinstitute/sting/utils/BaseUtils.java index 35921650e..3f2448ea5 100644 --- a/java/src/org/broadinstitute/sting/utils/BaseUtils.java +++ b/java/src/org/broadinstitute/sting/utils/BaseUtils.java @@ -1,8 +1,7 @@ package org.broadinstitute.sting.utils; -import net.sf.samtools.SAMRecord; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; -import java.util.Random; /** * BaseUtils contains some basic utilities for manipulating nucleotides. @@ -472,9 +471,8 @@ public class BaseUtils { static public int getRandomBaseIndex(int excludeBaseIndex) { int randomBaseIndex = excludeBaseIndex; - Random generator = new Random(); while (randomBaseIndex == excludeBaseIndex) { - randomBaseIndex = generator.nextInt(4); + randomBaseIndex = GenomeAnalysisEngine.getRandomGenerator().nextInt(4); } return randomBaseIndex; diff --git a/java/src/org/broadinstitute/sting/utils/MannWhitneyU.java b/java/src/org/broadinstitute/sting/utils/MannWhitneyU.java index d97a98868..567bbe352 100755 --- a/java/src/org/broadinstitute/sting/utils/MannWhitneyU.java +++ b/java/src/org/broadinstitute/sting/utils/MannWhitneyU.java @@ -2,6 +2,7 @@ package org.broadinstitute.sting.utils; import cern.jet.math.Arithmetic; import cern.jet.random.Normal; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.utils.collections.Pair; import org.broadinstitute.sting.utils.exceptions.StingException; @@ -314,7 +315,7 @@ public class MannWhitneyU { double comp = Double.compare(left.first.doubleValue(),right.first.doubleValue()); if ( comp > 0 ) { return 1; } if ( comp < 0 ) { return -1; } - return MathUtils.rand.nextBoolean() ? -1 : 1; + return GenomeAnalysisEngine.getRandomGenerator().nextBoolean() ? -1 : 1; } } diff --git a/java/src/org/broadinstitute/sting/utils/MathUtils.java b/java/src/org/broadinstitute/sting/utils/MathUtils.java index 7cd9cb161..245755de1 100755 --- a/java/src/org/broadinstitute/sting/utils/MathUtils.java +++ b/java/src/org/broadinstitute/sting/utils/MathUtils.java @@ -31,6 +31,7 @@ import java.math.BigDecimal; import java.util.*; import net.sf.samtools.SAMRecord; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; /** * MathUtils is a static class (no instantiation allowed!) with some useful math methods. @@ -673,11 +674,9 @@ public class MathUtils { return list; } - java.util.Random random = new java.util.Random(); - int idx[] = new int[list.size()]; for (int i = 0; i < list.size(); i++) { - idx[i] = random.nextInt(); + idx[i] = GenomeAnalysisEngine.getRandomGenerator().nextInt(); } Integer[] perm = sortPermutation(idx); @@ -729,9 +728,6 @@ public class MathUtils { return count; } - - static Random rand = new Random(12321); //System.currentTimeMillis()); - /** * Returns n random indices drawn with replacement from the range 0..(k-1) * @@ -744,7 +740,7 @@ public class MathUtils { ArrayList chosen_balls = new ArrayList (k); for (int i=0; i< k; i++) { //Integer chosen_ball = balls[rand.nextInt(k)]; - chosen_balls.add(rand.nextInt(n)); + chosen_balls.add(GenomeAnalysisEngine.getRandomGenerator().nextInt(n)); //balls.remove(chosen_ball); } @@ -765,7 +761,7 @@ public class MathUtils { chosen_balls.add(i); } - Collections.shuffle(chosen_balls, rand); + Collections.shuffle(chosen_balls, GenomeAnalysisEngine.getRandomGenerator()); //return (ArrayList) chosen_balls.subList(0, k); return new ArrayList(chosen_balls.subList(0, k)); diff --git a/java/src/org/broadinstitute/sting/utils/ReservoirDownsampler.java b/java/src/org/broadinstitute/sting/utils/ReservoirDownsampler.java index 1cfe4b25f..30257d967 100644 --- a/java/src/org/broadinstitute/sting/utils/ReservoirDownsampler.java +++ b/java/src/org/broadinstitute/sting/utils/ReservoirDownsampler.java @@ -1,5 +1,6 @@ package org.broadinstitute.sting.utils; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import java.util.*; @@ -14,11 +15,6 @@ import java.util.*; * @version 0.1 */ public class ReservoirDownsampler { - /** - * Create a random number generator with a random, but reproducible, seed. - */ - private final Random random = new Random(47382911L); - /** * The reservoir of elements tracked by this downsampler. */ @@ -54,7 +50,7 @@ public class ReservoirDownsampler { } else { // Get a uniformly distributed int. If the chosen slot lives within the partition, replace the entry in that slot with the newest entry. - int slot = random.nextInt(maxElements); + int slot = GenomeAnalysisEngine.getRandomGenerator().nextInt(maxElements); if(slot >= 0 && slot < maxElements) { T displaced = reservoir.get(slot); reservoir.set(slot,element); diff --git a/java/src/org/broadinstitute/sting/utils/WilcoxonRankSum.java b/java/src/org/broadinstitute/sting/utils/WilcoxonRankSum.java index ecd470544..3efdc8d1f 100755 --- a/java/src/org/broadinstitute/sting/utils/WilcoxonRankSum.java +++ b/java/src/org/broadinstitute/sting/utils/WilcoxonRankSum.java @@ -29,6 +29,7 @@ import cern.jet.random.Normal; import java.util.*; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.utils.collections.Pair; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; @@ -106,10 +107,6 @@ public class WilcoxonRankSum { public enum WILCOXON_SET { SET1, SET2 } public enum WILCOXON_H0 { SET1_NE_SET2, SET1_LT_SET2, SET1_GT_SET2, SMALLER_SET_LT } - // random number generator for dithering - private static final long RANDOM_SEED = 1252863494; - private Random generator = new Random(RANDOM_SEED); - // storage for observations private LinkedList> observations = new LinkedList>(); @@ -254,7 +251,7 @@ public class WilcoxonRankSum { private void dither() { for ( Pair observation : observations ) { // generate a random number between 0 and 10,000 - int rand = generator.nextInt(10000); + int rand = GenomeAnalysisEngine.getRandomGenerator().nextInt(10000); // convert it into a small floating point number by dividing by 1,000,000 double smallFloat = (double)rand / 1000000; diff --git a/java/src/org/broadinstitute/sting/utils/pileup/AbstractReadBackedPileup.java b/java/src/org/broadinstitute/sting/utils/pileup/AbstractReadBackedPileup.java index 954c8a697..cd8486eef 100644 --- a/java/src/org/broadinstitute/sting/utils/pileup/AbstractReadBackedPileup.java +++ b/java/src/org/broadinstitute/sting/utils/pileup/AbstractReadBackedPileup.java @@ -24,6 +24,7 @@ package org.broadinstitute.sting.utils.pileup; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.datasources.sample.Sample; import org.broadinstitute.sting.utils.HasGenomeLocation; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; @@ -562,10 +563,9 @@ public abstract class AbstractReadBackedPileup positions = new TreeSet(); for ( int i = 0; i < desiredCoverage; /* no update */ ) { - if ( positions.add(generator.nextInt(size)) ) + if ( positions.add(GenomeAnalysisEngine.getRandomGenerator().nextInt(size)) ) i++; } diff --git a/java/test/org/broadinstitute/sting/WalkerTest.java b/java/test/org/broadinstitute/sting/WalkerTest.java index ef8ef2dd8..0541ecba1 100755 --- a/java/test/org/broadinstitute/sting/WalkerTest.java +++ b/java/test/org/broadinstitute/sting/WalkerTest.java @@ -30,11 +30,13 @@ import org.broad.tribble.index.IndexFactory; import org.broad.tribble.vcf.VCFCodec; import org.broadinstitute.sting.gatk.CommandLineExecutable; import org.broadinstitute.sting.gatk.CommandLineGATK; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.collections.Pair; import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.exceptions.StingException; import org.testng.Assert; +import org.testng.annotations.BeforeMethod; import java.io.File; import java.util.*; @@ -42,6 +44,11 @@ import java.util.*; public class WalkerTest extends BaseTest { private static final boolean ENABLE_REPORTING = false; + @BeforeMethod + public void initializeRandomGenerator() { + GenomeAnalysisEngine.resetRandomGenerator(); + } + public String assertMatchingMD5(final String name, final File resultsFile, final String expectedMD5) { return assertMatchingMD5(name, resultsFile, expectedMD5, parameterize()); } 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 5b3c7f0db..18fb728ca 100755 --- a/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java +++ b/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java @@ -31,7 +31,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testHasAnnotsAsking1() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " -G \"Standard\" -B:variant,VCF " + validationDataLocation + "vcfexample2.vcf -I " + validationDataLocation + "low_coverage_CEU.chr1.10k-11k.bam -L 1:10,020,000-10,021,000", 1, - Arrays.asList("b4c3bd5cf46a081fd68bea1cbb1eb006")); + Arrays.asList("7e6dc39a191851f41d23753c4cca37a3")); executeTest("test file has annotations, asking for annotations, #1", spec); } @@ -39,7 +39,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testHasAnnotsAsking2() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " -G \"Standard\" -B:variant,VCF " + validationDataLocation + "vcfexample3.vcf -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,000-10,050,000", 1, - Arrays.asList("81417fd6c6635873349e27a70141eab5")); + Arrays.asList("21f01de76f113627c1fa60d7954df871")); executeTest("test file has annotations, asking for annotations, #2", spec); } @@ -63,7 +63,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testNoAnnotsAsking1() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " -G \"Standard\" -B:variant,VCF " + validationDataLocation + "vcfexample2empty.vcf -I " + validationDataLocation + "low_coverage_CEU.chr1.10k-11k.bam -L 1:10,020,000-10,021,000", 1, - Arrays.asList("30fe259f4cc932e592343d0b9dfd192b")); + Arrays.asList("e5fccc9d2c8f21ab494aa2f878a5f197")); executeTest("test file doesn't have annotations, asking for annotations, #1", spec); } @@ -71,7 +71,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testNoAnnotsAsking2() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " -G \"Standard\" -B:variant,VCF " + validationDataLocation + "vcfexample3empty.vcf -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,000-10,050,000", 1, - Arrays.asList("c376f5d378c138271dba33c25d6a8592")); + Arrays.asList("76348339e6dd750308647d8c126c6f4c")); executeTest("test file doesn't have annotations, asking for annotations, #2", spec); } @@ -79,7 +79,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testOverwritingHeader() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " -G \"Standard\" -B:variant,VCF " + validationDataLocation + "vcfexample4.vcf -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,001,292", 1, - Arrays.asList("2e2ef351669a07238923088347494be6")); + Arrays.asList("e82ea45f1eef16b6ebf7def2171ee613")); executeTest("test overwriting header", spec); } diff --git a/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperIntegrationTest.java b/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperIntegrationTest.java index fca1ac3db..5c613b847 100755 --- a/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperIntegrationTest.java +++ b/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperIntegrationTest.java @@ -1,6 +1,7 @@ package org.broadinstitute.sting.gatk.walkers.genotyper; import org.broadinstitute.sting.WalkerTest; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.testng.annotations.Test; import java.io.File; @@ -15,54 +16,56 @@ import java.util.Map; public class UnifiedGenotyperIntegrationTest extends WalkerTest { - private final static String baseCommand = "-T UnifiedGenotyper -R " + b36KGReference + " -NO_HEADER -dt NONE"; + private final static String baseCommand = "-T UnifiedGenotyper -R " + b36KGReference + " -NO_HEADER"; // -------------------------------------------------------------------------------------------------------------- // // testing normal calling // // -------------------------------------------------------------------------------------------------------------- - //@Test + @Test public void testMultiSamplePilot1() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "low_coverage_CEU.chr1.10k-11k.bam -o %s -L 1:10,022,000-10,025,000", 1, - Arrays.asList("65636c29ce1abb3dea095d876f61e45e")); + Arrays.asList("9895541f0395ddb9977abb7d8274831e")); executeTest("test MultiSample Pilot1", spec); } - //@Test + @Test public void testMultiSamplePilot2AndRecallingWithAlleles() { - String md5 = "0d2d2193ff5cf0a3f10292c2d0859f00"; + String md5 = "2a8461e846a437ddcac9f1be185d0a4b"; WalkerTest.WalkerTestSpec spec1 = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "pilot2_daughters.chr20.10k-11k.bam -o %s -L 20:10,000,000-10,050,000", 1, Arrays.asList(md5)); List result = executeTest("test MultiSample Pilot2", spec1).getFirst(); + GenomeAnalysisEngine.resetRandomGenerator(); + WalkerTest.WalkerTestSpec spec2 = new WalkerTest.WalkerTestSpec( baseCommand + " --genotyping_mode GENOTYPE_GIVEN_ALLELES -B:alleles,vcf " + result.get(0).getAbsolutePath() + " -I " + validationDataLocation + "pilot2_daughters.chr20.10k-11k.bam -o %s -L 20:10,000,000-10,050,000", 1, Arrays.asList(md5)); executeTest("test MultiSample Pilot2 with alleles passed in", spec2); } - //@Test + @Test public void testWithAllelesPassedIn() { WalkerTest.WalkerTestSpec spec1 = new WalkerTest.WalkerTestSpec( baseCommand + " --genotyping_mode GENOTYPE_GIVEN_ALLELES -B:alleles,vcf " + validationDataLocation + "allelesForUG.vcf -I " + validationDataLocation + "pilot2_daughters.chr20.10k-11k.bam -o %s -L 20:10,000,000-10,025,000", 1, - Arrays.asList("e95c545b8ae06f0721f260125cfbe1f0")); + Arrays.asList("bcb02e2a969edfbd290b9ec22f1a5884")); executeTest("test MultiSample Pilot2 with alleles passed in", spec1); WalkerTest.WalkerTestSpec spec2 = new WalkerTest.WalkerTestSpec( baseCommand + " --output_mode EMIT_ALL_SITES --genotyping_mode GENOTYPE_GIVEN_ALLELES -B:alleles,vcf " + validationDataLocation + "allelesForUG.vcf -I " + validationDataLocation + "pilot2_daughters.chr20.10k-11k.bam -o %s -L 20:10,000,000-10,025,000", 1, - Arrays.asList("6c96d76b9bc3aade0c768d7c657ae210")); + Arrays.asList("f1ff29ac1c79c76fcb6c290b39bc3a18")); executeTest("test MultiSample Pilot2 with alleles passed in", spec2); } - //@Test + @Test public void testSingleSamplePilot2() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -glm SNP -L 1:10,000,000-10,100,000", 1, - Arrays.asList("ad6dfb8c341c3a40d3944a32d29e94f4")); + Arrays.asList("a7f59c32f63e8ca4c3ffe468c51fbaa2")); executeTest("test SingleSample Pilot2", spec); } @@ -72,9 +75,9 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { // // -------------------------------------------------------------------------------------------------------------- - private final static String COMPRESSED_OUTPUT_MD5 = "9cfe952c0cb3e58fb7bf12b0df6d96f4"; + private final static String COMPRESSED_OUTPUT_MD5 = "92be4e11ee4660b67b32ae466d0651b0"; - //@Test + @Test public void testCompressedOutput() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,100,000", 1, @@ -97,20 +100,24 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { // // -------------------------------------------------------------------------------------------------------------- - //@Test + @Test (enabled = false) public void testParallelization() { - String md5 = "8d9965a5a4d23520a6a07272f217081e"; + String md5 = "7e51ad5e76b8440cbf26373df83a8f41"; WalkerTest.WalkerTestSpec spec1 = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,075,000", 1, Arrays.asList(md5)); executeTest("test parallelization (single thread)", spec1); + GenomeAnalysisEngine.resetRandomGenerator(); + WalkerTest.WalkerTestSpec spec2 = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,075,000 -nt 2", 1, Arrays.asList(md5)); executeTest("test parallelization (2 threads)", spec2); + GenomeAnalysisEngine.resetRandomGenerator(); + WalkerTest.WalkerTestSpec spec3 = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,075,000 -nt 4", 1, Arrays.asList(md5)); @@ -123,13 +130,12 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { // // -------------------------------------------------------------------------------------------------------------- - //@Test + @Test public void testCallingParameters() { HashMap e = new HashMap(); - e.put( "--min_base_quality_score 26", "5f1cfb9c7f82e6414d5db7aa344813ac" ); - e.put( "--min_mapping_quality_score 26", "3c0104c8ae70f8f8def90f317decd5ff" ); - e.put( "--max_mismatches_in_40bp_window 5", "5ecaf4281410b67e8e2e164f2ea0d58a" ); - e.put( "--p_nonref_model GRID_SEARCH", "27c76efb74acb62aa13a6685c7566e6c" ); + e.put( "--min_base_quality_score 26", "e74b0f3c3977f383645e82ae76034932" ); + e.put( "--min_mapping_quality_score 26", "5f08d9e052bdb04a2a5ee78db349dde9" ); + e.put( "--p_nonref_model GRID_SEARCH", "2f1350f76a571d28cd06e59ea6dffe4b" ); for ( Map.Entry entry : e.entrySet() ) { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( @@ -139,12 +145,12 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { } } - //@Test + @Test public void testOutputParameter() { HashMap e = new HashMap(); - e.put( "-sites_only", "71e561ba6fc66bd8b84907252f71ea55" ); - e.put( "--output_mode EMIT_ALL_CONFIDENT_SITES", "fee7d5f562ecd2a1b7c7ed6ac6b80a97" ); - e.put( "--output_mode EMIT_ALL_SITES", "2ca25ad91f7a746f715afdca5d516768" ); + e.put( "-sites_only", "63b76c4d26edf8cbb5bd91dafc81fee1" ); + e.put( "--output_mode EMIT_ALL_CONFIDENT_SITES", "5bf0268945d953377ea3a811b20ff1bc" ); + e.put( "--output_mode EMIT_ALL_SITES", "a1730ea5ae5e1aa57d85d9d2372facc8" ); for ( Map.Entry entry : e.entrySet() ) { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( @@ -154,16 +160,16 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { } } - //@Test + @Test public void testConfidence() { WalkerTest.WalkerTestSpec spec1 = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,010,000 -stand_call_conf 10 ", 1, - Arrays.asList("27c76efb74acb62aa13a6685c7566e6c")); + Arrays.asList("5f08d9e052bdb04a2a5ee78db349dde9")); executeTest("test confidence 1", spec1); WalkerTest.WalkerTestSpec spec2 = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,010,000 -stand_emit_conf 10 ", 1, - Arrays.asList("d49ec8c1476cecb8e3153894cc0f6662")); + Arrays.asList("0d0bbfd08d1ce35ec1c007ba0f8dfe37")); executeTest("test confidence 2", spec2); } @@ -172,11 +178,11 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { // testing heterozygosity // // -------------------------------------------------------------------------------------------------------------- - //@Test + @Test public void testHeterozyosity() { HashMap e = new HashMap(); - e.put( 0.01, "37d6e63d313206b11b99194d16aa2147" ); - e.put( 1.0 / 1850, "c1c48e0c4724b75f12936e22a8629457" ); + e.put( 0.01, "9ed7893a36b27d5e63b6ee021918a4dd" ); + e.put( 1.0 / 1850, "533bd796d2345a00536bf3164c4f75e1" ); for ( Map.Entry entry : e.entrySet() ) { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( @@ -192,7 +198,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { // testing calls with SLX, 454, and SOLID data // // -------------------------------------------------------------------------------------------------------------- - //@Test + @Test public void testMultiTechnologies() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + @@ -200,7 +206,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { " -o %s" + " -L 1:10,000,000-10,100,000", 1, - Arrays.asList("645b9da6cba47bda8ee2142a6bb92d2c")); + Arrays.asList("1cdc0a1a40495cd17461280a1a37d429")); executeTest(String.format("test multiple technologies"), spec); } @@ -210,7 +216,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { // testing calls with BAQ // // -------------------------------------------------------------------------------------------------------------- - //@Test + @Test public void testCallingWithBAQ() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + @@ -219,7 +225,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { " -L 1:10,000,000-10,100,000" + " -baq CALCULATE_AS_NECESSARY", 1, - Arrays.asList("1fe33a09dff4624a4502e32072f34c0e")); + Arrays.asList("940b42d14378e41d45e5e25a9b5aaebc")); executeTest(String.format("test calling with BAQ"), spec); } @@ -230,7 +236,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { // // -------------------------------------------------------------------------------------------------------------- // Basic indel testing with SLX data - //@Test + @Test public void testSimpleIndels() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + @@ -245,7 +251,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { } // Basic indel testing with SLX data - //@Test + @Test public void testIndelsWithLowMinAlleleCnt() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + @@ -259,7 +265,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { executeTest(String.format("test indel caller in SLX witn low min allele count"), spec); } - //@Test + @Test public void testMultiTechnologyIndels() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + diff --git a/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerIntegrationTest.java b/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerIntegrationTest.java index 2538f306f..67667e12a 100755 --- a/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerIntegrationTest.java +++ b/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerIntegrationTest.java @@ -40,7 +40,7 @@ public class IndelRealignerIntegrationTest extends WalkerTest { } - @Test(dependsOnMethods = { "testDefaults" }) + @Test public void testKnownsOnly() { WalkerTestSpec spec1 = new WalkerTestSpec( baseCommand + "-knownsOnly -B:indels,vcf " + knownIndels, @@ -55,7 +55,7 @@ public class IndelRealignerIntegrationTest extends WalkerTest { executeTest("realigner known indels only from dbsnp", spec2); } - @Test(dependsOnMethods = { "testKnownsOnly" }) + @Test public void testLods() { HashMap e = new HashMap(); e.put( "-LOD 60", base_md5 ); @@ -70,7 +70,7 @@ public class IndelRealignerIntegrationTest extends WalkerTest { } } - @Test(dependsOnMethods = { "testLods" }) + @Test public void testLongRun() { WalkerTestSpec spec = new WalkerTestSpec( "-T IndelRealigner -noPG -R " + b36KGReference + " -I " + validationDataLocation + "NA12878.chrom1.SLX.SRP000032.2009_06.bam -L 1:10,000,000-11,000,000 -targetIntervals " + validationDataLocation + "indelRealignerTest.NA12878.chrom1.intervals -compress 0 -o %s", @@ -79,7 +79,7 @@ public class IndelRealignerIntegrationTest extends WalkerTest { executeTest("realigner long run", spec); } - @Test(dependsOnMethods = { "testLongRun" }) + @Test public void testNoTags() { WalkerTestSpec spec = new WalkerTestSpec( baseCommand + "--noOriginalAlignmentTags", @@ -88,7 +88,7 @@ public class IndelRealignerIntegrationTest extends WalkerTest { executeTest("realigner no output tags", spec); } - @Test(dependsOnMethods = { "testNoTags" }) + @Test public void testStats() { WalkerTestSpec spec1 = new WalkerTestSpec( baseCommandPrefix + "-stats %s -o /dev/null", @@ -103,7 +103,7 @@ public class IndelRealignerIntegrationTest extends WalkerTest { executeTest("realigner stats", spec2); } - @Test(dependsOnMethods = { "testStats" }) + @Test public void testMaxReadsInMemory() { HashMap e = new HashMap(); e.put( "--maxReadsInMemory 10000", "f8e4279cba9fb3a2181d1ce28f7a62af" ); diff --git a/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersIntegrationTest.java b/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersIntegrationTest.java index 14e015222..dd7af78a3 100755 --- a/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersIntegrationTest.java +++ b/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersIntegrationTest.java @@ -165,7 +165,7 @@ public class RecalibrationWalkersIntegrationTest extends WalkerTest { @Test public void testTableRecalibratorSolidIndelsRemoveRefBias() { HashMap e = new HashMap(); - e.put( validationDataLocation + "NA19240.chr1.BFAST.SOLID.bam", "907ebdc7da8c61fb0141c8441de52844" ); + e.put( validationDataLocation + "NA19240.chr1.BFAST.SOLID.bam", "aa9a82f88ca30e320dbf65539066c9c9" ); for ( Map.Entry entry : e.entrySet() ) { String bam = entry.getKey(); diff --git a/java/test/org/broadinstitute/sting/oneoffprojects/walkers/RegionalAssociationUnitTest.java b/java/test/org/broadinstitute/sting/oneoffprojects/walkers/RegionalAssociationUnitTest.java index 077388946..8c62798e9 100755 --- a/java/test/org/broadinstitute/sting/oneoffprojects/walkers/RegionalAssociationUnitTest.java +++ b/java/test/org/broadinstitute/sting/oneoffprojects/walkers/RegionalAssociationUnitTest.java @@ -68,7 +68,7 @@ public class RegionalAssociationUnitTest extends BaseTest { Assert.assertEquals(AssociationTestRunner.getTestValues(test3).second.first,0.610643593,2e-4); } - @Test + @Test (enabled = false) private void testUStatistic() { logger.warn("Testing U statistics"); UTest test1 = new UTest();