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 }