Jalview Imported Sources
[jalview.git] / src / jalview / datamodel / Sequence.java
1 package jalview.datamodel;\r
2 \r
3 \r
4 import java.awt.*;\r
5 \r
6 public class Sequence implements SequenceI {\r
7   protected String   name;\r
8   protected String   sequence;\r
9   protected int      start;\r
10   protected int      end;\r
11   protected String   description;\r
12   protected int      charHeight;\r
13   protected String   displayId;\r
14   protected Color    color = Color.black;\r
15 \r
16   public Sequence(String name, String sequence, int start, int end)\r
17   {\r
18 \r
19     this.name     = name;\r
20     this.sequence = sequence;\r
21     this.start    = start;\r
22     this.end      = end;\r
23 \r
24     setDisplayId();\r
25 \r
26   }\r
27 \r
28   public Sequence(String name,String sequence) {\r
29     this(name,sequence,1,sequence.length());\r
30   }\r
31   public Sequence(SequenceI seq) {\r
32     this(seq.getName(),seq.getSequence(),seq.getStart(),seq.getEnd());\r
33   }\r
34   public String getDisplayId() {\r
35     return displayId;\r
36   }\r
37   public void setDisplayId() {\r
38     displayId = name + "/" + start + "-" + end;\r
39   }\r
40   public void setName(String name) {\r
41     this.name = name;\r
42     setDisplayId();\r
43   }\r
44   public String getName() {\r
45     return this.name;\r
46   }\r
47   public void setStart(int start) {\r
48     this.start = start;\r
49     setDisplayId();\r
50   }\r
51   public int getStart() {\r
52     return this.start;\r
53   }\r
54   public void setEnd(int end) {\r
55     this.end = end;\r
56     setDisplayId();\r
57   }\r
58   public int getEnd() {\r
59     return this.end;\r
60   }\r
61   public int getLength() {\r
62     return this.sequence.length();\r
63   }\r
64   public void setSequence(String seq) {\r
65     this.sequence = seq;\r
66   }\r
67   public String getSequence() {\r
68     return this.sequence;\r
69   }\r
70   public String getSequence(int start,int end) {\r
71     return this.sequence.substring(start,end);\r
72   }\r
73 \r
74   public char getCharAt(int i) {\r
75     if (i < sequence.length()) {\r
76       return sequence.charAt(i);\r
77     } else {\r
78       return ' ';\r
79     }\r
80   }\r
81   public void setDescription(String desc) {\r
82     this.description = desc;\r
83   }\r
84   public String getDescription() {\r
85     return this.description;\r
86   }\r
87 \r
88   public int findIndex(int pos) {\r
89     // returns the alignment position for a residue\r
90     int j = start;\r
91     int i = 0;\r
92 \r
93     while (i< sequence.length() && j <= end && j <= pos) {\r
94 \r
95       String s = sequence.substring(i,i+1);\r
96 \r
97       if (!(s.equals(".") || s.equals("-") || s.equals(" "))) {\r
98         j++;\r
99       }\r
100       i++;\r
101     }\r
102     if (j == end && j < pos) {\r
103       return end+1;\r
104     } else {\r
105 \r
106       return i;\r
107     }\r
108   }\r
109 \r
110   public int findPosition(int i) {\r
111     // Returns the sequence position for an alignment position\r
112     int j   = 0;\r
113     int pos = start;\r
114 \r
115     while (j < i) {\r
116       String s = sequence.substring(j,j+1);\r
117 \r
118       if (!(s.equals(".") || s.equals("-") || s.equals(" "))) {\r
119         pos++;\r
120       }\r
121       j++;\r
122     }\r
123     return pos;\r
124   }\r
125   public void deleteCharAt(int i)\r
126   {\r
127     StringBuffer sbuffer = new StringBuffer(sequence);\r
128     sbuffer.deleteCharAt(i);\r
129     sequence = sbuffer.toString();\r
130   }\r
131 \r
132   public void insertCharAt(int i, char c)\r
133   {\r
134     insertCharAt(i,c,true);\r
135   }\r
136 \r
137   public void insertCharAt(int i,char c,boolean chop) {\r
138 \r
139     String tmp = new String(sequence);\r
140 \r
141     if (i < sequence.length()) {\r
142       sequence = tmp.substring(0,i) + String.valueOf(c) + tmp.substring(i);\r
143     } else {\r
144       sequence = tmp + String.valueOf(c);\r
145     }\r
146 \r
147   }\r
148 \r
149   public void        setColor(Color c) {\r
150     this.color = c;\r
151   }\r
152 \r
153   public Color       getColor() {\r
154     return color;\r
155   }\r
156 \r
157 }\r