From c59b2a8296cc70141a2dc84354ec017948fa81ec Mon Sep 17 00:00:00 2001 From: fromer Date: Mon, 31 Jan 2011 17:13:05 +0000 Subject: [PATCH] Removed experimental "master merging" from CombineVariants git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@5138 348d0f76-0448-11de-a6fe-93d51630548a --- .../variantcontext/VariantContextUtils.java | 64 +------------------ .../walkers/variantutils/CombineVariants.java | 15 ++--- ...ingToTrioPhasingNoRecombinationWalker.java | 2 +- 3 files changed, 7 insertions(+), 74 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/contexts/variantcontext/VariantContextUtils.java b/java/src/org/broadinstitute/sting/gatk/contexts/variantcontext/VariantContextUtils.java index bc7721fe8..4e70428f7 100755 --- a/java/src/org/broadinstitute/sting/gatk/contexts/variantcontext/VariantContextUtils.java +++ b/java/src/org/broadinstitute/sting/gatk/contexts/variantcontext/VariantContextUtils.java @@ -316,71 +316,9 @@ public class VariantContextUtils { } public enum VariantMergeType { - UNION, INTERSECT, MASTER + UNION, INTERSECT } - /** - * Performs a master merge on the VCs. Here there is a master input [contains all of the information] and many - * VCs containing partial, extra genotype information which should be added to the master. For example, - * we scatter out the phasing algorithm over some samples in the master, producing a minimal VCF with phasing - * information per genotype. The master merge will add the PQ information from each genotype record, where - * appropriate, to the master VC. - * - * @param genomeLocParser - * @param unsortedVCs - * @param masterName - * @param refBase - * @return - */ - public static VariantContext masterMerge(Collection unsortedVCs, String masterName) { - VariantContext master = findMaster(unsortedVCs, masterName); - Map genotypes = master.getGenotypes(); - for ( Genotype g : genotypes.values() ) { - genotypes.put(g.getSampleName(), new MutableGenotype(g)); - } - - for ( VariantContext vc : unsortedVCs ) { - if ( ! vc.getSource() .equals(masterName) ) { - for ( Genotype g : vc.getGenotypes().values() ) { - MutableGenotype masterG = (MutableGenotype)genotypes.get(g.getSampleName()); - for ( Map.Entry attr : g.getAttributes().entrySet() ) { - if ( ! masterG.hasAttribute(attr.getKey()) ) { - //System.out.printf("Adding attribute %s to masterG %s, new %s%n", attr, masterG, g); - masterG.putAttribute(attr.getKey(), attr.getValue()); - } - } - - if ( masterG.isPhased() != g.isPhased() ) { - // System.out.printf("Updating phasing %s to masterG %s, new %s%n", g.isPhased(), masterG, g); - masterG.setPhase(g.isPhased()); - } - -// if ( MathUtils.compareDoubles(masterG.getNegLog10PError(), g.getNegLog10PError()) != 0 ) { -// System.out.printf("Updating GQ %s to masterG %s, new %s%n", g.getNegLog10PError(), masterG, g); -// masterG.setNegLog10PError(g.getNegLog10PError()); -// } - - // TODO -- WARNING -- THIS CODE DOES NOT ACTUALLY LOOK AT ALL OF THE GENOTYPE ATTRIBUTES, ONLY THOSE - // TODO -- WARNING -- IMMEDIATELY USEFUL TO PHASING. A COMPLETE IMPLEMENTATION WILL NEED TO HANDLE - // TODO -- WARNING -- ALL OF THE FIELDS LIKE ALLELES, ETC - } - } - } - - return new VariantContext(master.getSource(), master.getChr(), master.getStart(), master.getEnd(), master.getAlleles(), genotypes, master.getNegLog10PError(), master.getFilters(), master.getAttributes()); - } - - private static final VariantContext findMaster(Collection unsortedVCs, String masterName) { - for ( VariantContext vc : unsortedVCs ) { - if ( vc.getSource() .equals(masterName) ) { - return vc; - } - } - - throw new ReviewedStingException(String.format("Couldn't find master VCF %s at %s", masterName, unsortedVCs.iterator().next())); - } - - public static VariantContext simpleMerge(GenomeLocParser genomeLocParser, Collection unsortedVCs, byte refBase) { return simpleMerge(genomeLocParser, unsortedVCs, null, VariantMergeType.INTERSECT, GenotypeMergeType.UNSORTED, false, false, refBase); } diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java b/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java index 1a21a92e0..b306b915e 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java @@ -120,29 +120,24 @@ public class CombineVariants extends RodWalker { } public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { - if ( tracker == null ) // RodWalkers can make funky map calls + if (tracker == null) // RodWalkers can make funky map calls return 0; // get all of the vcf rods at this locus // Need to provide reference bases to simpleMerge starting at current locus Collection vcs = tracker.getAllVariantContexts(ref, context.getLocation()); - VariantContext mergedVC = null; - if ( variantMergeOption == VariantContextUtils.VariantMergeType.MASTER ) { - mergedVC = VariantContextUtils.masterMerge(vcs, "master"); - } else { - mergedVC = VariantContextUtils.simpleMerge(getToolkit().getGenomeLocParser(),vcs, priority, variantMergeOption, - genotypeMergeOption, true, printComplexMerges, ref.getBase(), SET_KEY, filteredAreUncalled); - } + VariantContext mergedVC = VariantContextUtils.simpleMerge(getToolkit().getGenomeLocParser(), vcs, priority, variantMergeOption, + genotypeMergeOption, true, printComplexMerges, ref.getBase(), SET_KEY, filteredAreUncalled); //out.printf(" merged => %s%nannotated => %s%n", mergedVC, annotatedMergedVC); - if ( mergedVC != null ) { // only operate at the start of events + if (mergedVC != null) { // only operate at the start of events HashMap attributes = new HashMap(mergedVC.getAttributes()); // re-compute chromosome counts VariantContextUtils.calculateChromosomeCounts(mergedVC, attributes, false); VariantContext annotatedMergedVC = VariantContext.modifyAttributes(mergedVC, attributes); - if ( minimalVCF ) + if (minimalVCF) annotatedMergedVC = VariantContextUtils.pruneVariantContext(annotatedMergedVC, new HashSet(Arrays.asList(SET_KEY))); vcfWriter.add(annotatedMergedVC, ref.getBase()); } diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/phasing/ComparePhasingToTrioPhasingNoRecombinationWalker.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/phasing/ComparePhasingToTrioPhasingNoRecombinationWalker.java index 078c8e0c4..4027bb8eb 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/phasing/ComparePhasingToTrioPhasingNoRecombinationWalker.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/phasing/ComparePhasingToTrioPhasingNoRecombinationWalker.java @@ -497,7 +497,7 @@ class CompareTrioAndPhasingTracks { out.println(""); } - private static String percentString(double numerator, double denominator) { + private static String percentString(int numerator, int denominator) { int NUM_DECIMAL_PLACES = 1; String percent = new Formatter().format("%." + NUM_DECIMAL_PLACES + "f", MathUtils.percentage(numerator, denominator)).toString();