{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "2b7a3f73",
   "metadata": {},
   "source": [
    "# Chained reactions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "281334e5",
   "metadata": {},
   "source": [
    "To showcase the [dynamic or programmatic model creation](../model/dynamic.md),\n",
    "we will build a model consisting of a circular chain of $N$ reactions,\n",
    "\n",
    "$$\n",
    "\\begin{cases}\n",
    "X_1 \\rightarrow X_{2} \\\\\n",
    "\\ldots \\\\\n",
    "X_i \\rightarrow X_{i+1} \\\\\n",
    "\\ldots \\\\\n",
    "X_N \\rightarrow X_{1}\n",
    "\\end{cases}\n",
    "$$\n",
    "\n",
    "and simulate it for different values of $N$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1035e43d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from simbio.components import EmptyCompartment\n",
    "from simbio.reactions import single\n",
    "from simbio.simulator import Simulator"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "67abc3ba",
   "metadata": {},
   "source": [
    "To define a model programmatically,\n",
    "we need a `Builder` instance,\n",
    "which can be created from a `Compartment.to_builder()` method.\n",
    "`Builder` has several `add_*` methods to create species or add reactions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d44a1c9a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def cyclic_reaction(N_steps):\n",
    "    builder = EmptyCompartment.to_builder()\n",
    "\n",
    "    # First species\n",
    "    x_pre = builder.add_species(\"x0\", 1)\n",
    "\n",
    "    # Chained reactions\n",
    "    for i in range(1, N_steps):\n",
    "        x_post = builder.add_species(f\"x{i}\", 0)\n",
    "        builder.add_reaction(f\"r{i}\", single.Conversion(A=x_pre, B=x_post, rate=1))\n",
    "        x_pre = x_post\n",
    "\n",
    "    # Reaction from last to first species\n",
    "    x_post = builder.x0\n",
    "    builder.add_reaction(f\"r0\", single.Conversion(A=x_pre, B=x_post, rate=1))\n",
    "\n",
    "    return builder.build()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c04c2a4c",
   "metadata": {},
   "source": [
    "With the `cyclic_reaction` function,\n",
    "we can build a model of $N$ reactions,\n",
    "and simulate it for different values of $N$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "e2855804",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1200x300 with 3 Axes>"
      ]
     },
     "metadata": {
      "filenames": {
       "image/png": "/home/docs/checkouts/readthedocs.org/user_builds/simbio/checkouts/latest/docs/_build/jupyter_execute/examples/chained-reactions_6_0.png"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = np.linspace(0, 30, 100)\n",
    "N_steps = (2, 5, 10)\n",
    "\n",
    "fig, axes = plt.subplots(1, len(N_steps), sharey=True, figsize=(12, 3))\n",
    "for ax, N in zip(axes, N_steps):\n",
    "    model = cyclic_reaction(N)\n",
    "    Simulator(model).run(t).plot(ax=ax, legend=False).set(title=f\"N = {N}\")"
   ]
  }
 ],
 "metadata": {
  "jupytext": {
   "text_representation": {
    "extension": ".md",
    "format_name": "myst",
    "format_version": 0.13,
    "jupytext_version": "1.14.0"
   }
  },
  "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.10.8"
  },
  "source_map": [
   12,
   16,
   33,
   39,
   46,
   64,
   70
  ]
 },
 "nbformat": 4,
 "nbformat_minor": 5
}