{"name":"napari-stress","display_name":"napari STRESS","visibility":"public","icon":"","categories":[],"schema_version":"0.2.1","on_activate":null,"on_deactivate":null,"contributions":{"commands":[{"id":"napari-stress.rescale","title":"Rescale image data by given scale factors","python_name":"napari_stress._preprocess:rescale","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.trace_refine_surface","title":"Fit point location on a surface according to a given intensity image","python_name":"napari_stress._reconstruction.refine_surfaces:trace_refinement_of_surface","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.reconstruct_surface","title":"Reconstruct a surface from a pointcloud","python_name":"napari_stress._surface:reconstruct_surface","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.extract_vertex_points","title":"Extract surface vertices as points data","python_name":"napari_stress._surface:extract_vertex_points","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.get_pointcloud_sample_data","title":"droplet pointcloud sample","python_name":"napari_stress._sample_data:get_droplet_point_cloud","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.get_pointcloud_sample_data_4d","title":"4d dropplet pointcloud sample","python_name":"napari_stress._sample_data:get_droplet_point_cloud_4d","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.get_droplet_image_sample_4d","title":"4d droplet pointcloud sample","python_name":"napari_stress._sample_data:get_droplet_4d","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.droplet_reconstruction_toolbox","title":"Droplet reconstruction toolbox","python_name":"napari_stress._reconstruction.toolbox:droplet_reconstruction_toolbox","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.fit_spherical_harmonics","title":"Approximate point cloud by spherical harmonics expansion","python_name":"napari_stress._approximation.expansion_napari:expand_spherical_harmonics","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.fit_lsq_ellipsoid","title":"Fit least squares ellipsoid","python_name":"napari_stress._approximation.expansion_napari:fit_ellipsoid_to_pointcloud","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.lebedev_quadrature","title":"Perform lebedev quadrature after spherical harmonics expansion","python_name":"napari_stress._spherical_harmonics.spherical_harmonics_napari:perform_lebedev_quadrature","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.expand_ellipsoid","title":"Expand points on ellipsoid","python_name":"napari_stress._approximation.expansion_napari:expand_points_on_fitted_ellipsoid","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.measure_curvature","title":"Measure curvature on manifold","python_name":"napari_stress._measurements.curvature:calculate_mean_curvature_on_manifold","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.measure_gauss_bonnet","title":"Measure Gauss-Bonnet error","python_name":"napari_stress._measurements.curvature:gauss_bonnet_test","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.curvature_on_ellipsoid","title":"Measure curvature on ellipsoid","python_name":"napari_stress.approximation:curvature_on_ellipsoid","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.calculate_patch_fitted_curvature_surface","title":"Calculate patch-fitted curvature on surface","python_name":"napari_stress._measurements.curvature:_calculate_patch_fitted_curvature_on_surface","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.measure_anisotropic_stresses","title":"Measure tissue and cell-scale stresses","python_name":"napari_stress._measurements.stresses:tissue_and_cell_scale_stress","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.stress_analysis_toolbox","title":"Stress analysis toolbox","python_name":"napari_stress._measurements.toolbox:stress_analysis_toolbox","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.measure_intensity_along_normals","title":"Measure intensity along normals","python_name":"napari_stress._measurements.intensity:_sample_intensity_along_vector","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.measure_intensity_on_surface","title":"Measure intensity on a surface","python_name":"napari_stress._measurements.intensity:_measure_intensity_on_surface","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.fit_ellipsoid_points","title":"Fit PCA ellipsoid to pointcloud and return points","python_name":"napari_stress._surface:fit_ellipsoid_to_pointcloud_points","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.fit_ellipsoid_vectors","title":"Fit PCA ellipsoid to pointcloud and return major axis","python_name":"napari_stress._surface:fit_ellipsoid_to_pointcloud_vectors","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.normal_vectors_on_pointcloud","title":"Calculate normal vectors on pointcloud","python_name":"napari_stress._vectors:normal_vectors_on_pointcloud","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.normal_vectors_on_surface","title":"Calculate normal vectors on surface","python_name":"napari_stress._vectors:normal_vectors_on_surface","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.move_point_along_vector_relative","title":"Move points along vector (relative)","python_name":"napari_stress._vectors:relative_move_points_along_vector","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.move_point_along_vector_absolute","title":"Move points along vector (absolute)","python_name":"napari_stress._vectors:absolute_move_points_along_vector","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-stress.pairwise_distance","title":"Pairwise point distance","python_name":"napari_stress.approximation:pairwise_point_distances","short_title":null,"category":null,"icon":null,"enablement":null}],"readers":null,"writers":null,"widgets":[{"command":"napari-stress.rescale","display_name":"Rescale image data","autogenerate":true},{"command":"napari-stress.droplet_reconstruction_toolbox","display_name":"Droplet reconstruction toolbox","autogenerate":false},{"command":"napari-stress.fit_spherical_harmonics","display_name":"Fit spherical harmonics","autogenerate":true},{"command":"napari-stress.lebedev_quadrature","display_name":"Lebedev quadrature","autogenerate":true},{"command":"napari-stress.measure_curvature","display_name":"Measure curvature","autogenerate":true},{"command":"napari-stress.gauss_bonnet_test","display_name":"Measure Gauss-Bonnet error","autogenerate":true},{"command":"napari-stress.measure_anisotropic_stresses","display_name":"Measure tissue and cell-scale stresses","autogenerate":true},{"command":"napari-stress.stress_analysis_toolbox","display_name":"Stress analysis toolbox","autogenerate":false},{"command":"napari-stress.curvature_on_ellipsoid","display_name":"Mean curvature on ellipsoid","autogenerate":true},{"command":"napari-stress.measure_intensity_along_normals","display_name":"Measure intensity along normals","autogenerate":true},{"command":"napari-stress.measure_intensity_on_surface","display_name":"Measure intensity on surface","autogenerate":true},{"command":"napari-stress.calculate_patch_fitted_curvature_surface","display_name":"Calculate patch-fitted curvature on surface","autogenerate":true},{"command":"napari-stress.trace_refine_surface","display_name":"Trace-refine surface points","autogenerate":true},{"command":"napari-stress.reconstruct_surface","display_name":"Create surface from points","autogenerate":true},{"command":"napari-stress.extract_vertex_points","display_name":"Create points from surface vertices","autogenerate":true},{"command":"napari-stress.fit_ellipsoid_points","display_name":"Fit ellipsoid to pointcloud (points)","autogenerate":true},{"command":"napari-stress.fit_ellipsoid_vectors","display_name":"Fit ellipsoid to pointcloud (major axis)","autogenerate":true},{"command":"napari-stress.fit_lsq_ellipsoid","display_name":"Fit least squares ellipsoid","autogenerate":true},{"command":"napari-stress.expand_ellipsoid","display_name":"Expand points on ellipsoid","autogenerate":true},{"command":"napari-stress.pairwise_distance","display_name":"Pairwise point distance","autogenerate":true},{"command":"napari-stress.normal_vectors_on_pointcloud","display_name":"Calculate normal vectors on pointcloud","autogenerate":true},{"command":"napari-stress.normal_vectors_on_surface","display_name":"Calculate normal vectors on surface","autogenerate":true},{"command":"napari-stress.move_point_along_vector_relative","display_name":"Move points along vector (relative)","autogenerate":true},{"command":"napari-stress.move_point_along_vector_absolute","display_name":"Move points along vector (absolute)","autogenerate":true}],"sample_data":[{"command":"napari-stress.get_pointcloud_sample_data","key":"PC_1","display_name":"Droplet pointcloud"},{"command":"napari-stress.get_pointcloud_sample_data_4d","key":"PC_2","display_name":"4d Droplet pointcloud"},{"command":"napari-stress.get_droplet_image_sample_4d","key":"PC_3","display_name":"4d Droplet image"}],"themes":null,"menus":{},"submenus":null,"keybindings":null,"configuration":[]},"package_metadata":{"metadata_version":"2.4","name":"napari-stress","version":"0.4.2","dynamic":["license-file"],"platform":null,"supported_platform":null,"summary":"Interactive surface analysis in napari for measuring mechanical stresses in biological tissues","description":"[![License](https://img.shields.io/pypi/l/napari-stress.svg?color=green)](https://github.com/campaslab/napari-stress/raw/main/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/napari-stress.svg?color=green)](https://pypi.org/project/napari-stress)\n[![Python Version](https://img.shields.io/pypi/pyversions/napari-stress.svg?color=green)](https://python.org)\n[![tests](https://github.com/campaslab/napari-stress/actions/workflows/test_and_deploy.yml/badge.svg)](https://github.com/campaslab/napari-stress/actions/workflows/test_and_deploy.yml)\n[![codecov](https://codecov.io/gh/campaslab/napari-stress/branch/main/graph/badge.svg?token=ZXQGREJAT9)](https://codecov.io/gh/campaslab/napari-stress)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/napari-stress.svg)](https://pypistats.org/packages/napari-stress)\n[![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/napari-stress)](https://www.napari-hub.org/plugins/napari-stress)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6607329.svg)](https://doi.org/10.5281/zenodo.6607329)\n\n# napari-stress\n\nThis plugin provides tools for the analysis of surfaces in Napari, such as utilities to determine and refine the surface-representation of objects using a ray-casting approach and calculate the curvature of surfaces.\nIt re-implements code in Napari that was written for [Gross et al. (2021): STRESS, an automated geometrical characterization of deformable particles for in vivo measurements of cell and tissue mechanical stresses](https://www.biorxiv.org/content/10.1101/2021.03.26.437148v1)\nand has been made open source in [this repository](https://github.com/campaslab/STRESS).\n\n![](https://github.com/campaslab/napari-stress/raw/main/docs/imgs/function_gifs/spherical_harmonics.gif)\n\n## Usage\n\nFor documentation on how to use napari-stress both interactively from the napari-viewer or from code, please visit the [**documentation**](https://campaslab.github.io/napari-stress/intro.html)\n\n\n## Installation\n\nCreate a new conda environment with the following command.\nIf you have never used conda before, please [read this guide first](https://biapol.github.io/blog/mara_lampert/getting_started_with_mambaforge_and_python/readme.html).\n\n```\nconda create -n napari-stress Python=3.9 napari jupyterlab -c conda-forge\nconda activate napari-stress\n```\n\nYou can then install napari-stress using pip:\n\n```\npip install napari-stress\n```\n\n## Issues\n\nTo report bugs, request new features or get in touch, please [open an issue](https://github.com/campaslab/napari-stress/issues) or tag `@EL_Pollo_Diablo` on [image.sc](https://forum.image.sc/).\n\n## See also\n\nThere are other napari plugins with similar / overlapping functionality\n\n* [morphometrics](https://www.napari-hub.org/plugins/morphometrics)\n* [napari-pymeshlab](https://www.napari-hub.org/plugins/napari-pymeshlab)\n* [napari-process-points-and-surfaces](https://www.napari-hub.org/plugins/napari-process-points-and-surfaces)\n\n## Contributing\n\nContributions are very welcome. Tests can be run with [pytest], 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-stress\" is free and open source software\n\n## Acknowledgements\nThis project was supported by the Deutsche Forschungsgemeinschaft under Germany’s Excellence Strategy – EXC2068 - Cluster of Excellence \"Physics of Life\" of TU Dresden.\n\n[BSD-3]: http://opensource.org/licenses/BSD-3-Clause\n[pytest]: https://docs.pytest.org/en/7.0.x/\n","description_content_type":"text/markdown","keywords":null,"home_page":null,"download_url":null,"author":"Johannes Soltwedel, Ben J. Gross, Elijah Shelton, Carlos Gomez, Otger Campas","author_email":"johannes_richard.mueller@tu-dresden.de","maintainer":null,"maintainer_email":null,"license":"Copyright (c) 2022, Johannes Müller, DFG Cluster of Excellence \"Physics of Life\", TU Dresden, Dresden, Germany & The Regents of the University of California\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of napari-stress nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n","classifier":["Development Status :: 2 - Pre-Alpha","Framework :: napari","Intended Audience :: Developers","License :: OSI Approved :: BSD License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.9","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Topic :: Software Development :: Testing"],"requires_dist":["dask","distributed","joblib","mpmath","napari","napari-tools-menu>=0.1.15","numpy<2.0.0","pandas","scikit-image","scipy>=1.9.0","seaborn","tqdm","napari-vedo-bridge>=0.2.2","vedo>=2023.5.0","vispy","deprecation","gdist","pygeodesic","tox; extra == \"testing\"","pytest; extra == \"testing\"","pytest-cov; extra == \"testing\"","pytest-qt; extra == \"testing\"","pyqt5; extra == \"testing\""],"requires_python":">=3.9","requires_external":null,"project_url":["Bug Tracker, https://github.com/campaslab/napari-stress/issues","Documentation, https://campaslab.github.io/napari-stress","Source Code, https://github.com/campaslab/napari-stress","User Support, https://github.com/campaslab/napari-stress/issues"],"provides_extra":["testing"],"provides_dist":null,"obsoletes_dist":null},"npe1_shim":false}