{"name":"napari-process-points-and-surfaces","display_name":"napari-process-points-and-surfaces","visibility":"public","icon":"","categories":[],"schema_version":"0.2.0","on_activate":null,"on_deactivate":null,"contributions":{"commands":[{"id":"napari-process-points-and-surfaces.SurfaceAnnotationWidget","title":"SurfaceAnnotationWidget","python_name":"napari_process_points_and_surfaces._surface_annotation_widget:SurfaceAnnotationWidget","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"convex_hull","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"filter_smooth_simple","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"filter_smooth_laplacian","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"filter_smooth_taubin","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"simplify_vertex_clustering","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"simplify_quadric_decimation","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"subdivide_loop","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"labels_to_centroids","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"sample_points_uniformly","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"sample_points_poisson_disk","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"voxel_down_sample","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"points_to_labels","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"points_to_convex_hull_surface","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"surface_from_point_cloud_alpha_shape","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"surface_from_point_cloud_ball_pivoting","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"label_to_surface","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"largest_label_to_surface","python_name":"napari_process_points_and_surfaces:napari_experimental_provide_function","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"add_quality","python_name":"napari_process_points_and_surfaces._quantification:add_quality","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"add_curvature_scalars","python_name":"napari_process_points_and_surfaces._quantification:add_curvature_scalars","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces.napari_experimental_provide_function","title":"add_spherefitted_curvature","python_name":"napari_process_points_and_surfaces._quantification:add_spherefitted_curvature","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces._vedo_stanford_bunny_layerdatatuple","title":"_vedo_stanford_bunny_layerdatatuple","python_name":"napari_process_points_and_surfaces:_vedo_stanford_bunny_layerdatatuple","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces._vedo_ellipsoid_layerdatatuple","title":"_vedo_ellipsoid_layerdatatuple","python_name":"napari_process_points_and_surfaces:_vedo_ellipsoid_layerdatatuple","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-process-points-and-surfaces._vedo_gastruloid_layerdatatuple","title":"_vedo_gastruloid_layerdatatuple","python_name":"napari_process_points_and_surfaces:_vedo_gastruloid_layerdatatuple","short_title":null,"category":null,"icon":null,"enablement":null}],"readers":null,"writers":null,"widgets":[{"command":"napari-process-points-and-surfaces.SurfaceAnnotationWidget","display_name":"SurfaceAnnotationWidget","autogenerate":false},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"convex_hull","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"filter_smooth_simple","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"filter_smooth_laplacian","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"filter_smooth_taubin","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"simplify_vertex_clustering","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"simplify_quadric_decimation","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"subdivide_loop","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"labels_to_centroids","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"sample_points_uniformly","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"sample_points_poisson_disk","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"voxel_down_sample","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"points_to_labels","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"points_to_convex_hull_surface","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"surface_from_point_cloud_alpha_shape","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"surface_from_point_cloud_ball_pivoting","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"label_to_surface","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"largest_label_to_surface","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"add_quality","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"add_curvature_scalars","autogenerate":true},{"command":"napari-process-points-and-surfaces.napari_experimental_provide_function","display_name":"add_spherefitted_curvature","autogenerate":true}],"sample_data":[{"command":"napari-process-points-and-surfaces._vedo_stanford_bunny_layerdatatuple","key":"standford_bunny_nppas","display_name":"Standford bunny (nppas)"},{"command":"napari-process-points-and-surfaces._vedo_ellipsoid_layerdatatuple","key":"ellipsoid_nppas","display_name":"Ellipsoid (nppas)"},{"command":"napari-process-points-and-surfaces._vedo_gastruloid_layerdatatuple","key":"gastruloid_av_luque_and_jv_veenvliet_2023,_nppas","display_name":"Gastruloid (AV Luque and JV Veenvliet (2023), nppas)"}],"themes":null,"menus":{},"submenus":null,"keybindings":null,"configuration":[]},"package_metadata":{"metadata_version":"2.1","name":"napari-process-points-and-surfaces","version":"0.5.0","dynamic":null,"platform":null,"supported_platform":null,"summary":"Process and analyze surfaces using open3d and vedo in napari","description":"# napari-process-points-and-surfaces (nppas)\n\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)\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)\n[![Python Version](https://img.shields.io/pypi/pyversions/napari-process-points-and-surfaces.svg?color=green)](https://python.org)\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)\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)\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)\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)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7654555.svg)](https://doi.org/10.5281/zenodo.7654555)\n\nProcess and analyze surfaces using [vedo](https://vedo.embl.es/) in [napari].\n\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/graphical_abstract.gif)\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\n\n## Usage\n\nYou find menus for surface generation, smoothing and analysis in the menu `Tools > Surfaces` and `Tools > Points`. \nFor detailed explanation of the underlying algorithms, please refer to the [vedo](https://vedo.embl.es/) documentation.\n\nFor processing meshes in Python scripts, see the [demo notebook](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/blob/main/docs/demo.ipynb). \nThere you also learn how this screenshot is made:\n\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/screenshot5.png)\n\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). \nThere you also learn how this screenshot is made:\n\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/screenshot6.png)\n\n### Surface measurements and annotations\n\nUsing the menu `Tools > Measurement tables > Surface quality table (vedo, nppas)` you can derive quantiative measurements of\nthe vertices in a given surface layer. \n\n![img_1.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/surface_measurements2.png)\n\nTo differentiate regions when analyzing those measurements it is recommended to use the menu `Tools > Surfaces > Annotate surface manually (nppas)`\nafter measurements have been made. This tool allows you to draw annotation label values on the surface. \nIt is recommended to do activate a colorful colormap such as `hsv` before starting to draw annotations. \nFurthermore, set the maximum of the contrast limit range to the number of regions you want to annotate + 1.\nAnnotations can be drawn as freehand lines and circles.\n\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/surface_annotation2.png)\n\nAfter measurements and annotations were done, you can save the annotation in the same measurement table using the menu\n`Tools > Measurement tables > Surface quality/annotation to table (nppas)`\n\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/surface_annotation_in_table2.png)\n\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.\n\n### Measurement visualization\n\nTo visualize measurements on the surface, just double-click on the table column headers.\n\n![img.png](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/raw/main/docs/quality_measurements.gif)\n\n## Installation\n\nYou can install `napari-process-points-and-surfaces` via mamba/conda and pip:\n\n```\nmamba install vedo vtk libnetcdf=4.7.4 -c conda-forge\npip install napari-process-points-and-surfaces\n```\n\n### Troubleshooting: Open3d installation\n\nSince version 0.4.0, `nppas` does no longer depend on [open3d](http://www.open3d.org/). \nSome deprecated functions still use Open3d though. \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.\nAlso consider updating code and no longer using these deprecated functions. \nSee [release notes](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/releases/tag/0.4.0) for details.\n\n## See also\n\nThere are other napari plugins with similar / overlapping functionality\n* [morphometrics](https://www.napari-hub.org/plugins/morphometrics) \n* [napari-accelerated-pixel-and-object-classification](https://www.napari-hub.org/plugins/napari-accelerated-pixel-and-object-classification)\n* [napari-pymeshlab](https://www.napari-hub.org/plugins/napari-pymeshlab)\n* [napari-pyclesperanto-assistant](https://www.napari-hub.org/plugins/napari-pyclesperanto-assistant)\n* [napari-stress](https://www.napari-hub.org/plugins/napari-stress)\n\nAnd there is software for doing similar things:\n* [meshlab](https://www.meshlab.net/)\n* [paraview](https://www.paraview.org/)\n\n## Contributing\n\nContributions are very welcome. Tests can be run with [tox], please ensure\nthe coverage at least stays the same before you submit a pull request.\n\n## License\n\nDistributed under the terms of the [BSD-3] license,\n\"napari-process-points-and-surfaces\" is free and open source software\n\n## Acknowledgements\n\nSome code snippets and example data were taken from the [vedo](https://vedo.embl.es/) and [open3d](http://www.open3d.org/) \nrepositories and documentation. See [thirdparty licenses](https://github.com/haesleinhuepf/napari-process-points-and-surfaces/tree/main/licenses_third_party) for licensing details.\nThe Standford Bunny example dataset has been taken from [The Stanford 3D Scanning Repository](http://graphics.stanford.edu/data/3Dscanrep/).\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\n\n## Issues\n\nIf you encounter any problems, please create a thread on [image.sc] along with a detailed description and tag [@haesleinhuepf].\n\n[napari]: https://github.com/napari/napari\n[Cookiecutter]: https://github.com/audreyr/cookiecutter\n[@napari]: https://github.com/napari\n[MIT]: http://opensource.org/licenses/MIT\n[BSD-3]: http://opensource.org/licenses/BSD-3-Clause\n[GNU GPL v3.0]: http://www.gnu.org/licenses/gpl-3.0.txt\n[GNU LGPL v3.0]: http://www.gnu.org/licenses/lgpl-3.0.txt\n[Apache Software License 2.0]: http://www.apache.org/licenses/LICENSE-2.0\n[Mozilla Public License 2.0]: https://www.mozilla.org/media/MPL/2.0/index.txt\n[cookiecutter-napari-plugin]: https://github.com/napari/cookiecutter-napari-plugin\n\n[file an issue]: https://github.com/haesleinhuepf/napari-process-points-and-surfaces/issues\n\n[napari]: https://github.com/napari/napari\n[tox]: https://tox.readthedocs.io/en/latest/\n[pip]: https://pypi.org/project/pip/\n[PyPI]: https://pypi.org/\n\n[image.sc]: https://image.sc\n[@haesleinhuepf]: https://twitter.com/haesleinhuepf\n","description_content_type":"text/markdown","keywords":null,"home_page":"https://github.com/haesleinhuepf/napari-process-points-and-surfaces","download_url":null,"author":"Robert Haase, Johannes Soltwedel","author_email":"robert.haase@tu-dresden.de","maintainer":null,"maintainer_email":null,"license":"BSD-3-Clause","classifier":["Development Status :: 2 - Pre-Alpha","Intended Audience :: Science/Research","Framework :: napari","Topic :: Scientific/Engineering :: Image Processing","Topic :: Scientific/Engineering :: Information Analysis","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Operating System :: OS Independent","License :: OSI Approved :: BSD License"],"requires_dist":["napari-plugin-engine (>=0.1.4)","numpy","napari","napari-tools-menu (>=0.1.14)","napari-time-slicer (>=0.4.5)","napari-workflows (>=0.2.3)","vedo (>=2022.4.1)","napari-skimage-regionprops (>=0.5.5)","pandas","imageio (!=2.22.1)","stackview (>=0.5.2)"],"requires_python":">=3.7","requires_external":null,"project_url":["Bug Tracker, https://github.com/haesleinhuepf/napari-process-points-and-surfaces/issues","Documentation, https://github.com/haesleinhuepf/napari-process-points-and-surfaces#README.md","Source Code, https://github.com/haesleinhuepf/napari-process-points-and-surfaces","User Support, https://github.com/haesleinhuepf/napari-process-points-and-surfaces/issues"],"provides_extra":null,"provides_dist":null,"obsoletes_dist":null},"npe1_shim":true}