{ "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: June 23, 2024 (using v. 1.0 beta34.1)" ] }, { "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 life123 import ChemData as chem\n", "from life123 import BioSim1D\n", "\n", "import plotly.express as px\n", "from life123 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_2\"],\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\",1)], products=[(3,\"B\",1)], 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.4 / K = 2.5) | 1st order in all reactants & products\n", "Set of chemicals involved in the above reactions: {'B', 'A'}\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", "chem_data.plot_reaction_network(\"vue_cytoscape_2\")" ] }, { "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: [A] = 16.25 ; [B] = 40.63\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": "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gAABAgQIECBAgAABAgRSCQhlU0mqQ4AAAQIECBAgQIAAAQIECBAgQIAAgQ4EhLIdILmEAAECBAgQIECAAAECBAgQIECAAAECqQSEsqkk1SFAgAABAgQIECBAgAABAgQIECBAgEAHAkLZDpBcQoAAAQIECBAgQIAAAQIECBAgQIAAgVQCQtlUkuoQIECAAAECBAgQIECAAAECBAgQIECgAwGhbAdILiFAgAABAgQIECBAgAABAgQIECBAgEAqAaFsKkl1CBAgQIAAAQIECBAgQIAAAQIECBAg0IGAULYDJJcQIECAAAECBAgQIECAAAECBAgQIEAglYBQNpWkOgQIECBAgAABAgQIECBAgAABAgQIEOhAQCjbAZJLCBAgQIAAAQIECBAgQIAAAQIECBAgkEpAKJtKUh0CBAgQIECAAAECBAgQIECAAAECBAh0ICCU7QDJJQQIECBAgAABAgQIECBAgAABAgQIEEglIJRNJakOAQIECBAgQIAAAQIECBAgQIAAAQIEOhAQynaA5BICBAgQIECAAAECBAgQIECAAAECBAikEhDKppJUhwABAgQIECBAgAABAgQIECBAgAABAh0ICGU7QHIJAQIECBAgQIAAAQIECBAgQIAAAQIEUgkIZVNJqkOAAAECBAgQIECAAAECBAgQIECAAIEOBISyHSC5hAABAgQIECBAgAABAgQIECBAgAABAqkEhLKpJNUhQIAAAQIECBAgQIAAAQIECBAgQIBABwJC2Q6QXEKAAAECBAgQIECAAAECBAgQIECAAIFUAkLZVJLqECBAgAABAgQIECBAgAABAgQIECBAoAMBoWwHSC4hQIAAAQIECBAgQIAAAQIECBAgQIBAKgGhbCpJdQgQIECAAAECBAgQIECAAAECBAgQINCBgFC2AySXECBAgAABAgQIECBAgAABAgQIECBAIJWAUDaVpDoECBAgQIAAAQIECBAgQIAAAQIECBDoQEAo2wGSSwgQIECAAAECBAgQIECAAAECBAgQIJBKQCibSlIdAgQIECBAgAABAgQIECBAgAABAgQIdCAglO0AySUECBAgQIAAAQIECBAgQIAAAQIECBBIJSCUTSWpDgECBAgQIECAAAECBAgQIECAAAECBDoQEMp2gOQSAgQIECBAgAABAgQIECBAgAABAgQIpBIQyqaSVIcAAQIECBAgQIAAAQIECBAgQIAAAQIdCAhlO0ByCQECBAgQIECAAAECBAgQIECAAAECBFIJ/F+WeSFsqo1DFQAAAABJRU5ErkJggg==", "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 }