Bio-MUST-Core
view release on metacpan or search on metacpan
);
# Cannot easily test because of varying date
# cmp_store(
# obj => $tree, method => 'store_nbs',
# file => "$base.nbs",
# test => 'wrote expected .grp file from .tre file',
# );
}
}
{
my $infile = file('test', 'seqid-grp-nbs.tre');
my $tree = $class->load($infile);
cmp_store(
obj => $tree, method => 'store_grp',
file => 'seqid-grp-nbs.grp',
test => 'wrote expected .grp file from .tre file (smart SeqIds)',
);
}
my @exp_long_branched_names = (
'Theileria_orientalis_869250@403221013',
'Theileria_orientalis_869250@697888408',
'Theileria_annulata_353154@84998812',
'Babesia_equi_1537102@428672781',
'Babesia_bigemina_5866@656183635',
'Babesia_microti_1133968@399217536',
);
{
my $infile = file('test', 'root_tree_names_unrooted.tre');
my $tree = $class->load($infile);
my $node = $tree->get_node_that_maximizes;
my @got_names = map { $_->get_name } @{ $node->get_terminals };
cmp_bag \@got_names, \@exp_long_branched_names,
'correctly identified the longest branch';
$tree->root_tree($node, -1, 1);
$tree->tree->ladderize(1);
cmp_store(
obj => $tree, method => 'store',
file => "root_tree_names_rooted_ladder.tre",
# Note: root_tree_names_rooted_ladder_hand.tre (made with Seaview)
# has no duplication of the node name around the new root ; this is both
# better and worse depending on the visualization format (see in iToL)
test => 'wrote expected .tre rooted on longest branch',
);
}
# { # TODO: fix this test as set_root_below adds zero-length branches
# my $infile = file('test', 'fake-unroot.tpl');
# my $tree = $class->load($infile);
# my ($node) = @{ $tree->tree->get_by_regular_expression(
# -value => 'get_name',
# -match => qr/Fagus/,
# ) };
# $tree->root_tree($node, -1, 1);
# # should not trigger node metadata backup
#
# my $exp_file = file('test', 'fake-rootF.tpl');
# cmp_ok $tree->newick_str, 'eq', $class->load($exp_file)->newick_str,
# 'got expected newick string after rerooting topology on Fagus';
# }
my @exp_rootings = (
[ 'Canis', 'fake-rootC.tre' ],
[ 'Amanita', 'fake-rootA.tre' ],
[ 'Elmera', 'fake-rootE.tre' ],
[ 'Dasypus', 'fake-rootD.tre' ],
[ 'Boletus', 'fake-rootB.tre' ],
[ 'Fagus', 'fake-rootF.tre' ],
[ 'Eutheria', 'fake-rootCD.tre' ],
[ 'Agaricomycetes', 'fake-rootAB.tre' ],
[ 'eudicotyledons', 'fake-rootEF.tre' ],
);
{
my $infile = file('test', 'fake-unroot.tre');
my $tree = $class->load($infile);
for my $exp_rooting (@exp_rootings) {
my ($taxon, $file) = @{$exp_rooting};
my @nodes = @{ $tree->tree->get_entities };
my ($node) = @{ $tree->tree->get_by_regular_expression(
-value => 'get_name',
-match => qr/$taxon/,
) };
$tree->root_tree($node, -1, 1);
cmp_store(
obj => $tree, method => 'store',
file => $file,
test => "wrote expected .tre rooted on $taxon",
);
}
}
{
for my $family ( qw(A B) ) {
my $infile = file('test', 'archaea-mcr-concat.tre');
my $tree = $class->load($infile);
my $filter = Bio::MUST::Core::SeqId->family_filter( [ "+$family" ] );
$tree->root_tree($filter, -1, 1);
# Note: both rooted trees should be equal for now
cmp_store(
obj => $tree, method => 'store',
file => "archaea-mcr-concat-root$family.tre",
test => "wrote expected .tre rooted on family $family",
);
}
}
# TODO: test this!
# {
( run in 1.440 second using v1.01-cache-2.11-cpan-39bf76dae61 )