NAME

Bio::Taxonomy::Tree - An Organism Level Implementation of TreeI interface.

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;
my @leaves = $tree->get_leaves;

DESCRIPTION

This object holds handles to Taxonomic Nodes which make up a tree.

EXAMPLES

use Bio::Species;
use Bio::Taxonomy::Tree;

my $human=new Bio::Species;
my $chimp=new Bio::Species;
my $bonobo=new Bio::Species;

$human->classification(qw( sapiens Homo Hominidae
                           Catarrhini Primates Eutheria
                           Mammalia Euteleostomi Vertebrata 
                           Craniata Chordata
                           Metazoa Eukaryota ));
$chimp->classification(qw( troglodytes Pan Hominidae
                           Catarrhini Primates Eutheria
                           Mammalia Euteleostomi Vertebrata 
                           Craniata Chordata
                           Metazoa Eukaryota ));
$bonobo->classification(qw( paniscus Pan Hominidae
                            Catarrhini Primates Eutheria
                            Mammalia Euteleostomi Vertebrata 
                            Craniata Chordata
                            Metazoa Eukaryota ));

# ranks passed to $taxonomy match ranks of species
my @ranks = ('superkingdom','kingdom','phylum','subphylum',
             'no rank 1','no rank 2','class','no rank 3','order',
             'suborder','family','genus','species');

my $taxonomy=new Bio::Taxonomy(-ranks => \@ranks,
                               -method => 'trust',
                               -order => -1);

my @nodes;

my $tree1=new Bio::Taxonomy::Tree;
my $tree2=new Bio::Taxonomy::Tree;

push @nodes,$tree1->make_species_branch($human,$taxonomy);
push @nodes,$tree2->make_species_branch($chimp,$taxonomy);

my ($homo_sapiens)=$tree1->get_leaves;

$tree1->splice($tree2);

push @nodes,$tree1->add_species($bonobo,$taxonomy);

my @taxa;
foreach my $leaf ($tree1->get_leaves) {
   push @taxa,$leaf->taxon;
}
print join(", ",@taxa)."\n";

@taxa=();
$tree1->remove_branch($homo_sapiens);
foreach my $leaf ($tree1->get_leaves) {
   push @taxa,$leaf->taxon;
}
print join(", ",@taxa)."\n";

FEEDBACK

See AUTHOR

AUTHOR - Dan Kortschak

Email kortschak@rsbs.anu.edu.au

CONTRIBUTORS

Mainly Jason Stajich

APPENDIX

The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _

new

Title   : new
Usage   : my $obj = new Bio::Taxonomy::Tree();
Function: Builds a new Bio::Taxonomy::Tree object 
Returns : Bio::Taxonomy::Tree
Args    : 

get_nodes

Title   : get_nodes
Usage   : my @nodes = $tree->get_nodes()
Function: Return list of Bio::Taxonomy::Taxon objects
Returns : array of Bio::Taxonomy::Taxon objects
Args    : (named values) hash with one value 
          order => 'b|breadth' first order or 'd|depth' first order

get_root_node

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::Taxonomy::Taxon object
Args    : none

set_root_node

Title   : set_root_node
Usage   : $tree->set_root_node($node)
Function: Set the Root Node for the Tree
Returns : Bio::Taxonomy::Taxon
Args    : Bio::Taxonomy::Taxon

get_leaves

Title   : get_leaves
Usage   : my @nodes = $tree->get_leaves()
Function: Return list of Bio::Taxonomy::Taxon objects
Returns : array of Bio::Taxonomy::Taxon objects
Args    : 

make_species_branch

Title   : make_species_branch
Usage   : @nodes = $tree->make_species_branch($species,$taxonomy)
Function: Return list of Bio::Taxonomy::Taxon objects based on a Bio::Species object
Returns : array of Bio::Taxonomy::Taxon objects
Args    : Bio::Species and Bio::Taxonomy objects

make_branch

Title   : make_branch
Usage   : $tree->make_branch($node)
Function: Make a linear Bio::Taxonomy::Tree object from a leafish node
Returns :
Args    : Bio::Taxonomy::Taxon object

splice

Title   : splice
Usage   : @nodes = $tree->splice($tree)
Function: Return a of Bio::Taxonomy::Tree object that is a fusion of two
Returns : array of Bio::Taxonomy::Taxon added to tree
Args    : Bio::Taxonomy::Tree object

add_species

Title   : add_species
Usage   : @nodes = $tree->add_species($species,$taxonomy)
Function: Return a of Bio::Taxonomy::Tree object with a new species added
Returns : array of Bio::Taxonomy::Taxon added to tree
Args    : Bio::Species object

add_branch

Title   : add_branch
Usage   : $tree->add_branch($node,boolean)
Function: Return a of Bio::Taxonomy::Tree object with a new branch added
Returns : array of Bio::Taxonomy::Taxon objects of the resulting tree
Args    : Bio::Taxonomy::Taxon object
          boolean flag to force overwrite of descendent
            (see Bio::Node->add_Descendent)

remove_branch

Title   : remove_branch
Usage   : $tree->remove_branch($node)
Function: remove a branch up to the next multifurcation
Returns :
Args    : Bio::Taxonomy::Taxon object