From 65a8c5b4114a280f1ec4977c89e2f5373fd68104 Mon Sep 17 00:00:00 2001 From: cmzmasek Date: Tue, 4 Sep 2012 05:23:27 +0000 Subject: [PATCH] getting of external node data --- .../org/forester/archaeopteryx/Configuration.java | 32 ++++++++++++++++++ .../src/org/forester/archaeopteryx/Options.java | 15 +++++++++ .../src/org/forester/archaeopteryx/TreePanel.java | 34 +++++++++++++++++++- .../src/org/forester/phylogeny/data/NodeData.java | 3 ++ 4 files changed, 83 insertions(+), 1 deletion(-) diff --git a/forester/java/src/org/forester/archaeopteryx/Configuration.java b/forester/java/src/org/forester/archaeopteryx/Configuration.java index d44ba3b..5be2f8c 100644 --- a/forester/java/src/org/forester/archaeopteryx/Configuration.java +++ b/forester/java/src/org/forester/archaeopteryx/Configuration.java @@ -47,6 +47,7 @@ import org.forester.archaeopteryx.Options.CLADOGRAM_TYPE; import org.forester.archaeopteryx.Options.NODE_LABEL_DIRECTION; import org.forester.archaeopteryx.Options.OVERVIEW_PLACEMENT_TYPE; import org.forester.archaeopteryx.Options.PHYLOGENY_GRAPHICS_TYPE; +import org.forester.phylogeny.data.NodeData.NODE_DATA; import org.forester.phylogeny.data.NodeVisualization; import org.forester.phylogeny.data.NodeVisualization.NodeFill; import org.forester.phylogeny.data.NodeVisualization.NodeShape; @@ -209,6 +210,7 @@ public final class Configuration { private Color _gui_button_border_color = Constants.BUTTON_BORDER_COLOR_DEFAULT; private Color _domain_structure_font_color = Constants.DOMAIN_STRUCTURE_FONT_COLOR_DEFAULT; private Color _domain_structure_base_color = Constants.DOMAIN_STRUCTURE_BASE_COLOR_DEFAULT; + private NODE_DATA _ext_desc_data_to_return; private static String DEFAULT_FONT_FAMILY = ""; static { for( final String font_name : Constants.DEFAULT_FONT_CHOICES ) { @@ -1285,6 +1287,28 @@ public final class Configuration { else if ( key.equals( "taxonomy_colorize_node_shapes" ) ) { setTaxonomyColorizeNodeShapes( parseBoolean( ( String ) st.nextElement() ) ); } + else if ( key.equals( "ext_descendents_data_to_return" ) ) { + final String s = ( ( String ) st.nextElement() ).trim(); + if ( s.equalsIgnoreCase( "node_name" ) ) { + setExtDescNodeDataToReturn( NODE_DATA.NODE_NAME ); + } + else if ( s.equalsIgnoreCase( "sequence_acc" ) ) { + setExtDescNodeDataToReturn( NODE_DATA.SEQUENCE_ACC ); + } + else if ( s.equalsIgnoreCase( "sequence_mol_seq" ) ) { + setExtDescNodeDataToReturn( NODE_DATA.SEQUENCE_MOL_SEQ ); + } + else if ( s.equalsIgnoreCase( "sequence_name" ) ) { + setExtDescNodeDataToReturn( NODE_DATA.SEQUENCE_NAME ); + } + else if ( s.equalsIgnoreCase( "sequence_symbol" ) ) { + setExtDescNodeDataToReturn( NODE_DATA.SEQUENCE_SYMBOL ); + } + else { + ForesterUtil.printWarningMessage( Constants.PRG_NAME, "unknown value [" + s + + "] for [ext_descendents_data_to_return]" ); + } + } else if ( st.countTokens() >= 2 ) { // counts the tokens that are not // yet retrieved! int key_index = -1; @@ -1573,4 +1597,12 @@ public final class Configuration { public enum UI { NATIVE, CROSSPLATFORM, NIMBUS, UNKNOWN } + + public NODE_DATA getExtDescNodeDataToReturn() { + return _ext_desc_data_to_return; + } + + public void setExtDescNodeDataToReturn( final NODE_DATA ext_desc_data_to_return ) { + _ext_desc_data_to_return = ext_desc_data_to_return; + } } diff --git a/forester/java/src/org/forester/archaeopteryx/Options.java b/forester/java/src/org/forester/archaeopteryx/Options.java index 4ba2ded..862db49 100644 --- a/forester/java/src/org/forester/archaeopteryx/Options.java +++ b/forester/java/src/org/forester/archaeopteryx/Options.java @@ -28,6 +28,8 @@ package org.forester.archaeopteryx; import java.awt.Font; import org.forester.phylogeny.PhylogenyNodeI.NH_CONVERSION_SUPPORT_VALUE_STYLE; +import org.forester.phylogeny.data.NodeData; +import org.forester.phylogeny.data.NodeData.NODE_DATA; import org.forester.phylogeny.data.NodeVisualization; import org.forester.phylogeny.data.NodeVisualization.NodeFill; import org.forester.phylogeny.data.NodeVisualization.NodeShape; @@ -78,6 +80,7 @@ final public class Options { private boolean _show_default_node_shapes; private boolean _show_confidence_stddev; private NH_CONVERSION_SUPPORT_VALUE_STYLE _nh_conversion_support_value_style; + private NODE_DATA _ext_desc_data_to_return; private Options() { init(); @@ -189,6 +192,7 @@ final public class Options { _color_labels_same_as_parent_branch = false; _show_confidence_stddev = true; _nh_conversion_support_value_style = NH_CONVERSION_SUPPORT_VALUE_STYLE.NONE; + _ext_desc_data_to_return = NODE_DATA.NODE_NAME; } boolean isShowConfidenceStddev() { @@ -515,6 +519,9 @@ final public class Options { } instance.setTaxonomyColorizeNodeShapes( configuration.isTaxonomyColorizeNodeShapes() ); instance.setShowDefaultNodeShapes( configuration.isShowDefaultNodeShapes() ); + if ( configuration.getExtDescNodeDataToReturn() != null ) { + instance.setExtDescNodeDataToReturn( configuration.getExtDescNodeDataToReturn() ); + } } return instance; } @@ -552,4 +559,12 @@ final public class Options { public static enum PHYLOGENY_GRAPHICS_TYPE { RECTANGULAR, TRIANGULAR, EURO_STYLE, ROUNDED, CONVEX, CURVED, UNROOTED, CIRCULAR; } + + public NodeData.NODE_DATA getExtDescNodeDataToReturn() { + return _ext_desc_data_to_return; + } + + public void setExtDescNodeDataToReturn( final NODE_DATA ext_desc_data_to_return ) { + _ext_desc_data_to_return = ext_desc_data_to_return; + } } diff --git a/forester/java/src/org/forester/archaeopteryx/TreePanel.java b/forester/java/src/org/forester/archaeopteryx/TreePanel.java index 992f740..6fba312 100644 --- a/forester/java/src/org/forester/archaeopteryx/TreePanel.java +++ b/forester/java/src/org/forester/archaeopteryx/TreePanel.java @@ -1346,7 +1346,39 @@ public final class TreePanel extends JPanel implements ActionListener, MouseWhee } private void getExtDescNodeData( final PhylogenyNode node ) { - System.out.println( node.toString() ); + for( final PhylogenyNode n : node.getAllExternalDescendants() ) { + switch ( getOptions().getExtDescNodeDataToReturn() ) { + case NODE_NAME: + System.out.println( n.getName() ); + break; + case SEQUENCE_NAME: + if ( n.getNodeData().isHasSequence() + && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getName() ) ) { + System.out.println( n.getNodeData().getSequence().getName() ); + } + break; + case SEQUENCE_SYMBOL: + if ( n.getNodeData().isHasSequence() + && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getSymbol() ) ) { + System.out.println( n.getNodeData().getSequence().getSymbol() ); + } + break; + case SEQUENCE_MOL_SEQ: + if ( n.getNodeData().isHasSequence() + && !ForesterUtil.isEmpty( n.getNodeData().getSequence().getMolecularSequence() ) ) { + System.out.println( n.getNodeData().getSequence().getMolecularSequence() ); + } + break; + case SEQUENCE_ACC: + if ( n.getNodeData().isHasSequence() && ( n.getNodeData().getSequence().getAccession() != null ) ) { + System.out.println( n.getNodeData().getSequence().getAccession().toString() ); + } + break; + default: + throw new IllegalArgumentException( "unknown data element: " + + getOptions().getExtDescNodeDataToReturn() ); + } + } } final void increaseDomainStructureEvalueThreshold() { diff --git a/forester/java/src/org/forester/phylogeny/data/NodeData.java b/forester/java/src/org/forester/phylogeny/data/NodeData.java index eb41d94..e3af367 100644 --- a/forester/java/src/org/forester/phylogeny/data/NodeData.java +++ b/forester/java/src/org/forester/phylogeny/data/NodeData.java @@ -38,6 +38,9 @@ import org.forester.util.ForesterUtil; public class NodeData implements PhylogenyData { + public enum NODE_DATA { + NODE_NAME, EVENT, SEQUENCE_NAME, SEQUENCE_SYMBOL, SEQUENCE_MOL_SEQ, SEQUENCE_ACC; + } private String _node_name; private Event _event; private List _sequences; -- 1.7.10.2