[ensembl-dev] protein tree id and tagvalue

Moretti Sébastien sebastien.moretti at unil.ch
Wed Jul 4 14:37:15 BST 2012

There is still something wrong.
Each recursive call on split_tree calls always the same first children 
of the tree root, producing an infinite loop.

Here is part of my code:

For a particular tree:
my $tree_adaptor = $reg->get_adaptor('Multi', 'compara', 'GeneTree');
my $tree    = $tree_adaptor->fetch_by_root_id(487410); # example

my $tax_level = $tree->root->get_tagvalue('taxon_name');

# If tax_level is not Euteleostomi

sub split_tree {
     my ($tree) = @_;

     my @children = @{$tree->root->sorted_children()};
     for my $subtree ( @children ){
         my $tax_level = $tree->get_tagvalue('taxon_name');
         # If tax_level is not Euteleostomi

> "->root", called on any node of a tree, will return the root node of
> that tree. That's why you keep getting the taxon_name of the root in
> your example. Simply remove "->root" and directly use
> $subtree->get_tagvalue('taxon_name')
> If the sub-tree is not in the expected clade, you can recursively call
> $subtree->children
> Regards
> Matthieu

Sébastien Moretti
Department of Ecology and Evolution,
Biophore, University of Lausanne,
CH-1015 Lausanne, Switzerland
Tel.: +41 (21) 692 4221/4079
http://selectome.unil.ch/ http://bgee.unil.ch/

More information about the Dev mailing list