d70516c19bd398fb49be9d77ededdb6598e01ca1
[jalview.git] / test / jalview / analysis / scoremodels / ScoreModelsTest.java
1 package jalview.analysis.scoremodels;
2
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertFalse;
5 import static org.testng.Assert.assertTrue;
6
7 import jalview.api.analysis.DistanceScoreModelI;
8 import jalview.api.analysis.PairwiseScoreModelI;
9 import jalview.api.analysis.ScoreModelI;
10 import jalview.api.analysis.SimilarityScoreModelI;
11
12 import java.util.Iterator;
13
14 import org.testng.annotations.Test;
15
16 public class ScoreModelsTest
17 {
18   /**
19    * Verify that the singleton constructor successfully loads Jalview's built-in
20    * score models
21    */
22   @Test
23   public void testConstructor()
24   {
25     Iterator<ScoreModelI> models = ScoreModels.getInstance().getModels()
26             .iterator();
27     assertTrue(models.hasNext());
28
29     /*
30      * models are served in order of addition
31      */
32     ScoreModelI sm = models.next();
33     assertTrue(sm instanceof SimilarityScoreModelI);
34     assertTrue(sm instanceof PairwiseScoreModelI);
35     assertFalse(sm instanceof DistanceScoreModelI);
36     assertEquals(sm.getName(), "BLOSUM62");
37     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('I', 'R'), -3f);
38
39     sm = models.next();
40     assertTrue(sm instanceof SimilarityScoreModelI);
41     assertTrue(sm instanceof PairwiseScoreModelI);
42     assertFalse(sm instanceof DistanceScoreModelI);
43     assertEquals(sm.getName(), "PAM250");
44     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'C'), -4f);
45
46     sm = models.next();
47     assertTrue(sm instanceof SimilarityScoreModelI);
48     assertTrue(sm instanceof PairwiseScoreModelI);
49     assertFalse(sm instanceof DistanceScoreModelI);
50     assertEquals(sm.getName(), "% Identity (PID)");
51     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'C'), 0f);
52     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'r'), 1f);
53
54     sm = models.next();
55     assertTrue(sm instanceof SimilarityScoreModelI);
56     assertTrue(sm instanceof PairwiseScoreModelI);
57     assertFalse(sm instanceof DistanceScoreModelI);
58     assertEquals(sm.getName(), "DNA");
59     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('c', 'x'), 1f);
60
61     sm = models.next();
62     assertFalse(sm instanceof SimilarityScoreModelI);
63     assertFalse(sm instanceof PairwiseScoreModelI);
64     assertTrue(sm instanceof DistanceScoreModelI);
65     assertEquals(sm.getName(), "Sequence Feature Similarity");
66
67     sm = models.next();
68     assertFalse(sm instanceof SimilarityScoreModelI);
69     assertFalse(sm instanceof PairwiseScoreModelI);
70     assertTrue(sm instanceof DistanceScoreModelI);
71     assertEquals(sm.getName(), "PID");
72   }
73
74   /**
75    * 'Test' that prints out score matrices in tab-delimited format. This test is
76    * intentionally not assigned to any group so would not be run as part of a
77    * suite. It makes no assertions and is just provided as a utility method for
78    * printing out matrices. Relocated here from ScoreMatrixPrinter.
79    */
80   @Test
81   public void printAllMatrices_tabDelimited()
82   {
83     printAllMatrices(false);
84   }
85
86   /**
87    * 'Test' that prints out score matrices in html format. This test is
88    * intentionally not assigned to any group so would not be run as part of a
89    * suite. It makes no assertions and is just provided as a utility method for
90    * printing out matrices. Relocated here from ScoreMatrixPrinter.
91    */
92   @Test
93   public void printAllMatrices_asHtml()
94   {
95     printAllMatrices(true);
96   }
97
98   /**
99    * Print all registered ScoreMatrix as plain or html tables
100    * 
101    * @param asHtml
102    */
103   protected void printAllMatrices(boolean asHtml)
104   {
105     for (ScoreModelI sm : ScoreModels.getInstance().getModels())
106     {
107       if (sm instanceof ScoreMatrix)
108       {
109         System.out.println(((ScoreMatrix) sm).outputMatrix(asHtml));
110       }
111     }
112   }
113 }