def test_03_02_circle(self): '''Test the module on a uniform circle''' i,j = np.mgrid[-50:51,-50:51] labels = (np.sqrt(i*i+j*j) <= 40).astype(int) m, workspace = self.run_module( np.ones(labels.shape), labels, wants_workspace=True) assert isinstance(workspace, cpw.Workspace) bins = labels * (1 + (np.sqrt(i*i+j*j) / 10).astype(int)) for bin in range(1,5): data = m.get_current_measurement(OBJECT_NAME, feature_frac_at_d(bin, 4)) self.assertEqual(len(data), 1) area = (float(bin) * 2.0 - 1.0)/16.0 self.assertTrue(data[0] > area - .1) self.assertTrue(data[0] < area + .1) heatmap = workspace.image_set.get_image( HEAT_MAP_NAME + M.F_FRAC_AT_D).pixel_data data = data.astype(heatmap.dtype) self.assertEqual(mode(heatmap[bins == bin])[0], data[0]) data = m.get_current_measurement(OBJECT_NAME, feature_mean_frac(bin, 4)) self.assertEqual(len(data), 1) self.assertAlmostEqual(data[0], 1, 2) heatmap = workspace.image_set.get_image( HEAT_MAP_NAME + M.F_MEAN_FRAC).pixel_data data = data.astype(heatmap.dtype) self.assertEqual(mode(heatmap[bins == bin])[0], data[0]) data = m.get_current_measurement(OBJECT_NAME, feature_radial_cv(bin, 4)) self.assertEqual(len(data), 1) self.assertAlmostEqual(data[0], 0, 2) heatmap = workspace.image_set.get_image( HEAT_MAP_NAME + M.F_RADIAL_CV).pixel_data data = data.astype(heatmap.dtype) self.assertEqual(mode(heatmap[bins == bin])[0], data[0])
def test_03_07_two_circles(self): i,j = np.mgrid[-50:51,-50:51] i, j = [np.hstack((x,x)) for x in i, j] d = np.sqrt(i*i+j*j) labels = (d <= 40).astype(int) labels[:, (j.shape[1]/2):] *= 2 img = np.zeros(labels.shape) img[labels == 1] = 1 img[labels == 2] = d[labels == 2] / 40 m, workspace = self.run_module( img, labels, wants_workspace=True) assert isinstance(workspace, cpw.Workspace) bins = (labels != 0) * (1 + (np.sqrt(i*i+j*j) / 10).astype(int)) for bin in range(1,5): data = m.get_current_measurement(OBJECT_NAME, feature_frac_at_d(bin, 4)) self.assertEqual(len(data), 2) area = (float(bin) * 2.0 - 1.0)/16.0 bin_d = (float(bin) - .5) * 8 / 21 self.assertLess(np.abs(data[0] - area), .1) self.assertLess(np.abs(data[1] - area * bin_d), .1) heatmap = workspace.image_set.get_image( HEAT_MAP_NAME + M.F_FRAC_AT_D).pixel_data data = data.astype(heatmap.dtype) for label in 1, 2: mask = (bins == bin) & (labels == label) self.assertEqual(mode(heatmap[mask]), data[label-1]) data = m.get_current_measurement(OBJECT_NAME, feature_mean_frac(bin, 4)) self.assertEqual(len(data), 2) self.assertAlmostEqual(data[0], 1, 2) heatmap = workspace.image_set.get_image( HEAT_MAP_NAME + M.F_MEAN_FRAC).pixel_data data = data.astype(heatmap.dtype) for label in 1, 2: mask = (bins == bin) & (labels == label) self.assertEqual(mode(heatmap[mask]), data[label-1]) data = m.get_current_measurement(OBJECT_NAME, feature_radial_cv(bin, 4)) self.assertEqual(len(data), 2) self.assertAlmostEqual(data[0], 0, 2) heatmap = workspace.image_set.get_image( HEAT_MAP_NAME + M.F_RADIAL_CV).pixel_data data = data.astype(heatmap.dtype) for label in 1, 2: mask = (bins == bin) & (labels == label) self.assertEqual(mode(heatmap[mask]), data[label-1])
def test_01_02_two_modes(self): result = mode([1, 2, 2, 3, 3]) self.assertEqual(len(result), 2) self.assertIn(2, result) self.assertIn(3, result)
def test_01_01_single_mode(self): result = mode([1, 1, 2]) self.assertEqual(len(result), 1) self.assertEqual(result[0], 1)
def test_00_00_empty(self): self.assertEqual(len(mode(np.zeros(0))), 0)