/** calculates statstics and output for results on a given test sequence */ public void calcResultIncrement(TrainingSequence training, int[] predictedHiddenSequence) { labeled.add( new TrainingSequence( training.getInputSequence(), predictedHiddenSequence)); // This is only place that labelled gets added to??? // So I guess the results just get built up incrementally, both the actuall hidden sequences and // the stats? Assert.a(training.length() == predictedHiddenSequence.length); int[] actualHiddenSequence = new int[training.length()]; for (int i = 0; i < training.length(); i++) { actualHiddenSequence[i] = training.getY(i); } boolean thisperfect = true; for (int i = 0; i < predictedHiddenSequence.length; ++i) { int predY = predictedHiddenSequence[i]; int realY = actualHiddenSequence[i]; if (realY == predY) { correct += 1; } else { incorrect += 1; thisperfect = false; } ctCodingNucleotide.increment(isCodingPlus(predY), isCodingPlus(realY)); ctCodingNucleotide.increment(isCodingMinus(predY), isCodingMinus(realY)); for (int s = 0; s < nStates; s++) { ctStates.get(s).increment((predY == s), (realY == s)); } } if (thisperfect) { perfect++; } else { imperfect++; } for (int i = 1; i < predictedHiddenSequence.length; ++i) { int predY = predictedHiddenSequence[i]; int realY = actualHiddenSequence[i]; int predYp = predictedHiddenSequence[i - 1]; int realYp = actualHiddenSequence[i - 1]; for (int t = 0; t < nTransitions; t++) { boolean bPred = ((predYp == fromInd.get(t)) && (predY == toInd.get(t))); boolean bReal = ((realYp == fromInd.get(t)) && (realY == toInd.get(t))); ctTransitions.get(t).increment(bPred, bReal); } } // Now let's increment the contingency table for exons; note that here not counting TN's RangeMap predExonsPlus = new RangeMap(); RangeMap predExonsMinus = new RangeMap(); RangeMap realExonsPlus = new RangeMap(); RangeMap realExonsMinus = new RangeMap(); makeExonRangeMapFrom13SV(predictedHiddenSequence, predExonsPlus, predExonsMinus); makeExonRangeMapFrom13SV(actualHiddenSequence, realExonsPlus, realExonsMinus); incrementCTFromRangeMaps(ctExons, predExonsPlus, realExonsPlus); incrementCTFromRangeMaps(ctExons, predExonsMinus, realExonsMinus); }