JAL-2403 JAL-1483 changes to ScoreModelI hierarchy and signatures to
[jalview.git] / src / jalview / analysis / scoremodels / ScoreMatrix.java
index 9da28eb..efde30d 100644 (file)
  */
 package jalview.analysis.scoremodels;
 
+import jalview.api.analysis.PairwiseScoreModelI;
+import jalview.api.analysis.SimilarityScoreModelI;
+import jalview.datamodel.AlignmentView;
 import jalview.math.Matrix;
 import jalview.math.MatrixI;
 
 import java.util.Arrays;
 
-public class ScoreMatrix implements PairwiseScoreModelI
+public class ScoreMatrix implements SimilarityScoreModelI,
+        PairwiseScoreModelI
 {
+  /*
+   * Jalview 2.10.1 treated gaps as X (peptide) or N (nucleotide)
+   * for pairwise scoring; 2.10.2 uses gap score (last column) in
+   * score matrix (JAL-2397)
+   * Set this flag to true (via Groovy) for 2.10.1 behaviour
+   */
+  private static boolean scoreGapAsAny = false;
+
   public static final short UNMAPPED = (short) -1;
 
   private static final String BAD_ASCII_ERROR = "Unexpected character %s in getPairwiseScore";
@@ -334,7 +346,19 @@ public class ScoreMatrix implements PairwiseScoreModelI
    * <li>and so on</li>
    * </ul>
    */
-  public MatrixI computePairwiseScores(String[] seqs)
+  @Override
+  public MatrixI findSimilarities(AlignmentView seqstrings)
+  {
+    char gapChar = scoreGapAsAny ? (seqstrings.isNa() ? 'N' : 'X') : ' ';
+    String[] seqs = seqstrings.getSequenceStrings(gapChar);
+    return findSimilarities(seqs);
+  }
+
+  /**
+   * @param seqs
+   * @return
+   */
+  protected MatrixI findSimilarities(String[] seqs)
   {
     double[][] values = new double[seqs.length][];
     for (int row = 0; row < seqs.length; row++)