diff --git a/java/src/org/broadinstitute/sting/secondarybase/SecondaryBaseAnnotator.java b/java/src/org/broadinstitute/sting/secondarybase/SecondaryBaseAnnotator.java new file mode 100755 index 000000000..24473c0b8 --- /dev/null +++ b/java/src/org/broadinstitute/sting/secondarybase/SecondaryBaseAnnotator.java @@ -0,0 +1,55 @@ +package org.broadinstitute.sting.secondarybase; + +import org.broadinstitute.sting.utils.containers.BoundedScoringSet; +import org.broadinstitute.sting.utils.StingException; + +import java.util.ArrayList; +import java.util.Arrays; + +public class SecondaryBaseAnnotator { + private static final int TRAINING_LIMIT = 10000; + private boolean trained; + private final BoundedScoringSet trainingAggregator; + public BasecallingReadModel model; + + public SecondaryBaseAnnotator() { + trained = false; + trainingAggregator = new BoundedScoringSet(TRAINING_LIMIT); + } + + public void addTrainingRead(RawRead rawRead) { trainingAggregator.add(rawRead); } + + public boolean haveEnoughTrainingReads() { return false; } + + public void doneTraining() { + ArrayList trainingData = new ArrayList(trainingAggregator.size()); + + trainingData.addAll(Arrays.asList(trainingAggregator.toArray(new RawRead[0]))); + + model = new BasecallingReadModel(trainingData); + + trained = true; + } + + public FourProbRead getFourProbRead(RawRead rawRead) { + return model.call(rawRead); + } + + public byte[] getSqTagValue(RawRead rawRead) { + if (!trained) { + throw new StingException("Model must be trained via addTrainingRead() before getSqTagValue() can be called"); + } + + FourProbRead fpr = model.call(rawRead); + + return fpr.getSQTag(rawRead); + } + + private void train() {} + + private byte[] getSQTag(FourProbRead fourProbRead, RawRead rawRead) { return null; } + + private static boolean isGoodTrainingRead(RawRead rawRead) { return false; } + + private static double getAverageQualityScore(RawRead rawRead) { return 0.0; } +}