# napari-broadcastable-points
[](https://github.com/ianhi/napari-broadcastable-points/raw/main/LICENSE)
[](https://pypi.org/project/napari-broadcastable-points)
[](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 np
v = 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: on
v.dims.axis_labels = ('T', 'P', 'C', 'Z', 'Y', 'X')
points = BroadcastablePoints(dat, broadcast_dims = (2, 3))
v.add_layer(points)
napari.run()
```

**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)
```
<!-- [](https://github.com/ianhi/napari-broadcastable-points/actions) -->
<!-- [](https://codecov.io/gh/ianhi/napari-broadcastable-points) -->
Raw data
{
"_id": null,
"home_page": null,
"name": "napari-broadcastable-points",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": null,
"author_email": "Ian Hunt-Isaak <ianhuntisaak@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/03/22/6448403791c209ad75f35b190cf91318ff76082d917e4e1d66bc4f09907d/napari_broadcastable_points-0.5.1.post1.tar.gz",
"platform": null,
"description": "# napari-broadcastable-points\n\n[](https://github.com/ianhi/napari-broadcastable-points/raw/main/LICENSE)\n[](https://pypi.org/project/napari-broadcastable-points)\n[](https://python.org)\n\nPoints 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).\n\n**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.\n\n### Installation\n```bash\npip install napari-broadcastable-points\n```\n\n\n### Usage\nHere is an example where we have an image sequence of (TPCZYX) and we broadcast points over the `C` and `Z` axes.\n\n```python\nimport napari\nfrom napari_broadcastable_points import BroadcastablePoints\nimport numpy as np\n\nv = napari.Viewer()\n\n# create a fake timelapse\nT = 5\nP = 4\nC = 3\nZ = 2\nY, X = 512, 512\nimages = np.zeros([T, P, C, Z, Y, X])\nv.add_image(images)\n\n# Add the relevant components of points data\n# fmt: off\ndat = np.array([\n # T, P, Y, X\n [ 0, 0., 340.25071184, 284.13186557],\n [ 0, 0., 312.66551847, 309.95630191],\n [ 0, 0., 240.76794003, 266.81775485],\n [ 0, 0., 240.47448053, 239.81948049],\n [ 0, 1., 261.60356481, 260.36164576],\n [ 0, 1., 309.43746393, 215.16888217],\n [ 0, 1., 371.06395974, 235.12412843]])\n# fmt: on\n\nv.dims.axis_labels = ('T', 'P', 'C', 'Z', 'Y', 'X')\n\npoints = BroadcastablePoints(dat, broadcast_dims = (2, 3))\nv.add_layer(points)\nnapari.run()\n```\n\n\n\n\n**Creating an empty layer**\n\nYou can also create an empty layer - but be sure to specify `ndim` otherwise you may run into an error.\n\n```python\npoints = BroadcastablePoints(None, broadcast_dims = (2, 3), ndim=6)\n```\n\n\n\n<!-- [](https://github.com/ianhi/napari-broadcastable-points/actions) -->\n<!-- [](https://codecov.io/gh/ianhi/napari-broadcastable-points) -->\n",
"bugtrack_url": null,
"license": "BSD 3-Clause License",
"summary": null,
"version": "0.5.1.post1",
"project_urls": {
"Documentation": "https://github.com/ianhi/napari-broadcastable-points#napari-broadcastable-points",
"Homepage": "https://github.com/ianhi/napari-broadcastable-points#napari-broadcastable-points",
"Repository": "https://github.com/ianhi/napari-broadcastable-ponts.git"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f4c9419debb43f406467e3478baf4b448ed0fd08fa22bd3fe680e0cdac9f4f63",
"md5": "b049e5dab95a2b8917b838195fcf08d9",
"sha256": "920832b5b2db416025d0a07852f21fb6d15137202a96fee8d0d41384c6b37ea4"
},
"downloads": -1,
"filename": "napari_broadcastable_points-0.5.1.post1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b049e5dab95a2b8917b838195fcf08d9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 6981,
"upload_time": "2024-10-02T16:57:10",
"upload_time_iso_8601": "2024-10-02T16:57:10.373390Z",
"url": "https://files.pythonhosted.org/packages/f4/c9/419debb43f406467e3478baf4b448ed0fd08fa22bd3fe680e0cdac9f4f63/napari_broadcastable_points-0.5.1.post1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "03226448403791c209ad75f35b190cf91318ff76082d917e4e1d66bc4f09907d",
"md5": "8d413fc39856333db6b39da62fccce04",
"sha256": "06221541de9cc1ccdcea7c9c56f11e7ff4159e74c858d2c2c4d7f32a4a2a356d"
},
"downloads": -1,
"filename": "napari_broadcastable_points-0.5.1.post1.tar.gz",
"has_sig": false,
"md5_digest": "8d413fc39856333db6b39da62fccce04",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 74986,
"upload_time": "2024-10-02T16:57:11",
"upload_time_iso_8601": "2024-10-02T16:57:11.361589Z",
"url": "https://files.pythonhosted.org/packages/03/22/6448403791c209ad75f35b190cf91318ff76082d917e4e1d66bc4f09907d/napari_broadcastable_points-0.5.1.post1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-02 16:57:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ianhi",
"github_project": "napari-broadcastable-points#napari-broadcastable-points",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "napari-broadcastable-points"
}