def test_multiscale_properties(): """Test adding labels with multiscale properties.""" np.random.seed(0) data0 = np.random.randint(20, size=(10, 15)) data1 = data0[::2, ::2] data = [data0, data1] layer = Labels(data) assert isinstance(layer.properties, dict) assert len(layer.properties) == 0 properties = {'class': ['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) assert layer.properties == properties assert layer._label_index == label_index current_label = layer.get_value(layer.coordinates)[1] layer_message = layer.get_status(layer.position) assert layer_message.endswith(f'Class {current_label - 1}') properties = {'class': ['Background']} layer = Labels(data, properties=properties) layer_message = layer.get_status(layer.position) 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(layer.position) assert layer._label_index == label_index assert layer_message.endswith('Class 12')
def test_get_status_with_custom_index(): """See https://github.com/napari/napari/issues/3811""" data = np.zeros((10, 10), dtype=np.uint8) data[2:5, 2:-2] = 1 data[5:-2, 2:-2] = 2 layer = Labels(data) df = pd.DataFrame( {'text1': [1, 3], 'text2': [7, -2], 'index': [1, 2]}, index=[1, 2] ) layer.properties = df assert layer.get_status((0, 0)) == 'Labels [0 0]: 0; [No Properties]' assert layer.get_status((3, 3)) == 'Labels [3 3]: 1; text1: 1, text2: 7' assert layer.get_status((6, 6)) == 'Labels [6 6]: 2; text1: 3, text2: -2'
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')
def test_message(): """Test converting value and coords to message.""" np.random.seed(0) data = np.random.randint(20, size=(10, 15)) layer = Labels(data) msg = layer.get_status(layer.position) assert type(msg) == str