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.
- {cellmap_analyze-0.4.2/src/cellmap_analyze.egg-info → cellmap_analyze-0.5.0}/PKG-INFO +10 -1
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/README.md +9 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/pyproject.toml +3 -1
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/analyze/measure.py +9 -2
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/bresenham3D.c +18758 -14952
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/centers.cpp +24478 -20655
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/process_arrays.c +13714 -7146
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/touching.c +17576 -11118
- cellmap_analyze-0.5.0/src/cellmap_analyze/process/compute_edt.py +177 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/connected_components.py +243 -78
- cellmap_analyze-0.5.0/src/cellmap_analyze/process/morphological_operations.py +208 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/skeletonize.py +60 -7
- cellmap_analyze-0.5.0/src/cellmap_analyze/process/split_narrow_bridges.py +1281 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/dask_util.py +179 -34
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/image_data_interface.py +110 -32
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/mask_util.py +15 -2
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/measure_util.py +8 -2
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0/src/cellmap_analyze.egg-info}/PKG-INFO +10 -1
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/SOURCES.txt +2 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/entry_points.txt +2 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cli/cli.py +26 -0
- cellmap_analyze-0.4.2/src/cellmap_analyze/process/morphological_operations.py +0 -125
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/LICENSE +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/MANIFEST.in +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/setup.cfg +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/setup.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/__init__.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/analyze/__init__.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/analyze/assign_to_organelles.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/analyze/fit_lines_to_segmentations.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/__init__.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/bresenham3D.pyx +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/centers.pyx +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/impl/centers.hpp +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/process_arrays.pyx +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/cythonizing/touching.pyx +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/__init__.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/clean_connected_components.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/contact_sites.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/fill_holes.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/filter_ids.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/label_with_mask.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/process/mutex_watershed.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/__init__.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/block_util.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/cellmap_array.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/information_holders.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/io_util.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/mixins.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/neuroglancer_util.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/precomputed_io.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/sharded_skeleton.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/skeleton_util.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/voxel_size_utils.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/zarr_io.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze/util/zarr_util.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/dependency_links.txt +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/requires.txt +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cellmap_analyze.egg-info/top_level.txt +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/src/cli/__init__.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_dask_local_directory.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_kvstore_anonymous.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_non_integer_voxel_size_integration.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_precomputed_read.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_s3_read.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_scale_resolution.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_unique_tmp_dirs.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_utils.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_voxel_size_utils.py +0 -0
- {cellmap_analyze-0.4.2 → cellmap_analyze-0.5.0}/tests/test_wave_scheduling.py +0 -0
- {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.
|
|
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.
|
|
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
|
-
|
|
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
|