Home / Science / Molecular and cell biology / Systems biology / Pathway ODE builderTool #986

Pathway ODE model builder: write reactions, simulate (mass action, Michaelis-Menten, Hill) and fit rate constants to data

Type a pathway as reactions (mass action, reversible, Michaelis-Menten or Hill) and get its differential equations, a simulated time course from an adaptive Runge-Kutta solver, and a least-squares fit of chosen rate constants to your own measured time courses, with standard errors.

Keep it one tap away for everyday use.

Bookmark Pathway ODE builder?

Press Ctrl + D now. Your browser opens its own bookmark box, where you choose the name and folder.

  1. Reactions
  2. Equations
  3. Simulate
  4. Fit
Nothing is uploadedWorks offline once open

Model

Write reactions as A + B -> C : k1 (mass action), A <-> B : kf, kr (reversible), S -> P : MM(Vmax, Km) (Michaelis–Menten), X -> Y : Hill(Vmax, K, n), -> A : k0 (made from nothing) or A -> : kd (removed). A number in front of a species is its stoichiometry (2 B -> C). Then give every rate constant and any starting amount (S = 10); species not given start at 0. Text after # is a comment.

Simulation

    Solved with the Dormand–Prince 5(4) method (the one behind SciPy's RK45) with adaptive steps, relative tolerance 10⁻⁸. Use the same time unit everywhere: a rate constant of 0.5 per minute means time in minutes.

    Fit to data

    Parameters to fit (the model values are the starting guesses)

    The fit finds the values that make the simulated curves pass closest to your points (least squares, Levenberg–Marquardt; parameters stay above 0). Leave cells empty or NA where a species was not measured. The example data are made up.

    A model is only as good as its rate laws and numbers; check fits against new data before relying on them. For study and planning, not a substitute for professional judgement.

    Download

    What it does

    Many questions in biochemistry and systems biology come down to “how do the amounts change over time?” Write a pathway as a list of reactions and this page turns it into a set of ordinary differential equations (ODEs), one per species, solves them, and draws the time course. If you have measurements, it can also fit chosen rate constants so the model passes as close as possible to your data.

    Everything runs in your browser. Nothing you type or paste is sent anywhere.

    How to use it

    1. Write one reaction per line, with its rate after a colon:
      • A + B -> C : k1 is mass action: the rate is k1·[A]·[B].
      • A <-> B : kf, kr is reversible: kf·[A] − kr·[B].
      • S -> P : MM(Vmax, Km) is Michaelis–Menten: Vmax·[S]/(Km + [S]).
      • X -> X + Y : Hill(Vmax, K, n) is a Hill law, for example X switching on the production of Y.
      • -> A : k0 makes A at a constant rate, and A -> : kd removes it.
      • A number in front of a species is its stoichiometry: 2 B -> C : kd uses two B and runs at kd·[B]².
    2. Give a value for every rate constant (k1 = 0.5) and a starting amount for any species that does not start at 0 (S = 10).
    3. Set Simulate until time. The page shows the equations it built, the starting and final amount of each species with its peak, and the time course. Download it as CSV.
    4. To fit, paste or open your data: a time column, then one column per measured species, named as in the model. Tick the parameters to fit and press Fit. The values in the model are the starting guesses.
    5. Read the fitted values, their standard errors, the sum of squares and R², and the chart of fitted lines over your points. Put the fitted values into the model writes them back into the reaction text.

    Worked example

    The example is a made-up three-step pathway: a substrate S is converted to an intermediate I by an enzyme (Michaelis–Menten, Vmax1 = 1, Km1 = 2), I turns into the product P (k2 = 0.5), and P is cleared (k3 = 0.1). S starts at 10.

    The page writes the equations as d[S]/dt = −Vmax1·[S]/(Km1 + [S]), d[I]/dt = Vmax1·[S]/(Km1 + [S]) − k2·[I] and d[P]/dt = k2·[I] − k3·[P]. Simulated to t = 30, S falls from 10 to 0.0004539, I peaks at 1.449 near t = 6, and P peaks at 4.489 near t = 13.8 before it is cleared to 1.41.

    The example data (made up, with a little noise) have I and P at ten times. Fitting Vmax1 and k2 gives Vmax1 = 1.17 (standard error 0.01001) and k2 = 0.4012 (standard error 0.005686), a sum of squares of 0.05361 over 20 points and R² = 0.9986. SciPy’s solve_ivp and curve_fit give the same numbers.

    Tips

    • Use one time unit throughout. If k2 is per minute, the data times are minutes.
    • Fit only the parameters the data can tell apart. If a standard error is as large as the value itself, fix that parameter and fit fewer.
    • If a fit stops before converging, start from values closer to the truth: simulate, compare by eye, adjust, then fit.
    • A species that is never measured can still be in the model; only the columns you paste are fitted.

    FAQ

    Which solver is used? The Dormand–Prince 5(4) Runge–Kutta pair with adaptive steps, the method behind SciPy’s default RK45, with a relative tolerance of 10⁻⁸. Very stiff models (rates that differ by many orders of magnitude) may be slow or stop with a message.

    How are standard errors worked out? From the Jacobian of the residuals at the best fit, scaled by the residual variance, as SciPy’s curve_fit does. They assume the errors in the data are independent and of similar size.

    Can I fit starting amounts? Not yet; only rate constants. Put the measured starting amount in the model.

    Is my data uploaded? No. The model, the solver and the fit all run in this page, and it keeps working offline. For study and planning, not a substitute for professional judgement.

    Where the numbers come from

    • Mass-action, Michaelis-Menten and Hill rate laws as in standard biochemistry and systems biology texts; the Dormand-Prince 5(4) Runge-Kutta pair (Dormand, J. R. and Prince, P. J., 1980, J. Comput. Appl. Math. 6, 19 to 26); Levenberg-Marquardt least squares: used as methods, written by fibub.
    • Checked against SciPy (scipy.integrate.solve_ivp with DOP853 at rtol 1e-12, and scipy.optimize.curve_fit for the fitted values, standard errors and sum of squares). The example model and data are made up.

    Standard scientific values, such as constants, atomic weights and melting points, are facts found in every textbook; we name where ours were checked. If you are an author or publisher and want a value, a credit or a table changed or removed, tell us and we will act quickly.

    Last updated 2026-11-09.

    Related tools

    Enzyme kinetics fitter #112 Paste substrate concentrations and initial rates, with or without an inhibitor, and fit Michaelis–Menten, substrate inhibition, Hill, or competitive, uncompetitive, non-competitive and mixed inhibition by non-linear least squares. Get Km, Vmax, Ki, kcat and kcat/Km with errors, a model comparison by AICc, and the Lineweaver–Burk, Eadie–Hofstee and Hanes–Woolf values side by side. Gene network viewer #987 Open or paste a gene regulatory network as SIF or GraphML and see it drawn with a force-directed layout, activating edges as arrows and repressing edges as bars, with in- and out-degree for every gene, connected parts, autoregulation, two-gene feedback loops and feed-forward loops sorted into coherent and incoherent. Your file stays on your device. Gillespie stochastic simulator #988 Simulate small reaction networks one molecule at a time with Gillespie's exact stochastic algorithm. Run many times to see the mean, the spread and single runs against the deterministic ODE, and the distribution of counts at the end against a Poisson distribution, with the Fano factor. Reaction kinetics fitter #81 Paste concentration against time to find the reaction order, the rate constant with its uncertainty and the half-life; paste k at several temperatures for the activation energy, A, ΔH‡ and ΔS‡. 1D Schrödinger solver #923 Choose a textbook potential, type a formula or draw your own, and get the lowest energy levels and wavefunctions of the one-dimensional Schrödinger equation by the matrix (finite-difference) method, with the exact levels alongside for the box, harmonic oscillator, finite well, Morse, linear and Pöschl–Teller potentials. Adduct and neutral loss calculator #984 Type a formula or a neutral monoisotopic mass and get the m/z of 25 common electrospray adducts in positive and negative mode, the ions left after common neutral losses (water, ammonia, CO2, sugars, phosphate and your own), and match a list of observed m/z values within a ppm tolerance. With no molecule, it turns observed m/z values into candidate neutral masses.