{ "cells": [ { "cell_type": "markdown", "id": "8d1aaf6c-3d58-4e27-88ac-9482296ac61a", "metadata": {}, "source": [ "### One-bin `2A <-> 3B` reaction, with 1st-order kinetics in both directions, taken to equilibrium\n", "\n", "Diffusion not applicable (just 1 bin)\n", "\n", "LAST REVISED: July 14, 2023" ] }, { "cell_type": "code", "execution_count": 1, "id": "1fe1cc26-5763-4feb-b097-3ff995c10c8b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Added 'D:\\Docs\\- MY CODE\\BioSimulations\\life123-Win7' to sys.path\n" ] } ], "source": [ "import set_path # Importing this module will add the project's home directory to sys.path" ] }, { "cell_type": "code", "execution_count": 2, "id": "592e626f", "metadata": {}, "outputs": [], "source": [ "from experiments.get_notebook_info import get_notebook_basename\n", "\n", "from src.modules.chemicals.chem_data import ChemData as chem\n", "from src.life_1D.bio_sim_1d import BioSim1D\n", "\n", "import plotly.express as px\n", "from src.modules.visualization.graphic_log import GraphicLog" ] }, { "cell_type": "code", "execution_count": 3, "id": "4745cc84-d917-4701-87a8-8c16f9ac428e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-> Output will be LOGGED into the file 'reaction_3.log.htm'\n" ] } ], "source": [ "# Initialize the HTML logging\n", "log_file = get_notebook_basename() + \".log.htm\" # Use the notebook base filename for the log file\n", "\n", "# Set up the use of some specified graphic (Vue) components\n", "GraphicLog.config(filename=log_file,\n", " components=[\"vue_cytoscape_1\"],\n", " extra_js=\"https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.21.2/cytoscape.umd.js\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "b2660f8d-3447-4874-88d0-da99c0edcfcd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0:\n", "1 bins and 2 species:\n", " Species 0 (A). Diff rate: None. Conc: [10.]\n", " Species 1 (B). Diff rate: None. Conc: [50.]\n" ] } ], "source": [ "# Initialize the system\n", "chem_data = chem(names=[\"A\", \"B\"]) # NOTE: Diffusion not applicable (just 1 bin)\n", "\n", "\n", "\n", "# Reaction 2A <-> 3B , with 1st-order kinetics in both directions\n", "chem_data.add_reaction(reactants=[(2,\"A\")], products=[(3,\"B\")], forward_rate=5., reverse_rate=2.)\n", "\n", "bio = BioSim1D(n_bins=1, chem_data=chem_data)\n", "\n", "bio.set_uniform_concentration(species_index=0, conc=10.)\n", "bio.set_uniform_concentration(species_index=1, conc=50.)\n", "\n", "bio.describe_state()" ] }, { "cell_type": "code", "execution_count": 5, "id": "50961a8b-29af-4001-8d46-2a57ed7ccb0d", "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", "
SYSTEM TIMEABcaption
0010.050.0Initial state
\n", "
" ], "text/plain": [ " SYSTEM TIME A B caption\n", "0 0 10.0 50.0 Initial state" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Save the state of the concentrations of all species at bin 0\n", "bio.add_snapshot(bio.bin_snapshot(bin_address = 0), caption=\"Initial state\")\n", "bio.get_history()" ] }, { "cell_type": "code", "execution_count": 6, "id": "0506f3fa-67d8-4aaf-986b-103f955336bb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of reactions: 1 (at temp. 25 C)\n", "0: 2 A <-> 3 B (kF = 5 / kR = 2 / Delta_G = -2,271.45 / K = 2.5) | 1st order in all reactants & products\n" ] } ], "source": [ "chem_data.describe_reactions()" ] }, { "cell_type": "code", "execution_count": 7, "id": "feae8232-392a-44fd-a9cf-0fb426258fee", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[GRAPHIC ELEMENT SENT TO LOG FILE `reaction_3.log.htm`]\n" ] } ], "source": [ "# Send the plot to the HTML log file\n", "graph_data = chem_data.prepare_graph_network()\n", "GraphicLog.export_plot(graph_data, \"vue_cytoscape_1\")" ] }, { "cell_type": "markdown", "id": "ce4ebe89-8187-4c6f-a526-5609937ac65e", "metadata": { "tags": [] }, "source": [ "### First step" ] }, { "cell_type": "code", "execution_count": 8, "id": "430626a5-2e29-4738-944f-6233edd0e7c7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0.05:\n", "1 bins and 2 species:\n", " Species 0 (A). Diff rate: None. Conc: [15.]\n", " Species 1 (B). Diff rate: None. Conc: [42.5]\n" ] } ], "source": [ "# First step\n", "bio.react(time_step=0.05, n_steps=1)\n", "bio.describe_state()" ] }, { "cell_type": "markdown", "id": "27067455-0efd-45d3-abd8-9b66b6f48097", "metadata": {}, "source": [ "_Early in the reaction :_\n", "[A] = 15. [B] = 42.5\n", "\n", "We're taking a smaller first step than in experimetn \"reaction_2\", to avoid over-shooting the equilibrium value with too large a step!" ] }, { "cell_type": "code", "execution_count": 9, "id": "63f11bce-17f0-4757-98a3-a40e7621084f", "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", "
SYSTEM TIMEABcaption
00.0010.050.0Initial state
10.0515.042.5
\n", "
" ], "text/plain": [ " SYSTEM TIME A B caption\n", "0 0.00 10.0 50.0 Initial state\n", "1 0.05 15.0 42.5 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Save the state of the concentrations of all species at bin 0\n", "bio.add_snapshot(bio.bin_snapshot(bin_address = 0))\n", "bio.get_history()" ] }, { "cell_type": "markdown", "id": "b12d38ef-c936-47b0-a1de-232fc9d521b7", "metadata": {}, "source": [ "### Numerous more steps" ] }, { "cell_type": "code", "execution_count": 10, "id": "f714a848-01a0-4343-bfbb-89d946a7e343", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 10.05:\n", "1 bins and 2 species:\n", " Species 0 (A). Diff rate: None. Conc: [16.25]\n", " Species 1 (B). Diff rate: None. Conc: [40.625]\n" ] } ], "source": [ "# Numerous more steps\n", "bio.react(time_step=0.1, n_steps=100, snapshots={\"sample_bin\": 0})\n", "\n", "bio.describe_state()" ] }, { "cell_type": "markdown", "id": "ff1860cd-a3c7-47a5-9b9f-3c04560962fa", "metadata": { "tags": [] }, "source": [ "### Equilibrium" ] }, { "cell_type": "markdown", "id": "20ce715e-e24a-4ec3-a93d-d3eb5858aef5", "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: [A] = 16.25 , [B] = 40.625" ] }, { "cell_type": "code", "execution_count": 11, "id": "796bef2e-8a11-4aff-8ce5-0b9bb5f72680", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 A <-> 3 B\n", "Final concentrations: [B] = 40.63 ; [A] = 16.25\n", "1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.5\n", " Formula used: [B] / [A]\n", "2. Ratio of forward/reverse reaction rates: 2.5\n", "Discrepancy between the two values: 1.776e-14 %\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": 12, "id": "7527ea21-fd7d-4514-ab49-cc6c16482c10", "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", "
SYSTEM TIMEABcaption
00.0010.0050.000Initial state
10.0515.0042.500
20.1517.0039.500
30.2515.8041.300
40.3516.5240.220
...............
979.6516.2540.625
989.7516.2540.625
999.8516.2540.625
1009.9516.2540.625
10110.0516.2540.625
\n", "

102 rows × 4 columns

\n", "
" ], "text/plain": [ " SYSTEM TIME A B caption\n", "0 0.00 10.00 50.000 Initial state\n", "1 0.05 15.00 42.500 \n", "2 0.15 17.00 39.500 \n", "3 0.25 15.80 41.300 \n", "4 0.35 16.52 40.220 \n", ".. ... ... ... ...\n", "97 9.65 16.25 40.625 \n", "98 9.75 16.25 40.625 \n", "99 9.85 16.25 40.625 \n", "100 9.95 16.25 40.625 \n", "101 10.05 16.25 40.625 \n", "\n", "[102 rows x 4 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bio.get_history()" ] }, { "cell_type": "markdown", "id": "f2e3dc99-8b9d-4dcd-a2e3-ad099efbcbf4", "metadata": { "tags": [] }, "source": [ "# Plots of changes of concentration with time" ] }, { "cell_type": "code", "execution_count": 13, "id": "c206e345-03c3-4c13-b1f3-d1d21d6bf100", "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" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.05, 0.15000000000000002, 0.25, 0.35, 0.44999999999999996, 0.5499999999999999, 0.6499999999999999, 0.7499999999999999, 0.8499999999999999, 0.9499999999999998, 1.0499999999999998, 1.15, 1.25, 1.35, 1.4500000000000002, 1.5500000000000003, 1.6500000000000004, 1.7500000000000004, 1.8500000000000005, 1.9500000000000006, 2.0500000000000007, 2.150000000000001, 2.250000000000001, 2.350000000000001, 2.450000000000001, 2.550000000000001, 2.6500000000000012, 2.7500000000000013, 2.8500000000000014, 2.9500000000000015, 3.0500000000000016, 3.1500000000000017, 3.2500000000000018, 3.350000000000002, 3.450000000000002, 3.550000000000002, 3.650000000000002, 3.750000000000002, 3.8500000000000023, 3.9500000000000024, 4.0500000000000025, 4.150000000000002, 4.250000000000002, 4.350000000000001, 4.450000000000001, 4.550000000000001, 4.65, 4.75, 4.85, 4.949999999999999, 5.049999999999999, 5.149999999999999, 5.249999999999998, 5.349999999999998, 5.4499999999999975, 5.549999999999997, 5.649999999999997, 5.7499999999999964, 5.849999999999996, 5.949999999999996, 6.049999999999995, 6.149999999999995, 6.249999999999995, 6.349999999999994, 6.449999999999994, 6.549999999999994, 6.649999999999993, 6.749999999999993, 6.8499999999999925, 6.949999999999992, 7.049999999999992, 7.1499999999999915, 7.249999999999991, 7.349999999999991, 7.44999999999999, 7.54999999999999, 7.64999999999999, 7.749999999999989, 7.849999999999989, 7.949999999999989, 8.049999999999988, 8.149999999999988, 8.249999999999988, 8.349999999999987, 8.449999999999987, 8.549999999999986, 8.649999999999986, 8.749999999999986, 8.849999999999985, 8.949999999999985, 9.049999999999985, 9.149999999999984, 9.249999999999984, 9.349999999999984, 9.449999999999983, 9.549999999999983, 9.649999999999983, 9.749999999999982, 9.849999999999982, 9.949999999999982, 10.049999999999981 ], "xaxis": "x", "y": [ 10, 15, 17, 15.8, 16.52, 16.088, 16.3472, 16.191679999999998, 16.284992000000003, 16.2290048, 16.262597120000002, 16.242441728, 16.2545349632, 16.24727902208, 16.251632586752002, 16.249020447948798, 16.250587731230723, 16.24964736126157, 16.25021158324306, 16.249873050054166, 16.250076169967503, 16.2499542980195, 16.2500274211883, 16.249983547287023, 16.250009871627785, 16.24999407702333, 16.250003553786005, 16.2499978677284, 16.250001279362962, 16.249999232382226, 16.250000460570668, 16.2499997236576, 16.250000165805442, 16.249999900516734, 16.25000005968996, 16.249999964186024, 16.250000021488386, 16.249999987106968, 16.25000000773582, 16.24999999535851, 16.250000002784898, 16.249999998329063, 16.250000001002565, 16.249999999398465, 16.250000000360924, 16.249999999783448, 16.250000000129933, 16.249999999922046, 16.25000000004678, 16.249999999971937, 16.250000000016843, 16.2499999999899, 16.250000000006064, 16.249999999996366, 16.250000000002185, 16.249999999998693, 16.25000000000079, 16.24999999999953, 16.250000000000288, 16.249999999999833, 16.250000000000107, 16.24999999999994, 16.25000000000004, 16.24999999999998, 16.250000000000018, 16.249999999999996, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004, 16.250000000000007, 16.250000000000004 ], "yaxis": "y" }, { "hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "B", "line": { "color": "darkorange", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "B", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.05, 0.15000000000000002, 0.25, 0.35, 0.44999999999999996, 0.5499999999999999, 0.6499999999999999, 0.7499999999999999, 0.8499999999999999, 0.9499999999999998, 1.0499999999999998, 1.15, 1.25, 1.35, 1.4500000000000002, 1.5500000000000003, 1.6500000000000004, 1.7500000000000004, 1.8500000000000005, 1.9500000000000006, 2.0500000000000007, 2.150000000000001, 2.250000000000001, 2.350000000000001, 2.450000000000001, 2.550000000000001, 2.6500000000000012, 2.7500000000000013, 2.8500000000000014, 2.9500000000000015, 3.0500000000000016, 3.1500000000000017, 3.2500000000000018, 3.350000000000002, 3.450000000000002, 3.550000000000002, 3.650000000000002, 3.750000000000002, 3.8500000000000023, 3.9500000000000024, 4.0500000000000025, 4.150000000000002, 4.250000000000002, 4.350000000000001, 4.450000000000001, 4.550000000000001, 4.65, 4.75, 4.85, 4.949999999999999, 5.049999999999999, 5.149999999999999, 5.249999999999998, 5.349999999999998, 5.4499999999999975, 5.549999999999997, 5.649999999999997, 5.7499999999999964, 5.849999999999996, 5.949999999999996, 6.049999999999995, 6.149999999999995, 6.249999999999995, 6.349999999999994, 6.449999999999994, 6.549999999999994, 6.649999999999993, 6.749999999999993, 6.8499999999999925, 6.949999999999992, 7.049999999999992, 7.1499999999999915, 7.249999999999991, 7.349999999999991, 7.44999999999999, 7.54999999999999, 7.64999999999999, 7.749999999999989, 7.849999999999989, 7.949999999999989, 8.049999999999988, 8.149999999999988, 8.249999999999988, 8.349999999999987, 8.449999999999987, 8.549999999999986, 8.649999999999986, 8.749999999999986, 8.849999999999985, 8.949999999999985, 9.049999999999985, 9.149999999999984, 9.249999999999984, 9.349999999999984, 9.449999999999983, 9.549999999999983, 9.649999999999983, 9.749999999999982, 9.849999999999982, 9.949999999999982, 10.049999999999981 ], "xaxis": "x", "y": [ 50, 42.5, 39.5, 41.3, 40.22, 40.867999999999995, 40.4792, 40.71248, 40.572511999999996, 40.6564928, 40.60610432, 40.636337408, 40.6181975552, 40.62908146688, 40.622551119872, 40.62646932807681, 40.62411840315392, 40.62552895810765, 40.624682625135414, 40.625190424918756, 40.62488574504875, 40.62506855297075, 40.624958868217554, 40.62502467906947, 40.62498519255833, 40.62500888446501, 40.624994669321, 40.625003198407406, 40.624998080955564, 40.625001151426666, 40.624999309144, 40.62500041451361, 40.62499975129184, 40.6250001492249, 40.624999910465064, 40.62500005372097, 40.62499996776742, 40.62500001933955, 40.624999988396276, 40.62500000696224, 40.62499999582266, 40.62500000250641, 40.62499999849616, 40.62500000090231, 40.62499999945862, 40.62500000032484, 40.62499999980511, 40.62500000011694, 40.62499999992984, 40.62500000004211, 40.62499999997475, 40.62500000001516, 40.62499999999091, 40.625000000005464, 40.62499999999673, 40.62500000000197, 40.62499999999883, 40.62500000000072, 40.62499999999958, 40.62500000000026, 40.62499999999985, 40.6250000000001, 40.62499999999995, 40.62500000000004, 40.624999999999986, 40.62500000000002, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014, 40.62500000000001, 40.625000000000014 ], "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" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 10.049999999999981 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ 7.777777777777778, 52.22222222222222 ], "title": { "text": "concentration" }, "type": "linear" } } }, "image/png": "iVBORw0KGgoAAAANSUhEUgAABbMAAAFoCAYAAABtzWbpAAAAAXNSR0IArs4c6QAAIABJREFUeF7t3Qu8XWV5J/7n5EYChBBAbsqddgDFMqVIOlXKSMdqKNXSgeJoR4tNM9D5twITJoFSyrSQTDJcpo4waWqk0zLS2DI61KitKIOdEaEolipYBaTYgAgJIZD75f9ZG/bpOTv7nLP3Pmvt/b57f/fn4yfknLWe9bzfZ22T/LLy7qE9e/bsCS8CBAgQIECAAAECBAgQIECAAAECBAgQIJCwwJAwO+HpaI0AAQIECBAgQIAAAQIECBAgQIAAAQIEagLCbDcCAQIECBAgQIAAAQIECBAgQIAAAQIECCQvIMxOfkQaJECAAAECBAgQIECAAAECBAgQIECAAAFhtnuAAAECBAgQIECAAAECBAgQIECAAAECBJIXEGYnPyINEiBAgAABAgQIECBAgAABAgQIECBAgIAw2z1AgAABAgQIECBAgAABAgQIECBAgAABAskLCLOTH5EGCRAgQIAAAQIECBAgQIAAAQIECBAgQECY7R4gQIAAAQIECBAgQIAAAQIECBAgQIAAgeQFhNnJj0iDBAgQIECAAAECBAgQIECAAAECBAgQICDMdg8QIECAAAECBAgQIECAAAECBAgQIECAQPICwuzkR6RBAgQIECBAgAABAgQIECBAgAABAgQIEBBmuwcIECBAgAABAgQIECBAgAABAgQIECBAIHkBYXbyI9IgAQIECBAgQIAAAQIECBAgQIAAAQIECAiz3QMECBAgQIAAAQIECBAgQIAAAQIECBAgkLyAMDv5EWmQAAECBAgQIECAAAECBAgQIECAAAECBITZ7gECBAgQIECAAAECBAgQIECAAAECBAgQSF5AmJ38iDRIgAABAgQIECBAgAABAgQIECBAgAABAsJs9wABAgQIECBAgAABAgQIECBAgAABAgQIJC8gzE5+RBokQIAAAQIECBAgQIAAAQIECBAgQIAAAWG2e4AAAQIECBAgQIAAAQIECBAgQIAAAQIEkhcQZic/Ig0SIECAAAECBAgQIECAAAECBAgQIECAgDDbPUCAAAECBAgQIECAAAECBAgQIECAAAECyQsIs5MfkQYJECBAgAABAgQIECBAgAABAgQIECBAQJjtHiBAgAABAgQIECBAgAABAgQIECBAgACB5AWE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N9tGY+ST1CO3nGjWe52kCKGL1/nzz9or0Cy+3moQXkWYXQ9Z137xq3t9SGZ9D/DimGtXrI5/WPfc8AdujrVlTKvzaue6I++HZqbtPJk93rYpE20r85bTThr+C5j6NR959IkYeR+0uyd3479UqPc30rpZED7SYaJ/odDKh2228fZ1KAECBAgQIECAAAECBAgQIECAQOYCwuw2BzjWPtONAXc74WjjXsHFPsFvO/PNsWTpqr2C2lb24S6W1NhnEYwvXbIgbly5JkY+mT0yXLxm+epRGiM/jK/Zulv9sL6qwux6oD6y72Y91berqC+u2T7M7cyr1es222N8ZH/thNnFNUcG0cXP6+sYbw/rxnOK69+wZEFctXTVXvdB431Y3z5mPJuR9s0+HLQd18Y5Nf5lTptvVYcTIECAAAECBAgQIECAAAECBAj0mYAwu88GOt5y6k/fFqH2GaedNEArt1QCBAgQIECAAAECBAgQIECAAAECBHIXEGbnPsEx+i+eci2e7h4ZWhdfq2/BMXLv6z4lsCwCBAgQIECAAAECBAgQIECAAAECBPpIQJjdR8McuZTGLRuK7zXbXqNPl29ZBAgQIECAAAECBAgQIECAAAECBAj0mYAwu88GajkECBAgQIAAAQIECBAgQIAAAQIECBDoRwFhdj9O1ZoIECBAgAABAgQIECBAgAABAgQIECDQZwLC7D4bqOUQIECAAAECBAgQIECAAAECBAgQIECgHwWE2f04VWsiQIAAAQIECBAgQIAAAQIECBAgQIBAnwkIs/tsoJZDgAABAgQIECBAgAABAgQIECBAgACBfhQQZvfjVK2JAAECBAgQIECAAAECBAgQIECAAAECfSYgzO6zgVoOAQIECBAgQIAAAQIECBAgQIAAAQIE+lFAmN2PU7UmAgQIECBAgAABAgQIECBAgAABAgQI9JmAMLvPBmo5BAgQIECAAAECBAgQIECAAAECBAgQ6EcBYXY/TtWaCBAgQIAAAQIECBAgQIAAAQIECBAg0GcCwuw+G6jlECBAgAABAgQIECBAgAABAgQIECBAoB8FhNn9OFVrIkCAAAECBAgQIECAAAECBAgQIECAQJ8JCLP7bKCWQ4AAAQIECBAgQIAAAQIECBAgQIAAgX4UEGb341StiQABAgQIECBAgAABAgQIECBAgAABAn0mIMzus4FaDgECBAgQIECAAAECBAgQIECAAAECBPpRQJjdj1O1JgIECBAgQIAAAQIECBAgQIAAAQIECPSZgDC7zwZqOQQIECBAgAABAgQIECBAgAABAgQIEOhHAWF2P07VmggQIECAAAECBAgQIECAAAECBAgQINBnAsLsPhuo5RAgQIAAAQIECBAgQIAAAQIECBAgQKAfBYTZ/ThVayJAgAABAgQIECBAgAABAgQIECBAgECfCQiz+2yglkOAAAECBAgQIECAAAECBAgQIECAAIF+FBBm9+NUrYkAAQIECBAgQIAAAQIECBAgQIAAAQJ9JiDM7rOBWg4BAgQIECBAgAABAgQIECBAgAABAgT6UUCY3Y9TtSYCBAgQIECAAAECBAgQIECAAAECBAj0mYAwu88GajkECBAgQIAAAQIECBAgQIAAAQIECBDoRwFhdj9O1ZoIECBAgAABAgQIECBAgAABAgQIECDQZwLC7D4bqOUQIECAAAECBAgQIECAAAECBAgQIECgHwWE2f04VWsiQIAAAQIECBAgQIAAAQIECBAgQIBAnwkIs/tsoJZDgAABAgQIECBAgAABAgQIECBAgACBfhQQZvfjVK2JAAECBAgQIECAAAECBAgQIECAAAECfSYgzO6zgVoOAQIECBAgQIAAAQIECBAgQIAAAQIE+lFAmN2PU7UmAgQIECBAgAABAgQIECBAgAABAgQI9JmAMLvPBmo5BAgQIECAAAECBAgQIECAAAECBAgQ6EcBYXY/TtWaCBAgQIAAAQIECBAgQIAAAQIECBAg0GcCwuw+G6jlECBAgAABAgQIECBAgAABAgQIECBAoB8FhNn9OFVrIkCAAAECBAgQIECAAAECBAgQIECAQJ8JCLP7bKCWQ4AAAQIECBAgQIAAAQIECBAgQIAAgX4UEGb341StiQABAgQIECBAgAABAgQIECBAgAABAn0mIMzus4FaDgECBAgQIECAAAECBAgQIECAAAECBPpRQJjdj1O1JgIECBAgQIAAAQIECBAgQIAAAQIECPSZgDC7zwZqOQQIECBAgAABAgQIECBAgAABAgQIEOhHAWF2P07VmggQIECAAAECBAgQIECAAAECBAgQINBnAsLsPhuo5RAgQIAAAQIECBAgQIAAAQIECBAgQKAfBYTZ/ThVayJAgAABAgQIECBAgAABAgQIECBAgECfCQiz+2yglkOA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TIAAAQIECBDogUA9iB556Wb7ZRffH2+bkXbqTBRmt/oBkMWe2Y2vMsLsen+PPPpErXzx9Pptyy6rPfl908o1ta8V24o0vsYKs30AZA9ubJckQIAAAQIECBDomoAwu2vULkSAAAECBAgQIECAAAECBAgQIECAAAECnQoIszuVcx4BAgQIECBAgAABAgQIECBAgAABAgQIdE1AmN01ahciQIAAAQIECBAgQIAAAQIECBAgQIAAgU4FhNmdyjmPAAECBAgQIECAAAECBAgQIECAAAECBLomIMzuGrULESBAgAABAgQIECBAgAABAgQIECBAgECnAsLsTuWcR4AAAQIECBAgQIAAAQIECBAgQIAAAQJdExBmd43ahQgQIECAAAECBAgQIECAAAECBAgQIECgUwFhdqdyziNAgAABAgQIECBAgAABAgQIECBAgACBrgkIs7tG7UIECBAgQIAAAQIECBAgacyjYwAAA6NJREFUQIAAAQIECBAg0KmAMLtTOecRIECAAAECBAgQIECAAAECBAgQIECAQNcEhNldo3YhAgQIECBAgAABAgQIECBAgAABAgQIEOhUQJjdqZzzCBAgQIAAAQIECBAgQIAAAQIECBAgQKBrAsLsrlG7EAECBAgQIECAAAECBAgQIECAAAECBAh0KiDM7lTOeQQIECBAgAABAgQIECBAgAABAgQIECDQNQFhdteoXYgAAQIECBAgQIAAAQIECBAgQIAAAQIEOhUQZncq5zwCBAgQIECAAAECBAgQIECAAAECBAgQ6JqAMLtr1C5EgAABAgQIECBAgAABAgQIECBAgAABAp0KCLM7lXMeAQIECBAgQIAAAQIECBAgQIAAAQIECHRNQJjdNWoXIkCAAAECBAgQIECAAAECBAgQIECAAIFOBYTZnco5jwABAgQIECBAgAABAgQIECBAgAABAgS6JiDM7hq1CxEgQIAAAQIECBAgQIAAAQIECBAgQIBApwLC7E7lnEeAAAECBAgQIECAAAECBAgQIECAAAECXRMQZneN2oUIECBAgAABAgQIECBAgAABAgQIECBAoFMBYXancs4jQIAAAQIECBAgQIAAAQIECBAgQIAAga4JCLO7Ru1CBAgQIECAAAECBAgQIECAAAECBAgQINCpgDC7UznnESBAgAABAgQIECBAgAABAgQIECBAgEDXBITZXaN2IQIECBAgQIAAAQIECBAgQIAAAQIECBDoVECY3amc8wgQIECAAAECBAgQIECAAAECBAgQIECgawLC7K5RuxABAgQIECBAgAABAgQIECBAgAABAgQIdCogzO5UznkECBAgQIAAAQIECBAgQIAAAQIECBAg0DUBYXbXqF2IAAECBAgQIECAAAECBAgQIECAAAECBDoVEGZ3Kuc8AgQIECBAgAABAgQIECBAgAABAgQIEOiagDC7a9QuRIAAAQIECBAgQIAAAQIECBAgQIAAAQKdCgizO5VzHgECBAgQIECAAAECBAgQIECAAAECBAh0TUCY3TVqFyJAgAABAgQIECBAgAABAgQIECBAgACBTgWE2Z3KOY8AAQIECBAgQIAAAQIECBAgQIAAAQIEuiYgzO4atQsRIECAAAECBAgQIECAAAECBAgQIECAQKcCwuxO5ZxHgAABAgQIECBAgAABAgQIECBAgAABAl0TEGZ3jdqFCBAgQIAAAQIECBAgQIAAAQIECBAgQKBTgf8fD0ROipbI4HIAAAAASUVORK5CYII=", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = px.line(data_frame=bio.get_history(), x=\"SYSTEM TIME\", y=[\"A\", \"B\"], \n", " title=\"Changes in concentrations\",\n", " color_discrete_sequence = ['navy', 'darkorange'],\n", " labels={\"value\":\"concentration\", \"variable\":\"Chemical\"})\n", "fig.show()" ] }, { "cell_type": "markdown", "id": "ca41b04c-8626-45b1-b83d-79a97dd9a3cd", "metadata": {}, "source": [ "### Notice the *early overshoots* (the time step is too large early in the simulation!)\n", "Variable, adaptive time steps are explored at length in the _\"reactions_single_compartment\"_ experiments" ] }, { "cell_type": "code", "execution_count": null, "id": "243badde", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }