package jalview.analysis.scoremodels; import static org.testng.Assert.assertEquals; import jalview.util.Comparison; import org.testng.annotations.Test; public class PIDModelTest { private static final double DELTA = 0.00001D; @Test(groups = "Functional") public void testGetPairwiseScore() { PIDModel sm = new PIDModel(); assertEquals(sm.getPairwiseScore('A', 'A'), 1f); assertEquals(sm.getPairwiseScore('A', 'a'), 1f); assertEquals(sm.getPairwiseScore('a', 'A'), 1f); assertEquals(sm.getPairwiseScore('A', 'B'), 0f); assertEquals(sm.getPairwiseScore('A', ' '), 0f); assertEquals(sm.getPairwiseScore(' ', ' '), 0f); assertEquals(sm.getPairwiseScore('.', '.'), 0f); assertEquals(sm.getPairwiseScore('-', '-'), 0f); } /** * Regression test to verify that a (suitably configured) PIDModel computes * the same percentage identities as the Comparison.PID method */ @Test(groups = "Functional") public void testComputePID_matchesComparisonPID() { /* * same length, no gaps */ String s1 = "ARFNQDWSGI"; String s2 = "ARKNQDQSGI"; double newScore = new PIDModel().computePID(s1, s2, SimilarityParams.Jalview); double oldScore = Comparison.PID(s1, s2); assertEquals(newScore, oldScore, DELTA); /* * same length, with gaps */ s1 = "-RFNQDWSGI"; s2 = "ARKNQ-QSGI"; newScore = new PIDModel().computePID(s1, s2, SimilarityParams.Jalview); oldScore = Comparison.PID(s1, s2); assertEquals(newScore, oldScore, DELTA); /* * s2 longer than s1, with gaps */ s1 = "ARK-"; s2 = "-RFNQ"; newScore = new PIDModel().computePID(s1, s2, SimilarityParams.Jalview); oldScore = Comparison.PID(s1, s2); assertEquals(newScore, oldScore, DELTA); /* * s1 longer than s2, with gaps */ s1 = "-RFNQ"; s2 = "ARK-"; newScore = new PIDModel().computePID(s1, s2, SimilarityParams.Jalview); oldScore = Comparison.PID(s1, s2); assertEquals(newScore, oldScore, DELTA); /* * same but now also with gapped columns */ s1 = "-R-F-NQ"; s2 = "AR-K--"; newScore = new PIDModel().computePID(s1, s2, SimilarityParams.Jalview); oldScore = Comparison.PID(s1, s2); assertEquals(newScore, oldScore, DELTA); } }