pycif.plugins.transforms.complex.ratio2conc — API reference#
Configuration reference: ratio2conc plugin
- pycif.plugins.transforms.complex.ratio2conc.adjoint.adjoint(transform, inout_datastore, controlvect, obsvect, mapper, di, df, mode, runsubdir, workdir, onlyinit=False, **kwargs)[source]#
Propagate isotopologue sensitivities back to ratio and total-concentration sensitivities.
The adjoint of
forward(). Reloads the saved forward NetCDF (chain/ratio2conc/) to recover \(a_j\) factors, then applies the chain rule to accumulate:Sensitivity to total concentration: sum of isotopologue sensitivities weighted by their binary-tree fractions.
Sensitivity to each δ-signature \(\delta_j\): weighted sum over all isotopologues of \(\partial[iso_k]/\partial a_j \cdot \partial a_j/\partial\delta_j\).
Mass correction (
unit = 'mass') is applied before the chain rule.- Parameters:
transform (Plugin) – ratio2conc plugin instance (carries
model.adj_refdirfor locating the forward chain directory).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) – unused.
workdir (str) – unused.
onlyinit (bool) – if
True, copy output metadata to inputs without computing sensitivities.**kwargs – unused.
- pycif.plugins.transforms.complex.ratio2conc.forward.forward(transform, inout_datastore, controlvect, obsvect, mapper, di, df, mode, runsubdir, workdir, onlyinit=False, **kwargs)[source]#
Reconstruct isotopologue concentrations from per-mil ratios and total concentration.
Computes each isotopologue using a binary-tree decomposition: for
Nδ-signatures and2^Nisotopologues, each isotopologue gets a unique combination of fractions:\[[iso_k] = C_{tot} \prod_{j=1}^{N} \frac{a_j^{\epsilon_{kj}}}{1 + a_j}\]where \(a_j = (1 + \delta_j/1000) \cdot R_{std,j}\) and \(\epsilon_{kj} \in \{0, 1\}\) is read from the binary representation of the output index \(k\).
In TL mode the same formula is applied to increments. An optional mass correction (
unit = 'mass') scales each isotopologue output by its molar mass ratioiso_mass[i] / spec_mass.The signatures and total concentration are saved to
chain/ratio2conc/for use by the adjoint.- Parameters:
transform (Plugin) – ratio2conc plugin instance (carries
parameters_outwithiso_mass,spec_mass,unit, and per-signaturestandardvalues).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.
workdir (str) – unused.
onlyinit (bool) – unused (always computes).
**kwargs – unused.