import jalview.api.AlignmentViewPanel;
import jalview.api.FeatureRenderer;
+import jalview.api.analysis.ScoreModelI;
import jalview.api.analysis.SimilarityParamsI;
-import jalview.api.analysis.ViewBasedAnalysisI;
import jalview.datamodel.AlignmentView;
import jalview.datamodel.SeqCigar;
import jalview.datamodel.SequenceFeature;
import java.util.Map;
import java.util.Set;
-public class FeatureDistanceModel extends DistanceScoreModel implements
- ViewBasedAnalysisI
+public class FeatureDistanceModel extends DistanceScoreModel
{
private static final String NAME = "Sequence Feature Similarity";
}
@Override
- public boolean configureFromAlignmentView(AlignmentViewPanel view)
+ public ScoreModelI getInstance(AlignmentViewPanel view)
+ {
+ FeatureDistanceModel instance;
+ try
+ {
+ instance = this.getClass().newInstance();
+ instance.configureFromAlignmentView(view);
+ return instance;
+ } catch (InstantiationException | IllegalAccessException e)
+ {
+ System.err.println("Error in " + getClass().getName()
+ + ".getInstance(): " + e.getMessage());
+ return null;
+ }
+ }
+
+ boolean configureFromAlignmentView(AlignmentViewPanel view)
{
fr = view.cloneFeatureRenderer();
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;
/**
* A class to provide sequence pairwise similarity based on residue identity.
- * Instances of this class are immutable and thread-safe.
+ * 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
return divideBy == 0 ? 0D : 100D * total / divideBy;
}
+
+ @Override
+ public ScoreModelI getInstance(AlignmentViewPanel avp)
+ {
+ return this;
+ }
}
*/
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;
/**
* A class that models a substitution score matrix for any given alphabet of
- * symbols. Instances of this class are immutable and thread-safe.
+ * symbols. Instances of this class are immutable and thread-safe, so the same
+ * object is returned from calls to getInstance().
*/
public class ScoreMatrix extends SimilarityScoreModel implements
PairwiseScoreModelI
{
return maxValue;
}
+
+ @Override
+ public ScoreModelI getInstance(AlignmentViewPanel avp)
+ {
+ return this;
+ }
}
import jalview.api.AlignmentViewPanel;
import jalview.api.analysis.ScoreModelI;
-import jalview.api.analysis.ViewBasedAnalysisI;
import jalview.io.DataSourceType;
import jalview.io.FileParse;
import jalview.io.ScoreMatrixFile;
public ScoreModelI getScoreModel(String name, AlignmentViewPanel avp)
{
ScoreModelI model = models.get(name);
- if (model instanceof ViewBasedAnalysisI)
- {
- try
- {
- model = model.getClass().newInstance();
- ((ViewBasedAnalysisI) model).configureFromAlignmentView(avp);
- } catch (IllegalAccessException | InstantiationException e)
- {
- System.err.println("Error creating score model " + name + ": "
- + e.getMessage());
- return null;
- }
- }
- return model;
+ return model == null ? null : model.getInstance(avp);
}
public void registerScoreModel(ScoreModelI sm)
package jalview.analysis.scoremodels;
import jalview.analysis.AlignSeq;
+import jalview.api.AlignmentViewPanel;
+import jalview.api.analysis.ScoreModelI;
import jalview.api.analysis.SimilarityParamsI;
import jalview.datamodel.AlignmentView;
import jalview.datamodel.SequenceI;
{
return description;
}
+
+ @Override
+ public ScoreModelI getInstance(AlignmentViewPanel avp)
+ {
+ return this;
+ }
}
package jalview.api.analysis;
+import jalview.api.AlignmentViewPanel;
import jalview.datamodel.AlignmentView;
import jalview.math.MatrixI;
* @return
*/
MatrixI findSimilarities(AlignmentView seqData, SimilarityParamsI options);
+
+ /**
+ * Returns a score model object configured for the given alignment view.
+ * Depending on the score model, this may just be a singleton instance, or a
+ * new instance configured with data from the view.
+ *
+ * @param avp
+ * @return
+ */
+ ScoreModelI getInstance(AlignmentViewPanel avp);
}
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.api.analysis;
-
-import jalview.api.AlignmentViewPanel;
-
-public interface ViewBasedAnalysisI
-{
-
- /**
- * Parameterise the analysis model using the current view
- *
- * @param view
- * @return true if model is applicable and calculation should proceed
- */
-
- boolean configureFromAlignmentView(AlignmentViewPanel view);
-
-}