コード例 #1
0
ファイル: test_fast_tree.py プロジェクト: yesimon/pycogent
 def test_weighted_unifrac_matrix(self):
     """weighted unifrac matrix should ret correct results for model tree"""
     # should match web site calculations
     envs = self.count_array
     bound_indices = bind_to_array(self.nodes, envs)
     sum_descendants(bound_indices)
     bl = self.branch_lengths
     tip_indices = [n._leaf_index for n in self.t.tips()]
     result = weighted_unifrac_matrix(bl, envs, tip_indices)
     exp = array([[0, 9.1, 4.5], [9.1, 0, 6.4], [4.5, 6.4, 0]])
     assert (abs(result - exp)).max() < 0.001
     # should work with branch length corrections
     td = bl.copy()[:, newaxis]
     tip_bindings = bind_to_parent_array(self.t, td)
     tips = [n._leaf_index for n in self.t.tips()]
     tip_distances(td, tip_bindings, tips)
     result = weighted_unifrac_matrix(bl, envs, tip_indices, bl_correct=True, tip_distances=td)
     exp = array(
         [
             [0, 9.1 / 11.5, 4.5 / (10.5 + 1.0 / 3)],
             [9.1 / 11.5, 0, 6.4 / (11 + 1.0 / 3)],
             [4.5 / (10.5 + 1.0 / 3), 6.4 / (11 + 1.0 / 3), 0],
         ]
     )
     assert (abs(result - exp)).max() < 0.001
コード例 #2
0
    def test_weighted_one_sample(self):
        """weighted one sample should match weighted matrix"""
        #should match web site calculations
        envs = self.count_array
        bound_indices = bind_to_array(self.nodes, envs)
        sum_descendants(bound_indices)
        bl = self.branch_lengths
        tip_indices = [n._leaf_index for n in self.t.tips()]
        result = weighted_unifrac_matrix(bl, envs, tip_indices)
        for i in range(len(result)):
            one_sam_res = weighted_one_sample(i, bl, envs, tip_indices)
            self.assertEqual(result[i], one_sam_res)
            self.assertEqual(result[:,i], one_sam_res)

        #should work with branch length corrections
        td = bl.copy()[:,newaxis]
        tip_bindings = bind_to_parent_array(self.t, td)
        tips = [n._leaf_index for n in self.t.tips()]
        tip_distances(td, tip_bindings, tips)
        result = weighted_unifrac_matrix(bl, envs, tip_indices, bl_correct=True,
            tip_distances=td)
        for i in range(len(result)):
            one_sam_res = weighted_one_sample(i, bl, envs, tip_indices,
                bl_correct=True, tip_distances=td)
            self.assertEqual(result[i], one_sam_res)
            self.assertEqual(result[:,i], one_sam_res)
コード例 #3
0
ファイル: test_fast_tree.py プロジェクト: carze/clovr-base
 def test_weighted_unifrac_matrix(self):
     """weighted unifrac matrix should return correct results for model tree"""
     #should match web site calculations
     envs = self.count_array
     bound_indices = bind_to_array(self.nodes, envs)
     sum_descendants(bound_indices)
     bl = self.branch_lengths
     tip_indices = [n._leaf_index for n in self.t.tips()]
     result = weighted_unifrac_matrix(bl, envs, tip_indices)
     exp = array([[0, 9.1, 4.5], [9.1, 0, \
         6.4], [4.5, 6.4, 0]])
     assert (abs(result - exp)).max() < 0.001
     #should work with branch length corrections
     td = bl.copy()[:, newaxis]
     tip_bindings = bind_to_parent_array(self.t, td)
     tips = [n._leaf_index for n in self.t.tips()]
     tip_distances(td, tip_bindings, tips)
     result = weighted_unifrac_matrix(bl,
                                      envs,
                                      tip_indices,
                                      bl_correct=True,
                                      tip_distances=td)
     exp = array([[0, 9.1/11.5, 4.5/(10.5+1./3)], [9.1/11.5, 0, \
         6.4/(11+1./3)], [4.5/(10.5+1./3), 6.4/(11+1./3), 0]])
     assert (abs(result - exp)).max() < 0.001
コード例 #4
0
ファイル: test_fast_tree.py プロジェクト: yatisht/pycogent
    def test_weighted_one_sample(self):
        """weighted one sample should match weighted matrix"""
        #should match web site calculations
        envs = self.count_array
        bound_indices = bind_to_array(self.nodes, envs)
        sum_descendants(bound_indices)
        bl = self.branch_lengths
        tip_indices = [n._leaf_index for n in self.t.tips()]
        result = weighted_unifrac_matrix(bl, envs, tip_indices)
        for i in range(len(result)):
            one_sam_res = weighted_one_sample(i, bl, envs, tip_indices)
            self.assertEqual(result[i], one_sam_res)
            self.assertEqual(result[:, i], one_sam_res)

        #should work with branch length corrections
        td = bl.copy()[:, newaxis]
        tip_bindings = bind_to_parent_array(self.t, td)
        tips = [n._leaf_index for n in self.t.tips()]
        tip_distances(td, tip_bindings, tips)
        result = weighted_unifrac_matrix(bl,
                                         envs,
                                         tip_indices,
                                         bl_correct=True,
                                         tip_distances=td)
        for i in range(len(result)):
            one_sam_res = weighted_one_sample(i,
                                              bl,
                                              envs,
                                              tip_indices,
                                              bl_correct=True,
                                              tip_distances=td)
            self.assertEqual(result[i], one_sam_res)
            self.assertEqual(result[:, i], one_sam_res)