![Automated Tests](https://github.com/seung-lab/fastmorph/actions/workflows/run_tests.yml/badge.svg) [![PyPI version](https://badge.fury.io/py/fastmorph.svg)](https://badge.fury.io/py/fastmorph)
# fastmorph: multilabel 3D morphological image processing functions.
This is a collection of morphological 3D image operations that are tuned for working with dense 3D labeled images.
We provide the following multithreaded (except where noted) operations:
- Multi-Label Stenciled Dilation, Erosion, Opening, Closing
- Grayscale Stenciled Dilation, Erosion, Opening, Closing
- Multi-Label Spherical Erosion
- Binary Spherical Dilation, Opening, and Closing
- Multi-Label Fill Voids (single threaded)
Highlights compared to other libraries:
- Handles multi-labeled images
- Multithreaded
- High performance single-threaded
- Low memory usage
- Dilate computes mode of surrounding labels
Disadvantages versus other libraries:
- Stencil (structuring element) is fixed size 3x3x3 and all on.
```python
import fastmorph
# may be binary or unsigned integer 2D or 3D image
labels = np.load("my_labels.npy")
# multi-label capable morphological operators
# they use a 3x3x3 all on structuring element
# dilate picks the mode of surrounding labels
# by default only background (0) labels are filled
morphed = fastmorph.dilate(labels, parallel=2)
# processes every voxel
morphed = fastmorph.dilate(labels, background_only=False, parallel=2)
morphed = fastmorph.erode(labels)
morphed = fastmorph.opening(labels, parallel=2)
morphed = fastmorph.closing(labels, parallel=2)
# You can select grayscale dilation, erosion, opening, and
# closing by passing in a different Mode enum.
# The options are Mode.grey and Mode.multilabel
morphed = fastmorph.dilate(labels, mode=fastmorph.Mode.grey)
morphed = fastmorph.erode(labels, mode=fastmorph.Mode.grey)
# Dilate only supports binary images at this time.
# Radius is specified in physical units, but
# by default anisotropy = (1,1,1) so it is the
# same as voxels.
morphed = fastmorph.spherical_dilate(labels, radius=1, parallel=2, anisotropy=(1,1,1))
# open and close require dialate to work and so are binary only for now
morphed = fastmorph.spherical_open(labels, radius=1, parallel=2, anisotropy=(1,1,1))
morphed = fastmorph.spherical_close(labels, radius=1, parallel=2, anisotropy=(1,1,1))
# The rest support multilabel images.
morphed = fastmorph.spherical_erode(labels, radius=1, parallel=2, anisotropy=(1,1,1))
# Note: for boolean images, this function will directly call fill_voids
# and return a scalar for ct
# For integer images, more processing will be done to deal with multiple labels.
# A dict of { label: num_voxels_filled } for integer images will be returned.
# Note that for multilabel images, by default, if a label is totally enclosed by another,
# a FillError will be raised. If remove_enclosed is True, the label will be overwritten.
filled_labels, ct = fastmorph.fill_holes(labels, return_fill_count=True, remove_enclosed=False)
```
## Performance
A test run on an M1 Macbook Pro on `connectomics.npy.ckl`, a 512<sup>3</sup> volume with over 2000 dense labels had the following results for multilabel processing.
```
erode / 1 thread: 1.553 sec
erode / 2 threads: 0.885 sec
erode / 4 threads: 0.651 sec
dilate / background_only=True / 1 thread: 1.100 sec
dilate / background_only=True / 2 threads: 0.632 sec
dilate / background_only=True / 4 threads: 0.441 sec
dilate / background_only=False / 1 thread: 11.783 sec
dilate / background_only=False / 2 threads: 5.944 sec
dilate / background_only=False / 4 threads: 4.291 sec
dilate / background_only=False / 8 threads: 3.298 sec
scipy grey_dilation / 1 thread 14.648 sec
scipy grey_erode / 1 thread: 14.412 sec
skimage expand_labels / 1 thread: 62.248 sec
```
Test run on an M1 Macbook Pro with `ws.npy.ckl` a 512<sup>3</sup> volume with tens of thousands of components for multilabel processing.
```
erode / 1 thread: 2.380 sec
erode / 2 threads: 1.479 sec
erode / 4 threads: 1.164 sec
dilate / background_only=True / 1 thread: 1.598 sec
dilate / background_only=True / 2 threads: 1.011 sec
dilate / background_only=True / 4 threads: 0.805 sec
dilate / background_only=False / 1 thread: 25.182 sec
dilate / background_only=False / 2 threads: 13.513 sec
dilate / background_only=False / 4 threads: 8.749 sec
dilate / background_only=False / 8 threads: 6.640 sec
scipy grey_dilation / 1 thread 21.109 sec
scipy grey_erode / 1 thread: 20.305 sec
skimage expand_labels / 1 thread: 63.247 sec
```
Here is the performance on a completely zeroed 512<sup>3</sup> volume for multilabel processing.
```
erode / 1 thread: 0.462 sec
erode / 2 threads: 0.289 sec
erode / 4 threads: 0.229 sec
dilate / background_only=True / 1 thread: 2.337 sec
dilate / background_only=True / 2 threads: 1.344 sec
dilate / background_only=True / 4 threads: 1.021 sec
dilate / background_only=False / 1 thread: 2.267 sec
dilate / background_only=False / 2 threads: 1.251 sec
dilate / background_only=False / 4 threads: 0.944 sec
dilate / background_only=False / 8 threads: 0.718 sec
scipy grey_dilation / 1 thread 13.516 sec
scipy grey_erode / 1 thread: 13.326 sec
skimage expand_labels / 1 thread: 35.243 sec
```
### Memory Profiles
<center>
<img src="https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-dilate-bg-only-false.jpg" />
</center>
<center>
<img src="https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-dilate-bg-only-true.jpg" />
</center>
<center>
<img src="https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-skimage-expand_labels.jpg" />
</center>
Raw data
{
"_id": null,
"home_page": "https://github.com/seung-lab/fastmorph/",
"name": "fastmorph",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8.0",
"maintainer_email": null,
"keywords": "morphological dialate erode dilation erosion close open fill image processing",
"author": "William Silversmith",
"author_email": "ws9@princeton.edu",
"download_url": "https://files.pythonhosted.org/packages/cd/de/3c8c519d435ca743a4befe7fbe90c6e9975d46a3f635be3d53236a799fbd/fastmorph-1.2.1.tar.gz",
"platform": null,
"description": "![Automated Tests](https://github.com/seung-lab/fastmorph/actions/workflows/run_tests.yml/badge.svg) [![PyPI version](https://badge.fury.io/py/fastmorph.svg)](https://badge.fury.io/py/fastmorph)\n\n# fastmorph: multilabel 3D morphological image processing functions.\n\nThis is a collection of morphological 3D image operations that are tuned for working with dense 3D labeled images. \n\nWe provide the following multithreaded (except where noted) operations:\n\n- Multi-Label Stenciled Dilation, Erosion, Opening, Closing\n- Grayscale Stenciled Dilation, Erosion, Opening, Closing\n- Multi-Label Spherical Erosion\n- Binary Spherical Dilation, Opening, and Closing\n- Multi-Label Fill Voids (single threaded)\n\nHighlights compared to other libraries:\n\n- Handles multi-labeled images\n- Multithreaded\n- High performance single-threaded\n- Low memory usage\n- Dilate computes mode of surrounding labels\n\nDisadvantages versus other libraries:\n\n- Stencil (structuring element) is fixed size 3x3x3 and all on.\n\n\n```python\nimport fastmorph\n\n# may be binary or unsigned integer 2D or 3D image\nlabels = np.load(\"my_labels.npy\")\n\n\n# multi-label capable morphological operators\n# they use a 3x3x3 all on structuring element\n# dilate picks the mode of surrounding labels\n\n# by default only background (0) labels are filled\nmorphed = fastmorph.dilate(labels, parallel=2)\n# processes every voxel\nmorphed = fastmorph.dilate(labels, background_only=False, parallel=2)\n\nmorphed = fastmorph.erode(labels)\nmorphed = fastmorph.opening(labels, parallel=2)\nmorphed = fastmorph.closing(labels, parallel=2)\n\n# You can select grayscale dilation, erosion, opening, and \n# closing by passing in a different Mode enum.\n# The options are Mode.grey and Mode.multilabel\nmorphed = fastmorph.dilate(labels, mode=fastmorph.Mode.grey)\nmorphed = fastmorph.erode(labels, mode=fastmorph.Mode.grey)\n\n# Dilate only supports binary images at this time.\n# Radius is specified in physical units, but\n# by default anisotropy = (1,1,1) so it is the \n# same as voxels.\nmorphed = fastmorph.spherical_dilate(labels, radius=1, parallel=2, anisotropy=(1,1,1))\n\n# open and close require dialate to work and so are binary only for now\nmorphed = fastmorph.spherical_open(labels, radius=1, parallel=2, anisotropy=(1,1,1))\nmorphed = fastmorph.spherical_close(labels, radius=1, parallel=2, anisotropy=(1,1,1))\n\n# The rest support multilabel images.\nmorphed = fastmorph.spherical_erode(labels, radius=1, parallel=2, anisotropy=(1,1,1))\n\n# Note: for boolean images, this function will directly call fill_voids\n# and return a scalar for ct \n# For integer images, more processing will be done to deal with multiple labels.\n# A dict of { label: num_voxels_filled } for integer images will be returned.\n# Note that for multilabel images, by default, if a label is totally enclosed by another,\n# a FillError will be raised. If remove_enclosed is True, the label will be overwritten.\nfilled_labels, ct = fastmorph.fill_holes(labels, return_fill_count=True, remove_enclosed=False)\n```\n\n## Performance\n\nA test run on an M1 Macbook Pro on `connectomics.npy.ckl`, a 512<sup>3</sup> volume with over 2000 dense labels had the following results for multilabel processing.\n\n```\nerode / 1 thread: 1.553 sec\nerode / 2 threads: 0.885 sec\nerode / 4 threads: 0.651 sec\ndilate / background_only=True / 1 thread: 1.100 sec\ndilate / background_only=True / 2 threads: 0.632 sec\ndilate / background_only=True / 4 threads: 0.441 sec\ndilate / background_only=False / 1 thread: 11.783 sec\ndilate / background_only=False / 2 threads: 5.944 sec\ndilate / background_only=False / 4 threads: 4.291 sec\ndilate / background_only=False / 8 threads: 3.298 sec\nscipy grey_dilation / 1 thread 14.648 sec\nscipy grey_erode / 1 thread: 14.412 sec\nskimage expand_labels / 1 thread: 62.248 sec\n```\n\nTest run on an M1 Macbook Pro with `ws.npy.ckl` a 512<sup>3</sup> volume with tens of thousands of components for multilabel processing.\n\n```\nerode / 1 thread: 2.380 sec\nerode / 2 threads: 1.479 sec\nerode / 4 threads: 1.164 sec\ndilate / background_only=True / 1 thread: 1.598 sec\ndilate / background_only=True / 2 threads: 1.011 sec\ndilate / background_only=True / 4 threads: 0.805 sec\ndilate / background_only=False / 1 thread: 25.182 sec\ndilate / background_only=False / 2 threads: 13.513 sec\ndilate / background_only=False / 4 threads: 8.749 sec\ndilate / background_only=False / 8 threads: 6.640 sec\nscipy grey_dilation / 1 thread 21.109 sec\nscipy grey_erode / 1 thread: 20.305 sec\nskimage expand_labels / 1 thread: 63.247 sec\n```\n\nHere is the performance on a completely zeroed 512<sup>3</sup> volume for multilabel processing.\n\n```\nerode / 1 thread: 0.462 sec\nerode / 2 threads: 0.289 sec\nerode / 4 threads: 0.229 sec\ndilate / background_only=True / 1 thread: 2.337 sec\ndilate / background_only=True / 2 threads: 1.344 sec\ndilate / background_only=True / 4 threads: 1.021 sec\ndilate / background_only=False / 1 thread: 2.267 sec\ndilate / background_only=False / 2 threads: 1.251 sec\ndilate / background_only=False / 4 threads: 0.944 sec\ndilate / background_only=False / 8 threads: 0.718 sec\nscipy grey_dilation / 1 thread 13.516 sec\nscipy grey_erode / 1 thread: 13.326 sec\nskimage expand_labels / 1 thread: 35.243 sec\n```\n\n### Memory Profiles\n\n<center>\n<img src=\"https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-dilate-bg-only-false.jpg\" />\n</center>\n\n<center>\n<img src=\"https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-dilate-bg-only-true.jpg\" />\n</center>\n\n<center>\n<img src=\"https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-skimage-expand_labels.jpg\" />\n</center>\n",
"bugtrack_url": null,
"license": "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"summary": "Morphological image processing for 3D multi-label images.",
"version": "1.2.1",
"project_urls": {
"Homepage": "https://github.com/seung-lab/fastmorph/"
},
"split_keywords": [
"morphological",
"dialate",
"erode",
"dilation",
"erosion",
"close",
"open",
"fill",
"image",
"processing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4ff3356713e572997010e5f027cbeb139b2c7dfd147190a7d27784ae67a7236f",
"md5": "98402912207c9ca30246b5863e0c084c",
"sha256": "8ac2fc7db986b6333a15c1011aa2caa708e0deab8a33486ed3082eefcaf31646"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "98402912207c9ca30246b5863e0c084c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 194383,
"upload_time": "2024-11-21T06:17:36",
"upload_time_iso_8601": "2024-11-21T06:17:36.401850Z",
"url": "https://files.pythonhosted.org/packages/4f/f3/356713e572997010e5f027cbeb139b2c7dfd147190a7d27784ae67a7236f/fastmorph-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fbdf0c8b2e4989e4cb3b03b2edb4b35aee060133e7efe0eec96d9513ef21041e",
"md5": "a56cde8ce33d5793c9ae861f79acf42b",
"sha256": "99c36bfa83b9ad354984ff0403989d6c40d52c9415901f9bd2b7b681d050b3aa"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "a56cde8ce33d5793c9ae861f79acf42b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 161115,
"upload_time": "2024-11-21T06:17:38",
"upload_time_iso_8601": "2024-11-21T06:17:38.957640Z",
"url": "https://files.pythonhosted.org/packages/fb/df/0c8b2e4989e4cb3b03b2edb4b35aee060133e7efe0eec96d9513ef21041e/fastmorph-1.2.1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0eb21fc603b5e9adda50df32bf9f81414031049c8354dc7f91c82f34e1af17a9",
"md5": "86592a42accd09d467d6b14f957d808c",
"sha256": "4ec7c9f916cd2dcb08879e3a360e1d80d0fa30b5d8b8c4c78cbb2e81f1025f70"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "86592a42accd09d467d6b14f957d808c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 202086,
"upload_time": "2024-11-21T06:17:40",
"upload_time_iso_8601": "2024-11-21T06:17:40.554303Z",
"url": "https://files.pythonhosted.org/packages/0e/b2/1fc603b5e9adda50df32bf9f81414031049c8354dc7f91c82f34e1af17a9/fastmorph-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7a903fcae995d369938581c3a84bcf32cce92048b837e56dce540228150b7360",
"md5": "999d6b7abd63f69dfb49a2362641eb59",
"sha256": "0784ef6d6da193c7e6acbccd92af15570d061b77ab1ec5b2166c768a7a257bb8"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "999d6b7abd63f69dfb49a2362641eb59",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 254343,
"upload_time": "2024-11-21T06:17:42",
"upload_time_iso_8601": "2024-11-21T06:17:42.072785Z",
"url": "https://files.pythonhosted.org/packages/7a/90/3fcae995d369938581c3a84bcf32cce92048b837e56dce540228150b7360/fastmorph-1.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "156f7225e76dd6ade3785c2437612e1974e4a8967ffd32ae290b238af87b8935",
"md5": "ed4030d34f09a036e722f1f455412091",
"sha256": "578f550925d142b3ee93627f0d3a616e606b01eae8277ac49ee37bb34dd6c3ab"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ed4030d34f09a036e722f1f455412091",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 212256,
"upload_time": "2024-11-21T06:17:43",
"upload_time_iso_8601": "2024-11-21T06:17:43.892529Z",
"url": "https://files.pythonhosted.org/packages/15/6f/7225e76dd6ade3785c2437612e1974e4a8967ffd32ae290b238af87b8935/fastmorph-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d1c6adcf0dc355aff4200fb83281070fef19036274e53d4749fa18299ca8b0a6",
"md5": "eb38a1de4c283528f5df5a97f4f1e968",
"sha256": "a7aaf473372490e69d79c0773e7f24363aeebf4401a85ffbebebcb6d93fb18dc"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "eb38a1de4c283528f5df5a97f4f1e968",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 161303,
"upload_time": "2024-11-21T06:17:45",
"upload_time_iso_8601": "2024-11-21T06:17:45.563190Z",
"url": "https://files.pythonhosted.org/packages/d1/c6/adcf0dc355aff4200fb83281070fef19036274e53d4749fa18299ca8b0a6/fastmorph-1.2.1-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "11c03936331394133a8145e84eb5bb57327abc39a43ad73bb84ee801c14de0d3",
"md5": "a0e69e705c7537f2f2acb495089ae3bb",
"sha256": "21b90fdf58a0f996b081b69404063c0b8274a02c83856e8fefe593338eff8028"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "a0e69e705c7537f2f2acb495089ae3bb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 136942,
"upload_time": "2024-11-21T06:17:46",
"upload_time_iso_8601": "2024-11-21T06:17:46.652093Z",
"url": "https://files.pythonhosted.org/packages/11/c0/3936331394133a8145e84eb5bb57327abc39a43ad73bb84ee801c14de0d3/fastmorph-1.2.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6b75cd8f62033b2b154a7c169d6492b08c222fd256cbf2f1bc58c388ed8bacfd",
"md5": "d4ea6ed3b84a2585b4e56f76b8420cdc",
"sha256": "6ceb69f52fc06c6fe1408d372251cb5579362d92d8970484137bc2262384038e"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "d4ea6ed3b84a2585b4e56f76b8420cdc",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 196138,
"upload_time": "2024-11-21T06:17:47",
"upload_time_iso_8601": "2024-11-21T06:17:47.672457Z",
"url": "https://files.pythonhosted.org/packages/6b/75/cd8f62033b2b154a7c169d6492b08c222fd256cbf2f1bc58c388ed8bacfd/fastmorph-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "83d2f0fa96b551dd0bf441385193f24fb77ea766be7491e496f39590107f8fea",
"md5": "87cb45369bead1266323267b720c111e",
"sha256": "8a8e87a6c67105a6a24e535fc0fe1b0ac598951319d2d3208980d6e156c7fb95"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "87cb45369bead1266323267b720c111e",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 162362,
"upload_time": "2024-11-21T06:17:48",
"upload_time_iso_8601": "2024-11-21T06:17:48.859129Z",
"url": "https://files.pythonhosted.org/packages/83/d2/f0fa96b551dd0bf441385193f24fb77ea766be7491e496f39590107f8fea/fastmorph-1.2.1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b945ef4953b0f5da68334dc093c55be835c317979b1cfb537831f540267aae36",
"md5": "472a7e495028726afe264f3e0ffd1816",
"sha256": "9ebc7195d770da421b811419b74a66dcf2b8150b5e26cfd3c7d28f59b0a29338"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "472a7e495028726afe264f3e0ffd1816",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 203830,
"upload_time": "2024-11-21T06:17:50",
"upload_time_iso_8601": "2024-11-21T06:17:50.528281Z",
"url": "https://files.pythonhosted.org/packages/b9/45/ef4953b0f5da68334dc093c55be835c317979b1cfb537831f540267aae36/fastmorph-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "942014e10d17b80b7b1675ddd60d4b6d9f60fddb1584210c5c916d36f2086f04",
"md5": "a8a8ef093c8c60a67ccad13a2239f38f",
"sha256": "e69b4909116fcf721d25611d95b3e4c0570b89a6e1238dfed7175d92b7530ae5"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "a8a8ef093c8c60a67ccad13a2239f38f",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 256454,
"upload_time": "2024-11-21T06:17:51",
"upload_time_iso_8601": "2024-11-21T06:17:51.762482Z",
"url": "https://files.pythonhosted.org/packages/94/20/14e10d17b80b7b1675ddd60d4b6d9f60fddb1584210c5c916d36f2086f04/fastmorph-1.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "91e328ad03e4ed303a5284971cd276c07fd532be78bcf0cd3f5ae59478226a7c",
"md5": "4398c471731a48f3226785c2706ba8e1",
"sha256": "081ca003347135fdcb99e08a59b360659d37d44e42d7487e4ee9089d2eaac4f3"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4398c471731a48f3226785c2706ba8e1",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 212984,
"upload_time": "2024-11-21T06:17:53",
"upload_time_iso_8601": "2024-11-21T06:17:53.454147Z",
"url": "https://files.pythonhosted.org/packages/91/e3/28ad03e4ed303a5284971cd276c07fd532be78bcf0cd3f5ae59478226a7c/fastmorph-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f9fea7c558c4cd6b154b203cd35bb28e956a67abe3677a6f2f912d1e4666d510",
"md5": "ce302a0b0736f5710323bcd2d0ffc477",
"sha256": "606ccec71e78b0a7f05857d87a436d1291d2c91f2d71c3080df3c8752127781f"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "ce302a0b0736f5710323bcd2d0ffc477",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 162241,
"upload_time": "2024-11-21T06:17:54",
"upload_time_iso_8601": "2024-11-21T06:17:54.624377Z",
"url": "https://files.pythonhosted.org/packages/f9/fe/a7c558c4cd6b154b203cd35bb28e956a67abe3677a6f2f912d1e4666d510/fastmorph-1.2.1-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "48babe07c22207a3b4c607b6a755799bd374f27cc3d6d5343fce309b32528eea",
"md5": "eef80fca4732801fdb83d8ee7d254449",
"sha256": "f678e41c822a4d427bb95adc09c50921fce2010f355375b4fb1e86ff3db41fac"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "eef80fca4732801fdb83d8ee7d254449",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 137591,
"upload_time": "2024-11-21T06:17:55",
"upload_time_iso_8601": "2024-11-21T06:17:55.639528Z",
"url": "https://files.pythonhosted.org/packages/48/ba/be07c22207a3b4c607b6a755799bd374f27cc3d6d5343fce309b32528eea/fastmorph-1.2.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "61324bc700daa35178d2403ffb77e55df39666e9c177b0bd6b6f34c1f8725a36",
"md5": "a42d2da544c473dc0290002ecd9f50ec",
"sha256": "5e57cbf732ecd877f4c8c6486d9912a13787e7ec03ebe4803d5a765b0a18c303"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp312-cp312-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "a42d2da544c473dc0290002ecd9f50ec",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 194990,
"upload_time": "2024-11-21T06:17:56",
"upload_time_iso_8601": "2024-11-21T06:17:56.582479Z",
"url": "https://files.pythonhosted.org/packages/61/32/4bc700daa35178d2403ffb77e55df39666e9c177b0bd6b6f34c1f8725a36/fastmorph-1.2.1-cp312-cp312-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "970822b7469dd5d991d6a4cf79e969a4643c8081c8a8070532b0a1d09b1536f8",
"md5": "60503a383440ab10044d7ef786f06b36",
"sha256": "bbecf2f88171111d9da19fe42d1cb5488b3edc6cd9e88cbc4cb1bcf4e8fbfc17"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp312-cp312-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "60503a383440ab10044d7ef786f06b36",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 339298,
"upload_time": "2024-11-21T06:17:58",
"upload_time_iso_8601": "2024-11-21T06:17:58.977970Z",
"url": "https://files.pythonhosted.org/packages/97/08/22b7469dd5d991d6a4cf79e969a4643c8081c8a8070532b0a1d09b1536f8/fastmorph-1.2.1-cp312-cp312-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "da337d265adef1abb2822b396cf32ad1fe291b2c6a2af825206f5c6b6596008d",
"md5": "425efd168a26c26c89f31a82fb97478c",
"sha256": "a391c457c3c3b13aa3f4671d4e54d7100d8b6e28b533d1d9f05cf01d56dd60f3"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "425efd168a26c26c89f31a82fb97478c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 161619,
"upload_time": "2024-11-21T06:18:00",
"upload_time_iso_8601": "2024-11-21T06:18:00.717016Z",
"url": "https://files.pythonhosted.org/packages/da/33/7d265adef1abb2822b396cf32ad1fe291b2c6a2af825206f5c6b6596008d/fastmorph-1.2.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f471f74b55ebfa5c8f36822dffa56bcd5921c1a0cf637373cdaca96e471f8522",
"md5": "74e992efdaa817b52d24e626ec8d3481",
"sha256": "ccb6c48c26c881133ecfd1482f1b93b37a71783fc9003fd9c8a521df808227fd"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "74e992efdaa817b52d24e626ec8d3481",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 203364,
"upload_time": "2024-11-21T06:18:01",
"upload_time_iso_8601": "2024-11-21T06:18:01.797904Z",
"url": "https://files.pythonhosted.org/packages/f4/71/f74b55ebfa5c8f36822dffa56bcd5921c1a0cf637373cdaca96e471f8522/fastmorph-1.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "91dd435f6104b1cc22f763d15b9016cb7d261dfebabd0150922ab6791219625d",
"md5": "45edc0fd5d5aa2455df42881cff2b287",
"sha256": "07235ac7db1fd0d2fc1c6b5156311b27b162269558d5139a60dd27e65c9e34f7"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "45edc0fd5d5aa2455df42881cff2b287",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 212523,
"upload_time": "2024-11-21T06:18:02",
"upload_time_iso_8601": "2024-11-21T06:18:02.827428Z",
"url": "https://files.pythonhosted.org/packages/91/dd/435f6104b1cc22f763d15b9016cb7d261dfebabd0150922ab6791219625d/fastmorph-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c8792db51c288e6ad70c35d5612d324c79517a7873f7d1000eba47c958ecd136",
"md5": "c6d49224bc6256c7571193b0b3e6e72b",
"sha256": "14bc12051835273586728821d136b06cebffb14502466aea5271e2b297c4e52f"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "c6d49224bc6256c7571193b0b3e6e72b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 162984,
"upload_time": "2024-11-21T06:18:03",
"upload_time_iso_8601": "2024-11-21T06:18:03.809558Z",
"url": "https://files.pythonhosted.org/packages/c8/79/2db51c288e6ad70c35d5612d324c79517a7873f7d1000eba47c958ecd136/fastmorph-1.2.1-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bc10ff7289ddf6c7820e0e66ef13ff6a2982d2b260011585698b83f5c53c0372",
"md5": "c3c6de79bf548870ac14a75bfe010776",
"sha256": "91c3c962088eb68858327e6acf7df2f071863b915783b62e0467fd0c89ee92d3"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "c3c6de79bf548870ac14a75bfe010776",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 138102,
"upload_time": "2024-11-21T06:18:04",
"upload_time_iso_8601": "2024-11-21T06:18:04.964248Z",
"url": "https://files.pythonhosted.org/packages/bc/10/ff7289ddf6c7820e0e66ef13ff6a2982d2b260011585698b83f5c53c0372/fastmorph-1.2.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f05a62d45d4eac46b456791c33f291772f0dd1e8e1de81569c9ec0a489183d60",
"md5": "a65153d645c2413ca2ec7bd7cfedfd95",
"sha256": "193c7455b847552b35fdaaa83503838ab1d52674caae559b91da874b6e286580"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "a65153d645c2413ca2ec7bd7cfedfd95",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8.0",
"size": 195025,
"upload_time": "2024-11-21T06:18:06",
"upload_time_iso_8601": "2024-11-21T06:18:06.135725Z",
"url": "https://files.pythonhosted.org/packages/f0/5a/62d45d4eac46b456791c33f291772f0dd1e8e1de81569c9ec0a489183d60/fastmorph-1.2.1-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3a9adcf4edaefaa6ae07641c47cdbebef765005580ae2590395ddffbbce54f89",
"md5": "552a245c00d9c02e66c7472a47e6a667",
"sha256": "6a3f9b10e35872f8f63009a644278caafde50f361c1aaf4a7c0c7fe05883ad66"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "552a245c00d9c02e66c7472a47e6a667",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8.0",
"size": 161666,
"upload_time": "2024-11-21T06:18:09",
"upload_time_iso_8601": "2024-11-21T06:18:09.266368Z",
"url": "https://files.pythonhosted.org/packages/3a/9a/dcf4edaefaa6ae07641c47cdbebef765005580ae2590395ddffbbce54f89/fastmorph-1.2.1-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e17ab514a8b06caddfeada032edc21c077f6a9ae557fb31010adffe2f76a9cab",
"md5": "f1328160ee039fa8922f4653e50260a0",
"sha256": "a8e228d1bb20e9c7d237b4c89f33adced9ad46e86b8ce693d66be2129bd23707"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "f1328160ee039fa8922f4653e50260a0",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8.0",
"size": 203338,
"upload_time": "2024-11-21T06:18:10",
"upload_time_iso_8601": "2024-11-21T06:18:10.299515Z",
"url": "https://files.pythonhosted.org/packages/e1/7a/b514a8b06caddfeada032edc21c077f6a9ae557fb31010adffe2f76a9cab/fastmorph-1.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "abf0a31a6bf860cb551c24549bdd9d1cc7d570d602d802fd7802b61a57730743",
"md5": "23a8e953b5495e032514ddac4490abe4",
"sha256": "d2c6b68f0c271173dcd4c0af976b8a69192873a13955be8d2d36269b7ffc781b"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "23a8e953b5495e032514ddac4490abe4",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8.0",
"size": 255859,
"upload_time": "2024-11-21T06:18:11",
"upload_time_iso_8601": "2024-11-21T06:18:11.522405Z",
"url": "https://files.pythonhosted.org/packages/ab/f0/a31a6bf860cb551c24549bdd9d1cc7d570d602d802fd7802b61a57730743/fastmorph-1.2.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7aebd7a3799cb7b23e262824151c72482af94aa6e88a62610ec693e3e5695353",
"md5": "293823b144780e0e13c88085321817b9",
"sha256": "4192cff85d85afaabbdfa954dee7af51720da3d6c011a691affa304b5d0d533c"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "293823b144780e0e13c88085321817b9",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8.0",
"size": 212398,
"upload_time": "2024-11-21T06:18:12",
"upload_time_iso_8601": "2024-11-21T06:18:12.861904Z",
"url": "https://files.pythonhosted.org/packages/7a/eb/d7a3799cb7b23e262824151c72482af94aa6e88a62610ec693e3e5695353/fastmorph-1.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7e1b934e084c5d6b97485c8cfb56d27b58dc4760e4a57dc305778a07237cf935",
"md5": "4b78b277457089e0de111ba7d882c727",
"sha256": "2ef823d43b11cc80c7d83fe48825e411b0579ad85782ddeb458ca1119b07724a"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "4b78b277457089e0de111ba7d882c727",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8.0",
"size": 163082,
"upload_time": "2024-11-21T06:18:13",
"upload_time_iso_8601": "2024-11-21T06:18:13.899642Z",
"url": "https://files.pythonhosted.org/packages/7e/1b/934e084c5d6b97485c8cfb56d27b58dc4760e4a57dc305778a07237cf935/fastmorph-1.2.1-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d5d989b852fd44a800ebe717782511724d58f01eff551cb8ea6ba9384b9bfcc6",
"md5": "3020e4f223cc195ac18ee5db24ac61f8",
"sha256": "0f7955ef043a4ab04a767104f5a322023c38ea002d43325e100d5af68ad89e89"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "3020e4f223cc195ac18ee5db24ac61f8",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8.0",
"size": 138119,
"upload_time": "2024-11-21T06:18:14",
"upload_time_iso_8601": "2024-11-21T06:18:14.913585Z",
"url": "https://files.pythonhosted.org/packages/d5/d9/89b852fd44a800ebe717782511724d58f01eff551cb8ea6ba9384b9bfcc6/fastmorph-1.2.1-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8a594f64eaaeeb27405b50779ca3bacf0b07fe2f47179c162ae1fe7dd89db465",
"md5": "26e98d9d7dc2d13cbb62f88b6af99950",
"sha256": "4f90eacd665f87fd7e4a05e2eae116c6a63fccd5a1c8e400c9859f188ddd6e04"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "26e98d9d7dc2d13cbb62f88b6af99950",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 194249,
"upload_time": "2024-11-21T06:18:15",
"upload_time_iso_8601": "2024-11-21T06:18:15.925630Z",
"url": "https://files.pythonhosted.org/packages/8a/59/4f64eaaeeb27405b50779ca3bacf0b07fe2f47179c162ae1fe7dd89db465/fastmorph-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f49b109b1d76de1c86507372bd0f3a8e15f683f78e4900ef282ae95ef2dea7dc",
"md5": "d15a280494c0c43d46578d70c0582d89",
"sha256": "336721f257787b9f0c92210a2ddc60dc163420cc3d6b91e5c8b6e91de40ba6b5"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "d15a280494c0c43d46578d70c0582d89",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 161024,
"upload_time": "2024-11-21T06:18:17",
"upload_time_iso_8601": "2024-11-21T06:18:17.044052Z",
"url": "https://files.pythonhosted.org/packages/f4/9b/109b1d76de1c86507372bd0f3a8e15f683f78e4900ef282ae95ef2dea7dc/fastmorph-1.2.1-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "05594cf347f43a6201138ad9060e9e4e063bcc1bd315bfea0dd9d90e3ea2eb3d",
"md5": "ce1b0ca3c3b0594a8dbdb2bbadd4315e",
"sha256": "6b6c8bb6a00d04d2900112ba9cbab81ff8becace2541439b60ab07b9188d111b"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "ce1b0ca3c3b0594a8dbdb2bbadd4315e",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 201816,
"upload_time": "2024-11-21T06:18:18",
"upload_time_iso_8601": "2024-11-21T06:18:18.023328Z",
"url": "https://files.pythonhosted.org/packages/05/59/4cf347f43a6201138ad9060e9e4e063bcc1bd315bfea0dd9d90e3ea2eb3d/fastmorph-1.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b186f8d41972fb41c68ebd54ceb7b46c3f0ac3e5963ef836c2ea635a5cb1801c",
"md5": "cda6087658e296b29b7e5c66854b6dda",
"sha256": "daddd86afb351cf5560a6593ed4cc604b66efcf1812d6fa8171f02e06ee98598"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "cda6087658e296b29b7e5c66854b6dda",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 254164,
"upload_time": "2024-11-21T06:18:19",
"upload_time_iso_8601": "2024-11-21T06:18:19.719419Z",
"url": "https://files.pythonhosted.org/packages/b1/86/f8d41972fb41c68ebd54ceb7b46c3f0ac3e5963ef836c2ea635a5cb1801c/fastmorph-1.2.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "90a65bc8b0d32204e4ff9765cb38bbf0243104b2bb8a7838747dd5f5b984c12c",
"md5": "2ddebc540913f3c0e14a8453d52f6796",
"sha256": "50bf6ba66afb47bf8e47dd5c9534b4bc206bdf814aac7425b4d5e522b29c11ac"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "2ddebc540913f3c0e14a8453d52f6796",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 212203,
"upload_time": "2024-11-21T06:18:21",
"upload_time_iso_8601": "2024-11-21T06:18:21.367487Z",
"url": "https://files.pythonhosted.org/packages/90/a6/5bc8b0d32204e4ff9765cb38bbf0243104b2bb8a7838747dd5f5b984c12c/fastmorph-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a07bbcb99442dcdb7435da950d57f2f5ccf3f1409476388dc2fb3164d6db408d",
"md5": "51a249d64c951c9c41217ab23c41a17a",
"sha256": "a9d8028ff0bf44fc6c2668b79349fc2cf454539280319d2afe0e15735b3e996e"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "51a249d64c951c9c41217ab23c41a17a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 161345,
"upload_time": "2024-11-21T06:18:22",
"upload_time_iso_8601": "2024-11-21T06:18:22.633629Z",
"url": "https://files.pythonhosted.org/packages/a0/7b/bcb99442dcdb7435da950d57f2f5ccf3f1409476388dc2fb3164d6db408d/fastmorph-1.2.1-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "45db40ea520664ab9a16cbc1d1426909380b3a6e5278f2697d3cd90cf4fa4d6b",
"md5": "bce333eb73669834f694a0eea0be2c0b",
"sha256": "0d54f229f667dccd35875dd600efd3fb7ecbaabd50343e8c6014754b83bd7e86"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "bce333eb73669834f694a0eea0be2c0b",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 137036,
"upload_time": "2024-11-21T06:18:24",
"upload_time_iso_8601": "2024-11-21T06:18:24.305383Z",
"url": "https://files.pythonhosted.org/packages/45/db/40ea520664ab9a16cbc1d1426909380b3a6e5278f2697d3cd90cf4fa4d6b/fastmorph-1.2.1-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1b48633d93a34a690b6e4601e5b836bf16abe65b6b67cd78ec56c96bc29b4039",
"md5": "df3960644e88f4d531e1ae612b0a3f74",
"sha256": "a3669eeda06cd1d93b5453cee574b7a3b6ed6e294f91ecb6419cf62b716a2be3"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "df3960644e88f4d531e1ae612b0a3f74",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 194523,
"upload_time": "2024-11-21T06:18:25",
"upload_time_iso_8601": "2024-11-21T06:18:25.344275Z",
"url": "https://files.pythonhosted.org/packages/1b/48/633d93a34a690b6e4601e5b836bf16abe65b6b67cd78ec56c96bc29b4039/fastmorph-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e717aef5aedad33c88cf3ea4d9473d409174e9d9b9fc9ed5f3e443e62934380d",
"md5": "f609413abe089f31c07f7db2c33da896",
"sha256": "8adb772b27b2b49cde7648c633a1ac1f673730269819b81a7dcc4d81635df5b7"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "f609413abe089f31c07f7db2c33da896",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 161243,
"upload_time": "2024-11-21T06:18:26",
"upload_time_iso_8601": "2024-11-21T06:18:26.346626Z",
"url": "https://files.pythonhosted.org/packages/e7/17/aef5aedad33c88cf3ea4d9473d409174e9d9b9fc9ed5f3e443e62934380d/fastmorph-1.2.1-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c9cca4e4e85c5557bf6ba275fedf72be6380f4fcb44995c98dac7486e420bfb9",
"md5": "b3bf71c2e2140f53b6320e8f58674c22",
"sha256": "8ac1e8d72ea1fb34af8bcfedf1e979170f048f2be2ab1addfe346e6930f883e7"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "b3bf71c2e2140f53b6320e8f58674c22",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 201998,
"upload_time": "2024-11-21T06:18:27",
"upload_time_iso_8601": "2024-11-21T06:18:27.385595Z",
"url": "https://files.pythonhosted.org/packages/c9/cc/a4e4e85c5557bf6ba275fedf72be6380f4fcb44995c98dac7486e420bfb9/fastmorph-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8eede4e28f57357d98e2dbbf20899fb416020a2657d84ac74bfd812dc9e2f4d2",
"md5": "1b257e9487de0e1e32348fd683f51fc6",
"sha256": "94ed472a0d8ff79a75733a324aeae9139566924d7bb5cbad0d14d8781f4db51f"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "1b257e9487de0e1e32348fd683f51fc6",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 256157,
"upload_time": "2024-11-21T06:18:28",
"upload_time_iso_8601": "2024-11-21T06:18:28.411879Z",
"url": "https://files.pythonhosted.org/packages/8e/ed/e4e28f57357d98e2dbbf20899fb416020a2657d84ac74bfd812dc9e2f4d2/fastmorph-1.2.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "00796ff6e89e8362a8eaab894338b02817394ee15876d2e3bb60d42728f4a813",
"md5": "cb33b01118242deb0c73681918bdb7dd",
"sha256": "987aca59b19a02785a25e911f0a182df56dffb3fa56aa144d7076ad02db0314b"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "cb33b01118242deb0c73681918bdb7dd",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 212619,
"upload_time": "2024-11-21T06:18:29",
"upload_time_iso_8601": "2024-11-21T06:18:29.440962Z",
"url": "https://files.pythonhosted.org/packages/00/79/6ff6e89e8362a8eaab894338b02817394ee15876d2e3bb60d42728f4a813/fastmorph-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6a8aa47c6e44e3c53e89e23576dfebb6de8c7c9e3dd15c1f4867339ecabfea9a",
"md5": "e3e1ac65da422a9a4d57c45d75f025dc",
"sha256": "914dbc26e555855884fcedaa9b4a8b7ee24b2418e909aa67b898d1e08ca6b479"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "e3e1ac65da422a9a4d57c45d75f025dc",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 161494,
"upload_time": "2024-11-21T06:18:30",
"upload_time_iso_8601": "2024-11-21T06:18:30.485847Z",
"url": "https://files.pythonhosted.org/packages/6a/8a/a47c6e44e3c53e89e23576dfebb6de8c7c9e3dd15c1f4867339ecabfea9a/fastmorph-1.2.1-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b1537f84c762ea72f8139f2bd88d7e07eb230e027345fa68f1550a8ce15bdecb",
"md5": "b685dc8b125fbf094534a344aaf7e53c",
"sha256": "06bb59866f0d421463ec3e62d1bc7b56e6a3e75fcc3367a977904213de01ff6a"
},
"downloads": -1,
"filename": "fastmorph-1.2.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "b685dc8b125fbf094534a344aaf7e53c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 136816,
"upload_time": "2024-11-21T06:18:31",
"upload_time_iso_8601": "2024-11-21T06:18:31.635770Z",
"url": "https://files.pythonhosted.org/packages/b1/53/7f84c762ea72f8139f2bd88d7e07eb230e027345fa68f1550a8ce15bdecb/fastmorph-1.2.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cdde3c8c519d435ca743a4befe7fbe90c6e9975d46a3f635be3d53236a799fbd",
"md5": "a6f875b6cd4a927f482e24bf88189e4f",
"sha256": "cdd4da43e9362bf2c13bd9611b7c1249cd902d0340e8cc4394d98fbe44574e53"
},
"downloads": -1,
"filename": "fastmorph-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "a6f875b6cd4a927f482e24bf88189e4f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8.0",
"size": 26408,
"upload_time": "2024-11-21T06:18:32",
"upload_time_iso_8601": "2024-11-21T06:18:32.815966Z",
"url": "https://files.pythonhosted.org/packages/cd/de/3c8c519d435ca743a4befe7fbe90c6e9975d46a3f635be3d53236a799fbd/fastmorph-1.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-21 06:18:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "seung-lab",
"github_project": "fastmorph",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "fastmorph"
}