diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/AlleleBalanceHistogramWalker.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/AlleleBalanceHistogramWalker.java index d6907c7c3..dbe753db4 100644 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/AlleleBalanceHistogramWalker.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/AlleleBalanceHistogramWalker.java @@ -5,19 +5,13 @@ import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.contexts.StratifiedAlignmentContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.refdata.RodVCF; -import org.broadinstitute.sting.gatk.walkers.DataSource; -import org.broadinstitute.sting.gatk.walkers.RMD; -import org.broadinstitute.sting.gatk.walkers.Requires; -import org.broadinstitute.sting.gatk.walkers.RodWalker; +import org.broadinstitute.sting.gatk.walkers.*; import org.broadinstitute.sting.utils.BaseUtils; import org.broadinstitute.sting.utils.genotype.vcf.VCFGenotypeRecord; import org.broadinstitute.sting.utils.genotype.vcf.VCFRecord; import org.broadinstitute.sting.utils.pileup.PileupElement; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * Created by IntelliJ IDEA. @@ -27,7 +21,7 @@ import java.util.Set; * To change this template use File | Settings | File Templates. */ @Requires(value= DataSource.REFERENCE,referenceMetaData = {@RMD(name="variants",type= RodVCF.class)}) -public class AlleleBalanceHistogramWalker extends RodWalker, Map>> { +public class AlleleBalanceHistogramWalker extends LocusWalker, Map>> { public Map> reduceInit() { @@ -38,7 +32,11 @@ public class AlleleBalanceHistogramWalker extends RodWalker, if ( alleleBalances != null ) { for ( String name : alleleBalances.keySet() ) { if ( alleleBalances.get(name) != null ) { - aggregateBalances.get(name).add(alleleBalances.get(name)); + if ( aggregateBalances.get(name) != null ) { + aggregateBalances.get(name).add(alleleBalances.get(name)); + } else { + aggregateBalances.put(name,new HashSet( Arrays.asList(alleleBalances.get(name) ) ) ); + } } } } @@ -78,9 +76,19 @@ public class AlleleBalanceHistogramWalker extends RodWalker, } private Double getAlleleBalance(ReferenceContext ref, StratifiedAlignmentContext context, VCFGenotypeRecord vcf) { + if ( context == null ) { + return null; + } + int refBases = 0; int altBases = 0; - for ( PileupElement e : context.getContext(StratifiedAlignmentContext.StratifiedContextType.COMPLETE).getBasePileup() ) { + AlignmentContext alicon = context.getContext(StratifiedAlignmentContext.StratifiedContextType.COMPLETE); + + if ( alicon == null ) { + return null; + } + + for ( PileupElement e : alicon.getBasePileup() ) { if ( BaseUtils.basesAreEqual( e.getBase(), (byte) ref.getBase() ) ) { refBases++; } else if ( BaseUtils.basesAreEqual(e.getBase(), (byte) vcf.toVariation(ref.getBase()).getAlternativeBaseForSNP() ) ) {