+
+ final static Map<String, Integer> getRankCounts( final Phylogeny tree ) {
+ final Map<String, Integer> present_ranks = new HashMap<String, Integer>();
+ if ( ( tree != null ) && !tree.isEmpty() ) {
+ for( final PhylogenyNodeIterator it = tree.iteratorPostorder(); it.hasNext(); ) {
+ final PhylogenyNode n = it.next();
+ if ( !n.isExternal() && n.getNodeData().isHasTaxonomy()
+ && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getRank() ) && !n.isRoot() ) {
+ final String rank = n.getNodeData().getTaxonomy().getRank().toLowerCase();
+ if ( present_ranks.containsKey( rank ) ) {
+ present_ranks.put( rank, present_ranks.get( rank ) + 1 );
+ }
+ else {
+ present_ranks.put( rank, 1 );
+ }
+ }
+ }
+ }
+ return present_ranks;
+ }