You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Conform spatialMap via a spatial-element registry + bridge
Bump to 0.99.10. serialize a MultiAssaySpatialExperiment's spatialMap
losslessly by monomorphizing its polymorphic (element_type, region,
instance_id) reference through a conformed element-instance registry, so the
observation-to-element association becomes real, single-target foreign keys
instead of opaque string data.
writeParquet (MultiAssaySpatialExperiment method):
- Emit a `spatial_element_registry` resource enumerating every points/shapes
instance across all layers, with an integer `__element__` spine and the
object model's (element_type, region, instance_id) natural key.
- Each spatial_points / spatial_shapes layer foreign-keys the `__element__`
spine into the registry (the CTI subtype -> base link).
- `spatial_map` becomes a monomorphic bridge with two single-target FKs: the
element side (`__element__` -> spatial_element_registry) and the observation
side ((assay, colname) -> sample_map, which reuses sample_map as the
observation registry and encodes the spatialMap validity rule as a real
composite FK). assay/element_type/region remain degenerate on the bridge.
readParquet: `__element__` is a serialization-internal spine (excluded from
.schema_datacols and dropped from the reconstructed spatialMap), so the layers,
the spatialMap, and the query layer round-trip unchanged.
Profile: add `spatial_element_registry` to the layout enum (+ its cross-check).
Bug fix: a coord_array index column's category `label` was emitted as a
one-element array rather than a string (an errant I() wrap; the value is always
length 1), so any datapackage carrying an assay with dimnames -- e.g. a
MultiAssaySpatialExperiment member -- failed validation against the bundled
Frictionless profile. The label is now a string and such packages conform.
Adds a drift-guard test asserting the registry/bridge FK contract, full profile
conformance, and round-trip stripping. Mirrors a scibis read-contract update
(kept at parity). Full test suite green.
0 commit comments