24b44a3c7fe6652f7237bf5e343b4970a1a03035
[jalview.git] / test / jalview / analysis / scoremodels / PIDModelTest.java
1 package jalview.analysis.scoremodels;
2
3 import static org.testng.Assert.assertEquals;
4
5 import jalview.util.Comparison;
6
7 import org.testng.annotations.Test;
8
9 public class PIDModelTest
10 {
11   private static final double DELTA = 0.00001D;
12
13   @Test(groups = "Functional")
14   public void testGetPairwiseScore()
15   {
16     PIDModel sm = new PIDModel();
17     assertEquals(sm.getPairwiseScore('A', 'A'), 1f);
18     assertEquals(sm.getPairwiseScore('A', 'a'), 1f);
19     assertEquals(sm.getPairwiseScore('a', 'A'), 1f);
20     assertEquals(sm.getPairwiseScore('A', 'B'), 0f);
21     assertEquals(sm.getPairwiseScore('A', ' '), 0f);
22     assertEquals(sm.getPairwiseScore(' ', ' '), 0f);
23     assertEquals(sm.getPairwiseScore('.', '.'), 0f);
24     assertEquals(sm.getPairwiseScore('-', '-'), 0f);
25   }
26
27   /**
28    * Regression test to verify that a (suitably configured) PIDModel computes
29    * the same percentage identities as the Comparison.PID method
30    */
31   @Test(groups = "Functional")
32   public void testComputePID_matchesComparisonPID()
33   {
34     /*
35      * same length, no gaps
36      */
37     String s1 = "ARFNQDWSGI";
38     String s2 = "ARKNQDQSGI";
39     double newScore = new PIDModel().computePID(s1, s2,
40             SimilarityParams.Jalview);
41     double oldScore = Comparison.PID(s1, s2);
42     assertEquals(newScore, oldScore, DELTA);
43
44     /*
45      * same length, with gaps
46      */
47     s1 = "-RFNQDWSGI";
48     s2 = "ARKNQ-QSGI";
49     newScore = new PIDModel().computePID(s1, s2,
50             SimilarityParams.Jalview);
51     oldScore = Comparison.PID(s1, s2);
52     assertEquals(newScore, oldScore, DELTA);
53
54     /*
55      * s2 longer than s1, with gaps
56      */
57     s1 = "ARK-";
58     s2 = "-RFNQ";
59     newScore = new PIDModel().computePID(s1, s2,
60             SimilarityParams.Jalview);
61     oldScore = Comparison.PID(s1, s2);
62     assertEquals(newScore, oldScore, DELTA);
63
64     /*
65      * s1 longer than s2, with gaps
66      */
67     s1 = "-RFNQ";
68     s2 = "ARK-";
69     newScore = new PIDModel().computePID(s1, s2,
70             SimilarityParams.Jalview);
71     oldScore = Comparison.PID(s1, s2);
72     assertEquals(newScore, oldScore, DELTA);
73
74     /*
75      * same but now also with gapped columns
76      */
77     s1 = "-R-F-NQ";
78     s2 = "AR-K--";
79     newScore = new PIDModel().computePID(s1, s2, SimilarityParams.Jalview);
80     oldScore = Comparison.PID(s1, s2);
81     assertEquals(newScore, oldScore, DELTA);
82   }
83 }