import org.forester.analysis.TaxonomyDataManager;
import org.forester.io.parsers.PhylogenyParser;
+import org.forester.io.parsers.nexus.NexusPhylogeniesParser;
+import org.forester.io.parsers.nhx.NHXParser;
+import org.forester.io.parsers.nhx.NHXParser.TAXONOMY_EXTRACTION;
import org.forester.io.parsers.phyloxml.PhyloXmlUtil;
import org.forester.io.parsers.tol.TolParser;
import org.forester.io.parsers.util.ParserUtils;
return AVAILABLE_FONT_FAMILIES_SORTED;
}
- final static void inferCommonPartOfScientificNames( final Phylogeny tree ) {
- boolean inferred = false;
- for( final PhylogenyNodeIterator it = tree.iteratorPostorder(); it.hasNext(); ) {
- final PhylogenyNode n = it.next();
- if ( !n.getNodeData().isHasTaxonomy() && !n.isExternal() ) {
- final String sn = PhylogenyMethods.inferCommonPartOfScientificNameOfDescendants( n );
- if ( !ForesterUtil.isEmpty( sn ) ) {
- n.getNodeData().setTaxonomy( new Taxonomy() );
- n.getNodeData().getTaxonomy().setScientificName( sn );
- inferred = true;
- }
- }
- }
- if ( inferred ) {
- tree.setRerootable( false );
- }
- }
-
final static boolean isHasAssignedEvent( final PhylogenyNode node ) {
if ( !node.getNodeData().isHasEvent() ) {
return false;
System.out.println( "[" + applet_name + "] > " + message );
}
- final static Phylogeny[] readPhylogeniesFromUrl( final URL url, final boolean phyloxml_validate_against_xsd )
+ final static Phylogeny[] readPhylogeniesFromUrl( final URL url,
+ final boolean phyloxml_validate_against_xsd,
+ final boolean replace_underscores,
+ final boolean internal_numbers_are_confidences,
+ final TAXONOMY_EXTRACTION taxonomy_extraction )
throws FileNotFoundException, IOException {
final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
- PhylogenyParser parser = null;
+ final PhylogenyParser parser;
+ boolean nhx_or_nexus = false;
if ( url.getHost().toLowerCase().indexOf( "tolweb" ) >= 0 ) {
parser = new TolParser();
}
else {
parser = ParserUtils.createParserDependingOnUrlContents( url, phyloxml_validate_against_xsd );
+ if ( parser instanceof NHXParser ) {
+ nhx_or_nexus = true;
+ final NHXParser nhx = ( NHXParser ) parser;
+ nhx.setReplaceUnderscores( replace_underscores );
+ nhx.setIgnoreQuotes( false );
+ nhx.setTaxonomyExtraction( taxonomy_extraction );
+ }
+ else if ( parser instanceof NexusPhylogeniesParser ) {
+ nhx_or_nexus = true;
+ final NexusPhylogeniesParser nex = ( NexusPhylogeniesParser ) parser;
+ nex.setReplaceUnderscores( replace_underscores );
+ nex.setIgnoreQuotes( false );
+ }
+ }
+ final Phylogeny[] phys = factory.create( url.openStream(), parser );
+ if ( nhx_or_nexus && internal_numbers_are_confidences ) {
+ for( final Phylogeny phy : phys ) {
+ PhylogenyMethods.transferInternalNodeNamesToConfidence( phy );
+ }
}
- return factory.create( url.openStream(), parser );
+ return phys;
}
final static void removeBranchColors( final Phylogeny phy ) {