cellmap-analyze 0.4.2__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. {cellmap_analyze-0.4.2/src/cellmap_analyze.egg-info → cellmap_analyze-0.5.0}/PKG-INFO +10 -1
  2. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/README.md +9 -0
  3. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/pyproject.toml +3 -1
  4. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/analyze/measure.py +9 -2
  5. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/bresenham3D.c +18758 -14952
  6. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/centers.cpp +24478 -20655
  7. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/process_arrays.c +13714 -7146
  8. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/touching.c +17576 -11118
  9. cellmap_analyze-0.5.0/src/cellmap_analyze/process/compute_edt.py +177 -0
  10. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/connected_components.py +243 -78
  11. cellmap_analyze-0.5.0/src/cellmap_analyze/process/morphological_operations.py +208 -0
  12. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/skeletonize.py +60 -7
  13. cellmap_analyze-0.5.0/src/cellmap_analyze/process/split_narrow_bridges.py +1281 -0
  14. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/dask_util.py +179 -34
  15. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/image_data_interface.py +110 -32
  16. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/mask_util.py +15 -2
  17. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/measure_util.py +8 -2
  18. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0/src/cellmap_analyze.egg-info}/PKG-INFO +10 -1
  19. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/SOURCES.txt +2 -0
  20. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/entry_points.txt +2 -0
  21. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cli/cli.py +26 -0
  22. cellmap_analyze-0.4.2/src/cellmap_analyze/process/morphological_operations.py +0 -125
  23. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/LICENSE +0 -0
  24. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/MANIFEST.in +0 -0
  25. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/setup.cfg +0 -0
  26. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/setup.py +0 -0
  27. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/__init__.py +0 -0
  28. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/analyze/__init__.py +0 -0
  29. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/analyze/assign_to_organelles.py +0 -0
  30. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/analyze/fit_lines_to_segmentations.py +0 -0
  31. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/__init__.py +0 -0
  32. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/bresenham3D.pyx +0 -0
  33. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/centers.pyx +0 -0
  34. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/impl/centers.hpp +0 -0
  35. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/process_arrays.pyx +0 -0
  36. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/touching.pyx +0 -0
  37. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/__init__.py +0 -0
  38. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/clean_connected_components.py +0 -0
  39. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/contact_sites.py +0 -0
  40. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/fill_holes.py +0 -0
  41. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/filter_ids.py +0 -0
  42. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/label_with_mask.py +0 -0
  43. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/mutex_watershed.py +0 -0
  44. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/__init__.py +0 -0
  45. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/block_util.py +0 -0
  46. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/cellmap_array.py +0 -0
  47. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/information_holders.py +0 -0
  48. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/io_util.py +0 -0
  49. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/mixins.py +0 -0
  50. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/neuroglancer_util.py +0 -0
  51. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/precomputed_io.py +0 -0
  52. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/sharded_skeleton.py +0 -0
  53. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/skeleton_util.py +0 -0
  54. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/voxel_size_utils.py +0 -0
  55. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/zarr_io.py +0 -0
  56. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/zarr_util.py +0 -0
  57. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/dependency_links.txt +0 -0
  58. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/requires.txt +0 -0
  59. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/top_level.txt +0 -0
  60. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cli/__init__.py +0 -0
  61. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_dask_local_directory.py +0 -0
  62. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_kvstore_anonymous.py +0 -0
  63. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_non_integer_voxel_size_integration.py +0 -0
  64. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_precomputed_read.py +0 -0
  65. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_s3_read.py +0 -0
  66. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_scale_resolution.py +0 -0
  67. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_unique_tmp_dirs.py +0 -0
  68. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_utils.py +0 -0
  69. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_voxel_size_utils.py +0 -0
  70. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_wave_scheduling.py +0 -0
  71. {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_zarr_v3.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cellmap-analyze
3
- Version: 0.4.2
3
+ Version: 0.5.0
4
4
  Summary: Code to perform analysis on segmentations like those produced by CellMap
5
5
  Author-email: David Ackerman <ackermand@janelia.hhmi.org>
6
6
  Maintainer-email: David Ackerman <ackermand@janelia.hhmi.org>
@@ -56,6 +56,15 @@ A suite of Dask-powered tools for processing and analyzing terabyte-scale 3D seg
56
56
  | **Label With Mask** | `label-with-mask` | Label one dataset with IDs from another. |
57
57
  | **Morphological Operations** | `morphological-operations` | Erosion and dilation of segmented datasets. Processing order across blocks is not guaranteed. |
58
58
  | **Skeletonize** | `skeletonize` | Generate skeletons from segmented objects with optional pruning and simplification. Automatically resamples to isotropic resolution before skeletonization. |
59
+ | **Compute EDT** | `compute-edt` | Compute a Euclidean distance transform over a segmentation, for reuse across repeated `split-narrow-bridges` runs. |
60
+ | **Split Narrow Bridges** | `split-narrow-bridges` | Split accidentally-merged blob-like objects (nuclei, cells) at thin necks via EDT-watershed, preserving all original foreground voxels. |
61
+
62
+ These tools chain together into a full predictions-to-segmentations pipeline:
63
+ start from raw model output (`connected-components` thresholds prediction
64
+ probability maps, or `mws` agglomerates affinities) to get an initial
65
+ instance segmentation, optionally refine it (`split-narrow-bridges` to
66
+ separate accidentally-merged instances, `fill-holes`, `morphological-operations`),
67
+ then finalize with `clean-connected-components` and/or `filter-ids`.
59
68
 
60
69
  ### Analysis Tools
61
70
 
@@ -21,6 +21,15 @@ A suite of Dask-powered tools for processing and analyzing terabyte-scale 3D seg
21
21
  | **Label With Mask** | `label-with-mask` | Label one dataset with IDs from another. |
22
22
  | **Morphological Operations** | `morphological-operations` | Erosion and dilation of segmented datasets. Processing order across blocks is not guaranteed. |
23
23
  | **Skeletonize** | `skeletonize` | Generate skeletons from segmented objects with optional pruning and simplification. Automatically resamples to isotropic resolution before skeletonization. |
24
+ | **Compute EDT** | `compute-edt` | Compute a Euclidean distance transform over a segmentation, for reuse across repeated `split-narrow-bridges` runs. |
25
+ | **Split Narrow Bridges** | `split-narrow-bridges` | Split accidentally-merged blob-like objects (nuclei, cells) at thin necks via EDT-watershed, preserving all original foreground voxels. |
26
+
27
+ These tools chain together into a full predictions-to-segmentations pipeline:
28
+ start from raw model output (`connected-components` thresholds prediction
29
+ probability maps, or `mws` agglomerates affinities) to get an initial
30
+ instance segmentation, optionally refine it (`split-narrow-bridges` to
31
+ separate accidentally-merged instances, `fill-holes`, `morphological-operations`),
32
+ then finalize with `clean-connected-components` and/or `filter-ids`.
24
33
 
25
34
  ### Analysis Tools
26
35
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cellmap-analyze"
3
- version = "0.4.2"
3
+ version = "0.5.0"
4
4
  description = "Code to perform analysis on segmentations like those produced by CellMap"
5
5
  readme = "README.md"
6
6
  license-files = ["LICENSE"]
@@ -51,6 +51,8 @@ label-with-mask = "cli.cli:label_with_mask"
51
51
  measure = "cli.cli:measure"
52
52
  fit-lines-to-segmentations = "cli.cli:fit_lines_to_segmentations"
53
53
  assign-to-organelles = "cli.cli:assign_to_organelles"
54
+ split-narrow-bridges = "cli.cli:split_narrow_bridges"
55
+ compute-edt = "cli.cli:compute_edt"
54
56
 
55
57
  [tool.setuptools]
56
58
  package-dir = { "" = "src" }
@@ -212,8 +212,15 @@ class Measure(ComputeConfigMixin):
212
212
 
213
213
  raw_idi = kwargs.get("raw_idi")
214
214
  if raw_idi is not None:
215
- # Read raw at write_roi (no face-neighbor padding needed for intensity)
216
- extra_kwargs["raw_data"] = raw_idi.to_ndarray_ts(block.write_roi)
215
+ # Read raw at write_roi (no face-neighbor padding needed for intensity).
216
+ # raw_valid marks voxels that came from padding/no-overlap fill
217
+ # rather than a real read, so they can be excluded from intensity
218
+ # stats instead of being silently counted as real intensity 0.
219
+ raw_data, raw_valid = raw_idi.to_ndarray_ts(
220
+ block.write_roi, return_valid_mask=True
221
+ )
222
+ extra_kwargs["raw_data"] = raw_data
223
+ extra_kwargs["raw_valid"] = raw_valid
217
224
 
218
225
  # get information only from actual block(not including padding)
219
226
  # Convert block offset from scaled coordinates back to true nm