Cellpose2 Options
The Cellpose2 plugin (segmentation_family: "Cellpose2") provides segmentation using newer Cellpose model weights
and introduces multi-channel input via the channel_map property [cellpose2_citation]. Unlike the legacy
built-in Cellpose family, Cellpose2 uses cellprob_threshold instead of mask_threshold and
supports mapping multiple image channels to the model's RGB input.
Installation
Cellpose2 is not included in the base vpt or vpt[all] install. Install it in the same Python environment
as vpt:
pip install vpt-plugin-cellpose2
Additional plugin documentation, example algorithm JSON files, and source-install instructions are available in the vpt-plugin-cellpose2 repository.
Input Data
The number and identity of input channels is controlled by the channel_map property. Each key in the map
(red, green, blue) specifies which image channel is assigned to that color input of the model. Channels
listed in the map must also appear in the task_input_data list so that the corresponding images are loaded and
preprocessed.
For the nuclei model, typically only a nuclear channel (e.g. DAPI) is needed. For the cyto2 model, a nuclear channel and one or more entity fill channels are recommended.
Cellpose2 Model Properties
The Cellpose2 task schema accepts the following keys in segmentation_properties:
model_dimensionsRequired. Accepts
"2D"or"3D"."2D"applies the 2D Cellpose model to each selected z-plane separately and VPT merges the masks into a 3D output."3D"passes the selected z-planes as a volumetric stack and runs Cellpose withdo_3D=True.channel_mapRequired. Dictionary mapping
red,green, andblueto image channel names fromtask_input_data. The plugin builds an RGB image in that exact order before calling Cellpose. Set a color entry to an empty string""to leave that plane empty; the plugin fills unused color planes with zeros.modelOptional when
custom_weightsis set; otherwise required. Selects built-in Cellpose weights such as"cyto2"or"nuclei".custom_weightsOptional. Path to a local custom Cellpose weights file. When present, the plugin loads this file and ignores the built-in model named by
model.
Note
Cellpose2 does not define a version field in segmentation_properties. Before execution, the plugin validates
that every non-empty channel_map entry appears in task_input_data and that at least one of model or
custom_weights is set.
Usage:
"segmentation_properties": {
"model": "cyto2",
"model_dimensions": "2D",
"custom_weights": null,
"channel_map": {
"red": "Cellbound1",
"green": "Cellbound3",
"blue": "DAPI"
}
}
Cellpose2 Model Parameters
The Cellpose2 task schema accepts the following keys in segmentation_parameters:
nuclear_channelRequired. Selects the second Cellpose input channel, typically a nuclear stain such as DAPI. Accepted values are an image channel listed in
task_input_data, one of the mapped color namesred,green, orblue, or the special valuesallandgrayscale. Bothallandgrayscaleresolve to Cellpose's grayscale input channel.entity_fill_channelRequired. Selects the first Cellpose input channel used for cell body or boundary signal. It accepts the same value forms as
nuclear_channel: a task input channel name, a mapped color name, or the special valuesallandgrayscale. In practice,allorgrayscaleare useful when a custom model was trained on a composite signal rather than a single stain.diameterRequired. Expected object diameter in pixels. The plugin passes this value directly to Cellpose, which uses it to rescale imagery before inference. Incorrect values can materially change mask size and mask count.
flow_thresholdRequired. Flow consistency threshold passed directly to Cellpose. Higher values allow more candidate masks to pass filtering and generally increase recall; lower values are stricter.
cellprob_thresholdRequired. Cell probability threshold passed directly to Cellpose2. Lower values accept weaker signal and generally produce larger or more numerous masks. Higher values suppress weak detections.
minimum_mask_sizeRequired. Minimum mask area in pixels. The plugin passes this value as Cellpose
min_sizeand removes masks smaller than this threshold before polygon generation.
Note
Before execution, the plugin validates that task_input_data contains at least one channel and that both
nuclear_channel and entity_fill_channel resolve to valid inputs.
Detailed descriptions of flow and cell-probability thresholds are available in the Cellpose documentation.
Usage:
"segmentation_parameters": {
"nuclear_channel": "DAPI",
"entity_fill_channel": "all",
"diameter": 70,
"flow_threshold": 0.95,
"cellprob_threshold": -5.5,
"minimum_mask_size": 500
}
Example Segmentation Specification
A complete single-task Cellpose2 specification using the cyto2 model with three channels:
{
"experiment_properties": {
"all_z_indexes": [0, 1, 2, 3, 4, 5, 6],
"z_positions_um": [1.5, 3, 4.5, 6, 7.5, 9, 10.5]
},
"segmentation_tasks": [
{
"task_id": 0,
"segmentation_family": "Cellpose2",
"entity_types_detected": ["cell"],
"z_layers": [3],
"segmentation_properties": {
"model": "cyto2",
"model_dimensions": "2D",
"custom_weights": null,
"channel_map": {
"red": "Cellbound1",
"green": "Cellbound3",
"blue": "DAPI"
}
},
"task_input_data": [
{
"image_channel": "Cellbound1",
"image_preprocessing": [
{"name": "normalize", "parameters": {"type": "CLAHE", "clip_limit": 0.01, "filter_size": [100, 100]}}
]
},
{
"image_channel": "Cellbound3",
"image_preprocessing": [
{"name": "normalize", "parameters": {"type": "CLAHE", "clip_limit": 0.01, "filter_size": [100, 100]}}
]
},
{
"image_channel": "DAPI",
"image_preprocessing": [
{"name": "normalize", "parameters": {"type": "CLAHE", "clip_limit": 0.01, "filter_size": [100, 100]}}
]
}
],
"segmentation_parameters": {
"nuclear_channel": "DAPI",
"entity_fill_channel": "all",
"diameter": 70,
"flow_threshold": 0.95,
"cellprob_threshold": -5.5,
"minimum_mask_size": 500
},
"polygon_parameters": {
"simplification_tol": 2,
"smoothing_radius": 10,
"minimum_final_area": 500
}
}
],
"segmentation_task_fusion": {
"entity_fusion_strategy": "harmonize",
"fused_polygon_postprocessing_parameters": {
"min_distance_between_entities": 1,
"min_final_area": 500
}
},
"output_files": [
{
"entity_types_output": ["cell"],
"files": {
"run_on_tile_dir": "result_tiles/",
"mosaic_geometry_file": "cellpose2_mosaic_space.parquet",
"micron_geometry_file": "cellpose2_micron_space.parquet",
"cell_metadata_file": "cellpose2_cell_metadata.csv"
}
}
]
}
See also
The Example: Re-segmenting a MERSCOPE Heart Dataset with a Machine Learning Model Customized with Manual Annotations vignette demonstrates Cellpose2 with custom-retrained weights on a heart tissue dataset.
References
- cellpose2_citation
Pachitariu, M. & Stringer, C. (2022). Cellpose 2.0: how to train your own model. Nature methods, 19(12), 1634–1641.