JAL-2808 JAL-3026 deleted all commented out tab code from the dialog
[jalview.git] / src / jalview / analysis / scoremodels / ScoreMatrix.java
index 8b1ad2e..6cdfacb 100644 (file)
@@ -20,7 +20,9 @@
  */
 package jalview.analysis.scoremodels;
 
+import jalview.api.AlignmentViewPanel;
 import jalview.api.analysis.PairwiseScoreModelI;
+import jalview.api.analysis.ScoreModelI;
 import jalview.api.analysis.SimilarityParamsI;
 import jalview.datamodel.AlignmentView;
 import jalview.math.Matrix;
@@ -31,10 +33,11 @@ import java.util.Arrays;
 
 /**
  * A class that models a substitution score matrix for any given alphabet of
- * symbols
+ * symbols. Instances of this class are immutable and thread-safe, so the same
+ * object is returned from calls to getInstance().
  */
-public class ScoreMatrix extends SimilarityScoreModel implements
-        PairwiseScoreModelI
+public class ScoreMatrix extends SimilarityScoreModel
+        implements PairwiseScoreModelI
 {
   private static final char GAP_CHARACTER = Comparison.GAP_DASH;
 
@@ -110,6 +113,26 @@ public class ScoreMatrix extends SimilarityScoreModel implements
    */
   public ScoreMatrix(String theName, char[] alphabet, float[][] values)
   {
+    this(theName, null, alphabet, values);
+  }
+
+  /**
+   * Constructor given a name, description, symbol alphabet, and matrix of
+   * scores for pairs of symbols. The matrix should be square and of the same
+   * size as the alphabet, for example 20x20 for a 20 symbol alphabet.
+   * 
+   * @param theName
+   *          Unique, human readable name for the matrix
+   * @param theDescription
+   *          descriptive display name suitable for use in menus
+   * @param alphabet
+   *          the symbols to which scores apply
+   * @param values
+   *          Pairwise scores indexed according to the symbol alphabet
+   */
+  public ScoreMatrix(String theName, String theDescription, char[] alphabet,
+          float[][] values)
+  {
     if (alphabet.length != values.length)
     {
       throw new IllegalArgumentException(
@@ -126,6 +149,7 @@ public class ScoreMatrix extends SimilarityScoreModel implements
 
     this.matrix = values;
     this.name = theName;
+    this.description = theDescription;
     this.symbols = alphabet;
 
     symbolIndex = buildSymbolIndex(alphabet);
@@ -410,6 +434,7 @@ public class ScoreMatrix extends SimilarityScoreModel implements
    * <li>product[0, 1] = F.R + K.- + L.D = -3 + -1 + -3 = -8
    * <li>and so on</li>
    * </ul>
+   * This method is thread-safe.
    */
   @Override
   public MatrixI findSimilarities(AlignmentView seqstrings,
@@ -429,7 +454,8 @@ public class ScoreMatrix extends SimilarityScoreModel implements
    * @param params
    * @return
    */
-  protected MatrixI findSimilarities(String[] seqs, SimilarityParamsI params)
+  protected MatrixI findSimilarities(String[] seqs,
+          SimilarityParamsI params)
   {
     double[][] values = new double[seqs.length][];
     for (int row = 0; row < seqs.length; row++)
@@ -551,11 +577,6 @@ public class ScoreMatrix extends SimilarityScoreModel implements
     return new String(symbols);
   }
 
-  public void setDescription(String desc)
-  {
-    description = desc;
-  }
-
   public float getMinimumScore()
   {
     return minValue;
@@ -565,4 +586,10 @@ public class ScoreMatrix extends SimilarityScoreModel implements
   {
     return maxValue;
   }
+
+  @Override
+  public ScoreModelI getInstance(AlignmentViewPanel avp)
+  {
+    return this;
+  }
 }