HiddenMarkovModel hmm;
+ HiddenMarkovModel alignmentHmm;
+
@BeforeClass(alwaysRun = true)
public void setUp() throws MalformedURLException, IOException
{
HMMFile file = new HMMFile(new FileParse(
"test/jalview/io/test_PKinase_hmm.txt", DataSourceType.FILE));
hmm = file.getHMM();
+
+ // used to check if consensus sequence is automatically aligned with alignment
+ HMMFile alignmentTest = new HMMFile(
+ new FileParse("test/jalview/io/HMMAlignmentTestHMM.hmm",
+ DataSourceType.FILE));
+ alignmentHmm = alignmentTest.getHMM();
}
@Test(groups = "Functional")
{
double iep = hmm.getInsertEmissionProbability(2, 'A');
assertEquals(iep, Math.pow(Math.E, -2.68618), 0.0001d);
+ // symbol is not case-sensitive
+ assertEquals(iep, hmm.getInsertEmissionProbability(2, 'a'));
iep = hmm.getInsertEmissionProbability(5, 'T');
assertEquals(iep, Math.pow(Math.E, -2.77519), 0.0001d);
}
@Test(groups = "Functional")
- public void testGetConsensusAtAlignColumn()
- {
- assertEquals(hmm.getConsensusAtAlignColumn(10), 's');
- assertEquals(hmm.getConsensusAtAlignColumn(50), 'k');
- hmm.setProperty(HMMFile.CONSENSUS_RESIDUE, "no");
- assertEquals(hmm.getConsensusAtAlignColumn(100), 'l');
- assertEquals(hmm.getConsensusAtAlignColumn(400), 'k');
- }
-
- @Test(groups = "Functional")
public void testGetConsensusSequence()
{
SequenceI seq = hmm.getConsensusSequence();
String subStr = seq.getSequenceAsString().substring(0, 10);
- assertEquals(subStr, "YELLEKLGSG");
+ assertEquals(subStr, "yelleklGsG");
subStr = seq.getSequenceAsString().substring(150, 161);
- assertEquals(subStr, "-DLLK------");
+ assertEquals(subStr, "-dllk------");
+
+ // test to see if consensus sequence maps to alignment correctly
+ // see HMMAlignmentTest.sto for corresponding alignment file
+ SequenceI seq2 = alignmentHmm.getConsensusSequence();
+ assertEquals(seq2.getCharAt(0), '-');
+ assertEquals(seq2.getCharAt(7), '-');
+ assertEquals(seq2.getCharAt(8), 's');
+
}
/**