def test_negative_label_slicing(): """Test negative label color doesn't change during slicing.""" data = np.array([[[0, 1], [-1, -1]], [[100, 100], [-1, -2]]]) layer = Labels(data) assert tuple(layer.get_color(1)) != tuple(layer.get_color(-1)) layer._dims_point = (1, 0, 0) layer._set_view_slice() assert tuple(layer.get_color(-1)) != tuple(layer.get_color(100)) assert tuple(layer.get_color(-2)) != tuple(layer.get_color(100))
def test_label_color(): """Test getting label color.""" np.random.seed(0) data = np.random.randint(20, size=(10, 15)) layer = Labels(data) col = layer.get_color(0) assert col is None col = layer.get_color(1) assert len(col) == 4
def test_custom_color_dict(): """Test custom color dict.""" np.random.seed(0) data = np.random.randint(20, size=(10, 15)) layer = Labels(data, color={1: 'white'}) # test with custom color dict assert type(layer.get_color(2)) == np.ndarray assert type(layer.get_color(1)) == np.ndarray assert (layer.get_color(1) == np.array([1.0, 1.0, 1.0, 1.0])).all() # test disable custom color dict # should not initialize as white since we are using random.seed layer.color_mode = 'auto' assert not (layer.get_color(1) == np.array([1.0, 1.0, 1.0, 1.0])).all()
def test_selecting_label(): """Test selecting label.""" np.random.seed(0) data = np.random.randint(20, size=(10, 15)) layer = Labels(data) assert layer.selected_label == 1 assert (layer._selected_color == layer.get_color(1)).all layer.selected_label = 1 assert layer.selected_label == 1 assert len(layer._selected_color) == 4
def test_negative_label_doesnt_flicker(): data = np.array([ [[0, 5], [0, 5]], [[-1, 5], [-1, 5]], [[-1, 6], [-1, 6]], ]) layer = Labels(data) layer._dims_point = (1, 0, 0) layer._set_view_slice() # this is expected to fail: -1 doesn't trigger an index error in # layer._all_vals, it instead just wraps to 5, the previous max label. assert tuple(layer.get_color(-1)) != tuple(layer.get_color(5)) minus_one_color_original = tuple(layer.get_color(-1)) layer.dims_point = (2, 0, 0) layer._set_view_slice() # this is also expected to fail: when we switch layers, we see the 6 # label, which causes an index error, which triggers a recalculation of # the label colors. Now -1 is seen so it is taken into account in the # indexing calculation, and changes color assert tuple(layer.get_color(-1)) == minus_one_color_original
def test_show_selected_label(): """Test color of labels when filtering to selected labels""" np.random.seed(0) data = np.random.randint(20, size=(10, 15)) layer = Labels(data) original_color = layer.get_color(1) layer.show_selected_label = True original_background_color = layer.get_color(layer._background_label) none_color = layer.get_color(None) layer.selected_label = 1 # color of selected label has not changed assert np.allclose(layer.get_color(layer.selected_label), original_color) current_background_color = layer.get_color(layer._background_label) # color of background is background color assert current_background_color == original_background_color # color of all others is none color other_labels = np.unique(layer.data)[2:] other_colors = np.array( list(map(lambda x: layer.get_color(x), other_labels)) ) assert np.allclose(other_colors, none_color)