{ "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: Dec. 6, 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\",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: {'A', 'B'}\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: [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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", "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 }