From 3f75fc4e83c14346f4e8687f6e78692ee623d97f Mon Sep 17 00:00:00 2001 From: ebanks Date: Mon, 6 Apr 2009 03:51:35 +0000 Subject: [PATCH] Unfortunately, because BWA occasionally outputs crazy reads, we need to make sure not to have an ArrayIndexOutOfBoundsException thrown. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@297 348d0f76-0448-11de-a6fe-93d51630548a --- .../sting/playground/gatk/walkers/MismatchHistoWalker.java | 4 +++- java/src/org/broadinstitute/sting/utils/Utils.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) 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]);