{
"cells": [
{
"cell_type": "markdown",
"id": "4f3151f1-fee2-40d3-9913-d02f15a8fa30",
"metadata": {},
"source": [
"## 2 COUPLED reactions: `A + B <-> C` and `C + D <-> E` , \n",
"### with 1st-order kinetics for each species, taken to equilibrium\n",
"\n",
"Both reactions are stronger in their respective forward rates. For the most part, \"C\" is produced by the 1st reaction, and consumed by the 2nd one\n",
"\n",
"Diffusion not applicable (just 1 bin)\n",
"\n",
"LAST REVISED: May 6, 2024"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "c27da7de-2903-4744-9317-e5ef1a9cc492",
"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": "aa3f2a77",
"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.html_log.html_log import HtmlLog as log\n",
"from src.modules.visualization.graphic_log import GraphicLog"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "05cc8402-3b3c-468a-bb98-ea4159816a0f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-> Output will be LOGGED into the file 'reaction_8.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": "code",
"execution_count": 4,
"id": "c5443325-1f60-4129-aa6d-47d328ab7c05",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0:\n",
"1 bins and 5 species:\n",
" Species 0 (A). Diff rate: None. Conc: [3.]\n",
" Species 1 (B). Diff rate: None. Conc: [5.]\n",
" Species 2 (C). Diff rate: None. Conc: [1.]\n",
" Species 3 (D). Diff rate: None. Conc: [0.4]\n",
" Species 4 (E). Diff rate: None. Conc: [0.1]\n"
]
}
],
"source": [
"# Initialize the system\n",
"chem_data = chem(names=[\"A\", \"B\", \"C\", \"D\", \"E\"]) # NOTE: Diffusion not applicable (just 1 bin)\n",
"\n",
"# Specify the reactions\n",
"\n",
"\n",
"# Reactions A + B <-> C and C + D <-> E , with 1st-order kinetics for each species\n",
"chem_data.add_reaction(reactants=[\"A\", \"B\"], products=[\"C\"], forward_rate=5., reverse_rate=2.)\n",
"chem_data.add_reaction(reactants=[\"C\", \"D\"], products=[\"E\"], forward_rate=8., reverse_rate=4.)\n",
"\n",
"bio = BioSim1D(n_bins=1, chem_data=chem_data)\n",
"\n",
"bio.set_all_uniform_concentrations( [3., 5., 1., 0.4, 0.1] )\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "98f90fcf-5e0c-488c-a96b-2b545e13b453",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" D | \n",
" E | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0 | \n",
" 3.0 | \n",
" 5.0 | \n",
" 1.0 | \n",
" 0.4 | \n",
" 0.1 | \n",
" Initial state | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C D E caption\n",
"0 0 3.0 5.0 1.0 0.4 0.1 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": "d79393b1-8751-4cdc-81fe-381b1161ec93",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 2 (at temp. 25 C)\n",
"0: A + B <-> C (kF = 5 / kR = 2 / delta_G = -2,271.4 / K = 2.5) | 1st order in all reactants & products\n",
"1: C + D <-> E (kF = 8 / kR = 4 / delta_G = -1,718.3 / K = 2) | 1st order in all reactants & products\n",
"Set of chemicals involved in the above reactions: {'A', 'D', 'B', 'E', 'C'}\n"
]
}
],
"source": [
"chem_data.describe_reactions()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "c05a44f2-085e-418d-be55-8ea403b1b44e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2 COUPLED reactions: A + B C and C + D E\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `reaction_8.log.htm`]\n"
]
}
],
"source": [
"# Send a header and a plot to the HTML log file\n",
"log.write(\"2 COUPLED reactions: A + B <-> C and C + D <-> E\",\n",
" style=log.h2)\n",
"# Send the plot to the HTML log file\n",
"chem_data.plot_reaction_network(\"vue_cytoscape_2\")"
]
},