Bio-Phylo
view release on metacpan or search on metacpan
lib/Bio/Phylo/Forest/NodeRole.pm view on Meta::CPAN
package Bio::Phylo::Forest::NodeRole;
use strict;
use warnings;
use Bio::Phylo::Util::MOP;
use base qw'Bio::Phylo::Taxa::TaxonLinker Bio::Phylo::Listable';
use Bio::Phylo::Util::OptionalInterface 'Bio::Tree::NodeI';
use Bio::Phylo::Util::CONSTANT qw':objecttypes /looks_like/';
use Bio::Phylo::Util::Exceptions 'throw';
use Bio::Phylo::Util::Math ':all';
use Bio::Phylo::NeXML::Writable;
use Bio::Phylo::Factory;
use Scalar::Util 'weaken';
use List::Util qw[sum min max];
no warnings 'recursion';
my $LOADED_WRAPPERS = 0;
# store type constant
my ( $TYPE_CONSTANT, $CONTAINER_CONSTANT ) = ( _NODE_, _TREE_ );
# logger singleton
my $logger = __PACKAGE__->get_logger;
# factory object
my $fac = Bio::Phylo::Factory->new;
=head1 NAME
Bio::Phylo::Forest::NodeRole - Extra behaviours for a node in a phylogenetic tree
=head1 SYNOPSIS
# some way to get nodes:
use Bio::Phylo::IO;
my $string = '((A,B),C);';
my $forest = Bio::Phylo::IO->parse(
-format => 'newick',
-string => $string
);
# prints 'Bio::Phylo::Forest'
print ref $forest;
foreach my $tree ( @{ $forest->get_entities } ) {
# prints 'Bio::Phylo::Forest::Tree'
print ref $tree;
foreach my $node ( @{ $tree->get_entities } ) {
# prints 'Bio::Phylo::Forest::Node'
print ref $node;
# node has a parent, i.e. is not root
if ( $node->get_parent ) {
$node->set_branch_length(1);
}
# node is root
else {
$node->set_branch_length(0);
}
}
}
=head1 DESCRIPTION
This module defines a node object and its methods. The node is fairly
syntactically rich in terms of navigation, and additional getters are provided to
further ease navigation from node to node. Typical first daughter -> next sister
traversal and recursion is possible, but there are also shrinkwrapped methods
that return for example all terminal descendants of the focal node, or all
( run in 1.660 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )