Skip to content

Solvers

The Python API provides a few different ODE solvers for numerical integration. The simple models (constitutive, Tet-Off, and Oscillation) can usually be solved with the Dopri5 solver. We recommend using the Kvaerno3 solver for the chemogenetic model since it inlucdes RMA, dox, and CNO dynamics which are usually on different scales.

Available solvers:

rma_kinetics.solvers.Dopri5 dataclass

Dormand-Prince 5(4) Explicit Runge-Kutta method.

__init__(solver_type: str, rtol: float = 1e-06, atol: float = 1e-06, dt0: float = 0, min_dt: float = 0, max_dt: float = float('inf'), max_steps: float = 10000, max_rejected_steps: float = 100, safety_factor: float = 0.9, min_scale: float = 0.2, max_scale: float = 10) -> None

rma_kinetics.solvers.Kvaerno3 dataclass

Kvaerno 3(2) method. L-stable, 3rd order. Uses 4 stages.

__init__(solver_type: str, rtol: float = 1e-06, atol: float = 1e-06, dt0: float = 0, min_dt: float = 0, max_dt: float = float('inf'), max_steps: float = 10000, max_rejected_steps: float = 100, safety_factor: float = 0.9, min_scale: float = 0.2, max_scale: float = 10) -> None

The Rust library uses the differential_equations crate directly. You can use any solver provided by this crate for more direct control.