/**
* 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);
/**
* @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);
+
}