From 7952179eea287731c5de6c2d435c5bc72d4c6755 Mon Sep 17 00:00:00 2001 From: Adam Tyson Date: Thu, 12 Sep 2024 10:27:35 +0100 Subject: [PATCH] Add a new example visualising brainmapper cells in specific brain regions. (#382) * update description to reflect new brainmapper widget * Add new example plotting cells from brainmapper only in specific regions * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update examples/brainmapper.py Co-authored-by: Igor Tatarnikov <61896994+IgorTatarnikov@users.noreply.github.com> --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Igor Tatarnikov <61896994+IgorTatarnikov@users.noreply.github.com> --- examples/brainmapper.py | 9 +++-- examples/brainmapper_regions.py | 69 +++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 examples/brainmapper_regions.py diff --git a/examples/brainmapper.py b/examples/brainmapper.py index c8891a00..376a401b 100644 --- a/examples/brainmapper.py +++ b/examples/brainmapper.py @@ -1,9 +1,12 @@ """ -Visualise the output from brainmapper. Cells transformed to atlas space can -be found at brainmapper_output/points/points.npy. +Visualise the output from brainmapper. +Cells transformed to atlas space can be found at +brainmapper_output/points/points.npy or exported by the brainmapper +napari widget For more details on brainmapper, please see: -https://brainglobe.info/documentation/brainglobe-workflows/brainmapper/index.html +- https://brainglobe.info/documentation/brainglobe-workflows/brainmapper/index.html +- https://brainglobe.info/documentation/brainglobe-utils/transform-widget.html """ from pathlib import Path diff --git a/examples/brainmapper_regions.py b/examples/brainmapper_regions.py new file mode 100644 index 00000000..f8528389 --- /dev/null +++ b/examples/brainmapper_regions.py @@ -0,0 +1,69 @@ +""" +Visualise the output from brainmapper in some specific brain regions. +Cells transformed to atlas space can be found at +brainmapper_output/points/points.npy or exported by the brainmapper napari +widget + +For more details on brainmapper, please see: +- https://brainglobe.info/documentation/brainglobe-workflows/brainmapper/index.html +- https://brainglobe.info/documentation/brainglobe-utils/transform-widget.html +""" + +from pathlib import Path + +from myterial import orange +from rich import print + +from brainrender.scene import Scene +from brainrender.actors import Points +from brainrender import settings + +import numpy as np + +settings.SHADER_STYLE = "plastic" +settings.SHOW_AXES = False + +cells_path = Path(__file__).parent.parent / "resources" / "points.npy" + +# Define regions of interest (easier to define all at the +# terminal/finest level of the hierarchy) +regions = ["VISp1", "VISp4", "VISp5"] + +print(f"[{orange}]Running example: {Path(__file__).name}") + + +def get_cells_in_regions(scene, cells_path, regions): + cells = np.load(cells_path) + new_cells = [] + + for cell in cells: + if ( + scene.atlas.structure_from_coords( + cell, as_acronym=True, microns=True + ) + in regions + ): + if cell[0] > 0: + new_cells.append(cell) + + new_cells = np.asarray(new_cells) + + return new_cells + + +# Create a brainrender scene +scene = Scene(title=f"brainmapper cells in {regions}", inset=False) + +cells_points = get_cells_in_regions(scene, cells_path, regions) + +# Create points actor +cells = Points(cells_points, radius=45, colors="palegoldenrod", alpha=0.8) + +# Add specific regions +for region in regions: + scene.add_brain_region(region, color="mediumseagreen", alpha=0.2) + +# Add cells +scene.add(cells) + +scene.render()