*/
package jalview.datamodel;
+import jalview.datamodel.Sequence.DBModList;
import jalview.datamodel.features.SequenceFeaturesI;
+import jalview.util.MapList;
+import jalview.ws.params.InvalidArgumentException;
+import java.util.BitSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Vector;
* get a range on the sequence as a string
*
* @param start
- * position relative to start of sequence including gaps (from 0)
+ * (inclusive) position relative to start of sequence including gaps
+ * (from 0)
* @param end
- * position relative to start of sequence including gaps (from 0)
+ * (exclusive) position relative to start of sequence including gaps
+ * (from 0)
*
* @return String containing all gap and symbols in specified range
*/
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();
public int findIndex(int pos);
/**
- * Returns the sequence position for an alignment position.
+ * Returns the sequence position for an alignment (column) position. If at a
+ * gap, returns the position of the next residue to the right. If beyond the
+ * end of the sequence, returns 1 more than the last residue position.
*
* @param i
* column index in alignment (from 0..<length)
*
- * @return TODO: JAL-2562 - residue number for residue (left of and) nearest
- * ith column
+ * @return
*/
public int findPosition(int i);
/**
- * Returns the range of sequence positions included in the given alignment
- * position range. If no positions are included (the range is entirely gaps),
- * then returns null.
- *
- * <pre>
- * Example:
- * >Seq/8-13
- * ABC--DE-F
- * findPositions(1, 4) returns Range(9, 9) // B only
- * findPositions(3, 4) returns null // all gaps
- * findPositions(2, 6) returns Range(10, 12) // CDE
- * findPositions(3, 7) returns Range(11,12) // DE
- * </pre>
- *
- * @param fromCol
- * first aligned column position (base 0, inclusive)
- * @param toCol
- * last aligned column position (base 0, inclusive)
+ * Returns the sequence positions for first and last residues lying within the
+ * given column positions [fromColum,toColumn] (where columns are numbered
+ * from 1), or null if no residues are included in the range
*
+ * @param fromColum
+ * - first column base 1
+ * @param toColumn
+ * - last column, base 1
* @return
*/
- public Range findPositions(int fromCol, int toCol);
+ public ContiguousI findPositions(int fromColum, int toColumn);
/**
* Returns an int array where indices correspond to each residue in the
public int[] gapMap();
/**
+ * Build a bitset corresponding to sequence gaps
+ *
+ * @return a BitSet where set values correspond to gaps in the sequence
+ */
+ public BitSet gapBitset();
+
+ /**
* Returns an int array where indices correspond to each position in sequence
* char array and the element value gives the result of findPosition for that
* index in the sequence.
* 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 List<SequenceFeature> getSequenceFeatures();
/**
* set the array of Database references for the sequence.
*
+ * BH 2019.02.04 changes param to DBModlist
+ *
* @param dbs
* @deprecated - use is discouraged since side-effects may occur if DBRefEntry
* set are not normalised.
+ * @throws InvalidArgumentException if the is not one created by Sequence itself
*/
@Deprecated
- public void setDBRefs(DBRefEntry[] dbs);
+ public void setDBRefs(DBModList<DBRefEntry> dbs);
- public DBRefEntry[] getDBRefs();
+ public DBModList<DBRefEntry> getDBRefs();
/**
* add the given entry to the list of DBRefs for this sequence, or replace a
public void transferAnnotation(SequenceI entry, Mapping mp);
/**
- * @param index
- * The sequence index in the MSA
- */
- public void setIndex(int index);
-
- /**
- * @return The index of the sequence in the alignment
- */
- public int getIndex();
-
- /**
* @return The RNA of the sequence in the alignment
*/
public List<DBRefEntry> getPrimaryDBRefs();
/**
- * Returns a (possibly empty) list of sequence features that overlap the range
- * from-to (inclusive), optionally restricted to one or more specified feature
- * types
+ * 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 from
- * @param to
+ * @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<SequenceFeature> findFeatures(int from, int to, String... types);
+ List<SequenceFeature> 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);
+
+
+ /**
+ * Returns the sequence string constructed from the substrings of a sequence
+ * defined by the int[] ranges provided by an iterator. E.g. the iterator
+ * could iterate over all visible regions of the alignment
+ *
+ * @param it
+ * the iterator to use
+ * @return a String corresponding to the sequence
+ */
+ public String getSequenceStringFromIterator(Iterator<int[]> it);
+
+ /**
+ * Locate the first position in this sequence which is not contained in an
+ * iterator region. If no such position exists, return 0
+ *
+ * @param it
+ * iterator over regions
+ * @return first residue not contained in regions
+ */
+ public int firstResidueOutsideIterator(Iterator<int[]> it);
+
+ public int getColor(int i);
+
+ public int setColor(int i, int rgb);
+
+ public void resetColors();
+
}
+