package jalview.datamodel; import java.awt.*; public class Sequence implements SequenceI { protected String name; protected String sequence; protected int start; protected int end; protected String description; protected int charHeight; protected String displayId; protected Color color = Color.black; 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) { 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) { String s = sequence.substring(i,i+1); if (!(s.equals(".") || s.equals("-") || s.equals(" "))) { 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) { String s = sequence.substring(j,j+1); if (!(s.equals(".") || s.equals("-") || s.equals(" "))) { pos++; } j++; } return pos; } public void deleteCharAt(int i) { StringBuffer sbuffer = new StringBuffer(sequence); sbuffer.deleteCharAt(i); sequence = sbuffer.toString(); } public void insertCharAt(int i, char c) { insertCharAt(i,c,true); } public void insertCharAt(int i,char c,boolean chop) { String tmp = new String(sequence); if (i < sequence.length()) { sequence = tmp.substring(0,i) + String.valueOf(c) + tmp.substring(i); } else { sequence = tmp + String.valueOf(c); } } public void setColor(Color c) { this.color = c; } public Color getColor() { return color; } }