\r
protected Vector sequences;\r
protected Vector groups = new Vector();\r
- public Hashtable[] cons;\r
- protected char gapCharacter = '.';\r
+ protected ArrayList superGroup = new ArrayList();\r
+ protected char gapCharacter = '-';\r
\r
/** Make an alignment from an array of Sequences.\r
*\r
for (int i=0; i < seqs.length; i++)\r
sequences.addElement(seqs[i]);\r
\r
- SequenceGroup all = new SequenceGroup();\r
- all.setName("Group 1");\r
- groups.addElement(all);\r
-\r
- int i = 0;\r
-\r
- while (i < seqs.length) {\r
- addToGroup(all,seqs[i]);\r
- i++;\r
- }\r
-\r
getWidth();\r
}\r
\r
*/\r
public void addSequence(SequenceI snew) {\r
sequences.addElement(snew);\r
-\r
- ((SequenceGroup)groups.lastElement()).addSequence(snew);\r
}\r
\r
public void addSequence(SequenceI[] seq) {\r
if (current.getLength() > i)\r
{\r
/* MC Should move this to a method somewhere */\r
- if (current.getCharAt(i)!='-' && current.getCharAt(i)!='.' && current.getCharAt(i)!=' ')\r
+ if ( !jalview.util.Comparison.isGap(current.getCharAt(i)))\r
delete = false;\r
\r
}\r
public Vector removeRedundancy(float threshold, Vector sel) {\r
Vector del = new Vector();\r
\r
- for (int i=1; i < sel.size(); i++) {\r
- for (int j = 0; j < i; j++) {\r
+ for (int i = 1; i < sel.size(); i++)\r
+ {\r
+ for (int j = 0; j < i; j++)\r
+ {\r
// Only do the comparison if either have not been deleted\r
- if (!del.contains((SequenceI)sel.elementAt(i)) ||\r
- !del.contains((SequenceI)sel.elementAt(j))) {\r
+ if (!del.contains( (SequenceI) sel.elementAt(i)) ||\r
+ !del.contains( (SequenceI) sel.elementAt(j)))\r
+ {\r
\r
- float pid = Comparison.compare((SequenceI)sel.elementAt(j),\r
- (SequenceI)sel.elementAt(i));\r
+ float pid = Comparison.compare( (SequenceI) sel.elementAt(j),\r
+ (SequenceI) sel.elementAt(i));\r
\r
- if (pid >= threshold) {\r
+ if (pid >= threshold)\r
+ {\r
// Delete the shortest one\r
- if (((SequenceI)sel.elementAt(j)).getSequence().length() >\r
- ((SequenceI)sel.elementAt(i)).getSequence().length()) {\r
+ if ( ( (SequenceI) sel.elementAt(j)).getSequence().length() >\r
+ ( (SequenceI) sel.elementAt(i)).getSequence().length())\r
del.addElement(sel.elementAt(i));\r
- System.out.println("Deleting sequence " + ((SequenceI)sel.elementAt(i)).getName());\r
- } else {\r
+ else\r
del.addElement(sel.elementAt(i));\r
- System.out.println("Deleting sequence " + ((SequenceI)sel.elementAt(i)).getName());\r
- }\r
}\r
}\r
}\r
}\r
\r
// Now delete the sequences\r
- for (int i=0; i < del.size(); i++) {\r
- System.out.println("Deleting sequence " + ((SequenceI)del.elementAt(i)).getName());\r
+ for (int i=0; i < del.size(); i++)\r
deleteSequence((SequenceI)del.elementAt(i));\r
- }\r
\r
return del;\r
}\r
\r
}\r
return null;\r
+ }\r
+\r
+ public SequenceGroup [] findAllGroups(SequenceI s)\r
+ {\r
+\r
+ ArrayList temp = new ArrayList();\r
+\r
+ for (int i = 0; i < this.groups.size();i++)\r
+ {\r
+ SequenceGroup sg = (SequenceGroup)groups.elementAt(i);\r
+\r
+ if (sg.sequences.contains(s))\r
+ temp.add(sg);\r
+ }\r
+\r
+ SequenceGroup [] ret = new SequenceGroup[temp.size()];\r
+ temp.toArray( ret );\r
+\r
+ return ret;\r
\r
}\r
/** */\r
}\r
}\r
\r
+ public void addSuperGroup(SuperGroup sg)\r
+ {\r
+ superGroup.add(sg);\r
+ }\r
+\r
+ public void removeSuperGroup(SuperGroup sg)\r
+ {\r
+ superGroup.remove(sg);\r
+ }\r
+\r
+ public SuperGroup getSuperGroup(SequenceGroup sg)\r
+ {\r
+ for (int i = 0; i < this.superGroup.size(); i++)\r
+ {\r
+ SuperGroup temp = (SuperGroup) superGroup.get(i);\r
+ if (temp.sequenceGroups.contains(sg))\r
+ return temp;\r
+ }\r
+ return null;\r
+ }\r
+\r
/** */\r
public void addGroup(SequenceGroup sg) {\r
- groups.addElement(sg);\r
+ if(!groups.contains(sg))\r
+ groups.addElement(sg);\r
}\r
\r
- /** */\r
- public SequenceGroup addGroup() {\r
- SequenceGroup sg = new SequenceGroup();\r
- groups.addElement(sg);\r
- return sg;\r
+ public void deleteAllGroups()\r
+ {\r
+ groups.clear();\r
+ superGroup.clear();\r
+ int i=0;\r
+ while (i < sequences.size()) {\r
+ SequenceI s = getSequenceAt(i);\r
+ s.setColor(java.awt.Color.white);\r
+ i++;\r
+ }\r
+\r
+\r
}\r
\r
/** */\r
}\r
\r
/** */\r
- public int findIndex(SequenceI s) {\r
+ public int findIndex(SequenceI s)\r
+ {\r
int i=0;\r
- while (i < sequences.size()) {\r
- if (s == getSequenceAt(i)) {\r
+ while (i < sequences.size())\r
+ {\r
+ if (s == getSequenceAt(i))\r
return i;\r
- }\r
+\r
i++;\r
}\r
return -1;\r
{\r
return AAFrequency.calculate(sequences, 0, getWidth());\r
}\r
+\r
+ public boolean isAligned()\r
+ {\r
+ int width = getWidth();\r
+ for (int i = 0; i < sequences.size(); i++)\r
+ if (getSequenceAt(i).getLength() != width)\r
+ return false;\r
+\r
+ return true;\r
+\r
+ }\r
}\r
\r
\r