Exemplo n.º 1
0
def test_set_camera():
    s = Scene()
    s.render(interactive=False)
    cam = s.plotter.camera

    set_camera(s, cam)
    set_camera(s, "sagittal")
Exemplo n.º 2
0
def test_add_from_files():
    scene = Scene()
    obj = scene.add("tests/files/CC_134_1_ch1inj.obj", color="red")
    assert isinstance(obj, Actor)

    scene.render(interactive=False)
    del scene
Exemplo n.º 3
0
def test_points_density():
    s = Scene(title="BR")
    mos = s.add_brain_region("MOs", alpha=0.0)
    coordinates = get_n_random_points_in_region(mos, 2000)
    pd = s.add(PointsDensity(coordinates))

    assert isinstance(pd, Actor)
    del s
Exemplo n.º 4
0
    def __init__(self, *args, atlas_name=None, axes=None, **kwargs):
        """
        Initialise the qtpy app and the brainrender scene.

        Arguments:
        ----------

        atlas_name: str/None. Name of the brainglobe atlas to use
        axes: bool. If true axes are shown in the brainrender render
        """
        logger.debug("Creating brainrender GUI")

        # Initialize parent classes
        self.scene = Scene(*args, atlas_name=atlas_name, **kwargs)
        UI.__init__(self, *args, **kwargs)
        CameraControl.__init__(self)
        AddFromFile.__init__(self)
        RegionsControl.__init__(self)
        ActorsControl.__init__(self)

        # Setup brainrender plotter
        self.axes = axes
        self.atuple = namedtuple("actor", "mesh, is_visible, color, alpha")

        self.setup_plotter()
        self._update()
        self.scene.render()
        self.scene._get_inset()

        # Setup widgets functionality
        self.actors_list.itemDoubleClicked.connect(
            self.actor_list_double_clicked)
        self.actors_list.clicked.connect(self.actor_list_clicked)

        buttons_funcs = dict(
            add_brain_regions=self.open_regions_dialog,
            add_from_file=self.add_from_file_object,
            add_cells=self.add_from_file_cells,
            show_structures_tree=self.toggle_treeview,
            take_screenshot=self.take_screenshot,
            reset=self.reset_camera,
            top=self.move_camera_top,
            side1=self.move_camera_side1,
            side2=self.move_camera_side2,
            front=self.move_camera_front,
        )

        for btn, fun in buttons_funcs.items():
            self.buttons[btn].clicked.connect(fun)

        self.treeView.clicked.connect(self.add_region_from_tree)

        self.alpha_textbox.textChanged.connect(self.update_actor_properties)
        self.color_textbox.textChanged.connect(self.update_actor_properties)

        self.startup = False
Exemplo n.º 5
0
def test_get_camera_params():
    s = Scene()
    s.render(interactive=False)
    cam = s.plotter.camera

    params = get_camera_params(scene=s)
    params2 = get_camera_params(camera=cam)

    check_camera_param(params)
    check_camera_param(params2)
Exemplo n.º 6
0
def test_atlas_plane(pos, plane, norm):
    s = Scene()

    p1 = s.atlas.get_plane(plane=plane, pos=pos, norm=norm, sx=1, sy=11)
    p2 = s.atlas.get_plane(plane=plane, pos=pos, norm=norm)
    assert isinstance(p1, Actor)
    assert isinstance(p2, Actor)

    s.render(interactive=False)
    del s
Exemplo n.º 7
0
def test_scene_specials():
    scene = Scene()
    print(scene)
    assert (
        str(scene)
        == f"A `brainrender.scene.Scene` with {len(scene.actors)} actors."
    )
    scene.content
    scene.render(interactive=False)
    del scene
Exemplo n.º 8
0
def test_ruler_from_surface():
    s = Scene(title="BR")
    th = s.add_brain_region("TH", hemisphere="left")

    s.add(
        ruler_from_surface(th.centerOfMass(),
                           s.root,
                           unit_scale=0.01,
                           units="mm"))

    # s.render(interactive=False)
    del s
