t/*: remove "use lib '.'" and t/lib/Error.pm
[bioperl-live.git] / t / Tree / TreeStatistics.t
blobe0ac8308e00999336f9f5e5d02e094a5c00df54c
1 # -*-Perl-*- Test Harness script for Bioperl
2 # $Id: RandomTreeFactory.t 11525 2007-06-27 10:16:38Z sendu $
4 use strict;
6 BEGIN { 
7     use Bio::Root::Test;
8     
9     test_begin(-tests => 42);
11     use_ok('Bio::TreeIO');
12     use_ok('Bio::Tree::Statistics');
16 use Data::Dumper;
17 my $in = Bio::TreeIO->new(-format => 'nexus',
18                           -file   => test_input_file('traittree.nexus'));
19 my $tree = $in->next_tree;
20 my $node = $tree->find_node(-id => 'N14');
23 my $stats = Bio::Tree::Statistics->new();
24 is $stats->cherries($tree), 8, 'cherries';
25 is $stats->cherries($tree, $node), 4, 'cherries';
27 # traits
28 my $key = $tree->add_trait(test_input_file('traits.tab'), 4);
29 is $key, undef, 'read traits'; # exceeded column number
31 $key = $tree->add_trait(test_input_file('traits.tab'), 2, 1);
32 is $key, 'disp'; # one leaf has a missing trait value, but ignore it
34 $key = $tree->add_trait(test_input_file('traits.tab'), 3);
35 is $key, 'intermediate';
37 is $stats->ps($tree, $key), 4, 'parsimony score';
38 is $stats->ps($tree, $key, $node), 1, 'subtree parsimony score';
40 my $node_i = $tree->find_node(-id => 'N10');
41 my @values = sort $node_i->get_tag_values('ps_trait');
42 ok eq_set (\@values, ['red', 'blue']), 'ps value';
44 is $stats->fitch_down($tree), 1, 'fitch_down';
45 is $node_i->get_tag_values('ps_trait'), 'red', 'ps value after fitch_down';
49 $node_i = $tree->find_node(-id => '2'); # leaf
50 is $stats->persistence($tree, $node_i), 1, 'persistence of a leaf';
52 $node_i = $tree->find_node(-id => 'N1');
53 is $stats->persistence($tree, $node_i), 1, 'persistence of an internal node value ';
55 $node_i = $tree->find_node(-id => 'N13');
56 is $stats->persistence($tree, $node_i), 3,  'persistence of an internal node value';
58 $node_i = $tree->find_node(-id => 'N6');
59 is $stats->persistence($tree, $node_i), 2,  'persistence of an internal node value';
61 my $value;
63 $node_i = $tree->find_node(-id => '1');
64 is $stats->count_subclusters($tree, $node_i), 0,  'leaf node: number of clusters = 0 ';
66 $node_i = $tree->find_node(-id => 'N3');
67 is $stats->count_subclusters($tree, $node_i), 1,  'number of clusters ';
69 $node_i = $tree->find_node(-id => 'N14');
70 is $stats->count_subclusters($tree, $node_i), 1,  'number of clusters ';
72 $node_i = $tree->find_node(-id => 'N7');
73 is $stats->count_subclusters($tree, $node_i), 2,  'number of clusters ';
77 $node_i = $tree->find_node(-id => 'N12');
78 is $stats->count_leaves($tree, $node_i), 2,  'number of leaves in phylotype ';
80 $node_i = $tree->find_node(-id => 'N13');
81 is $stats->count_leaves($tree, $node_i), 4,  'number of leaves in phylotype ';
83 $node_i = $tree->find_node(-id => 'N14');
84 is $stats->count_leaves($tree, $node_i), 6,  'number of leaves in phylotype ';
86 $node_i = $tree->find_node(-id => 'N7');
87 is $stats->count_leaves($tree, $node_i), 6,  'number of leaves in phylotype ';
91 $node_i = $tree->find_node(-id => 'N4');
92 is $stats->phylotype_length($tree, $node_i), 1,  'phylotype length';
94 $node_i = $tree->find_node(-id => 'N6');
95 is $stats->phylotype_length($tree, $node_i), 5,  'phylotype length';
97 $node_i = $tree->find_node(-id => 'N7');
98 is $stats->phylotype_length($tree, $node_i), 12,  'phylotype length';
100 $node_i = $tree->find_node(-id => 'N13');
101 is $stats->phylotype_length($tree, $node_i), 6,  'phylotype length';
103 $node_i = $tree->find_node(-id => 'N14');
104 is $stats->phylotype_length($tree, $node_i), 11,  'phylotype length';
107 $node_i = $tree->find_node(-id => 'N4');
108 is $stats->sum_of_leaf_distances($tree, $node_i), 1,  'sum of leaf distances';
110 $node_i = $tree->find_node(-id => 'N6');
111 is $stats->sum_of_leaf_distances($tree, $node_i), 6,  'sum of leaf distances';
113 $node_i = $tree->find_node(-id => 'N7');
114 is $stats->sum_of_leaf_distances($tree, $node_i), 18,  'sum of leaf distances';
116 $node_i = $tree->find_node(-id => 'N13');
117 is $stats->sum_of_leaf_distances($tree, $node_i), 8,  'sum of leaf distances';
119 $node_i = $tree->find_node(-id => 'N14');
120 is $stats->sum_of_leaf_distances($tree, $node_i), 18,  'sum of leaf distances';
124 is sprintf ("%.3f", $stats->genetic_diversity($tree, $node_i)), '3.000',  'genetic diversity'; 
126 is sprintf ("%.3f", $stats->statratio($tree, $node_i)), '0.333',  'separation'; 
129 is $stats->ai($tree, $key), 0.628906, 'association index';
130 is $stats->ai($tree, $key, $node), 0.062500, 'subtree association index';
132 my $mc = $stats->mc($tree, $key);
133 is ($mc->{blue}, 2, 'monophyletic clade size');
134 is ($mc->{red}, 4, 'monophyletic clade size');
135 $node = $tree->find_node(-id => 'N10');
136 $mc = $stats->mc($tree, $key, $node);
137 is ($mc->{blue}, 2, 'monophyletic clade size');
138 is ($mc->{red}, 2, 'monophyletic clade size');