def test_get_value_ray_3d_transposed(): """Test using _get_value_ray to interrogate labels in 3D with the dimensions trasposed. """ # make a mock mouse event mouse_event = MouseEvent( pos=[25, 25], position=[10, 5, 5, 1], dims_point=[0, 0, 0, 1], dims_displayed=[1, 3, 2], view_direction=[1, 0, 0, 0], ) data = np.zeros((5, 20, 20, 20), dtype=int) data[1, 0:10, 0:10, 0:10] = 1 labels = Labels(data, scale=(1, 2, 1, 1), translate=(0, 5, 5, 5)) # set the dims to the slice with labels labels._slice_dims((1, 0, 0, 0), ndisplay=3, order=(0, 1, 3, 2)) labels.set_view_slice() value = labels._get_value_ray( start_point=np.array([1, 0, 5, 5]), end_point=np.array([1, 20, 5, 5]), dims_displayed=mouse_event.dims_displayed, ) assert value == 1
def test_get_value_ray_2d(): """_get_value_ray currently only returns None in 2D (i.e., it shouldn't be used for 2D). """ # make a mock mouse event mouse_event = MouseEvent( pos=[25, 25], position=[5, 5], dims_point=[1, 10, 0, 0], dims_displayed=[2, 3], view_direction=[1, 0, 0], ) data = np.zeros((5, 20, 20, 20), dtype=int) data[1, 0:10, 0:10, 0:10] = 1 labels = Labels(data, scale=(1, 2, 1, 1), translate=(5, 5, 5)) # set the dims to the slice with labels, but 2D labels._slice_dims([1, 10, 0, 0], ndisplay=2) value = labels._get_value_ray( start_point=np.empty([]), end_point=np.empty([]), dims_displayed=mouse_event.dims_displayed, ) assert value is None
def test_get_value_ray_3d(): """Test using _get_value_ray to interrogate labels in 3D""" # make a mock mouse event mouse_event = MouseEvent( pos=[25, 25], position=[10, 5, 5], dims_point=[1, 0, 0, 0], dims_displayed=[1, 2, 3], view_direction=[1, 0, 0], ) data = np.zeros((5, 20, 20, 20), dtype=int) data[1, 0:10, 0:10, 0:10] = 1 labels = Labels(data, scale=(1, 2, 1, 1), translate=(5, 5, 5)) # set the dims to the slice with labels labels._slice_dims([1, 0, 0, 0], ndisplay=3) value = labels._get_value_ray( start_point=np.array([1, 0, 5, 5]), end_point=np.array([1, 20, 5, 5]), dims_displayed=mouse_event.dims_displayed, ) assert value == 1 # check with a ray that only goes through background value = labels._get_value_ray( start_point=np.array([1, 0, 15, 15]), end_point=np.array([1, 20, 15, 15]), dims_displayed=mouse_event.dims_displayed, ) assert value is None # set the dims to a slice without labels labels._slice_dims([0, 0, 0, 0], ndisplay=3) value = labels._get_value_ray( start_point=np.array([0, 0, 5, 5]), end_point=np.array([0, 20, 5, 5]), dims_displayed=mouse_event.dims_displayed, ) assert value is None