- 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
- {\r
- // TODO: JBPNote - decide if this is always an error\r
- // (eg. not when a tree is associated to another alignment which has more\r
- // sequences)\r
-\r
- if (tmp.size() < nSeq)\r
- {\r
- addStrays(align, tmp);\r
- }\r
- if (tmp.size() != nSeq)\r
- System.err.println("ERROR: tmp.size()="+tmp.size()+" != nseq="+nSeq+" in getOrderByTree");\r