{ "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SpeciesDiff rateBin 0
0ANone4.0
1BNone7.0
2CNone5.0
3DNone2.0
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABCDcaption
00.04.07.05.02.0Initial state
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SpeciesDiff rateBin 0
0ANone3.76
1BNone6.40
2CNone5.48
3DNone2.36
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABCDcaption
00.0004.007.05.002.00Initial state
10.0013.766.45.482.36
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SpeciesDiff rateBin 0
0ANone2.802846
1BNone4.007114
2CNone7.394309
3DNone3.795732
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABCDcaption
00.0004.0000007.0000005.0000002.000000Initial state
10.0013.7600006.4000005.4800002.360000
20.0023.5710915.9277285.8578182.643363
30.0033.4213445.5533606.1573122.867984
40.0043.3019815.2549526.3960393.047029
50.0053.2064195.0160476.5871623.190372
60.0063.1296454.8241136.7407093.305532
70.0073.0677944.6694866.8644113.398309
80.0083.0178544.5446346.9642933.473220
90.0092.9774574.4436437.0450853.533814
100.0102.9447344.3618347.1105323.582899
110.0112.9181954.2954877.1636113.622708
120.0122.8966514.2416277.2066993.655024
130.0132.8791484.1978707.2417043.681278
140.0142.8649204.1623007.2701603.702620
150.0152.8533484.1333707.2933043.719978
160.0162.8439324.1098317.3121353.734101
170.0172.8362694.0906727.3274633.745597
180.0182.8300294.0750737.3399423.754956
190.0192.8249484.0623707.3501043.762578
200.0202.8208094.0520247.3583813.768786
210.0212.8174384.0435967.3651233.773843
220.0222.8146924.0367297.3706173.777962
230.0232.8124544.0311357.3750923.781319
240.0242.8106304.0265767.3787393.784054
250.0252.8091444.0228617.3817113.786283
260.0262.8079334.0198347.3841333.788100
270.0272.8069474.0173667.3861073.789580
280.0282.8061424.0153557.3877163.790787
290.0292.8054874.0137177.3890273.791770
300.0302.8049524.0123817.3900953.792572
310.0312.8045174.0112927.3909663.793225
320.0322.8041624.0104057.3916763.793757
330.0332.8038724.0096817.3922553.794191
340.0342.8036374.0090927.3927273.794545
350.0352.8034444.0086117.3931113.794833
360.0362.8032884.0082197.3934243.795068
370.0372.8031604.0079007.3936803.795260
380.0382.8030564.0076407.3938883.795416
390.0392.8029714.0074287.3940583.795543
400.0402.8029024.0072557.3941963.795647
410.0412.8028464.0071147.3943093.795732
\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 }