+ setReverseOrder(align,
+ vectorSubsetToArray(tmp, align.getSequences()));
+ }
+ }
+
+ /**
+ * Sorts the alignment by a given tree from Archaeopteryx
+ *
+ * @param align
+ * alignment to order
+ * @param tree
+ * tree which has
+ */
+ public static void sortByTree(AlignmentI align,
+ Map<PhylogenyNode, SequenceI> aptxNodesWithSeqs,
+ Phylogeny aptxTree) throws IllegalArgumentException
+ {
+ List<SequenceI> tmp = getOrderByTree(aptxTree, aptxNodesWithSeqs);
+
+ if (!tmp.isEmpty())
+ {
+ if (lastAptxTree != aptxTree)
+ {
+ sortTreeAscending = true;
+ lastAptxTree = aptxTree;
+ }
+ else
+ {
+ sortTreeAscending = !sortTreeAscending;
+ }
+
+ if (sortTreeAscending)
+ {
+ setOrder(align, tmp);
+ }
+ else
+ {
+ setReverseOrder(align,
+ vectorSubsetToArray(tmp, align.getSequences()));
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException();