- HMMFile fn3 = new HMMFile(
- new FileParse("test/jalview/io/test_fn3_hmm.txt",
- DataSourceType.FILE));
+ HMMFile fn3 = new HMMFile(new BufferedReader(
+ new FileReader(("test/jalview/io/test_fn3_hmm.txt"))));
- HMMFile pKinase = new HMMFile(
- new FileParse("test/jalview/io/test_PKinase_hmm.txt",
- DataSourceType.FILE));
+ HMMFile pKinase = new HMMFile(new BufferedReader(
+ new FileReader(("test/jalview/io/test_PKinase_hmm.txt"))));
- HMMFile made1 = new HMMFile(
- new FileParse("test/jalview/io/test_MADE1_hmm.txt",
- DataSourceType.FILE));
+ HMMFile made1 = new HMMFile(new BufferedReader(
+ new FileReader(("test/jalview/io/test_MADE1_hmm.txt"))));
HMMFileTest() throws IOException
{
assertEquals(hmm.getSymbols(), symbols);
- assertEquals(getMatchEmission(0, 19, hmm), 0.032298, 0.001d);
- assertEquals(getMatchEmission(12, 12, hmm), 0.0130, 0.001d);
- assertEquals(getMatchEmission(23, 7, hmm), 0.02583, 0.001d);
- assertEquals(getMatchEmission(54, 1, hmm), 0.008549, 0.001d);
- assertEquals(getMatchEmission(178, 3, hmm), 0.07998, 0.001d);
- assertEquals(getMatchEmission(210, 2, hmm), 0.014465, 0.001d);
- assertEquals(getMatchEmission(260, 19, hmm), 0.02213, 0.001d);
-
- assertEquals(getInsertEmission(2, 1, hmm), 0.012, 0.001d);
- assertEquals(getInsertEmission(15, 6, hmm), 0.02411, 0.001d);
- assertEquals(getInsertEmission(22, 9, hmm), 0.06764, 0.001d);
- assertEquals(getInsertEmission(57, 2, hmm), 0.0623, 0.001d);
- assertEquals(getInsertEmission(203, 16, hmm), 0.0623, 0.001d);
- assertEquals(getInsertEmission(255, 12, hmm), 0.0647, 0.001d);
-
- assertEquals(getStateTransition(0, 6, hmm),
- Double.NEGATIVE_INFINITY);
- assertEquals(getStateTransition(3, 6, hmm), 0.3848, 0.001d);
- assertEquals(getStateTransition(29, 3, hmm), 0.5382, 0.001d);
- assertEquals(getStateTransition(169, 3, hmm), 0.2916, 0.001d);
- assertEquals(getStateTransition(209, 0, hmm), 0.99, 0.001d);
- assertEquals(getStateTransition(243, 1, hmm), 0.0066, 0.001d);
+ assertEquals(hmm.getMatchEmissionProbability(0, 'Y'), 0.16102, 0.001d);
+ assertEquals(hmm.getMatchEmissionProbability(11, 'P'), 0.0130, 0.001d);
+ assertEquals(hmm.getMatchEmissionProbability(24, 'I'), 0.02583, 0.001d);
+ assertEquals(hmm.getMatchEmissionProbability(83, 'C'), 0.008549,
+ 0.001d);
+ assertEquals(hmm.getMatchEmissionProbability(332, 'E'), 0.07998,
+ 0.001d);
+ assertEquals(hmm.getMatchEmissionProbability(381, 'D'), 0.014465,
+ 0.001d);
+ assertEquals(hmm.getMatchEmissionProbability(475, 'Y'), 0.02213,
+ 0.001d);
+
+ assertEquals(hmm.getInsertEmissionProbability(1, 'C'), 0.012, 0.001d);
+ assertEquals(hmm.getInsertEmissionProbability(14, 'H'), 0.02411,
+ 0.001d);
+ assertEquals(hmm.getInsertEmissionProbability(23, 'L'), 0.06764,
+ 0.001d);
+ assertEquals(hmm.getInsertEmissionProbability(90, 'D'), 0.0623, 0.001d);
+ assertEquals(hmm.getInsertEmissionProbability(374, 'T'), 0.0623,
+ 0.001d);
+ assertEquals(hmm.getInsertEmissionProbability(470, 'P'), 0.0647,
+ 0.001d);
+
+ assertEquals(hmm.getStateTransitionProbability(2, 6), 0.3848, 0.001d);
+ assertEquals(hmm.getStateTransitionProbability(38, 3), 0.5382, 0.001d);
+ assertEquals(hmm.getStateTransitionProbability(305, 3), 0.2916, 0.001d);
+ assertEquals(hmm.getStateTransitionProbability(380, 0), 0.99, 0.001d);
+ assertEquals(hmm.getStateTransitionProbability(453, 1), 0.0066, 0.001d);
assertEquals(hmm.getNodeAlignmentColumn(3).intValue(), 2);
assertEquals(hmm.getReferenceAnnotation(7), '-');
}
- @Test
+ @Test(priority = 0)
public void testParseFileProperties() throws IOException
{
FileReader fr = new FileReader(
new File("test/jalview/io/test_fn3_hmm.txt"));
BufferedReader br = new BufferedReader(fr);
+ fn3.setHMM(new HiddenMarkovModel());
fn3.parseFileProperties(br);
fn3.parseModel(br); // this is for a later test
HiddenMarkovModel testHMM = new HiddenMarkovModel();
FileReader fr3 = new FileReader(
new File("test/jalview/io/test_MADE1_hmm.txt"));
BufferedReader br3 = new BufferedReader(fr3);
+ made1.setHMM(new HiddenMarkovModel());
made1.parseFileProperties(br3);
testHMM = made1.getHMM();
br3.close();
{
br.readLine();
}
+
made1.parseModel(br);
testHMM = made1.getHMM();
+
br.close();
fr.close();
- assertEquals(getMatchEmission(0, 2, testHMM), 0.1961, 0.001d);
- assertEquals(getMatchEmission(2, 1, testHMM), 0.09267, 0.001d);
- assertEquals(getMatchEmission(12, 2, testHMM), 0.07327, 0.001d);
- assertEquals(getMatchEmission(69, 1, testHMM), 0.04184, 0.001d);
- assertEquals(getMatchEmission(76, 2, testHMM), 0.07, 0.001d);
-
- assertEquals(getInsertEmission(0, 1, testHMM), 0.25, 0.001d);
- assertEquals(getInsertEmission(1, 2, testHMM), 0.25, 0.001d);
- assertEquals(getInsertEmission(31, 3, testHMM), 0.2776, 0.001d);
- assertEquals(getInsertEmission(70, 3, testHMM), 0.25, 0.001d);
- assertEquals(getInsertEmission(80, 3, testHMM), 0.25, 0.001d);
+ assertEquals(testHMM.getMatchEmissionProbability(1, 'C'), 0.09267,
+ 0.001d);
+ assertEquals(testHMM.getMatchEmissionProbability(25, 'G'), 0.07327,
+ 0.001d);
+ assertEquals(testHMM.getMatchEmissionProbability(1092, 'C'), 0.04184,
+ 0.001d);
+ assertEquals(testHMM.getMatchEmissionProbability(1107, 'G'), 0.07,
+ 0.001d);
+
+ assertEquals(testHMM.getInsertEmissionProbability(0, 'G'), 0.25,
+ 0.001d);
+ assertEquals(testHMM.getInsertEmissionProbability(247, 'T'), 0.2776,
+ 0.001d);
+ assertEquals(testHMM.getInsertEmissionProbability(1096, 'T'), 0.25,
+ 0.001d);
+ assertEquals(testHMM.getInsertEmissionProbability(1111, 'T'), 0.25,
+ 0.001d);
- assertEquals(getStateTransition(2, 0, testHMM), 0.9634, 0.001d);
- assertEquals(getStateTransition(6, 1, testHMM), 0.0203, 0.001d);
- assertEquals(getStateTransition(9, 3, testHMM), 0.2515, 0.001d);
- assertEquals(getStateTransition(20, 4, testHMM), 0.78808, 0.001d);
- assertEquals(getStateTransition(68, 2, testHMM), 0.01845, 0.001d);
- assertEquals(getStateTransition(80, 6, testHMM),
+ assertEquals(testHMM.getStateTransitionProbability(1, 0), 0.9634,
+ 0.001d);
+ assertEquals(testHMM.getStateTransitionProbability(5, 1), 0.0203,
+ 0.001d);
+ assertEquals(testHMM.getStateTransitionProbability(14, 3), 0.2515,
+ 0.001d);
+ assertEquals(testHMM.getStateTransitionProbability(65, 4), 0.78808,
+ 0.001d);
+ assertEquals(testHMM.getStateTransitionProbability(1080, 2), 0.01845,
+ 0.001d);
+ assertEquals(testHMM.getStateTransitionProbability(1111, 6),
Double.NEGATIVE_INFINITY);
}
public void testParseAnnotations()
{
HMMFile testFile = new HMMFile();
+ testFile.setHMM(new HiddenMarkovModel());
testFile.getHMM().getNodes().add(new HMMNode());
testFile.getHMM().getNodes().add(new HMMNode());
testFile.getHMM().getNodes().add(new HMMNode());
@Test(priority = 3)
- public void testExportFile() throws IOException
+ public void testPrint() throws IOException
{
- pKinase.exportFile("test/jalview/io/test_export_hmm.txt");
+ PrintWriter writer = new PrintWriter(
+ "test/jalview/io/test_export_hmm.txt");
+ String output = pKinase.print();
+ writer.print(output);
+ writer.close();
HMMFile pKinaseClone = new HMMFile(
new FileParse("test/jalview/io/test_export_hmm.txt",
DataSourceType.FILE));
- pKinaseClone.parse();
HiddenMarkovModel pKinaseHMM = new HiddenMarkovModel();
HiddenMarkovModel pKinaseCloneHMM = new HiddenMarkovModel();
pKinaseHMM = pKinase.getHMM();
}
@Test(priority = 1)
- public void testAppendFileProperties() throws FileNotFoundException
+ public void testGetFilePropertiesAsString() throws FileNotFoundException
{
- PrintWriter writer = new PrintWriter(
- "test/jalview/io/test_export_hmm.txt");
- fn3.appendFileProperties(writer);
- writer.close();
- String content;
- File file = new File("test/jalview/io/test_export_hmm.txt");
+ String string = fn3.getFilePropertiesAsString();
- Scanner testScanner = new Scanner(file);
- testScanner.useDelimiter("\\Z");
+ Scanner testScanner = new Scanner(string);
String[] expected = new String[] { "HMMER3/f [3.1b1 | May 2013]",
"NAME fn3", "ACC PF00041.13",
}
@Test(priority = 2)
- public void testAppendModel() throws FileNotFoundException
+ public void testGetModelAsString() throws FileNotFoundException
{
- PrintWriter writer = new PrintWriter(
- "test/jalview/io/test_export_hmm.txt");
- fn3.appendModel(writer);
- writer.close();
- String string;
- File file = new File("test/jalview/io/test_export_hmm.txt");
- Scanner scanner = new Scanner(file);
- scanner.useDelimiter("\\Z");
- string = scanner.next();
+ String string = fn3.getModelAsString();
assertEquals(findValue(2, 2, 2, string), "4.42225");
assertEquals(findValue(12, 14, 1, string), "2.79307");
{
String value = "";
+ String current;
Scanner scanner = new Scanner(model);
- scanner.nextLine();
- scanner.nextLine();
+ current = scanner.nextLine();
+ current = scanner.nextLine();
for (int lineIndex = 0; lineIndex < line - 1; lineIndex++)
{
- scanner.nextLine();
+ current = scanner.nextLine();
}
for (int node = 0; node < nodeIndex; node++)
{
- scanner.nextLine();
- scanner.nextLine();
- scanner.nextLine();
+ current = scanner.nextLine();
+ current = scanner.nextLine();
+ current = scanner.nextLine();
}
for (int symbol = 0; symbol < symbolIndex; symbol++)
value = scanner.next();
if ("COMPO".equals(value))
{
- scanner.next();
+ current = scanner.next();
}
else if (value.length() < 7)
{
- scanner.next();
+ current = scanner.next();
}
}
+ scanner.close();
return value;
}
return isDifferent;
}
- /**
- * gets the match emission at a node for a symbol
- *
- * @param nodeIndex
- * position of node in model
- * @param symbolIndex
- * index of symbol being searched
- * @return negative log probability of a match emission of the given symbol
- */
- public double getMatchEmission(int nodeIndex, int symbolIndex,
- HiddenMarkovModel hmm)
- {
- double value = hmm.getNodes().get(nodeIndex).getMatchEmissions()
- .get(symbolIndex);
- return value;
- }
-
- /**
- * gets the insert emission at a node for a symbol
- *
- * @param nodeIndex
- * position of node in model
- * @param symbolIndex
- * index of symbol being searched
- * @return negative log probability of an insert emission of the given symbol
- */
- public double getInsertEmission(int nodeIndex, int symbolIndex,
- HiddenMarkovModel hmm)
- {
- double value = hmm.getNodes().get(nodeIndex).getInsertEmissions()
- .get(symbolIndex);
- return value;
- }
-
- /**
- * gets the state transition at a node for a specific transition
- *
- * @param nodeIndex
- * position of node in model
- * @param transitionIndex
- * index of stransition being searched
- * @return negative log probability of a state transition of the given type
- */
- public double getStateTransition(int nodeIndex, int transitionIndex,
- HiddenMarkovModel hmm)
- {
- double value = hmm.getNodes().get(nodeIndex).getStateTransitions()
- .get(transitionIndex);
- return value;
- }
-
}