JAL-2499 JAL-2403 push 'configure for view' inside ScoreModels, defer
[jalview.git] / src / jalview / analysis / scoremodels / ScoreMatrix.java
index 8b1ad2e..9bec6e4 100644 (file)
@@ -31,7 +31,7 @@ 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.
  */
 public class ScoreMatrix extends SimilarityScoreModel implements
         PairwiseScoreModelI
@@ -95,7 +95,7 @@ public class ScoreMatrix extends SimilarityScoreModel implements
   private float minValue;
 
   private float maxValue;
-
+  
   /**
    * Constructor given a name, symbol alphabet, and matrix of scores for pairs
    * of symbols. The matrix should be square and of the same size as the
@@ -110,6 +110,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 +146,7 @@ public class ScoreMatrix extends SimilarityScoreModel implements
 
     this.matrix = values;
     this.name = theName;
+    this.description = theDescription;
     this.symbols = alphabet;
 
     symbolIndex = buildSymbolIndex(alphabet);
@@ -410,6 +431,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,
@@ -551,11 +573,6 @@ public class ScoreMatrix extends SimilarityScoreModel implements
     return new String(symbols);
   }
 
-  public void setDescription(String desc)
-  {
-    description = desc;
-  }
-
   public float getMinimumScore()
   {
     return minValue;