 [](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 (mostly 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)
# If the holes in your segmentation are imperfectly sealed, consider
# using the following options.
filled_labels = fastmorph.fill_holes(
labels,
# runs 2d fill on the sides of the cube for each binary image
fix_borders=True,
# does a dilate and then an erode after filling holes
morphological_closing=True,
)
```
## 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.9.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/07/1c/a3ff9d96b9eb3c52bf2d1b951e9d0ba1129efd66097608718e906102cfce/fastmorph-1.6.0.tar.gz",
"platform": null,
"description": " [](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 (mostly 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# If the holes in your segmentation are imperfectly sealed, consider\n# using the following options.\nfilled_labels = fastmorph.fill_holes(\n\tlabels, \n\t# runs 2d fill on the sides of the cube for each binary image\n\tfix_borders=True, \n\t# does a dilate and then an erode after filling holes\n\tmorphological_closing=True,\n)\n\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": "LGPL-3.0-or-later",
"summary": "Morphological image processing for 3D multi-label images.",
"version": "1.6.0",
"project_urls": {
"Homepage": "https://github.com/seung-lab/fastmorph/"
},
"split_keywords": [
"morphological",
"dialate",
"erode",
"dilation",
"erosion",
"close",
"open",
"fill",
"image",
"processing"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3d5bf9478386a143fb830371b3778be0050f2fe2ac1eb325c45232fb5f19a55a",
"md5": "8d35c9794b85dd3c46a386b3b9173010",
"sha256": "73f495c58e934838d6c5ca99146dae1e61fc1416d1388f3f3f7ce05bd9139166"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "8d35c9794b85dd3c46a386b3b9173010",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9.0",
"size": 203864,
"upload_time": "2025-10-08T22:37:58",
"upload_time_iso_8601": "2025-10-08T22:37:58.075703Z",
"url": "https://files.pythonhosted.org/packages/3d/5b/f9478386a143fb830371b3778be0050f2fe2ac1eb325c45232fb5f19a55a/fastmorph-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4d782db6fc8bc9476d0738bb0c54e035c50c518665efa43d525c935a32b8386c",
"md5": "78c837654a36e0d0fefc67d44c4fdcfb",
"sha256": "5712a73889db62a5e04238f65f7f0457d518ec62cdc6ce596352512a078a32e4"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "78c837654a36e0d0fefc67d44c4fdcfb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9.0",
"size": 174497,
"upload_time": "2025-10-08T22:37:59",
"upload_time_iso_8601": "2025-10-08T22:37:59.577849Z",
"url": "https://files.pythonhosted.org/packages/4d/78/2db6fc8bc9476d0738bb0c54e035c50c518665efa43d525c935a32b8386c/fastmorph-1.6.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "40ae3da03d885be53dc76fdf82ee8f5cd97cfdffeadb24a1df492d6ade081023",
"md5": "84ea0ec42d8a0751785de299a513373d",
"sha256": "cbe6a3e8aac58ed7cbd50aad708334e35837098cca0a0256229ed7df181f321d"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "84ea0ec42d8a0751785de299a513373d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9.0",
"size": 252182,
"upload_time": "2025-10-08T22:38:00",
"upload_time_iso_8601": "2025-10-08T22:38:00.951335Z",
"url": "https://files.pythonhosted.org/packages/40/ae/3da03d885be53dc76fdf82ee8f5cd97cfdffeadb24a1df492d6ade081023/fastmorph-1.6.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3e3f65ad1b91ab91b70af2e9dbd989e2c2a62bb377a51c1aa156650a6a0b057d",
"md5": "b36639895ebe594dd1a266f0a6027007",
"sha256": "31c4e45d70d43a261e26b223a871b42f6549dac41ffdb4fdff358fe6bbcb2ebf"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "b36639895ebe594dd1a266f0a6027007",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9.0",
"size": 260728,
"upload_time": "2025-10-08T22:38:02",
"upload_time_iso_8601": "2025-10-08T22:38:02.338836Z",
"url": "https://files.pythonhosted.org/packages/3e/3f/65ad1b91ab91b70af2e9dbd989e2c2a62bb377a51c1aa156650a6a0b057d/fastmorph-1.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "391ffbbe0eeee27f0f593c8fcd665303e5f40b68b35ea748f319b6b1f9d1ae14",
"md5": "3aafe18d9aad64cab5b4fc60bf0c790e",
"sha256": "b19235ed1081b0f6d34c07653e15ef58e4cf0b29125d9af3cb2ca62f684bd23b"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "3aafe18d9aad64cab5b4fc60bf0c790e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9.0",
"size": 180012,
"upload_time": "2025-10-08T22:38:05",
"upload_time_iso_8601": "2025-10-08T22:38:05.319287Z",
"url": "https://files.pythonhosted.org/packages/39/1f/fbbe0eeee27f0f593c8fcd665303e5f40b68b35ea748f319b6b1f9d1ae14/fastmorph-1.6.0-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6521ba02b092ef5b4976ac9e6429c5a0428402b46930b388a1f3dc4c399b72cf",
"md5": "6bfa0f9aa2150bd74d448d0ffad87430",
"sha256": "2c46b0be666fcfeef8c057e2aa443ffc85b16a7bd292f055b12f6638ae1ab451"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "6bfa0f9aa2150bd74d448d0ffad87430",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9.0",
"size": 162672,
"upload_time": "2025-10-08T22:38:04",
"upload_time_iso_8601": "2025-10-08T22:38:04.360863Z",
"url": "https://files.pythonhosted.org/packages/65/21/ba02b092ef5b4976ac9e6429c5a0428402b46930b388a1f3dc4c399b72cf/fastmorph-1.6.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f6eba05e0119cc527043bfa865d6d76b877b7ca549b0040c6162bcd4cf63a1fa",
"md5": "64c3652a0e3a802a16b2479b1cfa530b",
"sha256": "bf726a22143cf12c694020f3cbc3a5dd92ec3f43eb6f0ce4a4753c0d62b1a1d4"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "64c3652a0e3a802a16b2479b1cfa530b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9.0",
"size": 205473,
"upload_time": "2025-10-08T22:38:06",
"upload_time_iso_8601": "2025-10-08T22:38:06.220124Z",
"url": "https://files.pythonhosted.org/packages/f6/eb/a05e0119cc527043bfa865d6d76b877b7ca549b0040c6162bcd4cf63a1fa/fastmorph-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1df3993d07624ceb8d89d605434d9630d20f37a50cd91b8a6383ad4adf4052c6",
"md5": "27a08a2487fadf417040242f871a167a",
"sha256": "39e6c2c02ea878b71a83c8d6e6cb0d1fef2b54f2924871c682fd97b6e3d2d725"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "27a08a2487fadf417040242f871a167a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9.0",
"size": 175798,
"upload_time": "2025-10-08T22:38:07",
"upload_time_iso_8601": "2025-10-08T22:38:07.258089Z",
"url": "https://files.pythonhosted.org/packages/1d/f3/993d07624ceb8d89d605434d9630d20f37a50cd91b8a6383ad4adf4052c6/fastmorph-1.6.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "48ea52f6ed2706f5b95fcdaa55ce2548caa1945888676be1577fb5491cb28916",
"md5": "2cb6b8af42f6ba10c8b571a750c37a31",
"sha256": "57afb3fb83b9a5266635f00fec420ba0cb6b73b8aa76e04b96a8bdf0ef2c3dda"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "2cb6b8af42f6ba10c8b571a750c37a31",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9.0",
"size": 253926,
"upload_time": "2025-10-08T22:38:08",
"upload_time_iso_8601": "2025-10-08T22:38:08.482747Z",
"url": "https://files.pythonhosted.org/packages/48/ea/52f6ed2706f5b95fcdaa55ce2548caa1945888676be1577fb5491cb28916/fastmorph-1.6.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "97374f3f94d397cab4f76dfda416d6292d51fd1a3bf9f6e6f46b5eb3c5f77c99",
"md5": "4b1a8c60fb5740d05288a420d2e93194",
"sha256": "7b28dc7a236c1e65ffe3308702ea0748defc4ee482017f249d1393fffbc6a7ff"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "4b1a8c60fb5740d05288a420d2e93194",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9.0",
"size": 262343,
"upload_time": "2025-10-08T22:38:09",
"upload_time_iso_8601": "2025-10-08T22:38:09.370993Z",
"url": "https://files.pythonhosted.org/packages/97/37/4f3f94d397cab4f76dfda416d6292d51fd1a3bf9f6e6f46b5eb3c5f77c99/fastmorph-1.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d61c7cc880aae59b3ab22eb07a3e31717f1ff3152d7b9bc416e8783d739477f0",
"md5": "81be92f03bb06f5cea875c7d30768db4",
"sha256": "d49ae23316bae750892a0a3578aa4d4b2356b6e85dba168cac190369964fc030"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "81be92f03bb06f5cea875c7d30768db4",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9.0",
"size": 181318,
"upload_time": "2025-10-08T22:38:11",
"upload_time_iso_8601": "2025-10-08T22:38:11.421171Z",
"url": "https://files.pythonhosted.org/packages/d6/1c/7cc880aae59b3ab22eb07a3e31717f1ff3152d7b9bc416e8783d739477f0/fastmorph-1.6.0-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8da91c40a484486b81e0ff0923aa6a939124dd59fa99c50af4a87d37d3e5d2db",
"md5": "e9622b79cf218b2e5f30cb2c9bc87cb7",
"sha256": "7f37bd100181ef8214b05d12ba1e6c62ae7446fe6d08009412c72acdde75e922"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "e9622b79cf218b2e5f30cb2c9bc87cb7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9.0",
"size": 163575,
"upload_time": "2025-10-08T22:38:10",
"upload_time_iso_8601": "2025-10-08T22:38:10.557826Z",
"url": "https://files.pythonhosted.org/packages/8d/a9/1c40a484486b81e0ff0923aa6a939124dd59fa99c50af4a87d37d3e5d2db/fastmorph-1.6.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3388e870cc6eb9aaa50b67ad35319e227209b0e0f4b9d028c2c299d4c4c83cbf",
"md5": "c49cb87a38be263244e5ee6a0e4ac713",
"sha256": "70ebf622b81338418fefb1084107db1e6c2340623dca27d82e0ee26282352074"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "c49cb87a38be263244e5ee6a0e4ac713",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9.0",
"size": 206539,
"upload_time": "2025-10-08T22:38:12",
"upload_time_iso_8601": "2025-10-08T22:38:12.256829Z",
"url": "https://files.pythonhosted.org/packages/33/88/e870cc6eb9aaa50b67ad35319e227209b0e0f4b9d028c2c299d4c4c83cbf/fastmorph-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4d456f6b620a1cdf12308586e47edf20a02e63350f66c7ca3fc019f6375aad4f",
"md5": "61213836e70da4289651c48ec16c6f0b",
"sha256": "118d4d3cd48fead165dd92aacc8936db5470bf073faa83878e3140582df1af93"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "61213836e70da4289651c48ec16c6f0b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9.0",
"size": 176337,
"upload_time": "2025-10-08T22:38:14",
"upload_time_iso_8601": "2025-10-08T22:38:14.035186Z",
"url": "https://files.pythonhosted.org/packages/4d/45/6f6b620a1cdf12308586e47edf20a02e63350f66c7ca3fc019f6375aad4f/fastmorph-1.6.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d0d89d1a68fb4989e446e689302245cc3d075c9c8729bc2ada5519b3f4cf11aa",
"md5": "94ef552f7d6267ae7864ed2696895389",
"sha256": "c5ece1d3f54ae93483dc33801b46dd45c8cea02509648a8d852cfb5d47ee827c"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "94ef552f7d6267ae7864ed2696895389",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9.0",
"size": 255524,
"upload_time": "2025-10-08T22:38:15",
"upload_time_iso_8601": "2025-10-08T22:38:15.213691Z",
"url": "https://files.pythonhosted.org/packages/d0/d8/9d1a68fb4989e446e689302245cc3d075c9c8729bc2ada5519b3f4cf11aa/fastmorph-1.6.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b6e94c589218cbdca09fdcf530a508f3dde3b69e81d16fab698c5b979934e265",
"md5": "4d4759d808fd96e4ab2c782ff9ba2ee0",
"sha256": "fecd6ed6cad88f480377217db71778c1b5767c3ed1b8105adcd6fda43a9ee7da"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "4d4759d808fd96e4ab2c782ff9ba2ee0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9.0",
"size": 267028,
"upload_time": "2025-10-08T22:38:16",
"upload_time_iso_8601": "2025-10-08T22:38:16.389280Z",
"url": "https://files.pythonhosted.org/packages/b6/e9/4c589218cbdca09fdcf530a508f3dde3b69e81d16fab698c5b979934e265/fastmorph-1.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "978ae57c72634486e7695eb9d598ff7393e9cebb6dc5436af19affcbee545125",
"md5": "adc9cdd47045187b41e26c4c9fa25735",
"sha256": "9b80ae86b5586fd345c43f79c51341af3115eab57f55c3d245e5c32fe1511e3e"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "adc9cdd47045187b41e26c4c9fa25735",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9.0",
"size": 180856,
"upload_time": "2025-10-08T22:38:18",
"upload_time_iso_8601": "2025-10-08T22:38:18.258863Z",
"url": "https://files.pythonhosted.org/packages/97/8a/e57c72634486e7695eb9d598ff7393e9cebb6dc5436af19affcbee545125/fastmorph-1.6.0-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d6b4ffb86e3971952240eed61d42f1afccca1096e9869eccfbf6fef050502574",
"md5": "5242d3e8f4a47f14371fe58924dcd721",
"sha256": "609804094d163b25949630f61e7fc46936eabac766f6c2b3fcaedef451279472"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "5242d3e8f4a47f14371fe58924dcd721",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9.0",
"size": 163914,
"upload_time": "2025-10-08T22:38:17",
"upload_time_iso_8601": "2025-10-08T22:38:17.389007Z",
"url": "https://files.pythonhosted.org/packages/d6/b4/ffb86e3971952240eed61d42f1afccca1096e9869eccfbf6fef050502574/fastmorph-1.6.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "30d7e1534b521a0656f970d73d6670ada58f9383996df7b25700d473822c95f8",
"md5": "23178c6531c26b5896f1142816dd07c3",
"sha256": "5d4e4816dc583c177e0a9228271d5ec969dba315f173c69e0ca499e070e79f4d"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "23178c6531c26b5896f1142816dd07c3",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9.0",
"size": 206656,
"upload_time": "2025-10-08T22:38:19",
"upload_time_iso_8601": "2025-10-08T22:38:19.512357Z",
"url": "https://files.pythonhosted.org/packages/30/d7/e1534b521a0656f970d73d6670ada58f9383996df7b25700d473822c95f8/fastmorph-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9ab4103fbba8bd0d7b6847e6dec4635b3814389480d83d82e899e1c49200b654",
"md5": "7fca13f55d6ee112d7836c14cca4a28e",
"sha256": "a2d78fbbf719869be32da1854225377efae3fd98550c9128808eae454b448003"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "7fca13f55d6ee112d7836c14cca4a28e",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9.0",
"size": 176359,
"upload_time": "2025-10-08T22:38:20",
"upload_time_iso_8601": "2025-10-08T22:38:20.384950Z",
"url": "https://files.pythonhosted.org/packages/9a/b4/103fbba8bd0d7b6847e6dec4635b3814389480d83d82e899e1c49200b654/fastmorph-1.6.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c67aef1fafcbe7de7c4e7a88d4d48460ce4e1ba99cdc29b377c26fd3739ea116",
"md5": "2816d5ae88c18c56bc350e11cfd4f48c",
"sha256": "d775819568c49e87bbf8fbc7dff2d6aa24d9c640117cb904468aa88930a62019"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "2816d5ae88c18c56bc350e11cfd4f48c",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9.0",
"size": 255275,
"upload_time": "2025-10-08T22:38:21",
"upload_time_iso_8601": "2025-10-08T22:38:21.193992Z",
"url": "https://files.pythonhosted.org/packages/c6/7a/ef1fafcbe7de7c4e7a88d4d48460ce4e1ba99cdc29b377c26fd3739ea116/fastmorph-1.6.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "713dfd950850aa9135efdd3840b9a97b00d11f613d78acea7eb7fa1a615b24d0",
"md5": "6c0a43a8484ac59a9cb76e390c21bdfc",
"sha256": "36284aa7615b205c1f61fd81b3fe144aee33018e7d04f328b904a4bc2e7104ba"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "6c0a43a8484ac59a9cb76e390c21bdfc",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9.0",
"size": 266298,
"upload_time": "2025-10-08T22:38:22",
"upload_time_iso_8601": "2025-10-08T22:38:22.344997Z",
"url": "https://files.pythonhosted.org/packages/71/3d/fd950850aa9135efdd3840b9a97b00d11f613d78acea7eb7fa1a615b24d0/fastmorph-1.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8919127453956ac986a0a8bd961e526bcde603a15cf7bc76c6d723efa921f0d1",
"md5": "73ac85325687016d53fc04f6c6409ebe",
"sha256": "3e26d28b16ab98fa34324812faa024cb203654288e759f0fe3c7407a3821fefc"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "73ac85325687016d53fc04f6c6409ebe",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9.0",
"size": 180904,
"upload_time": "2025-10-08T22:38:24",
"upload_time_iso_8601": "2025-10-08T22:38:24.473200Z",
"url": "https://files.pythonhosted.org/packages/89/19/127453956ac986a0a8bd961e526bcde603a15cf7bc76c6d723efa921f0d1/fastmorph-1.6.0-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3505ebd5876da133662104637271a32c294011cc56157ff91f91799197af7f91",
"md5": "e52d743e481e45dabed186bc0d65133e",
"sha256": "c6183649f71298a0045fd79716abd736998d07f604d423339a583f2ed9ee1d55"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "e52d743e481e45dabed186bc0d65133e",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9.0",
"size": 164006,
"upload_time": "2025-10-08T22:38:23",
"upload_time_iso_8601": "2025-10-08T22:38:23.262177Z",
"url": "https://files.pythonhosted.org/packages/35/05/ebd5876da133662104637271a32c294011cc56157ff91f91799197af7f91/fastmorph-1.6.0-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0a0c650f4da45f0005f73024108c5398a6afc80d71404cda613e6640655c73a6",
"md5": "4268c92d521351dc9b075ba30fabf58d",
"sha256": "a6d375a72e009e9a5b249a3a389b638b4df2d1a76c9993378edb16034e7f7489"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "4268c92d521351dc9b075ba30fabf58d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9.0",
"size": 204014,
"upload_time": "2025-10-08T22:38:25",
"upload_time_iso_8601": "2025-10-08T22:38:25.587673Z",
"url": "https://files.pythonhosted.org/packages/0a/0c/650f4da45f0005f73024108c5398a6afc80d71404cda613e6640655c73a6/fastmorph-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "654e595c0e43a546579b53a1f11587075c68f96fa960dfa8ccfff0f83bbfae0d",
"md5": "bc390b01581523837ba0cf26cc90c6fc",
"sha256": "f0ae6da5b32d0ac3f84d06f86e8ae0d024b6aadce801200ea050058e1fa93c63"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "bc390b01581523837ba0cf26cc90c6fc",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9.0",
"size": 174615,
"upload_time": "2025-10-08T22:38:26",
"upload_time_iso_8601": "2025-10-08T22:38:26.489814Z",
"url": "https://files.pythonhosted.org/packages/65/4e/595c0e43a546579b53a1f11587075c68f96fa960dfa8ccfff0f83bbfae0d/fastmorph-1.6.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f162a7920dd2689408d06f9aa8a4c80907040d94afc4c30b1bc4da4640a73d8d",
"md5": "0ef53e36e81d8e8a06d4cc15fe88d239",
"sha256": "0fe3a307cb918cf6604496a9e38f5e7b7bd6bb6de5e77ffbd9d7076c8e58346c"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "0ef53e36e81d8e8a06d4cc15fe88d239",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9.0",
"size": 252281,
"upload_time": "2025-10-08T22:38:27",
"upload_time_iso_8601": "2025-10-08T22:38:27.791995Z",
"url": "https://files.pythonhosted.org/packages/f1/62/a7920dd2689408d06f9aa8a4c80907040d94afc4c30b1bc4da4640a73d8d/fastmorph-1.6.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "239bf0894fba70acfe06ea7892b52c474fa9c89d039276ec74a494f0d4f9ec78",
"md5": "19b52e0ad913c61cb0dafde943597ed5",
"sha256": "f58e6297829587657a2a4cd920fd2269f16263581f8680c6864bcb750c833f73"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "19b52e0ad913c61cb0dafde943597ed5",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9.0",
"size": 261019,
"upload_time": "2025-10-08T22:38:29",
"upload_time_iso_8601": "2025-10-08T22:38:29.014098Z",
"url": "https://files.pythonhosted.org/packages/23/9b/f0894fba70acfe06ea7892b52c474fa9c89d039276ec74a494f0d4f9ec78/fastmorph-1.6.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "faa0c53d3a3d1206f01dfbd99ed67341ed9e00b4074e59ea0afc391a199a3e8d",
"md5": "c6bcce340ccfd3c5bcc634bdb9886219",
"sha256": "565c5194b01739c7062444778f8620e26043196dbe6a820cecbff1eb5e6c7179"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "c6bcce340ccfd3c5bcc634bdb9886219",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9.0",
"size": 180127,
"upload_time": "2025-10-08T22:38:31",
"upload_time_iso_8601": "2025-10-08T22:38:31.405293Z",
"url": "https://files.pythonhosted.org/packages/fa/a0/c53d3a3d1206f01dfbd99ed67341ed9e00b4074e59ea0afc391a199a3e8d/fastmorph-1.6.0-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f616e19d4c410a7c188a87acd87ec69c834013bf660c1cb3b7a9b2d970638aa3",
"md5": "96d1f226b9f5b9116e1ddd6fa17e909f",
"sha256": "80fec9c2b216dedaaf40cdd3edaa0acbfb8f46e8883dee837e8b2e56926ee903"
},
"downloads": -1,
"filename": "fastmorph-1.6.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "96d1f226b9f5b9116e1ddd6fa17e909f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9.0",
"size": 164439,
"upload_time": "2025-10-08T22:38:30",
"upload_time_iso_8601": "2025-10-08T22:38:30.594255Z",
"url": "https://files.pythonhosted.org/packages/f6/16/e19d4c410a7c188a87acd87ec69c834013bf660c1cb3b7a9b2d970638aa3/fastmorph-1.6.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "071ca3ff9d96b9eb3c52bf2d1b951e9d0ba1129efd66097608718e906102cfce",
"md5": "a45682d742813540c0432cc8abddf4a0",
"sha256": "54503fb7238163e98836c944305f583a495832ee34b71460f2d8c8f5b939a850"
},
"downloads": -1,
"filename": "fastmorph-1.6.0.tar.gz",
"has_sig": false,
"md5_digest": "a45682d742813540c0432cc8abddf4a0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9.0",
"size": 30563,
"upload_time": "2025-10-08T22:38:32",
"upload_time_iso_8601": "2025-10-08T22:38:32.288498Z",
"url": "https://files.pythonhosted.org/packages/07/1c/a3ff9d96b9eb3c52bf2d1b951e9d0ba1129efd66097608718e906102cfce/fastmorph-1.6.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-08 22:38: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"
}