+
+ /**
+ * 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);
+ /**
+ * find next sequence with given name in alignment starting after a given sequence
+ * @param startAfter the sequence after which the search will be started (usually the result of the last call to findName)
+ * @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(SequenceI startAfter, String token, boolean b);
+