return trees;
}
+ public final static Phylogeny[] readPhylogenies( final PhylogenyParser parser, final List<File> files )
+ throws IOException {
+ final List<Phylogeny> tree_list = new ArrayList<Phylogeny>();
+ for( final File file : files ) {
+ 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 );
+ }
+ tree_list.addAll( Arrays.asList( trees ) );
+ }
+ return tree_list.toArray( new Phylogeny[ tree_list.size() ] );
+ }
+
final static public void transferInternalNodeNamesToConfidence( final Phylogeny phy ) {
final PhylogenyNodeIterator it = phy.iteratorPostorder();
while ( it.hasNext() ) {
if ( !ForesterUtil.isEmpty( name ) ) {
switch ( field ) {
case TAXONOMY_CODE:
- //temp hack
- // if ( name.length() > 5 ) {
- // n.setName( "" );
- // if ( !n.getNodeData().isHasTaxonomy() ) {
- // n.getNodeData().setTaxonomy( new Taxonomy() );
- // }
- // n.getNodeData().getTaxonomy().setScientificName( name );
- // break;
- // }
- //
n.setName( "" );
setTaxonomyCode( n, name );
break;
return max;
}
+ public static int countNumberOfPolytomies( final Phylogeny phy ) {
+ int count = 0;
+ for( final PhylogenyNodeIterator iter = phy.iteratorPreorder(); iter.hasNext(); ) {
+ final PhylogenyNode n = iter.next();
+ if ( !n.isExternal() && ( n.getNumberOfDescendants() > 2 ) ) {
+ count++;
+ }
+ }
+ return count;
+ }
+
public static DescriptiveStatistics calculatNumberOfDescendantsPerNodeStatistics( final Phylogeny phy ) {
final DescriptiveStatistics stats = new BasicDescriptiveStatistics();
for( final PhylogenyNodeIterator iter = phy.iteratorPreorder(); iter.hasNext(); ) {
}
public static void deleteExternalNodesNegativeSelection( final Set<Integer> to_delete, final Phylogeny phy ) {
- phy.hashIDs();
+ phy.clearHashIdToNodeMap();
for( final Integer id : to_delete ) {
phy.deleteSubtree( phy.getNode( id ), true );
}
- phy.hashIDs();
+ phy.clearHashIdToNodeMap();
+ phy.externalNodesHaveChanged();
}
public static void deleteExternalNodesNegativeSelection( final String[] node_names_to_delete, final Phylogeny p )
p.deleteSubtree( n, true );
}
}
+ p.clearHashIdToNodeMap();
+ p.externalNodesHaveChanged();
}
public static void deleteExternalNodesPositiveSelection( final Set<Taxonomy> species_to_keep, final Phylogeny phy ) {
throw new IllegalArgumentException( "node " + n.getId() + " has no taxonomic data" );
}
}
- phy.hashIDs();
+ phy.clearHashIdToNodeMap();
phy.externalNodesHaveChanged();
- // deleteExternalNodesNegativeSelection( to_delete, phy );
}
public static List<String> deleteExternalNodesPositiveSelection( final String[] node_names_to_keep,
if ( !node.getNodeData().isHasTaxonomy() ) {
return "";
}
- if ( !ForesterUtil.isEmpty( node.getNodeData().getTaxonomy().getTaxonomyCode() ) ) {
- return node.getNodeData().getTaxonomy().getTaxonomyCode();
- }
else if ( !ForesterUtil.isEmpty( node.getNodeData().getTaxonomy().getScientificName() ) ) {
return node.getNodeData().getTaxonomy().getScientificName();
}
+ if ( !ForesterUtil.isEmpty( node.getNodeData().getTaxonomy().getTaxonomyCode() ) ) {
+ return node.getNodeData().getTaxonomy().getTaxonomyCode();
+ }
else {
return node.getNodeData().getTaxonomy().getCommonName();
}
double blue = 0.0;
int n = 0;
if ( node.isInternal() ) {
- for( final PhylogenyNodeIterator iterator = node.iterateChildNodesForward(); iterator.hasNext(); ) {
- final PhylogenyNode child_node = iterator.next();
+ //for( final PhylogenyNodeIterator iterator = node.iterateChildNodesForward(); iterator.hasNext(); ) {
+ for( int i = 0; i < node.getNumberOfDescendants(); ++i ) {
+ final PhylogenyNode child_node = node.getChildNode( i );
final Color child_color = getBranchColorValue( child_node );
if ( child_color != null ) {
++n;
}
if ( remove_me.isExternal() ) {
phylogeny.deleteSubtree( remove_me, false );
+ phylogeny.clearHashIdToNodeMap();
+ phylogeny.externalNodesHaveChanged();
}
else {
final PhylogenyNode parent = remove_me.getParent();
desc.getDistanceToParent() ) );
}
remove_me.setParent( null );
- phylogeny.setIdHash( null );
+ phylogeny.clearHashIdToNodeMap();
phylogeny.externalNodesHaveChanged();
}
}
for( final PhylogenyNode phylogenyNode : nodes_to_delete ) {
to_be_stripped.deleteSubtree( phylogenyNode, true );
}
+ to_be_stripped.clearHashIdToNodeMap();
+ to_be_stripped.externalNodesHaveChanged();
return nodes_to_delete.size();
}