{ "cells": [ { "cell_type": "markdown", "id": "49bcb5b0-f19d-4b96-a5f1-e0ae30f66d8f", "metadata": {}, "source": [ "### `A` up-regulates `B` , by being *the limiting reagent* in the reaction: \n", "### `A + X <-> 2B` (mostly forward), where `X` is plentiful\n", "1st-order kinetics. \n", "If [A] is low, [B] remains low, too. Then, if [A] goes high, then so does [B]. However, at that point, A can no longer bring B down to any substantial extent.\n", "\n", "**Single-bin reaction**\n", "\n", "Based on experiment `reactions_single_compartment/up_regulate_1`" ] }, { "cell_type": "code", "execution_count": 1, "id": "78f9eeee-be2c-4c24-a078-3847e02afc10", "metadata": {}, "outputs": [], "source": [ "LAST_REVISED = \"May 5, 2025\"\n", "LIFE123_VERSION = \"1.0.0rc3\" # Library version this experiment is based on" ] }, { "cell_type": "code", "execution_count": 2, "id": "7d6a2ab2-9c00-494c-a2e9-783dd50fea49", "metadata": {}, "outputs": [], "source": [ "#import set_path # Using MyBinder? Uncomment this before running the next cell!" ] }, { "cell_type": "code", "execution_count": 3, "id": "1dc1a2e7", "metadata": { "tags": [] }, "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 check_version, ChemData, BioSim1D, GraphicLog" ] }, { "cell_type": "code", "execution_count": 4, "id": "cc53849f-351d-49e0-bfa8-22f8d8e22f8e", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-> Output will be LOGGED into the file 'up_regulation_1.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": 5, "id": "32c31a81-f120-49c5-bc3a-4cf9bd6db2f2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0:\n", "1 bins and 3 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", "
SpeciesDiff rateBin 0
0ANone5.0
1XNone100.0
2BNone0.0
\n", "
" ], "text/plain": [ " Species Diff rate Bin 0\n", "0 A None 5.0\n", "1 X None 100.0\n", "2 B None 0.0" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Initialize the system. NOTE: Diffusion not applicable (just 1 bin)\n", "chem_data = ChemData(names=[\"A\", \"X\", \"B\"], plot_colors=['red', 'darkorange', 'green']) \n", "\n", "bio = BioSim1D(n_bins=1, chem_data=chem_data)\n", "\n", "bio.set_uniform_concentration(chem_label=\"A\", conc=5.) # Scarce\n", "bio.set_uniform_concentration(chem_label=\"X\", conc=100.) # Plentiful\n", "# Initially, no \"B\" is present\n", "\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 6, "id": "4dd82ee6-bb2a-4f07-a9fe-1cb18b2c4298", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of reactions: 1 (at temp. 25 C)\n", "0: A + X <-> 2 B (kF = 8 / kR = 2 / delta_G = -3,436.6 / K = 4) | 1st order in all reactants & products\n", "Set of chemicals involved in the above reactions: {\"B\" (green), \"X\" (darkorange), \"A\" (red)}\n", "[GRAPHIC ELEMENT SENT TO LOG FILE `up_regulation_1.log.htm`]\n" ] } ], "source": [ "reactions = bio.get_reactions()\n", "\n", "# Reaction A + X <-> 2B , with 1st-order kinetics for all species\n", "reactions.add_reaction(reactants=[\"A\" , \"X\"], products=[(2, \"B\", 1)],\n", " forward_rate=8., reverse_rate=2.)\n", "\n", "reactions.describe_reactions()\n", "\n", "# Send the plot of the reaction network to the HTML log file\n", "reactions.plot_reaction_network(\"vue_cytoscape_2\")" ] }, { "cell_type": "code", "execution_count": null, "id": "be6fabbe-bded-4ff6-b220-5610e73b401f", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "726a29b7-c9d9-4be5-9ad3-51bd1adedd98", "metadata": {}, "source": [ "### Enable History" ] }, { "cell_type": "code", "execution_count": 7, "id": "5562fea2-834e-40a9-9b1d-5ea28a0100bf", "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 for all the chemicals\n", "bio.enable_history(take_snapshot=True) # Taking a snapshot to include the current initial state in the history" ] }, { "cell_type": "code", "execution_count": 8, "id": "b5f6b794-f5d7-4d21-8216-6ab23790b485", "metadata": { "tags": [] }, "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", "
SYSTEM TIMEAXBcaption
00.05.0100.00.0
\n", "
" ], "text/plain": [ " SYSTEM TIME A X B caption\n", "0 0.0 5.0 100.0 0.0 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_bin_history(bin_address=0)" ] }, { "cell_type": "code", "execution_count": null, "id": "f40eaa45-0595-4182-808d-d2b60b6b17ca", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "0b46b395-3f68-4dbd-b0c5-d67a0e623726", "metadata": { "tags": [] }, "source": [ "## Take the initial system to equilibrium" ] }, { "cell_type": "code", "execution_count": 9, "id": "bcf652b8-e0dc-438e-bdbe-02216c1d52a0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "System Time is now: 0.015\n", "SYSTEM STATE at Time t = 0.015:\n", "1 bins and 3 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", "
SpeciesDiff rateBin 0
0ANone0.026173
1XNone95.026173
2BNone9.947653
\n", "
" ], "text/plain": [ " Species Diff rate Bin 0\n", "0 A None 0.026173\n", "1 X None 95.026173\n", "2 B None 9.947653" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.react(time_step=0.0005, n_steps=30)\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 10, "id": "2eca7d5b-b284-4bfa-b588-1c2529180ec0", "metadata": { "tags": [] }, "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", "
SYSTEM TIMEAXBcaption
00.00005.000000100.0000000.000000
10.00053.00000098.0000004.000000
20.00101.82800096.8280006.344000
30.00151.12633896.1263387.747325
40.00200.70100295.7010028.597996
50.00250.44125495.4412549.117493
60.00300.28191695.2819169.436168
70.00350.18390695.1839069.632188
80.00400.12351995.1235199.752963
90.00450.08627495.0862749.827453
100.00500.06328795.0632879.873425
110.00550.04909695.0490969.901809
120.00600.04033195.0403319.919337
130.00650.03491895.0349189.930163
140.00700.03157595.0315759.936851
150.00750.02950995.0295099.940982
160.00800.02823395.0282339.943534
170.00850.02744595.0274459.945110
180.00900.02695895.0269589.946084
190.00950.02665795.0266579.946686
200.01000.02647195.0264719.947058
210.01050.02635695.0263569.947287
220.01100.02628595.0262859.947429
230.01150.02624295.0262429.947517
240.01200.02621595.0262159.947571
250.01250.02619895.0261989.947604
260.01300.02618895.0261889.947625
270.01350.02618195.0261819.947638
280.01400.02617795.0261779.947646
290.01450.02617595.0261759.947650
300.01500.02617395.0261739.947653
\n", "
" ], "text/plain": [ " SYSTEM TIME A X B caption\n", "0 0.0000 5.000000 100.000000 0.000000 \n", "1 0.0005 3.000000 98.000000 4.000000 \n", "2 0.0010 1.828000 96.828000 6.344000 \n", "3 0.0015 1.126338 96.126338 7.747325 \n", "4 0.0020 0.701002 95.701002 8.597996 \n", "5 0.0025 0.441254 95.441254 9.117493 \n", "6 0.0030 0.281916 95.281916 9.436168 \n", "7 0.0035 0.183906 95.183906 9.632188 \n", "8 0.0040 0.123519 95.123519 9.752963 \n", "9 0.0045 0.086274 95.086274 9.827453 \n", "10 0.0050 0.063287 95.063287 9.873425 \n", "11 0.0055 0.049096 95.049096 9.901809 \n", "12 0.0060 0.040331 95.040331 9.919337 \n", "13 0.0065 0.034918 95.034918 9.930163 \n", "14 0.0070 0.031575 95.031575 9.936851 \n", "15 0.0075 0.029509 95.029509 9.940982 \n", "16 0.0080 0.028233 95.028233 9.943534 \n", "17 0.0085 0.027445 95.027445 9.945110 \n", "18 0.0090 0.026958 95.026958 9.946084 \n", "19 0.0095 0.026657 95.026657 9.946686 \n", "20 0.0100 0.026471 95.026471 9.947058 \n", "21 0.0105 0.026356 95.026356 9.947287 \n", "22 0.0110 0.026285 95.026285 9.947429 \n", "23 0.0115 0.026242 95.026242 9.947517 \n", "24 0.0120 0.026215 95.026215 9.947571 \n", "25 0.0125 0.026198 95.026198 9.947604 \n", "26 0.0130 0.026188 95.026188 9.947625 \n", "27 0.0135 0.026181 95.026181 9.947638 \n", "28 0.0140 0.026177 95.026177 9.947646 \n", "29 0.0145 0.026175 95.026175 9.947650 \n", "30 0.0150 0.026173 95.026173 9.947653 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_bin_history(bin_address=0)" ] }, { "cell_type": "markdown", "id": "7dc56592-179d-4e4c-b75a-8eb81dcafe71", "metadata": {}, "source": [ "A, as the scarse limiting reagent, stops the reaction. \n", "When A is low, B is also low." ] }, { "cell_type": "code", "execution_count": null, "id": "3bb64d53-b679-435f-9f9b-96c11f6ec9c5", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "962acf15-3b50-40e4-9daa-3dcca7d3291a", "metadata": {}, "source": [ "### Equilibrium" ] }, { "cell_type": "markdown", "id": "809b4afa-fb2f-4ac3-92c9-083fc487c81b", "metadata": {}, "source": [ "Consistent with the 4/1 ratio of forward/reverse rates (and the 1st order reactions),\n", "the systems settles in the following equilibrium:" ] }, { "cell_type": "code", "execution_count": 11, "id": "064d9592-d9f6-4d12-9f54-67f75bdf72ed", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A + X <-> 2 B\n", "Current concentrations: [A] = 0.02617 ; [X] = 95.03 ; [B] = 9.948\n", "1. Ratio of reactant/product concentrations, adjusted for reaction orders: 3.99963\n", " Formula used: [B] / ([A][X])\n", "2. Ratio of forward/reverse reaction rates: 4\n", "Discrepancy between the two values: 0.009347 %\n", "Reaction IS in equilibrium (within 1% tolerance)\n", "\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Verify that the 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": null, "id": "ce695529-32d7-4fac-aa6d-3770eae6c638", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "cbf6c9c7-8cec-400f-9e70-49ff1a9f485c", "metadata": { "tags": [] }, "source": [ "# Plots of changes of concentration with time" ] }, { "cell_type": "code", "execution_count": 12, "id": "ddd30fcb-ebdd-46e3-ba1c-923945a07bf7", "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": "red", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0005, 0.001, 0.0015, 0.002, 0.0025, 0.003, 0.0035, 0.004, 0.0045000000000000005, 0.005000000000000001, 0.005500000000000001, 0.006000000000000002, 0.006500000000000002, 0.007000000000000003, 0.007500000000000003, 0.008000000000000004, 0.008500000000000004, 0.009000000000000005, 0.009500000000000005, 0.010000000000000005, 0.010500000000000006, 0.011000000000000006, 0.011500000000000007, 0.012000000000000007, 0.012500000000000008, 0.013000000000000008, 0.013500000000000009, 0.014000000000000009, 0.01450000000000001, 0.01500000000000001 ], "xaxis": "x", "y": [ 5, 3, 1.828, 1.1263376640000002, 0.7010021302186202, 0.44125370052882307, 0.28191596761389115, 0.18390616153420203, 0.12351872192313587, 0.08627354264983586, 0.06328727686095315, 0.049095515982419145, 0.04033138739837671, 0.034918290928958894, 0.031574626645931, 0.029509131438994037, 0.02823316007394518, 0.027444904480387076, 0.026957938077751462, 0.026657098810348785, 0.02647124466112761, 0.026356426293401222, 0.026285492804494114, 0.02624167084464946, 0.02621459808083849, 0.026197872793348027, 0.026187540072133496, 0.026181156615558383, 0.02617721297656817, 0.026174776633602247, 0.026173271483838915 ], "yaxis": "y" }, { "hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "X", "line": { "color": "darkorange", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "X", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0005, 0.001, 0.0015, 0.002, 0.0025, 0.003, 0.0035, 0.004, 0.0045000000000000005, 0.005000000000000001, 0.005500000000000001, 0.006000000000000002, 0.006500000000000002, 0.007000000000000003, 0.007500000000000003, 0.008000000000000004, 0.008500000000000004, 0.009000000000000005, 0.009500000000000005, 0.010000000000000005, 0.010500000000000006, 0.011000000000000006, 0.011500000000000007, 0.012000000000000007, 0.012500000000000008, 0.013000000000000008, 0.013500000000000009, 0.014000000000000009, 0.01450000000000001, 0.01500000000000001 ], "xaxis": "x", "y": [ 100, 98, 96.828, 96.126337664, 95.70100213021863, 95.44125370052883, 95.2819159676139, 95.18390616153421, 95.12351872192315, 95.08627354264985, 95.06328727686096, 95.04909551598243, 95.04033138739838, 95.03491829092897, 95.03157462664595, 95.02950913143901, 95.02823316007397, 95.0274449044804, 95.02695793807777, 95.02665709881038, 95.02647124466115, 95.02635642629343, 95.02628549280452, 95.02624167084467, 95.02621459808086, 95.02619787279336, 95.02618754007214, 95.02618115661556, 95.02617721297658, 95.02617477663361, 95.02617327148384 ], "yaxis": "y" }, { "hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "B", "line": { "color": "green", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "B", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0005, 0.001, 0.0015, 0.002, 0.0025, 0.003, 0.0035, 0.004, 0.0045000000000000005, 0.005000000000000001, 0.005500000000000001, 0.006000000000000002, 0.006500000000000002, 0.007000000000000003, 0.007500000000000003, 0.008000000000000004, 0.008500000000000004, 0.009000000000000005, 0.009500000000000005, 0.010000000000000005, 0.010500000000000006, 0.011000000000000006, 0.011500000000000007, 0.012000000000000007, 0.012500000000000008, 0.013000000000000008, 0.013500000000000009, 0.014000000000000009, 0.01450000000000001, 0.01500000000000001 ], "xaxis": "x", "y": [ 0, 4, 6.343999999999999, 7.7473246719999995, 8.59799573956276, 9.117492598942356, 9.43616806477222, 9.632187676931599, 9.752962556153731, 9.82745291470033, 9.873425446278096, 9.901808968035164, 9.919337225203249, 9.930163418142085, 9.93685074670814, 9.940981737122014, 9.943533679852111, 9.945110191039227, 9.946084123844498, 9.946685802379303, 9.947057510677745, 9.947287147413197, 9.947429014391012, 9.947516658310702, 9.947570803838325, 9.947604254413305, 9.947624919855734, 9.947637686768884, 9.947645574046865, 9.947650446732796, 9.947653457032322 ], "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 A + X <-> 2B
Concentration changes with time of all chemicals at bin 0" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 0.01500000000000001 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ -5.555555555555555, 105.55555555555556 ], "title": { "text": "Concentration" }, "type": "linear" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bio.plot_history_single_bin(bin_address=0, \n", " title_prefix=\"Reaction A + X <-> 2B\")" ] }, { "cell_type": "code", "execution_count": null, "id": "e2928a57-c5f2-4049-bf6c-b50aaf4531c9", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "448ec7fa-6529-438b-84ba-47888c2cd080", "metadata": { "tags": [] }, "source": [ "# Now, let's suddenly increase [A]" ] }, { "cell_type": "code", "execution_count": 13, "id": "7245be7a-c9db-45f5-b033-d6c521237a9c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0.015:\n", "1 bins and 3 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", "
SpeciesDiff rateBin 0
0ANone50.000000
1XNone95.026173
2BNone9.947653
\n", "
" ], "text/plain": [ " Species Diff rate Bin 0\n", "0 A None 50.000000\n", "1 X None 95.026173\n", "2 B None 9.947653" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.set_bin_conc(bin_address=0, chem_index=0, conc=50.)\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 14, "id": "007161ef-f4d0-4623-92c5-0fe3d2bda98a", "metadata": { "tags": [] }, "outputs": [], "source": [ "bio.capture_snapshot(caption=\"[A] suddenly increased externally\")" ] }, { "cell_type": "code", "execution_count": 15, "id": "743185b9-56fa-46ad-a504-f4af7361a1a7", "metadata": { "tags": [] }, "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", "
SYSTEM TIMEAXBcaption
00.00005.000000100.0000000.000000
10.00053.00000098.0000004.000000
20.00101.82800096.8280006.344000
30.00151.12633896.1263387.747325
40.00200.70100295.7010028.597996
50.00250.44125495.4412549.117493
60.00300.28191695.2819169.436168
70.00350.18390695.1839069.632188
80.00400.12351995.1235199.752963
90.00450.08627495.0862749.827453
100.00500.06328795.0632879.873425
110.00550.04909695.0490969.901809
120.00600.04033195.0403319.919337
130.00650.03491895.0349189.930163
140.00700.03157595.0315759.936851
150.00750.02950995.0295099.940982
160.00800.02823395.0282339.943534
170.00850.02744595.0274459.945110
180.00900.02695895.0269589.946084
190.00950.02665795.0266579.946686
200.01000.02647195.0264719.947058
210.01050.02635695.0263569.947287
220.01100.02628595.0262859.947429
230.01150.02624295.0262429.947517
240.01200.02621595.0262159.947571
250.01250.02619895.0261989.947604
260.01300.02618895.0261889.947625
270.01350.02618195.0261819.947638
280.01400.02617795.0261779.947646
290.01450.02617595.0261759.947650
300.01500.02617395.0261739.947653
310.015050.00000095.0261739.947653[A] suddenly increased externally
\n", "
" ], "text/plain": [ " SYSTEM TIME A X B \\\n", "0 0.0000 5.000000 100.000000 0.000000 \n", "1 0.0005 3.000000 98.000000 4.000000 \n", "2 0.0010 1.828000 96.828000 6.344000 \n", "3 0.0015 1.126338 96.126338 7.747325 \n", "4 0.0020 0.701002 95.701002 8.597996 \n", "5 0.0025 0.441254 95.441254 9.117493 \n", "6 0.0030 0.281916 95.281916 9.436168 \n", "7 0.0035 0.183906 95.183906 9.632188 \n", "8 0.0040 0.123519 95.123519 9.752963 \n", "9 0.0045 0.086274 95.086274 9.827453 \n", "10 0.0050 0.063287 95.063287 9.873425 \n", "11 0.0055 0.049096 95.049096 9.901809 \n", "12 0.0060 0.040331 95.040331 9.919337 \n", "13 0.0065 0.034918 95.034918 9.930163 \n", "14 0.0070 0.031575 95.031575 9.936851 \n", "15 0.0075 0.029509 95.029509 9.940982 \n", "16 0.0080 0.028233 95.028233 9.943534 \n", "17 0.0085 0.027445 95.027445 9.945110 \n", "18 0.0090 0.026958 95.026958 9.946084 \n", "19 0.0095 0.026657 95.026657 9.946686 \n", "20 0.0100 0.026471 95.026471 9.947058 \n", "21 0.0105 0.026356 95.026356 9.947287 \n", "22 0.0110 0.026285 95.026285 9.947429 \n", "23 0.0115 0.026242 95.026242 9.947517 \n", "24 0.0120 0.026215 95.026215 9.947571 \n", "25 0.0125 0.026198 95.026198 9.947604 \n", "26 0.0130 0.026188 95.026188 9.947625 \n", "27 0.0135 0.026181 95.026181 9.947638 \n", "28 0.0140 0.026177 95.026177 9.947646 \n", "29 0.0145 0.026175 95.026175 9.947650 \n", "30 0.0150 0.026173 95.026173 9.947653 \n", "31 0.0150 50.000000 95.026173 9.947653 \n", "\n", " caption \n", "0 \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 \n", "23 \n", "24 \n", "25 \n", "26 \n", "27 \n", "28 \n", "29 \n", "30 \n", "31 [A] suddenly increased externally " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_bin_history(bin_address=0)" ] }, { "cell_type": "code", "execution_count": null, "id": "695f6718-9354-4d7c-a19f-568d51bb815e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "24455d58-a0ea-43fa-b6ad-95c42a8b34b2", "metadata": {}, "source": [ "### Again, take the system to equilibrium" ] }, { "cell_type": "code", "execution_count": 16, "id": "c06fd8d8-d550-4e35-a239-7b91bee32be9", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "System Time is now: 0.035\n", "SYSTEM STATE at Time t = 0.035:\n", "1 bins and 3 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", "
SpeciesDiff rateBin 0
0ANone0.601080
1XNone45.627253
2BNone108.745494
\n", "
" ], "text/plain": [ " Species Diff rate Bin 0\n", "0 A None 0.601080\n", "1 X None 45.627253\n", "2 B None 108.745494" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.react(time_step=0.0005, n_steps=40)\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 17, "id": "a0974394-afba-44f0-a104-fc8484cd27cd", "metadata": { "tags": [] }, "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", "
SYSTEM TIMEAXBcaption
00.00005.000000100.0000000.000000
10.00053.00000098.0000004.000000
20.00101.82800096.8280006.344000
30.00151.12633896.1263387.747325
40.00200.70100295.7010028.597996
..................
670.03300.60767445.633847108.732305
680.03350.60548445.631658108.736685
690.03400.60370445.629877108.740246
700.03450.60225645.628430108.743141
710.03500.60108045.627253108.745494
\n", "

72 rows × 5 columns

\n", "
" ], "text/plain": [ " SYSTEM TIME A X B caption\n", "0 0.0000 5.000000 100.000000 0.000000 \n", "1 0.0005 3.000000 98.000000 4.000000 \n", "2 0.0010 1.828000 96.828000 6.344000 \n", "3 0.0015 1.126338 96.126338 7.747325 \n", "4 0.0020 0.701002 95.701002 8.597996 \n", ".. ... ... ... ... ...\n", "67 0.0330 0.607674 45.633847 108.732305 \n", "68 0.0335 0.605484 45.631658 108.736685 \n", "69 0.0340 0.603704 45.629877 108.740246 \n", "70 0.0345 0.602256 45.628430 108.743141 \n", "71 0.0350 0.601080 45.627253 108.745494 \n", "\n", "[72 rows x 5 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_bin_history(bin_address=0)" ] }, { "cell_type": "markdown", "id": "158e3787-f2d5-4a01-aaa9-6066e93e584c", "metadata": {}, "source": [ "A, still the limiting reagent, is again stopping the reaction. \n", "The (transiently) high value of [A] led to a high value of [B]" ] }, { "cell_type": "code", "execution_count": 18, "id": "2745237a", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ratio of equilibrium concentrations (B_eq / (A_eq * X_eq)): 3.9999999999983915\n" ] }, { "ename": "AttributeError", "evalue": "'ChemData' object has no attribute 'get_forward_rate'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[24], line 6\u001b[0m\n\u001b[0;32m 4\u001b[0m B_eq \u001b[38;5;241m=\u001b[39m bio\u001b[38;5;241m.\u001b[39mbin_concentration(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m2\u001b[39m)\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRatio of equilibrium concentrations (B_eq / (A_eq * X_eq)): \u001b[39m\u001b[38;5;124m\"\u001b[39m, (B_eq \u001b[38;5;241m/\u001b[39m (A_eq \u001b[38;5;241m*\u001b[39m X_eq)))\n\u001b[1;32m----> 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRatio of forward/reverse rates: \u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[43mchem_data\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_forward_rate\u001b[49m(\u001b[38;5;241m0\u001b[39m) \u001b[38;5;241m/\u001b[39m chem_data\u001b[38;5;241m.\u001b[39mget_reverse_rate(\u001b[38;5;241m0\u001b[39m))\n", "\u001b[1;31mAttributeError\u001b[0m: 'ChemData' object has no attribute 'get_forward_rate'" ] } ], "source": [ "# Verify the equilibrium\n", "bio.reaction_dynamics.is_in_equilibrium(rxn_index=0, conc=bio.bin_snapshot(bin_address = 0))" ] }, { "cell_type": "code", "execution_count": 19, "id": "270a79e8-5d2e-47a4-a1f4-a76685d305e3", "metadata": { "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "A", "line": { "color": "red", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0005, 0.001, 0.0015, 0.002, 0.0025, 0.003, 0.0035, 0.004, 0.0045000000000000005, 0.005000000000000001, 0.005500000000000001, 0.006000000000000002, 0.006500000000000002, 0.007000000000000003, 0.007500000000000003, 0.008000000000000004, 0.008500000000000004, 0.009000000000000005, 0.009500000000000005, 0.010000000000000005, 0.010500000000000006, 0.011000000000000006, 0.011500000000000007, 0.012000000000000007, 0.012500000000000008, 0.013000000000000008, 0.013500000000000009, 0.014000000000000009, 0.01450000000000001, 0.01500000000000001, 0.01500000000000001, 0.01550000000000001, 0.01600000000000001, 0.01650000000000001, 0.01700000000000001, 0.017500000000000012, 0.018000000000000013, 0.018500000000000013, 0.019000000000000013, 0.019500000000000014, 0.020000000000000014, 0.020500000000000015, 0.021000000000000015, 0.021500000000000016, 0.022000000000000016, 0.022500000000000017, 0.023000000000000017, 0.023500000000000017, 0.024000000000000018, 0.02450000000000002, 0.02500000000000002, 0.02550000000000002, 0.02600000000000002, 0.02650000000000002, 0.02700000000000002, 0.02750000000000002, 0.02800000000000002, 0.028500000000000022, 0.029000000000000022, 0.029500000000000023, 0.030000000000000023, 0.030500000000000024, 0.031000000000000024, 0.03150000000000002, 0.03200000000000002, 0.03250000000000002, 0.03300000000000002, 0.03350000000000002, 0.03400000000000002, 0.034500000000000024, 0.035000000000000024 ], "xaxis": "x", "y": [ 5, 3, 1.828, 1.1263376640000002, 0.7010021302186202, 0.44125370052882307, 0.28191596761389115, 0.18390616153420203, 0.12351872192313587, 0.08627354264983586, 0.06328727686095315, 0.049095515982419145, 0.04033138739837671, 0.034918290928958894, 0.031574626645931, 0.029509131438994037, 0.02823316007394518, 0.027444904480387076, 0.026957938077751462, 0.026657098810348785, 0.02647124466112761, 0.026356426293401222, 0.026285492804494114, 0.02624167084464946, 0.02621459808083849, 0.026197872793348027, 0.026187540072133496, 0.026181156615558383, 0.02617721297656817, 0.026174776633602247, 0.026173271483838915, 50, 31.00471299916026, 21.623387995046514, 15.925331580650214, 12.120736870506565, 9.435792407048389, 7.4713012668016265, 5.997408525637942, 4.871324304129126, 3.9992617383566698, 3.316948682572402, 2.7788558199565143, 2.3518726285178757, 2.011408019338362, 1.738885783882158, 1.520079280276284, 1.343970798859013, 1.2019500324406225, 1.0872382086134893, 0.9944663340905837, 0.9193611478351968, 0.858507921949972, 0.8091691103602572, 0.7691442527238707, 0.7366607965738188, 0.7102883852455001, 0.6888711519440374, 0.6714739618446233, 0.6573395464390022, 0.6458542024212616, 0.6365202639649677, 0.628933957923929, 0.6227675543081823, 0.6177549557172486, 0.6136800478198229, 0.6103672717112957, 0.6076739876581376, 0.605484285395273, 0.6037039640125998, 0.6022564584836971, 0.6010795330423921 ], "yaxis": "y" }, { "hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "X", "line": { "color": "darkorange", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "X", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0005, 0.001, 0.0015, 0.002, 0.0025, 0.003, 0.0035, 0.004, 0.0045000000000000005, 0.005000000000000001, 0.005500000000000001, 0.006000000000000002, 0.006500000000000002, 0.007000000000000003, 0.007500000000000003, 0.008000000000000004, 0.008500000000000004, 0.009000000000000005, 0.009500000000000005, 0.010000000000000005, 0.010500000000000006, 0.011000000000000006, 0.011500000000000007, 0.012000000000000007, 0.012500000000000008, 0.013000000000000008, 0.013500000000000009, 0.014000000000000009, 0.01450000000000001, 0.01500000000000001, 0.01500000000000001, 0.01550000000000001, 0.01600000000000001, 0.01650000000000001, 0.01700000000000001, 0.017500000000000012, 0.018000000000000013, 0.018500000000000013, 0.019000000000000013, 0.019500000000000014, 0.020000000000000014, 0.020500000000000015, 0.021000000000000015, 0.021500000000000016, 0.022000000000000016, 0.022500000000000017, 0.023000000000000017, 0.023500000000000017, 0.024000000000000018, 0.02450000000000002, 0.02500000000000002, 0.02550000000000002, 0.02600000000000002, 0.02650000000000002, 0.02700000000000002, 0.02750000000000002, 0.02800000000000002, 0.028500000000000022, 0.029000000000000022, 0.029500000000000023, 0.030000000000000023, 0.030500000000000024, 0.031000000000000024, 0.03150000000000002, 0.03200000000000002, 0.03250000000000002, 0.03300000000000002, 0.03350000000000002, 0.03400000000000002, 0.034500000000000024, 0.035000000000000024 ], "xaxis": "x", "y": [ 100, 98, 96.828, 96.126337664, 95.70100213021863, 95.44125370052883, 95.2819159676139, 95.18390616153421, 95.12351872192315, 95.08627354264985, 95.06328727686096, 95.04909551598243, 95.04033138739838, 95.03491829092897, 95.03157462664595, 95.02950913143901, 95.02823316007397, 95.0274449044804, 95.02695793807777, 95.02665709881038, 95.02647124466115, 95.02635642629343, 95.02628549280452, 95.02624167084467, 95.02621459808086, 95.02619787279336, 95.02618754007214, 95.02618115661556, 95.02617721297658, 95.02617477663361, 95.02617327148384, 95.02617327148384, 76.0308862706441, 66.64956126653036, 60.95150485213406, 57.14691014199041, 54.46196567853224, 52.49747453828547, 51.023581797121786, 49.89749757561297, 49.02543500984051, 48.34312195405624, 47.805029091440346, 47.37804590000171, 47.037581290822196, 46.765059055365995, 46.54625255176012, 46.370144070342846, 46.228123303924455, 46.11341148009732, 46.02063960557442, 45.94553441931903, 45.884681193433806, 45.83534238184409, 45.795317524207704, 45.76283406805765, 45.73646165672933, 45.71504442342787, 45.69764723332845, 45.68351281792283, 45.67202747390509, 45.662693535448796, 45.655107229407754, 45.64894082579201, 45.64392822720108, 45.639853319303654, 45.636540543195125, 45.633847259141966, 45.6316575568791, 45.62987723549642, 45.62842972996752, 45.627252804526215 ], "yaxis": "y" }, { "hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "B", "line": { "color": "green", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "B", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0005, 0.001, 0.0015, 0.002, 0.0025, 0.003, 0.0035, 0.004, 0.0045000000000000005, 0.005000000000000001, 0.005500000000000001, 0.006000000000000002, 0.006500000000000002, 0.007000000000000003, 0.007500000000000003, 0.008000000000000004, 0.008500000000000004, 0.009000000000000005, 0.009500000000000005, 0.010000000000000005, 0.010500000000000006, 0.011000000000000006, 0.011500000000000007, 0.012000000000000007, 0.012500000000000008, 0.013000000000000008, 0.013500000000000009, 0.014000000000000009, 0.01450000000000001, 0.01500000000000001, 0.01500000000000001, 0.01550000000000001, 0.01600000000000001, 0.01650000000000001, 0.01700000000000001, 0.017500000000000012, 0.018000000000000013, 0.018500000000000013, 0.019000000000000013, 0.019500000000000014, 0.020000000000000014, 0.020500000000000015, 0.021000000000000015, 0.021500000000000016, 0.022000000000000016, 0.022500000000000017, 0.023000000000000017, 0.023500000000000017, 0.024000000000000018, 0.02450000000000002, 0.02500000000000002, 0.02550000000000002, 0.02600000000000002, 0.02650000000000002, 0.02700000000000002, 0.02750000000000002, 0.02800000000000002, 0.028500000000000022, 0.029000000000000022, 0.029500000000000023, 0.030000000000000023, 0.030500000000000024, 0.031000000000000024, 0.03150000000000002, 0.03200000000000002, 0.03250000000000002, 0.03300000000000002, 0.03350000000000002, 0.03400000000000002, 0.034500000000000024, 0.035000000000000024 ], "xaxis": "x", "y": [ 0, 4, 6.343999999999999, 7.7473246719999995, 8.59799573956276, 9.117492598942356, 9.43616806477222, 9.632187676931599, 9.752962556153731, 9.82745291470033, 9.873425446278096, 9.901808968035164, 9.919337225203249, 9.930163418142085, 9.93685074670814, 9.940981737122014, 9.943533679852111, 9.945110191039227, 9.946084123844498, 9.946685802379303, 9.947057510677745, 9.947287147413197, 9.947429014391012, 9.947516658310702, 9.947570803838325, 9.947604254413305, 9.947624919855734, 9.947637686768884, 9.947645574046865, 9.947650446732796, 9.947653457032322, 9.947653457032322, 47.9382274587118, 66.70087746693929, 78.09699029573189, 85.70617971601918, 91.07606864293552, 95.00505092342905, 97.95283640575643, 100.20500484877407, 101.94912998031899, 103.31375609188753, 104.38994181711931, 105.24390819999658, 105.92483741835561, 106.46988188926801, 106.90749489647976, 107.25971185931431, 107.54375339215109, 107.77317703980536, 107.95872078885117, 108.10893116136194, 108.23063761313239, 108.32931523631181, 108.40936495158459, 108.4743318638847, 108.52707668654133, 108.56991115314426, 108.6047055333431, 108.63297436415434, 108.65594505218982, 108.67461292910241, 108.68978554118449, 108.70211834841598, 108.71214354559784, 108.72029336139269, 108.72691891360975, 108.73230548171607, 108.7366848862418, 108.74024552900715, 108.74314054006496, 108.74549439094757 ], "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 A + X <-> 2B
Concentration changes with time of all chemicals at bin 0" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 0.035000000000000024 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ -6.041416355052642, 114.78691074600022 ], "title": { "text": "Concentration" }, "type": "linear" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bio.plot_history_single_bin(bin_address=0, \n", " title_prefix=\"Reaction A + X <-> 2B\")" ] }, { "cell_type": "markdown", "id": "bc4c0dd9-609a-40ba-93e7-910dd2550ba6", "metadata": {}, "source": [ "`A`, still the limiting reagent, is again stopping the reaction. \n", "The (transiently) high value of [A] led to a high value of [B]" ] }, { "cell_type": "code", "execution_count": null, "id": "54755c71-4b29-4135-b5d1-4f2586db0b5d", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "f6619731-c5ea-484c-af3e-cea50d685361", "metadata": { "tags": [] }, "source": [ "# Let's again suddenly increase [A]" ] }, { "cell_type": "code", "execution_count": 20, "id": "d3618eba-a673-4ff5-85d0-08f5ea592361", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0.035:\n", "1 bins and 3 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", "
SpeciesDiff rateBin 0
0ANone30.000000
1XNone45.627253
2BNone108.745494
\n", "
" ], "text/plain": [ " Species Diff rate Bin 0\n", "0 A None 30.000000\n", "1 X None 45.627253\n", "2 B None 108.745494" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.set_bin_conc(bin_address=0, chem_index=0, conc=30.)\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 21, "id": "3ed2e33d-a414-4ca2-813a-f880b5bb229d", "metadata": { "tags": [] }, "outputs": [], "source": [ "bio.capture_snapshot(caption=\"[A] again suddenly increased externally\")" ] }, { "cell_type": "code", "execution_count": 22, "id": "0593a573-4973-4bc3-8bb1-2e7ae874d720", "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", "
SYSTEM TIMEAXBcaption
00.00005.000000100.0000000.000000
10.00053.00000098.0000004.000000
20.00101.82800096.8280006.344000
30.00151.12633896.1263387.747325
40.00200.70100295.7010028.597996
..................
680.03350.60548445.631658108.736685
690.03400.60370445.629877108.740246
700.03450.60225645.628430108.743141
710.03500.60108045.627253108.745494
720.035030.00000045.627253108.745494[A] again suddenly increased externally
\n", "

73 rows × 5 columns

\n", "
" ], "text/plain": [ " SYSTEM TIME A X B \\\n", "0 0.0000 5.000000 100.000000 0.000000 \n", "1 0.0005 3.000000 98.000000 4.000000 \n", "2 0.0010 1.828000 96.828000 6.344000 \n", "3 0.0015 1.126338 96.126338 7.747325 \n", "4 0.0020 0.701002 95.701002 8.597996 \n", ".. ... ... ... ... \n", "68 0.0335 0.605484 45.631658 108.736685 \n", "69 0.0340 0.603704 45.629877 108.740246 \n", "70 0.0345 0.602256 45.628430 108.743141 \n", "71 0.0350 0.601080 45.627253 108.745494 \n", "72 0.0350 30.000000 45.627253 108.745494 \n", "\n", " caption \n", "0 \n", "1 \n", "2 \n", "3 \n", "4 \n", ".. ... \n", "68 \n", "69 \n", "70 \n", "71 \n", "72 [A] again suddenly increased externally \n", "\n", "[73 rows x 5 columns]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_bin_history(bin_address=0)" ] }, { "cell_type": "code", "execution_count": null, "id": "98e585fb-2c4c-457b-a2eb-2cb9165f41e1", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "0974480d-ca45-46fe-addd-c8d394780fdb", "metadata": {}, "source": [ "### Yet again, take the system to equilibrium" ] }, { "cell_type": "code", "execution_count": 23, "id": "8fe20f9c-05c4-45a4-b485-a51005440200", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "System Time is now: 0.07\n", "SYSTEM STATE at Time t = 0.07:\n", "1 bins and 3 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", "
SpeciesDiff rateBin 0
0ANone2.316313
1XNone17.943565
2BNone164.112869
\n", "
" ], "text/plain": [ " Species Diff rate Bin 0\n", "0 A None 2.316313\n", "1 X None 17.943565\n", "2 B None 164.112869" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.react(time_step=0.0005, n_steps=70)\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 24, "id": "01c24f5b-4c51-4a74-9594-a917cde9b67e", "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", "
SYSTEM TIMEAXBcaption
00.00005.000000100.0000000.000000
10.00053.00000098.0000004.000000
20.00101.82800096.8280006.344000
30.00151.12633896.1263387.747325
40.00200.70100295.7010028.597996
..................
1380.06802.32698917.954242164.091517
1390.06852.32396317.951216164.097568
1400.06902.32118917.948442164.103117
1410.06952.31864517.945898164.108204
1420.07002.31631317.943565164.112869
\n", "

143 rows × 5 columns

\n", "
" ], "text/plain": [ " SYSTEM TIME A X B caption\n", "0 0.0000 5.000000 100.000000 0.000000 \n", "1 0.0005 3.000000 98.000000 4.000000 \n", "2 0.0010 1.828000 96.828000 6.344000 \n", "3 0.0015 1.126338 96.126338 7.747325 \n", "4 0.0020 0.701002 95.701002 8.597996 \n", ".. ... ... ... ... ...\n", "138 0.0680 2.326989 17.954242 164.091517 \n", "139 0.0685 2.323963 17.951216 164.097568 \n", "140 0.0690 2.321189 17.948442 164.103117 \n", "141 0.0695 2.318645 17.945898 164.108204 \n", "142 0.0700 2.316313 17.943565 164.112869 \n", "\n", "[143 rows x 5 columns]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_bin_history(bin_address=0)" ] }, { "cell_type": "markdown", "id": "81a8be4a-f374-494e-b647-184e35707295", "metadata": {}, "source": [ "A, again the scarse limiting reagent, stops the reaction yet again" ] }, { "cell_type": "code", "execution_count": 25, "id": "5d7ded33-8a16-4fdb-b099-a4ea11f7583c", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0: A + X <-> 2 B\n", "Current concentrations: [A] = 2.316 ; [X] = 17.94 ; [B] = 164.1\n", "1. Ratio of reactant/product concentrations, adjusted for reaction orders: 3.94854\n", " Formula used: [B] / ([A][X])\n", "2. Ratio of forward/reverse reaction rates: 4\n", "Discrepancy between the two values: 1.286 %\n", "Reaction IS in equilibrium (within 2% tolerance)\n", "\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Verify the equilibrium\n", "bio.reaction_dynamics.is_in_equilibrium(conc=bio.bin_snapshot(bin_address = 0), \n", " tolerance=2)" ] }, { "cell_type": "code", "execution_count": 26, "id": "c9953bff", "metadata": { "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "A", "line": { "color": "red", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.001, 0.002, 0.003, 0.004, 0.005000000000000001, 0.006000000000000002, 0.007000000000000003, 0.008000000000000004, 0.009000000000000005, 0.010000000000000005, 0.011000000000000006, 0.012000000000000007, 0.013000000000000008, 0.014000000000000009, 0.01500000000000001, 0.01500000000000001, 0.01600000000000001, 0.01700000000000001, 0.018000000000000013, 0.019000000000000013, 0.020000000000000014, 0.021000000000000015, 0.022000000000000016, 0.023000000000000017, 0.024000000000000018, 0.02500000000000002, 0.02600000000000002, 0.02700000000000002, 0.02800000000000002, 0.029000000000000022, 0.030000000000000023, 0.031000000000000024, 0.03200000000000002, 0.03300000000000002, 0.03400000000000002, 0.035000000000000024, 0.035000000000000024, 0.036000000000000025, 0.037000000000000026, 0.03800000000000003, 0.03900000000000003, 0.04000000000000003, 0.04100000000000003, 0.04200000000000003, 0.04300000000000003, 0.04400000000000003, 0.04500000000000003, 0.046000000000000034, 0.047000000000000035, 0.048000000000000036, 0.04900000000000004, 0.05000000000000004, 0.05100000000000004, 0.05200000000000004, 0.05300000000000004, 0.05400000000000004, 0.05500000000000004, 0.05600000000000004, 0.057000000000000044, 0.058000000000000045, 0.059000000000000045, 0.060000000000000046, 0.06100000000000005, 0.06200000000000005, 0.06300000000000004, 0.06400000000000004, 0.06500000000000004, 0.06600000000000004, 0.06700000000000005, 0.06800000000000005, 0.06900000000000005, 0.07000000000000005 ], "xaxis": "x", "y": [ 5, 1.828, 0.7010021302186202, 0.28191596761389115, 0.12351872192313587, 0.06328727686095315, 0.04033138739837671, 0.031574626645931, 0.02823316007394518, 0.026957938077751462, 0.02647124466112761, 0.026285492804494114, 0.02621459808083849, 0.026187540072133496, 0.02617721297656817, 0.026173271483838915, 50, 21.623387995046514, 12.120736870506565, 7.4713012668016265, 4.871324304129126, 3.316948682572402, 2.3518726285178757, 1.738885783882158, 1.343970798859013, 1.0872382086134893, 0.9193611478351968, 0.8091691103602572, 0.7366607965738188, 0.6888711519440374, 0.6573395464390022, 0.6365202639649677, 0.6227675543081823, 0.6136800478198229, 0.6076739876581376, 0.6037039640125998, 0.6010795330423921, 30, 20.78590713353102, 15.620951544522198, 12.321668962573067, 10.049916181784992, 8.407693929463546, 7.179695039949368, 6.238536049026302, 5.503733429098575, 4.921808117315241, 4.455781425530507, 4.0792490236048256, 3.7728540703729303, 3.522093325113542, 3.3159005866267086, 3.1457023187471025, 3.0047703250561706, 2.887767075012364, 2.7904193729304776, 2.709279596876919, 2.641547986288441, 2.5849383266855717, 2.5375750363217384, 2.497913347105048, 2.464676724435737, 2.4368073314881324, 2.413426487445248, 2.3938028695914815, 2.3773267774749263, 2.3634891865109093, 2.351864616889117, 2.342097064151129, 2.333888402655969, 2.3269887978016692, 2.321188758142156, 2.3163125320956275 ], "yaxis": "y" }, { "hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "X", "line": { "color": "darkorange", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "X", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.001, 0.002, 0.003, 0.004, 0.005000000000000001, 0.006000000000000002, 0.007000000000000003, 0.008000000000000004, 0.009000000000000005, 0.010000000000000005, 0.011000000000000006, 0.012000000000000007, 0.013000000000000008, 0.014000000000000009, 0.01500000000000001, 0.01500000000000001, 0.01600000000000001, 0.01700000000000001, 0.018000000000000013, 0.019000000000000013, 0.020000000000000014, 0.021000000000000015, 0.022000000000000016, 0.023000000000000017, 0.024000000000000018, 0.02500000000000002, 0.02600000000000002, 0.02700000000000002, 0.02800000000000002, 0.029000000000000022, 0.030000000000000023, 0.031000000000000024, 0.03200000000000002, 0.03300000000000002, 0.03400000000000002, 0.035000000000000024, 0.035000000000000024, 0.036000000000000025, 0.037000000000000026, 0.03800000000000003, 0.03900000000000003, 0.04000000000000003, 0.04100000000000003, 0.04200000000000003, 0.04300000000000003, 0.04400000000000003, 0.04500000000000003, 0.046000000000000034, 0.047000000000000035, 0.048000000000000036, 0.04900000000000004, 0.05000000000000004, 0.05100000000000004, 0.05200000000000004, 0.05300000000000004, 0.05400000000000004, 0.05500000000000004, 0.05600000000000004, 0.057000000000000044, 0.058000000000000045, 0.059000000000000045, 0.060000000000000046, 0.06100000000000005, 0.06200000000000005, 0.06300000000000004, 0.06400000000000004, 0.06500000000000004, 0.06600000000000004, 0.06700000000000005, 0.06800000000000005, 0.06900000000000005, 0.07000000000000005 ], "xaxis": "x", "y": [ 100, 96.828, 95.70100213021863, 95.2819159676139, 95.12351872192315, 95.06328727686096, 95.04033138739838, 95.03157462664595, 95.02823316007397, 95.02695793807777, 95.02647124466115, 95.02628549280452, 95.02621459808086, 95.02618754007214, 95.02617721297658, 95.02617327148384, 95.02617327148384, 66.64956126653036, 57.14691014199041, 52.49747453828547, 49.89749757561297, 48.34312195405624, 47.37804590000171, 46.765059055365995, 46.370144070342846, 46.11341148009732, 45.94553441931903, 45.83534238184409, 45.76283406805765, 45.71504442342787, 45.68351281792283, 45.662693535448796, 45.64894082579201, 45.639853319303654, 45.633847259141966, 45.62987723549642, 45.627252804526215, 45.627252804526215, 36.413159938057234, 31.248204349048414, 27.948921767099282, 25.677168986311205, 24.03494673398976, 22.806947844475584, 21.865788853552516, 21.13098623362479, 20.549060921841455, 20.083034230056725, 19.706501828131046, 19.40010687489915, 19.149346129639763, 18.94315339115293, 18.772955123273324, 18.632023129582393, 18.51501987953859, 18.4176721774567, 18.336532401403144, 18.268800790814666, 18.212191131211796, 18.164827840847963, 18.125166151631273, 18.091929528961963, 18.06406013601436, 18.040679291971475, 18.02105567411771, 18.004579582001156, 17.99074199103714, 17.979117421415346, 17.969349868677355, 17.961141207182195, 17.954241602327894, 17.948441562668382, 17.94356533662185 ], "yaxis": "y" }, { "hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "B", "line": { "color": "green", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "B", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.001, 0.002, 0.003, 0.004, 0.005000000000000001, 0.006000000000000002, 0.007000000000000003, 0.008000000000000004, 0.009000000000000005, 0.010000000000000005, 0.011000000000000006, 0.012000000000000007, 0.013000000000000008, 0.014000000000000009, 0.01500000000000001, 0.01500000000000001, 0.01600000000000001, 0.01700000000000001, 0.018000000000000013, 0.019000000000000013, 0.020000000000000014, 0.021000000000000015, 0.022000000000000016, 0.023000000000000017, 0.024000000000000018, 0.02500000000000002, 0.02600000000000002, 0.02700000000000002, 0.02800000000000002, 0.029000000000000022, 0.030000000000000023, 0.031000000000000024, 0.03200000000000002, 0.03300000000000002, 0.03400000000000002, 0.035000000000000024, 0.035000000000000024, 0.036000000000000025, 0.037000000000000026, 0.03800000000000003, 0.03900000000000003, 0.04000000000000003, 0.04100000000000003, 0.04200000000000003, 0.04300000000000003, 0.04400000000000003, 0.04500000000000003, 0.046000000000000034, 0.047000000000000035, 0.048000000000000036, 0.04900000000000004, 0.05000000000000004, 0.05100000000000004, 0.05200000000000004, 0.05300000000000004, 0.05400000000000004, 0.05500000000000004, 0.05600000000000004, 0.057000000000000044, 0.058000000000000045, 0.059000000000000045, 0.060000000000000046, 0.06100000000000005, 0.06200000000000005, 0.06300000000000004, 0.06400000000000004, 0.06500000000000004, 0.06600000000000004, 0.06700000000000005, 0.06800000000000005, 0.06900000000000005, 0.07000000000000005 ], "xaxis": "x", "y": [ 0, 6.343999999999999, 8.59799573956276, 9.43616806477222, 9.752962556153731, 9.873425446278096, 9.919337225203249, 9.93685074670814, 9.943533679852111, 9.946084123844498, 9.947057510677745, 9.947429014391012, 9.947570803838325, 9.947624919855734, 9.947645574046865, 9.947653457032322, 9.947653457032322, 66.70087746693929, 85.70617971601918, 95.00505092342905, 100.20500484877407, 103.31375609188753, 105.24390819999658, 106.46988188926801, 107.25971185931431, 107.77317703980536, 108.10893116136194, 108.32931523631181, 108.4743318638847, 108.56991115314426, 108.63297436415434, 108.67461292910241, 108.70211834841598, 108.72029336139269, 108.73230548171607, 108.74024552900715, 108.74549439094757, 108.74549439094757, 127.17368012388553, 137.50359130190319, 144.10215646580144, 148.6456620273776, 151.9301065320205, 154.38610431104883, 156.26842229289497, 157.7380275327504, 158.90187815631708, 159.83393153988655, 160.5869963437379, 161.19978625020167, 161.70130774072044, 162.1136932176941, 162.45408975345333, 162.7359537408352, 162.96996024092283, 163.1646556450866, 163.32693519719373, 163.4623984183707, 163.57561773757644, 163.6703443183041, 163.74966769673748, 163.8161409420761, 163.87187972797128, 163.91864141605706, 163.9578886517646, 163.9908408359977, 164.01851601792572, 164.04176515716932, 164.0613002626453, 164.0777175856356, 164.0915167953442, 164.10311687466324, 164.11286932675628 ], "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": "Changes in concentrations (reaction A + X <-> 2B)" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 0.07000000000000005 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ -9.117381629264237, 173.2302509560205 ], "title": { "text": "concentration" }, "type": "linear" } } }, "image/png": "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QIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQL/ADHCvvyljBd5AAAAABJRU5ErkJggg==", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bio.plot_history_single_bin(bin_address=0, \n", " title_prefix=\"Reaction A + X <-> 2B\")" ] }, { "cell_type": "markdown", "id": "e86e8319-2d19-4a59-91f1-9e45cf2dd333", "metadata": {}, "source": [ "`A`, again the scarse limiting reagent, stops the reaction yet again. \n", "And, again, the (transiently) high value of [A] up-regulated [B] \n", "\n", "Note: `A` can up-regulate `B`, but it cannot bring it down. \n", "`X` will soon need to be replenished, if `A` is to continue being the limiting reagent." ] }, { "cell_type": "markdown", "id": "837435d0-d2ea-4b98-85c4-6a6d44371ae8", "metadata": {}, "source": [ "# For additional exploration, see the experiment `reactions_single_compartment/up_regulate_1`" ] }, { "cell_type": "code", "execution_count": null, "id": "116d06a6", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "jupytext": { "formats": "ipynb,py:percent" }, "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 }