work on data buffer for aLeaves MAFFT suite + clean up
[jalview.git] / forester / java / src / org / forester / archaeopteryx / AptxUtil.java
index 1078656..e60bc2c 100644 (file)
@@ -64,6 +64,9 @@ import javax.swing.text.MaskFormatter;
 
 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;
@@ -791,24 +794,6 @@ public final class AptxUtil {
         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;
@@ -919,17 +904,41 @@ public final class AptxUtil {
         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 ) {