{
"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: June 23, 2024 (using v. 1.0 beta34.1)"
]
},
{
"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 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": "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: {'C', 'D', 'B', 'E', 'A'}\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\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": "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Cz0p9LrJlNd5GibsyB/g3mb/uft7Pbn2c9E1EcoWqifMbEc/bS71Pl7rSYad5Z/bl9xzWv9cn/Nf/LfvOee3G6z0do7nP77zH0v6cTd86GCJcqOv3DYXutaEnblpIpT1Oj+C/h0p9Tnmt/5C1173eD/9DnudKvT3M/8c9BvK6jbn90eXpbf88zVImfr4/P8L9Pn55W98X7xeRMl/HOrjcx2D/A+QP45xhbK6nvz/pbyuSfnXLq//jYKEsrre/DK9zrnerplRr2vuOBZbTiD/77Zupw6Fvc6D/PPQvZ4VO++e+fO6nuGO6ur1f2xW/576vdaxHwIIIIAAAgggEFWAUDaqIMcjgAACCCCAAAIRBdyALuyLBxGr53AEEEAAAQQQQAABBBBIWIBQNmFwqkMAAQQQQACB8hbQsyfdt8m7EoVmPJa3FL1HAAEEEEAAAQQQQCC7AoSy2R1beoYAAggggAACFgp4vXW+0JJGFjafJiGAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUglPUrxX4IIIAAAggggAACCCCAAAIIIIAAAggggIABAUJZA4gUgQACCCCAAAIIIIAAAggggAACCCCAAAII+BUg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CCCQoAChbILYVIUAAggggAACCCCAAAIIIIAAAggggAACCBDKcg4ggAACCCCAAAIIIIAAAggggAACCCCAAAIJChDKJohNVQgggAACCCCAAAIIIIAAAggggAACCCCAAKEs5wACCCCAAAIIIIAAAggggAACCCCAAAIIIJCgAKFsgthUhQACCCCAAAIIIIAAAggggAACCCCAAAIIEMpyDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAgkKEMomiE1VCCCAAAIIIIAAAggggAACCCCAAAIIIIAAoSznAAIIIIAAAggggAACCCCAAAIIIIAAAgggkKAAoWyC2FSFAAIIIIAAAggggAACCCCAAAIIIIAAAggQynIOIIAAAggggAACCCCAAAIIIIAAAggggAACCQoQyiaITVUIIIAAAggggAACCCCAAAIIIIAAAggggAChLOcAAggggAACCCCAAAIIIIAAAggggAACCCCQoAChbILYVIUAAggggAACCCCAAAIIIIAAAggggAACCBDKcg4ggAACCCCAAAIIIIAAAggggAACCCCAAAIJChDKJohNVQgggAACCCCAwP9v7+5d5CqjOADff8AQV8FCQQkqbCTNFi5IBCuxiiFVGiFEEVOksfEjYBGIH40WKQx+EQgEQdC4VQgphISAgjZBUijBQgtBE/AvkPfCO8zOzp17bvbMLLN5psves+c995m7zY837yVAgAABAgQIECBAgAABoaxngAABAgQIECBAgAABAgQIECBAgAABAgsUEMouENtSBAgQIECAAAECBAgQIECAAAECBAgQEMp6BggQIECAAAECu0jg7JffNucubGy5ozdeOdScfPVI8/zhk+21a5fObqkp11b27mm+P3+mvdbX65kXjs2UW9n7QLvO8Tc/an785dbU2jNvv9Ycfulg8/KxU83vf/zV1H/X4kuXrzenPvyiefKJR0dzTTaKzHHw2QPNxpUbo1899OJzzQfvvj5o3ch97KJHya0QIECAAAECBAjMUUAoO0dcrQkQIECAAAECixSooeHXn77XHFjdN1q6hKtXr/08CjVLiLm+ttp89fFbo5p33v+suf7TzVFYG+01GZ5Ohqrleun1753/OkPVUlND2cm56s9nhbLjxjXEnTbHtGtD1o3cxyK/b2sRIECAAAECBAgsr4BQdnm/O5MTIECAAAECBDYJlLC17gCdRTMZTt68dbs5euL0pl2q0V6ZoexDK3vaHbU1VK5zlaC2L9SNzNEVykbXFcr6gyNAgAABAgQIEMgSEMpmSepDgAABAgQIENhhgXL8wFP7Htu0A7ZrpBIw/nb7z3ZnbNktWoLJ8Z2zQ3qVNWbtUI2EmWWG/U8/3vz9z93mkYcfbI8WKLt3y6f8bJ6hbHTdyH3s8CNgeQIECBAgQIAAgSUREMouyRdlTAIECBAgQIBAn0ANRmtdPdO16/fGz2L99Yfzm8qG9uoLZSNnypZwdH1tf3uGbJmnzFd2zX7y+TdzD2Uj6zpTtu8JdJ0AAQIECBAgQCAqIJSNSqkjQIAAAQIECCyRQP2v/3Xkacca1CC1vgSs6/aG9NrOmbIllK0v3yqz1N27Q3ao3suZstF1h8yxRI+KUQkQIECAAAECBHZAQCi7A+iWJECAAAECBAgsUqAcA7Bx5Ua7+3T8M+0s2b65unr17ZTtO36gHl9QQtnyYrJzFzZGZ9wOCUO3E8r2rTtkjj5H1wkQIECAAAECBO5vAaHs/f39u3sCBAgQIEBglwiUgPXid1fbnaaTnxo21hdo1etdoey99MoMZct85Uzbct5t+QwJQ7cTyvatO2SOXfJYuQ0CBAgQIECAAIE5CQhl5wSrLQECBAgQIEBgkQLjRwyM74itP19fW93yArBZoezRE6fb8aO9skPZcbshYeh2Q9lZ6w6ZY5HfvbUIECBAgAABAgSWT0Aou3zfmYkJECBAgAABAp0C4y/vqkVdZ8b2HV8wpFdfKBt90de0nb5DwtCuOeqxC9WknrE7fmzCJOrkul705Q+PAAECBAgQIEAgS0AomyWpDwECBAgQIECAAAECBAgQIECAAAECBAICQtkAkhICBAgQIECAAAECBAgQIECAAAECBAhkCQhlsyT1IUCAAAECBAgQIECAAAECBAgQIECAQEBAKBtAUkKAAAECBAgQIECAAAECBAgQIECAAIEsAaFslqQ+BAgQIECAAAECBAgQIECAAAECBAgQCAgIZQNISggQIECAAAECBAgQIECAAAECBAgQIJAlIJTNktSHAAECBAgQIECAAAECBAgQIECAAAECAQGhbABJCQECBAgQIECAAAECBAgQIECAAAECBLIEhLJZkvoQIECAAAECBAgQIECAAAECBAgQIEAgICCUDSApIUCAAAECBAgQIECAAAECBAgQIECAQJaAUDZLUh8CBAgQIECAAAECBAgQIECAAAECBAgEBISyASQlBAgQIECAAAECBAgQIECAAAECBAgQyBIQymZJ6kOAAAECBAgQIECAAAECBAgQIECAAIGAgFA2gKSEAAECBAgQIECAAAECBAgQIECAAAECWQJC2SxJfQgQIECAAAECBAgQIECAAAECBAgQIBAQEMoGkJQQIECAAAECBAgQIECAAAECBAgQIEAgS0AomyWpDwECBAgQIECAAAECBAgQIECAAAECBAICQtkAkhICBAgQIECAAAECBAgQIECAAAECBAhkCQhlsyT1IUCAAAECBAgQIECAAAECBAgQIECAQEBAKBtAUkKAAAECBAgQIECAAAECBAgQIECAAIEsAaFslqQ+BAgQIECAAAECBAgQIECAAAECBAgQCAgIZQNISggQIECAAAECBAgQIECAAAECBAgQIJAlIJTNktSHAAECBAgQIECAAAECBAgQIECAAAECAQGhbABJCQECBAgQIECAAAECBAgQIECAAAECBLIEhLJZkvoQIECAAAECBAgQIECAAAECBAgQIEAgICCUDSApIUCAAAECBAgQIECAAAECBAgQIECAQJaAUDZLUh8CBAgQIECAAAECBAgQIECAAAECBAgEBISyASQlBAgQIECAAAECBAgQIECAAAECBAgQyBIQymZJ6kOAAAECBAgQIECAAAECBAgQIECAAIGAgFA2gKSEAAECBAgQIECAAAECBAgQIECAAAECWQJC2SxJfQgQIECAAAECBAgQIECAAAECBAgQIBAQEMoGkJQQIECAAAECBAgQIECAAAECBAgQIEAgS0AomyWpDwECBAgQIECAAAECBAgQIECAAAECBAICQtkAkhICBAgQIECAAAECBAgQIECAAAECBAhkCQhlsyT1IUCAAAECBAgQIECAAAECBAgQIECAQEBAKBtAUkKAAAECBAgQIECAAAECBAgQIECAAIEsAaFslqQ+BAgQIECAAAECBAgQIECAAAECBAgQCAgIZQNISggQIECAAAECBAgQIECAAAECBAgQIJAl8D8St6c+fmJAwAAAAABJRU5ErkJggg==",
"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
}