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;
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
*/
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
* 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,
/**
* 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,
return divideBy == 0 ? 0D : 100D * total / divideBy;
}
+
+ @Override
+ public ScoreModelI getInstance(AlignmentViewPanel avp)
+ {
+ return this;
+ }
}