X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignment.java;h=10e2766580e9b93626d49e15f965b50b379d717d;hb=1a6fbadeec90e7524075ed6e37bbe4b7bba97a94;hp=dd02bc12626f3b396b3109ee24a6a0aa92747c9d;hpb=2cf0e6316cf8b4e545bad1648966b02fad49017f;p=jalview.git diff --git a/src/jalview/datamodel/Alignment.java b/src/jalview/datamodel/Alignment.java index dd02bc1..10e2766 100755 --- a/src/jalview/datamodel/Alignment.java +++ b/src/jalview/datamodel/Alignment.java @@ -11,7 +11,12 @@ public class Alignment implements AlignmentI protected Vector sequences; protected Vector groups = new Vector(); - protected char gapCharacter = '-'; + protected ArrayList superGroup = new ArrayList(); + protected char gapCharacter = '-'; + public AlignmentAnnotation [] annotations; + public Conservation conservation; + + public boolean featuresAdded = false; /** Make an alignment from an array of Sequences. * @@ -39,14 +44,11 @@ public class Alignment implements AlignmentI } /** Adds a sequence to the alignment. Recalculates maxLength and size. - * Should put the new sequence in a sequence group!!! * * @param snew */ public void addSequence(SequenceI snew) { sequences.addElement(snew); - - ((SequenceGroup)groups.lastElement()).addSequence(snew); } public void addSequence(SequenceI[] seq) { @@ -56,8 +58,7 @@ public class Alignment implements AlignmentI } /** Adds a sequence to the alignment. Recalculates maxLength and size. - * Should put the new sequence in a sequence group!!! - * + * * @param snew */ public void setSequenceAt(int i,SequenceI snew) { @@ -65,8 +66,6 @@ public class Alignment implements AlignmentI deleteSequence(oldseq); sequences.setElementAt(snew,i); - - ((SequenceGroup)groups.lastElement()).addSequence(snew); } public Vector getGroups() { @@ -328,6 +327,7 @@ public class Alignment implements AlignmentI for (int i = 0; i < this.groups.size();i++) { SequenceGroup sg = (SequenceGroup)groups.elementAt(i); + if (sg.sequences.contains(s)) temp.add(sg); } @@ -356,17 +356,45 @@ public class Alignment implements AlignmentI } } + public void addSuperGroup(SuperGroup sg) + { + superGroup.add(sg); + } + + public void removeSuperGroup(SuperGroup sg) + { + superGroup.remove(sg); + } + + public SuperGroup getSuperGroup(SequenceGroup sg) + { + for (int i = 0; i < this.superGroup.size(); i++) + { + SuperGroup temp = (SuperGroup) superGroup.get(i); + if (temp.sequenceGroups.contains(sg)) + return temp; + } + return null; + } + /** */ public void addGroup(SequenceGroup sg) { if(!groups.contains(sg)) groups.addElement(sg); } - /** */ - public SequenceGroup addGroup() { - SequenceGroup sg = new SequenceGroup(); - groups.addElement(sg); - return sg; + public void deleteAllGroups() + { + groups.clear(); + superGroup.clear(); + int i=0; + while (i < sequences.size()) { + SequenceI s = getSequenceAt(i); + s.setColor(java.awt.Color.white); + i++; + } + + } /** */ @@ -470,6 +498,61 @@ public class Alignment implements AlignmentI { return AAFrequency.calculate(sequences, 0, getWidth()); } + + public boolean isAligned() + { + int width = getWidth(); + for (int i = 0; i < sequences.size(); i++) + if (getSequenceAt(i).getLength() != width) + return false; + + return true; + } + + public void deleteAnnotation(AlignmentAnnotation aa) + { + int aSize = 1; + if(annotations!=null) + aSize = annotations.length; + + AlignmentAnnotation [] temp = new AlignmentAnnotation [aSize-1]; + + int tIndex = 0; + for (int i = 0; i < aSize; i++) + { + if(annotations[i]==aa) + continue; + + + temp[tIndex] = annotations[i]; + tIndex++; + } + + annotations = temp; + + } + + public void addAnnotation(AlignmentAnnotation aa) + { + int aSize = 1; + if(annotations!=null) + aSize = annotations.length+1; + + AlignmentAnnotation [] temp = new AlignmentAnnotation [aSize]; + int i=0; + if (aSize > 1) + for (i = 0; i < aSize-1; i++) + temp[i] = annotations[i]; + + temp[i] = aa; + + annotations = temp; + } + public AlignmentAnnotation[] getAlignmentAnnotation() + { + return annotations; + } + }