getting of external node data
authorcmzmasek <cmzmasek@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Tue, 4 Sep 2012 05:23:27 +0000 (05:23 +0000)
committercmzmasek <cmzmasek@ca865154-3058-d1c3-3e42-d8f55a55bdbd>
Tue, 4 Sep 2012 05:23:27 +0000 (05:23 +0000)
forester/java/src/org/forester/archaeopteryx/Configuration.java
forester/java/src/org/forester/archaeopteryx/Options.java
forester/java/src/org/forester/archaeopteryx/TreePanel.java
forester/java/src/org/forester/phylogeny/data/NodeData.java

index d44ba3b..5be2f8c 100644 (file)
@@ -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;
+    }
 }
index 4ba2ded..862db49 100644 (file)
@@ -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;
+    }
 }
index 992f740..6fba312 100644 (file)
@@ -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() {
index eb41d94..e3af367 100644 (file)
@@ -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<Sequence>          _sequences;