Exemplo n.º 9
0
def test_get_actors():
    s = Scene()
    th = s.add_brain_region("TH")

    found1 = s.get_actors(name="TH")
    assert len(found1) == 1
    assert th in found1

    found2 = s.get_actors(br_class="brain region")
    assert len(found2) == 2
    assert th in found2
    assert s.root in found2
Exemplo n.º 10
0
def test_cylinder():
    s = Scene(title="BR")

    th = s.add_brain_region("TH")
    s.add(Cylinder(th, s.root))
    s.add(Cylinder(th.centerOfMass(), s.root))

    s.render(interactive=False)
    del s
Exemplo n.º 11
0
def test_actor():
    s = Scene()

    s = s.root
    assert isinstance(s, Actor)
    print(s)
    str(s)
    rprint(s)

    assert isinstance(s.mesh, Mesh)
    assert s.alpha() == s.mesh.alpha()
    assert s.name == "root"
    assert s.br_class == "brain region"
Exemplo n.º 12
0
def test_volume():
    scene = Scene(inset=False, root=True)

    data = np.load("examples/data/volume.npy")
    scene.add(Volume(data, voxel_size=200, as_surface=False, c="Reds"))
    scene.add(Volume(data, voxel_size=200, as_surface=True, c="Reds", mode=2))

    scene.render(interactive=False)
Exemplo n.º 13
0
def test_brain_regions():
    scene = Scene()
    th = scene.add_brain_region("TH")
    assert scene.actors[-1] == th
    assert isinstance(th, Actor)

    regs = scene.add_brain_region("MOs", "CA1")
    assert isinstance(regs, list)
    assert len(regs) == 2

    nan = scene.add_brain_region("MOs", "CA1")
    assert nan is None
    noone = scene.add_brain_region("what is this")
    assert noone is None

    scene.add_brain_region("TH", hemisphere="left")
    scene.add_brain_region("CA1", hemisphere="right")
    scene.add_brain_region("STN", hemisphere="right")
Exemplo n.º 14
0
def test_streamlines():
    s = Scene(title="BR")
    streams = get_streamlines_for_region("TH", force_download=False)
    s.add(Streamlines(streams[0]))
    s.add(*make_streamlines(*streams[1:3]))

    with pytest.raises(TypeError):
        Streamlines([1, 2, 3])

    s.render(interactive=False)
    del s
Exemplo n.º 15
0
def test_ruler():
    s = Scene(title="BR")
    th = s.add_brain_region("TH", hemisphere="left")
    mos = s.add_brain_region("MOs", hemisphere="right")

    s.add(
        ruler(th.centerOfMass(),
              mos.centerOfMass(),
              unit_scale=0.01,
              units="mm"))

    s.render(interactive=False)
    del s
Exemplo n.º 16
0
def test_points_working():
    s = Scene(title="BR")

    act = Points(np.load("tests/files/random_cells.npy"))
    act2 = Points("tests/files/random_cells.npy", colors="k")
    act3 = Points("tests/files/random_cells.npy", name="test")
    assert act3.name == "test"

    s.add(act)
    s.add(act2)

    point = Point([100, 233, 422])
    s.add(point)
    assert isinstance(point, Actor)
    assert isinstance(act, Actor)
    assert isinstance(act2, Actor)
    assert isinstance(act3, Actor)
    assert point.name == "Point"

    s.render(interactive=False)
    del s
Exemplo n.º 17
0
def test_actor_removal():
    s = Scene()
    th = s.add_brain_region("TH")
    assert len(s.actors) == 2

    s.remove(th)
    assert len(s.actors) == 1

    s.remove("no actor")
    assert len(s.actors) == 1
Exemplo n.º 18
0
def test_scene_render():
    scene = Scene()
    scene.add_brain_region("TH")

    scene.render(interactive=False, zoom=1.4)

    scene.render(
        interactive=False,
        camera=dict(
            pos=(10705.845660949382, 7435.678067378925, -36936.3695486442,),
            viewup=(
                -0.0050579179155257475,
                -0.9965615097647067,
                -0.08270172139591858,
            ),
            clippingRange=(30461.81976236306, 58824.38622122339),
        ),
    )

    scene.render(interactive=False, camera="sagittal")
    del scene
