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),
     )