- private static SequenceI [] vectorToArray(Vector tmp) {\r
- SequenceI[] seqs = new SequenceI[tmp.size()];\r
-\r
- for (int i=0; i < tmp.size(); i++) {\r
- seqs[i] = (SequenceI)tmp.elementAt(i);\r
- }\r
- return seqs;\r
- }\r
-\r
- private static SequenceI [] vectorSubsetToArray(Vector tmp, Vector mask) {\r
- Vector seqs = new Vector();\r
- int i,m, p;\r
- boolean[] tmask = new boolean[m=mask.size()];\r
- for (i=0; i<m; i++)\r
- tmask[i] = true;\r
- for (i=0; i < tmp.size(); i++) {\r
- Object sq;\r
- if (mask.contains(sq=tmp.elementAt(i))) {\r
- tmask[mask.indexOf(sq)] = false;\r
- seqs.addElement(sq);\r
- m--;\r
- }\r
- }\r
- for (i=0; i<tmask.length; i++)\r
- if (tmask[i])\r
- seqs.addElement(mask.elementAt(i));\r
- return vectorToArray(seqs);\r
- }\r
-\r
- static AlignmentOrder lastOrder = null;\r
- static boolean sortOrderAscending = true;\r
-\r
- public static void sortBy(AlignmentI align, AlignmentOrder order) {\r
- // Get an ordered vector of sequences which may also be present in align\r
- Vector tmp = order.getOrder();\r
-// if (tmp.size()<align.getHeight())\r
-// addStrays(align, tmp);\r
- if (lastOrder==order)\r
- sortOrderAscending=!sortOrderAscending;\r
- else\r
- sortOrderAscending=true;\r
-\r
- if (sortOrderAscending)\r
- setOrder(align, tmp);\r
- else\r
- setReverseOrder(align, vectorSubsetToArray(tmp, align.getSequences()));\r
- }\r
- static NJTree lastTree = null;\r
- static boolean sortTreeAscending = true;\r
-\r
- public static Vector getOrderByTree(AlignmentI align, NJTree tree) {\r
- int nSeq = align.getHeight();\r
-\r
- Vector tmp = new Vector();\r
-\r
- tmp = _sortByTree(tree.getTopNode(), tmp, align.getSequences());\r
-\r
- if (tmp.size() != nSeq)\r