Skip to content

Commit

Permalink
Clear node depths when merging knuckle nodes
Browse files Browse the repository at this point in the history
Updates #814
  • Loading branch information
shawnlaffan committed Nov 25, 2022
1 parent c597809 commit 4529b4d
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
10 changes: 9 additions & 1 deletion lib/Biodiverse/Tree.pm
Original file line number Diff line number Diff line change
Expand Up @@ -2796,7 +2796,15 @@ sub merge_knuckle_nodes {
}

}
$self->delete_all_cached_values;

if (keys %deleted) {
$self->delete_all_cached_values;

# brute force
foreach my $node ($self->get_node_refs) {
$node->set_depth_aa (undef);
}
}

return scalar keys %deleted;
}
Expand Down
4 changes: 4 additions & 0 deletions lib/Biodiverse/TreeNode.pm
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,10 @@ sub set_depth {
$self->{NODE_VALUES}{DEPTH} = $args{depth};
}

sub set_depth_aa {
$_[0]->{NODE_VALUES}{DEPTH} = $_[1];
}

sub get_depth {
my $self = shift;

Expand Down
14 changes: 14 additions & 0 deletions t/13-Tree.t
Original file line number Diff line number Diff line change
Expand Up @@ -1334,6 +1334,20 @@ sub test_knuckle_nodes {

my $comp = $tree_with_knuckles->trees_are_same(comparison => $tree_no_knuckles);
ok $comp, 'got expected tree topology after clearing knuckles';

my $tree = get_tree_object_from_sample_data();
foreach my $name_num (qw /18 21 25/) {
$tree->delete_node(node => "Genus:sp$name_num");
}
foreach my $node ($tree->get_node_refs) {
$node->get_depth; # trigger depth storage
}
$tree->merge_knuckle_nodes;
foreach my $node ($tree->get_node_refs) {
next if $node->is_root_node;
my $parent = $node->get_parent;
is ($node->get_depth, $parent->get_depth + 1, "correct depth for " . $node->get_name);
}
}


Expand Down

0 comments on commit 4529b4d

Please sign in to comment.