def test_tree_unweighted_normalized_pairwise_distance_query(self): num_edges_on_tree = combinatorics.num_edges_on_tree(num_leaves=len(self.tree.taxon_namespace), is_rooted=True) for taxon1 in self.tree.taxon_namespace: for taxon2 in self.tree.taxon_namespace: exp = self.reference_pdm_unweighted_table[taxon1.label, taxon2.label] / num_edges_on_tree obs2 = self.pdm.path_edge_count(taxon1, taxon2, is_normalize_by_tree_size=True) self.assertAlmostEqual(obs2, exp, 6) obs3 = self.pdm.distance( taxon1, taxon2, is_weighted_edge_distances=False, is_normalize_by_tree_size=True ) self.assertAlmostEqual(obs3, exp, 6)
def test_tree_unweighted_normalized_pairwise_distance_collection(self): # this test relies on populating the expected result list # in the *same order* as the function it is testing num_edges_on_tree = combinatorics.num_edges_on_tree(num_leaves=len(self.tree.taxon_namespace), is_rooted=True) exp_list = [] for taxon1, taxon2 in self.pdm.distinct_taxon_pair_iter(): exp = self.reference_pdm_unweighted_table[taxon1.label, taxon2.label] / num_edges_on_tree exp_list.append(exp) obs = self.pdm.distances(is_weighted_edge_distances=False, is_normalize_by_tree_size=True) self.assertEqual(len(obs), len(exp_list)) for obs, exp in zip(obs, exp_list): self.assertAlmostEqual(obs, exp, 6) self.assertAlmostEqual( self.pdm.sum_of_distances(is_weighted_edge_distances=False, is_normalize_by_tree_size=True), sum(exp_list), 6, )
def test_tree_num_edges(self): self.assertEqual( self.pdm._num_edges, combinatorics.num_edges_on_tree(num_leaves=len(self.tree.taxon_namespace), is_rooted=True), )