X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FMainFrameApplication.java;h=95b23cb9503321843f61e21f915e92e3734b9bb7;hb=5309828c338cdf84ef10f70dc2472cf27016a75b;hp=7b3f4113c564857e3aeb6f1c675616b8aeb9c1c6;hpb=89f36e42fb462f8d7b59def3ead995fb16a87b59;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/MainFrameApplication.java b/forester/java/src/org/forester/archaeopteryx/MainFrameApplication.java index 7b3f411..95b23cb 100644 --- a/forester/java/src/org/forester/archaeopteryx/MainFrameApplication.java +++ b/forester/java/src/org/forester/archaeopteryx/MainFrameApplication.java @@ -268,9 +268,6 @@ public final class MainFrameApplication extends MainFrame { catch ( final IllegalAccessException e ) { AptxUtil.dieWithSystemError( "illegal access exception: " + e.toString() ); } - catch ( final Exception e ) { - AptxUtil.dieWithSystemError( e.toString() ); - } if ( ( current_dir != null ) && current_dir.canRead() && current_dir.isDirectory() ) { setCurrentDir( current_dir ); } @@ -510,7 +507,7 @@ public final class MainFrameApplication extends MainFrame { moveNodeNamesToSeqNames(); } else if ( o == _extract_tax_code_from_node_names_jmi ) { - extractTaxCodeFromNodeNames(); + extractTaxDataFromNodeNames(); } else if ( o == _gsdi_item ) { if ( isSubtreeDisplayed() ) { @@ -1140,10 +1137,10 @@ public final class MainFrameApplication extends MainFrame { customizeJMenuItem( _move_node_names_to_seq_names_jmi ); _move_node_names_to_seq_names_jmi.setToolTipText( "To interpret node names as sequence (protein, gene) names" ); _tools_menu - .add( _extract_tax_code_from_node_names_jmi = new JMenuItem( "Extract Taxonomic Codes from Node Names" ) ); + .add( _extract_tax_code_from_node_names_jmi = new JMenuItem( "Extract Taxonomic Codes or Ids from Node Names" ) ); customizeJMenuItem( _extract_tax_code_from_node_names_jmi ); _extract_tax_code_from_node_names_jmi - .setToolTipText( "To extract taxonomic codes (mnemonics) from nodes names in the form of 'xyz_ECOLI'" ); + .setToolTipText( "To extract taxonomic codes (mnemonics) from nodes names in the form of 'xyz_ECOLI', or Uniprot identifiers from nodes names in the form of 'xyz_1234567'" ); _tools_menu.addSeparator(); _tools_menu .add( _obtain_detailed_taxonomic_information_jmi = new JMenuItem( OBTAIN_DETAILED_TAXONOMIC_INFORMATION ) ); @@ -1874,21 +1871,58 @@ public final class MainFrameApplication extends MainFrame { } } - private void extractTaxCodeFromNodeNames() throws PhyloXmlDataFormatException { + private void extractTaxDataFromNodeNames() throws PhyloXmlDataFormatException { + final StringBuilder sb = new StringBuilder(); + final StringBuilder sb_failed = new StringBuilder(); + int counter = 0; + int counter_failed = 0; if ( getCurrentTreePanel() != null ) { final Phylogeny phy = getCurrentTreePanel().getPhylogeny(); if ( ( phy != null ) && !phy.isEmpty() ) { - final PhylogenyNodeIterator it = phy.iteratorPostorder(); + final PhylogenyNodeIterator it = phy.iteratorExternalForward(); while ( it.hasNext() ) { final PhylogenyNode n = it.next(); final String name = n.getName().trim(); if ( !ForesterUtil.isEmpty( name ) ) { - final String code = ParserUtils - .extractTaxonomyCodeFromNodeName( name, NHXParser.TAXONOMY_EXTRACTION.YES ); - if ( !ForesterUtil.isEmpty( code ) ) { - PhylogenyMethods.setTaxonomyCode( n, code ); + final String nt = ParserUtils.extractTaxonomyDataFromNodeName( n, TAXONOMY_EXTRACTION.YES ); + if ( !ForesterUtil.isEmpty( nt ) ) { + if ( counter < 15 ) { + sb.append( name + ": " + nt + "\n" ); + } + else if ( counter == 15 ) { + sb.append( "...\n" ); + } + counter++; } + else { + if ( counter_failed < 15 ) { + sb_failed.append( name + "\n" ); + } + else if ( counter_failed == 15 ) { + sb_failed.append( "...\n" ); + } + counter_failed++; + } + } + } + if ( counter > 0 ) { + String failed = ""; + if ( counter_failed > 0 ) { + failed = "\nDid not extract taxonomic data for " + counter_failed + " (named) external nodes:\n" + sb_failed; + } + JOptionPane.showMessageDialog( this, + "Successfully extracted taxonomic data from " + counter + + " external nodes:\n" + sb.toString() + failed, + "Taxonomic Data Extraction Successfully Completed", + JOptionPane.INFORMATION_MESSAGE ); + } + else { + JOptionPane + .showMessageDialog( this, + "Could not extract any taxonomic data, maybe node names are empty\nor not in the form \"XYZ_CAEEL\", \"XYZ_CAEEL/12-394\", or \"XYZ_1234567\"?", + "No Taxonomic Data Extracted", + JOptionPane.WARNING_MESSAGE ); } } } @@ -2350,6 +2384,7 @@ public final class MainFrameApplication extends MainFrame { private void setSpecialOptionsForNexParser( final NexusPhylogeniesParser nex ) { nex.setReplaceUnderscores( getOptions().isReplaceUnderscoresInNhParsing() ); + nex.setTaxonomyExtraction( getOptions().getTaxonomyExtraction() ); } private void setSpecialOptionsForNhxParser( final NHXParser nhx ) {