import jalview.api.AlignmentViewPanel;
import jalview.api.FeatureRenderer;
-import jalview.api.analysis.DistanceScoreModelI;
+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 implements DistanceScoreModelI,
- ViewBasedAnalysisI
+public class FeatureDistanceModel extends DistanceScoreModel
{
+ private static final String NAME = "Sequence Feature Similarity";
+
+ private String description;
+
FeatureRenderer fr;
+ /**
+ * Constructor
+ */
+ public FeatureDistanceModel()
+ {
+ }
+
@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();
/**
* Builds and returns a map containing a (possibly empty) list (one per
* SeqCigar) of visible feature types at the given column position. The map
- * has no entry for sequences which are gapped at the column position.
+ * does not include entries for features which straddle a gapped column
+ * positions.
*
* @param seqs
* @param columnPosition
+ * (0..)
* @return
*/
protected Map<SeqCigar, Set<String>> findFeatureTypesAtColumn(
int spos = seq.findPosition(columnPosition);
if (spos != -1)
{
+ /*
+ * position is not a gap
+ */
Set<String> types = new HashSet<String>();
- List<SequenceFeature> sfs = fr.findFeaturesAtRes(seq.getRefSeq(),
- spos);
+ List<SequenceFeature> sfs = fr.findFeaturesAtResidue(
+ seq.getRefSeq(), spos);
for (SequenceFeature sf : sfs)
{
types.add(sf.getType());
@Override
public String getName()
{
- return "Sequence Feature Similarity";
+ return NAME;
+ }
+
+ @Override
+ public String getDescription()
+ {
+ return description;
}
@Override