X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fdatamodel%2FAlignment.java;h=08754509f72d7a1da743bc20db4f398e6689d48d;hb=d4ede6b61d4abab78200f334d8df07879dfe6741;hp=e329cc8f947e9318213d4c68c9d79a654ee261bf;hpb=873bf9da6abdeb24cd8624330b7b9977feb79bef;p=jalview.git diff --git a/src/jalview/datamodel/Alignment.java b/src/jalview/datamodel/Alignment.java index e329cc8..0875450 100755 --- a/src/jalview/datamodel/Alignment.java +++ b/src/jalview/datamodel/Alignment.java @@ -11,8 +11,8 @@ public class Alignment implements AlignmentI protected Vector sequences; protected Vector groups = new Vector(); - public Hashtable[] cons; - protected char gapCharacter = '-'; + protected ArrayList superGroup = new ArrayList(); + protected char gapCharacter = '-'; /** Make an alignment from an array of Sequences. * @@ -113,7 +113,7 @@ public class Alignment implements AlignmentI if (current.getLength() > i) { /* MC Should move this to a method somewhere */ - if (current.getCharAt(i)!='-' && current.getCharAt(i)!='.' && current.getCharAt(i)!=' ') + if ( !jalview.util.Comparison.isGap(current.getCharAt(i))) delete = false; } @@ -218,35 +218,34 @@ public class Alignment implements AlignmentI public Vector removeRedundancy(float threshold, Vector sel) { Vector del = new Vector(); - for (int i=1; i < sel.size(); i++) { - for (int j = 0; j < i; j++) { + for (int i = 1; i < sel.size(); i++) + { + for (int j = 0; j < i; j++) + { // Only do the comparison if either have not been deleted - if (!del.contains((SequenceI)sel.elementAt(i)) || - !del.contains((SequenceI)sel.elementAt(j))) { + if (!del.contains( (SequenceI) sel.elementAt(i)) || + !del.contains( (SequenceI) sel.elementAt(j))) + { - float pid = Comparison.compare((SequenceI)sel.elementAt(j), - (SequenceI)sel.elementAt(i)); + float pid = Comparison.compare( (SequenceI) sel.elementAt(j), + (SequenceI) sel.elementAt(i)); - if (pid >= threshold) { + if (pid >= threshold) + { // Delete the shortest one - if (((SequenceI)sel.elementAt(j)).getSequence().length() > - ((SequenceI)sel.elementAt(i)).getSequence().length()) { + if ( ( (SequenceI) sel.elementAt(j)).getSequence().length() > + ( (SequenceI) sel.elementAt(i)).getSequence().length()) del.addElement(sel.elementAt(i)); - System.out.println("Deleting sequence " + ((SequenceI)sel.elementAt(i)).getName()); - } else { + else del.addElement(sel.elementAt(i)); - System.out.println("Deleting sequence " + ((SequenceI)sel.elementAt(i)).getName()); - } } } } } // Now delete the sequences - for (int i=0; i < del.size(); i++) { - System.out.println("Deleting sequence " + ((SequenceI)del.elementAt(i)).getName()); + for (int i=0; i < del.size(); i++) deleteSequence((SequenceI)del.elementAt(i)); - } return del; } @@ -320,6 +319,25 @@ public class Alignment implements AlignmentI } return null; + } + + public SequenceGroup [] findAllGroups(SequenceI s) + { + + ArrayList temp = new ArrayList(); + + for (int i = 0; i < this.groups.size();i++) + { + SequenceGroup sg = (SequenceGroup)groups.elementAt(i); + + if (sg.sequences.contains(s)) + temp.add(sg); + } + + SequenceGroup [] ret = new SequenceGroup[temp.size()]; + temp.toArray( ret ); + + return ret; } /** */ @@ -340,17 +358,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++; + } + + } /** */ @@ -387,12 +433,14 @@ public class Alignment implements AlignmentI } /** */ - public int findIndex(SequenceI s) { + public int findIndex(SequenceI s) + { int i=0; - while (i < sequences.size()) { - if (s == getSequenceAt(i)) { + while (i < sequences.size()) + { + if (s == getSequenceAt(i)) return i; - } + i++; } return -1;