dae1f6232b1edce74369e6c87d35612a5f8527c9
[jalview.git] / src / jalview / analysis / scoremodels / SimilarityScoreModel.java
1 package jalview.analysis.scoremodels;
2
3 import jalview.api.analysis.ScoreModelI;
4 import jalview.api.analysis.SimilarityParamsI;
5 import jalview.datamodel.AlignmentView;
6 import jalview.math.MatrixI;
7
8 public abstract class SimilarityScoreModel implements ScoreModelI
9 {
10
11   /**
12    * Computed similarity scores are converted to distance scores by subtracting
13    * every value from the maximum value. That is, maximum similarity corresponds
14    * to zero distance, and smaller similarities to larger distances.
15    */
16   @Override
17   public MatrixI findDistances(AlignmentView seqData,
18           SimilarityParamsI options)
19   {
20     MatrixI similarities = findSimilarities(seqData, options);
21
22     MatrixI distances = similarityToDistance(similarities);
23
24     return distances;
25   }
26
27   /**
28    * Converts a matrix of similarity scores to distance scores, by reversing the
29    * range of the scores, mapping the maximum to zero. The input matrix is not
30    * modified.
31    * 
32    * @param similarities
33    */
34   public static MatrixI similarityToDistance(MatrixI similarities)
35   {
36     MatrixI distances = similarities.copy();
37
38     distances.reverseRange(true);
39
40     return distances;
41   }
42
43 }