## zmesh: Multi-Label Marching Cubes & Mesh Simplification
[](https://github.com/seung-lab/zmesh/actions/workflows/test.yml) [](https://badge.fury.io/py/zmesh)
```python
from zmesh import Mesher
labels = ... # some dense volumetric labeled image
mesher = Mesher( (4,4,40) ) # anisotropy of image
# initial marching cubes pass
# close controls whether meshes touching
# the image boundary are left open or closed
mesher.mesh(labels, close=False)
meshes = []
for obj_id in mesher.ids():
meshes.append(
mesher.get(
obj_id,
normals=False, # whether to calculate normals or not
# tries to reduce triangles by this factor
# 0 disables simplification
reduction_factor=100,
# Max tolerable error in physical distance
# note: if max_error is not set, the max error
# will be set equivalent to one voxel along the
# smallest dimension.
max_error=8,
# whether meshes should be centered in the voxel
# on (0,0,0) [False] or (0.5,0.5,0.5) [True]
voxel_centered=False,
)
)
mesher.erase(obj_id) # delete high res mesh
mesher.clear() # clear memory retained by mesher
mesh = meshes[0]
mesh = mesher.simplify(
mesh,
# same as reduction_factor in get
reduction_factor=100,
# same as max_error in get
max_error=40,
compute_normals=False, # whether to also compute face normals
) # apply simplifier to a pre-existing mesh
# compute normals on a pre-existing mesh
mesh = zmesh.compute_normals(mesh)
mesh.vertices
mesh.faces
mesh.normals
mesh.triangles() # compute triangles from vertices and faces
# Extremely common obj format
with open('iconic_doge.obj', 'wb') as f:
f.write(mesh.to_obj())
# Common binary format
with open('iconic_doge.ply', 'wb') as f:
f.write(mesh.to_ply())
# Neuroglancer Precomputed format
with open('10001001:0', 'wb') as f:
f.write(mesh.to_precomputed())
```
Note: As of the latest version, `mesher.get_mesh` has been deprecated in favor of `mesher.get` which fixes a long standing bug where you needed to transpose your data in order to get a mesh in the correct orientation.
## Installation
If binaries are not available for your system, ensure you have a C++ compiler installed.
```bash
pip install zmesh
```
## Performance Tuning & Notes
- The mesher will consume about double memory in 64 bit mode if the size of the
object exceeds <1023, 1023, 511> on the x, y, or z axes. This is due to a limitation
of the 32-bit format.
- The mesher is ambidextrous, it can handle C or Fortran order arrays.
- The maximum vertex range supported `.simplify` after converting to voxel space is 2<sup>20</sup> (appx. 1M) due to the packed 64-bit vertex format.
## Related Projects
- [zi_lib](https://github.com/zlateski/zi_lib) - zmesh makes heavy use of Aleks' C++ library.
- [Igneous](https://github.com/seung-lab/igneous) - Visualization of connectomics data using cloud computing.
## Credits
Thanks to Aleks Zlateski for creating and sharing this beautiful mesher.
Later changes by Will Silversmith, Nico Kemnitz, and Jingpeng Wu.
## References
1. W. Lorensen and H. Cline. "Marching Cubes: A High Resolution 3D Surface Construction Algorithm". pp 163-169. Computer Graphics, Volume 21, Number 4, July 1987. ([link](https://people.eecs.berkeley.edu/~jrs/meshpapers/LorensenCline.pdf))
2. M. Garland and P. Heckbert. "Surface simplification using quadric error metrics". SIGGRAPH '97: Proceedings of the 24th annual conference on Computer graphics and interactive techniques. Pages 209–216. August 1997. doi: 10.1145/258734.258849 ([link](https://mgarland.org/files/papers/quadrics.pdf))
3. H. Hoppe. "New Quadric Metric for Simplifying Meshes with Appearance Attributes". IEEE Visualization 1999 Conference. pp. 59-66. doi: 10.1109/VISUAL.1999.809869 ([link](http://hhoppe.com/newqem.pdf))
Raw data
{
"_id": null,
"home_page": "https://github.com/seung-lab/zmesh/",
"name": "zmesh",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "William Silversmith (maintainer), Aleks Zlateski (original author)",
"author_email": "ws9@princeton.edu",
"download_url": "https://files.pythonhosted.org/packages/5b/2a/dc7c93bee0d5e7260b9f3d1efbc857184b1aef6670b48b2bcd29b0e01d42/zmesh-1.9.0.tar.gz",
"platform": null,
"description": "## zmesh: Multi-Label Marching Cubes & Mesh Simplification\n[](https://github.com/seung-lab/zmesh/actions/workflows/test.yml) [](https://badge.fury.io/py/zmesh) \n\n```python\nfrom zmesh import Mesher\n\nlabels = ... # some dense volumetric labeled image\nmesher = Mesher( (4,4,40) ) # anisotropy of image\n\n# initial marching cubes pass\n# close controls whether meshes touching\n# the image boundary are left open or closed\nmesher.mesh(labels, close=False) \n\nmeshes = []\nfor obj_id in mesher.ids():\n meshes.append(\n mesher.get(\n obj_id, \n normals=False, # whether to calculate normals or not\n\n # tries to reduce triangles by this factor\n # 0 disables simplification\n reduction_factor=100, \n\n # Max tolerable error in physical distance\n # note: if max_error is not set, the max error\n # will be set equivalent to one voxel along the \n # smallest dimension.\n max_error=8,\n # whether meshes should be centered in the voxel\n # on (0,0,0) [False] or (0.5,0.5,0.5) [True]\n voxel_centered=False, \n )\n )\n mesher.erase(obj_id) # delete high res mesh\n\nmesher.clear() # clear memory retained by mesher\n\nmesh = meshes[0]\nmesh = mesher.simplify(\n mesh, \n # same as reduction_factor in get\n reduction_factor=100, \n # same as max_error in get\n max_error=40, \n compute_normals=False, # whether to also compute face normals\n) # apply simplifier to a pre-existing mesh\n\n# compute normals on a pre-existing mesh\nmesh = zmesh.compute_normals(mesh) \n\nmesh.vertices\nmesh.faces \nmesh.normals\nmesh.triangles() # compute triangles from vertices and faces\n\n# Extremely common obj format\nwith open('iconic_doge.obj', 'wb') as f:\n f.write(mesh.to_obj())\n\n# Common binary format\nwith open('iconic_doge.ply', 'wb') as f:\n f.write(mesh.to_ply())\n\n# Neuroglancer Precomputed format\nwith open('10001001:0', 'wb') as f:\n f.write(mesh.to_precomputed())\n```\n\nNote: As of the latest version, `mesher.get_mesh` has been deprecated in favor of `mesher.get` which fixes a long standing bug where you needed to transpose your data in order to get a mesh in the correct orientation.\n\n## Installation \n\nIf binaries are not available for your system, ensure you have a C++ compiler installed.\n\n```bash\npip install zmesh\n```\n\n## Performance Tuning & Notes\n\n- The mesher will consume about double memory in 64 bit mode if the size of the \nobject exceeds <1023, 1023, 511> on the x, y, or z axes. This is due to a limitation \nof the 32-bit format. \n- The mesher is ambidextrous, it can handle C or Fortran order arrays.\n- The maximum vertex range supported `.simplify` after converting to voxel space is 2<sup>20</sup> (appx. 1M) due to the packed 64-bit vertex format.\n\n## Related Projects \n\n- [zi_lib](https://github.com/zlateski/zi_lib) - zmesh makes heavy use of Aleks' C++ library.\n- [Igneous](https://github.com/seung-lab/igneous) - Visualization of connectomics data using cloud computing.\n\n## Credits\n\nThanks to Aleks Zlateski for creating and sharing this beautiful mesher. \n\nLater changes by Will Silversmith, Nico Kemnitz, and Jingpeng Wu. \n\n## References \n\n1. W. Lorensen and H. Cline. \"Marching Cubes: A High Resolution 3D Surface Construction Algorithm\". pp 163-169. Computer Graphics, Volume 21, Number 4, July 1987. ([link](https://people.eecs.berkeley.edu/~jrs/meshpapers/LorensenCline.pdf)) \n2. M. Garland and P. Heckbert. \"Surface simplification using quadric error metrics\". SIGGRAPH '97: Proceedings of the 24th annual conference on Computer graphics and interactive techniques. Pages 209\u2013216. August 1997. doi: 10.1145/258734.258849 ([link](https://mgarland.org/files/papers/quadrics.pdf)) \n3. H. Hoppe. \"New Quadric Metric for Simplifying Meshes with Appearance Attributes\". IEEE Visualization 1999 Conference. pp. 59-66. doi: 10.1109/VISUAL.1999.809869 ([link](http://hhoppe.com/newqem.pdf))\n\n",
"bugtrack_url": null,
"license": "LGPL-3.0-or-later",
"summary": "Multilabel marching cubes and simplification of volumetric data.",
"version": "1.9.0",
"project_urls": {
"Homepage": "https://github.com/seung-lab/zmesh/"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "89a3d09251204f58b79b9346b2da9982ff24b6ac4ab3295dc8207a757a98a057",
"md5": "53feb8a449cb0871b6096b2a69feaa8e",
"sha256": "3dc6c903938ac66b28f4bd8c73f826df98b053639dd96d3ead82e0c326dfa2b9"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "53feb8a449cb0871b6096b2a69feaa8e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 223520,
"upload_time": "2025-10-07T21:41:10",
"upload_time_iso_8601": "2025-10-07T21:41:10.306379Z",
"url": "https://files.pythonhosted.org/packages/89/a3/d09251204f58b79b9346b2da9982ff24b6ac4ab3295dc8207a757a98a057/zmesh-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8b523794b17b675860a74aaa62b6532071e7313a7e98fbfe796ff371b7321dba",
"md5": "926421d668047116321d6170e4f6c680",
"sha256": "ec8ad3995681ccaa134d5ec2e4842555de7aba4f8fcfa6924c9c60cd4bfe83d6"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "926421d668047116321d6170e4f6c680",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 193404,
"upload_time": "2025-10-07T21:41:11",
"upload_time_iso_8601": "2025-10-07T21:41:11.847089Z",
"url": "https://files.pythonhosted.org/packages/8b/52/3794b17b675860a74aaa62b6532071e7313a7e98fbfe796ff371b7321dba/zmesh-1.9.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a8d5efb65d06f0e9d80b34d306129c85c0a1c9352077f8e34fcd60adc8ed7cbb",
"md5": "1e46da2032c10d3544e6afee97ae0bd9",
"sha256": "eb063f97438e81e91ba76d646a0acb3fbdde107f89292f647146b03203f8517b"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "1e46da2032c10d3544e6afee97ae0bd9",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1998726,
"upload_time": "2025-10-07T21:41:13",
"upload_time_iso_8601": "2025-10-07T21:41:13.250757Z",
"url": "https://files.pythonhosted.org/packages/a8/d5/efb65d06f0e9d80b34d306129c85c0a1c9352077f8e34fcd60adc8ed7cbb/zmesh-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4a3fe02dc80ba982c9c7f7c4d0660d9bb8bbd95e26ab72991b7da117fcb30502",
"md5": "8f1d6f9c0d5bf298689a082ddfd21051",
"sha256": "d223cc1896a2461dbf92cbbd6ceb484e069d4207707c45624cfe5b7aa6bfd428"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "8f1d6f9c0d5bf298689a082ddfd21051",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 183993,
"upload_time": "2025-10-07T21:41:14",
"upload_time_iso_8601": "2025-10-07T21:41:14.550068Z",
"url": "https://files.pythonhosted.org/packages/4a/3f/e02dc80ba982c9c7f7c4d0660d9bb8bbd95e26ab72991b7da117fcb30502/zmesh-1.9.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "89a174bc80c04b481b42c36b9dd7ded494ce9988865b2e043df24dee71dc22eb",
"md5": "139ab6fe40ae55d8bd1b0a0dc1ee2a2d",
"sha256": "3a5c856fb3fa0ba956bc425c5a06aace308fec46495c7ebcd5c7fe1f36bf5740"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "139ab6fe40ae55d8bd1b0a0dc1ee2a2d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 225031,
"upload_time": "2025-10-07T21:41:15",
"upload_time_iso_8601": "2025-10-07T21:41:15.883243Z",
"url": "https://files.pythonhosted.org/packages/89/a1/74bc80c04b481b42c36b9dd7ded494ce9988865b2e043df24dee71dc22eb/zmesh-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "715afb9b2300774795cb09004d3caff760de85fad56fd527cd58dd69bbae3763",
"md5": "4050f153989a8b06f2756b0a7167b86a",
"sha256": "e77237c3a5e61388780780605942e591b3c037b2e7dfb192efce7171fd1d35f4"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "4050f153989a8b06f2756b0a7167b86a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 195210,
"upload_time": "2025-10-07T21:41:17",
"upload_time_iso_8601": "2025-10-07T21:41:17.208792Z",
"url": "https://files.pythonhosted.org/packages/71/5a/fb9b2300774795cb09004d3caff760de85fad56fd527cd58dd69bbae3763/zmesh-1.9.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ca9934d04b7a6eb99ae89680e7ddd6fa1ec62d002a492b0d9b2072e3190b50e3",
"md5": "8092e13293c789d3342f8d6cbdc43993",
"sha256": "b755dc4e500a88b4b0d8b1fb6674990cff2ec40c056795e48c340944f34611aa"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8092e13293c789d3342f8d6cbdc43993",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 2035093,
"upload_time": "2025-10-07T21:41:18",
"upload_time_iso_8601": "2025-10-07T21:41:18.106361Z",
"url": "https://files.pythonhosted.org/packages/ca/99/34d04b7a6eb99ae89680e7ddd6fa1ec62d002a492b0d9b2072e3190b50e3/zmesh-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7581416ee6dc42c474e54a56c3919f4c8ff8bc8b6eb107076fe2b1cdd339c8d1",
"md5": "70a10e933dd3538e4ce5ef1c61e9bb08",
"sha256": "dff62b50170aafee7e7cce2822da8015d7a93c7820dd66ec2f47b875a8888c08"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "70a10e933dd3538e4ce5ef1c61e9bb08",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 184180,
"upload_time": "2025-10-07T21:41:19",
"upload_time_iso_8601": "2025-10-07T21:41:19.568123Z",
"url": "https://files.pythonhosted.org/packages/75/81/416ee6dc42c474e54a56c3919f4c8ff8bc8b6eb107076fe2b1cdd339c8d1/zmesh-1.9.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3ef343612a5da1bd33eb600e8a16346c59dd96be6d275645a8d54e0a81caa1f4",
"md5": "9f91ace761f5a02a00a9c50442466479",
"sha256": "eb2e99a763291841025dffbc9cb2198a1e7ba31ecad3d1a10d5acaf9d289cb9d"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "9f91ace761f5a02a00a9c50442466479",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 223145,
"upload_time": "2025-10-07T21:41:20",
"upload_time_iso_8601": "2025-10-07T21:41:20.597982Z",
"url": "https://files.pythonhosted.org/packages/3e/f3/43612a5da1bd33eb600e8a16346c59dd96be6d275645a8d54e0a81caa1f4/zmesh-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8b67b5f72afa013d0b42682ced69e7741712244471ad36ebe5495d169aae6246",
"md5": "bea7bf294ec699d54939728e6223a7ee",
"sha256": "804bb2c402ef58862066502723ada97383e7de3aebd5cbb57f8fdd45155c5a04"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "bea7bf294ec699d54939728e6223a7ee",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 193026,
"upload_time": "2025-10-07T21:41:21",
"upload_time_iso_8601": "2025-10-07T21:41:21.819661Z",
"url": "https://files.pythonhosted.org/packages/8b/67/b5f72afa013d0b42682ced69e7741712244471ad36ebe5495d169aae6246/zmesh-1.9.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4d94a8ab7ecbb94b547b6af060aa8e5a2e607564a4f063bce33fb5c149ef4b07",
"md5": "dd29ed0734b7d8c065383344d95b2ac8",
"sha256": "c1fb2dc224f6f1e5fe5891f844552cf6d3d5235cea662ea32eac152b64f90321"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "dd29ed0734b7d8c065383344d95b2ac8",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 2009229,
"upload_time": "2025-10-07T21:41:22",
"upload_time_iso_8601": "2025-10-07T21:41:22.858491Z",
"url": "https://files.pythonhosted.org/packages/4d/94/a8ab7ecbb94b547b6af060aa8e5a2e607564a4f063bce33fb5c149ef4b07/zmesh-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b8b9dac98ff1ee31d8f02d8dbb45cc8aa3fa702fd45680de7ea14fb3a13742ec",
"md5": "f7de860047d83ede93c74b983978338a",
"sha256": "1060158fdf9190354aabe603052bece6f5c5569fa9d45f632c6dad8bf989e47c"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "f7de860047d83ede93c74b983978338a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 180889,
"upload_time": "2025-10-07T21:41:23",
"upload_time_iso_8601": "2025-10-07T21:41:23.877062Z",
"url": "https://files.pythonhosted.org/packages/b8/b9/dac98ff1ee31d8f02d8dbb45cc8aa3fa702fd45680de7ea14fb3a13742ec/zmesh-1.9.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c9d852054f7babab3121d2e0e92dd4486d0490482059e5b50aaaadf55d4d4139",
"md5": "6b6a962256ee1d5fd98cf2a5e7cac4e3",
"sha256": "85b6863d7df0e021acf34fac3d4d87a56118fbbf9dcc6981768288f518a98b82"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp313-cp313-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "6b6a962256ee1d5fd98cf2a5e7cac4e3",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 222012,
"upload_time": "2025-10-07T21:41:24",
"upload_time_iso_8601": "2025-10-07T21:41:24.808826Z",
"url": "https://files.pythonhosted.org/packages/c9/d8/52054f7babab3121d2e0e92dd4486d0490482059e5b50aaaadf55d4d4139/zmesh-1.9.0-cp313-cp313-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "791fb040459f8b95709bbf7e109950c8357141acf150f263a83da2d55ae08d9b",
"md5": "0132920b0987da82850a5d0e51f99486",
"sha256": "92f9dad758f6d66800ad4dda759bb36d2c857066468428729fc8e10ff4171d8e"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "0132920b0987da82850a5d0e51f99486",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 192090,
"upload_time": "2025-10-07T21:41:25",
"upload_time_iso_8601": "2025-10-07T21:41:25.817679Z",
"url": "https://files.pythonhosted.org/packages/79/1f/b040459f8b95709bbf7e109950c8357141acf150f263a83da2d55ae08d9b/zmesh-1.9.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d9e91be22edb0aef114191581b39b9a967a16230c906794255d849b17f6be2a3",
"md5": "45facd4a806357ebf67eddbb20986ab5",
"sha256": "03432bc1087ddaf623920982d9546bcbc0e9bca3e714e6ffc6c30efa703d8fdd"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "45facd4a806357ebf67eddbb20986ab5",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 2004354,
"upload_time": "2025-10-07T21:41:26",
"upload_time_iso_8601": "2025-10-07T21:41:26.792556Z",
"url": "https://files.pythonhosted.org/packages/d9/e9/1be22edb0aef114191581b39b9a967a16230c906794255d849b17f6be2a3/zmesh-1.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cd0682ac248155484a9b9a5747675be0c075f3d8705aa6b494a958e74edd86d0",
"md5": "ce9659a0277eada4d0a27e8539acc385",
"sha256": "ca89bc2a77799fa3d307d501be49dc8f6573b12f16d9362e3def0aa267956b99"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "ce9659a0277eada4d0a27e8539acc385",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 181002,
"upload_time": "2025-10-07T21:41:27",
"upload_time_iso_8601": "2025-10-07T21:41:27.995802Z",
"url": "https://files.pythonhosted.org/packages/cd/06/82ac248155484a9b9a5747675be0c075f3d8705aa6b494a958e74edd86d0/zmesh-1.9.0-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "aa0c22cfe4ca5f6072faf89dea8a0719f906a0cd9c92091346bb93780ed39694",
"md5": "fe314126513d612eee5b7b8843b2100a",
"sha256": "ee5abd9ea7bab5535fdecbfdc213e7642374f41e754bbda8b24ee30ce60e8f05"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "fe314126513d612eee5b7b8843b2100a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 2011986,
"upload_time": "2025-10-07T21:41:29",
"upload_time_iso_8601": "2025-10-07T21:41:29.359617Z",
"url": "https://files.pythonhosted.org/packages/aa/0c/22cfe4ca5f6072faf89dea8a0719f906a0cd9c92091346bb93780ed39694/zmesh-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8c76d6b14695a7c86b8685a3f6a9cada79cb98928e61a3c2c1ea0e4733262016",
"md5": "b10c75d214d30af6a2756aa7e237b696",
"sha256": "2b17720ba52edf8f20abd8c638d2c6ddbb766fe18487668c29fe19b66069017b"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "b10c75d214d30af6a2756aa7e237b696",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 185958,
"upload_time": "2025-10-07T21:41:30",
"upload_time_iso_8601": "2025-10-07T21:41:30.824797Z",
"url": "https://files.pythonhosted.org/packages/8c/76/d6b14695a7c86b8685a3f6a9cada79cb98928e61a3c2c1ea0e4733262016/zmesh-1.9.0-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f34e816d49101835c683681be78057b96b3cf7920202bec10eada5b091df6a46",
"md5": "62cb42dfb102e203d544513c24d01b7a",
"sha256": "87c1009cb573ea0be05fa029737faa65fbba56c29e15e319c48dbca1a39017e5"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "62cb42dfb102e203d544513c24d01b7a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 223718,
"upload_time": "2025-10-07T21:41:31",
"upload_time_iso_8601": "2025-10-07T21:41:31.727172Z",
"url": "https://files.pythonhosted.org/packages/f3/4e/816d49101835c683681be78057b96b3cf7920202bec10eada5b091df6a46/zmesh-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "69c526bf97c2e8eb8e0c327ed29851e1a0f82b11ee4f3b2a722ab4180ec641fc",
"md5": "b99c36570f8fc1d48a9ae147df10448e",
"sha256": "02cb20206b226c6494fd720b0557e8a048e67e6ea9f13ad1106e56d2ddec7d04"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "b99c36570f8fc1d48a9ae147df10448e",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 193592,
"upload_time": "2025-10-07T21:41:32",
"upload_time_iso_8601": "2025-10-07T21:41:32.659720Z",
"url": "https://files.pythonhosted.org/packages/69/c5/26bf97c2e8eb8e0c327ed29851e1a0f82b11ee4f3b2a722ab4180ec641fc/zmesh-1.9.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "33bacda532f41477f16fb1e799e49e924ab97c9e46b241b518d7389c85f7b6fb",
"md5": "4153b97235bfd14a01619f4901a0c5ad",
"sha256": "5025adea724b6d51a3997e92dfe47bf2675a2d59e2b3151c95a7e2f2ad91fabc"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4153b97235bfd14a01619f4901a0c5ad",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1989892,
"upload_time": "2025-10-07T21:41:33",
"upload_time_iso_8601": "2025-10-07T21:41:33.617912Z",
"url": "https://files.pythonhosted.org/packages/33/ba/cda532f41477f16fb1e799e49e924ab97c9e46b241b518d7389c85f7b6fb/zmesh-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "47c981e34c5fcc0f388170a5ee307478d81488ae748790d9cdc7c4bb736aeac4",
"md5": "404dd7f253efc672ef23142ca54a1cb3",
"sha256": "fea156a6814e676a380b43debe1ac8d58af8cb16232f7750baf8930c7b9d5f43"
},
"downloads": -1,
"filename": "zmesh-1.9.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "404dd7f253efc672ef23142ca54a1cb3",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 184134,
"upload_time": "2025-10-07T21:41:34",
"upload_time_iso_8601": "2025-10-07T21:41:34.976771Z",
"url": "https://files.pythonhosted.org/packages/47/c9/81e34c5fcc0f388170a5ee307478d81488ae748790d9cdc7c4bb736aeac4/zmesh-1.9.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5b2adc7c93bee0d5e7260b9f3d1efbc857184b1aef6670b48b2bcd29b0e01d42",
"md5": "0273204989053f8fc7d439a16b87b4d2",
"sha256": "fcac56b2f83db9b70fcb909a063d3c33e3076ee68fe62919d1bec2978f949111"
},
"downloads": -1,
"filename": "zmesh-1.9.0.tar.gz",
"has_sig": false,
"md5_digest": "0273204989053f8fc7d439a16b87b4d2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 268689,
"upload_time": "2025-10-07T21:41:36",
"upload_time_iso_8601": "2025-10-07T21:41:36.086775Z",
"url": "https://files.pythonhosted.org/packages/5b/2a/dc7c93bee0d5e7260b9f3d1efbc857184b1aef6670b48b2bcd29b0e01d42/zmesh-1.9.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-07 21:41:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "seung-lab",
"github_project": "zmesh",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "numpy",
"specs": []
}
],
"tox": true,
"lcname": "zmesh"
}