rxnfit.p0_opt_fit module

Optimization of initial parameter values (p0) for ODE rate constants using Optuna.

This module provides P0OptFit to find optimal p0 via Optuna and then fit rate constants using expdata_fit_sci. Existing .py files are not modified; this module only imports and calls build_ode, expdata_fit_sci, etc.

class rxnfit.p0_opt_fit.P0OptFit(reaction_source: str | RxnODEbuild, df_list: list, t_range: Tuple[float, float] | None = None, encoding: str = 'utf-8', param_bounds: Tuple[float, float] | Dict[str, Tuple[float, float]] | None = None, df_names: List[str] | None = None, method: str = 'RK45', rtol: float = 1e-06, opt_method: str = 'L-BFGS-B', use_log_fit: bool = False, lower_bound: float | None = None, verbose: bool = True, storage: str | BaseStorage | None = None, seed: int | None = None, catch: Tuple[Type[BaseException], ...] | List[Type[BaseException]] | None = None)

Bases: object

Optimize initial parameter values (p0) for ODE rate constants using Optuna, then fit with ExpDataFitSci.

By default no random seed is set; Optuna uses its default (TPESampler without seed). Pass seed in the constructor for reproducible search.

optimize(n_trials: int | None = None, timeout: float | None = None, n_jobs: int = 1, show_progress_bar: bool = True, **kwargs: Any) Tuple[Dict[str, Tuple[float, float]], Dict[str, float]]

Run Optuna optimization and return best p0 and fitted result.

Parameters:
  • n_trials – Number of trials. Passed to study.optimize().

  • timeout – Timeout in seconds. Passed to study.optimize().

  • n_jobs – Number of parallel jobs. Passed to study.optimize().

  • show_progress_bar – Whether to show progress bar. Default True.

  • **kwargs – Additional arguments passed to study.optimize(). Note: ‘catch’ is ignored; use the constructor argument to set it.

Returns:

  • dict: { variable_name: (optimal_initial_value, fitted_value) }

  • fit_metrics: Dict with keys ‘rss’, ‘tss’, ‘r2’.

Return type:

Tuple of (dict, fit_metrics)

Raises:

RuntimeError – If all trials fail.

optuna_log() List[Dict[str, Any]]

Return per-trial log. Empty list if optimize() has not been run.

Returns:

trial_No, params, rss, state.

Return type:

List of dicts with keys