package jalview.datamodel.features; import jalview.datamodel.SequenceFeature; import java.util.List; import java.util.Set; public interface SequenceFeaturesI { /** * Adds one sequence feature to the store, and returns true, unless the * feature is already contained in the store, in which case this method * returns false. Containment is determined by SequenceFeature.equals() * comparison. * * @param sf */ public abstract boolean add(SequenceFeature sf); /** * Returns a (possibly empty) list of features, optionally restricted to * specified types, which overlap the given (inclusive) sequence position * range * * @param from * @param to * @param type * @return */ public abstract List findFeatures(int from, int to, String... type); /** * Answers a list of all features stored, optionally restricted to specified * types, in no particular guaranteed order * * @param type * @return */ public abstract List getAllFeatures(String... type); public abstract int getFeatureCount(boolean positional, String... type); /** * Answers a list of all positional features, optionally restricted to * specified types, in no particular guaranteed order * * @param type * @return */ public abstract List getPositionalFeatures( String... type); /** * Answers a list of all contact features, optionally restricted to specified * types, in no particular guaranteed order * * @return */ public abstract List getContactFeatures(String... type); /** * Answers a list of all non-positional features, optionally restricted to * specified types, in no particular guaranteed order * * @param type * if no type is specified, all are returned * @return */ public abstract List getNonPositionalFeatures( String... type); /** * Deletes the given feature from the store, returning true if it was found * (and deleted), else false. This method makes no assumption that the feature * is in the 'expected' place in the store, in case it has been modified since * it was added. * * @param sf */ public abstract boolean delete(SequenceFeature sf); /** * Answers true if this store contains at least one feature, else false * * @return */ public abstract boolean hasFeatures(); /** * Returns a set of the distinct feature groups present in the collection. The * set may include null. The boolean parameter determines whether the groups * for positional or for non-positional features are returned. The optional * type parameter may be used to restrict to groups for specified feature * types. * * @param positionalFeatures * @param type * @return */ public abstract Set getFeatureGroups(boolean positionalFeatures, String... type); /** * Answers the set of distinct feature types for which there is at least one * feature with one of the given feature group(s). The boolean parameter * determines whether the groups for positional or for non-positional features * are returned. * * @param positionalFeatures * @param groups * @return */ public abstract Set getFeatureTypesForGroups( boolean positionalFeatures, String... groups); /** * Answers an immutable set of the distinct feature types for which a feature * is stored * @return */ public abstract Set getFeatureTypes(); }