    001    package calhoun.analysis.crf.io;
    002
    003    import java.io.IOException;
    004    import java.io.Serializable;
    005
    006    /** handles outputting of results from predictions. */
    007    public interface OutputHandler extends Serializable {
    008
    009            /** sets the output location to write to.  This is called before any of the write functions are called.
    010             * @param location the location to write the data to.  The meaning is implementation dependent.
    011             */
    012            void setOutputLocation(String location);
    013
    014            /** Writes out a set of predicted hidden states.  The location will have been specified previously with {@link #setOutputLocation}
    015             * @param sequence the input sequence on which predictions were made
    016             * @param hiddenStates an array of state indices for the predicted hidden states.
    017             */
    018            void writeOutput(InputSequence<?> sequence, int[] hiddenStates) throws IOException;
    019
    020            /** Writes out a set of hidden states compared with a known true path.  The location will have been specified previously with {@link #setOutputLocation}
    021             * @param sequence the input sequence on which predictions were made
    022             * @param truePath an array of hidden states representing the true path.
    023             * @param hiddenStates an array of state indices for the predicted hidden states.
    024             */
    025            void writeTestOutput(InputSequence<?> sequence, int[] truePath, int[] hiddenStates) throws IOException;
    026
    027            /** indicates the writing of output is complete.  The handler can do any final processing and release resources.
    028             */
    029            void outputComplete() throws IOException;
    030    }