openghg_inversions.sigma#
Represent observation-to-sigma alignment independently of model backends.
The canonical site and period indexes are eager, non-negative integer vectors
on nmeasure. They can be prepared once and consumed by PyMC or another
inversion backend.
- class openghg_inversions.sigma.SigmaAlignment(site_index: DataArray, period_index: DataArray)#
Bases:
objectBackend-neutral indexes mapping latent sigma values to observations.
- Parameters:
site_index – Observation-aligned site positions.
period_index – Observation-aligned sigma-period positions.
- Raises:
TypeError – If an index is not an xarray DataArray.
ValueError – If indexes are invalid or have incompatible coordinates.
- align(sigma: DataArray) DataArray#
Index latent sigma values onto observations.
- Parameters:
sigma – Values with
nsigma_siteandnsigma_timedimensions.- Returns:
sigma_alignedwith latent dimensions replaced bynmeasure.- Raises:
ValueError – If a required latent dimension is absent.
IndexError – If an alignment position is outside the latent array.
- classmethod from_frequency(site_indicator: DataArray, frequency: str | None = None, *, per_site: bool = True, anchor_time: str | datetime | datetime64 | Timestamp | None = None) SigmaAlignment#
Derive sigma alignment from site positions and observation times.
- Parameters:
site_indicator – Observation-aligned site positions.
frequency – Sigma period frequency.
Nonecreates one period.per_site – Whether sigma varies by site.
anchor_time – Optional fixed-duration period anchor.
- Returns:
Canonical sigma alignment.
- Raises:
ValueError – If indexes or observation timestamps are invalid.
- classmethod from_indices(site_index: DataArray, period_index: DataArray, *, per_site: bool = True) SigmaAlignment#
Build sigma alignment from explicit observation indexes.
- Parameters:
site_index – Observation-aligned site positions.
period_index – Observation-aligned sigma-period positions.
per_site – Whether sigma varies by site.
- Returns:
Canonical sigma alignment.
- Raises:
TypeError – If an index is not an xarray DataArray.
ValueError – If indexes are invalid or incompatible.
- classmethod from_model_data(model_data: Dataset) SigmaAlignment#
Restore alignment from canonical registered model data.
- Parameters:
model_data – Dataset containing
sigma_site_indexandsigma_period_index.- Returns:
Canonical sigma alignment.
- Raises:
KeyError – If a required index variable is absent.
ValueError – If stored indexes are invalid or incompatible.
- classmethod from_observations(observations: DataArray, frequency: str | None = None, *, per_site: bool = True, anchor_time: str | datetime | datetime64 | Timestamp | None = None) SigmaAlignment#
Derive sigma alignment from observation site and time coordinates.
- Parameters:
observations – Observation vector with an aligned
sitecoordinate and, whenfrequencyis set, observation times.frequency – Sigma period frequency.
Nonecreates one period.per_site – Whether sigma varies by site.
anchor_time – Optional fixed-duration period anchor.
- Returns:
Canonical sigma alignment.
- Raises:
ValueError – If the required observation coordinates are absent or invalid.