1 package jalview.datamodel;
\r
3 import jalview.analysis.*;
\r
9 public class Sequence implements SequenceI
\r
11 protected String name;
\r
12 protected String sequence;
\r
13 protected String description;
\r
14 protected int start;
\r
16 protected String displayId;
\r
17 protected Color color = Color.white;
\r
21 public int maxchain = -1;
\r
22 public int pdbstart;
\r
24 public int seqstart;
\r
27 public Vector sequenceFeatures = new Vector();
\r
28 public void setSequenceFeatures(Vector v)
\r
30 sequenceFeatures = v;
\r
33 public Vector getSequenceFeatures()
\r
34 {return sequenceFeatures; }
\r
36 public void setPDBId(String id)
\r
40 public String getPDBId()
\r
45 public void setPDBfile(PDBfile pdb)
\r
51 for (int i=0; i < pdb.chains.size(); i++) {
\r
53 System.out.println("PDB sequence = " + ((PDBChain)pdb.chains.elementAt(i)).sequence);
\r
54 // Now lets compare the sequences to get
\r
55 // the start and end points.
\r
58 StringTokenizer str = new StringTokenizer(sequence, ".");
\r
59 String newString = "";
\r
61 while (str.hasMoreTokens()) {
\r
62 newString += str.nextToken();
\r
64 // Align the sequence to the pdb
\r
65 AlignSeq as = new AlignSeq(this,((PDBChain)pdb.chains.elementAt(i)).sequence,"pep");
\r
66 as.calcScoreMatrix();
\r
67 as.traceAlignment();
\r
68 as.printAlignment();
\r
70 System.out.println("Score = " + as.maxscore);
\r
71 if (as.maxscore > max) {
\r
72 System.out.println("New max score");
\r
76 pdbstart = as.seq2start;
\r
77 pdbend = as.seq2end;
\r
78 seqstart = as.seq1start - 1 ;
\r
79 seqend = as.seq1end -1;
\r
82 System.out.println("PDB start/end " + pdbstart + " " + pdbend);
\r
83 System.out.println("SEQ start/end " + seqstart + " " + seqend);
\r
87 public Sequence(String name, String sequence, int start, int end)
\r
91 this.sequence = sequence;
\r
99 public Sequence(String name,String sequence) {
\r
100 this(name,sequence,1,sequence.length());
\r
102 public Sequence(SequenceI seq) {
\r
103 this(seq.getName(),seq.getSequence(),seq.getStart(),seq.getEnd());
\r
105 public String getDisplayId() {
\r
108 public void setDisplayId() {
\r
109 displayId = name + "/" + start + "-" + end;
\r
111 public void setName(String name) {
\r
115 public String getName() {
\r
118 public void setStart(int start) {
\r
119 this.start = start;
\r
122 public int getStart() {
\r
125 public void setEnd(int end) {
\r
129 public int getEnd() {
\r
132 public int getLength() {
\r
133 return this.sequence.length();
\r
135 public void setSequence(String seq) {
\r
136 this.sequence = seq;
\r
138 public String getSequence() {
\r
139 return this.sequence;
\r
141 public String getSequence(int start,int end) {
\r
142 if(end>sequence.length())
\r
143 end = sequence.length();
\r
144 return this.sequence.substring(start,end);
\r
147 public char getCharAt(int i) {
\r
148 if (i < sequence.length()) {
\r
149 return sequence.charAt(i);
\r
154 public void setDescription(String desc) {
\r
155 this.description = desc;
\r
157 public String getDescription() {
\r
158 return this.description;
\r
161 public int findIndex(int pos) {
\r
162 // returns the alignment position for a residue
\r
166 while (i< sequence.length() && j <= end && j <= pos) {
\r
168 char c = sequence.charAt(i);
\r
170 if (!jalview.util.Comparison.isGap((c)))
\r
175 if (j == end && j < pos)
\r
182 public int findPosition(int i) {
\r
183 // Returns the sequence position for an alignment position
\r
187 while (j < i && j<sequence.length())
\r
189 char c = sequence.charAt(j);
\r
190 if (!jalview.util.Comparison.isGap((c)))
\r
198 public int[] gapMap() {
\r
199 // Returns an int array giving the position of each residue in the sequence in the alignment
\r
200 String seq = jalview.analysis.AlignSeq.extractGaps("-. ",sequence);
\r
201 int[] map = new int[seq.length()];
\r
204 while (j<sequence.length()) {
\r
205 if (!jalview.util.Comparison.isGap(sequence.charAt(j))) {
\r
213 public void deleteCharAt(int i)
\r
215 StringBuffer sbuffer = new StringBuffer(sequence);
\r
216 sbuffer.deleteCharAt(i);
\r
217 sequence = sbuffer.toString();
\r
220 public void deleteChars(int i, int j)
\r
222 StringBuffer sbuffer = new StringBuffer(sequence);
\r
223 sbuffer.delete(i,j);
\r
224 sequence = sbuffer.toString();
\r
227 public void insertCharAt(int i, char c)
\r
229 insertCharAt(i,c,true);
\r
232 public void insertCharAt(int i,char c,boolean chop) {
\r
234 String tmp = new String(sequence);
\r
236 if (i < sequence.length()) {
\r
237 sequence = tmp.substring(0,i) + String.valueOf(c) + tmp.substring(i);
\r
239 sequence = tmp + String.valueOf(c);
\r
244 public void setColor(Color c) {
\r
248 public Color getColor() {
\r