From baae98c6d5fb379f4cbb477288346d17c17a5c60 Mon Sep 17 00:00:00 2001 From: asivache Date: Tue, 14 Apr 2009 21:55:33 +0000 Subject: [PATCH] and don't allocate new 200M string every time please, just pass byte array! git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@417 348d0f76-0448-11de-a6fe-93d51630548a --- .../sting/playground/indels/AlignmentUtils.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/java/src/org/broadinstitute/sting/playground/indels/AlignmentUtils.java b/java/src/org/broadinstitute/sting/playground/indels/AlignmentUtils.java index 9d37dd359..874940fdc 100644 --- a/java/src/org/broadinstitute/sting/playground/indels/AlignmentUtils.java +++ b/java/src/org/broadinstitute/sting/playground/indels/AlignmentUtils.java @@ -25,10 +25,14 @@ public class AlignmentUtils { * @return */ public static int numMismatches(SAMRecord r, ReferenceSequence ref) { - return numMismatches(r, new String(ref.getBases())); + return numMismatches(r, ref.getBases()); } - public static int numMismatches(SAMRecord r, String ref) { + public static int numMismatches(SAMRecord r, String ref ) { + return numMismatches(r,ref.getBytes()); + } + + public static int numMismatches(SAMRecord r, byte[] ref) { if ( r.getReadUnmappedFlag() ) return 1000000; int i_ref = r.getAlignmentStart()-1; // position on the ref int i_read = 0; // position on the read @@ -41,7 +45,7 @@ public class AlignmentUtils { for ( int l = 0 ; l < ce.getLength() ; l++, i_ref++, i_read++ ) { if ( Character.toUpperCase(r.getReadString().charAt(i_read) ) == 'N' ) continue; // do not count N's ? if ( Character.toUpperCase(r.getReadString().charAt(i_read) ) != - Character.toUpperCase(ref.charAt(i_ref)) ) mm_count++; + Character.toUpperCase((char)ref[i_ref]) ) mm_count++; } break; case I: i_read += ce.getLength(); break;