{ "cells": [ { "cell_type": "markdown", "id": "54d8ecb1-ea4d-4985-9d5a-e838e264c308", "metadata": {}, "source": [ "## One-bin `A <-> 2C + D`, with 1st-order kinetics for each species, taken to equilibrium\n", "\n", "Diffusion not applicable (just 1 bin)\n", "\n", "LAST REVISED: Dec. 6, 2023" ] }, { "cell_type": "code", "execution_count": 1, "id": "7d9e829a-3644-4769-8c4e-5596b678337f", "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": "371d264e", "metadata": {}, "outputs": [], "source": [ "from experiments.get_notebook_info import get_notebook_basename\n", "\n", "from src.modules.chemicals.chem_data import ChemData as chem\n", "from src.life_1D.bio_sim_1d import BioSim1D\n", "\n", "import plotly.express as px\n", "from src.modules.visualization.graphic_log import GraphicLog" ] }, { "cell_type": "code", "execution_count": 3, "id": "3c9c6dc0-8c6d-431d-a9d8-0a33780a2441", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-> Output will be LOGGED into the file 'reaction_5.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_1\"],\n", " extra_js=\"https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.21.2/cytoscape.umd.js\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "6ad40924-3c41-494f-8682-ec8efc540537", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0:\n", "1 bins and 3 species:\n", " Species 0 (A). Diff rate: None. Conc: [4.]\n", " Species 1 (C). Diff rate: None. Conc: [7.]\n", " Species 2 (D). Diff rate: None. Conc: [2.]\n" ] } ], "source": [ "# Initialize the system\n", "chem_data = chem(names=[\"A\", \"C\", \"D\"]) # NOTE: Diffusion not applicable (just 1 bin)\n", "\n", "\n", "\n", "# Reaction A <-> 2C + D , with 1st-order kinetics for each species\n", "chem_data.add_reaction(reactants=[(\"A\")], products=[(2, \"C\", 1) , (\"D\")],\n", " forward_rate=5., reverse_rate=2.)\n", "\n", "bio = BioSim1D(n_bins=1, chem_data=chem_data)\n", "\n", "bio.set_all_uniform_concentrations( [4., 7., 2.] )\n", "\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 5, "id": "e8ec69e3-dc27-4d6e-90d8-c5636dc061c8", "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", "
SYSTEM TIMEACDcaption
004.07.02.0Initial state
\n", "
" ], "text/plain": [ " SYSTEM TIME A C D caption\n", "0 0 4.0 7.0 2.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": "2fec356a-3018-4ac9-9a09-066bd69c2098", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of reactions: 1 (at temp. 25 C)\n", "0: A <-> 2 C + D (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: {'C', 'D', 'A'}\n" ] } ], "source": [ "chem_data.describe_reactions()" ] }, { "cell_type": "code", "execution_count": 7, "id": "8c9cea88-b766-4145-843b-9b109334d487", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[GRAPHIC ELEMENT SENT TO LOG FILE `reaction_5.log.htm`]\n" ] } ], "source": [ "# Send the plot to the HTML log file\n", "graph_data = chem_data.prepare_graph_network()\n", "GraphicLog.export_plot(graph_data, \"vue_cytoscape_1\")" ] }, { "cell_type": "markdown", "id": "39837c2b-aa44-4a5f-b2a2-747b889ca9fc", "metadata": { "tags": [] }, "source": [ "### First step" ] }, { "cell_type": "code", "execution_count": 8, "id": "8de0fb5d-419d-4976-b57d-b7656f7f0358", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0.2:\n", "1 bins and 3 species:\n", " Species 0 (A). Diff rate: None. Conc: [5.6]\n", " Species 1 (C). Diff rate: None. Conc: [3.8]\n", " Species 2 (D). Diff rate: None. Conc: [0.4]\n" ] } ], "source": [ "# First step\n", "bio.react(time_step=0.2, n_steps=1)\n", "bio.describe_state()" ] }, { "cell_type": "markdown", "id": "a128c0ed-ed29-4fa9-ac8d-995df08cc60c", "metadata": {}, "source": [ "--- \n", " Note: the above values are quite inaccurate because of the large time step 0.2\n", "\n", " For example, the value for the concentration of D (0.4) is a wild overshot from the initial 2.0 to the equilibrium value of 1.68941267\n", " \n", " A more precise calculation with bio.react(time_step=0.1, n_steps=2) gives conc_D(0.2) = 2.304\n", " \n", " An even more precise calculation with bio.react(time_step=0.05, n_steps=4) gives conc_D(0.2) = 1.69037202\n", " \n", " I.e. the system is almost at equilibrium already at t=0.2 !\n", " \n", " TODO: explore the early dynamics of the system in a separate experiment\n", "---" ] }, { "cell_type": "code", "execution_count": 9, "id": "57bb972b-bf2e-492c-824a-49fe5b4d53a9", "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", "
SYSTEM TIMEACDcaption
00.04.07.02.0Initial state
10.25.63.80.4
\n", "
" ], "text/plain": [ " SYSTEM TIME A C D caption\n", "0 0.0 4.0 7.0 2.0 Initial state\n", "1 0.2 5.6 3.8 0.4 " ] }, "execution_count": 9, "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", "bio.get_history()" ] }, { "cell_type": "markdown", "id": "6d201c6c-1cb7-4902-a3c3-d3f33514ffa7", "metadata": {}, "source": [ "### Numerous more steps" ] }, { "cell_type": "code", "execution_count": 10, "id": "19212806-2baa-43c6-8083-f3cbc4916d89", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 1.7:\n", "1 bins and 3 species:\n", " Species 0 (A). Diff rate: None. Conc: [4.31058733]\n", " Species 1 (C). Diff rate: None. Conc: [6.37882534]\n", " Species 2 (D). Diff rate: None. Conc: [1.68941267]\n" ] } ], "source": [ "# Numerous more steps\n", "bio.react(time_step=0.05, n_steps=30, snapshots={\"sample_bin\": 0})\n", "\n", "bio.describe_state()" ] }, { "cell_type": "markdown", "id": "dd1dfc16-d0e0-446f-a02a-cbd6ec40db7b", "metadata": { "tags": [] }, "source": [ "### Equilibrium" ] }, { "cell_type": "markdown", "id": "622e8969-dc8c-44ea-be61-05824b1f8d5c", "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] = 4.31058733 , [C] = 6.37882534 , [D] = 1.68941267" ] }, { "cell_type": "code", "execution_count": 11, "id": "52260eec-31d6-42a0-8ea9-a4122851c328", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A <-> 2 C + D\n", "Final concentrations: [A] = 4.311 ; [C] = 6.379 ; [D] = 1.689\n", "1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.5\n", " Formula used: ([C][D]) / [A]\n", "2. Ratio of forward/reverse reaction rates: 2.5\n", "Discrepancy between the two values: 0 %\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": "9c836591-3896-44ac-8d0b-6fc948411f2a", "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", "
SYSTEM TIMEACDcaption
00.004.0000007.0000002.000000Initial state
10.205.6000003.8000000.400000
20.254.3520006.2960001.648000
30.304.3015816.3968381.698419
40.354.3126376.3747261.687363
50.404.3101256.3797491.689875
60.454.3106926.3786171.689308
70.504.3105646.3788721.689436
80.554.3105936.3788151.689407
90.604.3105866.3788281.689414
100.654.3105886.3788251.689412
110.704.3105876.3788251.689413
120.754.3105876.3788251.689413
130.804.3105876.3788251.689413
140.854.3105876.3788251.689413
150.904.3105876.3788251.689413
160.954.3105876.3788251.689413
171.004.3105876.3788251.689413
181.054.3105876.3788251.689413
191.104.3105876.3788251.689413
201.154.3105876.3788251.689413
211.204.3105876.3788251.689413
221.254.3105876.3788251.689413
231.304.3105876.3788251.689413
241.354.3105876.3788251.689413
251.404.3105876.3788251.689413
261.454.3105876.3788251.689413
271.504.3105876.3788251.689413
281.554.3105876.3788251.689413
291.604.3105876.3788251.689413
301.654.3105876.3788251.689413
311.704.3105876.3788251.689413
\n", "
" ], "text/plain": [ " SYSTEM TIME A C D caption\n", "0 0.00 4.000000 7.000000 2.000000 Initial state\n", "1 0.20 5.600000 3.800000 0.400000 \n", "2 0.25 4.352000 6.296000 1.648000 \n", "3 0.30 4.301581 6.396838 1.698419 \n", "4 0.35 4.312637 6.374726 1.687363 \n", "5 0.40 4.310125 6.379749 1.689875 \n", "6 0.45 4.310692 6.378617 1.689308 \n", "7 0.50 4.310564 6.378872 1.689436 \n", "8 0.55 4.310593 6.378815 1.689407 \n", "9 0.60 4.310586 6.378828 1.689414 \n", "10 0.65 4.310588 6.378825 1.689412 \n", "11 0.70 4.310587 6.378825 1.689413 \n", "12 0.75 4.310587 6.378825 1.689413 \n", "13 0.80 4.310587 6.378825 1.689413 \n", "14 0.85 4.310587 6.378825 1.689413 \n", "15 0.90 4.310587 6.378825 1.689413 \n", "16 0.95 4.310587 6.378825 1.689413 \n", "17 1.00 4.310587 6.378825 1.689413 \n", "18 1.05 4.310587 6.378825 1.689413 \n", "19 1.10 4.310587 6.378825 1.689413 \n", "20 1.15 4.310587 6.378825 1.689413 \n", "21 1.20 4.310587 6.378825 1.689413 \n", "22 1.25 4.310587 6.378825 1.689413 \n", "23 1.30 4.310587 6.378825 1.689413 \n", "24 1.35 4.310587 6.378825 1.689413 \n", "25 1.40 4.310587 6.378825 1.689413 \n", "26 1.45 4.310587 6.378825 1.689413 \n", "27 1.50 4.310587 6.378825 1.689413 \n", "28 1.55 4.310587 6.378825 1.689413 \n", "29 1.60 4.310587 6.378825 1.689413 \n", "30 1.65 4.310587 6.378825 1.689413 \n", "31 1.70 4.310587 6.378825 1.689413 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_history()" ] }, { "cell_type": "markdown", "id": "16c85241-2b62-4ac8-bd44-f6231f6ef685", "metadata": {}, "source": [ "C and D get depleted, while A gets produced.\n", "A wild overshoot is present at t=0.2" ] }, { "cell_type": "markdown", "id": "c8219705-f08b-41c1-b585-9a01ff80f4ab", "metadata": { "tags": [] }, "source": [ "# Plots of changes of concentration with time" ] }, { "cell_type": "code", "execution_count": 13, "id": "115692eb-8fc8-48b6-8f20-7053a7e9de54", "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.2, 0.25, 0.3, 0.35, 0.39999999999999997, 0.44999999999999996, 0.49999999999999994, 0.5499999999999999, 0.6, 0.65, 0.7000000000000001, 0.7500000000000001, 0.8000000000000002, 0.8500000000000002, 0.9000000000000002, 0.9500000000000003, 1.0000000000000002, 1.0500000000000003, 1.1000000000000003, 1.1500000000000004, 1.2000000000000004, 1.2500000000000004, 1.3000000000000005, 1.3500000000000005, 1.4000000000000006, 1.4500000000000006, 1.5000000000000007, 1.5500000000000007, 1.6000000000000008, 1.6500000000000008, 1.7000000000000008 ], "xaxis": "x", "y": [ 4, 5.6, 4.351999999999999, 4.3015808, 4.312636915785728, 4.310125447697398, 4.3106916519678125, 4.310563782331762, 4.310592648763124, 4.310586131626044, 4.31058760296257, 4.3105872707859065, 4.310587345779779, 4.310587328848781, 4.310587332671209, 4.310587331808239, 4.310587332003067, 4.3105873319590815, 4.310587331969011, 4.31058733196677, 4.310587331967276, 4.310587331967161, 4.310587331967187, 4.310587331967182, 4.3105873319671835, 4.310587331967183, 4.310587331967183, 4.310587331967183, 4.310587331967183, 4.310587331967183, 4.310587331967183, 4.310587331967183 ], "yaxis": "y" }, { "hovertemplate": "Chemical=C
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "C", "line": { "color": "violet", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "C", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.2, 0.25, 0.3, 0.35, 0.39999999999999997, 0.44999999999999996, 0.49999999999999994, 0.5499999999999999, 0.6, 0.65, 0.7000000000000001, 0.7500000000000001, 0.8000000000000002, 0.8500000000000002, 0.9000000000000002, 0.9500000000000003, 1.0000000000000002, 1.0500000000000003, 1.1000000000000003, 1.1500000000000004, 1.2000000000000004, 1.2500000000000004, 1.3000000000000005, 1.3500000000000005, 1.4000000000000006, 1.4500000000000006, 1.5000000000000007, 1.5500000000000007, 1.6000000000000008, 1.6500000000000008, 1.7000000000000008 ], "xaxis": "x", "y": [ 7, 3.8, 6.296, 6.3968384, 6.374726168428544, 6.379749104605204, 6.378616696064373, 6.378872435336473, 6.37881470247375, 6.378827736747909, 6.378824794074859, 6.378825458428185, 6.378825308440439, 6.378825342302434, 6.378825334657579, 6.37882533638352, 6.378825335993863, 6.378825336081833, 6.378825336061973, 6.378825336066456, 6.378825336065444, 6.378825336065673, 6.3788253360656215, 6.378825336065633, 6.37882533606563, 6.378825336065631, 6.378825336065631, 6.378825336065631, 6.378825336065631, 6.378825336065631, 6.378825336065631, 6.378825336065631 ], "yaxis": "y" }, { "hovertemplate": "Chemical=D
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "D", "line": { "color": "red", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "D", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.2, 0.25, 0.3, 0.35, 0.39999999999999997, 0.44999999999999996, 0.49999999999999994, 0.5499999999999999, 0.6, 0.65, 0.7000000000000001, 0.7500000000000001, 0.8000000000000002, 0.8500000000000002, 0.9000000000000002, 0.9500000000000003, 1.0000000000000002, 1.0500000000000003, 1.1000000000000003, 1.1500000000000004, 1.2000000000000004, 1.2500000000000004, 1.3000000000000005, 1.3500000000000005, 1.4000000000000006, 1.4500000000000006, 1.5000000000000007, 1.5500000000000007, 1.6000000000000008, 1.6500000000000008, 1.7000000000000008 ], "xaxis": "x", "y": [ 2, 0.3999999999999999, 1.6480000000000001, 1.6984192, 1.687363084214272, 1.6898745523026022, 1.6893083480321869, 1.6894362176682367, 1.6894073512368748, 1.6894138683739546, 1.6894123970374295, 1.6894127292140924, 1.6894126542202195, 1.689412671151217, 1.689412667328789, 1.6894126681917596, 1.689412667996931, 1.6894126680409165, 1.6894126680309862, 1.689412668033228, 1.689412668032722, 1.6894126680328363, 1.6894126680328105, 1.6894126680328163, 1.689412668032815, 1.6894126680328154, 1.6894126680328152, 1.6894126680328152, 1.6894126680328152, 1.6894126680328152, 1.6894126680328152, 1.6894126680328152 ], "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": "Reaction A <-> 2C + D . Changes in concentrations" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 1.7000000000000008 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ 0.03333333333333327, 7.366666666666666 ], "title": { "text": "concentration" }, "type": "linear" } } }, "image/png": "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IECAAAECBAgQIEAgtYBwIvV4NUeAAAECBAgQIECAAAECBNoXEE60PyMVEiBAgAABAgQIECBAgACB1ALCidTj1RwBAgQIECBAgAABAgQIEGhfQDjR/oxUSIAAAQIECBAgQIAAAQIEUgsIJ1KPV3MECBAgQIAAAQIECBAgQKB9AeFE+zNSIQECBAgQIECAAAECBAgQSC0gnEg9Xs0RIECAAAECBAgQIECAAIH2BYQT7c9IhQQIECBAgAABAgQIECBAILWAcCL1eDVHgAABAgQIECBAgAABAgTaFxBOtD8jFRIgQIAAAQIECBAgQIAAgdQCwonU49UcAQIECBAgQIAAAQIECBBoX0A40f6MVEiAAAECBAgQIECAAAECBFILCCdSj1dzBAgQIECAAAECBAgQIECgfQHhRPszUiEBAgQIECBAgAABAgQIEEgtIJxIPV7NESBAgAABAgQIECBAgACB9gWEE+3PSIUECBAgQIAAAQIECBAgQCC1gHAi9Xg1R4AAAQIECBAgQIAAAQIE2hcQTrQ/IxUSIECAAAECBAgQIECAAIHUAsKJ1OPVHAECBAgQIECAAAECBAgQaF9AONH+jFRIgAABAgQIECBAgAABAgRSCwgnUo9XcwQIECBAgAABAgQIECBAoH0B4UT7M1IhAQIECBAgQIAAAQIECBBILSCcSD1ezREgQIAAAQIECBAgQIAAgfYFhBPtz0iFBAgQIECAAAECBAgQIEAgtYBwIvV4NUeAAAECBAgQIECAAAECBNoXEE60PyMVEiBAgAABAgQIECBAgACB1ALCidTj1RwBAgQIECBAgAABAgQIEGhf4D/oDJPymz3JlgAAAABJRU5ErkJggg==", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = px.line(data_frame=bio.get_history(), x=\"SYSTEM TIME\", y=[\"A\", \"C\", \"D\"], \n", " title=\"Reaction A <-> 2C + D . Changes in concentrations\",\n", " color_discrete_sequence = ['navy', 'violet', 'red'],\n", " labels={\"value\":\"concentration\", \"variable\":\"Chemical\"})\n", "fig.show()" ] }, { "cell_type": "markdown", "id": "42921718-2075-4098-b55d-60a9df1e5f93", "metadata": {}, "source": [ "### Notice the **wild overshoot** present at t=0.2 ! (Too large a time step, early in the reaction!)\n", "Variable, adaptive time steps are explored at length in the _\"reactions_single_compartment\"_ experiments" ] }, { "cell_type": "code", "execution_count": null, "id": "6b46289d", "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 }