case invariant matching of seqeunce feature to sequence id string
[jalview.git] / src / jalview / datamodel / AlignmentI.java
index a81a965..558b38d 100755 (executable)
@@ -157,6 +157,7 @@ public interface AlignmentI
    */
   public Vector getGroups();
 
+
   /**
    * Deletes all groups from this alignment.
    */
@@ -164,55 +165,73 @@ public interface AlignmentI
 
   /**
    * Adds a new AlignmentAnnotation to this alignment
+   * @note Care should be taken to ensure that annotation is at
+   * least as wide as the longest sequence in the alignment
+   * for rendering purposes.
    */
   public void addAnnotation(AlignmentAnnotation aa);
-
+  /**
+   * moves annotation to a specified index in alignment annotation display stack
+   * @param aa the annotation object to be moved
+   * @param index the destination position
+   */
   public void setAnnotationIndex(AlignmentAnnotation aa, int index);
 
   /**
-   * Deletes a specific AlignmentAnnotation from the alignment.
-   *
-   * @param aa DOCUMENT ME!
+   * Deletes a specific AlignmentAnnotation from the alignment,
+   * and removes its reference from any SequenceI object's annotation
+   * if and only if aa is contained within the alignment's annotation
+   * vector. Otherwise, it will do nothing.
+   * 
+   * @param aa the annotation to delete
+   * @return true if annotation was deleted from this alignment.
    */
-  public void deleteAnnotation(AlignmentAnnotation aa);
+  public boolean deleteAnnotation(AlignmentAnnotation aa);
 
   /**
-   * DOCUMENT ME!
+   * Get the annotation associated with this alignment
    *
-   * @return DOCUMENT ME!
+   * @return array of AlignmentAnnotation objects
    */
   public AlignmentAnnotation[] getAlignmentAnnotation();
 
   /**
-   * DOCUMENT ME!
+   * Change the gap character used in this alignment to 'gc'
    *
-   * @param gc DOCUMENT ME!
+   * @param gc the new gap character.
    */
   public void setGapCharacter(char gc);
 
   /**
-   * DOCUMENT ME!
+   * Get the gap character used in this alignment
    *
-   * @return DOCUMENT ME!
+   * @return gap character
    */
   public char getGapCharacter();
 
   /**
-   * Returns true if alignment is nucleotide sequence
+   * Test for all nucleotide alignment
    *
-   * @return DOCUMENT ME!
+   * @return true if alignment is nucleotide sequence
    */
   public boolean isNucleotide();
 
   /**
-   * Set true if the alignment is a nucleotide sequence
+   * Set alignment to be a nucleotide sequence
    *
-   * @return
    */
   public void setNucleotide(boolean b);
 
+  /**
+   * Get the associated dataset for the alignment.
+   * @return Alignment containing dataset sequences or null of this is a dataset.
+   */
   public Alignment getDataset();
 
+  /**
+   * Set the associated dataset for the alignment, or create one.
+   * @param dataset The dataset alignment or null to construct one.
+   */
   public void setDataset(Alignment dataset);
 
   /**
@@ -228,4 +247,59 @@ public interface AlignmentI
    * @return CigarArray
    */
   public CigarArray getCompactAlignment();
+
+  /**
+   * Set an arbitrary key value pair for an alignment.
+   * Note: both key and value objects should return a 
+   * meaningful, human readable response to .toString()
+   * @param key
+   * @param value
+   */
+  public void setProperty(Object key, Object value);
+  /**
+   * Get a named property from the alignment. 
+   * @param key
+   * @return value of property
+   */
+  public Object getProperty(Object key);
+  /**
+   * Get the property hashtable.
+   * @return hashtable of alignment properties (or null if none are defined)
+   */
+  public Hashtable getProperties();
+
+  /**
+   * add a reference to a frame of aligned codons for this alignment
+   * @param codons
+   */
+  public void addCodonFrame(AlignedCodonFrame codons);
+  /**
+   * remove a particular codon frame reference from this alignment
+   * @param codons
+   * @return true if codon frame was removed.
+   */
+  public boolean removeCodonFrame(AlignedCodonFrame codons);
+  /**
+   * get all codon frames associated with this alignment
+   * @return
+   */
+  public AlignedCodonFrame[] getCodonFrames();
+  /**
+   * get a particular codon frame
+   * @param index
+   * @return
+   */
+  public AlignedCodonFrame getCodonFrame(int index);
+  /**
+   * get codon frames involving sequenceI
+   */
+  public AlignedCodonFrame[] getCodonFrame(SequenceI seq);
+  /**
+   * find sequence with given name in alignment
+   * @param token name to find
+   * @param b true implies that case insensitive matching will <em>also</em> be tried 
+   * @return matched sequence or null
+   */
+  public SequenceI findName(String token, boolean b);
+  
 }