# napari-process-points-and-surfaces (nppas)
[![License](https://img.shields.io/pypi/l/napari-process-points-and-surfaces.svg?color=green)](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/master/LICENSE)
[![PyPI](https://img.shields.io/pypi/v/napari-process-points-and-surfaces.svg?color=green)](https://pypi.org/project/napari-process-points-and-surfaces)
[![Python Version](https://img.shields.io/pypi/pyversions/napari-process-points-and-surfaces.svg?color=green)](https://python.org)
[![tests](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/workflows/tests/badge.svg)](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/actions)
[![codecov](https://codecov.io/gh/haesleinhuepf/napari-process-points-and-surfaces/branch/master/graph/badge.svg)](https://codecov.io/gh/haesleinhuepf/napari-process-points-and-surfaces)
[![Development Status](https://img.shields.io/pypi/status/napari-process-points-and-surfaces.svg)](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha)
[![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/napari-process-points-and-surfaces)](https://napari-hub.org/plugins/napari-process-points-and-surfaces)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7654555.svg)](https://doi.org/10.5281/zenodo.7654555)
Process and analyze surfaces using [vedo](https://vedo.embl.es/) in [napari].
![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/graphical_abstract.gif)
The nppas gastruloid example is derived from [AV Luque and JV Veenvliet (2023)](https://zenodo.org/record/7603081) which is licensed [CC-BY](https://creativecommons.org/licenses/by/4.0/legalcode) and can be downloaded from here: https://zenodo.org/record/7603081
## Usage
You find menus for surface generation, smoothing and analysis in the menu `Tools > Surfaces` and `Tools > Points`.
For detailed explanation of the underlying algorithms, please refer to the [vedo](https://vedo.embl.es/) documentation.
For processing meshes in Python scripts, see the [demo notebook](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/blob/main/docs/demo.ipynb).
There you also learn how this screenshot is made:
![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/screenshot5.png)
For performing quantitative measurements of surface in Python scripts, see the [demo notebook](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/blob/main/docs/quality_measurements.ipynb).
There you also learn how this screenshot is made:
![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/screenshot6.png)
### Surface measurements and annotations
Using the menu `Tools > Measurement tables > Surface quality table (vedo, nppas)` you can derive quantiative measurements of
the vertices in a given surface layer.
![img_1.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/surface_measurements2.png)
To differentiate regions when analyzing those measurements it is recommended to use the menu `Tools > Surfaces > Annotate surface manually (nppas)`
after measurements have been made. This tool allows you to draw annotation label values on the surface.
It is recommended to do activate a colorful colormap such as `hsv` before starting to draw annotations.
Furthermore, set the maximum of the contrast limit range to the number of regions you want to annotate + 1.
Annotations can be drawn as freehand lines and circles.
![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/surface_annotation2.png)
After measurements and annotations were done, you can save the annotation in the same measurement table using the menu
`Tools > Measurement tables > Surface quality/annotation to table (nppas)`
![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/surface_annotation_in_table2.png)
For classifying surface vertices using machine learning, please refer to the [napari APOC](https://www.napari-hub.org/plugins/napari-accelerated-pixel-and-object-classification) documentation.
### Measurement visualization
To visualize measurements on the surface, just double-click on the table column headers.
![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/quality_measurements.gif)
## Installation
You can install `napari-process-points-and-surfaces` via mamba/conda and pip:
```
mamba install vedo vtk libnetcdf=4.7.4 -c conda-forge
pip install napari-process-points-and-surfaces
```
### Troubleshooting: Open3d installation
Since version 0.4.0, `nppas` does no longer depend on [open3d](http://www.open3d.org/).
Some deprecated functions still use Open3d though.
Follow the installation instructions in the [open3d documentation](http://www.open3d.org/docs/release/getting_started.htm) to install it and keep using those functions.
Also consider updating code and no longer using these deprecated functions.
See [release notes](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/releases/tag/0.4.0) for details.
## See also
There are other napari plugins with similar / overlapping functionality
* [morphometrics](https://www.napari-hub.org/plugins/morphometrics)
* [napari-accelerated-pixel-and-object-classification](https://www.napari-hub.org/plugins/napari-accelerated-pixel-and-object-classification)
* [napari-pymeshlab](https://www.napari-hub.org/plugins/napari-pymeshlab)
* [napari-pyclesperanto-assistant](https://www.napari-hub.org/plugins/napari-pyclesperanto-assistant)
* [napari-stress](https://www.napari-hub.org/plugins/napari-stress)
And there is software for doing similar things:
* [meshlab](https://www.meshlab.net/)
* [paraview](https://www.paraview.org/)
## Contributing
Contributions are very welcome. Tests can be run with [tox], please ensure
the coverage at least stays the same before you submit a pull request.
## License
Distributed under the terms of the [BSD-3] license,
"napari-process-points-and-surfaces" is free and open source software
## Acknowledgements
Some code snippets and example data were taken from the [vedo](https://vedo.embl.es/) and [open3d](http://www.open3d.org/)
repositories and documentation. See [thirdparty licenses](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/tree/main/licenses_third_party) for licensing details.
The Standford Bunny example dataset has been taken from [The Stanford 3D Scanning Repository](http://graphics.stanford.edu/data/3Dscanrep/).
The nppas gastruloid example is derived from [AV Luque and JV Veenvliet (2023)](https://zenodo.org/record/7603081) which is licensed [CC-BY](https://creativecommons.org/licenses/by/4.0/legalcode) and can be downloaded from here: https://zenodo.org/record/7603081
## Issues
If you encounter any problems, please create a thread on [image.sc] along with a detailed description and tag [@haesleinhuepf].
[napari]: https://github.com/napari/napari
[Cookiecutter]: https://github.com/audreyr/cookiecutter
[@napari]: https://github.com/napari
[MIT]: http://opensource.org/licenses/MIT
[BSD-3]: http://opensource.org/licenses/BSD-3-Clause
[GNU GPL v3.0]: http://www.gnu.org/licenses/gpl-3.0.txt
[GNU LGPL v3.0]: http://www.gnu.org/licenses/lgpl-3.0.txt
[Apache Software License 2.0]: http://www.apache.org/licenses/LICENSE-2.0
[Mozilla Public License 2.0]: https://www.mozilla.org/media/MPL/2.0/index.txt
[cookiecutter-napari-plugin]: https://github.com/napari/cookiecutter-napari-plugin
[file an issue]: https://github.com/haesleinhuepf/napari-process-points-and-surfaces/issues
[napari]: https://github.com/napari/napari
[tox]: https://tox.readthedocs.io/en/latest/
[pip]: https://pypi.org/project/pip/
[PyPI]: https://pypi.org/
[image.sc]: https://image.sc
[@haesleinhuepf]: https://twitter.com/haesleinhuepf
Raw data
{
"_id": null,
"home_page": "https://github.com/haesleinhuepf/napari-process-points-and-surfaces",
"name": "napari-process-points-and-surfaces",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "",
"author": "Robert Haase, Johannes Soltwedel",
"author_email": "robert.haase@tu-dresden.de",
"download_url": "https://files.pythonhosted.org/packages/6d/1c/39bc6845d530883bf081cbfb7a17b785245b4c326130ef2004dd8791bdee/napari-process-points-and-surfaces-0.5.0.tar.gz",
"platform": null,
"description": "# napari-process-points-and-surfaces (nppas)\r\n\r\n[![License](https://img.shields.io/pypi/l/napari-process-points-and-surfaces.svg?color=green)](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/master/LICENSE)\r\n[![PyPI](https://img.shields.io/pypi/v/napari-process-points-and-surfaces.svg?color=green)](https://pypi.org/project/napari-process-points-and-surfaces)\r\n[![Python Version](https://img.shields.io/pypi/pyversions/napari-process-points-and-surfaces.svg?color=green)](https://python.org)\r\n[![tests](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/workflows/tests/badge.svg)](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/actions)\r\n[![codecov](https://codecov.io/gh/haesleinhuepf/napari-process-points-and-surfaces/branch/master/graph/badge.svg)](https://codecov.io/gh/haesleinhuepf/napari-process-points-and-surfaces)\r\n[![Development Status](https://img.shields.io/pypi/status/napari-process-points-and-surfaces.svg)](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha)\r\n[![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/napari-process-points-and-surfaces)](https://napari-hub.org/plugins/napari-process-points-and-surfaces)\r\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7654555.svg)](https://doi.org/10.5281/zenodo.7654555)\r\n\r\nProcess and analyze surfaces using [vedo](https://vedo.embl.es/) in [napari].\r\n\r\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/graphical_abstract.gif)\r\nThe nppas gastruloid example is derived from [AV Luque and JV Veenvliet (2023)](https://zenodo.org/record/7603081) which is licensed [CC-BY](https://creativecommons.org/licenses/by/4.0/legalcode) and can be downloaded from here: https://zenodo.org/record/7603081\r\n\r\n## Usage\r\n\r\nYou find menus for surface generation, smoothing and analysis in the menu `Tools > Surfaces` and `Tools > Points`. \r\nFor detailed explanation of the underlying algorithms, please refer to the [vedo](https://vedo.embl.es/) documentation.\r\n\r\nFor processing meshes in Python scripts, see the [demo notebook](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/blob/main/docs/demo.ipynb). \r\nThere you also learn how this screenshot is made:\r\n\r\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/screenshot5.png)\r\n\r\nFor performing quantitative measurements of surface in Python scripts, see the [demo notebook](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/blob/main/docs/quality_measurements.ipynb). \r\nThere you also learn how this screenshot is made:\r\n\r\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/screenshot6.png)\r\n\r\n### Surface measurements and annotations\r\n\r\nUsing the menu `Tools > Measurement tables > Surface quality table (vedo, nppas)` you can derive quantiative measurements of\r\nthe vertices in a given surface layer. \r\n\r\n![img_1.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/surface_measurements2.png)\r\n\r\nTo differentiate regions when analyzing those measurements it is recommended to use the menu `Tools > Surfaces > Annotate surface manually (nppas)`\r\nafter measurements have been made. This tool allows you to draw annotation label values on the surface. \r\nIt is recommended to do activate a colorful colormap such as `hsv` before starting to draw annotations. \r\nFurthermore, set the maximum of the contrast limit range to the number of regions you want to annotate + 1.\r\nAnnotations can be drawn as freehand lines and circles.\r\n\r\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/surface_annotation2.png)\r\n\r\nAfter measurements and annotations were done, you can save the annotation in the same measurement table using the menu\r\n`Tools > Measurement tables > Surface quality/annotation to table (nppas)`\r\n\r\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/surface_annotation_in_table2.png)\r\n\r\nFor classifying surface vertices using machine learning, please refer to the [napari APOC](https://www.napari-hub.org/plugins/napari-accelerated-pixel-and-object-classification) documentation.\r\n\r\n### Measurement visualization\r\n\r\nTo visualize measurements on the surface, just double-click on the table column headers.\r\n\r\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/quality_measurements.gif)\r\n\r\n## Installation\r\n\r\nYou can install `napari-process-points-and-surfaces` via mamba/conda and pip:\r\n\r\n```\r\nmamba install vedo vtk libnetcdf=4.7.4 -c conda-forge\r\npip install napari-process-points-and-surfaces\r\n```\r\n\r\n### Troubleshooting: Open3d installation\r\n\r\nSince version 0.4.0, `nppas` does no longer depend on [open3d](http://www.open3d.org/). \r\nSome deprecated functions still use Open3d though. \r\nFollow the installation instructions in the [open3d documentation](http://www.open3d.org/docs/release/getting_started.htm) to install it and keep using those functions.\r\nAlso consider updating code and no longer using these deprecated functions. \r\nSee [release notes](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/releases/tag/0.4.0) for details.\r\n\r\n## See also\r\n\r\nThere are other napari plugins with similar / overlapping functionality\r\n* [morphometrics](https://www.napari-hub.org/plugins/morphometrics) \r\n* [napari-accelerated-pixel-and-object-classification](https://www.napari-hub.org/plugins/napari-accelerated-pixel-and-object-classification)\r\n* [napari-pymeshlab](https://www.napari-hub.org/plugins/napari-pymeshlab)\r\n* [napari-pyclesperanto-assistant](https://www.napari-hub.org/plugins/napari-pyclesperanto-assistant)\r\n* [napari-stress](https://www.napari-hub.org/plugins/napari-stress)\r\n\r\nAnd there is software for doing similar things:\r\n* [meshlab](https://www.meshlab.net/)\r\n* [paraview](https://www.paraview.org/)\r\n\r\n## Contributing\r\n\r\nContributions are very welcome. Tests can be run with [tox], please ensure\r\nthe coverage at least stays the same before you submit a pull request.\r\n\r\n## License\r\n\r\nDistributed under the terms of the [BSD-3] license,\r\n\"napari-process-points-and-surfaces\" is free and open source software\r\n\r\n## Acknowledgements\r\n\r\nSome code snippets and example data were taken from the [vedo](https://vedo.embl.es/) and [open3d](http://www.open3d.org/) \r\nrepositories and documentation. See [thirdparty licenses](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/tree/main/licenses_third_party) for licensing details.\r\nThe Standford Bunny example dataset has been taken from [The Stanford 3D Scanning Repository](http://graphics.stanford.edu/data/3Dscanrep/).\r\nThe nppas gastruloid example is derived from [AV Luque and JV Veenvliet (2023)](https://zenodo.org/record/7603081) which is licensed [CC-BY](https://creativecommons.org/licenses/by/4.0/legalcode) and can be downloaded from here: https://zenodo.org/record/7603081\r\n\r\n## Issues\r\n\r\nIf you encounter any problems, please create a thread on [image.sc] along with a detailed description and tag [@haesleinhuepf].\r\n\r\n[napari]: https://github.com/napari/napari\r\n[Cookiecutter]: https://github.com/audreyr/cookiecutter\r\n[@napari]: https://github.com/napari\r\n[MIT]: http://opensource.org/licenses/MIT\r\n[BSD-3]: http://opensource.org/licenses/BSD-3-Clause\r\n[GNU GPL v3.0]: http://www.gnu.org/licenses/gpl-3.0.txt\r\n[GNU LGPL v3.0]: http://www.gnu.org/licenses/lgpl-3.0.txt\r\n[Apache Software License 2.0]: http://www.apache.org/licenses/LICENSE-2.0\r\n[Mozilla Public License 2.0]: https://www.mozilla.org/media/MPL/2.0/index.txt\r\n[cookiecutter-napari-plugin]: https://github.com/napari/cookiecutter-napari-plugin\r\n\r\n[file an issue]: https://github.com/haesleinhuepf/napari-process-points-and-surfaces/issues\r\n\r\n[napari]: https://github.com/napari/napari\r\n[tox]: https://tox.readthedocs.io/en/latest/\r\n[pip]: https://pypi.org/project/pip/\r\n[PyPI]: https://pypi.org/\r\n\r\n[image.sc]: https://image.sc\r\n[@haesleinhuepf]: https://twitter.com/haesleinhuepf\r\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Process and analyze surfaces using open3d and vedo in napari",
"version": "0.5.0",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e65f160d8e33918c389e8d4cdfdb7bd8a91a8565bbd7b77c46c3ed84de7430ed",
"md5": "959e8b5d04233ca5f4249e00c8dd5fb1",
"sha256": "4876cf0697656d28a6d713d9201f3e90578f222d781dad62ecf765976724ce6a"
},
"downloads": -1,
"filename": "napari_process_points_and_surfaces-0.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "959e8b5d04233ca5f4249e00c8dd5fb1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 1207686,
"upload_time": "2023-04-09T16:22:09",
"upload_time_iso_8601": "2023-04-09T16:22:09.936296Z",
"url": "https://files.pythonhosted.org/packages/e6/5f/160d8e33918c389e8d4cdfdb7bd8a91a8565bbd7b77c46c3ed84de7430ed/napari_process_points_and_surfaces-0.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6d1c39bc6845d530883bf081cbfb7a17b785245b4c326130ef2004dd8791bdee",
"md5": "e47f860b90753f512ea3881c299ce48a",
"sha256": "ac0fc58002e9c5a3c8ea11364bf084c1cd7549c02fd62bbdb54d6b8262801da6"
},
"downloads": -1,
"filename": "napari-process-points-and-surfaces-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "e47f860b90753f512ea3881c299ce48a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 1189593,
"upload_time": "2023-04-09T16:22:16",
"upload_time_iso_8601": "2023-04-09T16:22:16.885345Z",
"url": "https://files.pythonhosted.org/packages/6d/1c/39bc6845d530883bf081cbfb7a17b785245b4c326130ef2004dd8791bdee/napari-process-points-and-surfaces-0.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-09 16:22:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "haesleinhuepf",
"github_project": "napari-process-points-and-surfaces",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "napari-process-points-and-surfaces"
}