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.io.InputHandlerInterleaved;
010    import calhoun.analysis.crf.io.StringInput;
011    import calhoun.analysis.crf.io.TrainingSequence;
012    import calhoun.analysis.crf.solver.check.FeatureCache;
013    import calhoun.util.AbstractTestCase;
014    
015    public class CacheTest extends AbstractTestCase {
016            private static final Log log = LogFactory.getLog(CacheTest.class);
017            boolean debug = log.isDebugEnabled();
018            
019            public void testCache() throws Exception {
020                    doCache("test/input/zeroOrderModel.xml", "test/input/zeroOrderTrivial.txt", 0, 4);
021                    doCache("test/input/constraintModel.xml", "test/input/trivialGenes.txt", 0, 29);
022                    doCache("test/input/semiMarkovTestModelNoExplicitLengths.xml", "test/input/zeroOrderTrivial.txt", 30, 4);
023            }
024            
025            public void testCacheHarder() throws Exception {
026                    List<? extends TrainingSequence<?>> data = new InputHandlerInterleaved(new StringInput()).readTrainingData("test/input/zeroOrderTest.txt");
027                    Conrad crf = ZeroOrderManager.getCRF();
028                    crf.trainFeatures(data);
029                    
030                    FeatureCache f = new FeatureCache(crf.getModel(), data);
031                    assertEquals(798, f.cachedFeatures);
032                    assertEquals(4, f.numConstantFeatures);
033                    assertEquals(802, f.totalFeatures);
034            }
035            
036            public void doCache(String model, String data, int cachedFeatures, int constantFeatures) throws Exception {
037                    Conrad r = new Conrad(model);
038                    //CRFRunner r = new CRFRunner(model);
039                    r.trainFeatures(data);
040                    List<? extends TrainingSequence<?>> training = r.getInputHandler().readTrainingData(data);
041                    FeatureCache f = new FeatureCache(r.getModel(), training);
042                    assertEquals(cachedFeatures, f.cachedFeatures);
043                    assertEquals(constantFeatures, f.numConstantFeatures);
044                    assertEquals(cachedFeatures + constantFeatures, f.totalFeatures);
045            }
046    }