Bio-BPWrapper
view release on metacpan or search on metacpan
lib/Bio/BPWrapper/TreeManipulations.pm view on Meta::CPAN
$ref_node_state = &_intersect_or_union(&_fitch_parsimony($child[0], $index, \@colnames), $ref1);
} else { # both inodes
$ref_node_state = &_intersect_or_union(&_fitch_parsimony($child[0], $index, \@colnames), &_fitch_parsimony($child[1], $index, \@colnames));
}
}
$node->add_tag_value($colnames[$index], $ref_node_state);
return $ref_node_state;
}
}
sub _intersect_or_union { # from Perl Cookbook
my ($ref1, $ref2) = @_;
my (%union, %isect);
foreach my $e (@$ref1, @$ref2) {
$union{$e}++ && $isect{$e}++; # Perl Cookbook ideom
}
# warn Dumper(\%union, \%isect);
if (@$ref1 == @$ref2) { # (0) U (0); (0) U (1); (1) U (1); (0,1) U (0,1)
return [keys %union];
} else { # (0) I (0,1); (1) I (0,1)
return [keys %isect];
}
}
( run in 0.493 second using v1.01-cache-2.11-cpan-e9199f4ba4c )