{
"cells": [
{
"cell_type": "markdown",
"id": "83d68c5f-79b2-4947-920f-9fd1fbdd392f",
"metadata": {},
"source": [
"## One-bin reaction `2A + 5B <-> 4C + 3D`, with 1st-order kinetics for each species, taken to equilibrium\n",
"\n",
"Diffusion not applicable (just 1 bin)"
]
},
{
"cell_type": "markdown",
"id": "6362d79c-720b-43ea-8ad2-b05e6e42c246",
"metadata": {},
"source": [
"### TAGS : \"reactions 1D\", \"under-the-hood\""
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "877b2383-5200-400c-86f9-2bef5f32d40a",
"metadata": {},
"outputs": [],
"source": [
"LAST_REVISED = \"June 6, 2025\"\n",
"LIFE123_VERSION = \"1.0.0rc6\" # Library version this experiment is based on"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "0500edb0-a509-453d-b3b4-8fbaae42925d",
"metadata": {},
"outputs": [],
"source": [
"#import set_path # Using MyBinder? Uncomment this before running the next cell!"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "546dfb46-05cc-4252-8e29-0d1d443145f2",
"metadata": {},
"outputs": [],
"source": [
"#import sys\n",
"#sys.path.append(\"C:/some_path/my_env_or_install\") # CHANGE to the folder containing your venv or libraries installation!\n",
"# NOTE: If any of the imports below can't find a module, uncomment the lines above, or try: import set_path \n",
"\n",
"from experiments.get_notebook_info import get_notebook_basename\n",
"\n",
"from life123 import BioSim1D, ChemData, check_version\n",
"\n",
"from life123 import HtmlLog as log\n",
"from life123 import GraphicLog"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "c9cd8a08-41c2-4fcc-91f9-38fb1ec82e99",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"OK\n"
]
}
],
"source": [
"check_version(LIFE123_VERSION)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "09984256-0e46-4553-b00c-526dd4ae6939",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 5,
"id": "6635becc-7040-420b-b631-e89a23e80909",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-> Output will be LOGGED into the file 'reaction_6.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": 6,
"id": "8acfd3e5-effa-4d10-b400-47777be200fc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0:\n",
"1 bins and 4 chemical species\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Species | \n",
" Diff rate | \n",
" Bin 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" A | \n",
" None | \n",
" 4.0 | \n",
"
\n",
" \n",
" | 1 | \n",
" B | \n",
" None | \n",
" 7.0 | \n",
"
\n",
" \n",
" | 2 | \n",
" C | \n",
" None | \n",
" 5.0 | \n",
"
\n",
" \n",
" | 3 | \n",
" D | \n",
" None | \n",
" 2.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Species Diff rate Bin 0\n",
"0 A None 4.0\n",
"1 B None 7.0\n",
"2 C None 5.0\n",
"3 D None 2.0"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Initialize the system; NOTE: Diffusion not applicable (just 1 bin)\n",
"chem_data = ChemData(names=[\"A\", \"B\", \"C\", \"D\"], plot_colors=['navy', 'cyan', 'red', 'orange']) \n",
"\n",
"bio = BioSim1D(n_bins=1, chem_data=chem_data)\n",
"\n",
"bio.set_all_uniform_concentrations( [4., 7., 5., 2.] )\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "1b3bbc85-e8a8-4eaf-886e-a3c395229fe6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 1 (at temp. 25 C)\n",
"0: 2 A + 5 B <-> 4 C + 3 D (kF = 5 / kR = 2 / delta_G = -2,271.4 / K = 2.5) | 1st order in all reactants & products\n",
"Set of chemicals involved in the above reactions: {\"D\" (orange), \"C\" (red), \"A\" (navy), \"B\" (cyan)}\n"
]
}
],
"source": [
"# Specify the reaction\n",
"reactions = bio.get_reactions()\n",
"\n",
"# Reaction 2A + 5B <-> 4C + 3D , with 1st-order kinetics for each species\n",
"reactions.add_reaction(reactants=[(2,\"A\",1) , (5,\"B\",1)], products=[(4,\"C\",1) , (3,\"D\",1)],\n",
" forward_rate=5., reverse_rate=2.)\n",
"\n",
"reactions.describe_reactions()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e95f3814-f76b-476a-963d-ae440e87b2e8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reaction 2 A + 5 B 4 C + 3 D\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `reaction_6.log.htm`]\n"
]
}
],
"source": [
"# Send a header and a plot to the HTML log file\n",
"log.write(\"Reaction 2 A + 5 B <-> 4 C + 3 D\",\n",
" style=log.h2)\n",
"reactions.plot_reaction_network(\"vue_cytoscape_2\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "feb9907d-6099-48b1-9e70-4e5137ad6ad8",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ae20e096-aeaf-4b43-a941-337def301750",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"History enabled for bins None and chemicals None (None means 'all')\n"
]
}
],
"source": [
"# Let's enable history - by default for all chemicals and all bins\n",
"bio.enable_history(take_snapshot=True, caption=\"Initial state\")"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "52224f87-6d5e-48d3-8ed7-42b68bed3f0c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" D | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0 | \n",
" 4.0 | \n",
" 7.0 | \n",
" 5.0 | \n",
" 2.0 | \n",
" Initial state | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C D caption\n",
"0 0.0 4.0 7.0 5.0 2.0 Initial state"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_bin_history(bin_address=0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cec53b57-bbb6-434c-ad7a-782db720d69f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "a1bdfcec-2945-4ace-97c0-739e9716edb2",
"metadata": {
"tags": []
},
"source": [
"### First step"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "e90bd63e-7de2-48b4-970b-daaf13c6d0fc",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"bio.get_reaction_handler().enable_diagnostics() # To save diagnostic information for the simulation run, below"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "177f241c-6ec9-4a3a-863e-685e031b4feb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"System Time is now: 0.001\n",
"SYSTEM STATE at Time t = 0.001:\n",
"1 bins and 4 chemical species\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Species | \n",
" Diff rate | \n",
" Bin 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" A | \n",
" None | \n",
" 3.76 | \n",
"
\n",
" \n",
" | 1 | \n",
" B | \n",
" None | \n",
" 6.40 | \n",
"
\n",
" \n",
" | 2 | \n",
" C | \n",
" None | \n",
" 5.48 | \n",
"
\n",
" \n",
" | 3 | \n",
" D | \n",
" None | \n",
" 2.36 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Species Diff rate Bin 0\n",
"0 A None 3.76\n",
"1 B None 6.40\n",
"2 C None 5.48\n",
"3 D None 2.36"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# First step\n",
"bio.react(time_step=0.001, n_steps=1)\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "bb01e107-69e1-4ffc-939f-ead43bc358a1",
"metadata": {},
"source": [
"_Early in the reaction :_\n",
"[A] = 3.76 , [B] = 6.4 , [C] = 5.48 , [D] = 2.36"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "ffc297af-487e-4020-a406-959f0a6fab98",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" D | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000 | \n",
" 4.00 | \n",
" 7.0 | \n",
" 5.00 | \n",
" 2.00 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.001 | \n",
" 3.76 | \n",
" 6.4 | \n",
" 5.48 | \n",
" 2.36 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C D caption\n",
"0 0.000 4.00 7.0 5.00 2.00 Initial state\n",
"1 0.001 3.76 6.4 5.48 2.36 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_bin_history(bin_address=0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f1226e95-6811-4486-a5b1-f2008249e593",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "265fcc89-7cfd-44c0-ac69-36846c3f93de",
"metadata": {},
"source": [
"### Numerous more steps"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "d547bdba-3819-40bb-b965-28d06516619c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"System Time is now: 0.041\n",
"SYSTEM STATE at Time t = 0.041:\n",
"1 bins and 4 chemical species\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Species | \n",
" Diff rate | \n",
" Bin 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" A | \n",
" None | \n",
" 2.802846 | \n",
"
\n",
" \n",
" | 1 | \n",
" B | \n",
" None | \n",
" 4.007114 | \n",
"
\n",
" \n",
" | 2 | \n",
" C | \n",
" None | \n",
" 7.394309 | \n",
"
\n",
" \n",
" | 3 | \n",
" D | \n",
" None | \n",
" 3.795732 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Species Diff rate Bin 0\n",
"0 A None 2.802846\n",
"1 B None 4.007114\n",
"2 C None 7.394309\n",
"3 D None 3.795732"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Numerous more steps\n",
"bio.react(time_step=0.001, n_steps=40)\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "e9db30bd-ed51-491b-b11f-651094524269",
"metadata": {
"tags": []
},
"source": [
"### Equilibrium"
]
},