001    package calhoun.analysis.crf.test;
002    
003    import calhoun.analysis.crf.Conrad;
004    import calhoun.analysis.crf.features.generic.EndFeatures;
005    import calhoun.analysis.crf.features.generic.IndicatorEdges;
006    import calhoun.analysis.crf.features.generic.StartFeatures;
007    import calhoun.analysis.crf.features.tricycle13.KmerFeatures;
008    import calhoun.analysis.crf.io.InputHandlerInterleaved;
009    import calhoun.analysis.crf.io.OutputHandlerGeneCallStats;
010    import calhoun.analysis.crf.io.StringInput;
011    import calhoun.analysis.crf.solver.MaximumLikelihoodGradient;
012    import calhoun.analysis.crf.solver.StandardOptimizer;
013    import calhoun.analysis.crf.solver.Viterbi;
014    
015    
016    public class ZeroOrderManager extends ZeroOrderModel {
017            private static final long serialVersionUID = 3959312826759045449L;
018    
019            public ZeroOrderManager() {
020                    addFeatureManager(new StartFeatures());
021                    addFeatureManager(new EndFeatures());
022                    addFeatureManager(new KmerFeatures());
023                    addFeatureManager(new IndicatorEdges());
024            }
025    
026            public static Conrad getCRF() {
027                    Conrad ret = new Conrad();
028                    ret.setInference(new Viterbi());
029                    ret.setModel(new ZeroOrderManager());
030                    ret.setInputHandler(new InputHandlerInterleaved(new StringInput()));
031                    OutputHandlerGeneCallStats stats = new OutputHandlerGeneCallStats(ret.getModel(), ret.getInputHandler());
032                    stats.setWriteTrainingData(true);
033                    ret.setOutputHandler(stats);
034                    StandardOptimizer opt = new StandardOptimizer();
035                    opt.setDebugLevel(2);
036                    opt.setRequireConvergence(false);
037                    opt.setEpsForConvergence(0.0000005);
038                    opt.setObjectiveFunction(new MaximumLikelihoodGradient());
039                    ret.setOptimizer(opt);
040                    return ret;
041            }
042    }