package jalview.analysis.scoremodels;
import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.io.ByteArrayInputStream;
import org.testng.annotations.Test;
}
}
}
-
- /**
- * Test a successful parse of a (small) score matrix file
- */
- @Test(groups = "Functional")
- public void testParse()
- {
- /*
- * some messy but valid input data, with comma, space
- * or tab (or combinations) as score value delimiters
- * this example includes 'guide' symbols on score rows
- */
- String data = "ScoreMatrix MyTest\n" + "ATU tx-\n"
- + "A,1.1,1.2,1.3,1.4, 1.5, 1.6, 1.7\n"
- + "T,2.1 2.2 2.3 2.4 2.5 2.6 2.7\n"
- + "U\t3.1\t3.2\t3.3\t3.4\t3.5\t3.6\t3.7\n"
- + " 4.1 ,4.2,\t,4.3 ,\t4.4\t, \4.5,4.6 4.7\n"
- + "t, 5.1,5.3,5.3,5.4,5.5, 5.6, 5.7\n"
- + "x\t6.1, 6.2 6.3 6.4 6.5 6.6 6.7\n"
- + "-, \t7.1\t7.2 7.3, 7.4, 7.5\t,7.6,7.7\n";
- ScoreMatrix sm = ScoreMatrix.parse(new ByteArrayInputStream(data
- .getBytes()));
- assertNotNull(sm);
- assertEquals(sm.getName(), "MyTest");
- assertTrue(sm.isDNA());
- assertFalse(sm.isProtein());
- assertEquals(sm.getPairwiseScore('A', 'A'), 1.1f);
- assertEquals(sm.getPairwiseScore('A', 'T'), 1.2f);
- assertEquals(sm.getPairwiseScore('a', 'T'), 1.2f); // A/a equivalent
- assertEquals(sm.getPairwiseScore('A', 't'), 1.5f); // T/t not equivalent
- assertEquals(sm.getPairwiseScore('a', 't'), 1.5f);
- assertEquals(sm.getPairwiseScore('T', ' '), 2.4f);
- assertEquals(sm.getPairwiseScore('U', 'x'), 3.6f);
- assertEquals(sm.getPairwiseScore('u', 'x'), 3.6f);
- assertEquals(sm.getPairwiseScore('U', 'X'), 0f); // X (upper) unmapped
- assertEquals(sm.getPairwiseScore('A', '.'), 0f); // . unmapped
- assertEquals(sm.getPairwiseScore('-', '-'), 7.7f);
- assertEquals(sm.getPairwiseScore('A', (char) 128), 0f); // out of range
-
- /*
- * without guide symbols on score rows
- */
- data = "ScoreMatrix MyTest\nXY\n1 2\n3 4\n";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNotNull(sm);
- assertEquals(sm.getPairwiseScore('X', 'X'), 1f);
- assertEquals(sm.getPairwiseScore('X', 'y'), 2f);
- assertEquals(sm.getPairwiseScore('y', 'x'), 3f);
- assertEquals(sm.getPairwiseScore('y', 'Y'), 4f);
- assertEquals(sm.getPairwiseScore('D', 'R'), 0f);
- }
-
- @Test(groups = "Functional")
- public void testParse_invalidInput()
- {
- /*
- * valid first
- */
- String data = "ScoreMatrix MyTest\nXY\n1 2\n3 4\n";
- ScoreMatrix sm = ScoreMatrix.parse(new ByteArrayInputStream(data
- .getBytes()));
- assertNotNull(sm);
-
- /*
- * Name missing
- */
- data = "ScoreMatrix\nXY\n1 2\n3 4\n";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNull(sm);
-
- /*
- * ScoreMatrix header missing
- */
- data = "XY\n1 2\n3 4\n";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNull(sm);
-
- /*
- * Not enough rows
- */
- data = "ScoreMatrix MyTest\nXY\n1 2\n";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNull(sm);
-
- /*
- * Not enough columns
- */
- data = "ScoreMatrix MyTest\nXY\n1 2\n3\n";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNull(sm);
-
- /*
- * Too many columns
- */
- data = "ScoreMatrix MyTest\nXY\n1 2\n3 4 5\n";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNull(sm);
-
- /*
- * Too many rows
- */
- data = "ScoreMatrix MyTest\nXY\n1 2\n3 4\n6 7";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNull(sm);
-
- /*
- * unsupported delimiter |
- */
- data = "ScoreMatrix MyTest\nXY\n1|2\n3|4\n";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNull(sm);
-
- /*
- * Bad float value
- */
- data = "ScoreMatrix MyTest\nXY\n1 2\n3 four\n";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNull(sm);
-
- /*
- * Bad guide character on scores row
- */
- data = "ScoreMatrix MyTest\nXY\nX 1 2\ny 3 4\n";
- sm = ScoreMatrix.parse(new ByteArrayInputStream(data.getBytes()));
- assertNull(sm);
- }
}