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 }