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;
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)