def test_selecting_points(): """Test selecting points.""" shape = (10, 2) np.random.seed(0) data = 20 * np.random.random(shape) layer = Points(data) layer.mode = 'select' data_to_select = {1, 2} layer.selected_data = data_to_select assert layer.selected_data == data_to_select # test switching to 3D layer._slice_dims(ndisplay=3) assert layer.selected_data == data_to_select # select different points while in 3D mode other_data_to_select = {0} layer.selected_data = other_data_to_select assert layer.selected_data == other_data_to_select # selection should persist when going back to 2D mode layer._slice_dims(ndisplay=2) assert layer.selected_data == other_data_to_select # selection should persist when switching between between select and pan_zoom layer.mode = 'pan_zoom' assert layer.selected_data == other_data_to_select layer.mode = 'select' assert layer.selected_data == other_data_to_select # add mode should clear the selection layer.mode = 'add' assert layer.selected_data == set()
def test_thumbnail_with_n_points_greater_than_max(): """Test thumbnail generation with n_points > _max_points_thumbnail see: https://github.com/napari/napari/pull/934 """ # 2D max_points = Points._max_points_thumbnail * 2 bigger_data = np.random.randint(10, 100, (max_points, 2)) big_layer = Points(bigger_data) big_layer._update_thumbnail() assert big_layer.thumbnail.shape == big_layer._thumbnail_shape # #3D bigger_data_3d = np.random.randint(10, 100, (max_points, 3)) bigger_layer_3d = Points(bigger_data_3d) bigger_layer_3d._slice_dims(ndisplay=3) bigger_layer_3d._update_thumbnail() assert bigger_layer_3d.thumbnail.shape == bigger_layer_3d._thumbnail_shape
def test_view_data(): coords = np.array([[0, 1, 1], [0, 2, 2], [1, 3, 3], [3, 3, 3]]) layer = Points(coords) layer._slice_dims([0, slice(None), slice(None)]) assert np.all( layer._view_data == coords[np.ix_([0, 1], layer._dims_displayed)]) layer._slice_dims([1, slice(None), slice(None)]) assert np.all( layer._view_data == coords[np.ix_([2], layer._dims_displayed)]) layer._slice_dims([1, slice(None), slice(None)], ndisplay=3) assert np.all(layer._view_data == coords)
def test_view_size(): coords = np.array([[0, 1, 1], [0, 2, 2], [1, 3, 3], [3, 3, 3]]) sizes = np.array([[3, 5, 5], [3, 5, 5], [3, 3, 3], [2, 2, 3]]) layer = Points(coords, size=sizes, n_dimensional=False) layer._slice_dims([0, slice(None), slice(None)]) assert np.all( layer._view_size == sizes[np.ix_([0, 1], layer.dims.displayed)]) layer._slice_dims([1, slice(None), slice(None)]) assert np.all(layer._view_size == sizes[np.ix_([2], layer.dims.displayed)]) layer.n_dimensional = True assert len(layer._view_size) == 3 # test a slice with no points layer.n_dimensional = False layer._slice_dims([2, slice(None), slice(None)]) assert np.all(layer._view_size == [])
def test_view_colors(): coords = [[0, 1, 1], [0, 2, 2], [1, 3, 3], [3, 3, 3]] face_color = np.array([[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 1], [0, 0, 1, 1]]) edge_color = np.array([[0, 0, 1, 1], [1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 1]]) layer = Points(coords, face_color=face_color, edge_color=edge_color) layer._slice_dims([0, slice(None), slice(None)]) assert np.all(layer._view_face_color == face_color[[0, 1]]) assert np.all(layer._view_edge_color == edge_color[[0, 1]]) layer._slice_dims([1, slice(None), slice(None)]) assert np.all(layer._view_face_color == face_color[[2]]) assert np.all(layer._view_edge_color == edge_color[[2]]) # view colors should return empty array if there are no points layer._slice_dims([2, slice(None), slice(None)]) assert len(layer._view_face_color) == 0 assert len(layer._view_edge_color) == 0