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: object

Backend-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_site and nsigma_time dimensions.

Returns:

sigma_aligned with latent dimensions replaced by nmeasure.

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. None creates 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_index and sigma_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 site coordinate and, when frequency is set, observation times.

  • frequency – Sigma period frequency. None creates 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.

property nperiod: int#

Number of latent period positions.

property nsite: int#

Number of latent site positions.

period_index: DataArray#
site_index: DataArray#