A convenience class for manipulation base probability distributions.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@274 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
kiran 2009-04-02 22:08:31 +00:00
parent 399d9b8c1e
commit 59334b0270
1 changed files with 47 additions and 0 deletions

View File

@ -0,0 +1,47 @@
package org.broadinstitute.sting.playground.fourbasecaller;
import org.broadinstitute.sting.utils.Utils;
import org.broadinstitute.sting.utils.QualityUtils;
public class FourProb {
private double[] baseProbs;
private int[] baseIndices;
public FourProb(int[] baseIndices, double[] baseProbs) {
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];
for (int i = 0; i < 4; i++) {
this.baseProbs[i] = ascendingBaseProbs[3 - i];
this.baseIndices[i] = ascendingBaseIndices[3 - i];
}
}
public int indexAtRank(int rank) { return baseIndices[rank]; }
public char baseAtRank(int rank) { return baseIndexToBase(indexAtRank(rank)); }
public double probAtRank(int rank) { return baseProbs[rank]; }
public byte qualAtRank(int rank) { return QualityUtils.probToQual(probAtRank(rank)); }
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 '.';
}
}
public String toString() {
return (
"[" + baseAtRank(0) + ":" + qualAtRank(0) + " "
+ baseAtRank(1) + ":" + qualAtRank(1) + " "
+ baseAtRank(2) + ":" + qualAtRank(2) + " "
+ baseAtRank(3) + ":" + qualAtRank(3) + "]"
);
}
}