Merge branch 'bug/JAL-2842' into develop
[jalview.git] / src / jalview / analysis / scoremodels / PIDModel.java
index d537e33..c1e8b42 100644 (file)
@@ -1,6 +1,28 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 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;
@@ -8,15 +30,15 @@ import jalview.math.MatrixI;
 import jalview.util.Comparison;
 
 /**
- * A class to provide sequence pairwise similarity based on residue identity
+ * A class to provide sequence pairwise similarity based on residue identity.
+ * Instances of this class are immutable and thread-safe, so the same object is
+ * returned from calls to getInstance().
  */
-public class PIDModel extends SimilarityScoreModel implements
-        PairwiseScoreModelI
+public class PIDModel extends SimilarityScoreModel
+        implements PairwiseScoreModelI
 {
   private static final String NAME = "PID";
 
-  private String description;
-
   /**
    * Constructor
    */
@@ -30,10 +52,14 @@ public class PIDModel extends SimilarityScoreModel implements
     return NAME;
   }
 
+  /**
+   * Answers null for description. If a display name is needed, use getName() or
+   * an internationalized string built from the name.
+   */
   @Override
   public String getDescription()
   {
-    return description;
+    return null;
   }
 
   @Override
@@ -80,7 +106,7 @@ public class PIDModel extends SimilarityScoreModel implements
    * Computes similarity scores based on pairwise percentage identity of
    * sequences. For consistency with Jalview 2.10.1's SeqSpace mode PCA
    * calculation, the percentage scores are rescaled to the width of the
-   * sequences (as if counts of identical residues).
+   * sequences (as if counts of identical residues). This method is thread-safe.
    */
   @Override
   public MatrixI findSimilarities(AlignmentView seqData,
@@ -98,7 +124,8 @@ public class PIDModel extends SimilarityScoreModel implements
   /**
    * A distance score is computed in the usual way (by reversing the range of
    * the similarity score results), and then rescaled to percentage values
-   * (reversing the rescaling to count values done in findSimilarities)
+   * (reversing the rescaling to count values done in findSimilarities). This
+   * method is thread-safe.
    */
   @Override
   public MatrixI findDistances(AlignmentView seqData,
@@ -227,4 +254,10 @@ public class PIDModel extends SimilarityScoreModel implements
 
     return divideBy == 0 ? 0D : 100D * total / divideBy;
   }
+
+  @Override
+  public ScoreModelI getInstance(AlignmentViewPanel avp)
+  {
+    return this;
+  }
 }