Exemplo n.º 19
0
def test_volume():
    s = Scene(inset=False, root=True)

    data = np.load("examples/data/volume.npy")
    s.add(Volume(data, voxel_size=200, as_surface=False, c="Reds"))
    s.add(Volume(data, voxel_size=200, as_surface=True, c="Reds", mode=2))
    del s
Exemplo n.º 20
0
def test_scene_screenshot(name, scale):
    s = Scene(screenshots_folder="tests/screenshots")
    s.screenshot(name=name, scale=scale)
    shutil.rmtree("tests/screenshots")

    s.render(interactive=False)
    del s
Exemplo n.º 21
0
def test_brain_regions():
    scene = Scene()
    th = scene.add_brain_region("TH")
    assert scene.actors[-1] == th
    assert isinstance(th, Actor)

    regs = scene.add_brain_region("MOs", "CA1")
    assert isinstance(regs, list)
    assert len(regs) == 2

    noone = scene.add_brain_region("what is this")
    assert noone is None

    a1 = scene.add_brain_region("TH", hemisphere="left")
    a2 = scene.add_brain_region("CA1", hemisphere="right")
    assert isinstance(a1, Actor)
    assert isinstance(a2, Actor)

    scene.render(interactive=False)
    del scene
Exemplo n.º 22
0
def test_export_for_web():
    s = Scene(title="BR")

    th = s.add_brain_region("TH")

    s.add_label(th, "TH")

    path = s.export("test.html")
    assert path == "test.html"

    path = Path(path)
    assert path.exists()

    path.unlink()

    with pytest.raises(ValueError):
        path = s.export("test.py")
Exemplo n.º 23
0
def test_neuron():

    s = Scene(title="BR")

    neuron = s.add(Neuron("tests/files/neuron1.swc"))
    s.add(Neuron(Actor(neuron.mesh)))
    s.add(Neuron(neuron.mesh))
    Neuron(Sphere())

    with pytest.raises(ValueError):
        Neuron(1)

    with pytest.raises(FileExistsError):
        Neuron("tests/files/neuronsfsfs.swc")
    with pytest.raises(NotImplementedError):
        Neuron("tests/files/random_cells.h5")

    del s
Exemplo n.º 24
0
def test_gebe_expression_api(geapi):

    s = Scene(title="BR")

    geapi.get_gene_id_by_name(gene)
    expids = geapi.get_gene_experiments(gene)

    data = geapi.get_gene_data(gene, expids[0], use_cache=True)

    # make actor
    gene_actor = geapi.griddata_to_volume(
        data, min_quantile=90, cmap="inferno"
    )
    assert isinstance(gene_actor, Actor)
    assert gene_actor.name == gene
    assert gene_actor.br_class == "Gene Data"

    s.add(gene_actor)
    s.render(interactive=False)
    del s
Exemplo n.º 25
0
"""
    This example shows how to add a label to a renderend actor
"""

from brainrender import Scene

from rich import print
from myterial import orange
from pathlib import Path

print(f"[{orange}]Running example: {Path(__file__).name}")

# crate a scene and add brain regions
scene = Scene()
th, mos = scene.add_brain_region("TH", "MOs")
scene.add_label(th, "TH")
scene.add_label(mos, "My region")

# render
scene.render()
    point = [14000 * fact, 4000, 6000]
    plane = scene.atlas.get_plane(pos=point, norm=(1, 0, 0))

    # slice
    box = scene.get_actors(name="box")[0]
    acts = [a for a in scene.actors if a != box]
    scene.slice(plane, actors=acts)

    # make new silhouettes
    for act in scene.get_actors(br_class="brain region"):
        act._needs_silhouette = True


# ------------------------------- Create scene ------------------------------- #

scene = Scene(inset=INSET)
scene.root._needs_silhouette = SILHOUETTE

# add transparent box around root to preserve camera position
root_box(scene)

