public ClusterLikelihoods( ClusterData d, Integer[] chs, int[] five, int[] three, double v, double l) { data = d; channels = chs.clone(); gammas = new double[five.length][channels.length]; for (int t = 0; t < gammas.length; t++) { for (int i = 0; i < gammas[t].length; i++) { gammas[t][i] = 1.0; } } transcripts = new TreeMap<Integer, Set<Integer>>(); fiveprime = five; threeprime = three; if (fiveprime.length != threeprime.length) { String msg = String.format("%d != %d", fiveprime.length, threeprime.length); throw new IllegalArgumentException(msg); } variance = v; lambda = l; for (int t = 0; t < fiveprime.length; t++) { transcripts.put(t, new TreeSet<Integer>()); } for (int i = 0; i < data.size(); i++) { int loc = data.location(i); for (int t = 0; t < fiveprime.length; t++) { if (fiveprime[t] <= loc && threeprime[t] >= loc) { transcripts.get(t).add(i); } } } }
public double delta(int i, int t) { int diff = threeprime[t] - data.location(i); return diff >= 0 ? (double) diff : 0.0; }