
{
"cell_type": "markdown",
"id": "a7b6400e-696a-4b2f-98c6-a8dea6515160",
"metadata": {},
"source": [
"Consistent with the 5/2 ratio of forward/reverse rates (and the 1st order reactions),\n",
"the systems settles in the following equilibrium: \n",
"[A] = 2.80284552 , [B] = 4.00711381 , [C] = 7.39430896 , [D] = 3.79573172"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "f888886f-a56d-4f6b-9c28-5a58797b5924",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2 A + 5 B <-> 4 C + 3 D\n",
"Current concentrations: [A] = 2.803 ; [B] = 4.007 ; [C] = 7.394 ; [D] = 3.796\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.49898\n",
" Formula used: ([C][D]) / ([A][B])\n",
"2. Ratio of forward/reverse reaction rates: 2.5\n",
"Discrepancy between the two values: 0.04092 %\n",
"Reaction IS in equilibrium (within 1% tolerance)\n",
"\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Verify that the reaction has reached equilibrium\n",
"bio.get_reaction_handler().is_in_equilibrium(rxn_index=0, conc=bio.bin_snapshot(bin_address = 0))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "747a27b9-06c9-4097-90ab-827266ae5c6f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" D | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000 | \n",
" 4.000000 | \n",
" 7.000000 | \n",
" 5.000000 | \n",
" 2.000000 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.001 | \n",
" 3.760000 | \n",
" 6.400000 | \n",
" 5.480000 | \n",
" 2.360000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.002 | \n",
" 3.571091 | \n",
" 5.927728 | \n",
" 5.857818 | \n",
" 2.643363 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.003 | \n",
" 3.421344 | \n",
" 5.553360 | \n",
" 6.157312 | \n",
" 2.867984 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.004 | \n",
" 3.301981 | \n",
" 5.254952 | \n",
" 6.396039 | \n",
" 3.047029 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.005 | \n",
" 3.206419 | \n",
" 5.016047 | \n",
" 6.587162 | \n",
" 3.190372 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.006 | \n",
" 3.129645 | \n",
" 4.824113 | \n",
" 6.740709 | \n",
" 3.305532 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.007 | \n",
" 3.067794 | \n",
" 4.669486 | \n",
" 6.864411 | \n",
" 3.398309 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.008 | \n",
" 3.017854 | \n",
" 4.544634 | \n",
" 6.964293 | \n",
" 3.473220 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.009 | \n",
" 2.977457 | \n",
" 4.443643 | \n",
" 7.045085 | \n",
" 3.533814 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.010 | \n",
" 2.944734 | \n",
" 4.361834 | \n",
" 7.110532 | \n",
" 3.582899 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.011 | \n",
" 2.918195 | \n",
" 4.295487 | \n",
" 7.163611 | \n",
" 3.622708 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.012 | \n",
" 2.896651 | \n",
" 4.241627 | \n",
" 7.206699 | \n",
" 3.655024 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.013 | \n",
" 2.879148 | \n",
" 4.197870 | \n",
" 7.241704 | \n",
" 3.681278 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.014 | \n",
" 2.864920 | \n",
" 4.162300 | \n",
" 7.270160 | \n",
" 3.702620 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.015 | \n",
" 2.853348 | \n",
" 4.133370 | \n",
" 7.293304 | \n",
" 3.719978 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.016 | \n",
" 2.843932 | \n",
" 4.109831 | \n",
" 7.312135 | \n",
" 3.734101 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.017 | \n",
" 2.836269 | \n",
" 4.090672 | \n",
" 7.327463 | \n",
" 3.745597 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.018 | \n",
" 2.830029 | \n",
" 4.075073 | \n",
" 7.339942 | \n",
" 3.754956 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.019 | \n",
" 2.824948 | \n",
" 4.062370 | \n",
" 7.350104 | \n",
" 3.762578 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.020 | \n",
" 2.820809 | \n",
" 4.052024 | \n",
" 7.358381 | \n",
" 3.768786 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.021 | \n",
" 2.817438 | \n",
" 4.043596 | \n",
" 7.365123 | \n",
" 3.773843 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.022 | \n",
" 2.814692 | \n",
" 4.036729 | \n",
" 7.370617 | \n",
" 3.777962 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.023 | \n",
" 2.812454 | \n",
" 4.031135 | \n",
" 7.375092 | \n",
" 3.781319 | \n",
" | \n",
"
\n",
" \n",
" | 24 | \n",
" 0.024 | \n",
" 2.810630 | \n",
" 4.026576 | \n",
" 7.378739 | \n",
" 3.784054 | \n",
" | \n",
"
\n",
" \n",
" | 25 | \n",
" 0.025 | \n",
" 2.809144 | \n",
" 4.022861 | \n",
" 7.381711 | \n",
" 3.786283 | \n",
" | \n",
"
\n",
" \n",
" | 26 | \n",
" 0.026 | \n",
" 2.807933 | \n",
" 4.019834 | \n",
" 7.384133 | \n",
" 3.788100 | \n",
" | \n",
"
\n",
" \n",
" | 27 | \n",
" 0.027 | \n",
" 2.806947 | \n",
" 4.017366 | \n",
" 7.386107 | \n",
" 3.789580 | \n",
" | \n",
"
\n",
" \n",
" | 28 | \n",
" 0.028 | \n",
" 2.806142 | \n",
" 4.015355 | \n",
" 7.387716 | \n",
" 3.790787 | \n",
" | \n",
"
\n",
" \n",
" | 29 | \n",
" 0.029 | \n",
" 2.805487 | \n",
" 4.013717 | \n",
" 7.389027 | \n",
" 3.791770 | \n",
" | \n",
"
\n",
" \n",
" | 30 | \n",
" 0.030 | \n",
" 2.804952 | \n",
" 4.012381 | \n",
" 7.390095 | \n",
" 3.792572 | \n",
" | \n",
"
\n",
" \n",
" | 31 | \n",
" 0.031 | \n",
" 2.804517 | \n",
" 4.011292 | \n",
" 7.390966 | \n",
" 3.793225 | \n",
" | \n",
"
\n",
" \n",
" | 32 | \n",
" 0.032 | \n",
" 2.804162 | \n",
" 4.010405 | \n",
" 7.391676 | \n",
" 3.793757 | \n",
" | \n",
"
\n",
" \n",
" | 33 | \n",
" 0.033 | \n",
" 2.803872 | \n",
" 4.009681 | \n",
" 7.392255 | \n",
" 3.794191 | \n",
" | \n",
"
\n",
" \n",
" | 34 | \n",
" 0.034 | \n",
" 2.803637 | \n",
" 4.009092 | \n",
" 7.392727 | \n",
" 3.794545 | \n",
" | \n",
"
\n",
" \n",
" | 35 | \n",
" 0.035 | \n",
" 2.803444 | \n",
" 4.008611 | \n",
" 7.393111 | \n",
" 3.794833 | \n",
" | \n",
"
\n",
" \n",
" | 36 | \n",
" 0.036 | \n",
" 2.803288 | \n",
" 4.008219 | \n",
" 7.393424 | \n",
" 3.795068 | \n",
" | \n",
"
\n",
" \n",
" | 37 | \n",
" 0.037 | \n",
" 2.803160 | \n",
" 4.007900 | \n",
" 7.393680 | \n",
" 3.795260 | \n",
" | \n",
"
\n",
" \n",
" | 38 | \n",
" 0.038 | \n",
" 2.803056 | \n",
" 4.007640 | \n",
" 7.393888 | \n",
" 3.795416 | \n",
" | \n",
"
\n",
" \n",
" | 39 | \n",
" 0.039 | \n",
" 2.802971 | \n",
" 4.007428 | \n",
" 7.394058 | \n",
" 3.795543 | \n",
" | \n",
"
\n",
" \n",
" | 40 | \n",
" 0.040 | \n",
" 2.802902 | \n",
" 4.007255 | \n",
" 7.394196 | \n",
" 3.795647 | \n",
" | \n",
"
\n",
" \n",
" | 41 | \n",
" 0.041 | \n",
" 2.802846 | \n",
" 4.007114 | \n",
" 7.394309 | \n",
" 3.795732 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C D caption\n",
"0 0.000 4.000000 7.000000 5.000000 2.000000 Initial state\n",
"1 0.001 3.760000 6.400000 5.480000 2.360000 \n",
"2 0.002 3.571091 5.927728 5.857818 2.643363 \n",
"3 0.003 3.421344 5.553360 6.157312 2.867984 \n",
"4 0.004 3.301981 5.254952 6.396039 3.047029 \n",
"5 0.005 3.206419 5.016047 6.587162 3.190372 \n",
"6 0.006 3.129645 4.824113 6.740709 3.305532 \n",
"7 0.007 3.067794 4.669486 6.864411 3.398309 \n",
"8 0.008 3.017854 4.544634 6.964293 3.473220 \n",
"9 0.009 2.977457 4.443643 7.045085 3.533814 \n",
"10 0.010 2.944734 4.361834 7.110532 3.582899 \n",
"11 0.011 2.918195 4.295487 7.163611 3.622708 \n",
"12 0.012 2.896651 4.241627 7.206699 3.655024 \n",
"13 0.013 2.879148 4.197870 7.241704 3.681278 \n",
"14 0.014 2.864920 4.162300 7.270160 3.702620 \n",
"15 0.015 2.853348 4.133370 7.293304 3.719978 \n",
"16 0.016 2.843932 4.109831 7.312135 3.734101 \n",
"17 0.017 2.836269 4.090672 7.327463 3.745597 \n",
"18 0.018 2.830029 4.075073 7.339942 3.754956 \n",
"19 0.019 2.824948 4.062370 7.350104 3.762578 \n",
"20 0.020 2.820809 4.052024 7.358381 3.768786 \n",
"21 0.021 2.817438 4.043596 7.365123 3.773843 \n",
"22 0.022 2.814692 4.036729 7.370617 3.777962 \n",
"23 0.023 2.812454 4.031135 7.375092 3.781319 \n",
"24 0.024 2.810630 4.026576 7.378739 3.784054 \n",
"25 0.025 2.809144 4.022861 7.381711 3.786283 \n",
"26 0.026 2.807933 4.019834 7.384133 3.788100 \n",
"27 0.027 2.806947 4.017366 7.386107 3.789580 \n",
"28 0.028 2.806142 4.015355 7.387716 3.790787 \n",
"29 0.029 2.805487 4.013717 7.389027 3.791770 \n",
"30 0.030 2.804952 4.012381 7.390095 3.792572 \n",
"31 0.031 2.804517 4.011292 7.390966 3.793225 \n",
"32 0.032 2.804162 4.010405 7.391676 3.793757 \n",
"33 0.033 2.803872 4.009681 7.392255 3.794191 \n",
"34 0.034 2.803637 4.009092 7.392727 3.794545 \n",
"35 0.035 2.803444 4.008611 7.393111 3.794833 \n",
"36 0.036 2.803288 4.008219 7.393424 3.795068 \n",
"37 0.037 2.803160 4.007900 7.393680 3.795260 \n",
"38 0.038 2.803056 4.007640 7.393888 3.795416 \n",
"39 0.039 2.802971 4.007428 7.394058 3.795543 \n",
"40 0.040 2.802902 4.007255 7.394196 3.795647 \n",
"41 0.041 2.802846 4.007114 7.394309 3.795732 "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = bio.get_bin_history(bin_address=0)\n",
"df"
]
},