schema
SQLAlchemy ORM for the ga_calculation cache table (v1).
Each version package declares its own local Base (its own MetaData) so that
multiple versions of the same table can coexist in one process without a
__tablename__ collision. Base carries the shared nullable tags column and
every ORM in this version inherits it directly.
Adding a column to a new version is an additive migration (see
migrations.py): add a nullable mapped_column in the new version's schema and
a corresponding upgrade step — never rename/drop/retype in place.
Classes
Base
class Base(**kwargs: Any):Local declarative base for ga_calculation v1.
Owns an isolated MetaData (so it never collides with another version of
this table) and inherits the shared columns from types/schema.py's Base.
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.
Ancestors
Subclasses
GACalculation
class GACalculation(**kwargs):SQLAlchemy model for the ga_calculation cache table.
One row per (task_hash, file_id): the geographic-atrophy (with-fovea)
metrics computed for a scan from the pathology-segmentation and fovea
landmark predictions. task_hash covers (pod_name, datasource_name), so
config values sit outside the key; each run recomputes every file and merges
its row, and a changed threshold lands on the next run. project_id is
provenance only and excluded from the key, letting two projects on the same
datasource share rows (mirrors model_inferences, fluid_calculation and
the sibling thickness tables).
Because neither project_id nor the calc config is part of the key, two
projects reading this datasource under different calc configs contend for
the same row: the last background run to write wins, and the other project
reads metrics computed under its counterpart's config.
The metrics live in the schemaless metrics_json blob (the flattened
GAMetricsWithFovea.to_record(...) output — scalar fields, the
segmentation_areas and n_scan_run_lengths mappings, and the
per-pathology max_*_probability columns; the raw probability arrays are
dropped on write). error carries the missing_data:* /
calculation_error:* reason string for a file whose metric could not be
computed; such a file is recorded with a null metrics_json and a
non-null error.
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.
Ancestors
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]