Merge branch 'develop' into features/JAL-1793VCF
[jalview.git] / src / jalview / datamodel / SequenceI.java
index dbf3ed3..c064373 100755 (executable)
@@ -21,7 +21,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;
 
@@ -118,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();
 
@@ -202,28 +204,14 @@ public interface SequenceI extends ASequenceI
   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 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 fromCol, int toCol);
+  public Range findPositions(int fromColum, int toColumn);
 
   /**
    * Returns an int array where indices correspond to each residue in the
@@ -289,7 +277,7 @@ public interface SequenceI extends ASequenceI
    * 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();
 
@@ -462,17 +450,6 @@ public interface SequenceI extends ASequenceI
   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
    */
 
@@ -510,14 +487,59 @@ public interface SequenceI extends ASequenceI
   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);
 }