pdbfile details not essential to sequence
[jalview.git] / src / jalview / datamodel / Sequence.java
1 package jalview.datamodel;\r
2 \r
3 import jalview.analysis.*;\r
4 import java.awt.*;\r
5 import java.util.*;\r
6 import MCview.*;\r
7 \r
8 \r
9 public class Sequence implements SequenceI\r
10 {\r
11   protected String name;\r
12   protected String sequence;\r
13   protected String description;\r
14   protected int start;\r
15   protected int end;\r
16   protected String displayId;\r
17   protected Color color = Color.white;\r
18   String pdbId;\r
19 \r
20    public Vector sequenceFeatures = new Vector();\r
21    public void setSequenceFeatures(Vector v)\r
22    {\r
23      sequenceFeatures = v;\r
24    }\r
25 \r
26    public Vector getSequenceFeatures()\r
27    {return sequenceFeatures; }\r
28 \r
29    public void setPDBId(String id)\r
30    {\r
31      pdbId = id;\r
32    }\r
33    public String getPDBId()\r
34    {\r
35      return pdbId;\r
36    }\r
37 \r
38 \r
39   public Sequence(String name, String sequence, int start, int end)\r
40   {\r
41 \r
42     this.name     = name;\r
43     this.sequence = sequence;\r
44     this.start    = start;\r
45     this.end      = end;\r
46 \r
47     setDisplayId();\r
48 \r
49   }\r
50 \r
51   public Sequence(String name,String sequence) {\r
52     this(name,sequence,1,sequence.length());\r
53   }\r
54   public Sequence(SequenceI seq) {\r
55     this(seq.getName(),seq.getSequence(),seq.getStart(),seq.getEnd());\r
56   }\r
57   public String getDisplayId() {\r
58     return displayId;\r
59   }\r
60   public void setDisplayId() {\r
61     displayId = name + "/" + start + "-" + end;\r
62   }\r
63   public void setName(String name) {\r
64     this.name = name;\r
65     setDisplayId();\r
66   }\r
67   public String getName() {\r
68     return this.name;\r
69   }\r
70   public void setStart(int start) {\r
71     this.start = start;\r
72     setDisplayId();\r
73   }\r
74   public int getStart() {\r
75     return this.start;\r
76   }\r
77   public void setEnd(int end) {\r
78     this.end = end;\r
79     setDisplayId();\r
80   }\r
81   public int getEnd() {\r
82     return this.end;\r
83   }\r
84   public int getLength() {\r
85     return this.sequence.length();\r
86   }\r
87   public void setSequence(String seq) {\r
88     this.sequence = seq;\r
89   }\r
90   public String getSequence() {\r
91     return this.sequence;\r
92   }\r
93   public String getSequence(int start,int end) {\r
94     if(end>sequence.length())\r
95       end = sequence.length();\r
96     return this.sequence.substring(start,end);\r
97   }\r
98 \r
99   public char getCharAt(int i) {\r
100     if (i < sequence.length()) {\r
101       return sequence.charAt(i);\r
102     } else {\r
103       return ' ';\r
104     }\r
105   }\r
106   public void setDescription(String desc) {\r
107     this.description = desc;\r
108   }\r
109   public String getDescription() {\r
110     return this.description;\r
111   }\r
112 \r
113   public int findIndex(int pos) {\r
114     // returns the alignment position for a residue\r
115     int j = start;\r
116     int i = 0;\r
117 \r
118     while (i< sequence.length() && j <= end && j <= pos) {\r
119 \r
120       char c = sequence.charAt(i);\r
121 \r
122       if (!jalview.util.Comparison.isGap((c)))\r
123         j++;\r
124 \r
125       i++;\r
126     }\r
127     if (j == end && j < pos)\r
128       return end+1;\r
129     else\r
130       return i;\r
131 \r
132   }\r
133 \r
134   public int findPosition(int i) {\r
135     // Returns the sequence position for an alignment position\r
136     int j   = 0;\r
137     int pos = start;\r
138 \r
139     while (j < i && j<sequence.length())\r
140     {\r
141       char c = sequence.charAt(j);\r
142       if (!jalview.util.Comparison.isGap((c)))\r
143         pos++;\r
144 \r
145       j++;\r
146     }\r
147     return pos;\r
148   }\r
149 \r
150   public int[] gapMap() {\r
151     // Returns an int array giving the position of each residue in the sequence in the alignment\r
152     String seq = jalview.analysis.AlignSeq.extractGaps("-. ",sequence);\r
153     int[] map = new int[seq.length()];\r
154     int j=0;\r
155     int p=0;\r
156     while (j<sequence.length()) {\r
157       if (!jalview.util.Comparison.isGap(sequence.charAt(j))) {\r
158         map[p++]=j;\r
159       }\r
160       j++;\r
161     }\r
162     return map;\r
163   }\r
164 \r
165   public void deleteCharAt(int i)\r
166   {\r
167     sequence = sequence.substring(0,i) + sequence.substring(i+1);\r
168   }\r
169 \r
170   public void deleteChars(int i, int j)\r
171   {\r
172     sequence = sequence.substring(0,i) + sequence.substring(j);\r
173   }\r
174 \r
175   public void insertCharAt(int i, char c)\r
176   {\r
177     insertCharAt(i,c,true);\r
178   }\r
179 \r
180   public void insertCharAt(int i,char c,boolean chop) {\r
181 \r
182     String tmp = new String(sequence);\r
183 \r
184     if (i < sequence.length()) {\r
185       sequence = tmp.substring(0,i) + String.valueOf(c) + tmp.substring(i);\r
186     } else {\r
187       sequence = tmp + String.valueOf(c);\r
188     }\r
189 \r
190   }\r
191 \r
192   public void        setColor(Color c) {\r
193     this.color = c;\r
194   }\r
195 \r
196   public Color       getColor() {\r
197     return color;\r
198   }\r
199 \r
200 }\r