
{
"cell_type": "markdown",
"id": "f4ef60c7-9d9e-4324-9a93-525dd426bc6e",
"metadata": {},
"source": [
"A and B get depleted, while C and D get produced.\n",
"\n",
"**2A + 5B <-> 4C + 3D**"
]
},
{
"cell_type": "markdown",
"id": "a1525fa9-e852-4942-aef9-26b4ddcbab4e",
"metadata": {},
"source": [
"#### Let's verify that the stoichiometry is being respected"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "ea6a6286-aa49-4b4f-adff-2a3d3ff729d0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([4., 7., 5., 2.], dtype=float32),\n",
" array([3.76, 6.4 , 5.48, 2.36], dtype=float32))"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# We'll check the first two arrays of concentrations, from the run's history\n",
"arr0 = bio.get_reaction_handler().get_historical_concentrations(row=0, df=df)\n",
"arr1 = bio.get_reaction_handler().get_historical_concentrations(row=1, df=df)\n",
"arr0, arr1"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "8cd8dfee-21c5-4dd6-8bf4-155d275797a5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check that the changes in the first reaction step conform to the stoichiometry\n",
"bio.get_reaction_handler().get_diagnostics().stoichiometry_checker(rxn_index=0, \n",
" conc_arr_before = arr0, \n",
" conc_arr_after = arr1)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "f0ce0b76-93f5-4aae-8e11-e0ed478bf119",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"array([-0.24000001, -0.5999999 , 0.48000002, 0.3599999 ], dtype=float32)"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr1 - arr0"
]
},