Merge branch 'features/JAL-2393customMatrices' into develop
[jalview.git] / test / jalview / schemes / ScoreMatrixTest.java
diff --git a/test/jalview/schemes/ScoreMatrixTest.java b/test/jalview/schemes/ScoreMatrixTest.java
deleted file mode 100644 (file)
index e15dd41..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-package jalview.schemes;
-
-import static org.testng.Assert.assertEquals;
-
-import jalview.math.MatrixI;
-
-import org.testng.annotations.Test;
-
-public class ScoreMatrixTest
-{
-  @Test(groups = "Functional")
-  public void testSymmetric()
-  {
-    verifySymmetric(ResidueProperties.getScoreMatrix("BLOSUM62"));
-    verifySymmetric(ResidueProperties.getScoreMatrix("PAM250"));
-    verifySymmetric(ResidueProperties.getScoreMatrix("DNA"));
-  }
-
-  private void verifySymmetric(ScoreMatrix sm)
-  {
-    int[][] m = sm.getMatrix();
-    int rows = m.length;
-    for (int row = 0; row < rows; row++)
-    {
-      assertEquals(m[row].length, rows);
-      for (int col = 0; col < rows; col++)
-      {
-        assertEquals(m[row][col], m[col][row], String.format("%s [%s, %s]",
-                sm.getName(), ResidueProperties.aa[row],
-                ResidueProperties.aa[col]));
-      }
-    }
-
-    /*
-     * also check the score matrix is sized for 
-     * the number of symbols scored, plus gap
-     */
-    assertEquals(rows, (sm.isDNA() ? ResidueProperties.maxNucleotideIndex
-            : ResidueProperties.maxProteinIndex) + 1);
-  }
-
-  /**
-   * A test that just asserts the expected values in the Blosum62 score matrix
-   */
-  @Test(groups = "Functional")
-  public void testBlosum62_values()
-  {
-    ScoreMatrix sm = ResidueProperties.getScoreMatrix("BLOSUM62");
-
-    /*
-     * verify expected scores against ARNDCQEGHILKMFPSTWYVBZX
-     * scraped from https://www.ncbi.nlm.nih.gov/Class/FieldGuide/BLOSUM62.txt
-     */
-    verifyValues(sm, 'A', new int[] { 4, -1, -2, -2, 0, -1, -1, 0, -2, -1,
-        -1, -1, -1, -2, -1, 1, 0, -3, -2, 0, -2, -1, 0 });
-    verifyValues(sm, 'R', new int[] { -1, 5, 0, -2, -3, 1, 0, -2, 0, -3,
-        -2, 2, -1, -3, -2, -1, -1, -3, -2, -3, -1, 0, -1 });
-    verifyValues(sm, 'N', new int[] { -2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3,
-        0, -2, -3, -2, 1, 0, -4, -2, -3, 3, 0, -1 });
-    verifyValues(sm, 'D', new int[] { -2, -2, 1, 6, -3, 0, 2, -1, -1, -3,
-        -4, -1, -3, -3, -1, 0, -1, -4, -3, -3, 4, 1, -1 });
-    verifyValues(sm, 'C', new int[] { 0, -3, -3, -3, 9, -3, -4, -3, -3, -1,
-        -1, -3, -1, -2, -3, -1, -1, -2, -2, -1, -3, -3, -2 });
-    verifyValues(sm, 'Q', new int[] { -1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2,
-        1, 0, -3, -1, 0, -1, -2, -1, -2, 0, 3, -1 });
-    verifyValues(sm, 'E', new int[] { -1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3,
-        1, -2, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1 });
-    verifyValues(sm, 'G', new int[] { 0, -2, 0, -1, -3, -2, -2, 6, -2, -4,
-        -4, -2, -3, -3, -2, 0, -2, -2, -3, -3, -1, -2, -1 });
-    verifyValues(sm, 'H', new int[] { -2, 0, 1, -1, -3, 0, 0, -2, 8, -3,
-        -3, -1, -2, -1, -2, -1, -2, -2, 2, -3, 0, 0, -1 });
-    verifyValues(sm, 'I', new int[] { -1, -3, -3, -3, -1, -3, -3, -4, -3,
-        4, 2, -3, 1, 0, -3, -2, -1, -3, -1, 3, -3, -3, -1 });
-    verifyValues(sm, 'L', new int[] { -1, -2, -3, -4, -1, -2, -3, -4, -3,
-        2, 4, -2, 2, 0, -3, -2, -1, -2, -1, 1, -4, -3, -1 });
-    verifyValues(sm, 'K', new int[] { -1, 2, 0, -1, -3, 1, 1, -2, -1, -3,
-        -2, 5, -1, -3, -1, 0, -1, -3, -2, -2, 0, 1, -1 });
-    verifyValues(sm, 'M', new int[] { -1, -1, -2, -3, -1, 0, -2, -3, -2, 1,
-        2, -1, 5, 0, -2, -1, -1, -1, -1, 1, -3, -1, -1 });
-    verifyValues(sm, 'F', new int[] { -2, -3, -3, -3, -2, -3, -3, -3, -1,
-        0, 0, -3, 0, 6, -4, -2, -2, 1, 3, -1, -3, -3, -1 });
-    verifyValues(sm, 'P', new int[] { -1, -2, -2, -1, -3, -1, -1, -2, -2,
-        -3, -3, -1, -2, -4, 7, -1, -1, -4, -3, -2, -2, -1, -2 });
-    verifyValues(sm, 'S', new int[] { 1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2,
-        0, -1, -2, -1, 4, 1, -3, -2, -2, 0, 0, 0 });
-    verifyValues(sm, 'T', new int[] { 0, -1, 0, -1, -1, -1, -1, -2, -2, -1,
-        -1, -1, -1, -2, -1, 1, 5, -2, -2, 0, -1, -1, 0 });
-    verifyValues(sm, 'W', new int[] { -3, -3, -4, -4, -2, -2, -3, -2, -2,
-        -3, -2, -3, -1, 1, -4, -3, -2, 11, 2, -3, -4, -3, -2 });
-    verifyValues(sm, 'Y', new int[] { -2, -2, -2, -3, -2, -1, -2, -3, 2,
-        -1, -1, -2, -1, 3, -3, -2, -2, 2, 7, -1, -3, -2, -1 });
-    verifyValues(sm, 'V', new int[] { 0, -3, -3, -3, -1, -2, -2, -3, -3, 3,
-        1, -2, 1, -1, -2, -2, 0, -3, -1, 4, -3, -2, -1 });
-    verifyValues(sm, 'B', new int[] { -2, -1, 3, 4, -3, 0, 1, -1, 0, -3,
-        -4, 0, -3, -3, -2, 0, -1, -4, -3, -3, 4, 1, -1 });
-    verifyValues(sm, 'Z', new int[] { -1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3,
-        1, -1, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1 });
-    verifyValues(sm, 'X', new int[] { 0, -1, -1, -1, -2, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -2, 0, 0, -2, -1, -1, -1, -1, -1 });
-  }
-  /**
-   * Helper method to check pairwise scores for one residue
-   * 
-   * @param sm
-   * @param res
-   * @param expected
-   *          score values against 'res', in ResidueProperties.aaIndex order
-   */
-  private void verifyValues(ScoreMatrix sm, char res, int[] expected)
-  {
-    for (int j = 0; j < expected.length; j++)
-    {
-      char c2 = ResidueProperties.aa[j].charAt(0);
-      assertEquals(sm.getPairwiseScore(res, c2), expected[j],
-              String.format("%s->%s", res, c2));
-    }
-  }
-
-  @Test(groups = "Functional")
-  public void testComputePairwiseScores()
-  {
-    String[] seqs = new String[] { "FKL", "R-D", "QIA", "GWC" };
-    ScoreMatrix sm = ResidueProperties.getScoreMatrix("BLOSUM62");
-  
-    MatrixI pairwise = sm.computePairwiseScores(seqs);
-  
-    /*
-     * should be NxN where N = number of sequences
-     */
-    assertEquals(pairwise.height(), 4);
-    assertEquals(pairwise.width(), 4);
-  
-    /*
-     * should be symmetrical (because BLOSUM62 is)
-     */
-    for (int i = 0; i < pairwise.height(); i++)
-    {
-      for (int j = 0; j < pairwise.width(); j++)
-      {
-        assertEquals(pairwise.getValue(i, j), pairwise.getValue(j, i),
-                "Not symmetric");
-      }
-    }
-    /*
-     * verify expected BLOSUM dot product scores
-     */
-    // F.F + K.K + L.L = 6 + 5 + 4 = 15
-    assertEquals(pairwise.getValue(0, 0), 15d);
-    // R.R + -.- + D.D = 5 + 1 + 6 = 12
-    assertEquals(pairwise.getValue(1, 1), 12d);
-    // Q.Q + I.I + A.A = 5 + 4 + 4 = 13
-    assertEquals(pairwise.getValue(2, 2), 13d);
-    // G.G + W.W + C.C = 6 + 11 + 9 = 26
-    assertEquals(pairwise.getValue(3, 3), 26d);
-    // F.R + K.- + L.D = -3 + -4 + -4 = -11
-    assertEquals(pairwise.getValue(0, 1), -11d);
-    // F.Q + K.I + L.A = -3 + -3 + -1 = -7
-    assertEquals(pairwise.getValue(0, 2), -7d);
-    // F.G + K.W + L.C = -3 + -3 + -1 = -7
-    assertEquals(pairwise.getValue(0, 3), -7d);
-    // R.Q + -.I + D.A = 1 + -4 + -2 = -5
-    assertEquals(pairwise.getValue(1, 2), -5d);
-    // R.G + -.W + D.C = -2 + -4 + -3 = -9
-    assertEquals(pairwise.getValue(1, 3), -9d);
-    // Q.G + I.W + A.C = -2 + -3 + 0 = -5
-    assertEquals(pairwise.getValue(2, 3), -5d);
-  }
-}