diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/CountVariants.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/CountVariants.java index df2fb9201..306532829 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/CountVariants.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/CountVariants.java @@ -37,6 +37,8 @@ public class CountVariants extends VariantEvaluator { return "counter"; } + public boolean enabled() { return true; } + public int getComparisonOrder() { return 1; // we only need to see each eval track } diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/DbSNPPercentage.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/DbSNPPercentage.java index 2abcba93a..10d0f23cb 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/DbSNPPercentage.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/DbSNPPercentage.java @@ -60,6 +60,8 @@ public class DbSNPPercentage extends VariantEvaluator { return HEADER; } + public boolean enabled() { return true; } + public List> getTableRows() { return Arrays.asList(Arrays.asList(summaryLine().split(" "))); } diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/MendelianViolationEvaluator.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/MendelianViolationEvaluator.java index 5b705845e..32d3432e9 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/MendelianViolationEvaluator.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/MendelianViolationEvaluator.java @@ -64,7 +64,7 @@ public class MendelianViolationEvaluator extends VariantEvaluator { } } - private boolean enabled() { + public boolean enabled() { return parent.FAMILY_STRUCTURE != null; } diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/TiTvVariantEvaluator.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/TiTvVariantEvaluator.java index 032a18550..a44280327 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/TiTvVariantEvaluator.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/TiTvVariantEvaluator.java @@ -16,6 +16,8 @@ public class TiTvVariantEvaluator extends VariantEvaluator { // don't do anything } + public boolean enabled() { return true; } + public String getName() { return "titv"; } diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/VariantEval2Walker.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/VariantEval2Walker.java index 55e413374..0296170ab 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/VariantEval2Walker.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/VariantEval2Walker.java @@ -39,6 +39,10 @@ import java.lang.reflect.InvocationTargetException; // todo -- new contexts for each comparison object too! // +// +// todo -- write or find a simple way to organize the table like output of variant eval 2. A generic table of strings? +// + /** * Test routine for new VariantContext object */ @@ -205,22 +209,24 @@ public class VariantEval2Walker extends RodWalker { boolean evalWantsVC = applyVCtoEvaluation(evaluationName, vc, comps, group); for ( VariantEvaluator evaluation : evaluations ) { - // we always call update0 in case the evaluation tracks things like number of bases covered - evaluation.update0(tracker, ref, context); + if ( evaluation.enabled() ) { + // we always call update0 in case the evaluation tracks things like number of bases covered + evaluation.update0(tracker, ref, context); - // now call the single or paired update function - switch ( evaluation.getComparisonOrder() ) { - case 1: - if ( evalWantsVC && vc != null ) - evaluation.update1(vc, tracker, ref, context); - break; - case 2: - for ( VariantContext comp : comps.values() ) { - evaluation.update2( evalWantsVC ? vc : null, comp, tracker, ref, context); - } - break; - default: - throw new StingException("BUG: Unexpected evaluation order " + evaluation); + // now call the single or paired update function + switch ( evaluation.getComparisonOrder() ) { + case 1: + if ( evalWantsVC && vc != null ) + evaluation.update1(vc, tracker, ref, context); + break; + case 2: + for ( VariantContext comp : comps.values() ) { + evaluation.update2( evalWantsVC ? vc : null, comp, tracker, ref, context); + } + break; + default: + throw new StingException("BUG: Unexpected evaluation order " + evaluation); + } } } } @@ -252,18 +258,6 @@ public class VariantEval2Walker extends RodWalker { return true; } - private Map getCompVariantContexts(RefMetaDataTracker tracker, AlignmentContext context) { - Map comps = new HashMap(); - - for ( String compName : compNames ) { - comps.put(compName, getVariantContext(compName, tracker, context)); - } - - // todo -- remove me when the loop works correctly for comparisons of eval x comp for each comp - if ( comps.size() > 1 ) throw new StingException("VariantEval2 currently only supports comparisons of N eval tracks vs. a single comparison track. Yes, I know..."); - return comps; - } - private boolean vcIsKnown(VariantContext vc, Map comps, String[] knownNames ) { for ( String knownName : knownNames ) { VariantContext known = comps.get(knownName); @@ -281,22 +275,20 @@ public class VariantEval2Walker extends RodWalker { // //logger.info(String.format("Ignore second+ events at locus %s in rod %s => rec is %s", context.getLocation(), rodList.getName(), rec)); - private VariantContext getVariantContext(String name, RefMetaDataTracker tracker, AlignmentContext context) { - if ( tracker != null ) { - RODRecordList rodList = tracker.getTrackData(name, null); - if ( rodList != null ) { - for ( ReferenceOrderedDatum rec : rodList.getRecords() ) { - if ( rec.getLocation().getStart() == context.getLocation().getStart() ) { - VariantContext vc = VariantContextAdaptors.toVariantContext(name, rec); - if ( vc != null ) { - return vc; - } - } - } - } + private Map getCompVariantContexts(RefMetaDataTracker tracker, AlignmentContext context) { + Map comps = new HashMap(); + + for ( String compName : compNames ) { + comps.put(compName, getVariantContext(compName, tracker, context)); } - return null; + // todo -- remove me when the loop works correctly for comparisons of eval x comp for each comp + if ( comps.size() > 1 ) throw new StingException("VariantEval2 currently only supports comparisons of N eval tracks vs. a single comparison track. Yes, I know..."); + return comps; + } + + private VariantContext getVariantContext(String name, RefMetaDataTracker tracker, AlignmentContext context) { + return tracker.getVariantContext(name, null, context.getLocation(), true); } // -------------------------------------------------------------------------------------------------------------- @@ -374,14 +366,16 @@ public class VariantEval2Walker extends RodWalker { Set evalSet = group.get(evalSubgroupName); VariantEvaluator eval = getEvalByName(evalName, evalSet); String keyWord = contextName + "." + evalSubgroupName; + if ( eval.enabled() ) { - if ( first ) { - out.printf("%20s %s %s%n", evalName, formatKeyword(CONTEXT_HEADER), Utils.join("\t", eval.getTableHeader())); - first = false; + if ( first ) { + out.printf("%20s %s %s%n", evalName, formatKeyword(CONTEXT_HEADER), Utils.join("\t", eval.getTableHeader())); + first = false; + } + + for ( List row : eval.getTableRows() ) + out.printf("%20s %s %s%n", evalName, formatKeyword(keyWord), Utils.join("\t", row)); } - - for ( List row : eval.getTableRows() ) - out.printf("%20s %s %s%n", evalName, formatKeyword(keyWord), Utils.join("\t", row)); } } } diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/VariantEvaluator.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/VariantEvaluator.java index 99d0e46e0..2e9cfd41a 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/VariantEvaluator.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/varianteval2/VariantEvaluator.java @@ -35,8 +35,9 @@ abstract class VariantEvaluator { System.out.printf("%40s %s%n", interestingSitePrefix, why); } - public boolean processedAnySites() { return processedASite; } - protected void markSiteAsProcessed() { processedASite = true; } + public abstract boolean enabled(); + //public boolean processedAnySites() { return processedASite; } + //protected void markSiteAsProcessed() { processedASite = true; } /** Should return the number of VariantContexts expected as inputs to update. Can be 1 or 2 */ public abstract int getComparisonOrder();