def test_value(): """Test getting the value of the data at the current coordinates.""" np.random.seed(0) data = np.random.randint(20, size=(10, 15)) layer = Labels(data) value = layer.get_value() assert layer.coordinates == (0, 0) assert value == data[0, 0]
def test_value_3d(position, view_direction, dims_displayed, world): """get_value should return label value in 3D""" data = np.zeros((20, 20, 20), dtype=int) data[0:10, 0:10, 0:10] = 1 layer = Labels(data) layer._slice_dims([0, 0, 0], ndisplay=3) value = layer.get_value( position, view_direction=view_direction, dims_displayed=dims_displayed, world=world, ) assert value == 1
def test_properties(): """Test adding labels with properties.""" np.random.seed(0) data = np.random.randint(20, size=(10, 15)) layer = Labels(data) assert isinstance(layer.properties, dict) assert len(layer.properties) == 0 properties = { 'class': np.array(['Background'] + [f'Class {i}' for i in range(20)]) } label_index = {i: i for i in range(len(properties['class']))} layer = Labels(data, properties=properties) assert isinstance(layer.properties, dict) np.testing.assert_equal(layer.properties, properties) assert layer._label_index == label_index layer = Labels(data) layer.properties = properties assert isinstance(layer.properties, dict) np.testing.assert_equal(layer.properties, properties) assert layer._label_index == label_index current_label = layer.get_value((0, 0)) layer_message = layer.get_status((0, 0)) assert layer_message.endswith(f'Class {current_label - 1}') properties = {'class': ['Background']} layer = Labels(data, properties=properties) layer_message = layer.get_status((0, 0)) assert layer_message.endswith("[No Properties]") properties = {'class': ['Background', 'Class 12'], 'index': [0, 12]} label_index = {0: 0, 12: 1} layer = Labels(data, properties=properties) layer_message = layer.get_status((0, 0)) assert layer._label_index == label_index assert layer_message.endswith('Class 12') layer = Labels(data) layer.properties = properties layer_message = layer.get_status((0, 0)) assert layer._label_index == label_index assert layer_message.endswith('Class 12') layer = Labels(data) layer.properties = pd.DataFrame(properties) layer_message = layer.get_status((0, 0)) assert layer._label_index == label_index assert layer_message.endswith('Class 12')
class Labels2DSuite: """Benchmarks for the Labels layer with 2D data""" params = [2**i for i in range(4, 13)] def setup(self, n): np.random.seed(0) self.data = np.random.randint(20, size=(n, n)) self.layer = Labels(self.data) def time_create_layer(self, n): """Time to create layer.""" Labels(self.data) def time_set_view_slice(self, n): """Time to set view slice.""" self.layer._set_view_slice() def time_refresh(self, n): """Time to refresh view.""" self.layer.refresh() def time_update_thumbnail(self, n): """Time to update thumbnail.""" self.layer._update_thumbnail() def time_get_value(self, n): """Time to get current value.""" self.layer.get_value() def time_save_history(self, n): """Time to save history.""" self.layer._save_history() def time_raw_to_displayed(self, n): """Time to convert raw to displayed.""" self.layer._raw_to_displayed(self.layer._data_raw) def time_paint_square(self, n): """Time to paint square.""" self.layer.brush_shape = 'square' self.layer.paint(self.layer.coordinates, self.layer.selected_label) def time_paint_circle(self, n): """Time to paint circle.""" self.layer.brush_shape = 'circle' self.layer.paint(self.layer.coordinates, self.layer.selected_label) def time_fill(self, n): """Time to fill.""" self.layer.fill( self.layer.coordinates, self.layer._value, self.layer.selected_label, ) def mem_layer(self, n): """Memory used by layer.""" return self.layer def mem_data(self, n): """Memory used by raw data.""" return self.data