{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 6. How to Solve ODEs with Rate Law Functions\n", "\n", "In general, `ReactionRule` describes a mass action kinetics with no more than two reactants. In case of a reaction with a complecated rate law, `ReactionRule` could be extensible with `ReactionRuleDescriptor`. Here, we explan the use of `ReactionRuleDescriptor` especially for `ode`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "from ecell4.prelude import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6.1. ReactionRuleDescriptor\n", "\n", "`ReactionRule` defines reactants, products, and a kinetic rate." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n", "1\n", "1.0\n", "A+B>C|1\n", "False\n" ] } ], "source": [ "rr1 = ReactionRule()\n", "rr1.add_reactant(Species(\"A\"))\n", "rr1.add_reactant(Species(\"B\"))\n", "rr1.add_product(Species(\"C\"))\n", "rr1.set_k(1.0)\n", "print(len(rr1.reactants())) # => 2\n", "print(len(rr1.products())) # => 1\n", "print(rr1.k()) # => 1.0\n", "print(rr1.as_string()) # => A+B>C|1\n", "print(rr1.has_descriptor()) # => False" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In addition to that, `ReactionRule` could be extensible with `ReactionRuleDescriptor`." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0\n" ] } ], "source": [ "desc1 = ReactionRuleDescriptorMassAction(1.0)\n", "print(desc1.k())\n", "rr1.set_descriptor(desc1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`ReactionRuleDescriptor` is accessible from `ReactionRule`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "\n", "1.0\n" ] } ], "source": [ "print(rr1.has_descriptor())\n", "print(rr1.get_descriptor())\n", "print(rr1.get_descriptor().k())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`ReactionRuleDescriptor` can store stoichiometric coefficients for each reactants:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2*A+3*B>4*C|1\n" ] } ], "source": [ "desc1.set_reactant_coefficient(0, 2) # Set a coefficient of the first reactant\n", "desc1.set_reactant_coefficient(1, 3) # Set a coefficient of the second reactant\n", "desc1.set_product_coefficient(0, 4) # Set a coefficient of the first product\n", "print(rr1.as_string())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can get the list of coefficients in the following way:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2.0, 3.0]\n", "[4.0]\n" ] } ], "source": [ "print(desc1.reactant_coefficients()) # => [2.0, 3.0]\n", "print(desc1.product_coefficients()) # => [4.0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Please be careful that `ReactionRuleDescriptor` works properly only with `ode`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6.2. ReactionRuleDescriptorPyFunc\n", "\n", "`ReactionRuleDescriptor` provides a function to calculate a derivative (flux or velocity) based on the given values of `Species`. In this section, we will explain the way to define your own kinetic law." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A+B>C|0\n" ] } ], "source": [ "rr1 = ReactionRule()\n", "rr1.add_reactant(Species(\"A\"))\n", "rr1.add_reactant(Species(\"B\"))\n", "rr1.add_product(Species(\"C\"))\n", "print(rr1.as_string())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, define a rate law function as a Python function. The function must accept six arguments and return a floating number. The first and second lists contain a value for each reactants and products respectively. The third and fourth represent volume and time. The coefficients of reactants and products are given in the last two arguments." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def ratelaw(r, p, v, t, rc, pc):\n", " return 1.0 * r[0] * r[1] - 2.0 * p[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`ReactionRuleDescriptorPyFunc` accepts the function." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "test\n", "1*A+1*B>1*C|0\n" ] } ], "source": [ "desc1 = ReactionRuleDescriptorPyfunc(ratelaw, 'test')\n", "desc1.set_reactant_coefficients([1, 1])\n", "desc1.set_product_coefficients([1])\n", "rr1.set_descriptor(desc1)\n", "print(desc1.as_string())\n", "print(rr1.as_string())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A `lambda` function is available too." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "test\n", "1*A+1*B>1*C|0\n" ] } ], "source": [ "desc2 = ReactionRuleDescriptorPyfunc(lambda r, p, v, t, rc, pc: 1.0 * r[0] * r[1] - 2.0 * p[0], 'test')\n", "desc2.set_reactant_coefficients([1, 1])\n", "desc2.set_product_coefficients([1])\n", "rr1.set_descriptor(desc2)\n", "print(desc1.as_string())\n", "print(rr1.as_string())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To test if the function works properly, evaluate the value with `ode.World`." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "140.0\n" ] } ], "source": [ "w = ode.World()\n", "w.set_value(Species(\"A\"), 10)\n", "w.set_value(Species(\"B\"), 20)\n", "w.set_value(Species(\"C\"), 30)\n", "\n", "print(w.evaluate(rr1)) # => 140 = 1 * 10 * 20 - 2 * 30" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6.3. NetworkModel\n", "\n", "`NetworkModel` accepts `ReactionRule`s with and without `ReactionRuleDescriptor`." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "m1 = NetworkModel()\n", "rr1 = create_unbinding_reaction_rule(Species(\"C\"), Species(\"A\"), Species(\"B\"), 3.0)\n", "m1.add_reaction_rule(rr1)\n", "rr2 = create_binding_reaction_rule(Species(\"A\"), Species(\"B\"), Species(\"C\"), 0.0)\n", "desc1 = ReactionRuleDescriptorPyfunc(lambda r, p, v, t, rc, pc: 0.1 * r[0] * r[1], \"test\")\n", "desc1.set_reactant_coefficients([1, 1])\n", "desc1.set_product_coefficients([1])\n", "rr2.set_descriptor(desc1)\n", "m1.add_reaction_rule(rr2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can access to the list of `ReactionRule`s in `NetworkModel` via its member `reaction_rules()`." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['C>A+B|3', '1*A+1*B>1*C|0']\n" ] } ], "source": [ "print([rr.as_string() for rr in m1.reaction_rules()])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, you can run simulations in the same way with other solvers as follows:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "run_simulation(1.0, model=m1, y0={'A': 60, 'B': 60})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Modeling with Python decorators is also available by specifying a function instead of a rate (floating number). When a floating number is set, it is assumed to be a kinetic rate of a mass action reaction, but not a constant velocity." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "from functools import reduce\n", "from operator import mul\n", "\n", "with reaction_rules():\n", " A + B == C | (lambda r, *args: 0.1 * reduce(mul, r), 3.0)\n", "\n", "m1 = get_model()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the simplicity, you can directory defining the equation with `Species` names as follows:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "with reaction_rules():\n", " A + B == C | (0.1 * A * B, 3.0)\n", "\n", "m1 = get_model()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When you call a `Species` (in the rate law) which is not listed as a reactant or product, it is automatically added to the list as an enzyme." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1*S+1*E>1*P+1*E|0\n", "((1.0 * E * S) / (30.0 + S))\n" ] } ], "source": [ "with reaction_rules():\n", " S > P | 1.0 * E * S / (30.0 + S)\n", "\n", "m1 = get_model()\n", "print(m1.reaction_rules()[0].as_string())\n", "print(m1.reaction_rules()[0].get_descriptor().as_string())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where `E` in the equation is appended to both reacant and product lists." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "run_simulation(10.0, model=m1, y0={'S': 60, 'E': 30})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Please be careful about typo in `Species`' name. When you make a typo, it is unintentionally recognized as a new enzyme:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1*A13P2G+1*A13B2G>1*A23P2G+1*A13B2G|0\n" ] } ], "source": [ "with reaction_rules():\n", " A13P2G > A23P2G | 1500 * A13B2G # typo: A13P2G -> A13B2G\n", "\n", "m1 = get_model()\n", "print(m1.reaction_rules()[0].as_string())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When you want to disable the automatic declaration of enzymes, inactivate `util.decorator.ENABLE_IMPLICIT_DECLARATION`. If its value is `False`, the above case will raise an error:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RuntimeError('[A13B2G] is unknown [(1500 * {0})].')\n" ] } ], "source": [ "import ecell4.util.decorator\n", "ecell4.util.decorator.ENABLE_IMPLICIT_DECLARATION = False\n", "\n", "try:\n", " with reaction_rules():\n", " A13P2G > A23P2G | 1500 * A13B2G\n", "except RuntimeError as e:\n", " print(repr(e))\n", "\n", "ecell4.util.decorator.ENABLE_IMPLICIT_DECLARATION = True" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although E-Cell4 is specialized for a simulation of biochemical reaction network, by using a synthetic reaction rule, ordinary differential equations can be translated intuitively. For example, the Lotka-Volterra equations:\n", "\n", "$$\\frac{dx}{dt} = Ax - Bxy\\\\\\frac{dy}{dt} = -Cx + Dxy$$\n", "\n", "where $A=1.5, B=1, C=3, D=1, x(0)=10, y(0)=5$, are solved as follows:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "with reaction_rules():\n", " A, B, C, D = 1.5, 1, 3, 1\n", "\n", " ~x > x | A * x - B * x * y\n", " ~y > y | -C * y + D * x * y\n", "\n", "run_simulation(10, model=get_model(), y0={'x': 10, 'y': 5})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6.4. References in a Rate Law\n", "\n", "Here, we exlain the details in the rate law definition.\n", "\n", "First, when you use simpler definitions of a rate law with `Species`, only a limited number of mathematical functions (e.g. `exp`, `log`, `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, and `pi`) are available there even if you declare the function outside the block." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "TypeError('must be real number, not DivExp')\n" ] } ], "source": [ "try:\n", " from math import erf\n", "\n", " with reaction_rules():\n", " S > P | erf(S / 30.0)\n", "except TypeError as e:\n", " print(repr(e))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This error happens because `erf` is tried to be evaluated agaist `S / 30.0`, which is not a floating number. In contrast, the following case is acceptable:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(0.9953222650189527 * S)\n" ] } ], "source": [ "from math import erf\n", "\n", "with reaction_rules():\n", " S > P | erf(2.0) * S\n", "\n", "m1 = get_model()\n", "print(m1.reaction_rules()[0].get_descriptor().as_string())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where only the result of `erf(2.0)`, `0.995322265019`, is passed to the rate law. Thus, the rate law above has no reference to the `erf` function. Similarly, a value of variables declared outside is acceptable, but not as a reference." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "((1.0 * E * S) / (30.0 + S))\n", "((1.0 * E * S) / (30.0 + S))\n" ] } ], "source": [ "kcat, Km = 1.0, 30.0\n", "\n", "with reaction_rules():\n", " S > P | kcat * E * S / (Km + S)\n", "\n", "m1 = get_model()\n", "print(m1.reaction_rules()[0].get_descriptor().as_string())\n", "kcat = 2.0 # This doesn't affect the model\n", "print(m1.reaction_rules()[0].get_descriptor().as_string())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Even if you change the value of a variable, it does **not** affect the rate law.\n", "\n", "On the other hand, when you use your own function to define a rate law, it can hold a reference to variables outside." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "k1 = 1.0\n", "\n", "with reaction_rules():\n", " S > P | (lambda r, *args: k1 * r[0]) # referring k1\n", "\n", "m1 = get_model()\n", "\n", "ret1 = run_simulation(2, model=m1, y0={\"S\": 60})\n", "k1 = 2.0 # This could change the result\n", "ret2 = run_simulation(2, model=m1, y0={\"S\": 60})\n", "\n", "plotting.plot_number_observer(ret1, '-', ret2, '--')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, in this case, it is better to make a new model for each set of parameters." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def create_model(k):\n", " with reaction_rules():\n", " S > P | k\n", "\n", " return get_model()\n", "\n", "ret1 = run_simulation(2, model=create_model(k=1.0), y0={\"S\": 60})\n", "ret2 = run_simulation(2, model=create_model(k=2.0), y0={\"S\": 60})\n", "plotting.plot_number_observer(ret1, '-', ret2, '--')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6.5. More about ODEs\n", "\n", "In `ode.World`, a value for each `Species` is a floating number. However, for the compatibility, the common member `num_molecules` and `add_molecules` regard the value as an integer." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n" ] } ], "source": [ "w = ode.World()\n", "w.add_molecules(Species(\"A\"), 2.5)\n", "print(w.num_molecules(Species(\"A\")))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To set/get a real number, use `set_value` and `get_value`:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.5\n", "2.5\n" ] } ], "source": [ "w.set_value(Species(\"B\"), 2.5)\n", "print(w.get_value(Species(\"A\")))\n", "print(w.get_value(Species(\"B\")))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a default, `ode.Simulator` employs the Rosenblock method, called `ROSENBROCK4_CONTROLLER`, to solve ODEs. In addition to that, two solvers, `EULER` and `RUNGE_KUTTA_CASH_KARP54`, are available. `ROSENBROCK4_CONTROLLER` and `RUNGE_KUTTA_CASH_KARP54` adaptively change the step size during time evolution due to error controll, but `EULER` does not." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "with reaction_rules():\n", " A > ~A | 1.0\n", "\n", "m1 = get_model()\n", "\n", "w1 = ode.World()\n", "w1.set_value(Species(\"A\"), 1.0)\n", "sim1 = ode.Simulator(w1, m1, ode.EULER)\n", "sim1.set_dt(0.01) # This is only effective for EULER\n", "obs1 = FixedIntervalNumberObserver(0.1)\n", "sim1.run(3.0, obs1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`ode.Factory` also accepts a solver type and a default step interval." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "run_simulation(3.0, model=m1, y0={\"A\": 1.0}, solver=('ode', ode.EULER, 0.01))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See also the examples listed below:\n", "\n", "* [Glycolysis of Human Erythrocytes](../examples/example5.html)\n", "* [Drosophila Circadian Clock](../examples/example2.html)\n", "* [Attractors](../examples/example1.html)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.1" } }, "nbformat": 4, "nbformat_minor": 1 }