def test_size_with_arrays(): """Test setting size with arrays.""" shape = (10, 2) np.random.seed(0) data = 20 * np.random.random(shape) layer = Points(data) sizes = 5 * np.random.random(shape) layer.size = sizes assert np.all(layer.size == sizes) # Test broadcasting of sizes sizes = [5, 5] layer.size = sizes assert np.all(layer.size[0] == sizes) # Create new layer with new size array data sizes = 5 * np.random.random(shape) layer = Points(data, size=sizes) assert layer.current_size == 10 assert layer.size.shape == shape assert np.all(layer.size == sizes) # Create new layer with new size array data sizes = [5, 5] layer = Points(data, size=sizes) assert layer.current_size == 10 assert layer.size.shape == shape assert np.all(layer.size[0] == sizes) # Add new point, should have new size coord = [18, 18] layer.current_size = 13 layer.add(coord) assert layer.size.shape == (11, 2) assert np.unique(layer.size[:10])[0] == 5 assert np.all(layer.size[10] == [13, 13]) # Select data and change size layer.selected_data = [0, 1] assert layer.current_size == 5 layer.current_size = 16 assert layer.size.shape == (11, 2) assert np.unique(layer.size[2:10])[0] == 5 assert np.unique(layer.size[:2])[0] == 16 # Check removing data adjusts colors correctly layer.selected_data = [0, 2] layer.remove_selected() assert len(layer.data) == 9 assert len(layer.size) == 9 assert np.all(layer.size[0] == [16, 16]) assert np.all(layer.size[1] == [5, 5])
def test_size(): """Test setting size with scalar.""" shape = (10, 2) np.random.seed(0) data = 20 * np.random.random(shape) layer = Points(data) assert layer.current_size == 10 assert layer.size.shape == shape assert np.unique(layer.size)[0] == 10 # Add a new point, it should get current size coord = [17, 17] layer.add(coord) assert layer.size.shape == (11, 2) assert np.unique(layer.size)[0] == 10 # Setting size affects newly added points not current points layer.current_size = 20 assert layer.current_size == 20 assert layer.size.shape == (11, 2) assert np.unique(layer.size)[0] == 10 # Add new point, should have new size coord = [18, 18] layer.add(coord) assert layer.size.shape == (12, 2) assert np.unique(layer.size[:11])[0] == 10 assert np.all(layer.size[11] == [20, 20]) # Select data and change size layer.selected_data = [0, 1] assert layer.current_size == 10 layer.current_size = 16 assert layer.size.shape == (12, 2) assert np.unique(layer.size[2:11])[0] == 10 assert np.unique(layer.size[:2])[0] == 16 # Select data and size changes layer.selected_data = [11] assert layer.current_size == 20 # Create new layer with new size data layer = Points(data, size=15) assert layer.current_size == 15 assert layer.size.shape == shape assert np.unique(layer.size)[0] == 15
def test_size_with_3D_arrays(): """Test setting size with 3D arrays.""" shape = (10, 3) np.random.seed(0) data = 20 * np.random.random(shape) data[:2, 0] = 0 layer = Points(data) assert layer.current_size == 10 assert layer.size.shape == shape assert np.unique(layer.size)[0] == 10 sizes = 5 * np.random.random(shape) layer.size = sizes assert np.all(layer.size == sizes) # Test broadcasting of sizes sizes = [1, 5, 5] layer.size = sizes assert np.all(layer.size[0] == sizes) # Create new layer with new size array data sizes = 5 * np.random.random(shape) layer = Points(data, size=sizes) assert layer.current_size == 10 assert layer.size.shape == shape assert np.all(layer.size == sizes) # Create new layer with new size array data sizes = [1, 5, 5] layer = Points(data, size=sizes) assert layer.current_size == 10 assert layer.size.shape == shape assert np.all(layer.size[0] == sizes) # Add new point, should have new size in last dim only coord = [4, 18, 18] layer.current_size = 13 layer.add(coord) assert layer.size.shape == (11, 3) assert np.unique(layer.size[:10, 1:])[0] == 5 assert np.all(layer.size[10] == [1, 13, 13]) # Select data and change size layer.selected_data = [0, 1] assert layer.current_size == 5 layer.current_size = 16 assert layer.size.shape == (11, 3) assert np.unique(layer.size[2:10, 1:])[0] == 5 assert np.all(layer.size[0] == [16, 16, 16]) # Create new 3D layer with new 2D points size data sizes = [0, 5, 5] layer = Points(data, size=sizes) assert layer.current_size == 10 assert layer.size.shape == shape assert np.all(layer.size[0] == sizes) # Add new point, should have new size only in last 2 dimensions coord = [4, 18, 18] layer.current_size = 13 layer.add(coord) assert layer.size.shape == (11, 3) assert np.all(layer.size[10] == [0, 13, 13]) # Select data and change size layer.selected_data = [0, 1] assert layer.current_size == 5 layer.current_size = 16 assert layer.size.shape == (11, 3) assert np.unique(layer.size[2:10, 1:])[0] == 5 assert np.all(layer.size[0] == [0, 16, 16])
def test_size_with_arrays(): """Test setting size with arrays.""" shape = (10, 2) np.random.seed(0) data = 20 * np.random.random(shape) layer = Points(data) sizes = 5 * np.random.random(shape) layer.size = sizes assert np.all(layer.size == sizes) # Test broadcasting of sizes sizes = [5, 5] layer.size = sizes assert np.all(layer.size[0] == sizes) # Test broadcasting of transposed sizes sizes = np.random.randint(low=1, high=5, size=shape[::-1]) layer.size = sizes np.testing.assert_equal(layer.size, sizes.T) # Un-broadcastable array should raise an exception bad_sizes = np.random.randint(low=1, high=5, size=(3, 8)) with pytest.raises(ValueError): layer.size = bad_sizes # Create new layer with new size array data sizes = 5 * np.random.random(shape) layer = Points(data, size=sizes) assert layer.current_size == 10 assert layer.size.shape == shape assert np.all(layer.size == sizes) # Create new layer with new size array data sizes = [5, 5] layer = Points(data, size=sizes) assert layer.current_size == 10 assert layer.size.shape == shape assert np.all(layer.size[0] == sizes) # Add new point, should have new size coord = [18, 18] layer.current_size = 13 layer.add(coord) assert layer.size.shape == (11, 2) assert np.unique(layer.size[:10])[0] == 5 assert np.all(layer.size[10] == [13, 13]) # Select data and change size layer.selected_data = {0, 1} assert layer.current_size == 5 layer.current_size = 16 assert layer.size.shape == (11, 2) assert np.unique(layer.size[2:10])[0] == 5 assert np.unique(layer.size[:2])[0] == 16 # Check removing data adjusts colors correctly layer.selected_data = {0, 2} layer.remove_selected() assert len(layer.data) == 9 assert len(layer.size) == 9 assert np.all(layer.size[0] == [16, 16]) assert np.all(layer.size[1] == [5, 5])