diff --git a/java/src/org/broadinstitute/sting/utils/BaseUtils.java b/java/src/org/broadinstitute/sting/utils/BaseUtils.java index e106859b5..975a8c112 100644 --- a/java/src/org/broadinstitute/sting/utils/BaseUtils.java +++ b/java/src/org/broadinstitute/sting/utils/BaseUtils.java @@ -192,6 +192,10 @@ public class BaseUtils { return isRegularBase((char)base); } + static public boolean isNBase(char base) { + return isNBase((byte)base); + } + static public boolean isNBase(byte base) { return base == 'N'; } diff --git a/java/src/org/broadinstitute/sting/utils/MathUtils.java b/java/src/org/broadinstitute/sting/utils/MathUtils.java index bd99f88ba..209588fff 100755 --- a/java/src/org/broadinstitute/sting/utils/MathUtils.java +++ b/java/src/org/broadinstitute/sting/utils/MathUtils.java @@ -710,9 +710,20 @@ public class MathUtils { } - public static byte getQScoreMedian(List reads, List offsets) { return getQScoreOrderStatistic(reads, offsets, (int)Math.floor(reads.size()/2.)); } - + + + // + // useful common utility routines + // + public static double rate(long n, long d) { return n / (1.0 * Math.max(d, 1)); } + public static double rate(int n, int d) { return n / (1.0 * Math.max(d, 1)); } + + public static long inverseRate(long n, long d) { return n == 0 ? 0 : d / Math.max(n, 1); } + public static long inverseRate(int n, int d) { return n == 0 ? 0 : d / Math.max(n, 1); } + + public static double ratio(int num, int denom) { return ((double)num) / (Math.max(denom, 1)); } + public static double ratio(long num, long denom) { return ((double)num) / (Math.max(denom, 1)); } }