
{
"cell_type": "markdown",
"id": "db7979c8-c39d-418c-bd70-e6e234d71cf7",
"metadata": {
"tags": []
},
"source": [
"### First step"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "73e5e562-60d7-46d9-b9d5-03748e0103eb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.01:\n",
"1 bins and 5 species:\n",
" Species 0 (A). Diff rate: None. Conc: [2.27]\n",
" Species 1 (B). Diff rate: None. Conc: [4.27]\n",
" Species 2 (C). Diff rate: None. Conc: [1.702]\n",
" Species 3 (D). Diff rate: None. Conc: [0.372]\n",
" Species 4 (E). Diff rate: None. Conc: [0.128]\n"
]
}
],
"source": [
"# First step\n",
"bio.react(time_step=0.01, n_steps=1, snapshots={\"sample_bin\": 0})\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "1b8f010c-0bfc-43e2-aad3-26b3422ba1ca",
"metadata": {},
"source": [
"1 bins and 5 species:\n",
" [[2.27 ]\n",
" [4.27 ]\n",
" [1.702]\n",
" [0.372]\n",
" [0.128]]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "29d41ef5-46ae-49fb-ab07-605a4d194573",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" D | \n",
" E | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.00 | \n",
" 3.00 | \n",
" 5.00 | \n",
" 1.000 | \n",
" 0.400 | \n",
" 0.100 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.01 | \n",
" 2.27 | \n",
" 4.27 | \n",
" 1.702 | \n",
" 0.372 | \n",
" 0.128 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C D E caption\n",
"0 0.00 3.00 5.00 1.000 0.400 0.100 Initial state\n",
"1 0.01 2.27 4.27 1.702 0.372 0.128 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "ae1ad0a8-b118-400d-ab94-8f404597642d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.02:\n",
"1 bins and 5 species:\n",
" Species 0 (A). Diff rate: None. Conc: [1.819395]\n",
" Species 1 (B). Diff rate: None. Conc: [3.819395]\n",
" Species 2 (C). Diff rate: None. Conc: [2.10707348]\n",
" Species 3 (D). Diff rate: None. Conc: [0.32646848]\n",
" Species 4 (E). Diff rate: None. Conc: [0.17353152]\n"
]
}
],
"source": [
"# Identical 2nd step\n",
"bio.react(time_step=0.01, n_steps=1, snapshots={\"sample_bin\": 0})\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "39744f2c-3823-405c-b5ab-e844b4537765",
"metadata": {},
"source": [
"1 bins and 5 species:\n",
" [[1.819395 ]\n",
" [3.819395 ]\n",
" [2.10707348]\n",
" [0.32646848]\n",
" [0.17353152]]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "cd441e5a-cc00-489e-a702-879a91844656",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" D | \n",
" E | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.00 | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" 1.000000 | \n",
" 0.400000 | \n",
" 0.100000 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.01 | \n",
" 2.270000 | \n",
" 4.270000 | \n",
" 1.702000 | \n",
" 0.372000 | \n",
" 0.128000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.02 | \n",
" 1.819395 | \n",
" 3.819395 | \n",
" 2.107073 | \n",
" 0.326468 | \n",
" 0.173532 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C D E \\\n",
"0 0.00 3.000000 5.000000 1.000000 0.400000 0.100000 \n",
"1 0.01 2.270000 4.270000 1.702000 0.372000 0.128000 \n",
"2 0.02 1.819395 3.819395 2.107073 0.326468 0.173532 \n",
"\n",
" caption \n",
"0 Initial state \n",
"1 \n",
"2 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_history()"
]
},