X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fviewmodel%2FPCAModel.java;h=aa7c938a3c8b733b2fc0ba2ded1f28b1c95ba411;hb=cf6ec9416dae77d30b5be628c1112a609ed088fe;hp=324c69a538bb0be5f9e0d886aaa43eb729ea4124;hpb=74c5bd7b1f98214a6d57d7c64d0548013530d397;p=jalview.git diff --git a/src/jalview/viewmodel/PCAModel.java b/src/jalview/viewmodel/PCAModel.java index 324c69a..aa7c938 100644 --- a/src/jalview/viewmodel/PCAModel.java +++ b/src/jalview/viewmodel/PCAModel.java @@ -21,7 +21,6 @@ package jalview.viewmodel; import jalview.analysis.PCA; -import jalview.analysis.scoremodels.ScoreModels; import jalview.api.RotatableCanvasI; import jalview.api.analysis.ScoreModelI; import jalview.api.analysis.SimilarityParamsI; @@ -33,57 +32,59 @@ import java.util.Vector; public class PCAModel { - private volatile PCA pca; - - int top; + /* + * inputs + */ + private final AlignmentView seqstrings; - AlignmentView seqstrings; + private final SequenceI[] seqs; - SequenceI[] seqs; + private final SimilarityParamsI similarityParams; /* - * Score model used to calculate PCA + * options - score model, nucleotide / protein */ - ScoreModelI scoreModel; + private ScoreModelI scoreModel; private boolean nucleotide = false; - private Vector points; + /* + * outputs + */ + private PCA pca; - private boolean jvCalcMode = true; + int top; - private SimilarityParamsI similarityParams; + private Vector points; /** - * Constructor given sequence data and score calculation parameter options. - * The initial state is to compute PCA using a default score model (BLOSUM62 - * for peptide, DNA for nucleotide). + * Constructor given sequence data, score model and score calculation + * parameter options. * * @param seqData * @param sqs * @param nuc + * @param modelName * @param params */ public PCAModel(AlignmentView seqData, SequenceI[] sqs, boolean nuc, - SimilarityParamsI params) + ScoreModelI modelName, SimilarityParamsI params) { seqstrings = seqData; seqs = sqs; nucleotide = nuc; - scoreModel = ScoreModels.getInstance().getDefaultModel(!nucleotide); + scoreModel = modelName; similarityParams = params; } - public boolean isJvCalcMode() - { - return jvCalcMode; - } - - public void run() + /** + * Performs the PCA calculation (in the same thread) and extracts result data + * needed for visualisation by PCAPanel + */ + public void calculate() { pca = new PCA(seqstrings, scoreModel, similarityParams); - pca.setJvCalcMode(jvCalcMode); - pca.run(); + pca.run(); // executes in same thread, wait for completion // Now find the component coordinates int ii = 0; @@ -97,7 +98,7 @@ public class PCAModel // top = pca.getM().height() - 1; top = height - 1; - points = new Vector(); + points = new Vector<>(); float[][] scores = pca.getComponents(top - 1, top - 2, top - 3, 100); for (int i = 0; i < height; i++) @@ -229,11 +230,6 @@ public class PCAModel return pts; } - public void setJvCalcMode(boolean state) - { - jvCalcMode = state; - } - public String getScoreModelName() { return scoreModel == null ? "" : scoreModel.getName();