Formatted source
[jalview.git] / src / jalview / datamodel / Sequence.java
index d7f2b9f..3853af9 100755 (executable)
 * along with this program; if not, write to the Free Software\r
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
 */\r
-\r
 package jalview.datamodel;\r
 \r
+import MCview.*;\r
+\r
 import jalview.analysis.*;\r
+\r
 import java.awt.*;\r
+\r
 import java.util.*;\r
-import MCview.*;\r
 \r
 \r
-public class Sequence implements SequenceI\r
-{\r
-  protected String name;\r
-  protected String sequence;\r
-  protected String description;\r
-  protected int start;\r
-  protected int end;\r
-  protected String displayId;\r
-  protected Color color = Color.white;\r
-  String pdbId;\r
-\r
-   public Vector sequenceFeatures = new Vector();\r
-   public void setSequenceFeatures(Vector v)\r
-   {\r
-     sequenceFeatures = v;\r
-   }\r
-\r
-   public Vector getSequenceFeatures()\r
-   {return sequenceFeatures; }\r
-\r
-   public void setPDBId(String id)\r
-   {\r
-     pdbId = id;\r
-   }\r
-   public String getPDBId()\r
-   {\r
-     return pdbId;\r
-   }\r
-\r
-\r
-  public Sequence(String name, String sequence, int start, int end)\r
-  {\r
-\r
-    this.name     = name;\r
-    this.sequence = sequence;\r
-    this.start    = start;\r
-    this.end      = end;\r
-\r
-    setDisplayId();\r
-\r
-  }\r
-\r
-  public Sequence(String name,String sequence) {\r
-    this(name,sequence,1,sequence.length());\r
-  }\r
-  public Sequence(SequenceI seq) {\r
-    this(seq.getName(),seq.getSequence(),seq.getStart(),seq.getEnd());\r
-  }\r
-  public String getDisplayId() {\r
-    return displayId;\r
-  }\r
-  public void setDisplayId() {\r
-    displayId = name + "/" + start + "-" + end;\r
-  }\r
-  public void setName(String name) {\r
-    this.name = name;\r
-    setDisplayId();\r
-  }\r
-  public String getName() {\r
-    return this.name;\r
-  }\r
-  public void setStart(int start) {\r
-    this.start = start;\r
-    setDisplayId();\r
-  }\r
-  public int getStart() {\r
-    return this.start;\r
-  }\r
-  public void setEnd(int end) {\r
-    this.end = end;\r
-    setDisplayId();\r
-  }\r
-  public int getEnd() {\r
-    return this.end;\r
-  }\r
-  public int getLength() {\r
-    return this.sequence.length();\r
-  }\r
-  public void setSequence(String seq) {\r
-    this.sequence = seq;\r
-  }\r
-  public String getSequence() {\r
-    return this.sequence;\r
-  }\r
-  public String getSequence(int start,int end) {\r
-    // JBPNote - left to user to pad the result here (TODO:Decide on this policy)\r
-    if(start>=sequence.length())\r
-      return "";\r
-\r
-    if(end>=sequence.length())\r
-      end = sequence.length();\r
-\r
-    return this.sequence.substring(start,end);\r
-  }\r
-\r
-  public char getCharAt(int i) {\r
-    if (i < sequence.length()) {\r
-      return sequence.charAt(i);\r
-    } else {\r
-      return ' ';\r
-    }\r
-  }\r
-  public void setDescription(String desc) {\r
-    this.description = desc;\r
-  }\r
-  public String getDescription() {\r
-    return this.description;\r
-  }\r
-\r
-  public int findIndex(int pos) {\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
-        j++;\r
-\r
-      i++;\r
-    }\r
-    if (j == end && j < pos)\r
-      return end+1;\r
-    else\r
-      return i;\r
-\r
-  }\r
-\r
-  public int findPosition(int i) {\r
-    // Returns the sequence position for an alignment position\r
-    int j   = 0;\r
-    int pos = start;\r
-\r
-    while (j < i && j<sequence.length())\r
-    {\r
-      char c = sequence.charAt(j);\r
-      if (!jalview.util.Comparison.isGap((c)))\r
-        pos++;\r
-\r
-      j++;\r
-    }\r
-    return pos;\r
-  }\r
-\r
-  public int[] gapMap() {\r
-    // Returns an int array giving the position of each residue in the sequence in the alignment\r
-    String seq = jalview.analysis.AlignSeq.extractGaps("-. ",sequence);\r
-    int[] map = new int[seq.length()];\r
-    int j=0;\r
-    int p=0;\r
-    while (j<sequence.length()) {\r
-      if (!jalview.util.Comparison.isGap(sequence.charAt(j))) {\r
-        map[p++]=j;\r
-      }\r
-      j++;\r
-    }\r
-    return map;\r
-  }\r
-\r
-  public void deleteCharAt(int i)\r
-  {\r
-    if (i>=sequence.length())\r
-      return;\r
-    sequence = sequence.substring(0,i) + sequence.substring(i+1);\r
-  }\r
-\r
-  public void deleteChars(int i, int j)\r
-  {\r
-    if (i>=sequence.length())\r
-      return;\r
-    if (j>=sequence.length())\r
-      sequence = sequence.substring(0,i);\r
-    else\r
-      sequence = sequence.substring(0,i) + sequence.substring(j);\r
-  }\r
-\r
-  public void insertCharAt(int i, char c)\r
-  {\r
-    insertCharAt(i,c,true);\r
-  }\r
-\r
-  public void insertCharAt(int i,char c,boolean chop) {\r
-\r
-    String tmp = new String(sequence);\r
-\r
-    if (i < sequence.length()) {\r
-      sequence = tmp.substring(0,i) + String.valueOf(c) + tmp.substring(i);\r
-    } else {\r
-      // JBPNote : padding char at end of sequence. We'll not get away with this when we insert residues, I bet!\r
-      char[] ch = new char[1+i-sequence.length()];\r
-      for (int j=0, k=ch.length; j<k; j++)\r
-        ch[j] = c;\r
-      sequence = tmp + String.valueOf(ch);\r
-    }\r
-\r
-  }\r
-\r
-  public void        setColor(Color c) {\r
-    this.color = c;\r
-  }\r
-\r
-  public Color       getColor() {\r
-    return color;\r
-  }\r
+public class Sequence implements SequenceI {\r
+    protected String name;\r
+    protected String sequence;\r
+    protected String description;\r
+    protected int start;\r
+    protected int end;\r
+    protected String displayId;\r
+    protected Color color = Color.white;\r
+    String pdbId;\r
+    public Vector sequenceFeatures = new Vector();\r
+\r
+    public Sequence(String name, String sequence, int start, int end) {\r
+        this.name = name;\r
+        this.sequence = sequence;\r
+        this.start = start;\r
+        this.end = end;\r
+\r
+        setDisplayId();\r
+    }\r
+\r
+    public Sequence(String name, String sequence) {\r
+        this(name, sequence, 1, sequence.length());\r
+    }\r
+\r
+    public Sequence(SequenceI seq) {\r
+        this(seq.getName(), seq.getSequence(), seq.getStart(), seq.getEnd());\r
+    }\r
+\r
+    public void setSequenceFeatures(Vector v) {\r
+        sequenceFeatures = v;\r
+    }\r
+\r
+    public Vector getSequenceFeatures() {\r
+        return sequenceFeatures;\r
+    }\r
+\r
+    public void setPDBId(String id) {\r
+        pdbId = id;\r
+    }\r
+\r
+    public String getPDBId() {\r
+        return pdbId;\r
+    }\r
+\r
+    public String getDisplayId() {\r
+        return displayId;\r
+    }\r
+\r
+    public void setDisplayId() {\r
+        displayId = name + "/" + start + "-" + end;\r
+    }\r
+\r
+    public void setName(String name) {\r
+        this.name = name;\r
+        setDisplayId();\r
+    }\r
+\r
+    public String getName() {\r
+        return this.name;\r
+    }\r
+\r
+    public void setStart(int start) {\r
+        this.start = start;\r
+        setDisplayId();\r
+    }\r
+\r
+    public int getStart() {\r
+        return this.start;\r
+    }\r
+\r
+    public void setEnd(int end) {\r
+        this.end = end;\r
+        setDisplayId();\r
+    }\r
+\r
+    public int getEnd() {\r
+        return this.end;\r
+    }\r
+\r
+    public int getLength() {\r
+        return this.sequence.length();\r
+    }\r
+\r
+    public void setSequence(String seq) {\r
+        this.sequence = seq;\r
+    }\r
+\r
+    public String getSequence() {\r
+        return this.sequence;\r
+    }\r
+\r
+    public String getSequence(int start, int end) {\r
+        // JBPNote - left to user to pad the result here (TODO:Decide on this policy)\r
+        if (start >= sequence.length()) {\r
+            return "";\r
+        }\r
+\r
+        if (end >= sequence.length()) {\r
+            end = sequence.length();\r
+        }\r
+\r
+        return this.sequence.substring(start, end);\r
+    }\r
+\r
+    public char getCharAt(int i) {\r
+        if (i < sequence.length()) {\r
+            return sequence.charAt(i);\r
+        } else {\r
+            return ' ';\r
+        }\r
+    }\r
+\r
+    public void setDescription(String desc) {\r
+        this.description = desc;\r
+    }\r
+\r
+    public String getDescription() {\r
+        return this.description;\r
+    }\r
+\r
+    public int findIndex(int pos) {\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
+            char c = sequence.charAt(i);\r
+\r
+            if (!jalview.util.Comparison.isGap((c))) {\r
+                j++;\r
+            }\r
+\r
+            i++;\r
+        }\r
+\r
+        if ((j == end) && (j < pos)) {\r
+            return end + 1;\r
+        } else {\r
+            return i;\r
+        }\r
+    }\r
+\r
+    public int findPosition(int i) {\r
+        // Returns the sequence position for an alignment position\r
+        int j = 0;\r
+        int pos = start;\r
+\r
+        while ((j < i) && (j < sequence.length())) {\r
+            char c = sequence.charAt(j);\r
+\r
+            if (!jalview.util.Comparison.isGap((c))) {\r
+                pos++;\r
+            }\r
+\r
+            j++;\r
+        }\r
+\r
+        return pos;\r
+    }\r
+\r
+    public int[] gapMap() {\r
+        // Returns an int array giving the position of each residue in the sequence in the alignment\r
+        String seq = jalview.analysis.AlignSeq.extractGaps("-. ", sequence);\r
+        int[] map = new int[seq.length()];\r
+        int j = 0;\r
+        int p = 0;\r
+\r
+        while (j < sequence.length()) {\r
+            if (!jalview.util.Comparison.isGap(sequence.charAt(j))) {\r
+                map[p++] = j;\r
+            }\r
+\r
+            j++;\r
+        }\r
+\r
+        return map;\r
+    }\r
+\r
+    public void deleteCharAt(int i) {\r
+        if (i >= sequence.length()) {\r
+            return;\r
+        }\r
+\r
+        sequence = sequence.substring(0, i) + sequence.substring(i + 1);\r
+    }\r
+\r
+    public void deleteChars(int i, int j) {\r
+        if (i >= sequence.length()) {\r
+            return;\r
+        }\r
+\r
+        if (j >= sequence.length()) {\r
+            sequence = sequence.substring(0, i);\r
+        } else {\r
+            sequence = sequence.substring(0, i) + sequence.substring(j);\r
+        }\r
+    }\r
 \r
+    public void insertCharAt(int i, char c) {\r
+        insertCharAt(i, c, true);\r
+    }\r
+\r
+    public void insertCharAt(int i, char c, boolean chop) {\r
+        String tmp = new String(sequence);\r
+\r
+        if (i < sequence.length()) {\r
+            sequence = tmp.substring(0, i) + String.valueOf(c) +\r
+                tmp.substring(i);\r
+        } else {\r
+            // JBPNote : padding char at end of sequence. We'll not get away with this when we insert residues, I bet!\r
+            char[] ch = new char[(1 + i) - sequence.length()];\r
+\r
+            for (int j = 0, k = ch.length; j < k; j++)\r
+                ch[j] = c;\r
+\r
+            sequence = tmp + String.valueOf(ch);\r
+        }\r
+    }\r
+\r
+    public void setColor(Color c) {\r
+        this.color = c;\r
+    }\r
+\r
+    public Color getColor() {\r
+        return color;\r
+    }\r
 }\r