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
public Object getProperty(Object key);
/**
* Get the property hashtable.
- * @return hashtable of alignment properties (if any)
+ * @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);
+
}