{ "cells": [ { "cell_type": "markdown", "id": "80abc7ee-f50e-48b7-9ea7-15ce6226b0bf", "metadata": {}, "source": [ "## One-bin `2A <-> B` reaction, \n", "### COMPARING 1st-order and 2nd-order kinetics in *forward* direction; reverse direction 1-st order\n", "\n", "Diffusion not applicable (just 1 bin)\n", "\n", "See also the experiment _\"reactions_single_compartment/react_4\"_ \n", "\n", "LAST REVISED: June 23, 2024 (using v. 1.0 beta34.1)" ] }, { "cell_type": "code", "execution_count": 1, "id": "9bbb329b-3c10-45dd-8d43-bba25487f64f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Added 'D:\\Docs\\- MY CODE\\BioSimulations\\life123-Win7' to sys.path\n" ] } ], "source": [ "import set_path # Importing this module will add the project's home directory to sys.path" ] }, { "cell_type": "code", "execution_count": 2, "id": "f86597fb", "metadata": {}, "outputs": [], "source": [ "from experiments.get_notebook_info import get_notebook_basename\n", "\n", "from life123 import ChemData as chem\n", "from life123 import BioSim1D\n", "\n", "import plotly.express as px\n", "from life123 import HtmlLog as log\n", "from life123 import GraphicLog" ] }, { "cell_type": "code", "execution_count": 3, "id": "ecba68b6-d062-47fe-9a17-ec339907323e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-> Output will be LOGGED into the file 'reaction_7.log.htm'\n" ] } ], "source": [ "# Initialize the HTML logging\n", "log_file = get_notebook_basename() + \".log.htm\" # Use the notebook base filename for the log file\n", "\n", "# Set up the use of some specified graphic (Vue) components\n", "GraphicLog.config(filename=log_file,\n", " components=[\"vue_cytoscape_2\"],\n", " extra_js=\"https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.21.2/cytoscape.umd.js\")" ] }, { "cell_type": "markdown", "id": "43fb42a4-1582-45b5-9c8b-be146cb72236", "metadata": {}, "source": [ "# INITIALLY, with 1st-order kinetics in both directions" ] }, { "cell_type": "code", "execution_count": 4, "id": "72d71ac8-3f7d-47b5-94ba-142fca566ff4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0:\n", "1 bins and 2 species:\n", " Species 0 (A). Diff rate: None. Conc: [3.]\n", " Species 1 (B). Diff rate: None. Conc: [5.]\n" ] } ], "source": [ "# Initialize the system\n", "chem_data = chem(names=[\"A\", \"B\"]) # NOTE: Diffusion not applicable (just 1 bin)\n", "\n", "\n", "\n", "# Reaction 2A <-> B , FOR NOW with 1st-order kinetics in both directions\n", "chem_data.add_reaction(reactants=[(2, \"A\", 1)], products=[\"B\"], forward_rate=5., reverse_rate=2.)\n", "\n", "bio = BioSim1D(n_bins=1, chem_data=chem_data)\n", "\n", "bio.set_all_uniform_concentrations( [3., 5.] )\n", "\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 5, "id": "35163098-208e-4ba1-a115-e02463df2750", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABcaption
003.05.0Initial state
\n", "
" ], "text/plain": [ " SYSTEM TIME A B caption\n", "0 0 3.0 5.0 Initial state" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Save the state of the concentrations of all species at bin 0\n", "bio.add_snapshot(bio.bin_snapshot(bin_address = 0), caption=\"Initial state\")\n", "bio.get_history()" ] }, { "cell_type": "code", "execution_count": 6, "id": "b472b184-9e22-45d4-ab18-b2507a83334a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of reactions: 1 (at temp. 25 C)\n", "0: 2 A <-> B (kF = 5 / kR = 2 / delta_G = -2,271.4 / K = 2.5) | 1st order in all reactants & products\n", "Set of chemicals involved in the above reactions: {'B', 'A'}\n" ] } ], "source": [ "chem_data.describe_reactions()" ] }, { "cell_type": "code", "execution_count": 7, "id": "3be8b568-fc3c-41a3-98dd-6ad6983f2bc9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reaction 2A B is 1st order in all species:\n", "[GRAPHIC ELEMENT SENT TO LOG FILE `reaction_7.log.htm`]\n" ] } ], "source": [ "# Send a header and a plot to the HTML log file\n", "log.write(\"Reaction 2A <-> B is 1st order in all species:\",\n", " style=log.h2)\n", "\n", "chem_data.plot_reaction_network(\"vue_cytoscape_2\")" ] }, { "cell_type": "code", "execution_count": 8, "id": "4ee91e87-4800-41d6-bc21-223ac1e493b3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0.02:\n", "1 bins and 2 species:\n", " Species 0 (A). Diff rate: None. Conc: [2.8]\n", " Species 1 (B). Diff rate: None. Conc: [5.1]\n" ] } ], "source": [ "# First step\n", "bio.react(time_step=0.02, n_steps=1, snapshots={\"sample_bin\": 0})\n", "bio.describe_state()" ] }, { "cell_type": "markdown", "id": "fb58f958-29fc-4a43-ad33-751ef02c3cc2", "metadata": {}, "source": [ "Small conc. changes so far: [A] = 2.8 , [B] = 5.1" ] }, { "cell_type": "code", "execution_count": 9, "id": "86a7497e-cd17-4f4d-b9b1-9bfd786c865f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABcaption
00.003.05.0Initial state
10.022.85.1
\n", "
" ], "text/plain": [ " SYSTEM TIME A B caption\n", "0 0.00 3.0 5.0 Initial state\n", "1 0.02 2.8 5.1 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_history()" ] }, { "cell_type": "code", "execution_count": 10, "id": "1e458105-4a8d-4f81-9776-7bde2c92b630", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0.42:\n", "1 bins and 2 species:\n", " Species 0 (A). Diff rate: None. Conc: [2.16928427]\n", " Species 1 (B). Diff rate: None. Conc: [5.41535786]\n" ] } ], "source": [ "# Numerous more steps, to equilibrium\n", "bio.react(time_step=0.02, n_steps=20, snapshots={\"sample_bin\": 0})\n", "\n", "bio.describe_state()" ] }, { "cell_type": "markdown", "id": "bb5ee324-b0e9-4823-82ae-815aab494b57", "metadata": {}, "source": [ "Consistent with the 5/2 ratio of forward/reverse rates (and the *1st order* reactions),\n", "the systems settles in the following equilibrium: \n", "[A] = 2.16928427 , [B] = 5.41535786" ] }, { "cell_type": "code", "execution_count": 11, "id": "c3a088c4-c904-4d23-9940-307d9ca9a80f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 A <-> B\n", "Final concentrations: [A] = 2.169 ; [B] = 5.415\n", "1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.49638\n", " Formula used: [B] / [A]\n", "2. Ratio of forward/reverse reaction rates: 2.5\n", "Discrepancy between the two values: 0.1448 %\n", "Reaction IS in equilibrium (within 1% tolerance)\n", "\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Verify that the reaction has reached equilibrium\n", "bio.reaction_dynamics.is_in_equilibrium(rxn_index=0, conc=bio.bin_snapshot(bin_address = 0))" ] }, { "cell_type": "code", "execution_count": 12, "id": "7508667b-5e7f-4eed-ba41-a478f4d068b6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABcaption
00.003.0000005.000000Initial state
10.022.8000005.100000
20.042.6480005.176000
30.062.5324805.233760
40.082.4446855.277658
50.102.3779605.311020
60.122.3272505.336375
70.142.2887105.355645
80.162.2594205.370290
90.182.2371595.381421
100.202.2202415.389880
110.222.2073835.396309
120.242.1976115.401194
130.262.1901845.404908
140.282.1845405.407730
150.302.1802515.409875
160.322.1769905.411505
170.342.1745135.412744
180.362.1726305.413685
190.382.1711995.414401
200.402.1701115.414945
210.422.1692845.415358
\n", "
" ], "text/plain": [ " SYSTEM TIME A B caption\n", "0 0.00 3.000000 5.000000 Initial state\n", "1 0.02 2.800000 5.100000 \n", "2 0.04 2.648000 5.176000 \n", "3 0.06 2.532480 5.233760 \n", "4 0.08 2.444685 5.277658 \n", "5 0.10 2.377960 5.311020 \n", "6 0.12 2.327250 5.336375 \n", "7 0.14 2.288710 5.355645 \n", "8 0.16 2.259420 5.370290 \n", "9 0.18 2.237159 5.381421 \n", "10 0.20 2.220241 5.389880 \n", "11 0.22 2.207383 5.396309 \n", "12 0.24 2.197611 5.401194 \n", "13 0.26 2.190184 5.404908 \n", "14 0.28 2.184540 5.407730 \n", "15 0.30 2.180251 5.409875 \n", "16 0.32 2.176990 5.411505 \n", "17 0.34 2.174513 5.412744 \n", "18 0.36 2.172630 5.413685 \n", "19 0.38 2.171199 5.414401 \n", "20 0.40 2.170111 5.414945 \n", "21 0.42 2.169284 5.415358 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = bio.get_history()\n", "df" ] }, { "cell_type": "code", "execution_count": 13, "id": "7a77d5dc-035c-40b7-bd82-44bcfdef3ac6", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "A", "line": { "color": "navy", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12000000000000001, 0.14, 0.16, 0.18, 0.19999999999999998, 0.21999999999999997, 0.23999999999999996, 0.25999999999999995, 0.27999999999999997, 0.3, 0.32, 0.34, 0.36000000000000004, 0.38000000000000006, 0.4000000000000001, 0.4200000000000001 ], "xaxis": "x", "y": [ 3, 2.8, 2.6479999999999997, 2.5324799999999996, 2.4446847999999997, 2.3779604479999996, 2.32724994048, 2.2887099547647995, 2.2594195656212475, 2.237158869872148, 2.2202407411028324, 2.2073829632381528, 2.197611052060996, 2.1901843995663572, 2.1845401436704317, 2.180250509189528, 2.1769903869840412, 2.174512694107871, 2.172629647521982, 2.171198532116706, 2.1701108844086967, 2.1692842721506094 ], "yaxis": "y" }, { "hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "B", "line": { "color": "orange", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "B", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12000000000000001, 0.14, 0.16, 0.18, 0.19999999999999998, 0.21999999999999997, 0.23999999999999996, 0.25999999999999995, 0.27999999999999997, 0.3, 0.32, 0.34, 0.36000000000000004, 0.38000000000000006, 0.4000000000000001, 0.4200000000000001 ], "xaxis": "x", "y": [ 5, 5.1, 5.175999999999999, 5.233759999999999, 5.2776575999999995, 5.311019775999999, 5.336375029759999, 5.355645022617599, 5.370290217189376, 5.381420565063926, 5.389879629448584, 5.396308518380923, 5.401194473969502, 5.404907800216821, 5.407729928164784, 5.409874745405236, 5.411504806507979, 5.412743652946064, 5.413685176239008, 5.414400733941646, 5.414944557795651, 5.415357863924695 ], "yaxis": "y" } ], "layout": { "autosize": true, "legend": { "title": { "text": "Chemical" }, "tracegroupgap": 0 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "2A <-> B : changes in concentrations with time" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 0.4200000000000001 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ 1.9889468503853824, 5.595695285689922 ], "title": { "text": "concentration" }, "type": "linear" } } }, "image/png": "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gAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAAAQhAAAIQgAAEIJAwAaRsws2lNAhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQEAfAaSsvp6QEQQgAAEIQAACEIAABCAA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", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = px.line(data_frame=bio.get_history(), x=\"SYSTEM TIME\", y=[\"A\", \"B\"], \n", " title=\"2A <-> B : changes in concentrations with time\",\n", " color_discrete_sequence = ['navy', 'orange'],\n", " labels={\"value\":\"concentration\", \"variable\":\"Chemical\"})\n", "fig.show()" ] }, { "cell_type": "markdown", "id": "c3d00af0-3222-4cba-8367-3345cea820f4", "metadata": {}, "source": [ "A gets depleted, while B gets produced." ] }, { "cell_type": "markdown", "id": "ab27ab50-7be4-4257-a6cc-2ef163539e1f", "metadata": {}, "source": [ "#### Let's verify that the stoichiometry is being respected" ] }, { "cell_type": "code", "execution_count": 14, "id": "e88539b9-28e1-4b07-9b68-169d1e650e4f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([3., 5.], dtype=float32), array([2.8, 5.1], dtype=float32))" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# We'll check the first two arrays of concentrations, from the run's history\n", "arr0 = bio.reaction_dynamics.get_historical_concentrations(row=0, df=df)\n", "arr1 = bio.reaction_dynamics.get_historical_concentrations(row=1, df=df)\n", "arr0, arr1" ] }, { "cell_type": "code", "execution_count": 15, "id": "f1d42c06-f5bc-447d-93c0-bf7c4b1c824d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.reaction_dynamics.stoichiometry_checker(rxn_index=0, \n", " conc_arr_before = arr0, \n", " conc_arr_after = arr1)" ] }, { "cell_type": "markdown", "id": "6c277db7-6b2b-4e74-b50e-4746cff17e90", "metadata": {}, "source": [ "# STARTING OVER, this time with 2nd-order kinetics in the forward reaction" ] }, { "cell_type": "code", "execution_count": 16, "id": "162100c5-e9d4-498b-81ee-be7b71e7f542", "metadata": {}, "outputs": [], "source": [ "bio.reaction_dynamics.clear_reactions()" ] }, { "cell_type": "code", "execution_count": 17, "id": "9c09f158-2d64-49d6-8d0c-6d3a8b7eff4b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Reaction 2A <-> B , NOW WITH 2nd-order kinetics in the forward direction\n", "chem_data.add_reaction(reactants=[(2, \"A\", 2)], products=[\"B\"], forward_rate=5., reverse_rate=2.)" ] }, { "cell_type": "code", "execution_count": 18, "id": "f2dea24e-6f87-4f76-a513-176916934edb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0.42:\n", "1 bins and 2 species:\n", " Species 0 (A). Diff rate: None. Conc: [3.]\n", " Species 1 (B). Diff rate: None. Conc: [5.]\n" ] } ], "source": [ "# RESET the concentrations to their original values\n", "bio.set_all_uniform_concentrations( [3., 5.] )\n", "\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 19, "id": "8c2155d6-cb42-49e3-8247-c858b0c65860", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABcaption
00.003.0000005.000000Initial state
10.022.8000005.100000
20.042.6480005.176000
30.062.5324805.233760
40.082.4446855.277658
50.102.3779605.311020
60.122.3272505.336375
70.142.2887105.355645
80.162.2594205.370290
90.182.2371595.381421
100.202.2202415.389880
110.222.2073835.396309
120.242.1976115.401194
130.262.1901845.404908
140.282.1845405.407730
150.302.1802515.409875
160.322.1769905.411505
170.342.1745135.412744
180.362.1726305.413685
190.382.1711995.414401
200.402.1701115.414945
210.422.1692845.415358
220.423.0000005.000000RESET all concentrations to initial values
\n", "
" ], "text/plain": [ " SYSTEM TIME A B \\\n", "0 0.00 3.000000 5.000000 \n", "1 0.02 2.800000 5.100000 \n", "2 0.04 2.648000 5.176000 \n", "3 0.06 2.532480 5.233760 \n", "4 0.08 2.444685 5.277658 \n", "5 0.10 2.377960 5.311020 \n", "6 0.12 2.327250 5.336375 \n", "7 0.14 2.288710 5.355645 \n", "8 0.16 2.259420 5.370290 \n", "9 0.18 2.237159 5.381421 \n", "10 0.20 2.220241 5.389880 \n", "11 0.22 2.207383 5.396309 \n", "12 0.24 2.197611 5.401194 \n", "13 0.26 2.190184 5.404908 \n", "14 0.28 2.184540 5.407730 \n", "15 0.30 2.180251 5.409875 \n", "16 0.32 2.176990 5.411505 \n", "17 0.34 2.174513 5.412744 \n", "18 0.36 2.172630 5.413685 \n", "19 0.38 2.171199 5.414401 \n", "20 0.40 2.170111 5.414945 \n", "21 0.42 2.169284 5.415358 \n", "22 0.42 3.000000 5.000000 \n", "\n", " caption \n", "0 Initial state \n", "1 \n", "2 \n", "3 \n", "4 \n", "5 \n", "6 \n", "7 \n", "8 \n", "9 \n", "10 \n", "11 \n", "12 \n", "13 \n", "14 \n", "15 \n", "16 \n", "17 \n", "18 \n", "19 \n", "20 \n", "21 \n", "22 RESET all concentrations to initial values " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Save the state of the concentrations of all species at bin 0\n", "bio.add_snapshot(bio.bin_snapshot(bin_address = 0),\n", " caption = \"RESET all concentrations to initial values\")\n", "bio.get_history()" ] }, { "cell_type": "code", "execution_count": 20, "id": "68b1c2fa-fc50-4f33-a4f0-55d231939752", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of reactions: 1 (at temp. 25 C)\n", "0: 2 A <-> B (kF = 5 / kR = 2 / delta_G = -2,271.4 / K = 2.5) | 2-th order in reactant A\n", "Set of chemicals involved in the above reactions: {'B', 'A'}\n" ] } ], "source": [ "chem_data.describe_reactions()" ] }, { "cell_type": "code", "execution_count": 21, "id": "9c9e81e0-b5b3-45eb-a4eb-0ab157dcf9db", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reaction 2A B is 2nd order in A, and 1st order in B:\n", "[GRAPHIC ELEMENT SENT TO LOG FILE `reaction_7.log.htm`]\n" ] } ], "source": [ "# Send a header and a plot to the HTML log file\n", "log.write(\"Reaction 2A <-> B is 2nd order in A, and 1st order in B:\",\n", " style=log.h2)\n", "chem_data.plot_reaction_network(\"vue_cytoscape_2\")" ] }, { "cell_type": "code", "execution_count": 22, "id": "ab938afe-a818-4e9c-bc2d-d347aa0d0a23", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0.44:\n", "1 bins and 2 species:\n", " Species 0 (A). Diff rate: None. Conc: [1.6]\n", " Species 1 (B). Diff rate: None. Conc: [5.7]\n" ] } ], "source": [ "# First step\n", "bio.react(time_step=0.02, n_steps=1, snapshots={\"sample_bin\": 0})\n", "bio.describe_state()" ] }, { "cell_type": "markdown", "id": "0c8b4979-26aa-4b43-baa9-b65547d3ba24", "metadata": {}, "source": [ "[A] = 1.6 , [B] = 5.7\n", "_(Contrast with the counterpart in the 1st order kinetics: [A] = 2.8 , [B] = 5.1)_" ] }, { "cell_type": "code", "execution_count": 23, "id": "a964cc75-e378-493a-aa5c-27da363c7baf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABcaption
00.003.0000005.000000Initial state
10.022.8000005.100000
20.042.6480005.176000
30.062.5324805.233760
40.082.4446855.277658
50.102.3779605.311020
60.122.3272505.336375
70.142.2887105.355645
80.162.2594205.370290
90.182.2371595.381421
100.202.2202415.389880
110.222.2073835.396309
120.242.1976115.401194
130.262.1901845.404908
140.282.1845405.407730
150.302.1802515.409875
160.322.1769905.411505
170.342.1745135.412744
180.362.1726305.413685
190.382.1711995.414401
200.402.1701115.414945
210.422.1692845.415358
220.423.0000005.000000RESET all concentrations to initial values
230.441.6000005.700000
\n", "
" ], "text/plain": [ " SYSTEM TIME A B \\\n", "0 0.00 3.000000 5.000000 \n", "1 0.02 2.800000 5.100000 \n", "2 0.04 2.648000 5.176000 \n", "3 0.06 2.532480 5.233760 \n", "4 0.08 2.444685 5.277658 \n", "5 0.10 2.377960 5.311020 \n", "6 0.12 2.327250 5.336375 \n", "7 0.14 2.288710 5.355645 \n", "8 0.16 2.259420 5.370290 \n", "9 0.18 2.237159 5.381421 \n", "10 0.20 2.220241 5.389880 \n", "11 0.22 2.207383 5.396309 \n", "12 0.24 2.197611 5.401194 \n", "13 0.26 2.190184 5.404908 \n", "14 0.28 2.184540 5.407730 \n", "15 0.30 2.180251 5.409875 \n", "16 0.32 2.176990 5.411505 \n", "17 0.34 2.174513 5.412744 \n", "18 0.36 2.172630 5.413685 \n", "19 0.38 2.171199 5.414401 \n", "20 0.40 2.170111 5.414945 \n", "21 0.42 2.169284 5.415358 \n", "22 0.42 3.000000 5.000000 \n", "23 0.44 1.600000 5.700000 \n", "\n", " caption \n", "0 Initial state \n", "1 \n", "2 \n", "3 \n", "4 \n", "5 \n", "6 \n", "7 \n", "8 \n", "9 \n", "10 \n", "11 \n", "12 \n", "13 \n", "14 \n", "15 \n", "16 \n", "17 \n", "18 \n", "19 \n", "20 \n", "21 \n", "22 RESET all concentrations to initial values \n", "23 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_history()" ] }, { "cell_type": "code", "execution_count": 24, "id": "95e9aab1-a16d-46b7-9b97-82ab60011e6b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0.84:\n", "1 bins and 2 species:\n", " Species 0 (A). Diff rate: None. Conc: [1.51554944]\n", " Species 1 (B). Diff rate: None. Conc: [5.74222528]\n" ] } ], "source": [ "# Numerous more steps\n", "bio.react(time_step=0.02, n_steps=20, snapshots={\"sample_bin\": 0})\n", "\n", "bio.describe_state()" ] }, { "cell_type": "markdown", "id": "bec6b756-4269-4ab5-b4e8-7ba989b4454e", "metadata": {}, "source": [ "The systems settles in the following equilibrium: [A] = 1.51554944 , [B] = 5.74222528" ] }, { "cell_type": "code", "execution_count": 25, "id": "8c2e158b-091f-485d-b5fd-a1dd21bcf6f0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 A <-> B\n", "Final concentrations: [A] = 1.516 ; [B] = 5.742\n", "1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.5\n", " Formula used: [B] / [A]^2 \n", "2. Ratio of forward/reverse reaction rates: 2.5\n", "Discrepancy between the two values: 1.041e-08 %\n", "Reaction IS in equilibrium (within 1% tolerance)\n", "\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Verify that the reaction has reached equilibrium\n", "bio.reaction_dynamics.is_in_equilibrium(rxn_index=0, conc=bio.bin_snapshot(bin_address = 0))" ] }, { "cell_type": "code", "execution_count": 26, "id": "3eeeb74b-0427-48ce-a2e3-9a876c0c66a0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABcaption
00.003.0000005.000000Initial state
10.022.8000005.100000
20.042.6480005.176000
30.062.5324805.233760
40.082.4446855.277658
50.102.3779605.311020
60.122.3272505.336375
70.142.2887105.355645
80.162.2594205.370290
90.182.2371595.381421
100.202.2202415.389880
110.222.2073835.396309
120.242.1976115.401194
130.262.1901845.404908
140.282.1845405.407730
150.302.1802515.409875
160.322.1769905.411505
170.342.1745135.412744
180.362.1726305.413685
190.382.1711995.414401
200.402.1701115.414945
210.422.1692845.415358
220.423.0000005.000000RESET all concentrations to initial values
230.441.6000005.700000
240.461.5440005.728000
250.481.5254535.737274
260.501.5190335.740483
270.521.5167805.741610
280.541.5159845.742008
290.561.5157035.742148
300.581.5156045.742198
310.601.5155695.742216
320.621.5155565.742222
330.641.5155525.742224
340.661.5155505.742225
350.681.5155505.742225
360.701.5155505.742225
370.721.5155495.742225
380.741.5155495.742225
390.761.5155495.742225
400.781.5155495.742225
410.801.5155495.742225
420.821.5155495.742225
430.841.5155495.742225
\n", "
" ], "text/plain": [ " SYSTEM TIME A B \\\n", "0 0.00 3.000000 5.000000 \n", "1 0.02 2.800000 5.100000 \n", "2 0.04 2.648000 5.176000 \n", "3 0.06 2.532480 5.233760 \n", "4 0.08 2.444685 5.277658 \n", "5 0.10 2.377960 5.311020 \n", "6 0.12 2.327250 5.336375 \n", "7 0.14 2.288710 5.355645 \n", "8 0.16 2.259420 5.370290 \n", "9 0.18 2.237159 5.381421 \n", "10 0.20 2.220241 5.389880 \n", "11 0.22 2.207383 5.396309 \n", "12 0.24 2.197611 5.401194 \n", "13 0.26 2.190184 5.404908 \n", "14 0.28 2.184540 5.407730 \n", "15 0.30 2.180251 5.409875 \n", "16 0.32 2.176990 5.411505 \n", "17 0.34 2.174513 5.412744 \n", "18 0.36 2.172630 5.413685 \n", "19 0.38 2.171199 5.414401 \n", "20 0.40 2.170111 5.414945 \n", "21 0.42 2.169284 5.415358 \n", "22 0.42 3.000000 5.000000 \n", "23 0.44 1.600000 5.700000 \n", "24 0.46 1.544000 5.728000 \n", "25 0.48 1.525453 5.737274 \n", "26 0.50 1.519033 5.740483 \n", "27 0.52 1.516780 5.741610 \n", "28 0.54 1.515984 5.742008 \n", "29 0.56 1.515703 5.742148 \n", "30 0.58 1.515604 5.742198 \n", "31 0.60 1.515569 5.742216 \n", "32 0.62 1.515556 5.742222 \n", "33 0.64 1.515552 5.742224 \n", "34 0.66 1.515550 5.742225 \n", "35 0.68 1.515550 5.742225 \n", "36 0.70 1.515550 5.742225 \n", "37 0.72 1.515549 5.742225 \n", "38 0.74 1.515549 5.742225 \n", "39 0.76 1.515549 5.742225 \n", "40 0.78 1.515549 5.742225 \n", "41 0.80 1.515549 5.742225 \n", "42 0.82 1.515549 5.742225 \n", "43 0.84 1.515549 5.742225 \n", "\n", " caption \n", "0 Initial state \n", "1 \n", "2 \n", "3 \n", "4 \n", "5 \n", "6 \n", "7 \n", "8 \n", "9 \n", "10 \n", "11 \n", "12 \n", "13 \n", "14 \n", "15 \n", "16 \n", "17 \n", "18 \n", "19 \n", "20 \n", "21 \n", "22 RESET all concentrations to initial values \n", "23 \n", "24 \n", "25 \n", "26 \n", "27 \n", "28 \n", "29 \n", "30 \n", "31 \n", "32 \n", "33 \n", "34 \n", "35 \n", "36 \n", "37 \n", "38 \n", "39 \n", "40 \n", "41 \n", "42 \n", "43 " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = bio.get_history()\n", "df2" ] }, { "cell_type": "code", "execution_count": 27, "id": "16ec259b-98fe-4660-8123-83fdf55b74fb", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "A", "line": { "color": "navy", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12000000000000001, 0.14, 0.16, 0.18, 0.19999999999999998, 0.21999999999999997, 0.23999999999999996, 0.25999999999999995, 0.27999999999999997, 0.3, 0.32, 0.34, 0.36000000000000004, 0.38000000000000006, 0.4000000000000001, 0.4200000000000001, 0.4200000000000001, 0.4400000000000001, 0.46000000000000013, 0.48000000000000015, 0.5000000000000001, 0.5200000000000001, 0.5400000000000001, 0.5600000000000002, 0.5800000000000002, 0.6000000000000002, 0.6200000000000002, 0.6400000000000002, 0.6600000000000003, 0.6800000000000003, 0.7000000000000003, 0.7200000000000003, 0.7400000000000003, 0.7600000000000003, 0.7800000000000004, 0.8000000000000004, 0.8200000000000004, 0.8400000000000004 ], "xaxis": "x", "y": [ 3, 2.8, 2.6479999999999997, 2.5324799999999996, 2.4446847999999997, 2.3779604479999996, 2.32724994048, 2.2887099547647995, 2.2594195656212475, 2.237158869872148, 2.2202407411028324, 2.2073829632381528, 2.197611052060996, 2.1901843995663572, 2.1845401436704317, 2.180250509189528, 2.1769903869840412, 2.174512694107871, 2.172629647521982, 2.171198532116706, 2.1701108844086967, 2.1692842721506094, 3, 1.5999999999999999, 1.544, 1.5254528, 1.519033438994432, 1.5167795836780045, 1.5159843392384003, 1.5157032623056466, 1.5156038559406249, 1.515568692074582, 1.5155562523122668, 1.5155518514352155, 1.515550294500065, 1.5155497436882157, 1.5155495488220039, 1.515549479882208, 1.5155494554926734, 1.5155494468641386, 1.5155494438115338, 1.5155494427315825, 1.515549442349517, 1.5155494422143498 ], "yaxis": "y" }, { "hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "B", "line": { "color": "orange", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "B", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12000000000000001, 0.14, 0.16, 0.18, 0.19999999999999998, 0.21999999999999997, 0.23999999999999996, 0.25999999999999995, 0.27999999999999997, 0.3, 0.32, 0.34, 0.36000000000000004, 0.38000000000000006, 0.4000000000000001, 0.4200000000000001, 0.4200000000000001, 0.4400000000000001, 0.46000000000000013, 0.48000000000000015, 0.5000000000000001, 0.5200000000000001, 0.5400000000000001, 0.5600000000000002, 0.5800000000000002, 0.6000000000000002, 0.6200000000000002, 0.6400000000000002, 0.6600000000000003, 0.6800000000000003, 0.7000000000000003, 0.7200000000000003, 0.7400000000000003, 0.7600000000000003, 0.7800000000000004, 0.8000000000000004, 0.8200000000000004, 0.8400000000000004 ], "xaxis": "x", "y": [ 5, 5.1, 5.175999999999999, 5.233759999999999, 5.2776575999999995, 5.311019775999999, 5.336375029759999, 5.355645022617599, 5.370290217189376, 5.381420565063926, 5.389879629448584, 5.396308518380923, 5.401194473969502, 5.404907800216821, 5.407729928164784, 5.409874745405236, 5.411504806507979, 5.412743652946064, 5.413685176239008, 5.414400733941646, 5.414944557795651, 5.415357863924695, 5, 5.7, 5.728, 5.7372736, 5.740483280502784, 5.741610208160997, 5.7420078303808, 5.742148368847177, 5.742198072029688, 5.74221565396271, 5.742221873843867, 5.742224074282393, 5.742224852749968, 5.7422251281558925, 5.7422252255889985, 5.7422252600588966, 5.7422252722536635, 5.742225276567931, 5.742225278094233, 5.7422252786342085, 5.7422252788252415, 5.742225278892825 ], "yaxis": "y" } ], "layout": { "autosize": true, "legend": { "title": { "text": "Chemical" }, "tracegroupgap": 0 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "2A <-> B : changes in concentrations (the jump at 0.42 is the concentration reset)" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 0.8400000000000004 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ 1.2807341179544345, 5.97704060315274 ], "title": { "text": "concentration" }, "type": "linear" } } }, "image/png": "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AhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1EEDK1oKdTiEAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAFfCSBlfa08eUMAAhCAAAQgAAEIQAACEIAABCAAAQhAAAK1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", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = px.line(data_frame=bio.get_history(), x=\"SYSTEM TIME\", y=[\"A\", \"B\"], \n", " title=\"2A <-> B : changes in concentrations (the jump at 0.42 is the concentration reset)\",\n", " color_discrete_sequence = ['navy', 'orange'],\n", " labels={\"value\":\"concentration\", \"variable\":\"Chemical\"})\n", "fig.show()" ] }, { "cell_type": "markdown", "id": "3fd3bce2-7095-43a4-9ef0-764714be1301", "metadata": {}, "source": [ "**Compared to first-order kinetics in A**, the (2nd order in A) reaction now takes place much more quickly, and proceeds to almost complete depletion of A" ] }, { "cell_type": "markdown", "id": "ea064b52-efc9-4fb6-94c7-9a22264bc751", "metadata": {}, "source": [ "#### Let's verify that the stoichiometry is still being respected" ] }, { "cell_type": "code", "execution_count": 28, "id": "8798e44e-7a1b-41ba-af64-5a4b1e7cf687", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([3., 5.], dtype=float32), array([1.6, 5.7], dtype=float32))" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# We'll check the first two arrays of concentrations, from the run's history\n", "arr0 = bio.reaction_dynamics.get_historical_concentrations(row=22, df=df2) # Row 22 is the conc. reset\n", "arr1 = bio.reaction_dynamics.get_historical_concentrations(row=23, df=df2)\n", "arr0, arr1" ] }, { "cell_type": "code", "execution_count": 29, "id": "bdbcef17-1fc3-4547-8afe-7c932a586dc3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.reaction_dynamics.stoichiometry_checker(rxn_index=0, \n", " conc_arr_before = arr0, \n", " conc_arr_after = arr1)" ] }, { "cell_type": "code", "execution_count": null, "id": "0ebe7c58", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }