From 7f74303f2b4b23d81bbd1fe444031d48f2cc1f9e Mon Sep 17 00:00:00 2001 From: vruano Date: Wed, 15 Jul 2015 17:58:51 -0400 Subject: [PATCH] Removes a very inefficient way to iterate in ReferenceConfidenceModel.isReadInformativeAboutIndelsOfSize(...) Addresses performance issue #1048. --- .../ReferenceConfidenceModel.java | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/ReferenceConfidenceModel.java b/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/ReferenceConfidenceModel.java index d674800ad..8247af4b9 100644 --- a/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/ReferenceConfidenceModel.java +++ b/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/ReferenceConfidenceModel.java @@ -491,20 +491,12 @@ public class ReferenceConfidenceModel { // consider each indel size up to max in term, checking if an indel that deletes either the ref bases (deletion // or read bases (insertion) would fit as well as the origin baseline sum of mismatching quality scores for ( int indelSize = 1; indelSize <= maxIndelSize; indelSize++ ) { - for ( final boolean checkInsertion : Arrays.asList(true, false) ) { - final int readI, refI; - if ( checkInsertion ) { - readI = readStart + indelSize; - refI = refStart; - } else { - readI = readStart; - refI = refStart + indelSize; - } - - final int score = sumMismatchingQualities(readBases, readQuals, readI, refBases, refI, baselineMMSum); - if ( score <= baselineMMSum ) - return false; - } + // check insertions: + if (sumMismatchingQualities(readBases, readQuals, readStart + indelSize, refBases, refStart, baselineMMSum) <= baselineMMSum) + return false; + // check deletions: + if (sumMismatchingQualities(readBases, readQuals, readStart, refBases, refStart + indelSize, baselineMMSum) <= baselineMMSum) + return false; } return true;