001    package calhoun.analysis.crf.test;
002    
003    import calhoun.analysis.crf.Conrad;
004    import calhoun.util.AbstractTestCase;
005    import calhoun.util.FileUtil;
006    
007    public class MultipleSequenceTest extends AbstractTestCase {
008    
009            public void testMultipleSequences() throws Exception {
010                    // Verify that we get equivalent results when evaluating a gradient for multiple sequences.
011                    // Train features against a set of sequences.
012                    Conrad crf1 = new Conrad("test/input/multipleSequence/modifiedModelAllLengths.xml");
013                    crf1.trainFeatures("test/input/multipleSequence/flyTwice");
014    
015                    Conrad crf2 = new Conrad("test/input/multipleSequence/modifiedModelAllLengths2.xml");
016                    crf2.trainFeatures("test/input/multipleSequence/flyTwice");
017    
018                    // Do an evaluation on a single sequence and save the alpha files
019                    crf1.trainWeights("test/input/multipleSequence/flyOnce");
020                    crf2.trainWeights("test/input/multipleSequence/flyTwice");
021    
022                    // Do an evaluation on multiple sequences (where the first was the last) and save the alpha files
023                    String[] seq1 = FileUtil.readFile("test/working/multSeq1.txt").split("\n");
024                    String[] seq2 = FileUtil.readFile("test/working/multSeq2.txt").split("\n");
025    
026                    int offset=0;
027                    while(seq2[offset].charAt(5)=='0') {
028                            ++offset;
029                    }
030                    
031                    for(int i=0; i<seq1.length; ++i) {
032                            assertEquals(seq1[i].substring(6),seq2[i+offset].substring(6));
033                    }
034            }
035    }