Skip to content

Properties

Property definitions and computed values.

nimbusimage.properties.PropertyAccessor

Access property definitions and values for a dataset.

list()

List all property definitions accessible to the user.

get(property_id)

Get a property definition by ID.

create(name, shape='polygon', tags=None, image='properties/none:latest', worker_interface=None)

Create a new property definition.

The new property is registered into all of this dataset's collections. Properties are only visible (via list() and get()) through collections that reference them, so an unregistered property would be invisible to every user, including its creator.

get_or_create(name, shape='polygon', **kwargs)

Get existing property by name+shape, or create it.

Only properties registered in a collection the user can read are findable, so the created property is registered into this dataset's collections (see create()).

register(property_id)

Add property to all collections for this dataset.

Fetches each unique collection, appends property_id if not present, and saves. Deduplicates by collection ID so shared collections are only updated once.

Returns:

Type Description
int

The number of collections that reference the property

int

after registration. 0 means the dataset has no

int

collections and the property remains invisible.

delete(property_id)

Delete a property definition.

get_values(annotation_id=None)

Get property values.

Parameters:

Name Type Description Default
annotation_id str | None

If provided, get values for this annotation only. Otherwise, get all values for the dataset.

None

submit_values(property_id, values)

Submit property values in bulk.

Transforms user-friendly format to backend wire format and auto-batches at 10K entries.

Parameters:

Name Type Description Default
property_id str

The property these values belong to.

required
values dict[str, dict]

Dict mapping annotation_id to {key: value} dicts. Example: {"ann_1": {"Area": 100}, "ann_2": {"Area": 200}}

required

delete_values(property_id)

Delete all values for a property in this dataset.

histogram(property_path, buckets=255)

Get histogram for a property across all annotations.

compute(property, worker_interface=None, scales=None)

Run a property worker to compute values.

Submits a Docker worker job via POST /annotation_property/{id}/compute. The worker container receives the property definition and scales as JSON parameters.

Parameters:

Name Type Description Default
property Property

The Property definition. Must have a non-empty image field (the Docker image to run) and an id (must be saved to the server first via create() or get_or_create()).

required
worker_interface dict | None

Parameter values matching the worker's interface schema (from client.get_worker_interface()). If not provided, uses the property's own workerInterface.

None
scales dict | None

Scale metadata (pixel size, etc.). Passed through to the worker for unit-aware computations.

None

Returns:

Type Description
Job

A Job object. Call job.wait() to block until completion.

Raises:

Type Description
ValueError

If the property has no id or image, or if its image is an annotation worker (its role labels from /worker_interface/available have isAnnotationWorker but not isPropertyWorker) — annotation workers must run through ds.annotations.compute instead.