X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fdatamodel%2FSequence.java;h=0e72690aa69e439df38b52b505a04662a500b007;hb=7000ea3223f2f6a390f56341ba26850d2a137ae0;hp=7d6ba27d9c96e9dab2422611eb0986ee367937b3;hpb=167f4ca4f4886f507f3f7cbb3f2a4d3821862de8;p=jalview.git diff --git a/src/jalview/datamodel/Sequence.java b/src/jalview/datamodel/Sequence.java index 7d6ba27..0e72690 100755 --- a/src/jalview/datamodel/Sequence.java +++ b/src/jalview/datamodel/Sequence.java @@ -24,7 +24,8 @@ import java.util.*; import jalview.analysis.*; /** - * DOCUMENT ME! + * + * Implements the SequenceI interface for a char[] based sequence object. * * @author $author$ * @version $Revision$ @@ -46,17 +47,17 @@ public class Sequence * positions are tied to the residues of this sequence */ Vector annotation; - /** DOCUMENT ME!! */ + /** array of seuqence features - may not be null for a valid sequence object */ public SequenceFeature[] sequenceFeatures; /** * Creates a new Sequence object. * - * @param name DOCUMENT ME! - * @param sequence DOCUMENT ME! - * @param start DOCUMENT ME! - * @param end DOCUMENT ME! + * @param name display name string + * @param sequence string to form a possibly gapped sequence out of + * @param start first position of non-gap residue in the sequence + * @param end last position of ungapped residues (nearly always only used for display purposes) */ public Sequence(String name, String sequence, int start, int end) { @@ -615,14 +616,12 @@ public class Sequence return map; } - /** - * DOCUMENT ME! - * - * @param i DOCUMENT ME! - * @param j DOCUMENT ME! + /* (non-Javadoc) + * @see jalview.datamodel.SequenceI#deleteChars(int, int) */ public void deleteChars(int i, int j) { + int newstart=start,newend=end; if (i >= sequence.length) { return; @@ -641,29 +640,50 @@ public class Sequence System.arraycopy(sequence,0,tmp,0,i); System.arraycopy(sequence,j,tmp,i,sequence.length-j); } - - if (this.datasetSequence != null) + boolean createNewDs=false; + for (int s = i; s < j; s++) { - for (int s = i; s < j; s++) + if (jalview.schemes.ResidueProperties.aaIndex[sequence[s]] != 23) { - if (jalview.schemes.ResidueProperties.aaIndex[sequence[s]] != 23) + if (createNewDs) { - - Sequence ds = new Sequence(name, - AlignSeq.extractGaps( - jalview.util.Comparison.GapChars, - this.getSequenceAsString() - ), - start, - end); - ds.setDescription(description); + newend--; + } else { + int sindex = findIndex(start)-1; + if (sindex==s) + { + // delete characters including start of sequence + newstart = findPosition(j); + break; // don't need to search for any more residue characters. + } else { + // delete characters after start. + int eindex = findIndex(end)-1; + if (eindex