
{
"cell_type": "markdown",
"id": "100a4ed1-cf8d-40ba-a49c-680ee02a1d49",
"metadata": {},
"source": [
"### Numerous more steps"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "9bf6ad6f-5e63-44c2-a5eb-e27a5d442c45",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 2.02:\n",
"1 bins and 5 species:\n",
" Species 0 (A). Diff rate: None. Conc: [0.50508029]\n",
" Species 1 (B). Diff rate: None. Conc: [2.50508029]\n",
" Species 2 (C). Diff rate: None. Conc: [3.16316668]\n",
" Species 3 (D). Diff rate: None. Conc: [0.06824696]\n",
" Species 4 (E). Diff rate: None. Conc: [0.43175304]\n"
]
}
],
"source": [
"# Numerous more identical steps, to equilibrium\n",
"bio.react(time_step=0.01, n_steps=200, snapshots={\"sample_bin\": 0, \"frequency\": 10})\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "37d92ec2-0efc-4ad1-a7d4-46eb351ac2fa",
"metadata": {},
"source": [
"1 bins and 5 species:\n",
" [[0.50508029]\n",
" [2.50508029]\n",
" [3.16316668]\n",
" [0.06824696]\n",
" [0.43175304]]"
]
},
{
"cell_type": "markdown",
"id": "7c4e149f-3f80-48b1-a910-b828701c2806",
"metadata": {
"tags": []
},
"source": [
"### Equilibrium"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "99dd2a45-b7fa-459b-a25f-3475043bdbb7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A + B <-> C\n",
"Final concentrations: [A] = 0.5051 ; [B] = 2.505 ; [C] = 3.163\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.5\n",
" Formula used: [C] / ([A][B])\n",
"2. Ratio of forward/reverse reaction rates: 2.5\n",
"Discrepancy between the two values: 8.882e-14 %\n",
"Reaction IS in equilibrium (within 1% tolerance)\n",
"\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Verify that each 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": 14,
"id": "ab2dbc91-ba95-45a9-9d41-638b78019752",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"C + D <-> E\n",
"Final concentrations: [C] = 3.163 ; [D] = 0.06825 ; [E] = 0.4318\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2\n",
" Formula used: [E] / ([C][D])\n",
"2. Ratio of forward/reverse reaction rates: 2.0\n",
"Discrepancy between the two values: 3.331e-14 %\n",
"Reaction IS in equilibrium (within 1% tolerance)\n",
"\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.reaction_dynamics.is_in_equilibrium(rxn_index=1, conc=bio.bin_snapshot(bin_address = 0))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "df7086e8-1ea6-45f0-9fa3-66c84a9475e7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"At equilibrium: -4.440892098500626e-15 (this should be close to 0 at equilibrium)\n"
]
}
],
"source": [
"# Do a consistent check with the equilibrium concentrations:\n",
"\n",
"A_eq = bio.bin_concentration(0, 0)\n",
"B_eq = bio.bin_concentration(0, 1)\n",
"C_eq = bio.bin_concentration(0, 2)\n",
"D_eq = bio.bin_concentration(0, 3)\n",
"E_eq = bio.bin_concentration(0, 4)\n",
"\n",
"Rf0 = chem_data.get_forward_rate(0)\n",
"Rb0 = chem_data.get_reverse_rate(0)\n",
"\n",
"Rf1 = chem_data.get_forward_rate(1)\n",
"Rb1 = chem_data.get_reverse_rate(1)\n",
"\n",
"equil = -(Rf0 * A_eq * B_eq - Rf1 * C_eq * D_eq) + (Rb0 * C_eq - Rb1 * E_eq)\n",
"\n",
"print(\"\\nAt equilibrium: \", equil, \" (this should be close to 0 at equilibrium)\")"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "29054060-59d2-4516-944d-da09094cf975",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" D | \n",
" E | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.00 | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" 1.000000 | \n",
" 0.400000 | \n",
" 0.100000 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.01 | \n",
" 2.270000 | \n",
" 4.270000 | \n",
" 1.702000 | \n",
" 0.372000 | \n",
" 0.128000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.02 | \n",
" 1.819395 | \n",
" 3.819395 | \n",
" 2.107073 | \n",
" 0.326468 | \n",
" 0.173532 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.12 | \n",
" 0.654654 | \n",
" 2.654654 | \n",
" 3.032120 | \n",
" 0.086774 | \n",
" 0.413226 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.22 | \n",
" 0.527627 | \n",
" 2.527627 | \n",
" 3.141994 | \n",
" 0.069620 | \n",
" 0.430380 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.32 | \n",
" 0.508578 | \n",
" 2.508578 | \n",
" 3.159830 | \n",
" 0.068408 | \n",
" 0.431592 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.42 | \n",
" 0.505625 | \n",
" 2.505625 | \n",
" 3.162646 | \n",
" 0.068270 | \n",
" 0.431730 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.52 | \n",
" 0.505165 | \n",
" 2.505165 | \n",
" 3.163085 | \n",
" 0.068251 | \n",
" 0.431749 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.62 | \n",
" 0.505094 | \n",
" 2.505094 | \n",
" 3.163154 | \n",
" 0.068248 | \n",
" 0.431752 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.72 | \n",
" 0.505082 | \n",
" 2.505082 | \n",
" 3.163165 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.82 | \n",
" 0.505081 | \n",
" 2.505081 | \n",
" 3.163166 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.92 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 1.02 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 1.12 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 1.22 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 1.32 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 1.42 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 1.52 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 1.62 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 1.72 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 1.82 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 1.92 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 2.02 | \n",
" 0.505080 | \n",
" 2.505080 | \n",
" 3.163167 | \n",
" 0.068247 | \n",
" 0.431753 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C D E \\\n",
"0 0.00 3.000000 5.000000 1.000000 0.400000 0.100000 \n",
"1 0.01 2.270000 4.270000 1.702000 0.372000 0.128000 \n",
"2 0.02 1.819395 3.819395 2.107073 0.326468 0.173532 \n",
"3 0.12 0.654654 2.654654 3.032120 0.086774 0.413226 \n",
"4 0.22 0.527627 2.527627 3.141994 0.069620 0.430380 \n",
"5 0.32 0.508578 2.508578 3.159830 0.068408 0.431592 \n",
"6 0.42 0.505625 2.505625 3.162646 0.068270 0.431730 \n",
"7 0.52 0.505165 2.505165 3.163085 0.068251 0.431749 \n",
"8 0.62 0.505094 2.505094 3.163154 0.068248 0.431752 \n",
"9 0.72 0.505082 2.505082 3.163165 0.068247 0.431753 \n",
"10 0.82 0.505081 2.505081 3.163166 0.068247 0.431753 \n",
"11 0.92 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"12 1.02 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"13 1.12 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"14 1.22 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"15 1.32 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"16 1.42 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"17 1.52 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"18 1.62 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"19 1.72 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"20 1.82 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"21 1.92 0.505080 2.505080 3.163167 0.068247 0.431753 \n",
"22 2.02 0.505080 2.505080 3.163167 0.068247 0.431753 \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 "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_history()"
]
},