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;
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;
import org.forester.util.DescriptiveStatistics;
import org.forester.util.ForesterUtil;
-final class Util {
+public final class Util {
private final static String[] AVAILABLE_FONT_FAMILIES_SORTED = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getAvailableFontFamilyNames();
}
}
+ 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 );
System.out.println( "[" + applet_name + "] > " + message );
}
- final static void printWarningMessage( final String name, final String message ) {
+ public final static void printWarningMessage( final String name, final String message ) {
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();