case invariant matching of seqeunce feature to sequence id string
[jalview.git] / src / jalview / datamodel / AlignmentI.java
index a43b259..558b38d 100755 (executable)
@@ -165,7 +165,7 @@ public interface AlignmentI
 
   /**
    * Adds a new AlignmentAnnotation to this alignment
-   * @note Care should be taken to ensure that annotation is at 
+   * @note Care should be taken to ensure that annotation is at
    * least as wide as the longest sequence in the alignment
    * for rendering purposes.
    */
@@ -178,11 +178,15 @@ public interface AlignmentI
   public void setAnnotationIndex(AlignmentAnnotation aa, int index);
 
   /**
-   * Deletes a specific AlignmentAnnotation from the alignment.
-   *
+   * 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);
 
   /**
    * Get the annotation associated with this alignment
@@ -226,7 +230,7 @@ public interface AlignmentI
 
   /**
    * Set the associated dataset for the alignment, or create one.
-   * @param dataset The dataset alignment or null to construct one. 
+   * @param dataset The dataset alignment or null to construct one.
    */
   public void setDataset(Alignment dataset);
 
@@ -243,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);
+  
 }