diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/MultiallelicSummary.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/MultiallelicSummary.java index 9113e7538..82b6656af 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/MultiallelicSummary.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/MultiallelicSummary.java @@ -90,8 +90,11 @@ public class MultiallelicSummary extends VariantEvaluator { // implements Standa @DataPoint(description = "Multi-allelic Indel Novelty Rate") public String indelNoveltyRate = "NA"; - @DataPoint(description="Histogram of allele frequencies") - AFHistogram AFhistogram = new AFHistogram(); + @DataPoint(description="Histogram of allele frequencies for most common alternate allele") + AFHistogram AFhistogramMax = new AFHistogram(); + + @DataPoint(description="Histogram of allele frequencies for less common alternate alleles") + AFHistogram AFhistogramMin = new AFHistogram(); /* * AF histogram table object @@ -130,18 +133,10 @@ public class MultiallelicSummary extends VariantEvaluator { // implements Standa public String getName() { return "AFHistTable"; } - public void update(VariantContext vc) { - final Object obj = vc.getAttribute(VCFConstants.ALLELE_FREQUENCY_KEY, null); - if ( obj == null || !(obj instanceof List) ) - return; - - List list = (List)obj; - for ( String str : list ) { - final double AF = Double.valueOf(str); - final int bin = (int)(numBins * MathUtils.round(AF, 2)); - AFhistogram[bin]++; - } - } + public void update(final double AF) { + final int bin = (int)(numBins * MathUtils.round(AF, 2)); + AFhistogram[bin]++; + } } public void initialize(VariantEvalWalker walker) {} @@ -180,7 +175,7 @@ public class MultiallelicSummary extends VariantEvaluator { // implements Standa default: throw new UserException.BadInput("Unexpected variant context type: " + eval); } - AFhistogram.update(eval); + updateAFhistogram(eval); return null; // we don't capture any interesting sites } @@ -213,6 +208,24 @@ public class MultiallelicSummary extends VariantEvaluator { // implements Standa private void calculateIndelPairwiseNovelty(VariantContext eval, VariantContext comp) { } + private void updateAFhistogram(VariantContext vc) { + + final Object obj = vc.getAttribute(VCFConstants.ALLELE_FREQUENCY_KEY, null); + if ( obj == null || !(obj instanceof List) ) + return; + + List list = (List)obj; + ArrayList AFs = new ArrayList(list.size()); + for ( String str : list ) { + AFs.add(Double.valueOf(str)); + } + + Collections.sort(AFs); + AFhistogramMax.update(AFs.get(AFs.size()-1)); + for ( int i = 0; i < AFs.size() - 1; i++ ) + AFhistogramMin.update(AFs.get(i)); + } + private final String noveltyRate(final int all, final int known) { final int novel = all - known; final double rate = (novel / (1.0 * all));