diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/NewVariantEvalWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/NewVariantEvalWalker.java index a1ef70956..aa1cfe11e 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/NewVariantEvalWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/NewVariantEvalWalker.java @@ -88,7 +88,6 @@ public class NewVariantEvalWalker extends RodWalker implements // The list of stratifiers and evaluators to use private TreeSet stratificationObjects = null; - private Set> evaluationObjects = null; // The set of all possible evaluation contexts private HashMap evaluationContexts = null; @@ -106,14 +105,14 @@ public class NewVariantEvalWalker extends RodWalker implements List> vsClasses = new PluginManager( VariantStratifier.class ).getPlugins(); List> veClasses = new PluginManager( VariantEvaluator.class ).getPlugins(); - logger.info("Available stratifcation modules:"); + logger.info("Available stratification modules:"); logger.info("(Standard modules are starred)"); for (Class vsClass : vsClasses) { logger.info("\t" + vsClass.getSimpleName() + (RequiredStratification.class.isAssignableFrom(vsClass) || StandardStratification.class.isAssignableFrom(vsClass) ? "*" : "")); } logger.info(""); - logger.info("Available eval modules:"); + logger.info("Available evaluation modules:"); logger.info("(Standard modules are starred)"); for (Class veClass : veClasses) { logger.info("\t" + veClass.getSimpleName() + (StandardEval.class.isAssignableFrom(veClass) ? "*" : "")); @@ -123,6 +122,13 @@ public class NewVariantEvalWalker extends RodWalker implements System.exit(0); } + /** + * Initialize required, standard and user-specified stratification objects + * + * @param noStandardStrats don't use the standard stratifications + * @param modulesToUse the list of stratification modules to use + * @return set of stratifications to use + */ private TreeSet initializeStratificationObjects(boolean noStandardStrats, String[] modulesToUse) { TreeSet strats = new TreeSet(); Set stratsToUse = new HashSet(); @@ -177,6 +183,13 @@ public class NewVariantEvalWalker extends RodWalker implements return strats; } + /** + * Initialize required, standard and user-specified evaluation objects + * + * @param noStandardEvals don't use the standard evaluations + * @param modulesToUse the list of evaluation modules to use + * @return set of evaluations to use + */ private Set> initializeEvaluationObjects(boolean noStandardEvals, String[] modulesToUse) { Set> evals = new HashSet>(); @@ -209,6 +222,15 @@ public class NewVariantEvalWalker extends RodWalker implements return evals; } + /** + * Recursively initialize the evaluation contexts + * + * @param stratificationObjects the stratifications to use + * @param evaluationObjects the evaluations to use + * @param stratStack a stack of stratifications to apply + * @param ec evaluation context + * @return a map of all the evaluation contexts + */ private HashMap initializeEvaluationContexts(Set stratificationObjects, Set> evaluationObjects, Stack stratStack, NewEvaluationContext ec) { HashMap ecs = new HashMap(); @@ -253,6 +275,13 @@ public class NewVariantEvalWalker extends RodWalker implements return ecs; } + /** + * Initialize the output report + * + * @param stratificationObjects the stratifications to use + * @param evaluationObjects the evaluations to use + * @return an initialized report object + */ private GATKReport initializeGATKReport(Set stratificationObjects, Set> evaluationObjects) { GATKReport report = new GATKReport(); @@ -264,13 +293,11 @@ public class NewVariantEvalWalker extends RodWalker implements GATKReportTable table = report.getTable(tableName); table.addPrimaryKey("entry", false); + table.addColumn(tableName, tableName); for ( VariantStratifier vs : stratificationObjects ) { String columnName = vs.getClass().getSimpleName(); - columnName = columnName.replace("Stratifier", ""); - columnName = columnName.replace("Status", ""); - table.addColumn(columnName, "unknown"); } @@ -285,6 +312,9 @@ public class NewVariantEvalWalker extends RodWalker implements return report; } + /** + * Initialize the stratifications, evaluations, evaluation contexts, and reporting object + */ public void initialize() { // Just list the modules, and exit quickly. if (LIST) { listModulesAndExit(); } @@ -306,14 +336,19 @@ public class NewVariantEvalWalker extends RodWalker implements // Now that we have all the rods categorized, determine the sample list from the eval rods. Map vcfRods = VCFUtils.getVCFHeadersFromRods(getToolkit(), evalNames); Set vcfSamples = SampleUtils.getSampleList(vcfRods, VariantContextUtils.GenotypeMergeType.REQUIRE_UNIQUE); - sampleNames.addAll(SampleUtils.getSamplesFromCommandLineInput(vcfSamples, SAMPLE_EXPRESSIONS)); + sampleNames.add(ALL_SAMPLE_NAME); + + // If we're not using the per-sample stratification, don't bother loading the sample list + if (Arrays.asList(STRATIFICATIONS_TO_USE).contains("Sample")) { + sampleNames.addAll(SampleUtils.getSamplesFromCommandLineInput(vcfSamples, SAMPLE_EXPRESSIONS)); + } // Initialize select expressions jexlExpressions.addAll(VariantContextUtils.initializeMatchExps(SELECT_NAMES, SELECT_EXPS)); // Initialize the set of stratifications and evaluations to use stratificationObjects = initializeStratificationObjects(NO_STANDARD_STRATIFICATIONS, STRATIFICATIONS_TO_USE); - evaluationObjects = initializeEvaluationObjects(NO_STANDARD_MODULES, MODULES_TO_USE); + Set> evaluationObjects = initializeEvaluationObjects(NO_STANDARD_MODULES, MODULES_TO_USE); // Initialize the evaluation contexts evaluationContexts = initializeEvaluationContexts(stratificationObjects, evaluationObjects, null, null); @@ -322,15 +357,26 @@ public class NewVariantEvalWalker extends RodWalker implements report = initializeGATKReport(stratificationObjects, evaluationObjects); } + /** + * Figure out what the allowable variation types are based on the eval context + * + * @param tracker the reference metadata tracker + * @param ref the reference context + * @param evalNames the evaluation track names + * @return the set of allowable variation types + */ private EnumSet getAllowableVariationTypes(RefMetaDataTracker tracker, ReferenceContext ref, Set evalNames) { EnumSet allowableTypes = EnumSet.of(VariantContext.Type.NO_VARIATION); - Collection vcs = tracker.getVariantContexts(ref, evalNames, null, ref.getLocus(), true, false); + if (tracker != null) { + Collection vcs = tracker.getVariantContexts(ref, evalNames, null, ref.getLocus(), true, false); - for ( VariantContext vc : vcs ) { - allowableTypes.add(vc.getType()); + for ( VariantContext vc : vcs ) { + allowableTypes.add(vc.getType()); + } + } else { + allowableTypes.add(VariantContext.Type.SNP); } - return allowableTypes; } @@ -350,9 +396,9 @@ public class NewVariantEvalWalker extends RodWalker implements HashMap> bindings = new HashMap>(); for ( String trackName : trackNames ) { - Collection contexts = tracker.getVariantContexts(ref, trackName, allowableTypes, ref.getLocus(), true, true); + Collection contexts = tracker == null ? null : tracker.getVariantContexts(ref, trackName, allowableTypes, ref.getLocus(), true, true); - VariantContext vc = contexts.size() == 1 ? contexts.iterator().next() : null; + VariantContext vc = contexts != null && contexts.size() == 1 ? contexts.iterator().next() : null; HashMap vcs = new HashMap(); @@ -400,14 +446,22 @@ public class NewVariantEvalWalker extends RodWalker implements EnumSet allowableTypes = getAllowableVariationTypes(tracker, ref, evalNames); HashMap> compBindings = bindVariantContexts(tracker, ref, compNames, allSamplesList, allowableTypes); - HashMap> evalBindings = bindVariantContexts(tracker, ref, evalNames, sampleNames, allowableTypes); - //HashMap> evalBindings; - //if (stratificationObjects.contains(SampleStratifier) { - // evalBindings = bindVariantContexts(tracker, ref, evalNames, sampleNames, allowableTypes); - //} else { - // evalBindings = bindVariantContexts(tracker, ref, evalNames, allSamplesList, allowableTypes); - //} + HashMap> evalBindings; + + boolean perSampleIsEnabled = false; + for (VariantStratifier vs : stratificationObjects) { + if (vs.getClass().getSimpleName().equals("Sample")) { + perSampleIsEnabled = true; + break; + } + } + + if (perSampleIsEnabled) { + evalBindings = bindVariantContexts(tracker, ref, evalNames, sampleNames, allowableTypes); + } else { + evalBindings = bindVariantContexts(tracker, ref, evalNames, allSamplesList, allowableTypes); + } vcs.putAll(compBindings); vcs.putAll(evalBindings); @@ -415,9 +469,16 @@ public class NewVariantEvalWalker extends RodWalker implements return vcs; } - private ArrayList initializeStateKeys(HashMap> stateMap, Stack>> stateStack, StateKey stateKey) { - ArrayList stateKeys = new ArrayList(); - + /** + * Recursively initialize the state keys used to look up the right evaluation context based on the state of the variant context + * + * @param stateMap the map of allowable states + * @param stateStack a stack of the states + * @param stateKey a state key object + * @param stateKeys all the state keys + * @return a list of state keys + */ + private ArrayList initializeStateKeys(HashMap> stateMap, Stack>> stateStack, StateKey stateKey, ArrayList stateKeys) { if (stateStack == null) { stateStack = new Stack>>(); @@ -433,60 +494,62 @@ public class NewVariantEvalWalker extends RodWalker implements Stack>> newStateStack = new Stack>>(); newStateStack.addAll(stateStack); - StateKey newStateKey = new StateKey(); - if (stateKey != null) { - newStateKey.putAll(stateKey); - } - HashMap> oneSetOfStates = newStateStack.pop(); VariantStratifier vs = oneSetOfStates.keySet().iterator().next(); for ( String state : oneSetOfStates.get(vs)) { + StateKey newStateKey = new StateKey(); + if (stateKey != null) { + newStateKey.putAll(stateKey); + } + newStateKey.put(vs.getClass().getSimpleName(), state); - stateKeys.addAll(initializeStateKeys(stateMap, newStateStack, newStateKey)); + initializeStateKeys(stateMap, newStateStack, newStateKey, stateKeys); } } else { - ArrayList newStateKeys = new ArrayList(); + stateKeys.add(stateKey); - newStateKeys.add(stateKey); - - return newStateKeys; + return stateKeys; } return stateKeys; } + /** + * Collect relevant information from each variant in the supplied VCFs + */ @Override public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { - if (tracker != null) { - // track sample vc - HashMap> vcs = getVariantContexts(tracker, ref, compNames, evalNames, sampleNames); + for ( NewEvaluationContext nec : evaluationContexts.values() ) { + nec.update0(tracker, ref, context); + } - for ( String compName : compNames ) { - VariantContext comp = vcs.containsKey(compName) && vcs.get(compName) != null && vcs.get(compName).containsKey(ALL_SAMPLE_NAME) ? vcs.get(compName).get(ALL_SAMPLE_NAME) : null; + // track sample vc + HashMap> vcs = getVariantContexts(tracker, ref, compNames, evalNames, sampleNames); - for ( String evalName : evalNames ) { - for ( String sampleName : sampleNames ) { - VariantContext eval = vcs.get(evalName) == null ? null : vcs.get(evalName).get(sampleName); + for ( String compName : compNames ) { + VariantContext comp = vcs.containsKey(compName) && vcs.get(compName) != null && vcs.get(compName).containsKey(ALL_SAMPLE_NAME) ? vcs.get(compName).get(ALL_SAMPLE_NAME) : null; - HashMap> stateMap = new HashMap>(); - for ( VariantStratifier vs : stratificationObjects ) { - ArrayList states = vs.getRelevantStates(ref, comp, eval, sampleName); - stateMap.put(vs, states); - } + for ( String evalName : evalNames ) { + for ( String sampleName : sampleNames ) { + VariantContext eval = vcs.containsKey(evalName) && vcs.get(evalName) != null ? vcs.get(evalName).get(sampleName) : null; - ArrayList stateKeys = initializeStateKeys(stateMap, null, null); + HashMap> stateMap = new HashMap>(); + for ( VariantStratifier vs : stratificationObjects ) { + ArrayList states = vs.getRelevantStates(ref, comp, compName, eval, sampleName); + stateMap.put(vs, states); + } - for ( StateKey stateKey : stateKeys ) { - NewEvaluationContext nec = evaluationContexts.get(stateKey); + ArrayList stateKeys = new ArrayList(); + initializeStateKeys(stateMap, null, null, stateKeys); - nec.apply(tracker, ref, context, comp, eval); - } + HashSet stateKeysHash = new HashSet(stateKeys); - //logger.info(ref.getLocus()); - //logger.info("\tcomp: " + comp); - //logger.info("\teval: " + eval); + for ( StateKey stateKey : stateKeysHash ) { + NewEvaluationContext nec = evaluationContexts.get(stateKey); + + nec.apply(tracker, ref, context, comp, eval); } } } @@ -528,6 +591,11 @@ public class NewVariantEvalWalker extends RodWalker implements return null; } + /** + * Output the finalized report + * + * @param result an integer that doesn't get used for anything + */ public void onTraversalDone(Integer result) { for ( StateKey stateKey : evaluationContexts.keySet() ) { NewEvaluationContext nec = evaluationContexts.get(stateKey); @@ -543,9 +611,6 @@ public class NewVariantEvalWalker extends RodWalker implements for ( VariantStratifier vs : stratificationObjects ) { String columnName = vs.getClass().getSimpleName(); - columnName = columnName.replace("Stratifier", ""); - columnName = columnName.replace("Status", ""); - table.set(stateKey.toString(), columnName, stateKey.get(vs.getClass().getSimpleName())); } diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/evaluators/CountVariants.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/evaluators/CountVariants.java index e371cd1bf..bb357da5a 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/evaluators/CountVariants.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/evaluators/CountVariants.java @@ -16,54 +16,54 @@ public class CountVariants extends VariantEvaluator implements StandardEval { // basic counts on various rates found @DataPoint(description = "Number of processed loci") - long nProcessedLoci = 0; + public long nProcessedLoci = 0; @DataPoint(description = "Number of called loci") - long nCalledLoci = 0; + public long nCalledLoci = 0; @DataPoint(description = "Number of reference loci") - long nRefLoci = 0; + public long nRefLoci = 0; @DataPoint(description = "Number of variant loci") - long nVariantLoci = 0; + public long nVariantLoci = 0; // the following two calculations get set in the finalizeEvaluation @DataPoint(description = "Variants per loci rate") - double variantRate = 0; + public double variantRate = 0; @DataPoint(description = "Number of variants per base") - double variantRatePerBp = 0; + public double variantRatePerBp = 0; @DataPoint(description = "Number of snp loci") - long nSNPs = 0; + public long nSNPs = 0; @DataPoint(description = "Number of insertions") - long nInsertions = 0; + public long nInsertions = 0; @DataPoint(description = "Number of deletions") - long nDeletions = 0; + public long nDeletions = 0; @DataPoint(description = "Number of complex loci") - long nComplex = 0; + public long nComplex = 0; @DataPoint(description = "Number of no calls loci") - long nNoCalls = 0; + public long nNoCalls = 0; @DataPoint(description = "Number of het loci") - long nHets = 0; + public long nHets = 0; @DataPoint(description = "Number of hom ref loci") - long nHomRef = 0; + public long nHomRef = 0; @DataPoint(description = "Number of hom var loci") - long nHomVar = 0; + public long nHomVar = 0; @DataPoint(description = "Number of singletons") - long nSingletons = 0; + public long nSingletons = 0; // calculations that get set in the finalizeEvaluation method @DataPoint(description = "heterozygosity per locus rate") - double heterozygosity = 0; + public double heterozygosity = 0; @DataPoint(description = "heterozygosity per base pair") - double heterozygosityPerBp = 0; + public double heterozygosityPerBp = 0; @DataPoint(description = "heterozygosity to homozygosity ratio") - double hetHomRatio = 0; + public double hetHomRatio = 0; @DataPoint(description = "indel rate (insertion count + deletion count)") - double indelRate = 0; + public double indelRate = 0; @DataPoint(description = "indel rate per base pair") - double indelRatePerBp = 0; + public double indelRatePerBp = 0; @DataPoint(description = "deletion to insertion ratio") - double deletionInsertionRatio = 0; + public double deletionInsertionRatio = 0; private double perLocusRate(long n) { return rate(n, nProcessedLoci); @@ -86,7 +86,6 @@ public class CountVariants extends VariantEvaluator implements StandardEval { } public String update1(VariantContext vc1, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { - //nProcessedLoci++; nCalledLoci++; if (vc1.isVariant()) nVariantLoci++; diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CompRodStratifier.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CompRod.java similarity index 80% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CompRodStratifier.java rename to java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CompRod.java index 4acd62a79..622fb8569 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CompRodStratifier.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CompRod.java @@ -7,7 +7,7 @@ import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils import java.util.ArrayList; import java.util.Set; -public class CompRodStratifier extends VariantStratifier implements RequiredStratification { +public class CompRod extends VariantStratifier implements RequiredStratification { // Needs to know the comp rods private Set compNames; private ArrayList states; @@ -17,17 +17,17 @@ public class CompRodStratifier extends VariantStratifier implements RequiredStra this.compNames = compNames; states = new ArrayList(); - states.add("comp"); + states.addAll(compNames); } public ArrayList getAllStates() { return states; } - public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, VariantContext eval, String sampleName) { + public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, String compName, VariantContext eval, String sampleName) { ArrayList relevantStates = new ArrayList(); - relevantStates.add("comp"); + relevantStates.add(compName); return relevantStates; } diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CpGStatusStratifier.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CpG.java similarity index 92% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CpGStatusStratifier.java rename to java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CpG.java index 49523950e..a6df31b7b 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CpGStatusStratifier.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/CpG.java @@ -7,7 +7,7 @@ import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils import java.util.ArrayList; import java.util.Set; -public class CpGStatusStratifier extends VariantStratifier { +public class CpG extends VariantStratifier { private ArrayList states; @Override @@ -22,7 +22,7 @@ public class CpGStatusStratifier extends VariantStratifier { return states; } - public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, VariantContext eval, String sampleName) { + public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, String compName, VariantContext eval, String sampleName) { boolean isCpG = false; if (ref != null && ref.getBases() != null) { String fwRefBases = new String(ref.getBases()); diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/EvalRodStratifier.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/EvalRod.java similarity index 86% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/EvalRodStratifier.java rename to java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/EvalRod.java index d5946af3b..b6a3d6ebf 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/EvalRodStratifier.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/EvalRod.java @@ -7,7 +7,7 @@ import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils import java.util.ArrayList; import java.util.Set; -public class EvalRodStratifier extends VariantStratifier implements RequiredStratification { +public class EvalRod extends VariantStratifier implements RequiredStratification { // needs to know the eval rods private Set evalNames; private ArrayList states; @@ -24,7 +24,7 @@ public class EvalRodStratifier extends VariantStratifier implements RequiredStra return states; } - public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, VariantContext eval, String sampleName) { + public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, String compName, VariantContext eval, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add("eval"); diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/FilterStatusStratifier.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/Filter.java similarity index 87% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/FilterStatusStratifier.java rename to java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/Filter.java index a58d14e5a..02b8792d0 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/FilterStatusStratifier.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/Filter.java @@ -7,7 +7,7 @@ import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils import java.util.ArrayList; import java.util.Set; -public class FilterStatusStratifier extends VariantStratifier implements StandardStratification { +public class Filter extends VariantStratifier implements StandardStratification { // needs to know the variant context private ArrayList states; @@ -23,7 +23,7 @@ public class FilterStatusStratifier extends VariantStratifier implements Standar return states; } - public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, VariantContext eval, String sampleName) { + public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, String compName, VariantContext eval, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add("raw"); diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/FunctionalClassStratifier.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/FunctionalClass.java similarity index 94% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/FunctionalClassStratifier.java rename to java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/FunctionalClass.java index 1aa10d352..9eb73d99f 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/FunctionalClassStratifier.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/FunctionalClass.java @@ -7,7 +7,7 @@ import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils import java.util.ArrayList; import java.util.Set; -public class FunctionalClassStratifier extends VariantStratifier { +public class FunctionalClass extends VariantStratifier { // needs to know the variant context private ArrayList states; @@ -24,7 +24,7 @@ public class FunctionalClassStratifier extends VariantStratifier { return states; } - public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, VariantContext eval, String sampleName) { + public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, String compName, VariantContext eval, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add("all"); diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/JexlExpressionStratifier.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/JexlExpression.java similarity index 90% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/JexlExpressionStratifier.java rename to java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/JexlExpression.java index 7703d741f..ffffdaaae 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/JexlExpressionStratifier.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/JexlExpression.java @@ -7,7 +7,7 @@ import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils import java.util.ArrayList; import java.util.Set; -public class JexlExpressionStratifier extends VariantStratifier implements StandardStratification { +public class JexlExpression extends VariantStratifier implements StandardStratification { // needs to know the jexl expressions private Set jexlExpressions; private ArrayList states; @@ -27,7 +27,7 @@ public class JexlExpressionStratifier extends VariantStratifier implements Stand return states; } - public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, VariantContext eval, String sampleName) { + public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, String compName, VariantContext eval, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add("none"); diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/NoveltyStatusStratifier.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/Novelty.java similarity index 87% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/NoveltyStatusStratifier.java rename to java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/Novelty.java index 3bae86928..330b3236d 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/NoveltyStatusStratifier.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/Novelty.java @@ -7,7 +7,7 @@ import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils import java.util.ArrayList; import java.util.Set; -public class NoveltyStatusStratifier extends VariantStratifier implements StandardStratification { +public class Novelty extends VariantStratifier implements StandardStratification { // needs the variant contexts and known names private Set knownNames; private ArrayList states; @@ -26,7 +26,7 @@ public class NoveltyStatusStratifier extends VariantStratifier implements Standa return states; } - public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, VariantContext eval, String sampleName) { + public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, String compName, VariantContext eval, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add("all"); diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/SampleStratifier.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/Sample.java similarity index 89% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/SampleStratifier.java rename to java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/Sample.java index b19b2a788..02fb2b165 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/SampleStratifier.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/Sample.java @@ -8,7 +8,7 @@ import org.broadinstitute.sting.playground.gatk.walkers.newvarianteval.NewVarian import java.util.ArrayList; import java.util.Set; -public class SampleStratifier extends VariantStratifier { +public class Sample extends VariantStratifier { // needs the sample names private ArrayList samples; @@ -23,7 +23,7 @@ public class SampleStratifier extends VariantStratifier { return samples; } - public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, VariantContext eval, String sampleName) { + public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, String compName, VariantContext eval, String sampleName) { ArrayList relevantStates = new ArrayList(); relevantStates.add(sampleName); diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/VariantStratifier.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/VariantStratifier.java index 9a19592c6..8eb88dfaf 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/VariantStratifier.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/stratifications/VariantStratifier.java @@ -15,11 +15,7 @@ public abstract class VariantStratifier implements Comparable { return new ArrayList(); } - public boolean isApplicable(RefMetaDataTracker tracker, ReferenceContext ref, VariantContext comp, VariantContext eval, String state) { - return false; - } - - public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, VariantContext eval, String sampleName) { + public ArrayList getRelevantStates(ReferenceContext ref, VariantContext comp, String compName, VariantContext eval, String sampleName) { return null; } diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/EvaluationContext.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/EvaluationContext.java deleted file mode 100755 index 77014a3fe..000000000 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/EvaluationContext.java +++ /dev/null @@ -1,96 +0,0 @@ -//package org.broadinstitute.sting.playground.gatk.walkers.varianteval.util; -// -//import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContextUtils; -//import org.broadinstitute.sting.playground.gatk.walkers.newvarianteval.VariantEvalWalker; -//import org.broadinstitute.sting.playground.gatk.walkers.newvarianteval.evaluators.VariantEvaluator; -//import org.broadinstitute.sting.utils.Utils; -//import org.broadinstitute.sting.utils.exceptions.DynamicClassResolutionException; -// -//import java.lang.reflect.Constructor; -//import java.util.Arrays; -//import java.util.HashSet; -//import java.util.Set; -// -///** -// * Created by IntelliJ IDEA. -// * User: kiran -// * Date: Dec 14, 2010 -// * Time: 11:15:32 PM -// * To change this template use File | Settings | File Templates. -// */ -//public class EvaluationContext implements Comparable { -// // useful for typing -// public String evalTrackName, compTrackName, novelty, filtered, cpgStatus, functionalClass, sample; -// public boolean enableInterestingSiteCaptures = false; -// public VariantContextUtils.JexlVCMatchExp selectExp; -// public Set evaluations; -// -// private Set> evaluationClasses; -// -// private static String RAW_SET_NAME = "raw"; -// private static String RETAINED_SET_NAME = "called"; -// private static String FILTERED_SET_NAME = "filtered"; -// private static String ALL_SET_NAME = "all"; -// private static String KNOWN_SET_NAME = "known"; -// private static String NOVEL_SET_NAME = "novel"; -// private final static String CONTEXT_SEPARATOR = "XXX"; -// -// public boolean isIgnoringFilters() { return filtered.equals(RAW_SET_NAME); } -// public boolean requiresFiltered() { return filtered.equals(FILTERED_SET_NAME); } -// public boolean requiresNotFiltered() { return filtered.equals(RETAINED_SET_NAME); } -// public boolean isIgnoringNovelty() { return novelty.equals(ALL_SET_NAME); } -// public boolean requiresNovel() { return novelty.equals(NOVEL_SET_NAME); } -// public boolean requiresKnown() { return novelty.equals(KNOWN_SET_NAME); } -// -// public boolean isSelected() { return selectExp == null; } -// -// public String getDisplayName() { -// return getName(CONTEXT_SEPARATOR); -// } -// -// public String getJexlName() { -// return getName("."); -// } -// -// private String getName(String separator) { -// return Utils.join(separator, Arrays.asList(evalTrackName, compTrackName, selectExp == null ? "all" : selectExp.name, filtered, novelty, cpgStatus, functionalClass, sample)); -// } -// -// public String toString() { return getDisplayName(); } -// -// public int compareTo(EvaluationContext other) { -// return this.getDisplayName().compareTo(other.getDisplayName()); -// } -// -// public EvaluationContext( String evalName, String compName, String novelty, String filtered, String cpgStatus, String functionalClass, String sample, VariantContextUtils.JexlVCMatchExp selectExp, Set> evaluationClasses ) { -// this.evalTrackName = evalName; -// this.compTrackName = compName; -// this.novelty = novelty; -// this.filtered = filtered; -// this.selectExp = selectExp; -// this.cpgStatus = cpgStatus; -// this.functionalClass = functionalClass; -// this.sample = sample; -// this.enableInterestingSiteCaptures = selectExp == null; -// this.evaluationClasses = evaluationClasses; -// this.evaluations = instantiateEvalationsSet(); -// } -// -// private Set instantiateEvalationsSet() { -// Set evals = new HashSet(); -// Object[] args = new Object[]{this}; -// Class[] argTypes = new Class[]{VariantEvalWalker.class}; -// -// for ( Class c : evaluationClasses ) { -// try { -// Constructor constructor = c.getConstructor(argTypes); -// VariantEvaluator eval = constructor.newInstance(args); -// evals.add(eval); -// } catch (Exception e) { -// throw new DynamicClassResolutionException(c, e); -// } -// } -// -// return evals; -// } -//} diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/NewEvaluationContext.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/NewEvaluationContext.java index 2f4eaad3c..2dc8c64b7 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/NewEvaluationContext.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/NewEvaluationContext.java @@ -14,7 +14,7 @@ import java.util.Set; import java.util.TreeMap; public class NewEvaluationContext extends HashMap { - private TreeMap evaluationInstances; + public TreeMap evaluationInstances; public String toString() { String value = ""; @@ -47,32 +47,36 @@ public class NewEvaluationContext extends HashMap { public void apply(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context, VariantContext comp, VariantContext eval) { for ( VariantEvaluator evaluation : evaluationInstances.values() ) { - if ( evaluation.enabled() ) { - // we always call update0 in case the evaluation tracks things like number of bases covered - evaluation.update0(tracker, ref, context); + // we always call update0 in case the evaluation tracks things like number of bases covered + //evaluation.update0(tracker, ref, context); - // the other updateN methods don't see a null context - if ( tracker == null ) - continue; + // the other updateN methods don't see a null context + if ( tracker == null ) + continue; - // now call the single or paired update function - switch ( evaluation.getComparisonOrder() ) { - case 1: - if (eval != null) { - evaluation.update1(eval, tracker, ref, context); - } + // now call the single or paired update function + switch ( evaluation.getComparisonOrder() ) { + case 1: + if (eval != null) { + evaluation.update1(eval, tracker, ref, context); + } - break; - case 2: - if (eval != null && comp != null) { - evaluation.update2(eval, comp, tracker, ref, context); - } + break; + case 2: + if (eval != null) { + evaluation.update2(eval, comp, tracker, ref, context); + } - break; - default: - throw new ReviewedStingException("BUG: Unexpected evaluation order " + evaluation); - } + break; + default: + throw new ReviewedStingException("BUG: Unexpected evaluation order " + evaluation); } } } + + public void update0(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { + for ( VariantEvaluator evaluation : evaluationInstances.values() ) { + evaluation.update0(tracker, ref, context); + } + } } diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/StateKey.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/StateKey.java index d1da0af68..2c61b7163 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/StateKey.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/newvarianteval/util/StateKey.java @@ -19,7 +19,8 @@ public class StateKey extends TreeMap { String value = ""; for ( String key : this.keySet() ) { - value += "\tstate " + key + ":" + this.get(key) + "\n"; + //value += "\tstate " + key + ":" + this.get(key) + "\n"; + value += String.format("%s:%s;", key, this.get(key)); } return value;