From ee2af3b423ab51ca4efdc4b3df4ebce66a391e0a Mon Sep 17 00:00:00 2001 From: kiran Date: Thu, 25 Jun 2009 20:49:12 +0000 Subject: [PATCH] I committed this too soon... reverting... git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1106 348d0f76-0448-11de-a6fe-93d51630548a --- .../sting/secondarybase/FourProb.java | 63 +++++++++---------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/java/src/org/broadinstitute/sting/secondarybase/FourProb.java b/java/src/org/broadinstitute/sting/secondarybase/FourProb.java index af945ba91..49e4a9d04 100755 --- a/java/src/org/broadinstitute/sting/secondarybase/FourProb.java +++ b/java/src/org/broadinstitute/sting/secondarybase/FourProb.java @@ -1,8 +1,7 @@ package org.broadinstitute.sting.secondarybase; -import org.broadinstitute.sting.utils.QualityUtils; import org.broadinstitute.sting.utils.Utils; -import org.broadinstitute.sting.utils.BaseUtils; +import org.broadinstitute.sting.utils.QualityUtils; /** * FourProb represents four base hypotheses, their probabilities, and the ranking among one another. @@ -10,8 +9,8 @@ import org.broadinstitute.sting.utils.BaseUtils; * @author Kiran Garimella */ public class FourProb { - private int[] baseIndices; private double[] baseProbs; + private int[] baseIndices; /** * Constructor for FourProb. @@ -26,33 +25,18 @@ public class FourProb { } } + int[] baseIndices = {0, 1, 2, 3}; + + Integer[] perm = Utils.SortPermutation(baseProbs); + double[] ascendingBaseProbs = Utils.PermuteArray(baseProbs, perm); + int[] ascendingBaseIndices = Utils.PermuteArray(baseIndices, perm); + this.baseProbs = new double[4]; this.baseIndices = new int[4]; - // store this information in sorted form for (int i = 0; i < 4; i++) { - if (baseProbs[i] > this.baseProbs[0]) { - this.baseProbs[1] = this.baseProbs[0]; - this.baseIndices[1] = this.baseIndices[0]; - - this.baseProbs[0] = baseProbs[i]; - this.baseIndices[0] = i; - } else if (baseProbs[i] > this.baseProbs[1]) { - this.baseProbs[2] = this.baseProbs[1]; - this.baseIndices[2] = this.baseIndices[1]; - - this.baseProbs[1] = baseProbs[i]; - this.baseIndices[1] = i; - } else if (baseProbs[i] > this.baseProbs[2]) { - this.baseProbs[3] = this.baseProbs[2]; - this.baseIndices[3] = this.baseIndices[2]; - - this.baseProbs[2] = baseProbs[i]; - this.baseIndices[2] = i; - } else { - this.baseProbs[3] = baseProbs[i]; - this.baseIndices[3] = i; - } + this.baseProbs[i] = ascendingBaseProbs[3 - i]; + this.baseIndices[i] = ascendingBaseIndices[3 - i]; } } @@ -70,8 +54,7 @@ public class FourProb { * @param rank (0 = best, 3 = worst) the rank of the base whose index should be returned * @return the base label (A, C, G, T). */ - //public char baseAtRank(int rank) { return baseIndexToBase(indexAtRank(rank)); } - public char baseAtRank(int rank) { return BaseUtils.baseIndexToSimpleBase(indexAtRank(rank)); } + public char baseAtRank(int rank) { return baseIndexToBase(indexAtRank(rank)); } /** * Returns the probability of the base at the specified rank. @@ -89,6 +72,22 @@ public class FourProb { */ public byte qualAtRank(int rank) { return QualityUtils.probToQual(probAtRank(rank)); } + /** + * A utility method to convert a base index into a base label. + * + * @param baseIndex the index of the base (0, 1, 2, 3). + * @return A, C, G, T, or '.' if the base index can't be understood. + */ + private char baseIndexToBase(int baseIndex) { + switch (baseIndex) { + case 0: return 'A'; + case 1: return 'C'; + case 2: return 'G'; + case 3: return 'T'; + default: return '.'; + } + } + /** * Prettily formats the FourProb info. * @@ -96,10 +95,10 @@ public class FourProb { */ public String toString() { return ( - "[" + baseAtRank(0) + ":" + probAtRank(0) + " " - + baseAtRank(1) + ":" + probAtRank(1) + " " - + baseAtRank(2) + ":" + probAtRank(2) + " " - + baseAtRank(3) + ":" + probAtRank(3) + "]" + "[" + baseAtRank(0) + ":" + qualAtRank(0) + " " + + baseAtRank(1) + ":" + qualAtRank(1) + " " + + baseAtRank(2) + ":" + qualAtRank(2) + " " + + baseAtRank(3) + ":" + qualAtRank(3) + "]" ); } }