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;
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 ) {
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;
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;
+ }
}
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;
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();
_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() {
}
instance.setTaxonomyColorizeNodeShapes( configuration.isTaxonomyColorizeNodeShapes() );
instance.setShowDefaultNodeShapes( configuration.isShowDefaultNodeShapes() );
+ if ( configuration.getExtDescNodeDataToReturn() != null ) {
+ instance.setExtDescNodeDataToReturn( configuration.getExtDescNodeDataToReturn() );
+ }
}
return instance;
}
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;
+ }
}
}
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() {
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;