package jalview.datamodel; import jalview.analysis.*; import java.awt.*; import java.util.*; import MCview.*; public class Sequence implements SequenceI { protected String name; protected String sequence; protected String description; protected int start; protected int end; protected String displayId; protected Color color = Color.white; String pdbId; public Vector sequenceFeatures = new Vector(); public void setSequenceFeatures(Vector v) { sequenceFeatures = v; } public Vector getSequenceFeatures() {return sequenceFeatures; } public void setPDBId(String id) { pdbId = id; } public String getPDBId() { return pdbId; } public Sequence(String name, String sequence, int start, int end) { this.name = name; this.sequence = sequence; this.start = start; this.end = end; setDisplayId(); } public Sequence(String name,String sequence) { this(name,sequence,1,sequence.length()); } public Sequence(SequenceI seq) { this(seq.getName(),seq.getSequence(),seq.getStart(),seq.getEnd()); } public String getDisplayId() { return displayId; } public void setDisplayId() { displayId = name + "/" + start + "-" + end; } public void setName(String name) { this.name = name; setDisplayId(); } public String getName() { return this.name; } public void setStart(int start) { this.start = start; setDisplayId(); } public int getStart() { return this.start; } public void setEnd(int end) { this.end = end; setDisplayId(); } public int getEnd() { return this.end; } public int getLength() { return this.sequence.length(); } public void setSequence(String seq) { this.sequence = seq; } public String getSequence() { return this.sequence; } public String getSequence(int start,int end) { if(end>sequence.length()) end = sequence.length(); return this.sequence.substring(start,end); } public char getCharAt(int i) { if (i < sequence.length()) { return sequence.charAt(i); } else { return ' '; } } public void setDescription(String desc) { this.description = desc; } public String getDescription() { return this.description; } public int findIndex(int pos) { // returns the alignment position for a residue int j = start; int i = 0; while (i< sequence.length() && j <= end && j <= pos) { char c = sequence.charAt(i); if (!jalview.util.Comparison.isGap((c))) j++; i++; } if (j == end && j < pos) return end+1; else return i; } public int findPosition(int i) { // Returns the sequence position for an alignment position int j = 0; int pos = start; while (j < i && j