diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/MismatchHistoWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/MismatchHistoWalker.java index 9165ac8cd..bf6c3ce1f 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/MismatchHistoWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/MismatchHistoWalker.java @@ -37,10 +37,12 @@ public class MismatchHistoWalker extends ReadWalker { int start = read.getAlignmentStart()-1; int stop = read.getAlignmentEnd(); + // sometimes BWA outputs screwy reads + if ( stop >= context.getReferenceContig().getBases().length ) + return 0; List refSeq = Utils.subseq(context.getReferenceContig().getBases(), start, stop); List readBases = Utils.subseq(read.getReadBases()); - assert(refSeq.size() == readBases.size()); // it's actually faster to reallocate a resized array than to use ArrayLists... diff --git a/java/src/org/broadinstitute/sting/utils/Utils.java b/java/src/org/broadinstitute/sting/utils/Utils.java index 81c3d1726..64d2b6738 100755 --- a/java/src/org/broadinstitute/sting/utils/Utils.java +++ b/java/src/org/broadinstitute/sting/utils/Utils.java @@ -163,6 +163,7 @@ public class Utils { } public static ArrayList subseq(byte[] fullArray, int start, int end) { + assert end < fullArray.length; ArrayList dest = new ArrayList(end - start + 1); for (int i = start; i < end; i++) { dest.add(fullArray[i]);