# add all brain regions
mains = (
    "Isocortex",
    "HPF",
    "STR",
    "PAL",
    "CB",
    "MB",
    "TH",
    "HY",
Exemplo n.º 27
0
from rich import print
from pathlib import Path

from brainrender import Scene

sys.path.append("./")
from paper.figures import INSET, SILHOUETTE

print("[bold red]Running: ", Path(__file__).name)

# camera settings
cam = {
    "pos": (-20268, -6818, 14964),
    "viewup": (0, -1, 0),
    "clippingRange": (16954, 58963),
    "focalPoint": (6489, 4329, -5556),
    "distance": 35514,
}

# create scene
scene = Scene(inset=INSET, screenshots_folder="paper/screenshots")
scene.root._needs_silhouette = SILHOUETTE

# add brain regions
for reg, col in zip(("SCm", "SCs", "ZI"), (scmcol, scscol, zicol)):
    scene.add_brain_region(reg, color=col, silhouette=SILHOUETTE)

# render
scene.render(zoom=1.75, camera=cam)
scene.screenshot(name="mouse_regions", scale=1)
Exemplo n.º 28
0
brainrender.settings.SHOW_AXES = False

print("[bold red]Running: ", Path(__file__).name)

# camera settings
cam = {
    "pos": (-16954, 2456, -3961),
    "viewup": (0, -1, 0),
    "clippingRange": (22401, 34813),
    "focalPoint": (7265, 2199, -5258),
    "distance": 24256,
}

# create scene
scene = Scene(inset=False, screenshots_folder="paper/screenshots", root=True)
scene.root._needs_silhouette = False
scene.root.alpha(0.5)

# add brain regions
pag = scene.add_brain_region("PAG", alpha=0.4, silhouette=False, color=pagcol)
scm = scene.add_brain_region("SCm", alpha=0.3, silhouette=False, color=scmcol)

# add neuron mesh
neuron = scene.add("paper/data/yulins_neuron.stl")
neuron.c(neuroncol)

# add sphere at soma location
soma_pos = [9350.51912036, 2344.33986638, 5311.18297796]
point = scene.add(Point(soma_pos, color=neuroncol, radius=25))
scene.add_silhouette(point, lw=1, color="k")
Exemplo n.º 29
0
from brainrender import Scene, Animation
from benchmark.timer import Timer

# Create a brainrender scene
scene = Scene(title="brain regions", inset=False)

with Timer(scene, name="Animation"):
    # Add brain regions

    for br in ("TH", "MOs", "MOp", "CA1", "CB", "MB"):
        scene.add_brain_region(br, silhouette=False)

    anim = Animation(scene, "examples", "vid3")

    # Specify camera position and zoom at some key frames
    # each key frame defines the scene's state after n seconds have passed
    anim.add_keyframe(0, camera="top", zoom=1.3)
    anim.add_keyframe(1, camera="sagittal", zoom=2.1)
    anim.add_keyframe(2, camera="frontal", zoom=3)
    anim.add_keyframe(3, camera="frontal", zoom=2)

    # Make videos
    anim.make_video(duration=3, fps=10)
Exemplo n.º 30
0
from pathlib import Path

# To measure distances and angles
save_folder = Path(
    "/Users/federicoclaudi/Dropbox (UCL)/Rotation_vte/Presentations/Presentations/Fiete lab"
)

settings.SHOW_AXES = False

BREGMA = np.array([5400, 0, 0])  # AP  # DV  # ML

top = np.array([4.136, -2.106, 0]) * 1000 + BREGMA  # AP ML DV
tip = np.array([5.507, -0.584, 6.489]) * 1000 + BREGMA

scene = Scene(
    inset=False,
    screenshots_folder=save_folder,
)
cun, grn, mos = scene.add_brain_region("CUN", "GRN", "MOs", alpha=0.7)

# CUN/GRN probe
tip[1] = tip[1] + scene.root.centerOfMass()[2]
top[1] = top[1] + scene.root.centerOfMass()[2]

top = top[[0, 2, 1]]
tip = tip[[0, 2, 1]]

scene.add(shapes.Cylinder(pos=[top, tip], c="k", r=50, alpha=1))

# MOs probe
mos_center = mos.centerOfMass() + np.array([1000, 0, -800])
for x in [-500, -1000, -1500, -2000]: