JAL-3878 update branch from 2.12 merge from 2.11.2
[jalview.git] / src / jalview / datamodel / SequenceI.java
index 9045735..8f1d160 100755 (executable)
  */
 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;
@@ -49,7 +51,6 @@ public interface SequenceI extends ASequenceI
   public HiddenMarkovModel getHMM();
 
   public void setHMM(HiddenMarkovModel hmm);
-
   /**
    * Get the display name
    */
@@ -116,9 +117,11 @@ public interface SequenceI extends ASequenceI
    * 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
    */
@@ -210,14 +213,17 @@ 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
+   * 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. (0 and negative positions are rounded up)
    * @param toColumn
-   * @return
+   *          - last column, base 1
+   * @return null if fromColum>toColumn
    */
-  public Range findPositions(int fromColum, int toColumn);
+  public ContiguousI findPositions(int fromColum, int toColumn);
 
   /**
    * Returns an int array where indices correspond to each residue in the
@@ -354,14 +360,17 @@ public interface SequenceI extends ASequenceI
   /**
    * 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
@@ -440,6 +449,17 @@ public interface SequenceI extends ASequenceI
           String label);
 
   /**
+   * Returns a (possibly empty) list of any annotations that match on given
+   * calcId (source), label (type) and description (observation instance).
+   * Null values do not match.
+   * 
+   * @param calcId
+   * @param label
+   * @param description
+   */
+  public List<AlignmentAnnotation> getAlignmentAnnotations(String calcId,
+          String label, String description);
+  /**
    * create a new dataset sequence (if necessary) for this sequence and sets
    * this sequence to refer to it. This call will move any features or
    * references on the sequence onto the dataset. It will also make a duplicate
@@ -498,19 +518,6 @@ public interface SequenceI extends ASequenceI
    *         list
    */
   public List<DBRefEntry> getPrimaryDBRefs();
-
-  /**
-   * Updates mapping of Hidden Markov Model nodes to aligned sequence positions
-   * (e.g. after an alignment edit). The nodes of the HMM (excluding the first
-   * node, with model average values), are associated in turn with non-gapped
-   * sequence positions.
-   */
-  public void updateHMMMapping();
-
-  boolean isHMMConsensusSequence();
-
-  void setIsHMMConsensusSequence(boolean isHMMConsensusSequence);
-
   /**
    * Answers true if the sequence has annotation for Hidden Markov Model
    * information content, else false
@@ -547,8 +554,6 @@ public interface SequenceI extends ASequenceI
    */
   BitSet getInsertionsAsBits();
 
-  void mapToReference(AlignmentAnnotation rf);
-
   /**
    * Replaces every occurrence of c1 in the sequence with c2 and returns the
    * number of characters changed
@@ -556,7 +561,7 @@ public interface SequenceI extends ASequenceI
    * @param c1
    * @param c2
    */
-  int replace(char c1, char c2);
+  public int replace(char c1, char c2);
 
   /**
    * Answers the GeneLociI, or null if not known
@@ -597,4 +602,13 @@ public interface SequenceI extends ASequenceI
    * @return first residue not contained in regions
    */
   public int firstResidueOutsideIterator(Iterator<int[]> it);
+
+
+  /**
+   * Answers true if this sequence has an associated Hidden Markov Model
+   * 
+   * @return
+   */
+  boolean hasHMMProfile();
 }
+