in progress
[jalview.git] / forester / java / src / org / forester / archaeopteryx / Util.java
index 408a3d7..05823d0 100644 (file)
@@ -45,6 +45,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 import javax.imageio.IIOImage;
 import javax.imageio.ImageIO;
@@ -57,7 +59,6 @@ import javax.swing.text.MaskFormatter;
 
 import org.forester.io.parsers.PhylogenyParser;
 import org.forester.io.parsers.tol.TolParser;
-import org.forester.io.parsers.util.PhylogenyParserException;
 import org.forester.phylogeny.Phylogeny;
 import org.forester.phylogeny.PhylogenyMethods;
 import org.forester.phylogeny.PhylogenyNode;
@@ -289,6 +290,39 @@ public final class Util {
         }
     }
 
+    final static void colorPhylogenyAccordingToRanks( final Phylogeny tree,
+                                                      final String rank,
+                                                      final TreePanel tree_panel ) {
+        for( final PhylogenyNodeIterator it = tree.iteratorPostorder(); it.hasNext(); ) {
+            final PhylogenyNode n = it.next();
+            if ( n.getNodeData().isHasTaxonomy()
+                    && ( !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getRank() ) && n.getNodeData()
+                            .getTaxonomy().getRank().equalsIgnoreCase( rank ) )
+                    && ( !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getScientificName() )
+                            || !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getCommonName() ) || !ForesterUtil
+                            .isEmpty( n.getNodeData().getTaxonomy().getTaxonomyCode() ) ) ) {
+                final BranchColor c = new BranchColor( tree_panel.calculateTaxonomyBasedColor( n.getNodeData()
+                        .getTaxonomy() ) );
+                n.getBranchData().setBranchColor( c );
+                final List<PhylogenyNode> descs = PhylogenyMethods.getAllDescendants( n );
+                for( final PhylogenyNode desc : descs ) {
+                    desc.getBranchData().setBranchColor( c );
+                }
+            }
+        }
+    }
+
+    final static String[] getAllRanks( final Phylogeny tree ) {
+        final SortedSet<String> ranks = new TreeSet<String>();
+        for( final PhylogenyNodeIterator it = tree.iteratorPreorder(); it.hasNext(); ) {
+            final PhylogenyNode n = it.next();
+            if ( n.getNodeData().isHasTaxonomy() && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getRank() ) ) {
+                ranks.add( n.getNodeData().getTaxonomy().getRank() );
+            }
+        }
+        return ForesterUtil.stringSetToArray( ranks );
+    }
+
     final static void colorPhylogenyAccordingToExternalTaxonomy( final Phylogeny tree, final TreePanel tree_panel ) {
         for( final PhylogenyNodeIterator it = tree.iteratorPreorder(); it.hasNext(); ) {
             it.next().getBranchData().setBranchColor( null );
@@ -618,15 +652,6 @@ public final class Util {
         System.out.println( "[" + name + "] > " + message );
     }
 
-    final static Phylogeny[] readPhylogenies( final PhylogenyParser parser, final File file ) throws IOException {
-        final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
-        final Phylogeny[] trees = factory.create( file, parser );
-        if ( ( trees == null ) || ( trees.length == 0 ) ) {
-            throw new PhylogenyParserException( "Unable to parse phylogeny from file: " + file );
-        }
-        return trees;
-    }
-
     final static Phylogeny[] readPhylogeniesFromUrl( final URL url, final boolean phyloxml_validate_against_xsd )
             throws FileNotFoundException, IOException {
         final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();