itasc.contact_analysis.quantifiers.cell_dynamics

Cell-dynamics quantifier — the registry adapter over the dynamics core.

Wraps itasc.contact_analysis.dynamics so the studio can build and read per-cell motion through the generic Quantifier interface. Its persistence is a multi-table 4_contact_analysis/cell_dynamics.h5; object_table() exposes the per-frame instantaneous table (the only (frame, cell_id) table) to the plotting backend. The cell twin of nucleus_dynamics — they share the label-agnostic core and differ only by which label field they read and their output filename.

Classes

CellDynamicsQuantifier()

Quantifies per-cell motion (speed, persistence, MSD, collective) from cell labels.

class itasc.contact_analysis.quantifiers.cell_dynamics.CellDynamicsQuantifier[source]

Bases: Quantifier

Quantifies per-cell motion (speed, persistence, MSD, collective) from cell labels.

quantity_id: ClassVar[str] = 'cell_dynamics'

Stable key; an empty value marks an intermediate (non-registered) base.

display_name: ClassVar[str] = 'Cell dynamics'

Human-readable label shown wherever a quantity is selected.

requires: ClassVar[tuple[str, ...]] = ('cell_labels_path',)

PositionInputs field names this quantifier needs to build.

required_build_params: ClassVar[dict[str, str]] = {'pixel_size_um': 'pixel size (µm/px)', 'time_interval_s': 'frame interval (s)'}

Shared build-param keys that must be present and positive for this quantifier to build, mapped to the human label shown in the UI (e.g. cell density needs {"fov_area_mm2": "FOV area (mm²)"}). The studio greys the metric out — rather than letting the build fail — until they are supplied. Empty for a quantifier that needs no shared param.

default_output_name: ClassVar[str] = 'cell_dynamics.h5'

Default artifact file name (relative to a position); empty for an intermediate base that does not persist.

table_keys: ClassVar[tuple[str, ...]] = ('frame', 'cell_id')

The index columns of this quantifier’s object_table — its natural grain (e.g. ("frame", "cell_id")). A non-empty value marks the quantity as aggregated: itasc.contact_analysis.shape_tables pools it across positions into a table named by quantity_id, keyed on these columns. Empty ⇒ not aggregated into an index-keyed table (e.g. contacts). Value columns are namespaced by quantity_id so a later joined view across tables never has colliding names.

build(inputs, output_path, *, params=None, progress_cb=None)[source]
Return type:

Path

Parameters:
read(output_path)[source]
Return type:

TrackDynamics

Parameters:

output_path (Path)

object_table(output_path)[source]

A tidy, column-major per-object table for the plotting backend.

At least a frame key plus a per-object key (e.g. cell_id). Returns None when this quantifier produces no per-object table; the plotting backend then skips it.

Return type:

Mapping[str, ndarray]

Parameters:

output_path (Path)

compute_object_table(inputs, *, params=None)[source]

The pooled tidy table for one position, computed directly from inputs.

A pooled quantifier (one that declares table_keys) implements this: it returns the same column-major table that object_table used to return after a disk round-trip, but never touches disk. None when this position yields no rows. Producers (contacts) are not pooled and do not implement it. params carries the shared build knobs (e.g. fov_area_mm2) for the quantifiers that opt in; per-position values (pixel size, frame interval) arrive via inputs.

Return type:

Mapping[str, ndarray]

Parameters: