pycif.plugins.transforms.complex.conc2ratio — API reference#
Configuration reference: conc2ratio plugin
- pycif.plugins.transforms.complex.conc2ratio.adjoint.adjoint(transform, inout_datastore, controlvect, obsvect, mapper, di, df, mode, runsubdir, workdir, onlyinit=False, **kwargs)[source]#
Propagate per-mil ratio sensitivities back to isotopologue concentration sensitivities.
The adjoint of
forward(). Inonlyinitmode, initialises the input datastore from the concatenated output datastores (needed so that downstream adjoint transforms can access the correct observation metadata) and recordsparameter_refontransform.metadata[ddi]for later forward retrieval.In the full adjoint pass, reloads the forward concentrations from disk (
chain/conc2ratio/), then applies the chain rule:Adjoint w.r.t. reference concentrations (denominators): \(\partial\delta / \partial[ref] = -[iso] / [ref]^2 \cdot 1000 / R_{std}\)
Adjoint w.r.t. isotopologue concentrations (numerators): \(\partial\delta / \partial[iso] = 1 / [ref] \cdot 1000 / R_{std}\)
The
adj_outfield of each input tracer DataFrame is updated in-place.- Parameters:
transform (Plugin) – conc2ratio plugin instance;
model.adj_refdiris used to locate the saved forward data.inout_datastore (dict) – mutable datastore.
controlvect – unused.
obsvect – unused.
mapper (dict) – transform mapper.
di (datetime) – sub-simulation start date.
df (datetime) – sub-simulation end date.
mode (str) –
'adj'.runsubdir (str) – sub-simulation run directory.
workdir (str) – unused.
onlyinit (bool) – if
True, only initialise metadata without computing sensitivities.**kwargs – unused.
- pycif.plugins.transforms.complex.conc2ratio.forward.forward(transform, inout_datastore, controlvect, obsvect, mapper, di, df, mode, runsubdir, workdir, onlyinit=False, **kwargs)[source]#
Convert isotopologue concentrations to per-mil isotopic ratios.
For each δ-value output declared in the mapper, computes:
\[\delta = \left(\frac{\sum_{iso}[iso]}{\sum_{ref}[ref]} \cdot \frac{1}{R_{std}} - 1\right) \times 1000\]The total concentration output is the sum of all input isotopologues. In TL mode the same linear formula is applied to increments.
The input concentrations at the current date are saved to
chain/conc2ratio/so the adjoint can reload them.Supports ensemble (batch sampling) runs:
__sample#Ntracers are grouped and processed together to avoid memory bloat.- Parameters:
transform (Plugin) – conc2ratio plugin instance (carries
parameters_outwithstandard,refs, andisotopologuesattributes per signature, andmetadatafor parameter-name tracking).inout_datastore (dict) – mutable datastore.
controlvect – unused.
obsvect – unused.
mapper (dict) – transform mapper.
di (datetime) – sub-simulation start date.
df (datetime) – sub-simulation end date.
mode (str) –
'fwd'or'tl'.runsubdir (str) – sub-simulation run directory (used to locate the
chain/directory for saving forward data).workdir (str) – root working directory.
onlyinit (bool) – if
True, return immediately.**kwargs – forwarded to downstream operations.
- pycif.plugins.transforms.complex.conc2ratio.utils.propagate_incompatible_input_dates(self, trans_mapper, trid_in, mode='backward')[source]#
Synchronise the input-date grid with the union of all output-date grids.
When
conc2ratioinputs and outputs have incompatible sub-simulation schedules (e.g. outputs are split by observation window while inputs cover the full period), this function re-assignsinput_datesof trid_in to the union of all output date windows and rebuilds thesubsimusdict accordingly.- Parameters:
self (Plugin) – conc2ratio plugin instance.
trans_mapper (dict) – the transform mapper;
'inputs'and'outputs'are modified in-place.trid_in (tuple) –
(component, parameter)key of the input tracer whose date grid should be updated.mode (str) – propagation direction (currently unused; kept for API consistency).