rxnfit.fit_metrics module

Compute RSS, TSS, and R² for model vs. experimental data.

TSS uses per-species means over the same valid points used for RSS. All functions use the same valid-point definition (NaN excluded).

rxnfit.fit_metrics.expdata_df_to_datasets(expdata_df, function_names)

Convert a single experimental DataFrame to datasets format.

Parameters:
  • expdata_df (pandas.DataFrame) – Time in first column, species concentrations in remaining columns. Column names must include all function_names.

  • function_names (list[str]) – Chemical species names (e.g. ODE order).

Returns:

One-element list of dicts with keys ‘t_list’, ‘C_exp_list’

(aligned to function_names order; valid points only, NaN removed).

Return type:

list

Raises:

ValueError – If a species in function_names is not in the DataFrame.

rxnfit.fit_metrics.fit_metrics(datasets, rss)

Compute fit metrics (RSS, TSS, R²) from datasets and RSS.

TSS is computed from the same valid points as RSS, using per-species means. R² = 1 - RSS/TSS.

Parameters:
  • datasets (list[dict]) – List of dicts with ‘t_list’, ‘C_exp_list’ (each list of arrays in species order; valid points only).

  • rss (float) – Residual sum of squares (already computed).

Returns:

Keys ‘rss’, ‘tss’, ‘r2’ (all float). If TSS is zero or very

small, r2 may be inf or extreme; callers should warn when tss < TSS_MIN_THRESHOLD.

Return type:

dict