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})",
            )
예제 #3
0
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()
예제 #4
0
    # 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")
예제 #5
0
        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()
예제 #6
0
"""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)
예제 #7
0
"""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')