Inference
This page covers running SABER on new data — from a single image to an entire Copick project. SABER supports two modes depending on whether you have a trained classifier, and two modalities depending on whether your data is 2D or 3D.
Segmentation Modes
SABER's two backends work fundamentally differently. Choosing between them determines whether you need to annotate data and train a classifier at all.
SAM2 runs Automatic Mask Generation (AMG), which densely samples the image and proposes every detectable segment — organelles, contaminants, ice, artifacts, everything. A trained domain expert classifier then scores each candidate and keeps only the class you care about.
Recall is bounded by boundary quality, not language. If a structure has a clear boundary, SAM2 will find it. The classifier decides what it is.
Instance vs. semantic segmentation
--target-class N(N > 0): Each organelle gets a unique instance ID. Use this for counting, sizing, and coordinate export.--target-class -1: Every pixel is assigned to its most likely class. Use this for full tissue maps.
SAM2 AMG runs as above — proposing every possible segment — but with no classifier to filter results. You see the raw, unfiltered output of the model. This is useful for assessing whether your structures are cleanly detectable before committing to annotation.
The output will contain many false positives. Every detectable boundary in the image gets a mask, regardless of biological relevance.
Use this before annotating
If your target structures are clearly outlined in zero-shot results, annotation will be fast and the classifier will converge quickly. If they're fragmented or missing, investigate resolution, slab thickness, or SAM2 model size first.
Not suitable for batch runs
Without a classifier, there is no way to distinguish organelles from contaminants at scale. Reserve zero-shot SAM2 for interactive quality assessment only.
SAM3 works differently from SAM2. Rather than proposing everything and filtering, it uses a vision-language model to directly detect structures matching a text description. There is no AMG step, no candidate pool, and no classifier — the text prompt is the only signal.
Recall is bounded by language. SAM3 can only find structures it can recognize from its training vocabulary. Well-known structures ("ribosome", "mitochondria") work well. Unusual structures, artifacts, or anything domain-specific may be missed or confused with visually similar objects.
SAM3 bypasses Stages 1–2 of the SABER workflow
You do not need to annotate data or train a classifier to use SAM3. It goes directly from raw image to segmentation. This makes it the fastest path to results on a new dataset, but the least reliable for production batch processing.
2D Micrograph Segmentation
saber segment micrographs \
--input 'path/to/micrographs/*.mrc' \
--output segmentation_results.zarr \
--model-config results/model_config.yaml \
--model-weights results/best_model.pth \
--target-class 1
When a glob pattern is provided, SABER automatically batches across all matching files. When a single file is given, it opens an interactive preview.
No classifier — SAM2 proposes every detectable segment. Use interactively to assess data quality before annotating.
saber segment micrographs \
--input path/to/image.mrc \
--target-resolution 10
No classifier, no annotation required. SAM3 directly detects structures matching the text description. Use for fast exploration; not recommended for production batch runs.
saber segment micrographs \
--input path/to/image.mrc \
--text-prompt "ribosome" \
--target-resolution 10
saber segment micrographs Parameters
| Parameter | Description | Example |
|---|---|---|
--input | File or glob pattern | 'path/*.mrc' |
--output | Output Zarr | results.zarr |
--model-config | Classifier config YAML | results/model_config.yaml |
--model-weights | Classifier weights | results/best_model.pth |
--target-class | Class index (-1 for semantic) | 1 |
--target-resolution | Downsample target in Å (MRC) | 10 |
--scale | Downsample factor (TIF / no metadata) | 2 |
3D Tomogram Segmentation
Omitting --run-ids processes every run in the Copick project and saves results under --seg-name:
saber segment tomograms \
--config copick_config.json \
--model-config results/model_config.yaml \
--model-weights results/best_model.pth \
--seg-name organelles \
--target-class 1
seg-name and session ID
Results are stored in Copick under --seg-name / --seg-session-id. The default --user-id is always saber. If you re-run with different settings, increment --seg-session-id to avoid overwriting prior results.
Providing one or more --run-ids triggers interactive mode — results are displayed immediately rather than saved:
saber segment tomograms \
--config copick_config.json \
--model-config results/model_config.yaml \
--model-weights results/best_model.pth \
--target-class 1 \
--run-ids Position_12_Vol
For sparse or small structures, segment at multiple Z-depths and merge results using --multi-slab:
saber segment tomograms \
--config copick_config.json \
--model-config results/model_config.yaml \
--model-weights results/best_model.pth \
--seg-name organelles \
--target-class 1 \
--multi-slab 10,30 # (1)
- Format is
thickness,spacing— thickness of each slab in voxels, and the Z-spacing between initialization depths. Omitting the spacing uses a default of 30 voxels.
saber segment tomograms Parameters
| Parameter | Description | Example |
|---|---|---|
--config | Copick config file | copick_config.json |
--voxel-size | Tomogram resolution in Å | 10 |
--tomo-alg | Reconstruction type | denoised |
--slab-thickness | Z-slab thickness in voxels | 10 |
--seg-name | Output segmentation name in Copick | organelles |
--seg-session-id | Session ID for versioning results | 1 |
--model-config | Classifier config YAML | results/model_config.yaml |
--model-weights | Classifier weights | results/best_model.pth |
--target-class | Class index (-1 for semantic) | 1 |
--multi-slab | Multi-depth config: thickness or thickness,spacing | 10,30 |
--run-ids | Specific runs to process (default: all) | Position_10_Vol |
Exporting Statistics
After segmentation, extract per-organelle statistics (volume, diameter, coordinates) as a CSV:
saber analysis statistics \
--config copick_config.json \
--organelle-name organelles \
--voxel-size 10
saber analysis statistics Parameters
| Parameter | Description | Default |
|---|---|---|
--config | Copick config file | required |
--organelle-name | Segmentation name to measure | required |
--voxel-size | Voxel size in Å for unit conversion | 10 |
--session-id | Session ID of the segmentation to read | — |
--run-ids | Specific runs to process (default: all) | — |
Next Steps
-
If you segmented both organelles and membranes, use this to enforce topological consistency.
-
Integrate SABER into your own Python pipelines.