
{
"cell_type": "markdown",
"id": "bbd28c26-ea7e-4f5c-853a-96cb031b6b3c",
"metadata": {
"tags": []
},
"source": [
"# Plots of changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "65010094-f1d7-4edf-8716-3c0be6faa043",
"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.01,
0.02,
0.11999999999999998,
0.22000000000000006,
0.3200000000000001,
0.4200000000000002,
0.5200000000000002,
0.6200000000000003,
0.7200000000000004,
0.8200000000000005,
0.9200000000000006,
1.0200000000000007,
1.1200000000000008,
1.2200000000000009,
1.320000000000001,
1.420000000000001,
1.5200000000000011,
1.6200000000000012,
1.7200000000000013,
1.8200000000000014,
1.9200000000000015,
2.020000000000001
],
"xaxis": "x",
"y": [
3,
2.27,
1.819395,
0.6546542071373758,
0.5276265779980039,
0.5085777537856565,
0.5056248705954197,
0.5051651251130621,
0.5050935043527953,
0.5050823462155833,
0.5050806078226181,
0.5050803369877955,
0.5050802947927899,
0.5050802882189734,
0.5050802871947986,
0.5050802870352361,
0.5050802870103769,
0.5050802870065036,
0.5050802870059004,
0.5050802870058062,
0.5050802870057917,
0.5050802870057893,
0.505080287005789
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "cyan",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.01,
0.02,
0.11999999999999998,
0.22000000000000006,
0.3200000000000001,
0.4200000000000002,
0.5200000000000002,
0.6200000000000003,
0.7200000000000004,
0.8200000000000005,
0.9200000000000006,
1.0200000000000007,
1.1200000000000008,
1.2200000000000009,
1.320000000000001,
1.420000000000001,
1.5200000000000011,
1.6200000000000012,
1.7200000000000013,
1.8200000000000014,
1.9200000000000015,
2.020000000000001
],
"xaxis": "x",
"y": [
5,
4.27,
3.8193949999999997,
2.6546542071373755,
2.5276265779980043,
2.5085777537856573,
2.505624870595421,
2.5051651251130638,
2.5050935043527964,
2.505082346215585,
2.5050806078226193,
2.505080336987797,
2.5050802947927915,
2.505080288218975,
2.5050802871947995,
2.5050802870352373,
2.5050802870103785,
2.505080287006506,
2.5050802870059026,
2.5050802870058084,
2.5050802870057933,
2.5050802870057916,
2.5050802870057916
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "red",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.01,
0.02,
0.11999999999999998,
0.22000000000000006,
0.3200000000000001,
0.4200000000000002,
0.5200000000000002,
0.6200000000000003,
0.7200000000000004,
0.8200000000000005,
0.9200000000000006,
1.0200000000000007,
1.1200000000000008,
1.2200000000000009,
1.320000000000001,
1.420000000000001,
1.5200000000000011,
1.6200000000000012,
1.7200000000000013,
1.8200000000000014,
1.9200000000000015,
2.020000000000001
],
"xaxis": "x",
"y": [
1,
1.702,
2.10707348,
3.032119835748452,
3.1419937433830265,
3.159830490642069,
3.1626455660056068,
3.163085444467259,
3.1631540188897316,
3.163164703887413,
3.163166368610749,
3.1631666279694204,
3.1631666683765247,
3.1631666746717944,
3.163166675652573,
3.1631666758053743,
3.1631666758291797,
3.1631666758328887,
3.163166675833466,
3.1631666758335557,
3.163166675833569,
3.163166675833571,
3.163166675833571
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=D
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "D",
"line": {
"color": "orange",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "D",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.01,
0.02,
0.11999999999999998,
0.22000000000000006,
0.3200000000000001,
0.4200000000000002,
0.5200000000000002,
0.6200000000000003,
0.7200000000000004,
0.8200000000000005,
0.9200000000000006,
1.0200000000000007,
1.1200000000000008,
1.2200000000000009,
1.320000000000001,
1.420000000000001,
1.5200000000000011,
1.6200000000000012,
1.7200000000000013,
1.8200000000000014,
1.9200000000000015,
2.020000000000001
],
"xaxis": "x",
"y": [
0.4,
0.372,
0.32646848,
0.08677404288582762,
0.06962032138103086,
0.06840824442772607,
0.06827043660102639,
0.0682505695803209,
0.06824752324252664,
0.06824705010299546,
0.06824697643336625,
0.06824696495721497,
0.06824696316931336,
0.06824696289076639,
0.06824696284736989,
0.0682469628406089,
0.06824696283955556,
0.06824696283939145,
0.0682469628393659,
0.06824696283936191,
0.06824696283936131,
0.06824696283936123,
0.06824696283936123
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=E
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "E",
"line": {
"color": "green",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "E",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.01,
0.02,
0.11999999999999998,
0.22000000000000006,
0.3200000000000001,
0.4200000000000002,
0.5200000000000002,
0.6200000000000003,
0.7200000000000004,
0.8200000000000005,
0.9200000000000006,
1.0200000000000007,
1.1200000000000008,
1.2200000000000009,
1.320000000000001,
1.420000000000001,
1.5200000000000011,
1.6200000000000012,
1.7200000000000013,
1.8200000000000014,
1.9200000000000015,
2.020000000000001
],
"xaxis": "x",
"y": [
0.1,
0.128,
0.17353152,
0.41322595711417237,
0.4303796786189691,
0.43159175557227397,
0.43172956339897367,
0.4317494304196792,
0.43175247675747347,
0.43175294989700463,
0.43175302356663386,
0.43175303504278506,
0.4317530368306867,
0.43175303710923374,
0.4317530371526302,
0.4317530371593912,
0.43175303716044455,
0.43175303716060864,
0.43175303716063423,
0.43175303716063823,
0.4317530371606388,
0.4317530371606388,
0.4317530371606388
],
"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": "2 COUPLED reactions: A + B <-> C and C + D <-> E . Changes in concentrations"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
2.020000000000001
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-0.2057393170028965,
5.273986279842258
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAABWQAAAFoCAYAAADQAPLZAAAAAXNSR0IArs4c6QAAIABJREFUeF7s3QmcHGWd//Fvdc+dTCaTQIAIBBLUgIsgiLCu4gHiGkQUNQt/WEE0xoQVCTGYgBIDQiIxEDkSQxTQBcWg7CKHusKCeCyIIIocC0vCZYCQZDKZycxkju7/66mZmvR0uqerqqurq6s//Xrllcl01XO8fzU96e8885SVTqfT4oEAAggggAACCCCAAAIIIIAAAggggAACCCBQcgGLQLbkxnSAAAIIIIAAAggggAACCCCAAAIIIIAAAgjYAgSyXAgIIIAAAggggAACCCCAAAIIIIAAAggggEBIAgSyIUHTDQIIIIAAAggggAACCCCAAAIIIIAAAgggQCDLNYAAAggggAACCCCAAAIIIIAAAggggAACCIQkQCAbEjTdIIAAAggggAACCCCAAAIIIIAAAggggAACBLJcAwgggAACCCCAAAIIIIAAAggggAACCCCAQEgCBLIhQdMNAggggAACCCCAAAIIIIAAAggggAACCCBAIMs1gAACCCCAAAIIIIAAAggggAACCCCAAAIIhCRAIBsSNN0ggAACCCCAAAIIIIAAAggggAACCCCAAAIEslwDCCCAAAIIIIAAAggggAACCCCAAAIIIIBASAIEsiFB0w0CCCCAAAIIIIAAAggggAACCCCAAAIIIEAgyzWAAAIIIIAAAggggAACCCCAAAIIIIAAAgiEJEAgGxI03SCAAAIIIIAAAggggAACCCCAAAIIIIAAAgSyXAMIIIAAAggggAACCCCAAAIIIIAAAggggEBIAgSyIUHTDQIIIIAAAggggAACCCCAAAIIIIAAAgggQCDLNYAAAggggAACCCCAAAIIIIAAAggggAACCIQkQCAbEjTdIIAAAggggAACCCCAAAIIIIAAAggggAACBLJcAwgggAACCCCAAAIIIIAAAggggAACCCCAQEgCBLIhQdMNAggggAACCCCAAAIIIIAAAggggAACCCBAIMs1gAACCCCAAAIIIIAAAggggAACCCCAAAIIhCRAIBsSNN0ggAACCCCAAAIIIIAAAggggAACCCCAAAIEslwDCCCAAAIIIIAAAggggAACCCCAAAIIIIBASAIEsiFB0w0CCCCAAAIIIIAAAggggAACCCCAAAIIIEAgyzWA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AggggAACCCCAAAIIIIAAAgjETIBANmYFZToIIIAAAggggAACCCCAAAIIIIAAAgggEF0BAtno1oaRIYAAAggggAACCCCAAAIIIIAAAggggEDMBAhkY1ZQpoMAAggggAACCCCAAAIIIIAAAggggAAC0RUgkI1ubRgZAggggAACCCCAAAIIIIAAAggggAACCMRMgEA2ZgVlOggggAACCCCAAAIIIIAAAggggAACCCAQXQEC2ejWhpEhgAACCCCAAAIIIIAAAggggAACCCCAQMwECGRjVlCmgwACCCCAAAIIIIAAAggggAACCCCAAALRFSCQjW5tGBkCCCCAAAIIIIAAAggggAACCCCAAAIIxEyAQDZmBWU6CCCAAAIIIIAAAggggAACCCCAAAIIIBBdAQLZ6NaGkSGAAAIIIIAAAggggAACCCCAAAIIIIBAzAQIZGNWUKaDAAIIIIAAAggggAACCCCAAAIIIIAAAtEVIJCNbm0YGQIIIIAAAggggAACCCCAAAIIIIAAAgjETIBANmYFZToIIIAAAggggAACCCCAAAIIIIAAAgggEF0BAtno1oaRIYAAAggggAACCCCAAAIIIIAAAggggEDMBAhkY1ZQpoMAAggggAACCCCAAAIIIIAAAggggAAC0RUgkI1ubRgZAggggAACCCCAAAIIIIAAAggggAACCMRMgEA2ZgVlOggggAACCCCAAAIIIIAAAggggAACCCAQXQEC2ejWhpEhgAACCCCAAAIIIIAAAggggAACCCCAQMwECGRjVlCmgwACCCCAAAIIIIAAAggggAACCCCAAALRFSCQjW5tGBkCCCCAAAIIIIAAAggggAACCCCAAAIIxEyAQDZmBWU6CCCAAAIIIIAAAggggAACCCCAAAIIIBBdAQLZ6NaGkSGAAAIIIIAAAggggAACCCCAAAIIIIBAzAQIZGNWUKaDAAIIIIAAAggggAACCCCAAAIIIIAAAtEVIJCNbm0YGQIIIIAAAggggAACCCCAAAIIIIAAAgjETIBANmYFZToIIIAAAggggAACCCCAAAIIIIAAAgggEF0BAtno1oaRIYAAAggggAACCCCAAAIIIIAAAggggEDMBAhkY1ZQpoMAAggggAACCCCAAAIIIIAAAggggAAC0RUgkI1ubRgZAggggAACCCCAAAIIIIAAAggggAACCMRMgEA2ZgVl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ECBAgACBcgkIZMtVT6shQIAAAQIECNwiMNYWBPV7x05EN1Y/WQay9Q8Uq3w+2XfIxkC2so4/XbEs2Tah8rktCyY6M7xOgAABAgQIECDQjIBAthktxxIgQIAAAQIECixw5K3/Cg8uXxJmzewbNcsYala2AogPzKp8jBXINttPloFsnNuPDv0yrFndn6wjz0A2jv2LN98O9y++L3mwmEC2wCe7qREgQIAAAQIEprGAQHYaF8/UCRAgQIAAAQK1AvEt99sGDoTXX9kSVq1YlrxUeZt9/Ht8YFXtHqdjBbLN9pN1IFu7prwD2dqxBbL+fREgQIAAAQIECEyGgEB2MlT1SYAAAQIECBCYIoFKmFo7/O32j42vj7dlQTP9TBTINvpQr7iHbP1HFoFsZX7HT5xKuo93Ee/duTG5A3fPvoPJ1+IWBfUfYwWyHuo1RSe3YQkQIECAAAECJREQyJakkJZBgAABAgQIECBAgAABAgQIECBAgEDxBQSyxa+RGRIgQIAAAQIECBAgQIAAAQIECBAgUBIBgWxJCmkZBAgQIECAAAECBAgQIECAAAECBAgUX0AgW/wamSEBAgQIECBAgAABAgQIECBAgAABAiUREMiWpJCWQYAAAQIECBAgQIAAAQIECBAgQIBA8QUEssWvkRkSIECAAAECBAgQIECAAAECBAgQIFASAYFsSQppGQQIECBAgAABAgQIECBAgAABAgQIFF9AIFv8GpkhAQIECBAgQIAAAQIECBAgQIAAAQIlERDIlqSQlkGAAAECBAgQIECAAAECBAgQIECAQPEFBLLFr5EZEiBAgAABAgQIECBAgAABAgQIECBQEgGBbEkKaRkECBAgQIAAAQIECBAgQIAAAQIECBRfQCBb/BqZIQECBAgQIECAAAECBAgQIECAAAECJREQyJakkJZBgAABAgQIECBAgAABAgQIECBAgEDxBQSyxa+RGRIgQIAAAQIECBAgQIAAAQIECBAgUBIBgWxJCmkZBAgQIECAAAECBAgQIECAAAECBAgUX0AgW/wamSEBAgQIECBAgAABAgQIECBAgAABAiUREMiWpJCWQYAAAQIECBAgQIAAAQIECBAgQIBA8QUEssWvkRkSIECAAAECBAgQIECAAAECBAgQIFASAYFsSQppGQQIECBAgAABAgQIECBAgAABAgQIFF9AIFv8GpkhAQIECBAgQIAAAQIECBAgQIAAAQIlERDIlqSQlkGAAAECBAgQIECAAAECBAgQIECAQPEFBLLFr5EZEiBAgAABAgQIECBAgAABAgQIECBQEgGBbEkKaRkECBAgQIAAAQIECBAgQIAAAQIECBRfQCBb/BqZIQECBAgQIECAAAECBAgQIECAAAECJREQyJakkJZBgAABAgQIECBAgAABAgQIECBAgEDxBQSyxa+RGRIgQIAAAQIECBAgQIAAAQIECBAgUBIBgWxJCmkZBAgQIECAAAECBAgQIECAAAECBAgUX0AgW/wamSEBAgQIECBAgAABAgQIECBAgAABAiUREMiWpJCWQYAAAQIECBAgQIAAAQIECBAgQIBA8QUEssWvkRkSIECAAAECBAgQIECAAAECBAgQIFASAYFsSQppGQQIECBAgAABAgQIECBAgAABAgQIFF9AIFv8GpkhAQIECBAgQIAAAQIECBAgQIAAAQIlERDIlqSQlkGAAAECBAgQIECAAAECBAgQIECAQPEFBLLFr5EZEiBAgAABAgQIECBAgAABAgQIECBQEgGBbEkKaRkECBAgQIAAAQIECBAgQIAAAQIECBRfQCBb/BqZIQECBAgQIECAAAECBAgQIECAAAECJREQyJakkJZBgAABAgQIECBAgAABAgQIECBAgEDxBQSyxa+RGRIgQIAAAQIECBAgQIAAAQIECBAgUBIBgWxJCmkZBAgQIECAAAECBAgQIECAAAECBAgUX+D/AUCc93rSs48yAAAAAElFTkSuQmCC",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.get_history(), x=\"SYSTEM TIME\", y=[\"A\", \"B\", \"C\", \"D\", \"E\"], \n",
" title=\"2 COUPLED reactions: A + B <-> C and C + D <-> E . Changes in concentrations\",\n",
" color_discrete_sequence = ['navy', 'cyan', 'red', 'orange', 'green'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\"})\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "cde2dbcb-a43c-41f1-a8b3-b801290a8d57",
"metadata": {},
"source": [
"A and B get consumed. \n",
"C gets produced by the 1st reaction more quickly than consumed by the 2nd one.\n",
"D gets consumed, while E gets produced."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3204f3ee",
"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
}