001    package calhoun.analysis.crf.test;
002    
003    import java.util.List;
004    
005    import org.apache.commons.logging.Log;
006    import org.apache.commons.logging.LogFactory;
007    
008    import calhoun.analysis.crf.Conrad;
009    import calhoun.analysis.crf.ModelManager;
010    import calhoun.analysis.crf.io.TrainingSequence;
011    import calhoun.analysis.crf.io.CompositeInput.LegacyInputHandler;
012    import calhoun.analysis.crf.solver.StandardOptimizer;
013    import calhoun.util.AbstractTestCase;
014    
015    public class CRFTest extends AbstractTestCase {
016            private static final Log log = LogFactory.getLog(CRFTest.class);
017    
018            public void testFullCycle() throws Exception {
019                    // Create and train the CRF
020                    Conrad crf = ZeroOrderManager.getCRF();
021                    List<? extends TrainingSequence<?>> data = crf.getInputHandler().readTrainingData("test/input/zeroOrderTest.txt");
022                    assertEquals(data.size(),3);
023    
024                    crf.train(data);
025                    // Write the trained model out to a file and read it back in again.
026    
027                    log.info(crf.printWeights());
028                    crf.test(data, "test/working/zeroOrderPredicted.txt");
029                    assertFilesMatch("test/output/zeroOrderPredicted.txt", "test/working/zeroOrderPredicted.txt");
030                    //log.info(results);
031            }
032            
033            public void testSpringConfig() throws Exception {
034                    Conrad c = new Conrad("test/input/configTest.xml");
035                    ModelManager cm = c.getModel();
036                    assertEquals(7, cm.getNumStates());
037                    assertEquals("exon1", cm.getStateName(1));
038                    LegacyInputHandler seq = (LegacyInputHandler) c.getInputHandler();
039                    assertNotNull(seq);
040                    StandardOptimizer opt = (StandardOptimizer) c.getOptimizer();
041                    assertEquals(1, opt.getMaxIters());
042            }
043            
044            public void testToolkitMainSeparateTraining() throws Exception {
045                    // Create and train the CRF
046                    Conrad.main(new String[] {"trainFeatures", "test/input/zeroOrderLBFGS.xml", "test/input/zeroOrderTest.txt", "test/working/zeroModelSep.ser"});
047                    Conrad.main(new String[] {"trainWeights", "test/working/zeroModelSep.ser", "test/input/zeroOrderTest.txt", "test/working/zeroModelSep2.ser"});
048                    Conrad.main(new String[] {"test", "test/working/zeroModelSep2.ser", "test/input/zeroOrderTest.txt", "test/working/zeroOrderSepMainPredicted.txt"});
049            }
050    
051    }