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.