/** * Convenience method -- always returns the first Taxonomy. * * @return Taxonomy * */ public Taxonomy getTaxonomy() { return getTaxonomy( 0 ); }
private static String extractBracketedScientificNames( final PhylogenyNode node, final String new_value ) { final int i = new_value.lastIndexOf( "[" ); final String scientific_name = new_value.substring( i + 1, new_value.length() - 1 ); ForesterUtil.ensurePresenceOfTaxonomy( node ); node.getNodeData().getTaxonomy().setScientificName( scientific_name ); return new_value.substring( 0, i - 1 ).trim(); }
public static Set<Taxonomy> obtainAllDistinctTaxonomies( final PhylogenyNode node ) { final List<PhylogenyNode> descs = node.getAllExternalDescendants(); final Set<Taxonomy> tax_set = new HashSet<Taxonomy>(); for( final PhylogenyNode n : descs ) { if ( n.getNodeData().isHasTaxonomy() && !n.getNodeData().getTaxonomy().isEmpty() ) { tax_set.add( n.getNodeData().getTaxonomy() ); } } return tax_set; }
static String taxonomyToString( final PhylogenyNode n, final TaxonomyComparisonBase base ) { switch ( base ) { case ID: final Identifier id = n.getNodeData().getTaxonomy().getIdentifier(); if ( id == null ) { return null; } return id.getValuePlusProvider(); case CODE: return n.getNodeData().getTaxonomy().getTaxonomyCode(); case SCIENTIFIC_NAME: return n.getNodeData().getTaxonomy().getScientificName(); default: throw new IllegalArgumentException( "unknown comparison base for taxonomies: " + base ); } }
private static String extractBracketedTaxCodes( final PhylogenyNode node, final String new_value ) { final StringBuilder sb = new StringBuilder(); sb.append( new_value ); final String tc = extractBracketedTaxCodes( sb ); if ( !ForesterUtil.isEmpty( tc ) ) { ForesterUtil.ensurePresenceOfTaxonomy( node ); try { node.getNodeData().getTaxonomy().setTaxonomyCode( tc ); } catch ( final PhyloXmlDataFormatException e ) { throw new IllegalArgumentException( "illegal format for taxonomy code: " + tc ); } return sb.toString().trim(); } return new_value; }
/** * Returns the set of distinct taxonomies of * all external nodes of node. * If at least one the external nodes has no taxonomy, * null is returned. * */ public static Set<Taxonomy> obtainDistinctTaxonomies( final PhylogenyNode node ) { final List<PhylogenyNode> descs = node.getAllExternalDescendants(); final Set<Taxonomy> tax_set = new HashSet<Taxonomy>(); for( final PhylogenyNode n : descs ) { if ( !n.getNodeData().isHasTaxonomy() || n.getNodeData().getTaxonomy().isEmpty() ) { return null; } tax_set.add( n.getNodeData().getTaxonomy() ); } return tax_set; }
final private int calcLengthOfLongestText() { final StringBuilder sb = new StringBuilder(); if ( _ext_node_with_longest_txt_info != null ) { nodeDataAsSB( _ext_node_with_longest_txt_info, sb ); if ( _ext_node_with_longest_txt_info.getNodeData().isHasTaxonomy() ) { nodeTaxonomyDataAsSB( _ext_node_with_longest_txt_info.getNodeData().getTaxonomy(), sb ); } } return getFontMetricsForLargeDefaultFont().stringWidth( sb.toString() ); }
@Override public StringBuffer toNHX() { final StringBuffer sb = new StringBuffer(); if ( isHasTaxonomy() ) { sb.append( getTaxonomy().toNHX() ); } if ( isHasSequence() ) { sb.append( getSequence().toNHX() ); } if ( isHasEvent() ) { sb.append( getEvent().toNHX() ); } return sb; }
/** * Convenience method for display purposes. * Not intended for algorithms. */ public static String getSpecies( final PhylogenyNode node ) { if ( !node.getNodeData().isHasTaxonomy() ) { return ""; } else if ( !ForesterUtil.isEmpty( node.getNodeData().getTaxonomy().getScientificName() ) ) { return node.getNodeData().getTaxonomy().getScientificName(); } if ( !ForesterUtil.isEmpty( node.getNodeData().getTaxonomy().getTaxonomyCode() ) ) { return node.getNodeData().getTaxonomy().getTaxonomyCode(); } else { return node.getNodeData().getTaxonomy().getCommonName(); } }
/** * Convenience method for display purposes. * Not intended for algorithms. */ public static String getTaxonomyIdentifier( final PhylogenyNode node ) { if ( !node.getNodeData().isHasTaxonomy() || ( node.getNodeData().getTaxonomy().getIdentifier() == null ) ) { return ""; } return node.getNodeData().getTaxonomy().getIdentifier().getValue(); }
final private boolean isCanOpenTaxWeb( final PhylogenyNode node ) { if ( node.getNodeData().isHasTaxonomy() && ( ( !ForesterUtil.isEmpty( node.getNodeData().getTaxonomy().getScientificName() ) ) || ( !ForesterUtil.isEmpty( node.getNodeData().getTaxonomy().getTaxonomyCode() ) ) || ( !ForesterUtil.isEmpty( node.getNodeData().getTaxonomy().getCommonName() ) ) || ( ( node .getNodeData().getTaxonomy().getIdentifier() != null ) && !ForesterUtil.isEmpty( node .getNodeData().getTaxonomy().getIdentifier().getValue() ) ) ) ) { return true; } else { return false; } }
final static String[] getAllRanks( final Phylogeny tree ) { final SortedSet<String> ranks = new TreeSet<String>(); for( final PhylogenyNodeIterator it = tree.iteratorPreorder(); it.hasNext(); ) { final PhylogenyNode n = it.next(); if ( n.getNodeData().isHasTaxonomy() && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getRank() ) ) { ranks.add( n.getNodeData().getTaxonomy().getRank() ); } } return ForesterUtil.stringSetToArray( ranks ); }
public List<PhylogenyNode> getNodesViaTaxonomyCode( final String taxonomy_code ) { if ( isEmpty() ) { return null; } final List<PhylogenyNode> nodes = new ArrayList<PhylogenyNode>(); for( final PhylogenyNodeIterator iter = iteratorPreorder(); iter.hasNext(); ) { final PhylogenyNode n = iter.next(); if ( n.getNodeData().isHasTaxonomy() && n.getNodeData().getTaxonomy().getTaxonomyCode().equals( taxonomy_code ) ) { nodes.add( n ); } } return nodes; }
public static void deleteExternalNodesPositiveSelectionT( final List<Taxonomy> species_to_keep, final Phylogeny phy ) { final Set<Long> to_delete = new HashSet<Long>(); for( final PhylogenyNodeIterator it = phy.iteratorExternalForward(); it.hasNext(); ) { final PhylogenyNode n = it.next(); if ( n.getNodeData().isHasTaxonomy() ) { if ( !species_to_keep.contains( n.getNodeData().getTaxonomy() ) ) { to_delete.add( n.getId() ); } } else { throw new IllegalArgumentException( "node " + n.getId() + " has no taxonomic data" ); } } deleteExternalNodesNegativeSelection( to_delete, phy ); }
public static int calculateNumberOfExternalNodesWithoutTaxonomy( final PhylogenyNode node ) { final List<PhylogenyNode> descs = node.getAllExternalDescendants(); int x = 0; for( final PhylogenyNode n : descs ) { if ( !n.getNodeData().isHasTaxonomy() || n.getNodeData().getTaxonomy().isEmpty() ) { x++; } } return x; }
@Override final public int hashCode() { final NodeData data = getNodeData(); if ( ( getName().length() < 1 ) && !data.isHasSequence() && !data.isHasTaxonomy() ) { return super.hashCode(); } int result = getName().hashCode(); if ( data.isHasSequence() ) { result ^= data.getSequence().hashCode(); } if ( data.isHasTaxonomy() ) { result ^= data.getTaxonomy().hashCode(); } return result; }
public static void setScientificName( final PhylogenyNode node, final String scientific_name ) { if ( !node.getNodeData().isHasTaxonomy() ) { node.getNodeData().setTaxonomy( new Taxonomy() ); } node.getNodeData().getTaxonomy().setScientificName( scientific_name ); }
final Color getTaxonomyBasedColor( final PhylogenyNode node ) { if ( node.isExternal() && node.getNodeData().isHasTaxonomy() ) { return calculateTaxonomyBasedColor( node.getNodeData().getTaxonomy() ); } // return non-colorized color return getTreeColorSet().getTaxonomyColor(); }
final static public boolean isHasAtLeastOneNodeWithScientificName( final Phylogeny phy ) { final PhylogenyNodeIterator it = phy.iteratorPostorder(); while ( it.hasNext() ) { final PhylogenyNode n = it.next(); if ( n.getNodeData().isHasTaxonomy() && !ForesterUtil.isEmpty( n.getNodeData().getTaxonomy().getScientificName() ) ) { return true; } } return false; }
/** * Convenience method to set the taxonomy code of a phylogeny node. * * * @param node * @param taxonomy_code * @throws PhyloXmlDataFormatException */ public static void setTaxonomyCode( final PhylogenyNode node, final String taxonomy_code ) throws PhyloXmlDataFormatException { if ( !node.getNodeData().isHasTaxonomy() ) { node.getNodeData().setTaxonomy( new Taxonomy() ); } node.getNodeData().getTaxonomy().setTaxonomyCode( taxonomy_code ); }