def test_03_06_edges_of_objects(self):
     r = np.random.RandomState()
     r.seed(36)
     i, j = np.mgrid[-20:21, -20:21]
     labels = ((i > -19) & (i < 19) & (j > -19) & (j < 19)).astype(int)
     centers = np.zeros(labels.shape, int)
     centers[(i > -5) * (i < 5) & (j > -5) & (j < 5)] = 1
     image = r.uniform(size=labels.shape)
     m = self.run_module(image, labels, 
                         center_labels=centers,
                         center_choice = M.C_EDGES_OF_OTHER,
                         bin_count = 4,
                         maximum_radius = 8,
                         wants_scaled=False)
     
     _, d_from_center = M.propagate(np.zeros(labels.shape),
                                    centers,
                                    (labels > 0), 1)
     good_mask = (labels > 0) & (centers == 0)
     d_from_center = d_from_center[good_mask]
     bins = (d_from_center / 2).astype(int)
     bins[bins > 4] = 4
     bin_counts = np.bincount(bins)
     image_sums = np.bincount(bins, image[good_mask])
     frac_at_d = image_sums / np.sum(image_sums)
     for i in range(1,6):
         data = m.get_current_measurement(OBJECT_NAME,
                                          feature_frac_at_d(i, 4))
         self.assertEqual(len(data), 1)
         self.assertAlmostEqual(data[0], frac_at_d[i-1])
Esempio n. 2
0
    def test_03_06_edges_of_objects(self):
        r = np.random.RandomState()
        r.seed(36)
        i, j = np.mgrid[-20:21, -20:21]
        labels = ((i > -19) & (i < 19) & (j > -19) & (j < 19)).astype(int)
        centers = np.zeros(labels.shape, int)
        centers[(i > -5) * (i < 5) & (j > -5) & (j < 5)] = 1
        image = r.uniform(size=labels.shape)
        m = self.run_module(image,
                            labels,
                            center_labels=centers,
                            center_choice=M.C_EDGES_OF_OTHER,
                            bin_count=4,
                            maximum_radius=8,
                            wants_scaled=False)

        _, d_from_center = M.propagate(np.zeros(labels.shape), centers,
                                       (labels > 0), 1)
        good_mask = (labels > 0) & (centers == 0)
        d_from_center = d_from_center[good_mask]
        bins = (d_from_center / 2).astype(int)
        bins[bins > 4] = 4
        bin_counts = np.bincount(bins)
        image_sums = np.bincount(bins, image[good_mask])
        frac_at_d = image_sums / np.sum(image_sums)
        for i in range(1, 6):
            data = m.get_current_measurement(OBJECT_NAME,
                                             feature_frac_at_d(i, 4))
            self.assertEqual(len(data), 1)
            self.assertAlmostEqual(data[0], frac_at_d[i - 1])