JAL-2403 improved ScoreModelI hierarchy as per Kira's review suggestions
[jalview.git] / src / jalview / analysis / PCA.java
index d8863f7..3ec7995 100755 (executable)
  */
 package jalview.analysis;
 
-import jalview.analysis.scoremodels.PIDModel;
-import jalview.api.analysis.DistanceScoreModelI;
 import jalview.api.analysis.ScoreModelI;
 import jalview.api.analysis.SimilarityParamsI;
-import jalview.api.analysis.SimilarityScoreModelI;
 import jalview.datamodel.AlignmentView;
 import jalview.math.MatrixI;
 
@@ -172,7 +169,7 @@ public class PCA implements Runnable
     // long now = System.currentTimeMillis();
     try
     {
-      eigenvector = computeSimilarity();
+      eigenvector = scoreModel.findSimilarities(seqs, similarityParams);
 
       details.append(" --- OrigT * Orig ---- \n");
       eigenvector.print(ps, "%8.2f");
@@ -215,50 +212,6 @@ public class PCA implements Runnable
   }
 
   /**
-   * Computes a pairwise similarity matrix for the given sequence regions using
-   * the configured score model. If the score model is a similarity model, then
-   * it computes the result directly. If it is a distance model, then use it to
-   * compute pairwise distances, and convert these to similarity scores.
-   * 
-   * @param av
-   * @return
-   */
-  MatrixI computeSimilarity()
-  {
-    MatrixI result = null;
-    if (scoreModel instanceof SimilarityScoreModelI)
-    {
-      result = ((SimilarityScoreModelI) scoreModel).findSimilarities(seqs,
-              similarityParams);
-      if (scoreModel instanceof PIDModel)
-      {
-        /*
-         * scale score to width of alignment for backwards
-         * compatibility with Jalview 2.10.1 SeqSpace PCA calculation 
-         */
-        result.multiply(seqs.getWidth() / 100d);
-      }
-    }
-    else if (scoreModel instanceof DistanceScoreModelI)
-    {
-      /*
-       * find distances and convert to similarity scores
-       * reverseRange(false) preserves but reverses the min-max range
-       */
-      result = ((DistanceScoreModelI) scoreModel).findDistances(seqs,
-              similarityParams);
-      result.reverseRange(false);
-    }
-    else
-    {
-      System.err
-              .println("Unexpected type of score model, cannot calculate similarity");
-    }
-
-    return result;
-  }
-
-  /**
    * Answers the N dimensions of the NxN PCA matrix. This is the number of
    * sequences involved in the pairwise score calculation.
    *