
{
"cell_type": "markdown",
"id": "b0e3663b-3c12-4790-b948-79df3e6f740e",
"metadata": {},
"source": [
"Indeed, the change in [A] is -2 x 0.12, and the change in [B] is -5 X 0.12, \n",
" while the change in [C] is 4 x 0.12, and the change in [D] is 3 X 0.12"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "72e2ec04-2d7d-4c43-941e-11a613d784e3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-2.0000002, -4.9999995, 4.0000005, 2.9999993], dtype=float32)"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(arr1 - arr0) / 0.12 # 0.12 is the \"moles of reactions\" change"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f80a2ac2-90e4-41a0-835b-1b9e96a1e2f3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "058add5c-cb7b-4ed1-a3ad-87e32670ed39",
"metadata": {
"tags": []
},
"source": [
"# Plots of changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "a6db8bbd-4eaa-4060-94d6-264cc2e707a9",
"metadata": {},
"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",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.001,
0.002,
0.003,
0.004,
0.005,
0.006,
0.007,
0.008,
0.009000000000000001,
0.010000000000000002,
0.011000000000000003,
0.012000000000000004,
0.013000000000000005,
0.014000000000000005,
0.015000000000000006,
0.016000000000000007,
0.017000000000000008,
0.01800000000000001,
0.01900000000000001,
0.02000000000000001,
0.02100000000000001,
0.022000000000000013,
0.023000000000000013,
0.024000000000000014,
0.025000000000000015,
0.026000000000000016,
0.027000000000000017,
0.028000000000000018,
0.02900000000000002,
0.03000000000000002,
0.03100000000000002,
0.03200000000000002,
0.03300000000000002,
0.03400000000000002,
0.035000000000000024,
0.036000000000000025,
0.037000000000000026,
0.03800000000000003,
0.03900000000000003,
0.04000000000000003,
0.04100000000000003
],
"xaxis": "x",
"y": [
4,
3.76,
3.5710911999999997,
3.421343984936673,
3.301980728001355,
3.2064188890000027,
3.1296453862394342,
3.0677942598136902,
3.0178536016474613,
2.9774572735702503,
2.9447337853232094,
2.9181946595034987,
2.896650676719295,
2.8791481940685353,
2.864920170128554,
2.8533481325184336,
2.8439323993268655,
2.836268601207023,
2.8300290633553296,
2.8249479697668667,
2.8208094937384085,
2.817438269840165,
2.814691724361387,
2.8124538876914618,
2.810630392954937,
2.8091444272685577,
2.8079334500421775,
2.8069465302591987,
2.8061421841616245,
2.805486618085015,
2.80495229972419,
2.8045167959066166,
2.8041618268042856,
2.803872496040423,
2.8036366638212202,
2.80344443641785,
2.8032877503339826,
2.8031600335513334,
2.8030559295354904,
2.8029710723541625,
2.8029019034285914,
2.802845522201422
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "cyan",
"dash": "solid",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.001,
0.002,
0.003,
0.004,
0.005,
0.006,
0.007,
0.008,
0.009000000000000001,
0.010000000000000002,
0.011000000000000003,
0.012000000000000004,
0.013000000000000005,
0.014000000000000005,
0.015000000000000006,
0.016000000000000007,
0.017000000000000008,
0.01800000000000001,
0.01900000000000001,
0.02000000000000001,
0.02100000000000001,
0.022000000000000013,
0.023000000000000013,
0.024000000000000014,
0.025000000000000015,
0.026000000000000016,
0.027000000000000017,
0.028000000000000018,
0.02900000000000002,
0.03000000000000002,
0.03100000000000002,
0.03200000000000002,
0.03300000000000002,
0.03400000000000002,
0.035000000000000024,
0.036000000000000025,
0.037000000000000026,
0.03800000000000003,
0.03900000000000003,
0.04000000000000003,
0.04100000000000003
],
"xaxis": "x",
"y": [
7,
6.4,
5.927728,
5.553359962341683,
5.254951820003388,
5.016047222500007,
4.824113465598586,
4.669485649534226,
4.544634004118653,
4.443643183925626,
4.361834463308023,
4.295486648758746,
4.2416266917982375,
4.197870485171339,
4.162300425321385,
4.133370331296084,
4.109830998317164,
4.090671503017557,
4.075072658388323,
4.062369924417166,
4.052023734346021,
4.043595674600413,
4.0367293109034685,
4.031134719228654,
4.026575982387343,
4.022861068171395,
4.019833625105444,
4.017366325647997,
4.015355460404061,
4.013716545212537,
4.012380749310474,
4.011291989766541,
4.0104045670107125,
4.009681240101056,
4.009091659553049,
4.0086110910446235,
4.008219375834954,
4.00790008387833,
4.007639823838723,
4.007427680885403,
4.007254758571475,
4.007113805503551
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "red",
"dash": "solid",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.001,
0.002,
0.003,
0.004,
0.005,
0.006,
0.007,
0.008,
0.009000000000000001,
0.010000000000000002,
0.011000000000000003,
0.012000000000000004,
0.013000000000000005,
0.014000000000000005,
0.015000000000000006,
0.016000000000000007,
0.017000000000000008,
0.01800000000000001,
0.01900000000000001,
0.02000000000000001,
0.02100000000000001,
0.022000000000000013,
0.023000000000000013,
0.024000000000000014,
0.025000000000000015,
0.026000000000000016,
0.027000000000000017,
0.028000000000000018,
0.02900000000000002,
0.03000000000000002,
0.03100000000000002,
0.03200000000000002,
0.03300000000000002,
0.03400000000000002,
0.035000000000000024,
0.036000000000000025,
0.037000000000000026,
0.03800000000000003,
0.03900000000000003,
0.04000000000000003,
0.04100000000000003
],
"xaxis": "x",
"y": [
5,
5.48,
5.857817600000001,
6.157312030126654,
6.39603854399729,
6.587162221999995,
6.7407092275211316,
6.8644114803726195,
6.964292796705077,
7.0450854528594995,
7.110532429353581,
7.163610680993003,
7.20669864656141,
7.241703611862929,
7.270159659742892,
7.293303734963133,
7.312135201346269,
7.327462797585954,
7.339941873289341,
7.350104060466267,
7.358381012523183,
7.36512346031967,
7.370616551277226,
7.3750922246170765,
7.378739214090126,
7.3817111454628845,
7.384133099915645,
7.386106939481603,
7.387715631676751,
7.38902676382997,
7.39009540055162,
7.390966408186767,
7.391676346391429,
7.392255007919154,
7.3927266723575595,
7.3931111271643,
7.393424499332035,
7.393679932897333,
7.393888140929019,
7.394057855291675,
7.394196193142817,
7.394308955597156
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=D
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "D",
"line": {
"color": "orange",
"dash": "solid",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "D",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.001,
0.002,
0.003,
0.004,
0.005,
0.006,
0.007,
0.008,
0.009000000000000001,
0.010000000000000002,
0.011000000000000003,
0.012000000000000004,
0.013000000000000005,
0.014000000000000005,
0.015000000000000006,
0.016000000000000007,
0.017000000000000008,
0.01800000000000001,
0.01900000000000001,
0.02000000000000001,
0.02100000000000001,
0.022000000000000013,
0.023000000000000013,
0.024000000000000014,
0.025000000000000015,
0.026000000000000016,
0.027000000000000017,
0.028000000000000018,
0.02900000000000002,
0.03000000000000002,
0.03100000000000002,
0.03200000000000002,
0.03300000000000002,
0.03400000000000002,
0.035000000000000024,
0.036000000000000025,
0.037000000000000026,
0.03800000000000003,
0.03900000000000003,
0.04000000000000003,
0.04100000000000003
],
"xaxis": "x",
"y": [
2,
2.36,
2.6433632,
2.86798402259499,
3.047028907997967,
3.190371666499996,
3.3055319206408487,
3.3983086102794644,
3.473219597528808,
3.533814089644624,
3.582899322015186,
3.622708010744752,
3.655023984921057,
3.6812777088971966,
3.7026197448071687,
3.7199778012223494,
3.734101401009702,
3.745597098189466,
3.754956404967006,
3.7625780453497004,
3.768785759392388,
3.7738425952397527,
3.7779624134579195,
3.781319168462808,
3.7840544105675944,
3.786283359097163,
3.788099824936734,
3.789580204611202,
3.7907867237575634,
3.791770072872478,
3.792571550413715,
3.7932248061400755,
3.7937572597935723,
3.794191255939366,
3.7945450042681697,
3.794833345373225,
3.7950683744990266,
3.7952599496730004,
3.7954161056967646,
3.7955433914687564,
3.795647144857113,
3.795731716697867
],
"yaxis": "y"
}
],
"layout": {
"autosize": true,
"legend": {
"title": {
"text": "Chemical"
},
"tracegroupgap": 0
},
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmapgl"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Reaction `2A + 5B <-> 4C + 3D`
Concentration as a function of time of all chemicals at bin 0"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
0.04100000000000003
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
1.7003161691334914,
7.693992786463665
],
"title": {
"text": "Concentration"
},
"type": "linear"
}
}
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAFoCAYAAADKCW0/AAAgAElEQVR4XuydCbwcVZ3v/3377jfJzZ6QQCAghCUBRIxGYYIPWaKIeUEMyAQZdQw4KCATcIRnJj43YBBQFKLMM8IgRIcMgzhsMpIBQZm4jBAgbIGQhISsN7n7+v7/6j59q+tWdf2rq7q76t5fJf3pvt2nTp36nlPV59tnSw3wRthAAARAAARAAARAAARAAARAIASBFMQiBD3sCgIgAAIgAAIgAAIgAAIgYBGAWKAggAAIgAAIgAAIgAAIgAAIhCYAsQiNEBGAAAiAAAiAAAiAAAiAAAhALFAGQAAEQAAEQAAEQAAEQAAEQhOAWIRGiAhAAARAAARAAARAAARAAAQgFigDIAACIAACIAACIAACIAACoQlALEIjRAQgAAIgAAIgAAIgAAIgAAIQC5QBEAABEAABEAABEAABEACB0AQgFqERIgIQAAEQAAEQAAEQAAEQAAGIBcoACIAACIAACIAACIAACIBAaAIQi9AIEQEIgAAIgAAIgAAIgAAIgADEAmUABEAABEAABEAABEAABEAgNAGIRWiEiAAEQAAEQAAEQAAEQAAEQABigTIAAiAAAiAAAiAAAiAAAiAQmgDEIjRCRAACIAACIAACIAACIAACIACxQBkAARAAARAAARAAARAAARAITQBiERohIgABEAABEAABEAABEAABEIBYoAyAAAiAAAiAAAiAAAiAAAiEJgCxCI0QEYAACIAACIAACIAACIAACEAsUAZAAARAAARAAARAAARAAARCE4BYhEaICEAABEAABEAABEAABEAABCAWKAMgAAIgAAIgAAIgAAIgAAKhCUAsQiNEBCAAAiAAAiAAAiAAAiAAAhALlAEQAAEQAAEQAAEQAAEQAIHQBCAWoREiAhAAARAAARAAARAAARAAAYgFygAIgAAIgAAIgAAIgAAIgEBoAhCL0AgRAQiAAAiAAAiAAAiAAAiAAMQCZQAEQAAEQAAEQAAEQAAEQCA0AYhFaISIAARAAARAAARAAARAAARAAGKBMgACIAACIAACIAACIAACIBCaAMQiNEJEAAIgAAIgAAIgAAIgAAIgALFAGQABEAABEAABEAABEAABEAhNAGIRGiEiAAEQAAEQAAEQAAEQAAEQgFigDIAACIAACIAACIAACIAACIQmALEI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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bio.plot_history_single_bin(bin_address=0, \n",
" title_prefix=\"Reaction `2A + 5B <-> 4C + 3D`\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a68a26cd",
"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.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}