From dd177b17140c2d143feadff754d9ff8292413d97 Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Thu, 10 Jan 2013 16:50:43 -0500 Subject: [PATCH] Removing fully commented out varianteval evaluators - Files were completely commmented out, and were screwing up my license script. Dont like them. Removed them. GSATDG-5 --- .../GenotypePhasingEvaluator.java | 361 ------------------ .../SamplePhasingStatistics.java | 89 ----- 2 files changed, 450 deletions(-) delete mode 100755 protected/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/genotypePhasingEvaluator/GenotypePhasingEvaluator.java delete mode 100644 protected/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/genotypePhasingEvaluator/SamplePhasingStatistics.java diff --git a/protected/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/genotypePhasingEvaluator/GenotypePhasingEvaluator.java b/protected/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/genotypePhasingEvaluator/GenotypePhasingEvaluator.java deleted file mode 100755 index 9845318a0..000000000 --- a/protected/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/genotypePhasingEvaluator/GenotypePhasingEvaluator.java +++ /dev/null @@ -1,361 +0,0 @@ -//package org.broadinstitute.sting.gatk.walkers.varianteval.evaluators.genotypePhasingEvaluator; -// -//import org.apache.log4j.Logger; -//import org.broadinstitute.sting.gatk.contexts.AlignmentContext; -//import org.broadinstitute.sting.gatk.contexts.ReferenceContext; -//import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; -//import org.broadinstitute.sting.gatk.walkers.phasing.AllelePair; -//import org.broadinstitute.sting.gatk.walkers.phasing.ReadBackedPhasingWalker; -//import org.broadinstitute.sting.gatk.walkers.varianteval.VariantEvalWalker; -//import org.broadinstitute.sting.gatk.walkers.varianteval.evaluators.VariantEvaluator; -//import org.broadinstitute.sting.gatk.walkers.varianteval.util.Analysis; -//import org.broadinstitute.sting.gatk.walkers.varianteval.util.DataPoint; -//import org.broadinstitute.sting.gatk.walkers.varianteval.util.EvaluationContext; -//import org.broadinstitute.sting.utils.GenomeLoc; -//import org.broadinstitute.sting.utils.MathUtils; -//import org.broadinstitute.variant.variantcontext.Genotype; -//import org.broadinstitute.variant.variantcontext.GenotypesContext; -//import org.broadinstitute.variant.variantcontext.VariantContext; -// -//import java.util.HashMap; -//import java.util.HashSet; -//import java.util.Set; -// -///* -// * Copyright (c) 2010 The Broad Institute -// * -// * Permission is hereby granted, free of charge, to any person -// * obtaining a copy of this software and associated documentation -// * files (the "Software"), to deal in the Software without -// * restriction, including without limitation the rights to use, -// * copy, modify, merge, publish, distribute, sublicense, and/or sell -// * copies of the Software, and to permit persons to whom the -// * Software is furnished to do so, subject to the following -// * conditions: -// * -// * The above copyright notice and this permission notice shall be -// * included in all copies or substantial portions of the Software. -// * -// * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -// * THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// */ -// -//@Analysis(name = "Genotype Phasing Evaluation", description = "Evaluates the phasing of genotypes in different tracks") -//public class GenotypePhasingEvaluator extends VariantEvaluator { -// protected final static Logger logger = Logger.getLogger(GenotypePhasingEvaluator.class); -// -// // a mapping from sample to stats -// @DataPoint(description = "the phasing statistics for each sample") -// public SamplePhasingStatistics samplePhasingStatistics = null; -// -// SamplePreviousGenotypes samplePrevGenotypes = null; -// -// double minPhaseQuality = 10.0; -// -// public void initialize(VariantEvalWalker walker) { -// super.initialize(walker); -// this.samplePhasingStatistics = new SamplePhasingStatistics(walker.getMinPhaseQuality()); -// this.samplePrevGenotypes = new SamplePreviousGenotypes(); -// } -// -// public String getName() { -// return "GenotypePhasingEvaluator"; -// } -// -// public int getComparisonOrder() { -// return 2; // we only need to see pairs of (comp, eval) -// } -// -// public String toString() { -// return getName() + ": "; -// } -// -// public void update2(VariantContext eval, VariantContext comp, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { -// update2(eval,comp,tracker,ref,context,null); -// } -// -// public String update2(VariantContext eval, VariantContext comp, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context, EvaluationContext group) { -// //public String update2(VariantContext eval, VariantContext comp, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context, VariantEvalWalker.EvaluationContext group) { -// Reasons interesting = new Reasons(); -// if (ref == null) -// return interesting.toString(); -// GenomeLoc curLocus = ref.getLocus(); -// -// logger.debug("update2() locus: " + curLocus); -// logger.debug("comp = " + comp + " eval = " + eval); -// -// Set allSamples = new HashSet(); -// -// GenotypesContext compSampGenotypes = null; -// if (isRelevantToPhasing(comp)) { -// allSamples.addAll(comp.getSampleNames()); -// compSampGenotypes = comp.getGenotypes(); -// } -// -// GenotypesContext evalSampGenotypes = null; -// if (isRelevantToPhasing(eval)) { -// allSamples.addAll(eval.getSampleNames()); -// evalSampGenotypes = eval.getGenotypes(); -// } -// -// for (String samp : allSamples) { -// logger.debug("sample = " + samp); -// -// Genotype compSampGt = null; -// if (compSampGenotypes != null) -// compSampGt = compSampGenotypes.get(samp); -// -// Genotype evalSampGt = null; -// if (evalSampGenotypes != null) -// evalSampGt = evalSampGenotypes.get(samp); -// -// if (compSampGt == null || evalSampGt == null || compSampGt.isNoCall() || evalSampGt.isNoCall()) { // Since either comp or eval (or both) are missing the site, the best we can do is hope to preserve phase [if the non-missing one preserves phase] -// // Having an unphased site breaks the phasing for the sample [does NOT permit "transitive phasing"] - hence, must reset phasing knowledge for both comp and eval [put a null CompEvalGenotypes]: -// if (isNonNullButUnphased(compSampGt) || isNonNullButUnphased(evalSampGt)) -// samplePrevGenotypes.put(samp, null); -// } -// else { // Both comp and eval have a non-null Genotype at this site: -// AllelePair compAllelePair = new AllelePair(compSampGt); -// AllelePair evalAllelePair = new AllelePair(evalSampGt); -// -// boolean breakPhasing = false; -// if (compSampGt.isHet() != evalSampGt.isHet() || compSampGt.isHom() != evalSampGt.isHom()) -// breakPhasing = true; // since they are not both het or both hom -// else { // both are het, or both are hom: -// boolean topMatchesTopAndBottomMatchesBottom = (topMatchesTop(compAllelePair, evalAllelePair) && bottomMatchesBottom(compAllelePair, evalAllelePair)); -// boolean topMatchesBottomAndBottomMatchesTop = (topMatchesBottom(compAllelePair, evalAllelePair) && bottomMatchesTop(compAllelePair, evalAllelePair)); -// if (!topMatchesTopAndBottomMatchesBottom && !topMatchesBottomAndBottomMatchesTop) -// breakPhasing = true; // since the 2 VCFs have different diploid genotypes for this sample -// } -// -// if (breakPhasing) { -// samplePrevGenotypes.put(samp, null); // nothing to do for this site, AND must remove any history for the future -// } -// else if (compSampGt.isHet() && evalSampGt.isHet()) { -// /* comp and eval have the HET same Genotype at this site: -// [Note that if both are hom, then nothing is done here, but the het history IS preserved]. -// */ -// CompEvalGenotypes prevCompAndEval = samplePrevGenotypes.get(samp); -// if (prevCompAndEval != null && !prevCompAndEval.getLocus().onSameContig(curLocus)) // exclude curLocus if it is "phased" relative to a different chromosome -// prevCompAndEval = null; -// -// // Replace the previous hets with the current hets: -// samplePrevGenotypes.put(samp, curLocus, compSampGt, evalSampGt); -// -// if (prevCompAndEval != null) { -// GenomeLoc prevLocus = prevCompAndEval.getLocus(); -// logger.debug("Potentially phaseable het locus: " + curLocus + " [relative to previous het locus: " + prevLocus + "]"); -// PhaseStats ps = samplePhasingStatistics.ensureSampleStats(samp); -// -// boolean compSampIsPhased = genotypesArePhasedAboveThreshold(compSampGt); -// boolean evalSampIsPhased = genotypesArePhasedAboveThreshold(evalSampGt); -// if (compSampIsPhased || evalSampIsPhased) { -// if (!evalSampIsPhased) { -// ps.onlyCompPhased++; -// //interesting.addReason("ONLY_COMP", samp, group, prevLocus, ""); -// } -// else if (!compSampIsPhased) { -// ps.onlyEvalPhased++; -// //interesting.addReason("ONLY_EVAL", samp, group, prevLocus, ""); -// } -// else { // both comp and eval are phased: -// AllelePair prevCompAllelePair = new AllelePair(prevCompAndEval.getCompGenotpye()); -// AllelePair prevEvalAllelePair = new AllelePair(prevCompAndEval.getEvalGenotype()); -// -// // Sufficient to check only the top of comp, since we ensured that comp and eval have the same diploid genotypes for this sample: -// boolean topsMatch = (topMatchesTop(prevCompAllelePair, prevEvalAllelePair) && topMatchesTop(compAllelePair, evalAllelePair)); -// boolean topMatchesBottom = (topMatchesBottom(prevCompAllelePair, prevEvalAllelePair) && topMatchesBottom(compAllelePair, evalAllelePair)); -// -// if (topsMatch || topMatchesBottom) { -// ps.phasesAgree++; -// -// Double compPQ = getPQ(compSampGt); -// Double evalPQ = getPQ(evalSampGt); -// if (compPQ != null && evalPQ != null && MathUtils.compareDoubles(compPQ, evalPQ) != 0) { -// //interesting.addReason("PQ_CHANGE", samp, group, prevLocus, compPQ + " -> " + evalPQ); -// } -// } -// else { -// ps.phasesDisagree++; -// logger.debug("SWITCHED locus: " + curLocus); -// //interesting.addReason("SWITCH", samp, group, prevLocus, toString(prevCompAllelePair, compAllelePair) + " -> " + toString(prevEvalAllelePair, evalAllelePair)); -// } -// } -// } -// else { -// ps.neitherPhased++; -// } -// } -// } -// } -// } -// logger.debug("\n" + samplePhasingStatistics + "\n"); -// -// return interesting.toString(); -// } -// -// public static boolean isRelevantToPhasing(VariantContext vc) { -// return (vc != null && !vc.isFiltered()); -// } -// -// public boolean isNonNullButUnphased(Genotype gt) { -// return (gt != null && !gt.isNoCall() && !genotypesArePhasedAboveThreshold(gt)); -// } -// -// public boolean genotypesArePhasedAboveThreshold(Genotype gt) { -// if (gt.isHom()) // Can always consider a hom site to be phased to its predecessor, since its successor will only be phased to it if it's hom or "truly" phased -// return true; -// -// if (!gt.isPhased()) -// return false; -// -// Double pq = getPQ(gt); -// return (pq == null || pq >= minPhaseQuality); -// } -// -// public static Double getPQ(Genotype gt) { -// Double d = gt.getAttributeAsDouble(ReadBackedPhasingWalker.PQ_KEY, -1); -// return d == -1 ? null : d; -// } -// -// public static boolean topMatchesTop(AllelePair b1, AllelePair b2) { -// return b1.getTopAllele().equals(b2.getTopAllele()); -// } -// -// public static boolean topMatchesBottom(AllelePair b1, AllelePair b2) { -// return b1.getTopAllele().equals(b2.getBottomAllele()); -// } -// -// public static boolean bottomMatchesTop(AllelePair b1, AllelePair b2) { -// return topMatchesBottom(b2, b1); -// } -// -// public static boolean bottomMatchesBottom(AllelePair b1, AllelePair b2) { -// return b1.getBottomAllele().equals(b2.getBottomAllele()); -// } -// -// public String toString(AllelePair prev, AllelePair cur) { -// return prev.getTopAllele().getBaseString() + "+" + cur.getTopAllele().getBaseString() + "|" + prev.getBottomAllele().getBaseString() + "+" + cur.getBottomAllele().getBaseString(); -// } -// -// public void finalizeEvaluation() { -// } -// -// private static class Reasons { -// private StringBuilder sb; -// -// public Reasons() { -// sb = new StringBuilder(); -// } -// -//// public void addReason(String category, String sample, VariantEvalWalker.EvaluationContext evalGroup, GenomeLoc prevLoc, String reason) { -//// sb.append(category + "(" + sample + ", previous: " + prevLoc + " [" + evalGroup.compTrackName + ", " + evalGroup.evalTrackName + "]): " + reason + ";"); -//// } -// -// public String toString() { -// if (sb.length() == 0) -// return null; -// -// return "reasons=" + sb.toString(); -// } -// } -//} -// -//class CompEvalGenotypes { -// private GenomeLoc loc; -// private Genotype compGt; -// private Genotype evalGt; -// -// public CompEvalGenotypes(GenomeLoc loc, Genotype compGt, Genotype evalGt) { -// this.loc = loc; -// this.compGt = compGt; -// this.evalGt = evalGt; -// } -// -// public GenomeLoc getLocus() { -// return loc; -// } -// -// public Genotype getCompGenotpye() { -// return compGt; -// } -// public Genotype getEvalGenotype() { -// return evalGt; -// } -//} -// -//class SamplePreviousGenotypes { -// private HashMap sampleGenotypes = null; -// -// public SamplePreviousGenotypes() { -// this.sampleGenotypes = new HashMap(); -// } -// -// public CompEvalGenotypes get(String sample) { -// return sampleGenotypes.get(sample); -// } -// -// public void put(String sample, CompEvalGenotypes compEvalGts) { -// sampleGenotypes.put(sample, compEvalGts); -// } -// -// public void put(String sample, GenomeLoc locus, Genotype compGt, Genotype evalGt) { -// sampleGenotypes.put(sample, new CompEvalGenotypes(locus, compGt, evalGt)); -// } -//} -// -//class PhaseStats { -// public int neitherPhased; -// public int onlyCompPhased; -// public int onlyEvalPhased; -// public int phasesAgree; -// public int phasesDisagree; -// -// public PhaseStats() { -// this.neitherPhased = 0; -// this.onlyCompPhased = 0; -// this.onlyEvalPhased = 0; -// this.phasesAgree = 0; -// this.phasesDisagree = 0; -// } -// -// public String toString() { -// StringBuilder sb = new StringBuilder(); -// sb.append("Neither phased: " + neitherPhased + "\tOnly Comp: " + onlyCompPhased + "\tOnly Eval: " + onlyEvalPhased + "\tSame phase: " + phasesAgree + "\tOpposite phase: " + phasesDisagree); -// return sb.toString(); -// } -// -// public static String[] getFieldNamesArray() { -// return new String[]{"total", "neither", "only_comp", "only_eval", "both", "match", "switch", "switch_rate"}; -// } -// -// public Object getField(int index) { -// switch (index) { -// case (0): -// return (neitherPhased + onlyCompPhased + onlyEvalPhased + phasesAgree + phasesDisagree); -// case (1): -// return neitherPhased; -// case (2): -// return onlyCompPhased; -// case (3): -// return onlyEvalPhased; -// case (4): -// return (phasesAgree + phasesDisagree); -// case (5): -// return phasesAgree; -// case (6): -// return phasesDisagree; -// case (7): -// return ((phasesDisagree == 0) ? 0 : ((double) phasesDisagree) / (phasesAgree + phasesDisagree)); -// default: -// return -1; -// } -// } -//} -// diff --git a/protected/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/genotypePhasingEvaluator/SamplePhasingStatistics.java b/protected/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/genotypePhasingEvaluator/SamplePhasingStatistics.java deleted file mode 100644 index 6b81ce14c..000000000 --- a/protected/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/genotypePhasingEvaluator/SamplePhasingStatistics.java +++ /dev/null @@ -1,89 +0,0 @@ -///* -// * Copyright (c) 2012, The Broad Institute -// * -// * Permission is hereby granted, free of charge, to any person -// * obtaining a copy of this software and associated documentation -// * files (the "Software"), to deal in the Software without -// * restriction, including without limitation the rights to use, -// * copy, modify, merge, publish, distribute, sublicense, and/or sell -// * copies of the Software, and to permit persons to whom the -// * Software is furnished to do so, subject to the following -// * conditions: -// * -// * The above copyright notice and this permission notice shall be -// * included in all copies or substantial portions of the Software. -// * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// * OTHER DEALINGS IN THE SOFTWARE. -// */ -// -//package org.broadinstitute.sting.gatk.walkers.varianteval.evaluators.genotypePhasingEvaluator; -// -//import org.broadinstitute.sting.gatk.walkers.varianteval.util.TableType; -// -//import java.util.HashMap; -//import java.util.Map; -// -///** -// * a table of sample names to genotype phasing statistics -// */ -//class SamplePhasingStatistics extends TableType { -// private HashMap sampleStats = null; -// private double minPhaseQuality; -// -// public SamplePhasingStatistics(double minPhaseQuality) { -// this.sampleStats = new HashMap(); -// this.minPhaseQuality = minPhaseQuality; -// } -// -// public PhaseStats ensureSampleStats(String samp) { -// PhaseStats ps = sampleStats.get(samp); -// if (ps == null) { -// ps = new PhaseStats(); -// sampleStats.put(samp, ps); -// } -// return ps; -// } -// -// /** -// * @return one row per sample -// */ -// public String[] getRowKeys() { -// return sampleStats.keySet().toArray(new String[sampleStats.size()]); -// } -// -// /** -// * get the column keys -// * -// * @return a list of objects, in this case strings, that are the column names -// */ -// public String[] getColumnKeys() { -// return PhaseStats.getFieldNamesArray(); -// } -// -// public Object getCell(int x, int y) { -// String[] rowKeys = getRowKeys(); -// PhaseStats ps = sampleStats.get(rowKeys[x]); -// return ps.getField(y); -// } -// -// public String getName() { -// return "Sample Phasing Statistics (for PQ >= " + minPhaseQuality + ")"; -// } -// -// public String toString() { -// StringBuilder sb = new StringBuilder(); -// for (Map.Entry sampPhaseStatsEnt : sampleStats.entrySet()) { -// String sample = sampPhaseStatsEnt.getKey(); -// PhaseStats ps = sampPhaseStatsEnt.getValue(); -// -// sb.append(sample + "\t" + ps); -// } -// return sb.toString(); -// } -//}