X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSequence.java;h=ab35c386090b7475694a46fcaaa0567f787b9c91;hb=60d2bc892983abad01d082cbff73466f093879f2;hp=d35cbe851af4a23ed6033ae791fb8f87c9968164;hpb=8116c10ff719ac0b542b33dbabfc9051634bf5ea;p=jalview.git diff --git a/src/jalview/datamodel/Sequence.java b/src/jalview/datamodel/Sequence.java index d35cbe8..ab35c38 100755 --- a/src/jalview/datamodel/Sequence.java +++ b/src/jalview/datamodel/Sequence.java @@ -2,69 +2,40 @@ package jalview.datamodel; import jalview.analysis.*; import java.awt.*; -import java.util.StringTokenizer; +import java.util.*; import MCview.*; 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.white; - PDBfile pdb; - public int maxchain = -1; - - public int pdbstart; - public int pdbend; - public int seqstart; - public int seqend; - public void setPDBfile(PDBfile pdb) + 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) { - this.pdb = pdb; - int max = -10; - maxchain = -1; - - for (int i=0; i < pdb.chains.size(); i++) { - - System.out.println("PDB sequence = " + ((PDBChain)pdb.chains.elementAt(i)).sequence); - // Now lets compare the sequences to get - // the start and end points. - - - StringTokenizer str = new StringTokenizer(sequence, "."); - String newString = ""; - - while (str.hasMoreTokens()) { - newString += str.nextToken(); - } - // Align the sequence to the pdb - AlignSeq as = new AlignSeq(this,((PDBChain)pdb.chains.elementAt(i)).sequence,"pep"); - as.calcScoreMatrix(); - as.traceAlignment(); - as.printAlignment(); - - System.out.println("Score = " + as.maxscore); - if (as.maxscore > max) { - System.out.println("New max score"); - max = as.maxscore; - maxchain = i; - - pdbstart = as.seq2start; - pdbend = as.seq2end; - seqstart = as.seq1start - 1 ; - seqend = as.seq1end -1; - } - - System.out.println("PDB start/end " + pdbstart + " " + pdbend); - System.out.println("SEQ start/end " + seqstart + " " + seqend); - } + 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) { @@ -120,6 +91,13 @@ public class Sequence implements SequenceI return this.sequence; } public String getSequence(int start,int end) { + // JBPNote - left to user to pad the result here (TODO:Decide on this policy) + if(start>=sequence.length()) + return ""; + + if(end>=sequence.length()) + end = sequence.length(); + return this.sequence.substring(start,end); } @@ -163,10 +141,9 @@ public class Sequence implements SequenceI int j = 0; int pos = start; - while (j < i) + while (j < i && j=sequence.length()) + return; + sequence = sequence.substring(0,i) + sequence.substring(i+1); + } + + public void deleteChars(int i, int j) + { + if (i>=sequence.length()) + return; + if (j>=sequence.length()) + sequence = sequence.substring(0,i); + else + sequence = sequence.substring(0,i) + sequence.substring(j); } public void insertCharAt(int i, char c) @@ -193,7 +196,11 @@ public class Sequence implements SequenceI if (i < sequence.length()) { sequence = tmp.substring(0,i) + String.valueOf(c) + tmp.substring(i); } else { - sequence = tmp + String.valueOf(c); + // JBPNote : padding char at end of sequence. We'll not get away with this when we insert residues, I bet! + char[] ch = new char[1+i-sequence.length()]; + for (int j=0, k=ch.length; j