openghg_inversions.inversion_inputs#

Create backend-neutral, observation-aligned inversion inputs.

make_inv_inputs gathers selected per-site datasets into one ragged nmeasure dataset, validates shared state layouts, adds site/minimum-error metadata, transforms boundary-condition periods, drops unusable rows, and materializes core arrays. sites=None infers non-metadata entries; an explicit empty selection is an error.

openghg_inversions.inversion_inputs.add_min_error(ds: Dataset, fp_data: dict[str, Any], min_error: str | dict[str, float] | int | float = 0.0, min_error_per_site: bool = True) Dataset#

Add a prepared, observation-aligned minimum error to a dataset.

openghg_inversions.inversion_inputs.add_site_indicator(ds: Dataset, sort: bool = False) Dataset#

Adds site_indicator and site_names data variables.

openghg_inversions.inversion_inputs.make_freq_indicator(time: DataArray, freq: Literal['monthly'] | str, *, anchor_time: str | datetime | datetime64 | Timestamp | None = None) DataArray#
openghg_inversions.inversion_inputs.make_inv_inputs(fp_data: dict[str, Any], sites: list[str] | None = None, bc_freq: Literal['monthly'] | str | None = None, min_error: str | dict[str, float] | int | float = 0.0, min_error_per_site: bool = True, start_date: str | datetime | datetime64 | Timestamp | None = None, missing_data_vars: Literal['error', 'drop'] = 'drop') Dataset#

Create backend-neutral observation-aligned inversion inputs.

The returned dataset contains shared observations, sensitivities, error terms, and site alignment metadata. Model-component-specific arrays are constructed by their owning components.

Parameters:
  • fp_data – Per-site merged observations and sensitivity data.

  • sites – Sites to retain. None infers all non-metadata fp_data keys in insertion order. An explicit empty list is invalid, and every named site must exist in fp_data.

  • bc_freq – Optional frequency used to transform boundary-condition sensitivities.

  • min_error – Minimum-error value or calculation configuration.

  • min_error_per_site – Whether a calculated minimum error varies by site.

  • start_date – Optional anchor for fixed-duration boundary-condition frequencies.

  • missing_data_vars – Policy for observation-aligned variables that are not present at every site. "drop" preserves the established OpenGHG/legacy behavior; "error" prevents extension fields from being discarded.

Returns:

Canonical inversion inputs aligned along nmeasure.

Raises:

ValueError – If no sites can be inferred, the explicit selection is empty, a requested site is missing, required input variables are missing, the selected missing-variable policy is violated, or minimum-error configuration is invalid.

openghg_inversions.inversion_inputs.make_sigma_freq(time: DataArray, freq: Literal['monthly'] | str | None = None, anchor_time: str | datetime | datetime64 | Timestamp | None = None) DataArray#
openghg_inversions.inversion_inputs.make_site_indicator(site_coord: DataArray) DataArray#

Make site_indicator from DataArray of site names.

For instance, the values [“TAC”, “TAC”, “MHD”] would be converted to [0, 0, 1].

openghg_inversions.inversion_inputs.make_site_names(site_coord: DataArray) DataArray#

Make site names DataArray corresponding to site indicator.

openghg_inversions.inversion_inputs.xr_factorize(da: DataArray, indicator_name: str, label_name: str, label_dim: str, sort: bool = False) Dataset#

Create Dataset with integer indicators and labels for DataArray.

Parameters:
  • da – DataArray to find indicator for.

  • indicator_name – name for indicator data variable

  • label_name – name for label data variable

  • label_dim – dimension for labels

  • sort – if True, the labels will be sorted and the indicator shuffled

  • accordingly

Returns:

Dataset with indicator and label data variables.

openghg_inversions.inversion_inputs.xr_unique_inv(da: DataArray, sort: bool = True) DataArray#