Derivation tutorial

This tutorial shows how to define the reversible Michaelis–Menten mechanism and derive its rate equation as a String. After reading it, you will recognize the package's parameter names as the textbook constants you already know.

Defining the mechanism

Use @enzyme_mechanism to declare the mechanism. The arrow marks a step as rapid equilibrium (RE); <--> marks it as steady state (SS).

julia> using EnzymeRates

julia> m = @enzyme_mechanism begin
           substrates: S
           products:   P
           steps: begin
               E + S ⇌ E(S)
               E(S) <--> E(P)
               E(P) ⇌ E + P
           end
       end;

julia> m isa EnzymeMechanism
true

The two binding steps are rapid equilibrium; the central isomerization E(S) <--> E(P) is steady state. That single SS step is the rate-limiting catalytic step.

Deriving the rate equation

rate_equation_string returns the symbolic rate equation as a multi-line String (it does not print). Call print to display it without escaped newlines:

julia> print(rate_equation_string(m))
(; K_P_E, K_S_E, k_ES_to_EP, Keq, E_total) = params
(; S, P) = concs
# Haldane constraints:
k_EP_to_ES = (1 / Keq) * K_P_E * (1 / K_S_E) * k_ES_to_EP
v = E_total * (k_ES_to_EP * S / K_S_E - k_EP_to_ES * P / K_P_E) / (1 + P / K_P_E + S / K_S_E)

The default mode is Reduced. In Reduced mode the string has four sections:

  1. A params destructuring line listing the independent fitted parameters plus Keq and E_total.
  2. A concs destructuring line listing the concentration symbols.
  3. An optional # Haldane constraints: (or # Wegscheider constraints:) section where each dependent rate constant is expressed in terms of Keq and the independent parameters.
  4. The final v = E_total * (num) / (den) line.

Meaning of parameter names

Package symbolRoleUnits
K_S_EDissociation constant of substrate S from the ES complex. For a one-substrate, one-product Michaelis–Menten enzyme it is analogous to the Michaelis constant Km under the rapid-equilibrium approximation, but it is not the same as Km for more complex mechanisms.M
K_P_EDissociation constant of product P from the EP complex.M
k_ES_to_EPRate of conversion of enzyme species ES to enzyme species EP.1/s
k_EP_to_ESRate of the reverse conversion, EP to ES.1/s
kon_S_ERate constant for binding of S to E.1/(s·M)
koff_S_ERate of dissociation of S from the ES complex.1/s
KeqEquilibrium constant of the overall reaction; always user-supplied.unitless
E_totalActive-site (protomer) concentration. For a monomer this equals the total enzyme concentration; for an allosteric enzyme with N catalytic subunits it is N × the oligomer concentration, so allosteric kcat is reported per active site.M

Inspecting parameters and metabolites

The @example block below shows the fitted-parameter tuple and the concentration symbols returned by parameters and metabolites:

using EnzymeRates
m = @enzyme_mechanism begin
    substrates: S
    products:   P
    steps: begin
        E + S ⇌ E(S)
        E(S) <--> E(P)
        E(P) ⇌ E + P
    end
end
(parameters(m), metabolites(m))
((:K_P_E, :K_S_E, :k_ES_to_EP, :Keq, :E_total), (:S, :P))

parameters(m) returns the symbols the fitter expects: the three independent constants plus Keq and E_total. metabolites(m) returns the concentration symbols the rate equation reads at runtime.

Full mode

Passing Full lists all raw rate constants, before any thermodynamic reduction:

parameters(m, Full)
(:K_P_E, :K_S_E, :k_ES_to_EP, :k_EP_to_ES, :E_total)

Full mode includes both k_ES_to_EP and k_EP_to_ES as independent symbols, so there is no constraint section. See Rapid equilibrium vs steady state for the contrast between RE and SS parameters, and how adding SS steps changes this list.