*/
package jalview.analysis;
-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;
*/
public class PCA implements Runnable
{
- boolean jvCalcMode = true;
-
MatrixI symm;
double[] eigenvalue;
StringBuilder details = new StringBuilder(1024);
- private AlignmentView seqs;
+ final private AlignmentView seqs;
private ScoreModelI scoreModel;
// long now = System.currentTimeMillis();
try
{
- details.append("PCA Calculation Mode is "
- + (jvCalcMode ? "Jalview variant" : "Original SeqSpace")
- + "\n");
-
- eigenvector = computeSimilarity(seqs);
+ eigenvector = scoreModel.findSimilarities(seqs, similarityParams);
details.append(" --- OrigT * Orig ---- \n");
eigenvector.print(ps, "%8.2f");
}
/**
- * 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 by
- * substracting from the maximum value.
- *
- * @param av
- * @return
- */
- MatrixI computeSimilarity(AlignmentView av)
- {
- MatrixI result = null;
- if (scoreModel instanceof SimilarityScoreModelI)
- {
- result = ((SimilarityScoreModelI) scoreModel).findSimilarities(av,
- similarityParams);
- }
- else if (scoreModel instanceof DistanceScoreModelI)
- {
- result = ((DistanceScoreModelI) scoreModel).findDistances(av,
- similarityParams);
- result.reverseRange(false);
- }
- else
- {
- System.err
- .println("Unexpected type of score model, cannot calculate similarity");
- }
-
- return result;
- }
-
- public void setJvCalcMode(boolean calcMode)
- {
- this.jvCalcMode = calcMode;
- }
-
- /**
* Answers the N dimensions of the NxN PCA matrix. This is the number of
* sequences involved in the pairwise score calculation.
*