class WorldTest(TestCase): def setUp(self): ev.events self.world = World() self.world.register_listener(ev) def tearDown(self): self.world.unregister_listener(ev) ev.events del self.world def test_world_objects(self): wo = WorldObject(name='o', data=1) assert wo.name == 'o' assert wo.data == 1 def test_world(self): obj = self.world.add(1, 'a') events = ev.events self.check_events(events, names=['world_object_changed'], values={0: {0: self.world, 1: None, 2: obj}} ) attribute_dict = dict(name='attr1', value=1, interface='IInt', label="Attribute 1") final_dict = dict(name='attr1', value=1, interface='IInt', label="Attribute 1", constraints=None) obj.set_attribute(**attribute_dict) events = ev.events self.check_events(events, names=['world_object_item_changed'], values={0: {0: self.world, 1: obj, 2: "attribute", 3: None, 4: final_dict}} ) assert obj['attr1'] == attribute_dict['value']
class WorldTest(TestCase): def setUp(self): ev.events self.world = World() self.world.register_listener(ev) def tearDown(self): self.world.unregister_listener(ev) ev.events del self.world def test_world_objects(self): wo = WorldObject(name='o', data=1) assert wo.name == 'o' assert wo.data == 1 def test_world(self): obj = self.world.add(1, 'a') events = ev.events self.check_events(events, names=['world_object_changed'], values={0: { 0: self.world, 1: None, 2: obj }}) attribute_dict = dict(name='attr1', value=1, interface='IInt', label="Attribute 1") final_dict = dict(name='attr1', value=1, interface='IInt', label="Attribute 1", constraints=None) obj.set_attribute(**attribute_dict) events = ev.events self.check_events(events, names=['world_object_item_changed'], values={ 0: { 0: self.world, 1: obj, 2: "attribute", 3: None, 4: final_dict } }) assert obj['attr1'] == attribute_dict['value']
def nuclei_active_region_segmentation(input_img, positions, omega_energies=dict(intensity=1.0, gradient=1.5, smoothness=10000.0), intensity_min=20000., iterations=10, display=False): """ 3D extension of the multiple region extension of the binary level set implementation """ segmentation_start_time = time() print "--> Active region segmentation (", len(positions), " regions )" from copy import deepcopy reference_img = deepcopy(input_img) size = np.array(reference_img.shape) voxelsize = np.array(reference_img.voxelsize) if display: from openalea.core.world import World world = World() if omega_energies.has_key('gradient'): from scipy.ndimage.filters import gaussian_gradient_magnitude start_time = time() print " --> Computing image gradient" gradient = gaussian_gradient_magnitude( np.array(reference_img, np.float64), sigma=0.5 / np.array(reference_img.voxelsize)) gradient_img = SpatialImage(np.array(gradient, np.uint16), voxelsize=reference_img.voxelsize) end_time = time() print " <-- Computing image gradient [", end_time - start_time, " s]" start_time = time() print " --> Creating seed image" print positions.keys() seed_img = seed_image_from_points(size, voxelsize, positions, point_radius=1.0) regions_img = np.copy(seed_img) end_time = time() print " <-- Creating seed image (", len(np.unique( regions_img)) - 1, " regions ) [", end_time - start_time, " s]" if display: world.add(seed_img, 'active_regions_seeds', colormap='glasbey', voxelsize=voxelsize, alphamap='constant', volume=False, cut_planes=True) raw_input() for iteration in xrange(iterations): start_time = time() print " --> Active region energy gradient descent : iteration", iteration, " (", len( np.unique(regions_img)) - 1, " regions )" previous_regions_img = np.copy(regions_img) regions_img = active_regions_energy_gradient_descent( regions_img, reference_img, omega_energies=omega_energies, intensity_min=intensity_min, gradient_img=gradient) change = ((regions_img - previous_regions_img) != 0.).sum() / float( (regions_img > 1.).sum()) end_time = time() print " --> Active region energy gradient descent : iteration", iteration, " (Evolution : ", int( 100 * change), " %) ", "[", end_time - start_time, " s]" if display: world.add(regions_img, 'active_regions', colormap='invert_grey', voxelsize=voxelsize, intensity_range=(1, 2)) segmented_img = SpatialImage(regions_img, voxelsize=reference_img.voxelsize) if display: world.add(segmented_img, 'active_regions', colormap='glasbey', voxelsize=voxelsize, alphamap='constant') raw_input() segmentation_end_time = time() print "<-- Active region segmentation (", len( np.unique(segmented_img) ) - 1, " regions ) [", segmentation_end_time - segmentation_start_time, " s]" return segmented_img