{
"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: July 14, 2023"
]
},
{
"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_1\"],\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.45 / K = 2.5) | 1st order in all reactants & products\n",
"1: C + D <-> E (kF = 8 / kR = 4 / Delta_G = -1,718.28 / K = 2) | 1st order in all reactants & products\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",
"graph_data = chem_data.prepare_graph_network()\n",
"GraphicLog.export_plot(graph_data, \"vue_cytoscape_1\")"
]
},
{
"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: [C] = 3.163 ; [A] = 0.5051 ; [B] = 2.505\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: [E] = 0.4318 ; [C] = 3.163 ; [D] = 0.06825\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: 4.441e-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": "iVBORw0KGgoAAAANSUhEUgAABbMAAAFoCAYAAABtzWbpAAAAAXNSR0IArs4c6QAAIABJREFUeF7s3QmcG3X9//F3svdut9ttodAqh61yaQVBBA8QxAOL/PCHCkUUkMPaetBSWnqICEhbWtuCIrUUEA+wFsW/ohVEoT8QRUCsooIHR0HK2WO73fvI//Gd3dlms5NkkkwmM5lXePBom535Hs/PbLJ557vfxBKJRELcEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIsECMMDvA1WFoCCCAAAIIIIAAAggggAACCCCAAAIIIIAAApYAYTYXAgIIIIAAAggggAACCCCAAAIIIIAAAggggEDgBQizA18iBogAAggggAACCCCAAAIIIIAAAggggAACCCBAmM01gAACCCCAAAIIIIAAAggggAACCCCAAAIIIBB4AcLswJeIASKAAAIIIIAAAggggAACCCCAAAIIIIAAAggQZnMNIIAAAggggAACCCCAAAIIIIAAAggggAACCARegDA78CVigAgggAACCCCAAAIIIIAAAggggAACCCCAAAKE2VwDCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAoEXIMwOfIkYIAIIIIAAAggggAACCCCAAAIIIIAAAggggABhNtcAAggggAACCCCAAAIIIIAAAggggAACCCCAQOAFCLMDXyIGiAACCCCAAAIIIIAAAggggAACCCCAAAIIIECYzTWAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEHgBwuzAl4gBIoAAAggggAACCCCAAAIIIIAAAggggAACCBBmcw0ggAACCCCAAAIIIIAAAggggAACCCCAAAIIBF6AMDvwJWKACCCAAAIIIIAAAggggAACCCCAAAIIIIAAAoTZXAMIIIAAAggggAACCCCAAAIIIIAAAggggAACgRcgzA58iRggAggggAACCCCAAAIIIIAAAggggAACCCCAAGE21wACCCCAAAIIIIAAAggggAACCCCAAAIIIIBA4AUIswNfIgaIAAIIIIAAAggggAACCCCAAAIIIIAAAgggQJjNNYAAAggggAACCCCAAAIIIIAAAggggAACCCAQeAHC7MCXiAEigAACCCCAAAIIIIAAAggggAACCCCAAAIIEGZzDSCAAAIIIIAAAggggAACCCCAAAIIIIAAAggEXoAwO/AlYoAIIIAAAggggAACCCCAAAIIIIAAAggggAAChNlcAwgggAACCCCAAAIIIIAAAggggAACCCCAAAKBFyDMDnyJGCACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAYTbXAAIIIIAAAggggAACCCCAAAIIIIAAAggggEDgBQizA18iBogAAggggAACCCCAAAIIIIAAAggggAACCCBAmM01gAACCCCAAAIIIIAAAggggAACCCCAAAIIIBB4AcLswJeIASKAAAIIIIAAAggggAACCCCAAAIIIIAAAggQZnMNIIAAAggggAACCCCAAAIIIIAAAggggAACCARegDA78CVigAgggAACCCCAAAIIIIAAAggggAACCCCAAAKE2VwDCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAoEXIMwOfIkYIAIIIIAAAggggAACCCCAAAIIIIAAAggggABhNtcAAggggAACCCCAAAIIIIAAAggggAACCCCAQOAFCLMDXyIGiAACCCCAAAIIIIAAAggggAACCCCAAAIIIECYzTWAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEHgBwuzAl4gBIoAAAtETWLlmvV56ZZsun3uu6mqrowfAjH0T2N7SqhnzV+kdhx2ki6af5lu/dIQAAggggAACCCCAAAIIIJC7AGF2DmaPbHpS58xaOuyMK+edq1OnHptDK5L9wvnxJ54edt55Z0x1fCF9x4b7demym4cde9IJRzuGPObY67/7M61ZNkeT95s4YlwmIHp405NavXS2mpsa1dHZrcuW36xf/vahEcfecs18HXnYQUP3Z2vbHJhubnYjE/YaNzQ2J0/7uHxccypCkQ/OFI7Y9Uz1LfKQfG3+qc1bNH3eCr348laVupZO3z/lcp2lK2q67+t0jxu+XhwuO/MyzHa6BpIfi1wOyZPDyvlxLx1Qpu9Bc0665z4vwNN5Jz/+EmYPlzbfexvu/WPanyO8qEu5t5H6s5bX803Xvv3cO/V9R/HGjNfotIcAAggggAACCCAQGAHCbJelsF8QJwdz+bxosF/Up754t19Mm+HYQbN932vbWoa9qEwOqnINnNOF2abf5BWQ9jiT55tLmO1mhZttmjoH29WMKV0o77JsJTss6mG2fa3s0Txa+75ur4JW19rX+97jx+b14jzddev0PV3IBZNPAGTP7bG//duza92e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wuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoBABwuxC9DgXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwBcBwmxfmOkEAQQQ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ArkEhNm52DQiQIAAAQIECBBohMB4x4bUnpU92Vjj9dPIMLv24ZOV92d6Z3YKsyvr+P1NG7OjTirvO2ZksjvD5wkQIECAAAECBFpJQJjdStW0FgIECBAgQIBASQVefuXNuP0zN8d1S3uummEKhCvHd6SHK1Ze44XZ9fbTyDA7ze2HL/xzbLlvc7aOIsPsNPbPX/pl3LphTfYQSmF2SW900yJAgAABAgQIEJhRAWH2jPLqnAABAgQIECBAIAmkYzJ27d0fzz/zeNyzaWOGUjkaI/05Pdyw+kzn8cLsevtpdJhdXc2iw+zqsYXZ/l4RIECAAAECBAjMRQFh9lysujUTIECAAAECBGZBoBJEVw891nnZ6fMTHTNSTz+ThdlTfQBkOjO79tWIMLsyv7fe/m3Wfdq9/uyeR7Kd30/vO5B9LB0rUvsaL8z2AMhZuLENSYAAAQIECBAgUJiAMLswagMRIECAAAECBAgQIECAAAECBAgQIECAQF4BYXZeOe0IECBAgAABAgQIECBAgAABAgQIECBAoDABYXZh1AYiQIAAAQIECBAgQIAAAQIECBAgQIAAgbwCwuy8ctoRIECAAAECBAgQIECAAAECBAgQIECAQGECwuzCqA1EgAABAgQIECBAgAABAgQIECBAgAABAnkFhNl55bQjQIAAAQIECBAgQIAAAQIECBAgQIAAgcIEhNmFURuIAAECBAgQIECAAAECBAgQIECAAAECBPIKCLPzymlHgAABAgQIECBAgAABAgQIECBAgAABAoUJCLMLozYQAQIECBAgQIAAAQIECBAgQIAAAQIECOQVEGbnldOOAAECBAgQIECAAAECBAgQIECAAAECBAoTEGYXRm0gAgQIECBAgAABAgQIECBAgAABAgQIEMgrIMzOK6cdAQIECBAgQIAAAQIECBAgQIAAAQIECBQmIMwujNpABAgQIECAAAECBAgQIECAAAECBAgQIJBXQJidV047AgQIECBAgAABAgQIECBAgAABAgQIEChMQJhdGLWBCBAgQIAAAQIECBAgQIAAAQIECBAgQCCvgDA7r5x2BAgQIECAAAECBAgQIECAAAECBAgQIFCYgDC7MGoDESBAgAABAgQIECBAgAABAgQIECBAgEBeAWF2XjntCBAgQIAAAQIECBAgQIAAAQIECBAgQKAwAWF2YdQGIkCAAAECBAgQIECAAAECBAgQIECAAIG8AsLsvHLaESBAgAABAgQIECBAgAABAgQIECBAgEBhAsLswqgNRIAAAQIECBAgQIAAAQIECBAgQIAAAQJ5BYTZeeW0I0CAAAECBAgQIECAAAECBAgQIECAAIHCBITZhVEbiAABAgQIECBAgAABAgQIECBAgAABAgTyCgiz88ppR4AAAQIECBAgQIAAAQIECBAgQIAAAQKFCQizC6M2EAECBAgQIECAAAECBAgQIECAAAECBAjkFRBm55XTjgABAgQIECBAgAABAgQIECBAgAABAgQKExBmF0ZtIAIECBAgQIAAAQIECBAgQIAAAQIECBDIKyDMziunHQECBAgQIECAAAECBAgQIECAAAECBAgUJiDMLozaQAQIECBAgAABAgQIECBAgAABAgQIECCQV0CYnVdOOwIECBAgQIAAAQIECBAgQIAAAQIECBAoTECYXRi1gQgQIECAAAECBAgQIECAAAECBAgQIEAgr4AwO6+cdgQIECBAgAABAgQIECBAgAABAgQIECBQmIAwuzBqAxEgQIAAAQIECBAgQIAAAQIECBAgQIBAXgFhdl457QgQIECAAAECBAgQIECAAAECBAgQIECgMAFhdmHUBiJAgAABAgQIECBAgAABAgQIECBAgACBvALC7Lxy2hEgQIAAAQIECBAgQIAAAQIECBAgQIBAYQLC7MKoDUSAAAECBAgQIECAAAECBAgQIECAAAECeQWE2XnltCNAgAABAgQIECBAgAABAgQIECBAgACBwgSE2YVRG4gAAQIECBAgQIAAAQIECBAgQIAAAQIE8gr8P2nRk6c8E2fBAAAAAElFTkSuQmCC",
"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
}