def test_qt_properties_table(): # create a viewer with a points layer points_data = np.random.random((10, 2)) points_properties = {'probability': np.random.random((10, ))} layer_name = 'points_layer' viewer = napari.view_points(points_data, properties=points_properties, name=layer_name) properties_widget = QtPropertiesTable(viewer) assert isinstance(properties_widget, QWidget) assert properties_widget.selected_layer == layer_name
def viz_neurons_and_vasc(neuron_and_colls, vascular_data): with napari.gui_qt(): viewer = napari.view_points( vascular_data[:, :3], size=vascular_data[:, 3], face_color="magenta", name="vasculature", ) for (neuron, coll), neuron_name in zip(neuron_and_colls, neuron_names): viewer.add_points(neuron.to_numpy(), size=3, name=f"{neuron_name}") viewer.add_points( coll.to_numpy(), size=3, face_color="g", name=f"{len(coll)} collisions ({neuron_name})", )
def test_view_points(qtbot): """Test adding points.""" np.random.seed(0) data = 20 * np.random.random((10, 2)) viewer = napari.view_points(data) view = viewer.window.qt_viewer qtbot.addWidget(view) assert np.all(viewer.layers[0].data == data) assert len(viewer.layers) == 1 assert view.layers.vbox_layout.count() == 2 * len(viewer.layers) + 2 assert viewer.dims.ndim == 2 assert view.dims.nsliders == viewer.dims.ndim assert np.sum(view.dims._displayed_sliders) == 0 # Close the viewer viewer.window.close()
# neuron_obj_fname = '/data/neural_collision_detection/yoav/artificial_270120/neuron.obj' surface = client.submit(create_napari_surface, neuron_obj_fname) # colls_fname = "/data/neural_collision_detection/results/for_article/fig1/normalized_artificial_neuron_results_agg_thresh_0.npz" # collisions = client.submit(load_collisions, colls_fname, 1, "neuron_coords") # collisions = client.submit(filter_nans, collisions) surface = surface.result() # closest_idx = client.submit(connect_collisions_to_neural_points, collisions, surface[0]) # neural_collisions = client.submit(NeuronToGraph.coerce_collisions_to_neural_coords, surface[3], closest_idx) # binsize = (1, 1, 1) # hist_and_edges = gen_hist(collisions, binsize) # hist_and_metadata = filter_relevant_bins(hist_and_edges) # points_and_color = hist_into_points(hist_and_metadata) # surface_with_collisions = client.submit(add_colls_data_to_surface, surface, neural_collisions) # surface_with_collisions = surface_with_collisions.result() # colors = np.zeros((len(surface_with_collisions[0]), 4)) # colors[:, 0] = 1.0 # colors[:, 3] = surface_with_collisions[2] # colors = ColorArray(colors) # colors = [color.rgba.ravel() for color in colors] raw_neuron = pd.read_csv( f"/data/neural_collision_detection/src/convert_obj_matlab/{neuron_name}_balls_yz_flipped.csv", header=None, names=["x", "y", "z", "r"], ) with napari.gui_qt(): # viewer = napari.view_points(collisions.result()[::10], size=1, face_color='pink') viewer = napari.view_points(raw_neuron.iloc[:, :3].to_numpy(), size=1, face_color="white") viewer.add_surface(surface, colormap="magenta")
viewer.layers.selection.active.selected_data = [] def on_transform_changed_drag(event): sel_i = viewer.layers.selection.active.selected_data points = viewer.overlays.interaction_box.points for i, index in enumerate(sel_i): viewer.layers.selection.active._data[ index] = viewer.layers.selection.active.world_to_data( event.value(points[i])) viewer.layers.selection.active._update_dims() viewer.layers.selection.active.events.data( value=viewer.layers.selection.active.data) X, Y = np.mgrid[-500:500:50, -500:500:50] positions = np.dstack([X.ravel(), Y.ravel()]) viewer = napari.view_points(positions[0, :, :]) viewer.layers.selection.active.interactive = False viewer.overlays.interaction_box.show = True viewer.overlays.interaction_box.events.selection_box_drag.connect( on_selection_box_drag) viewer.overlays.interaction_box.events.selection_box_final.connect( on_selection_box_final) viewer.overlays.interaction_box.events.transform_drag.connect( on_transform_changed_drag) if __name__ == '__main__': napari.run()
"""Add points on nD shapes in 3D using a mouse callback""" import napari import numpy as np # Create rectangles in 4D shapes_data = np.array([[[0, 50, 75, 75], [0, 50, 125, 75], [0, 100, 125, 125], [0, 100, 75, 125]], [[0, 10, 75, 75], [0, 10, 125, 75], [0, 40, 125, 125], [0, 40, 75, 125]], [[1, 100, 75, 75], [1, 100, 125, 75], [1, 50, 125, 125], [1, 50, 75, 125]]]) # add an empty 4d points layer viewer = napari.view_points(ndim=4, size=3) points_layer = viewer.layers[0] # add the shapes layer to the viewer properties = {'index': [0, 1, 2]} shapes_layer = viewer.add_shapes(shapes_data, face_color=['magenta', 'green', 'blue'], edge_color='white', blending='additive', properties=properties, text='index') @shapes_layer.mouse_drag_callbacks.append def on_click(layer, event): shape_index, intersection_point = layer.get_index_and_intersection( event.position, event.view_direction, event.dims_displayed)
"""Test converting an image to a pyramid. """ import numpy as np import napari points = np.random.randint(100, size=(50_000, 2)) with napari.gui_qt(): viewer = napari.view_points(points, face_color='red')