[Bioperl-l] scale branch lengths of a tree to sum 1

Albert Vilella avilella at gmail.com
Fri Oct 27 09:39:41 EDT 2006


I respond to myself: I think I found the way:

my $tree = $treeio->next_tree;
my $total_branch_length = 0;
foreach my $node ($tree->get_nodes) {
    $total_branch_length += $node->branch_length;
}
foreach my $node ($tree->get_nodes) {
    my $branch_length = $node->branch_length;
    next unless (defined($branch_length));
    $node->branch_length($branch_length/$total_branch_length);
    1;
}

my $new_branch_length;
foreach my $node ($tree->get_nodes) {
    $new_branch_length += $node->branch_length;
}
1;

On 10/27/06, Albert Vilella <avilella at gmail.com> wrote:
> Hi all,
>
> I am in need of a method that would scale the different branch lengths
> of a tree so that after the scaling they all sum up to exactly 1.
>
> Any pointers? Has anyone done that before?
>
> Thanks in advance,
>
>     Albert.
>


More information about the Bioperl-l mailing list