001    package calhoun.analysis.crf.test;
002    
003    import calhoun.analysis.crf.Conrad;
004    import calhoun.util.AbstractTestCase;
005    
006    // In this test want to use a 13tricycle model and train on
007    // real (but short) data, such as the ~10 genes in shortTrain.txt
008    // using a variety of cache processors, and make sure get identical
009    // answers (ie identical gradients or weights) in every case.
010    
011    public class CacheProcessorTestRealShort extends AbstractTestCase {
012            
013    
014            public void testEquivalentResultsVariousCacheProcessors() throws Exception {
015                    
016                    Conrad r = new Conrad("test/input/configFilesTricycle13/baselineTricycle13.xml");
017                    r.train("test/input/tinyTrain.tricycle13.txt");         
018    
019                    Conrad rs = new Conrad("test/input/configFilesTricycle13/baselineTricycle13_smartcached.xml");
020                    rs.train("test/input/tinyTrain.tricycle13.txt");
021                    assertArrayEquals(rs.getWeights(), r.getWeights(), 0.0001);
022    
023                    Conrad rsd = new Conrad("test/input/configFilesTricycle13/baselineTricycle13_smartcacheddense.xml");
024                    rsd.train("test/input/tinyTrain.tricycle13.txt");
025                    assertArrayEquals(rsd.getWeights(), r.getWeights(), 0.0001);
026                    
027                    Conrad rss = new Conrad("test/input/configFilesTricycle13/baselineTricycle13_smartcachedsparse.xml");
028                    rss.train("test/input/tinyTrain.tricycle13.txt");
029                    assertArrayEquals(rss.getWeights(), r.getWeights(), 0.0001);
030                    
031                    Conrad rc = new Conrad("test/input/configFilesTricycle13/baselineTricycle13_cached.xml");
032                    rc.train("test/input/tinyTrain.tricycle13.txt");
033                    assertArrayEquals(rc.getWeights(), r.getWeights(), 0.0001);
034            }
035            
036            
037            public void testCacheProcessorsWithInvalidation() throws Exception {
038                    
039                    Conrad rs = new Conrad("test/input/configFilesTricycle13/constrainingTricycle13_smartcached.xml");
040                    rs.train("test/input/tinyTrain.tricycle13.txt");
041                    
042                    Conrad rsd = new Conrad("test/input/configFilesTricycle13/constrainingTricycle13_smartcacheddense.xml");
043                    rsd.train("test/input/tinyTrain.tricycle13.txt");
044                    
045                    Conrad rss = new Conrad("test/input/configFilesTricycle13/constrainingTricycle13_smartcachedsparse.xml");
046                    rss.train("test/input/tinyTrain.tricycle13.txt");
047                    
048                    Conrad r = new Conrad("test/input/configFilesTricycle13/constrainingTricycle13.xml");
049                    r.train("test/input/tinyTrain.tricycle13.txt");
050                    
051                    Conrad rc = new Conrad("test/input/configFilesTricycle13/constrainingTricycle13_cached.xml");
052                    rc.train("test/input/tinyTrain.tricycle13.txt");
053                    
054                    assertArrayEquals(rc.getWeights(), r.getWeights(), 0.0001);
055                    assertArrayEquals(rs.getWeights(), r.getWeights(), 0.0001);
056                    assertArrayEquals(rsd.getWeights(), r.getWeights(), 0.0001);
057                    assertArrayEquals(rss.getWeights(), r.getWeights(), 0.0001);
058            }
059    }