Bio::Tree
Tree
Summary
Bio::Tree::Tree - An Implementation of TreeI interface.
Package variables
No package variables defined.
Included modules
Inherit
Synopsis
# like from a TreeIO
my $treeio = new Bio::TreeIO(-format => 'newick', -file => 'treefile.dnd');
my $tree = $treeio->next_tree;
my @nodes = $tree->get_nodes;
my $root = $tree->get_root_node;
Description
This object holds handles to Nodes which make up a tree.
Methods
Methods description
Title : new
Usage : my $obj = new Bio::Tree::Tree();
Function: Builds a new Bio::Tree::Tree object
Returns : Bio::Tree::Tree
Args : -root => Bio::Tree::NodeI object which is the root -nodelete => boolean, whether or not to try and cleanup all the nodes when this this tree goes out of scope. |
Title : nodelete
Usage : $obj->nodelete($newval)
Function: Get/Set Boolean whether or not to delete the underlying
nodes when it goes out of scope. By default this is false
meaning trees are cleaned up.
Returns : boolean
Args : on set, new boolean value |
Title : get_nodes
Usage : my @nodes = $tree->get_nodes()
Function: Return list of Tree::NodeI objects
Returns : array of Tree::NodeI objects
Args : (named values) hash with one value
order => 'b|breadth' first order or 'd|depth' first order |
Title : get_root_node
Usage : my $node = $tree->get_root_node();
Function: Get the Top Node in the tree, in this implementation
Trees only have one top node.
Returns : Bio::Tree::NodeI object
Args : none |
Title : set_root_node
Usage : $tree->set_root_node($node)
Function: Set the Root Node for the Tree
Returns : Bio::Tree::NodeI
Args : Bio::Tree::NodeI |
Title : total_branch_length
Usage : my $size = $tree->total_branch_length
Function: Returns the sum of the length of all branches
Returns : integer
Args : none |
Title : id
Usage : my $id = $tree->id();
Function: An id value for the tree
Returns : scalar
Args : [optional] new value to set |
Title : score
Usage : $obj->score($newval)
Function: Sets the associated score with this tree
This is a generic slot which is probably best used
for log likelihood or other overall tree score
Returns : value of score
Args : newvalue (optional) |
Methods code
sub new
{ my($class,@args) = @_;
my $self = $class->SUPER::new(@args);
$self->{'_rootnode'} = undef;
$self->{'_maxbranchlen'} = 0;
$self->_register_for_cleanup(\&cleanup_tree);
my ($root,$nodel)= $self->_rearrange([qw(ROOT NODELETE)], @args);
if( $root ) { $self->set_root_node($root); }
$self->nodelete($nodel || 0);
return $self;} |
sub nodelete
{ my $self = shift;
return $self->{'nodelete'} = shift if @_;
return $self->{'nodelete'};} |
sub get_nodes
{ my ($self, @args) = @_;
my ($order, $sortby) = $self->_rearrange([qw(ORDER SORTBY)],@args);
$order ||= 'depth';
$sortby ||= 'height';
return () unless defined $self->get_root_node;
if ($order =~ m/^b|(breadth)$/oi) {
my $node = $self->get_root_node;
my @children = ($node);
for (@children) {
push @children, $_->each_Descendent($sortby);
}
return @children;
}
if ($order =~ m/^d|(depth)$/oi) {
my $node = $self->get_root_node;
my @children = ($node,$node->get_Descendents($sortby));
return @children;
}} |
sub get_root_node
{ my ($self) = @_;
return $self->{'_rootnode'};} |
sub set_root_node
{ my $self = shift;
if( @_ ) {
my $value = shift;
if( defined $value &&
! $value->isa('Bio::Tree::NodeI') ) {
$self->warn("Trying to set the root node to $value which is not a Bio::Tree::NodeI");
return $self->get_root_node;
}
$self->{'_rootnode'} = $value;
}
return $self->get_root_node;} |
sub total_branch_length
{ my ($self) = @_;
my $sum = 0;
if( defined $self->get_root_node ) {
for ( $self->get_root_node->get_Descendents() ) {
$sum += $_->branch_length || 0;
}
}
return $sum;} |
sub id
{ my ($self,$val) = @_;
if( defined $val ) {
$self->{'_treeid'} = $val;
}
return $self->{'_treeid'};} |
sub score
{ my ($self,$val) = @_;
if( defined $val ) {
$self->{'_score'} = $val;
}
return $self->{'_score'};} |
sub cleanup_tree
{ my $self = shift;
unless( $self->nodelete ) {
foreach my $node ( $self->get_nodes ) {
$node->ancestor(undef);
$node = undef;
}
}
$self->{'_rootnode'} = undef;} |
General documentation
User feedback is an integral part of the evolution of this and other
Bioperl modules. Send your comments and suggestions preferably to
the Bioperl mailing list. Your participation is much appreciated.
bioperl-l@bioperl.org - General discussion
http://bioperl.org/MailList.shtml - About the mailing lists
Report bugs to the Bioperl bug tracking system to help us keep track
of the bugs and their resolution. Bug reports can be submitted via
the web:
http://bugzilla.bioperl.org/
| AUTHOR - Jason Stajich | Top |
The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _
Title : height
Usage : my $height = $tree->height
Function: Gets the height of tree - this LOG_2($number_nodes)
WARNING: this is only true for strict binary trees. The TreeIO
system is capable of building non-binary trees, for which this
method will currently return an incorrect value!!
Returns : integer
Args : none
Title : number_nodes
Usage : my $size = $tree->number_nodes
Function: Returns the number of nodes
Example :
Returns :
Args :