JAL-2110 SequenceI.isProtein method
[jalview.git] / src / jalview / datamodel / SequenceI.java
index 46669ae..355e271 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 package jalview.datamodel;
 
+import jalview.api.DBRefEntryI;
+
 import java.util.List;
 import java.util.Vector;
 
 import fr.orsay.lri.varna.models.rna.RNA;
 
 /**
- * DOCUMENT ME!
+ * Methods for manipulating a sequence, its metadata and related annotation in
+ * an alignment or dataset.
  * 
  * @author $author$
  * @version $Revision$
  */
-public interface SequenceI
+public interface SequenceI extends ASequenceI
 {
   /**
    * Set the display name for the sequence
@@ -134,12 +137,13 @@ public interface SequenceI
   public char[] getSequence(int start, int end);
 
   /**
-   * create a new sequence object from start to end of this sequence
+   * create a new sequence object with a subsequence of this one but sharing the
+   * same dataset sequence
    * 
    * @param start
-   *          int index for start position
+   *          int index for start position (base 0, inclusive)
    * @param end
-   *          int index for end position
+   *          int index for end position (base 0, exclusive)
    * 
    * @return SequenceI
    * @note implementations may use getSequence to get the sequence data
@@ -147,12 +151,12 @@ public interface SequenceI
   public SequenceI getSubSequence(int start, int end);
 
   /**
-   * DOCUMENT ME!
+   * get the i'th character in this sequence's local reference frame (ie from
+   * 0-number of characters lying from start-end)
    * 
    * @param i
-   *          DOCUMENT ME!
-   * 
-   * @return DOCUMENT ME!
+   *          index
+   * @return character or ' '
    */
   public char getCharAt(int i);
 
@@ -172,8 +176,7 @@ public interface SequenceI
   public String getDescription();
 
   /**
-   * Return the alignment column for a sequence position * Return the alignment
-   * position for a sequence position
+   * Return the alignment column for a sequence position
    * 
    * @param pos
    *          lying from start to end
@@ -216,13 +219,19 @@ public interface SequenceI
   public int[] findPositionMap();
 
   /**
+   * 
+   * @return true if sequence is composed of amino acid characters
+   */
+  public boolean isProtein();
+
+  /**
    * Delete a range of aligned sequence columns, creating a new dataset sequence
    * if necessary and adjusting start and end positions accordingly.
    * 
    * @param i
-   *          first column in range to delete
+   *          first column in range to delete (inclusive)
    * @param j
-   *          last column in range to delete
+   *          last column in range to delete (exclusive)
    */
   public void deleteChars(int i, int j);
 
@@ -239,25 +248,28 @@ public interface SequenceI
   /**
    * DOCUMENT ME!
    * 
-   * @param i
+   * @param position
    *          DOCUMENT ME!
-   * @param c
+   * @param ch
    *          DOCUMENT ME!
    */
-  public void insertCharAt(int i, int length, char c);
+  public void insertCharAt(int position, int count, char ch);
 
   /**
-   * DOCUMENT ME!
+   * Gets array holding sequence features associated with this sequence. The
+   * array may be held by the sequence's dataset sequence if that is defined.
    * 
-   * @return DOCUMENT ME!
+   * @return hard reference to array
    */
   public SequenceFeature[] getSequenceFeatures();
 
   /**
-   * DOCUMENT ME!
+   * 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
    * 
-   * @param v
-   *          DOCUMENT ME!
+   * @param features
+   *          New array of sequence features
    */
   public void setSequenceFeatures(SequenceFeature[] features);
 
@@ -267,14 +279,14 @@ public interface SequenceI
    * @param id
    *          DOCUMENT ME!
    */
-  public void setPDBId(Vector ids);
+  public void setPDBId(Vector<PDBEntry> ids);
 
   /**
-   * DOCUMENT ME!
+   * Returns a list
    * 
    * @return DOCUMENT ME!
    */
-  public Vector getPDBId();
+  public Vector<PDBEntry> getAllPDBEntries();
 
   /**
    * add entry to the vector of PDBIds, if it isn't in the list already
@@ -295,9 +307,9 @@ public interface SequenceI
 
   public void setVamsasId(String id);
 
-  public void setDBRef(DBRefEntry[] dbs);
+  public void setDBRefs(DBRefEntry[] dbs);
 
-  public DBRefEntry[] getDBRef();
+  public DBRefEntry[] getDBRefs();
 
   /**
    * add the given entry to the list of DBRefs for this sequence, or replace a
@@ -382,8 +394,8 @@ public interface SequenceI
   /**
    * Transfer any database references or annotation from entry under a sequence
    * mapping. <br/>
-   * <strong>Note: DOES NOT transfer sequence associated alignment
-   * annotation </strong><br/>
+   * <strong>Note: DOES NOT transfer sequence associated alignment annotation
+   * </strong><br/>
    * 
    * @param entry
    * @param mp
@@ -414,4 +426,36 @@ public interface SequenceI
    */
   public void setRNA(RNA rna);
 
+  /**
+   * 
+   * @return list of insertions (gap characters) in sequence
+   */
+  public List<int[]> getInsertions();
+
+  /**
+   * Given a pdbId String, return the equivalent PDBEntry if available in the
+   * given sequence
+   * 
+   * @param pdbId
+   * @return
+   */
+  public PDBEntry getPDBEntry(String pdbId);
+
+  /**
+   * Set the distinct source database, and accession number from which a
+   * sequence and its start-end data were derived from. This is very important
+   * for SIFTS mappings and must be set prior to performing SIFTS mapping.
+   * 
+   * @param dbRef
+   *          the source dbRef for the sequence
+   */
+  public void setSourceDBRef(DBRefEntryI dbRef);
+
+  /**
+   * Get the distinct source database, and accession number from which a
+   * sequence and its start-end data were derived from.
+   * 
+   * @return
+   */
+  public DBRefEntryI getSourceDBRef();
 }