+ 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
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @param id\r
+ * DOCUMENT ME!\r
+ */\r
+ public void setPDBId(Vector ids);\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ * \r
+ * @return DOCUMENT ME!\r
+ */\r
+ public Vector getPDBId();\r
+\r
+ /**\r
+ * add entry to the vector of PDBIds, if it isn't in the list already\r
+ * \r
+ * @param entry\r
+ */\r
+ public void addPDBId(PDBEntry entry);\r
+\r
+ /**\r
+ * update the list of PDBEntrys to include any DBRefEntrys citing structural\r
+ * databases\r
+ * \r
+ * @return true if PDBEntry list was modified\r
+ */\r
+ public boolean updatePDBIds();\r
+\r
+ public String getVamsasId();\r
+\r
+ public void setVamsasId(String id);\r
+\r
+ public void setDBRef(DBRefEntry[] dbs);\r
+\r
+ public DBRefEntry[] getDBRef();\r
+\r
+ /**\r
+ * add the given entry to the list of DBRefs for this sequence, or replace a\r
+ * similar one if entry contains a map object and the existing one doesnt.\r
+ * \r
+ * @param entry\r
+ */\r
+ public void addDBRef(DBRefEntry entry);\r
+\r
+ public void addSequenceFeature(SequenceFeature sf);\r
+\r
+ public void deleteFeature(SequenceFeature sf);\r
+\r
+ public void setDatasetSequence(SequenceI seq);\r
+\r
+ public SequenceI getDatasetSequence();\r
+\r
+ public AlignmentAnnotation[] getAnnotation();\r
+\r
+ public void addAlignmentAnnotation(AlignmentAnnotation annotation);\r
+\r
+ public void removeAlignmentAnnotation(AlignmentAnnotation annotation);\r
+\r
+ /**\r
+ * Derive a sequence (using this one's dataset or as the dataset)\r
+ * \r
+ * @return duplicate sequence with valid dataset sequence\r
+ */\r
+ public SequenceI deriveSequence();\r
+\r
+ /**\r
+ * set the array of associated AlignmentAnnotation for this sequenceI\r
+ * \r
+ * @param revealed\r
+ */\r
+ public void setAlignmentAnnotation(AlignmentAnnotation[] annotation);\r
+\r
+ /**\r
+ * Get one or more alignment annotations with a particular label.\r
+ * \r
+ * @param label\r
+ * string which each returned annotation must have as a label.\r
+ * @return null or array of annotations.\r
+ */\r
+ public AlignmentAnnotation[] getAnnotation(String label);\r
+\r
+ /**\r
+ * Return a list of any annotations which match the given calcId (source) and\r
+ * label (type). Null values do not match.\r
+ * \r
+ * @param calcId\r
+ * @param label\r
+ * @return\r
+ */\r
+ public List<AlignmentAnnotation> getAlignmentAnnotations(String calcId,\r
+ String label);\r
+\r
+ /**\r
+ * create a new dataset sequence (if necessary) for this sequence and sets\r
+ * this sequence to refer to it. This call will move any features or\r
+ * references on the sequence onto the dataset. It will also make a duplicate\r
+ * of existing annotation rows for the dataset sequence, rather than relocate\r
+ * them in order to preserve external references (since 2.8.2).\r
+ * \r
+ * @return dataset sequence for this sequence\r
+ */\r
+ public SequenceI createDatasetSequence();\r
+\r
+ /**\r
+ * Transfer any database references or annotation from entry under a sequence\r
+ * mapping. <br/>\r
+ * <strong>Note: DOES NOT transfer sequence associated alignment\r
+ * annotation </strong><br/>\r
+ * \r
+ * @param entry\r
+ * @param mp\r
+ * null or mapping from entry's numbering to local start/end\r
+ */\r
+ public void transferAnnotation(SequenceI entry, Mapping mp);\r
+\r
+ /**\r
+ * @param index\r
+ * The sequence index in the MSA\r
+ */\r
+ public void setIndex(int index);\r
+\r
+ /**\r
+ * @return The index of the sequence in the alignment\r
+ */\r
+ public int getIndex();\r
+\r
+ /**\r
+ * @return The RNA of the sequence in the alignment\r
+ */\r
+\r
+ public RNA getRNA();\r
+\r
+ /**\r
+ * @param rna\r
+ * The RNA.\r
+ */\r
+ public void setRNA(RNA rna);\r