diff --git a/java/src/org/broadinstitute/sting/gatk/contexts/ReferenceContext.java b/java/src/org/broadinstitute/sting/gatk/contexts/ReferenceContext.java index 7addb2746..5b1c1fb7d 100644 --- a/java/src/org/broadinstitute/sting/gatk/contexts/ReferenceContext.java +++ b/java/src/org/broadinstitute/sting/gatk/contexts/ReferenceContext.java @@ -28,6 +28,7 @@ package org.broadinstitute.sting.gatk.contexts; import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.StingException; import org.broadinstitute.sting.utils.BaseUtils; +import net.sf.samtools.util.StringUtil; /** * The section of the reference that overlaps with the given @@ -38,6 +39,8 @@ import org.broadinstitute.sting.utils.BaseUtils; */ public class ReferenceContext { + final public static boolean UPPERCASE_REFERENCE = true; + /** * The locus. */ @@ -64,7 +67,7 @@ public class ReferenceContext { * @param base reference base at that locus. */ public ReferenceContext( GenomeLoc locus, byte base ) { - this( locus, locus, new byte[] { base } ); + this( locus, locus, new byte[] { UPPERCASE_REFERENCE ? StringUtil.toUpperCase(base) : base } ); } // todo -- this really should take the referenceview as an option and only grab the bases if necessary @@ -75,6 +78,8 @@ public class ReferenceContext { this.locus = locus; this.window = window; this.bases = bases; + + if (UPPERCASE_REFERENCE) StringUtil.toUpperCase(bases); } /** diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/RecalDataManager.java b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/RecalDataManager.java index 304c75800..04650cea5 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/RecalDataManager.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/RecalDataManager.java @@ -34,6 +34,7 @@ import java.util.*; import net.sf.samtools.SAMRecord; import net.sf.samtools.SAMReadGroupRecord; +import net.sf.samtools.SAMUtils; /** * Created by IntelliJ IDEA. @@ -428,7 +429,9 @@ public class RecalDataManager { if( attr != null ) { byte[] colorSpaceQuals; if( attr instanceof String ) { - colorSpaceQuals = QualityUtils.fastqToPhred((String)attr); + String x = (String)attr; + colorSpaceQuals = x.getBytes(); + SAMUtils.fastqToPhred(colorSpaceQuals); } else { throw new StingException(String.format("Value encoded by %s in %s isn't a string!", RecalDataManager.COLOR_SPACE_QUAL_ATTRIBUTE_TAG, read.getReadName())); } diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java index e5f518d2a..9d743d781 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java @@ -34,11 +34,7 @@ import java.util.Random; import java.util.ResourceBundle; import java.util.regex.Pattern; -import net.sf.samtools.SAMFileHeader; -import net.sf.samtools.SAMFileWriter; -import net.sf.samtools.SAMProgramRecord; -import net.sf.samtools.SAMRecord; -import net.sf.samtools.SAMTag; +import net.sf.samtools.*; import net.sf.samtools.util.SequenceUtil; import org.broadinstitute.sting.gatk.datasources.simpleDataSources.ReferenceOrderedDataSource; @@ -57,6 +53,7 @@ import org.broadinstitute.sting.utils.QualityUtils; import org.broadinstitute.sting.utils.StingException; import org.broadinstitute.sting.utils.text.TextFormattingUtils; import org.broadinstitute.sting.utils.Utils; +import org.broadinstitute.sting.utils.BaseUtils; import org.broadinstitute.sting.utils.text.XReadLines; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.ArgumentCollection; @@ -359,7 +356,7 @@ public class TableRecalibrationWalker extends ReadWalker MAX_QUAL_SCORE) { - throw new IllegalArgumentException("Cannot encode phred score: " + phredScore); - } - return (char) (33 + phredScore); - } - - /** - * Convert a string with phred scores in printable ASCII FASTQ format to an array - * of binary phred scores. - * @param fastq Phred scores in FASTQ printable ASCII format. - * @return byte array of binary phred scores in which each byte corresponds to a character in the input string. - */ - public static byte[] fastqToPhred(final String fastq) { - if (fastq == null) { - return null; - } - final int length = fastq.length(); - final byte[] scores = new byte[length]; - for (int i = 0; i < length; i++) { - scores[i] = (byte) fastqToPhred(fastq.charAt(i)); - } - return scores; - } - - /** - * Convert a single printable ASCII FASTQ format phred score to binary phred score. - * @param ch Printable ASCII FASTQ format phred score. - * @return Binary phred score. - */ - public static int fastqToPhred(final char ch) { - if (ch < 33 || ch > 126) { - throw new IllegalArgumentException("Invalid fastq character: " + ch); - } - return (ch - 33); - } } diff --git a/java/test/org/broadinstitute/sting/gatk/datasources/providers/LocusReferenceViewUnitTest.java b/java/test/org/broadinstitute/sting/gatk/datasources/providers/LocusReferenceViewUnitTest.java index ea5ca09ff..609f3c5a0 100755 --- a/java/test/org/broadinstitute/sting/gatk/datasources/providers/LocusReferenceViewUnitTest.java +++ b/java/test/org/broadinstitute/sting/gatk/datasources/providers/LocusReferenceViewUnitTest.java @@ -104,7 +104,7 @@ public class LocusReferenceViewUnitTest extends ReferenceViewTemplate { GenomeLoc locus = shardIterator.next(); ReferenceSequence expectedAsSeq = sequenceFile.getSubsequenceAt(locus.getContig(), locus.getStart(), locus.getStop()); - char expected = StringUtil.bytesToString(expectedAsSeq.getBases()).charAt(0); + char expected = Character.toUpperCase(StringUtil.bytesToString(expectedAsSeq.getBases()).charAt(0)); char actual = view.getReferenceContext(locus).getBaseAsChar(); Assert.assertEquals(String.format("Value of base at position %s in shard %s does not match expected", locus.toString(), shard.getGenomeLocs()),