+/**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
+public interface SequenceI\r
+{\r
+ /**\r
+ * Set the display name for the sequence\r
+ * \r
+ * @param name\r
+ */\r
+ public void setName(String name);\r
+\r
+ /**\r
+ * Get the display name\r
+ */\r
+ public String getName();\r
+\r
+ /**\r
+ * Set start position of first non-gapped symbol in sequence\r
+ * \r
+ * @param start\r
+ * new start position\r
+ */\r
+ public void setStart(int start);\r
+\r
+ /**\r
+ * get start position of first non-gapped residue in sequence\r
+ * \r
+ * @return\r
+ */\r
+ public int getStart();\r
+\r
+ /**\r
+ * get the displayed id of the sequence\r
+ * \r
+ * @return true means the id will be returned in the form\r
+ * DisplayName/Start-End\r
+ */\r
+ public String getDisplayId(boolean jvsuffix);\r
+\r
+ /**\r
+ * set end position for last residue in sequence\r
+ * \r
+ * @param end\r
+ */\r
+ public void setEnd(int end);\r
+\r
+ /**\r
+ * get end position for last residue in sequence getEnd()>getStart() unless\r
+ * sequence only consists of gap characters\r
+ * \r
+ * @return\r
+ */\r
+ public int getEnd();\r
+\r
+ /**\r
+ * @return length of sequence including gaps\r
+ * \r
+ */\r
+ public int getLength();\r
+\r
+ /**\r
+ * Replace the sequence with the given string\r
+ * \r
+ * @param sequence\r
+ * new sequence string\r
+ */\r
+ public void setSequence(String sequence);\r
+\r
+ /**\r
+ * @return sequence as string\r
+ */\r
+ public String getSequenceAsString();\r
+\r
+ /**\r
+ * get a range on the sequence as a string\r
+ * \r
+ * @param start\r
+ * position relative to start of sequence including gaps (from 0)\r
+ * @param end\r
+ * position relative to start of sequence including gaps (from 0)\r
+ * \r
+ * @return String containing all gap and symbols in specified range\r
+ */\r
+ public String getSequenceAsString(int start, int end);\r
+\r
+ /**\r
+ * Get the sequence as a character array\r
+ * \r
+ * @return seqeunce and any gaps\r
+ */\r
+ public char[] getSequence();\r
+\r
+ /**\r
+ * get stretch of sequence characters in an array\r
+ * \r
+ * @param start\r
+ * absolute index into getSequence()\r
+ * @param end\r
+ * exclusive index of last position in segment to be returned.\r
+ * \r
+ * @return char[max(0,end-start)];\r
+ */\r
+ public char[] getSequence(int start, int end);\r
+\r
+ /**\r
+ * create a new sequence object from start to end of this sequence\r
+ * \r
+ * @param start\r
+ * int\r
+ * @param end\r
+ * int\r
+ * @return SequenceI\r
+ */\r
+ public SequenceI getSubSequence(int start, int end);\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @param i\r
+ * DOCUMENT ME!\r
+ * \r
+ * @return DOCUMENT ME!\r
+ */\r
+ public char getCharAt(int i);\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @param desc\r
+ * DOCUMENT ME!\r
+ */\r
+ public void setDescription(String desc);\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @return DOCUMENT ME!\r
+ */\r
+ public String getDescription();\r
+\r
+ /**\r
+ * Return the alignment column for a sequence position * Return the alignment\r
+ * position for a sequence position\r
+ * \r
+ * @param pos\r
+ * lying from start to end\r
+ * \r
+ * @return aligned column for residue (0 if residue is upstream from\r
+ * alignment, -1 if residue is downstream from alignment) note.\r
+ * Sequence object returns sequence.getEnd() for positions upstream\r
+ * currently. TODO: change sequence for\r
+ * assert(findIndex(seq.getEnd()+1)==-1) and fix incremental bugs\r
+ * \r
+ */\r
+ public int findIndex(int pos);\r
+\r
+ /**\r
+ * Returns the sequence position for an alignment position\r
+ * \r
+ * @param i\r
+ * column index in alignment (from 1)\r
+ * \r
+ * @return residue number for residue (left of and) nearest ith column\r
+ */\r
+ public int findPosition(int i);\r
+\r
+ /**\r
+ * Returns an int array where indices correspond to each residue in the\r
+ * sequence and the element value gives its position in the alignment\r
+ * \r
+ * @return int[SequenceI.getEnd()-SequenceI.getStart()+1] or null if no\r
+ * residues in SequenceI object\r
+ */\r
+ public int[] gapMap();\r
+\r
+ /**\r
+ * Returns an int array where indices correspond to each position in sequence\r
+ * char array and the element value gives the result of findPosition for that\r
+ * index in the sequence.\r
+ * \r
+ * @return int[SequenceI.getLength()]\r
+ */\r
+ public int[] findPositionMap();\r
+\r
+ /**\r
+ * Delete a range of aligned sequence columns, creating a new dataset sequence\r
+ * if necessary and adjusting start and end positions accordingly.\r
+ * \r
+ * @param i\r
+ * first column in range to delete\r
+ * @param j\r
+ * last column in range to delete\r
+ */\r
+ public void deleteChars(int i, int j);\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @param i\r
+ * DOCUMENT ME!\r
+ * @param c\r
+ * DOCUMENT ME!\r
+ */\r
+ public void insertCharAt(int i, char c);\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @param i\r
+ * DOCUMENT ME!\r
+ * @param c\r
+ * DOCUMENT ME!\r
+ */\r
+ public void insertCharAt(int i, int length, char c);\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @return DOCUMENT ME!\r
+ */\r
+ public SequenceFeature[] getSequenceFeatures();\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @param v\r
+ * DOCUMENT ME!\r
+ */\r
+ public void setSequenceFeatures(SequenceFeature[] features);\r