def test_set_camera(): s = Scene() s.render(interactive=False) cam = s.plotter.camera set_camera(s, cam) set_camera(s, "sagittal")
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
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
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
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)
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
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
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
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
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
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"
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)
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")
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
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
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
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
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
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
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
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
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")
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
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
""" 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",
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)
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")
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)
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]: