diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/BaseTransitionTableCalculatorJavaWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/BaseTransitionTableCalculatorJavaWalker.java index 379f709c1..352f6fa05 100644 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/BaseTransitionTableCalculatorJavaWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/BaseTransitionTableCalculatorJavaWalker.java @@ -34,13 +34,13 @@ public class BaseTransitionTableCalculatorJavaWalker extends LocusWalker reads = map.getPileup().getReads(); List offsets = map.getPileup().getOffsets(); ReferenceContext ref = map.getMiddleReferenceContext(); + // ReadBackedPileup pileup = splitPileupNonref(map.getPileup()); + // List reads = pileup.getReads(); + // List offsets = pileup.getOffsets(); + + + // System.out.println("Base and read are usable:"); + // System.out.println("Num Mismatches: "+countMismatches(map.getPileup())); + // System.out.println("Ref: "+map.getMiddleReferenceContext().getBase()+" Pileup ref: "+map.getPileup().getRef()); + // System.out.println("Pileup: "+map.getPileup().getBases()); for ( int r = 0; r < reads.size(); r ++ ) { + if ( Character.toUpperCase(reads.get(r).getReadBases()[offsets.get(r)]) != ref.getBase() ) { + // System.out.println("Examining read. Mapping quality is: " + reads.get(r).getMappingQuality()); + // System.out.println("Base quality is: "+reads.get(r).getBaseQualities()[offsets.get(r)]); + // System.out.println("Read base is: "+ (char) reads.get(r).getReadBases()[offsets.get(r)]); + // System.out.println("Pileup is: " + map.getPileup().getBases()); + if ( ! useRead(reads.get(r),offsets.get(r),ref) ) { + System.out.println("Read will not be used."); + } + } if ( useRead( reads.get(r), offsets.get(r), ref ) ) { updateTables( reads.get(r), offsets.get(r), map ); - prevReduce++; + // prevReduce++; } } } @@ -85,8 +104,8 @@ public class BaseTransitionTableCalculatorJavaWalker extends LocusWalker conditions = new ArrayList(); if ( nPreviousBases > 0 ) { - if ( read.getReadNegativeStrandFlag() ) + if ( ! read.getReadNegativeStrandFlag() ) conditions.add(map.getForwardRefString()); else conditions.add(map.getReverseRefString()); @@ -195,33 +222,31 @@ public class BaseTransitionTableCalculatorJavaWalker extends LocusWalker= maxNumMismatches; + public boolean pileupContainsNoNs(ReadBackedPileup pileup) { + for ( char c : pileup.getBases().toCharArray() ) { + if ( c == 'N' ) { + return false; + } + } + + return true; } public boolean baseIsConfidentRef( RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context ) { Pair, GenotypeMetaData> calls = ug.map(tracker,ref,context); if (calls == null) return false; - return ( ! calls.first.get(0).isVariant(ref.getBase()) && calls.first.get(0).getNegLog10PError() >= confidentRefThreshold ); + return (! calls.first.get(0).isVariant()) && calls.first.get(0).getNegLog10PError() >= confidentRefThreshold && BaseUtils.isRegularBase(ref.getBase()); } - public boolean refIsNotN(ReferenceContext ref) { - return BaseUtils.isRegularBase(ref.getBase()); - } - } @@ -357,7 +382,7 @@ class ReferenceContextWindow { ref = ref + prevRefs.get(base).getBase(); } - return ref; + return BaseUtils.simpleComplement(ref); } public ReadBackedPileup getPileup() {