X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2Fscoremodels%2FScoreModels.java;fp=src%2Fjalview%2Fanalysis%2Fscoremodels%2FScoreModels.java;h=71463831af62474f4bfc07113133979c4f9e36c8;hb=e5c87d2dd1d3ebceea890ef92c8a6374c62d3c83;hp=494d09f663283ae1dc662b353ad8c61824149f70;hpb=8893171320c5734ac79136a93e1f4589dbe595e3;p=jalview.git diff --git a/src/jalview/analysis/scoremodels/ScoreModels.java b/src/jalview/analysis/scoremodels/ScoreModels.java index 494d09f..7146383 100644 --- a/src/jalview/analysis/scoremodels/ScoreModels.java +++ b/src/jalview/analysis/scoremodels/ScoreModels.java @@ -1,6 +1,8 @@ package jalview.analysis.scoremodels; +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; @@ -90,9 +92,33 @@ public class ScoreModels return models.values(); } - public ScoreModelI forName(String s) + /** + * Returns an instance of a score model for the given name. If the model is of + * 'view dependent' type (e.g. feature similarity), instantiates a new + * instance configured for the given view. Otherwise returns a cached instance + * of the score model. + * + * @param name + * @param avp + * @return + */ + public ScoreModelI getScoreModel(String name, AlignmentViewPanel avp) { - return models.get(s); + 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; } public void registerScoreModel(ScoreModelI sm)