diff --git a/playground/java/src/org/broadinstitute/sting/gatk/walkers/MismatchCounterWalker.java b/playground/java/src/org/broadinstitute/sting/gatk/walkers/MismatchCounterWalker.java new file mode 100755 index 000000000..ec7911166 --- /dev/null +++ b/playground/java/src/org/broadinstitute/sting/gatk/walkers/MismatchCounterWalker.java @@ -0,0 +1,41 @@ +package org.broadinstitute.sting.gatk.walkers; + +import net.sf.samtools.SAMRecord; +import org.broadinstitute.sting.gatk.LocusContext; +import org.broadinstitute.sting.utils.Utils; +import edu.mit.broad.picard.reference.ReferenceSequence; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class MismatchCounterWalker extends BasicReadWalker { + public Integer map(LocusContext context, SAMRecord read) { + int nMismatches = 0; + + ReferenceSequence refseq = context.getReferenceContig(); + + int start = read.getAlignmentStart()-1; + int stop = read.getAlignmentEnd(); + if ( read.getAlignmentBlocks().size() == 1 ) { + // No indels + List refSeq = Utils.subseq(context.getReferenceContig().getBases(), start, stop); + List readBases = Utils.subseq(read.getReadBases()); + + assert(refSeq.size() == readBases.size()); + + System.out.printf("start, stop = %d %d%n", start, stop); + System.out.println(read.format()); + System.out.println(Utils.baseList2string(refSeq)); + System.out.println(Utils.baseList2string(readBases)); + } + + return nMismatches; + } + + public Integer reduceInit() { return 0; } + + public Integer reduce(Integer value, Integer sum) { + return value + sum; + } +} \ No newline at end of file