cellmap-analyze
A suite of Dask-powered tools for processing and analyzing terabyte-scale 3D segmentation datasets. Supports both isotropic and anisotropic voxel sizes.
Features
Processing Tools
| Tool | CLI Command | Description |
|---|---|---|
| Connected Components | connected-components |
Threshold predictions, apply masks, and extract connected components. Volume thresholds are in physical units (nm³). |
| Clean Components | clean-connected-components |
Refine existing segmentations by removing small/large components. |
| Contact Sites | contact-sites |
Identify regions where two segmentations are within a configurable physical distance. Handles mismatched voxel sizes by resampling to a common resolution. |
| Fill Holes | fill-holes |
Fill interior gaps in segmented volumes. |
| Filter IDs | filter-ids |
Exclude unwanted segmentation IDs. |
| Mutex Watershed | mws |
Mutex watershed agglomeration from affinities. |
| Label With Mask | label-with-mask |
Label one dataset with IDs from another. |
| Morphological Operations | morphological-operations |
Erosion and dilation of segmented datasets. Processing order across blocks is not guaranteed. |
| Skeletonize | skeletonize |
Generate skeletons from segmented objects with optional pruning and simplification. Automatically resamples to isotropic resolution before skeletonization. |
| Compute EDT | compute-edt |
Compute a Euclidean distance transform over a segmentation, for reuse across repeated split-narrow-bridges runs. |
| 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. |
These tools chain together into a full predictions-to-segmentations pipeline:
start from raw model output (connected-components thresholds prediction
probability maps, or mws agglomerates affinities) to get an initial
instance segmentation, optionally refine it (split-narrow-bridges to
separate accidentally-merged instances, fill-holes, morphological-operations),
then finalize with clean-connected-components and/or filter-ids.
Analysis Tools
| Tool | CLI Command | Description |
|---|---|---|
| Measurement | measure |
Compute metrics (volume, surface area, radius of gyration, bounding box) for objects and contact sites. Supports raw intensity statistics when a raw dataset is provided. |
| Fit Lines | fit_lines_to_segmentations |
Fit geometric lines to elongated/cylindrical structures. |
| Assign to Organelles | assign_to_organelles |
Map segmented objects to organelles based on centers of mass. |
Anisotropic data
All operations handle anisotropic voxel sizes (e.g. (8, 8, 32) nm in ZYX). Physical-unit parameters like minimum_volume_nm_3, contact_distance_nm, and gaussian_smoothing_sigma_nm are automatically converted to the appropriate per-axis voxel units. When two datasets have different voxel sizes, they are resampled to a common resolution using nearest-neighbor interpolation.
Installation
pip install cellmap-analyze
Usage
All commands share the same basic interface:
<command> [options] <config_path>
-
<command>: One of the processing or analysis tools listed above. -
<config_path>: Directory containing:run-config.yaml(parameters for your chosen command)dask-config.yaml(Dask cluster settings)
Options:
-n, --num-workers N: Number of Dask workers to launch.
Output: A new directory named
config_path-<YYYYMMDDHHMMSS>will be created, containing copies of your configs and anoutput.logfor monitoring.
Configuration Examples
The following run-config.yaml could be used to run connected-components.
run-config.yaml
input_path: /path/to/predictions.zarr/mito/s0
output_path: /path/to/segmentations.zarr/mito
intensity_threshold_minimum: 0.71
minimum_volume_nm_3: 1E7
delete_tmp: true
connectivity: 1
mask_config:
cell:
path: /path/to/masks.zarr/cell/s0
mask_type: inclusive
fill_holes: true
dask-config.yaml
The following dask-config.yaml files can be used for a variety of tasks.
Local
jobqueue:
local:
ncpus: 1
processes: 1
cores: 1
log-directory: job-logs
name: dask-worker
distributed:
scheduler:
work-stealing: true
LSF Cluster
jobqueue:
lsf:
ncpus: 8 # cores per job chunk
processes: 12 # worker processes per chunk
cores: 12 # threads per process (1 thread each)
memory: 120GB # 15 GB per slot
walltime: 08:00
mem: 120000000000
use-stdin: true
log-directory: job-logs
name: cellmap-analyze
project: charge_group
distributed:
scheduler:
work-stealing: true
admin:
log-format: '[%(asctime)s] %(levelname)s %(message)s'
tick:
interval: 20ms
limit: 3h
Submission
To run on 12 dask workers:
Local run example:
connected-components -n 12 config_path
Cluster submit example (LSF):
bsub -n 4 -P chargegroup connected-components -n 12 config_path
Acknowledgements
The center-finding implementation is taken from funlib.evaluate.
Metadata
Release files for cellmap-analyze 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cellmap_analyze-0.5.0.tar.gz | 1.0 MB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cellmap_analyze-0.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.17+ x86-64 | Details |
| cellmap_analyze-0.5.0-cp312-cp312-macosx_10_13_universal2.whl | CPython 3.12 | CPython 3.12 | macOS 10.13+ universal2 (ARM64, x86-64) | Details |
Total release size: 6.8 MB
Release files / cellmap_analyze-0.5.0.tar.gz
| Download URL | cellmap_analyze-0.5.0.tar.gz |
|---|---|
| Size | 1.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3d520d7ce2dc64483006f7e0dca39ee79fb205cfbfe27ff87dcb5d6f9f80fed
|
|
BLAKE2b-256 checksum How to use checksums |
989d4e5a01269202e794771a9b46477f23826e8b3e1f5f844fee7555cb493531
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / cellmap_analyze-0.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | cellmap_analyze-0.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
7c915b58684cd7e0af750530e648256a24e598aa1650edbb6d6a832dc67a1964
|
|
BLAKE2b-256 checksum How to use checksums |
4e60c4e0d6855b11672f3edee4eb72b778a7421b7841c0f78343a84241cba8cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / cellmap_analyze-0.5.0-cp312-cp312-macosx_10_13_universal2.whl
| Download URL | cellmap_analyze-0.5.0-cp312-cp312-macosx_10_13_universal2.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
7f44086911614a5bba6b71e84f6cf3cd1e909f58669414d43b71703b1cc44f34
|
|
BLAKE2b-256 checksum How to use checksums |
d2b435a3b8de7a557caccbf123b885188fb0c22fb619b2b806df831d1e25ea5a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|