Skip to content

Kinetics

Reaction kinetics shared by the biology packages: reactions whose propensity saturates in their substrate.

MichaelisMentenInteraction(label, *, target=None, reactants=None, products=None, substrate='n', vmax=1.0, km=1.0, modifiers=None, mode='rate')

Bases: ReactionInteraction

Reaction at the Michaelis-Menten propensity vmax S / (km + S), times every modifier to its coefficient.

The substrate S is a state of the target, or a function of the namespace that returns an amount that is no state of its own, such as the phosphorylated form A_T - A of a protein whose total is conserved. The modifiers are the enzymes that catalyse the reaction, which scale the propensity but do not change, so vmax is a catalytic rate when the reaction has modifiers and a maximal rate when it has none. The maximal rate and the Michaelis constant are functions of the namespace, which reads the parameters of the target, or numbers.

Parameters:

Name Type Description Default
label str

The label of the reaction, unique among the parts of its system.

required
target Annotated[str | None, RoleSpec()]

The path of the element, group, or field whose states the species named by a state alone are.

None
reactants Annotated[Stoichiometry | None, RoleSpec(variadic=True)]

The coefficients of the reactants, or None for a source.

None
products Annotated[Stoichiometry | None, RoleSpec(variadic=True)]

The coefficients of the products, or None for a sink.

None
substrate str | Callable[[SimpleNamespace], object]

The name of the state of the target that saturates the propensity, or a function of the namespace that returns the amount that does.

'n'
vmax Callable[[SimpleNamespace], object] | float

A function of the namespace that returns the maximal or catalytic rate, or a number.

1.0
km Callable[[SimpleNamespace], object] | float

A function of the namespace that returns the Michaelis constant, or a number.

1.0
modifiers Annotated[Stoichiometry | None, RoleSpec(variadic=True)]

The coefficients of the modifiers, the enzymes that scale the propensity, or None.

None
mode str

The form of the laws, 'rate', 'jump', or 'langevin'.

'rate'

Raises:

Type Description
ValidationError

The substrate is neither a name nor a function, a rate is neither a function nor a number, or the reaction cannot take its species or mode.

Examples:

>>> from skcomplex.core.elements import CompartmentElement
>>> from skcomplex.core.system import System
>>> from skcomplex.engine.runtime import Simulation
>>> from skcomplex.models.biology.common.kinetics import MichaelisMentenInteraction
>>> uptake = MichaelisMentenInteraction(
...     'uptake', target='cell', reactants={'n': 1}, substrate='n', vmax=1.0, km=100.0
... )
>>> system = System(elements=[CompartmentElement('cell', n=500.0)], interactions=[uptake])
>>> trajectory = Simulation(system, dt=1.0).check().prepare().run(until=10.0).trajectory_
>>> round(float(trajectory.values('cell.n')[-1]), 3)
491.679
Source code in src/skcomplex/models/biology/common/kinetics/_michaelis_menten.py
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
def __init__(
    self,
    label: str,
    *,
    target: Annotated[str | None, RoleSpec()] = None,
    reactants: Annotated[Stoichiometry | None, RoleSpec(variadic=True)] = None,
    products: Annotated[Stoichiometry | None, RoleSpec(variadic=True)] = None,
    substrate: str | Callable[[SimpleNamespace], object] = 'n',
    vmax: Callable[[SimpleNamespace], object] | float = 1.0,
    km: Callable[[SimpleNamespace], object] | float = 1.0,
    modifiers: Annotated[Stoichiometry | None, RoleSpec(variadic=True)] = None,
    mode: str = 'rate',
) -> None:
    super().__init__(label, target=target, reactants=reactants, products=products, modifiers=modifiers, mode=mode)
    self.substrate = substrate
    self.vmax = vmax
    self.km = km