Skip to main content

v1

cst_calculation record, v1 — canonical aliases.

Consumers and the record registry import from here and never touch the inner module names, mirroring steps/*/v1/__init__.py.

Module

Submodules

Classes

ORM

class ORM(**kwargs):

SQLAlchemy model for the cst_calculation cache table.

One row per (task_hash, file_id): the Central Subfield / Central Retinal Thickness metrics computed for a scan from retinal-layer segmentation and fovea landmark predictions. Thickness is a deterministic function of the scan and the model output (and the config, which folds into task_hash) — NOT of the project — so project_id is provenance only and excluded from the key, letting two projects on the same datasource share rows (mirrors model_inferences and fluid_calculation).

The metrics live in the schemaless metrics_json blob (the CSTMetrics scalar fields plus the fovea_coordinates tuple). An uncomputable file is recorded with a null metrics_json and a non-null error carrying the reason: missing_data:<fields> when the datasource had no metadata row for it, calculation_error:<detail> when the maths raised. The shared thickness runner produces those strings (see bitfount.steps.data_utils.thickness_calculation); exactly one of metrics_json and error is set per row, matching the sibling fluid_calculation and gcc_calculation tables.

A simple constructor that allows initialization from kwargs.

Sets attributes on the constructed instance using the names and values in kwargs.

Only keys that are present as attributes of the instance's class are allowed. These could be, for example, any mapped columns or relationships.

Variables

  • error : Union[sqlalchemy.orm.attributes.InstrumentedAttribute[+_T_co], +_T_co]
  • file_id : Union[sqlalchemy.orm.attributes.InstrumentedAttribute[+_T_co], +_T_co]
  • last_accessed_at : Union[sqlalchemy.orm.attributes.InstrumentedAttribute[+_T_co], +_T_co]
  • metrics_json : Union[sqlalchemy.orm.attributes.InstrumentedAttribute[+_T_co], +_T_co]
  • processed_at : Union[sqlalchemy.orm.attributes.InstrumentedAttribute[+_T_co], +_T_co]
  • project_id : Union[sqlalchemy.orm.attributes.InstrumentedAttribute[+_T_co], +_T_co]
  • run_id : Union[sqlalchemy.orm.attributes.InstrumentedAttribute[+_T_co], +_T_co]
  • tags : Union[sqlalchemy.orm.attributes.InstrumentedAttribute[+_T_co], +_T_co]
  • task_hash : Union[sqlalchemy.orm.attributes.InstrumentedAttribute[+_T_co], +_T_co]

Record

class Record(**data: Any):

Record of a single row from the cst_calculation table.

metrics_json holds the CST/CRT metrics for a successful calculation and is None when the metric could not be computed for the file. error carries the reason in that case (missing_data:<fields> when the datasource had no metadata row for the file, calculation_error:<detail> when the maths raised); exactly one of metrics_json and error is populated for a row.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Variables

  • static error : str | None
  • static file_id : str
  • static metrics_json : dict[str, typing.Any] | None
  • static model_config
  • static project_id : str | None
  • static run_id : str | None
  • static task_hash : str