X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSequenceI.java;h=28be85fe99b407e53d90f93297272a47e0bb00d8;hb=05d220bbea0e8ce667490219436b96ebdf9826df;hp=12ddf60bac63a24036d813151fbf69d1d20fb2cc;hpb=6568287d7ca9ab336a83e27b9bfbd548a10cf748;p=jalview.git diff --git a/src/jalview/datamodel/SequenceI.java b/src/jalview/datamodel/SequenceI.java index 12ddf60..28be85f 100755 --- a/src/jalview/datamodel/SequenceI.java +++ b/src/jalview/datamodel/SequenceI.java @@ -20,6 +20,9 @@ */ package jalview.datamodel; +import jalview.datamodel.features.SequenceFeaturesI; +import jalview.util.MapList; + import java.util.BitSet; import java.util.List; import java.util.Vector; @@ -117,9 +120,9 @@ public interface SequenceI extends ASequenceI public String getSequenceAsString(int start, int end); /** - * Get the sequence as a character array + * Answers a copy of the sequence as a character array * - * @return seqeunce and any gaps + * @return */ public char[] getSequence(); @@ -175,7 +178,7 @@ public interface SequenceI extends ASequenceI public String getDescription(); /** - * Return the alignment column for a sequence position + * Return the alignment column (from 1..) for a sequence position * * @param pos * lying from start to end @@ -201,6 +204,16 @@ public interface SequenceI extends ASequenceI public int findPosition(int i); /** + * Returns the from-to sequence positions (start..) for the given column + * positions (1..), or null if no residues are included in the range + * + * @param fromColum + * @param toColumn + * @return + */ + public Range findPositions(int fromColum, int toColumn); + + /** * Returns an int array where indices correspond to each residue in the * sequence and the element value gives its position in the alignment * @@ -261,22 +274,28 @@ public interface SequenceI extends ASequenceI public void insertCharAt(int position, int count, char ch); /** - * Gets array holding sequence features associated with this sequence. The - * array may be held by the sequence's dataset sequence if that is defined. + * Answers a list of all sequence features associated with this sequence. The + * list may be held by the sequence's dataset sequence if that is defined. * - * @return hard reference to array + * @return */ - public SequenceFeature[] getSequenceFeatures(); + public List getSequenceFeatures(); /** - * Replaces the array of sequence features associated with this sequence with - * a new array reference. If this sequence has a dataset sequence, then this - * method will update the dataset sequence's feature array + * Answers the object holding features for the sequence + * + * @return + */ + SequenceFeaturesI getFeatures(); + + /** + * Replaces the sequence features associated with this sequence with the given + * features. If this sequence has a dataset sequence, then this method will + * update the dataset sequence's features instead. * * @param features - * New array of sequence features */ - public void setSequenceFeatures(SequenceFeature[] features); + public void setSequenceFeatures(List features); /** * DOCUMENT ME! @@ -341,7 +360,7 @@ public interface SequenceI extends ASequenceI /** * Adds the given sequence feature and returns true, or returns false if it is - * already present on the sequence + * already present on the sequence, or if the feature type is null. * * @param sf * @return @@ -479,9 +498,59 @@ public interface SequenceI extends ASequenceI public List getPrimaryDBRefs(); /** + * Returns a (possibly empty) list of sequence features that overlap the given + * alignment column range, optionally restricted to one or more specified + * feature types. If the range is all gaps, then features which enclose it are + * included (but not contact features). + * + * @param fromCol + * start column of range inclusive (1..) + * @param toCol + * end column of range inclusive (1..) + * @param types + * optional feature types to restrict results to + * @return + */ + List findFeatures(int fromCol, int toCol, String... types); + + /** + * Method to call to indicate that the sequence (characters or alignment/gaps) + * has been modified. Provided to allow any cursors on residue/column + * positions to be invalidated. + */ + void sequenceChanged(); + + /** * * @return BitSet corresponding to index [0,length) where Comparison.isGap() * returns true. */ BitSet getInsertionsAsBits(); + + /** + * Replaces every occurrence of c1 in the sequence with c2 and returns the + * number of characters changed + * + * @param c1 + * @param c2 + */ + public int replace(char c1, char c2); + + /** + * Answers the GeneLociI, or null if not known + * + * @return + */ + GeneLociI getGeneLoci(); + + /** + * Sets the mapping to gene loci for the sequence + * + * @param speciesId + * @param assemblyId + * @param chromosomeId + * @param map + */ + void setGeneLoci(String speciesId, String assemblyId, + String chromosomeId, MapList map); }