Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ianhi/napari-broadcastable-points
Points layer with broadcasting over arbitrary dims
https://github.com/ianhi/napari-broadcastable-points
Last synced: 12 days ago
JSON representation
Points layer with broadcasting over arbitrary dims
- Host: GitHub
- URL: https://github.com/ianhi/napari-broadcastable-points
- Owner: ianhi
- License: bsd-3-clause
- Created: 2022-04-29T20:52:17.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-01T22:02:48.000Z (9 months ago)
- Last Synced: 2024-04-25T06:09:52.409Z (8 months ago)
- Language: Python
- Size: 89.8 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# napari-broadcastable-points
[![License](https://img.shields.io/pypi/l/napari-broadcastable-points.svg?color=green)](https://github.com/ianhi/napari-broadcastable-points/raw/main/LICENSE)
[![PyPI](https://img.shields.io/pypi/v/napari-broadcastable-points.svg?color=green)](https://pypi.org/project/napari-broadcastable-points)
[![Python Version](https://img.shields.io/pypi/pyversions/napari-broadcastable-points.svg?color=green)](https://python.org)Points layer that can broadcast over arbitrary dimensions. Available here as a workaround until something more complete is implemented in napari core (https://github.com/napari/napari/issues/2343).
**Warning!** This is likely to be very brittle for all the reasons discussed in the napari issue - so while it is useful it should also be used with caution. So don't muck around much with the viewer dims after creating, because who knows what will happen.
### Installation
```bash
pip install napari-broadcastable-points
```### Usage
Here is an example where we have an image sequence of (TPCZYX) and we broadcast points over the `C` and `Z` axes.```python
import napari
from napari_broadcastable_points import BroadcastablePoints
import numpy as npv = napari.Viewer()
# create a fake timelapse
T = 5
P = 4
C = 3
Z = 2
Y, X = 512, 512
images = np.zeros([T, P, C, Z, Y, X])
v.add_image(images)# Add the relevant components of points data
# fmt: off
dat = np.array([
# T, P, Y, X
[ 0, 0., 340.25071184, 284.13186557],
[ 0, 0., 312.66551847, 309.95630191],
[ 0, 0., 240.76794003, 266.81775485],
[ 0, 0., 240.47448053, 239.81948049],
[ 0, 1., 261.60356481, 260.36164576],
[ 0, 1., 309.43746393, 215.16888217],
[ 0, 1., 371.06395974, 235.12412843]])
# fmt: onv.dims.axis_labels = ('T', 'P', 'C', 'Z', 'Y', 'X')
points = BroadcastablePoints(dat, broadcast_dims = (2, 3))
v.add_layer(points)
napari.run()
```![example usage](images/points-broadcasting.gif)
**Creating an empty layer**
You can also create an empty layer - but be sure to specify `ndim` otherwise you may run into an error.
```python
points = BroadcastablePoints(None, broadcast_dims = (2, 3), ndim=6)
```