JAL-1953 2.11.2 with Archeopteryx!
[jalview.git] / src / jalview / analysis / AlignmentSorter.java
index bb3dbcc..6005208 100755 (executable)
@@ -29,6 +29,8 @@ import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.datamodel.SequenceNode;
+import jalview.ext.treeviewer.TreeI;
+import jalview.ext.treeviewer.TreeNodeI;
 import jalview.util.QuickSort;
 
 import java.util.ArrayList;
@@ -37,10 +39,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import org.forester.phylogeny.Phylogeny;
-import org.forester.phylogeny.PhylogenyNode;
-import org.forester.phylogeny.iterators.PhylogenyNodeIterator;
-
 /**
  * Routines for manipulating the order of a multiple sequence alignment TODO:
  * this class retains some global states concerning sort-order which should be
@@ -74,7 +72,7 @@ public class AlignmentSorter
 
   static TreeModel lastTree = null;
 
-  static Phylogeny lastAptxTree = null;
+  static TreeI lastExternalTree = null;
 
   static boolean sortTreeAscending = true;
 
@@ -150,8 +148,8 @@ public class AlignmentSorter
     }
 
     // NOTE: DO NOT USE align.setSequenceAt() here - it will NOT work
-    List<SequenceI> asq;
-    synchronized (asq = align.getSequences())
+    List<SequenceI> asq = align.getSequences();
+    synchronized (asq)
     {
       for (int i = 0; i < len; i++)
       {
@@ -186,8 +184,8 @@ public class AlignmentSorter
   public static void setOrder(AlignmentI align, SequenceI[] seqs)
   {
     // NOTE: DO NOT USE align.setSequenceAt() here - it will NOT work
-    List<SequenceI> algn;
-    synchronized (algn = align.getSequences())
+    List<SequenceI> algn = align.getSequences();
+    synchronized (algn)
     {
       List<SequenceI> tmp = new ArrayList<>();
 
@@ -470,16 +468,16 @@ public class AlignmentSorter
 
 
 
-  private static List<SequenceI> getOrderByTree(Phylogeny aptxTree,
-          Map<PhylogenyNode, SequenceI> nodesWithBoundSeqs)
+  private static List<SequenceI> getOrderByTree(TreeI aptxTree,
+          Map<TreeNodeI, SequenceI> nodesWithBoundSeqs)
   {
     List<SequenceI> seqsByTreeOrder = new ArrayList<>();
     if (!aptxTree.isEmpty())
     {
-      for (final PhylogenyNodeIterator iter = aptxTree
-              .iteratorPreorder(); iter.hasNext();)
+      for (final Iterator<TreeNodeI> iter = aptxTree
+              .iterateInPreOrder(); iter.hasNext();)
       {
-        PhylogenyNode treeNode = iter.next();
+        TreeNodeI treeNode = iter.next();
         seqsByTreeOrder.add(nodesWithBoundSeqs.get(treeNode));
       }
 
@@ -532,17 +530,17 @@ public class AlignmentSorter
    *          tree which has
    */
   public static void sortByTree(AlignmentI align,
-          Map<PhylogenyNode, SequenceI> aptxNodesWithSeqs,
-          Phylogeny aptxTree) throws IllegalArgumentException
+          Map<TreeNodeI, SequenceI> nodesBoundToSequences,
+          TreeI treeI) throws IllegalArgumentException
   {
-    List<SequenceI> tmp = getOrderByTree(aptxTree, aptxNodesWithSeqs);
+    List<SequenceI> tmp = getOrderByTree(treeI, nodesBoundToSequences);
 
     if (!tmp.isEmpty())
     {
-      if (lastAptxTree != aptxTree)
+      if (lastExternalTree != treeI)
       {
         sortTreeAscending = true;
-        lastAptxTree = aptxTree;
+        lastExternalTree = treeI;
       }
       else
       {
@@ -658,7 +656,7 @@ public class AlignmentSorter
 
     for (int i = 0; i < alignment.length; i++)
     {
-      ids[i] = (new Float(alignment[i].getName().substring(8)))
+      ids[i] = (Float.valueOf(alignment[i].getName().substring(8)))
               .floatValue();
     }
 
@@ -780,14 +778,15 @@ public class AlignmentSorter
     if (method != FEATURE_SCORE && method != FEATURE_LABEL
             && method != FEATURE_DENSITY)
     {
-      String msg = String
-              .format("Implementation Error - sortByFeature method must be either '%s' or '%s'",
-                      FEATURE_SCORE, FEATURE_DENSITY);
+      String msg = String.format(
+              "Implementation Error - sortByFeature method must be either '%s' or '%s'",
+              FEATURE_SCORE, FEATURE_DENSITY);
       System.err.println(msg);
       return;
     }
 
-    flipFeatureSortIfUnchanged(method, featureTypes, groups, startCol, endCol);
+    flipFeatureSortIfUnchanged(method, featureTypes, groups, startCol,
+            endCol);
 
     SequenceI[] seqs = alignment.getSequencesArray();
 
@@ -806,8 +805,8 @@ public class AlignmentSorter
        * get sequence residues overlapping column region
        * and features for residue positions and specified types
        */
-      String[] types = featureTypes == null ? null : featureTypes
-              .toArray(new String[featureTypes.size()]);
+      String[] types = featureTypes == null ? null
+              : featureTypes.toArray(new String[featureTypes.size()]);
       List<SequenceFeature> sfs = seqs[i].findFeatures(startCol + 1,
               endCol + 1, types);