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 }