+\r
+ public final static List<Integer> getIndexesOfShortestTree( final List<Phylogeny> assigned_trees ) {\r
+ final List<Integer> shortests = new ArrayList<Integer>();\r
+ boolean depth = true;\r
+ double x = Double.MAX_VALUE;\r
+ for( int i = 0; i < assigned_trees.size(); ++i ) {\r
+ final Phylogeny phy = assigned_trees.get( i );\r
+ if ( i == 0 ) {\r
+ if ( PhylogenyMethods.calculateMaxDistanceToRoot( phy ) > 0 ) {\r
+ depth = false;\r
+ }\r
+ }\r
+ final double d;\r
+ if ( depth ) {\r
+ d = PhylogenyMethods.calculateMaxDepth( phy );\r
+ }\r
+ else {\r
+ d = PhylogenyMethods.calculateMaxDistanceToRoot( phy );\r
+ }\r
+ if ( d < x ) {\r
+ x = d;\r
+ shortests.clear();\r
+ shortests.add( i );\r
+ }\r
+ else if ( d == x ) {\r
+ shortests.add( i );\r
+ }\r
+ }\r
+ return shortests;\r
+ }\r