+\r
+ setDisplayId();\r
+ }\r
+\r
+ /**\r
+ * Creates a new Sequence object.\r
+ *\r
+ * @param name DOCUMENT ME!\r
+ * @param sequence DOCUMENT ME!\r
+ */\r
+ public Sequence(String name, String sequence)\r
+ {\r
+ this(name, sequence, 1, sequence.length());\r
+ }\r
+\r
+ /**\r
+ * Creates a new Sequence object.\r
+ *\r
+ * @param seq DOCUMENT ME!\r
+ */\r
+ public Sequence(SequenceI seq)\r
+ {\r
+ this(seq.getName(), seq.getSequence(), seq.getStart(), seq.getEnd());\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param v DOCUMENT ME!\r
+ */\r
+ public void setSequenceFeatures(Vector v)\r
+ {\r
+ sequenceFeatures = v;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public Vector getSequenceFeatures()\r
+ {\r
+ return sequenceFeatures;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param id DOCUMENT ME!\r
+ */\r
+ public void setPDBId(String id)\r
+ {\r
+ pdbId = id;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public String getPDBId()\r
+ {\r
+ return pdbId;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public String getDisplayId()\r
+ {\r
+ return displayId;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ */\r
+ public void setDisplayId()\r
+ {\r
+ displayId = name + "/" + start + "-" + end;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param name DOCUMENT ME!\r
+ */\r
+ public void setName(String name)\r
+ {\r
+ this.name = name;\r
+ setDisplayId();\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public String getName()\r
+ {\r
+ return this.name;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param start DOCUMENT ME!\r
+ */\r
+ public void setStart(int start)\r
+ {\r
+ this.start = start;\r
+ setDisplayId();\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int getStart()\r
+ {\r
+ return this.start;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param end DOCUMENT ME!\r
+ */\r
+ public void setEnd(int end)\r
+ {\r
+ this.end = end;\r
+ setDisplayId();\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int getEnd()\r
+ {\r
+ return this.end;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int getLength()\r
+ {\r
+ return this.sequence.length();\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param seq DOCUMENT ME!\r
+ */\r
+ public void setSequence(String seq)\r
+ {\r
+ this.sequence = seq;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public String getSequence()\r
+ {\r
+ return this.sequence;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param start DOCUMENT ME!\r
+ * @param end DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public String getSequence(int start, int end)\r
+ {\r
+ // JBPNote - left to user to pad the result here (TODO:Decide on this policy)\r
+ if (start >= sequence.length())\r
+ {\r
+ return "";\r
+ }\r
+\r
+ if (end >= sequence.length())\r
+ {\r
+ end = sequence.length();\r
+ }\r
+\r
+ return this.sequence.substring(start, end);\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param i DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public char getCharAt(int i)\r
+ {\r
+ if (i < sequence.length())\r
+ {\r
+ return sequence.charAt(i);\r
+ }\r
+ else\r
+ {\r
+ return ' ';\r
+ }\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param desc DOCUMENT ME!\r
+ */\r
+ public void setDescription(String desc)\r
+ {\r
+ this.description = desc;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public String getDescription()\r
+ {\r
+ return this.description;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param pos DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int findIndex(int pos)\r
+ {\r
+ // returns the alignment position for a residue\r
+ int j = start;\r
+ int i = 0;\r
+\r
+ while ((i < sequence.length()) && (j <= end) && (j <= pos))\r
+ {\r
+ char c = sequence.charAt(i);\r
+\r
+ if (!jalview.util.Comparison.isGap((c)))\r
+ {\r
+ j++;\r
+ }\r
+\r
+ i++;\r
+ }\r
+\r
+ if ((j == end) && (j < pos))\r
+ {\r
+ return end + 1;\r
+ }\r
+ else\r
+ {\r
+ return i;\r
+ }\r