From 59334b027086be540c8768888742312f3cb55f14 Mon Sep 17 00:00:00 2001 From: kiran Date: Thu, 2 Apr 2009 22:08:31 +0000 Subject: [PATCH] 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 --- .../playground/fourbasecaller/FourProb.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 java/src/org/broadinstitute/sting/playground/fourbasecaller/FourProb.java diff --git a/java/src/org/broadinstitute/sting/playground/fourbasecaller/FourProb.java b/java/src/org/broadinstitute/sting/playground/fourbasecaller/FourProb.java new file mode 100755 index 000000000..6397ad911 --- /dev/null +++ b/java/src/org/broadinstitute/sting/playground/fourbasecaller/FourProb.java @@ -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) + "]" + ); + } +}