{ "cells": [ { "cell_type": "markdown", "id": "3bbe8002-bdf3-490c-bde0-80dd3713a3d0", "metadata": {}, "source": [ "## Reversible Synthesis elementary reaction `A + B <-> C`\n", "#### taken to equilibrium.\n", "#### Comparison of 2 approximate solutions, and the exact solutions " ] }, { "cell_type": "markdown", "id": "1b7d393d-a9b5-4437-80ae-c2b3effd9ca8", "metadata": {}, "source": [ "### TAGS : \"uniform compartment\", \"numerical\"" ] }, { "cell_type": "code", "execution_count": 1, "id": "5dafa9a4-85de-49a5-925d-e268ff1402a1", "metadata": {}, "outputs": [], "source": [ "LAST_REVISED = \"Jan. 4, 2026\"\n", "LIFE123_VERSION = \"1.0.0rc7\" # Library version this experiment is based on" ] }, { "cell_type": "code", "execution_count": 2, "id": "82191b23-e6f5-4638-a26d-3716fc728055", "metadata": {}, "outputs": [], "source": [ "#import set_path # Using MyBinder? Uncomment this before running the next cell!" ] }, { "cell_type": "code", "execution_count": 3, "id": "4bbaa8f3", "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", "import pandas as pd\n", "from life123 import check_version, UniformCompartment,PlotlyHelper" ] }, { "cell_type": "code", "execution_count": 4, "id": "4f91f11c-caf8-4ce6-a2c4-dc2a7cab7396", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "OK\n" ] } ], "source": [ "check_version(LIFE123_VERSION)" ] }, { "cell_type": "code", "execution_count": null, "id": "22559b04-73d8-4bd2-8c8d-c95dbdb0e862", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "3db339d2-4ee0-46b8-a596-419a2b075cc2", "metadata": {}, "source": [ "# 1. Run a simulation with low accuracy" ] }, { "cell_type": "markdown", "id": "9329208b-070f-4902-8f37-0f11ddf75ed6", "metadata": {}, "source": [ "### Initialize the System\n", "Specify the chemicals, the reactions, and the initial concentrations" ] }, { "cell_type": "code", "execution_count": 5, "id": "e328c104-126d-400b-89fe-c4bbe1dc2212", "metadata": {}, "outputs": [], "source": [ "# Instantiate the simulator and specify the chemicals\n", "# Here we use the \"fast\" preset for the variable steps, which leads to fewer steps, but generally less-accurate results\n", "uc_fast = UniformCompartment(preset=\"fast\") " ] }, { "cell_type": "code", "execution_count": 6, "id": "1521d60a-b189-40d1-be43-013a6f5ac510", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "add_reaction(): detected reaction type `ReactionSynthesis`\n", "Number of reactions: 1\n", "0: A + B <-> C Elementary Synthesis reaction (kF = 5 / kR = 2 / delta_G = -2,271.4 / K = 2.5 / Temp = 25 C)\n", "Chemicals involved in the above reactions: ['A', 'B', 'C']\n" ] } ], "source": [ "# Elementary reaction A + B <-> C\n", "uc_fast.add_reaction(reactants=[\"A\" , \"B\"], products=\"C\", kF=5., kR=2.)\n", "\n", "uc_fast.describe_reactions()" ] }, { "cell_type": "code", "execution_count": 7, "id": "ae304704-c8d9-4cef-9e0b-2587bb3909ef", "metadata": {}, "outputs": [], "source": [ "# Set the initial concentrations of all the chemicals\n", "uc_fast.set_conc({\"A\": 10., \"B\": 50., \"C\": 20.})" ] }, { "cell_type": "code", "execution_count": null, "id": "42f757ce-98bb-4d3f-871d-78d059cba2a9", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "fc516ca2-e62d-4784-b826-5372ff7f4c75", "metadata": { "tags": [] }, "source": [ "### Run the reaction" ] }, { "cell_type": "code", "execution_count": 8, "id": "2502cd11-0df9-4303-8895-98401a1df7b8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "23 total variable step(s) taken in 0.046 sec\n", "Number of step re-do's because of elective soft aborts: 3\n", "Norm usage: {'norm_A': 13, 'norm_B': 9, 'norm_C': 9, 'norm_D': 9}\n", "System Time is now: 0.0674\n" ] } ], "source": [ "uc_fast.single_compartment_react(initial_step=0.004, duration=0.06, variable_steps=True)" ] }, { "cell_type": "code", "execution_count": 9, "id": "80fbaee3-bd6f-4197-9270-23374d46a4a7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABCstepcaption
00.00000010.00000050.00000020.000000Set concentration
10.0008647.87456047.87456022.12544011st reaction step
20.0015556.60226546.60226523.3977352
30.0022465.57126645.57126624.4287343
40.0029384.72759444.72759425.2724064
50.0036294.03174644.03174625.9682545
60.0046663.16530543.16530526.8346956
70.0057022.51265242.51265227.4873487
80.0067392.01589842.01589827.9841028
90.0077761.63484241.63484228.3651589
100.0088131.34080441.34080428.65919610
110.0098501.11288341.11288328.88711711
120.0108860.93559540.93559529.06440512
130.0119230.79732140.79732129.20267913
140.0134780.63521140.63521129.36478914
150.0150340.52583340.52583329.47416715
160.0165890.45180540.45180529.54819516
170.0189220.37649040.37649029.62351017
180.0212540.33739340.33739329.66260718
190.0247540.30687140.30687129.69312919
200.0300020.29396540.29396529.70603520
210.0378760.29543740.29543729.70456321
220.0496850.29408240.29408229.70591822
230.0674000.29696940.29696929.70303123last reaction step
\n", "
" ], "text/plain": [ " SYSTEM TIME A B C step caption\n", "0 0.000000 10.000000 50.000000 20.000000 Set concentration\n", "1 0.000864 7.874560 47.874560 22.125440 1 1st reaction step\n", "2 0.001555 6.602265 46.602265 23.397735 2 \n", "3 0.002246 5.571266 45.571266 24.428734 3 \n", "4 0.002938 4.727594 44.727594 25.272406 4 \n", "5 0.003629 4.031746 44.031746 25.968254 5 \n", "6 0.004666 3.165305 43.165305 26.834695 6 \n", "7 0.005702 2.512652 42.512652 27.487348 7 \n", "8 0.006739 2.015898 42.015898 27.984102 8 \n", "9 0.007776 1.634842 41.634842 28.365158 9 \n", "10 0.008813 1.340804 41.340804 28.659196 10 \n", "11 0.009850 1.112883 41.112883 28.887117 11 \n", "12 0.010886 0.935595 40.935595 29.064405 12 \n", "13 0.011923 0.797321 40.797321 29.202679 13 \n", "14 0.013478 0.635211 40.635211 29.364789 14 \n", "15 0.015034 0.525833 40.525833 29.474167 15 \n", "16 0.016589 0.451805 40.451805 29.548195 16 \n", "17 0.018922 0.376490 40.376490 29.623510 17 \n", "18 0.021254 0.337393 40.337393 29.662607 18 \n", "19 0.024754 0.306871 40.306871 29.693129 19 \n", "20 0.030002 0.293965 40.293965 29.706035 20 \n", "21 0.037876 0.295437 40.295437 29.704563 21 \n", "22 0.049685 0.294082 40.294082 29.705918 22 \n", "23 0.067400 0.296969 40.296969 29.703031 23 last reaction step" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "uc_fast.get_history()" ] }, { "cell_type": "markdown", "id": "6ac3dd4e-9dd0-4d3a-aa83-76102bd79524", "metadata": { "tags": [] }, "source": [ "### Plots changes of concentrations with time" ] }, { "cell_type": "code", "execution_count": 10, "id": "5f73e330-2d43-4cef-b2a0-c6eb379eea2e", "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": "darkturquoise", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0008639999999999999, 0.0015551999999999996, 0.0022463999999999995, 0.0029375999999999994, 0.0036287999999999993, 0.004665599999999999, 0.005702399999999999, 0.006739199999999999, 0.007775999999999999, 0.008812799999999999, 0.009849599999999998, 0.010886399999999997, 0.011923199999999997, 0.013478399999999996, 0.015033599999999996, 0.016588799999999994, 0.018921599999999993, 0.021254399999999993, 0.024753599999999994, 0.03000239999999999, 0.03787559999999999, 0.04968539999999999, 0.06740009999999999 ], "xaxis": "x", "y": [ 10, 7.874560000000001, 6.6022649832669185, 5.571266196412786, 4.727593830730617, 4.031745738170395, 3.165304930294141, 2.512652422560647, 2.0158977994878757, 1.6348420991345631, 1.3408039110369463, 1.1128829584716142, 0.9355954461437876, 0.7973205671737157, 0.6352106326726121, 0.525833400282096, 0.45180455730262453, 0.37648974220125575, 0.3373928293875607, 0.30687098340433216, 0.29396529878725997, 0.295437049136851, 0.294082474812173, 0.29696851083086506 ], "yaxis": "y" }, { "hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "B", "line": { "color": "orange", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "B", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0008639999999999999, 0.0015551999999999996, 0.0022463999999999995, 0.0029375999999999994, 0.0036287999999999993, 0.004665599999999999, 0.005702399999999999, 0.006739199999999999, 0.007775999999999999, 0.008812799999999999, 0.009849599999999998, 0.010886399999999997, 0.011923199999999997, 0.013478399999999996, 0.015033599999999996, 0.016588799999999994, 0.018921599999999993, 0.021254399999999993, 0.024753599999999994, 0.03000239999999999, 0.03787559999999999, 0.04968539999999999, 0.06740009999999999 ], "xaxis": "x", "y": [ 50, 47.87456, 46.60226498326692, 45.571266196412786, 44.72759383073062, 44.0317457381704, 43.16530493029415, 42.512652422560656, 42.01589779948788, 41.634842099134566, 41.34080391103695, 41.112882958471616, 40.935595446143786, 40.79732056717371, 40.63521063267261, 40.525833400282096, 40.45180455730262, 40.37648974220125, 40.337392829387554, 40.30687098340432, 40.29396529878725, 40.295437049136844, 40.294082474812164, 40.29696851083086 ], "yaxis": "y" }, { "hovertemplate": "Chemical=C
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "C", "line": { "color": "green", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "C", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0008639999999999999, 0.0015551999999999996, 0.0022463999999999995, 0.0029375999999999994, 0.0036287999999999993, 0.004665599999999999, 0.005702399999999999, 0.006739199999999999, 0.007775999999999999, 0.008812799999999999, 0.009849599999999998, 0.010886399999999997, 0.011923199999999997, 0.013478399999999996, 0.015033599999999996, 0.016588799999999994, 0.018921599999999993, 0.021254399999999993, 0.024753599999999994, 0.03000239999999999, 0.03787559999999999, 0.04968539999999999, 0.06740009999999999 ], "xaxis": "x", "y": [ 20, 22.12544, 23.397735016733083, 24.428733803587217, 25.272406169269388, 25.96825426182961, 26.834695069705866, 27.48734757743936, 27.98410220051213, 28.36515790086544, 28.659196088963057, 28.887117041528388, 29.064404553856214, 29.202679432826287, 29.36478936732739, 29.474166599717908, 29.54819544269738, 29.62351025779875, 29.662607170612443, 29.69312901659567, 29.70603470121274, 29.70456295086315, 29.70591752518783, 29.70303148916914 ], "yaxis": "y" } ], "layout": { "autosize": true, "legend": { "title": { "text": "Chemical" }, "tracegroupgap": 0 }, "shapes": [ { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0, "x1": 0, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0008639999999999999, "x1": 0.0008639999999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0015551999999999996, "x1": 0.0015551999999999996, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0022463999999999995, "x1": 0.0022463999999999995, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0029375999999999994, "x1": 0.0029375999999999994, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0036287999999999993, "x1": 0.0036287999999999993, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.004665599999999999, "x1": 0.004665599999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.005702399999999999, "x1": 0.005702399999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.006739199999999999, "x1": 0.006739199999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.007775999999999999, "x1": 0.007775999999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.008812799999999999, "x1": 0.008812799999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.009849599999999998, "x1": 0.009849599999999998, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.010886399999999997, "x1": 0.010886399999999997, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.011923199999999997, "x1": 0.011923199999999997, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.013478399999999996, "x1": 0.013478399999999996, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.015033599999999996, "x1": 0.015033599999999996, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.016588799999999994, "x1": 0.016588799999999994, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.018921599999999993, "x1": 0.018921599999999993, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.021254399999999993, "x1": 0.021254399999999993, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.024753599999999994, "x1": 0.024753599999999994, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.03000239999999999, "x1": 0.03000239999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.03787559999999999, "x1": 0.03787559999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.04968539999999999, "x1": 0.04968539999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.06740009999999999, "x1": 0.06740009999999999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" } ], "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 + B <-> C` . Changes in concentrations with time (time steps shown in dashed lines)" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ -5.000007418397625e-05, 0.06745010007418396 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ -2.467481073502337, 52.7614463722896 ], "title": { "text": "Concentration" }, "type": "linear" } } }, "image/png": "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", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "uc_fast.plot_history(show_intervals=True)" ] }, { "cell_type": "code", "execution_count": null, "id": "ffce0ef2-b389-4718-8ef7-6fff9bc002b9", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "6c387b79-b4cf-4be6-85a4-6e535cc3a836", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "77506b0f-29a8-4754-ac71-2410eec4a3d4", "metadata": {}, "source": [ "# 2. Let's now repeat the simulation with the \"slow\" preset, which yields more data points\n", "### and, generally, more accuracy" ] }, { "cell_type": "code", "execution_count": 11, "id": "3bc4c583-70b7-49fd-b7c1-09275750bb19", "metadata": {}, "outputs": [], "source": [ "# Instantiate the simulator and specify the chemicals\n", "uc_slow = UniformCompartment(reactions=uc_fast.get_reactions(), preset=\"slow\")\n", "# Re-use the chemicals and reactions of part 1, but now with the \"slow\" preset" ] }, { "cell_type": "code", "execution_count": 12, "id": "aa1302f6-a60a-4272-9636-2b5530639413", "metadata": {}, "outputs": [], "source": [ "# Set the initial concentrations of all the chemicals\n", "uc_slow.set_conc({\"A\": 10., \"B\": 50., \"C\": 20.})" ] }, { "cell_type": "code", "execution_count": 13, "id": "053e133b-c3c6-4e21-94d5-e81a733b2c01", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "80 total variable step(s) taken in 0.166 sec\n", "Number of step re-do's because of elective soft aborts: 2\n", "Norm usage: {'norm_A': 38, 'norm_B': 36, 'norm_C': 36, 'norm_D': 36}\n", "System Time is now: 0.061008\n" ] } ], "source": [ "uc_slow.single_compartment_react(initial_step=0.004, duration=0.06, variable_steps=True)" ] }, { "cell_type": "markdown", "id": "63bd2edd-abb9-414e-ad46-ed3c0ca16e63", "metadata": {}, "source": [ "### Note that **80 steps** were now used, instead of the earlier 23" ] }, { "cell_type": "code", "execution_count": 14, "id": "00369fbd-12df-464a-b2c9-1f7be6e53850", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABCstepcaption
00.00000010.00000050.00000020.000000Set concentration
10.0001609.60640049.60640020.39360011st reaction step
20.0003369.19422449.19422420.8057762
30.0005308.76445148.76445121.2355493
40.0007438.31840748.31840721.6815934
.....................
760.0453290.29499740.29499729.70500376
770.0487080.29491440.29491429.70508677
780.0524240.29488640.29488629.70511478
790.0565110.29487940.29487929.70512179
800.0610080.29487840.29487829.70512280last reaction step
\n", "

81 rows × 6 columns

\n", "
" ], "text/plain": [ " SYSTEM TIME A B C step caption\n", "0 0.000000 10.000000 50.000000 20.000000 Set concentration\n", "1 0.000160 9.606400 49.606400 20.393600 1 1st reaction step\n", "2 0.000336 9.194224 49.194224 20.805776 2 \n", "3 0.000530 8.764451 48.764451 21.235549 3 \n", "4 0.000743 8.318407 48.318407 21.681593 4 \n", ".. ... ... ... ... ... ...\n", "76 0.045329 0.294997 40.294997 29.705003 76 \n", "77 0.048708 0.294914 40.294914 29.705086 77 \n", "78 0.052424 0.294886 40.294886 29.705114 78 \n", "79 0.056511 0.294879 40.294879 29.705121 79 \n", "80 0.061008 0.294878 40.294878 29.705122 80 last reaction step\n", "\n", "[81 rows x 6 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "uc_slow.get_history()" ] }, { "cell_type": "code", "execution_count": null, "id": "21b752d3-940c-4085-846a-57573a724669", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "3de66610-b963-4ebe-86ac-f32f136bef40", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "c19592e7-2eb5-441a-b5e6-0a67562300e2", "metadata": {}, "source": [ "# 3. And, finally, get the EXACT analytical solution" ] }, { "cell_type": "code", "execution_count": 15, "id": "b0fa0509-6d89-4a38-aa6e-c8e1b7ffa045", "metadata": {}, "outputs": [], "source": [ "# Instantiate the simulator and specify the chemicals\n", "uc_exact = UniformCompartment(preset=\"slow\", reactions=uc_fast.get_reactions(),\n", " exact=True)\n", "# Re-use the chemicals and reactions of part 1; \n", "# the \"slow\" preset doesn't particularly matter now because it's just 1 reaction, and we'll be getting the analytical solutin. \n", "# Note the `exact` flag" ] }, { "cell_type": "code", "execution_count": 16, "id": "3befb0c6-1cda-4e50-8e30-611f88009938", "metadata": {}, "outputs": [], "source": [ "# Set the initial concentrations of all the chemicals\n", "uc_exact.set_conc({\"A\": 10., \"B\": 50., \"C\": 20.}, snapshot=True)" ] }, { "cell_type": "code", "execution_count": 17, "id": "63a4ed27-b3bf-4be8-bcbf-7dfdf0cfa3c0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "79 total variable step(s) taken in 0.156 sec\n", "Number of step re-do's because of elective soft aborts: 2\n", "Norm usage: {'norm_A': 38, 'norm_B': 36, 'norm_C': 36, 'norm_D': 36}\n", "System Time is now: 0.061037\n" ] } ], "source": [ "uc_exact.single_compartment_react(initial_step=0.004, duration=0.06, variable_steps=True)" ] }, { "cell_type": "code", "execution_count": 18, "id": "1d3a0704-8957-4938-a0c7-817494d9f1b6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEABCstepcaption
00.00000010.00000050.00000020.000000Set concentration
10.0001609.61571949.61571920.38428111st reaction step
20.0003369.21364749.21364720.7863532
30.0005308.79475048.79475021.2052503
40.0007438.36031848.36031821.6396824
.....................
750.0453580.29559840.29559829.70440275
760.0487370.29523840.29523829.70476276
770.0524530.29504640.29504629.70495477
780.0565400.29495040.29495029.70505078
790.0610370.29490640.29490629.70509479last reaction step
\n", "

80 rows × 6 columns

\n", "
" ], "text/plain": [ " SYSTEM TIME A B C step caption\n", "0 0.000000 10.000000 50.000000 20.000000 Set concentration\n", "1 0.000160 9.615719 49.615719 20.384281 1 1st reaction step\n", "2 0.000336 9.213647 49.213647 20.786353 2 \n", "3 0.000530 8.794750 48.794750 21.205250 3 \n", "4 0.000743 8.360318 48.360318 21.639682 4 \n", ".. ... ... ... ... ... ...\n", "75 0.045358 0.295598 40.295598 29.704402 75 \n", "76 0.048737 0.295238 40.295238 29.704762 76 \n", "77 0.052453 0.295046 40.295046 29.704954 77 \n", "78 0.056540 0.294950 40.294950 29.705050 78 \n", "79 0.061037 0.294906 40.294906 29.705094 79 last reaction step\n", "\n", "[80 rows x 6 columns]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "uc_exact.get_history() " ] }, { "cell_type": "code", "execution_count": null, "id": "0312ebfa-8e63-4454-9b53-c497c077e055", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "8111731a-6e83-4479-89dd-e52a846e02a4", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "220b3406-61e1-4ed3-9ff5-46bcd753639a", "metadata": {}, "source": [ "# 4. Let's compare plots for the concentration of `C`, as a function of time, from the earlier 3 simulations" ] }, { "cell_type": "code", "execution_count": 19, "id": "d181c8bc-e35e-4358-97cc-3b158ee2a020", "metadata": {}, "outputs": [], "source": [ "p1 = uc_fast.plot_history(chemicals=\"C\", colors=['#F5B914'], title=\"fast (less precise)\", show=False)\n", "p2 = uc_slow.plot_history(chemicals=\"C\", colors=['#CBE504'], title=\"slow (more precise)\", show=False)\n", "p3 = uc_exact.plot_history(chemicals=\"C\", colors=['forestgreen'], title=\"exact\", show=False)" ] }, { "cell_type": "code", "execution_count": 20, "id": "c7cd288b-1052-4fb1-b5b8-7067764f8391", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "fast (less precise)
SYSTEM TIME=%{x}
C=%{y}", "legendgroup": "", "line": { "color": "#F5B914", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "fast (less precise)", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.0008639999999999999, 0.0015551999999999996, 0.0022463999999999995, 0.0029375999999999994, 0.0036287999999999993, 0.004665599999999999, 0.005702399999999999, 0.006739199999999999, 0.007775999999999999, 0.008812799999999999, 0.009849599999999998, 0.010886399999999997, 0.011923199999999997, 0.013478399999999996, 0.015033599999999996, 0.016588799999999994, 0.018921599999999993, 0.021254399999999993, 0.024753599999999994, 0.03000239999999999, 0.03787559999999999, 0.04968539999999999, 0.06740009999999999 ], "xaxis": "x", "y": [ 20, 22.12544, 23.397735016733083, 24.428733803587217, 25.272406169269388, 25.96825426182961, 26.834695069705866, 27.48734757743936, 27.98410220051213, 28.36515790086544, 28.659196088963057, 28.887117041528388, 29.064404553856214, 29.202679432826287, 29.36478936732739, 29.474166599717908, 29.54819544269738, 29.62351025779875, 29.662607170612443, 29.69312901659567, 29.70603470121274, 29.70456295086315, 29.70591752518783, 29.70303148916914 ], "yaxis": "y" }, { "hovertemplate": "slow (more precise)
SYSTEM TIME=%{x}
C=%{y}", "legendgroup": "", "line": { "color": "#CBE504", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "slow (more precise)", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.00016, 0.00033600000000000004, 0.0005296000000000001, 0.0007425600000000002, 0.0009555200000000003, 0.0011684800000000004, 0.0014027360000000006, 0.0016369920000000007, 0.001871248000000001, 0.002105504000000001, 0.002339760000000001, 0.002574016000000001, 0.002808272000000001, 0.003042528000000001, 0.003276784000000001, 0.003511040000000001, 0.003768721600000001, 0.004026403200000001, 0.004284084800000002, 0.004541766400000002, 0.004799448000000002, 0.005057129600000002, 0.005314811200000003, 0.005572492800000003, 0.005830174400000003, 0.0060878560000000035, 0.006371305760000004, 0.006654755520000004, 0.006938205280000004, 0.007221655040000005, 0.007505104800000005, 0.007788554560000005, 0.008072004320000005, 0.008355454080000005, 0.008638903840000005, 0.008950698576000005, 0.009262493312000004, 0.009574288048000004, 0.009886082784000003, 0.010197877520000002, 0.010509672256000002, 0.010852646465600002, 0.011195620675200002, 0.011538594884800002, 0.011881569094400002, 0.012224543304000001, 0.012601814934560002, 0.012979086565120002, 0.013356358195680002, 0.013771356989296003, 0.014186355782912004, 0.014601354576528005, 0.015057853249505605, 0.015514351922483205, 0.016016500462758567, 0.016518649003033927, 0.017071012397336823, 0.01762337579163972, 0.018230975525372905, 0.01889933523247941, 0.019634530910296565, 0.020443246155895437, 0.021332832926054195, 0.02231137837322883, 0.023387778365120928, 0.024571818356202237, 0.025874262346391674, 0.027306950735600057, 0.028882907963729276, 0.03061646091467142, 0.03252336916070778, 0.03462096823134777, 0.036928327209051766, 0.03946642208452616, 0.04225832644754799, 0.045329421246872004, 0.04870762552612842, 0.052423650233310484, 0.05651127741121075, 0.06100766730690105 ], "xaxis": "x", "y": [ 20, 20.3936, 20.805775703244798, 21.235548751748496, 21.681592871320913, 22.100335635004186, 22.493833686134767, 22.900960836068613, 23.2818582098693, 23.638567267404103, 23.97293222793699, 24.28662336455126, 24.581157051025958, 24.857913079403644, 25.118149673861133, 25.36301655212325, 25.59356632562356, 25.832484296432327, 26.056326918821462, 26.266178884024864, 26.4630318991009, 26.64779431494654, 26.821299572543545, 26.98431363436174, 27.13754154135871, 27.281633214172338, 27.417188599014167, 27.55751960820491, 27.688816255735112, 27.811710708713367, 27.92678492995523, 28.034575359956804, 28.135577083053768, 28.230247543603113, 28.319009868537254, 28.402255844665962, 28.488157867148047, 28.568233129687368, 28.642897582970008, 28.712534855430714, 28.777499094496452, 28.838117517808726, 28.900350227896414, 28.958030053496, 29.011501940168678, 29.0610830636544, 29.10706528880962, 29.153982590210155, 29.197170474926015, 29.236932731814342, 29.27720875751137, 29.31398427686326, 29.34756940876596, 29.38131347468918, 29.41184800589546, 29.442246228934884, 29.469473580508957, 29.49630387462533, 29.5200638778668, 29.543212692573473, 29.5654786345939, 29.586591513468495, 29.606294281138492, 29.624356073890986, 29.640585851810744, 29.654845515151756, 29.667061094747478, 29.677230447743945, 29.685425927451732, 29.691790819806155, 29.696528999483565, 29.699888238311456, 29.702138775865496, 29.70354989620817, 29.704368011208, 29.704799787872545, 29.70500296743816, 29.705085790276517, 29.705113817722584, 29.70512116777708, 29.705122479542585 ], "yaxis": "y" }, { "hovertemplate": "exact
SYSTEM TIME=%{x}
C=%{y}", "legendgroup": "", "line": { "color": "forestgreen", "dash": "solid", "shape": "linear" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "exact", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.00016, 0.00033600000000000004, 0.0005296000000000001, 0.0007425600000000002, 0.0009768160000000004, 0.0012110720000000005, 0.0014453280000000007, 0.001679584000000001, 0.001913840000000001, 0.0021480960000000012, 0.002382352000000001, 0.002616608000000001, 0.002850864000000001, 0.0031085456000000014, 0.0033662272000000017, 0.003623908800000002, 0.003881590400000002, 0.004139272000000002, 0.004396953600000002, 0.0046546352000000025, 0.004912316800000003, 0.005169998400000003, 0.005427680000000003, 0.005711129760000004, 0.005994579520000004, 0.006278029280000004, 0.0065614790400000044, 0.006844928800000005, 0.007128378560000005, 0.007411828320000005, 0.007695278080000006, 0.007978727840000005, 0.008290522576000004, 0.008602317312000004, 0.008914112048000003, 0.009225906784000003, 0.009537701520000002, 0.009849496256000002, 0.010161290992000001, 0.010504265201600001, 0.010847239411200001, 0.011190213620800001, 0.0115331878304, 0.01187616204, 0.012253433670560001, 0.012630705301120001, 0.013007976931680001, 0.013385248562240002, 0.013800247355856003, 0.014215246149472003, 0.014630244943088004, 0.015086743616065604, 0.015543242289043205, 0.016045390829318565, 0.016547539369593925, 0.01709990276389682, 0.017652266158199717, 0.018259865891932903, 0.01892822559903941, 0.019663421276856562, 0.020472136522455435, 0.021361723292614192, 0.022340268739788827, 0.023416668731680926, 0.024600708722762234, 0.025903152712951672, 0.027335841102160054, 0.028911798330289274, 0.030645351281231418, 0.03255225952726778, 0.03464985859790777, 0.03695721757561177, 0.03949531245108616, 0.04228721681410799, 0.045358311613432005, 0.048736515892688424, 0.052452540599870486, 0.05654016777777075, 0.06103655767346105 ], "xaxis": "x", "y": [ 20, 20.3842813288264, 20.786352878966483, 21.205249635107318, 21.63968219908422, 22.088017305745097, 22.507774232533986, 22.90116160421252, 23.27017617287952, 23.61662758690457, 23.94215975358567, 24.248269330240188, 24.53632178462637, 24.80756538989699, 25.087880813236357, 25.35062966193069, 25.597079721449447, 25.82838899808402, 26.04561721062936, 26.24973586066169, 26.44163708301792, 26.622141446044694, 26.79200484476059, 26.95192460819325, 27.11711882167631, 27.271849882720673, 27.416844139682183, 27.552770198228632, 27.680244340731363, 27.799835344973246, 27.912068779052767, 28.01743083828923, 28.11637178062159, 28.2182876862952, 28.31345215930104, 28.402338841405935, 28.48538489604565, 28.562994212511526, 28.635540282037052, 28.703368784740178, 28.77291279936792, 28.837529161143472, 28.89758034617705, 28.95340039255119, 29.00529736529046, 29.05819155414292, 29.107030540104372, 29.152133539428895, 29.19379343606505, 29.235962803729933, 29.27461838390009, 29.31005865718876, 29.345653461534354, 29.378015866487715, 29.410235766851226, 29.43926159663033, 29.46788232412438, 29.49340613341576, 29.518308021369503, 29.542317494239413, 29.56516759705177, 29.586605837557347, 29.60640601889839, 29.62438021045304, 29.64038986698357, 29.654354953673586, 29.66625990076092, 29.676155345493953, 29.68415495347357, 29.69042714470619, 29.69518223154209, 29.698656200460235, 29.70109298655367, 29.702727433781554, 29.703771076306705, 29.70440237687402, 29.704762203217662, 29.704954319211367, 29.705049783274845, 29.70509362025988 ], "yaxis": "y" } ], "layout": { "autosize": true, "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": "Comparison of simulation accuracies" }, "xaxis": { "range": [ 0, 0.015 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "autorange": true, "range": [ 19.460775849932624, 30.245258851280113 ], "title": { "text": "[C]" }, "type": "linear" } } }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1MAAAFoCAYAAACymqHbAAAgAElEQVR4XuydCYBcVZX+T629L+ksnY3EEJIACXtAUTQIgqCIiDqBQfjjuAQcUBABZ4aRwUGHRQzOoAguk4FBiAsiOoIoQjSy70lYs+9Jd3rfa/ufe6tepfqlqvud16+rb73+3kxZS997372/8w7vfjn3nhdI8UE4QAAEQAAEQAAEQAAEQAAEQAAERAQCEFMiXigMAiAAAiAAAiAAAiAAAiAAApoAxBQuBBAAARAAARAAARAAARAAARBwQQBiygU0VAEBEAABEAABEAABEAABEAABiClcAyAAAiAAAiAAAiAAAiAAAiDgggDElAtoqAICIAACIAACIAACIAACIAACEFO4BkAABEAABEAABEAABEAABEDABQGIKRfQUAUEQAAEQAAEQAAEQAAEQAAEIKZwDYAACIAACIAACIAACIAACICACwIQUy6goQoIgAAIgAAIgAAIgAAIgAAIQEzhGgABEAABEAABEAABEAABEAABFwQgplxAQxUQAAEQAAEQAAEQAAEQAAEQgJjCNQACIAACIAACIAACIAACIAACLghATLmAhiogAAIgAAIgAAIgAAIgAAIgADGFawAEQAAEQAAEQAAEQAAEQAAEXBCAmHIBDVVAAARAAARAAARAAARAAARAAGIK1wAIgAAIgAAIgAAIgAAIgAAIuCAAMeUCGqqAAAiAAAiAAAiAAAiAAAiAAMQUrgEQAAEQAAEQAAEQAAEQAAEQcEEAYsoFNFQBARAAARAAARAAARAAARAAAYgpXAMgAAIgAAIgAAIgAAIgAAIg4IIAxJQLaKgCAiAAAiAAAiAAAiAAAiAAAhBTuAZAAARAAARAAARAAARAAARAwAUBiCkX0FAFBEAABEAABEAABEAABEAABCCmcA2AAAiAAAiAAAiAAAiAAAiAgAsCEFMuoKEKCIAACIAACIAACIAACIAACEBM4RoAARAAARAAARAAARAAARAAARcEIKZcQEMVEAABEAABEAABEAABEAABEICYwjUAAiAAAiAAAiAAAiAAAiAAAi4IQEy5gIYqIAACIAACIAACIAACIAACIAAxhWsABEAABEAABEAABEAABEAABFwQgJhyAQ1VQAAEQAAEQAAEQAAEQAAEQABiCtcACIAACIAACIAACIAACIAACLgg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U8M942c4pxjqOVPWpNM+dmmbqnzuZH40IlNWn3LHI7GdU7vnChfrnF4+Z8r+jDanYipfv3KfQ2bf+2PZINeW9jL2ZBb5rle3vO2CKtcvFU+Vpj1fpk779erEJwvth8pXN7dfhZLFDHf94+8gAAIgAAIgAAJmEChZMWUGvv29cLKHybQ+oz8gAAIgAAIgAAIgAAIgAALuCUBMuWc3qCbElEcg0QwIgAAIgAAIgAAIgAAIlAgBiCmPDAUx5RFINAMCIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYqpEDIVuggAIgAAIgAAIgAAIgAAImEUAYsose6A3IAACIAACIAACIAACIAACJUIAYooNtXTZDbT2rU1Zk911y1V00glHZL9fef0d9NiqF/T3RQvm0Mq7ri8R86KbIAACIAACIAACIAACIAACo0UAYiojpiyBtPq5NbTsmtvokftuplkzGun+hx6nH97zMK168HvaBkp4LT56AV196XlZm+zc1zta9vFdu+FQgBpqymhvW5/vxjaaA5pSX04tnf0UT6RG8zS+arumIkwUCFBnT8xX4xrNwcA/3dGFf8q5wT/lzEz3z+kTK+SDQg0Q8AEBiKk8Rlx48sVkRafs4skurlR1iCnnnmD6zcD5SIpbEpM1OW9M1uTM4J9yZqoG/FPODf4pZ2a6f0JMyW2KGv4gADFls6MSSzfefm82MrXk3K/QJRedTeefc6ouaUWu1j25IlsTYsq5M5h+M3A+kuKWxGRNzhuTNTkz+KecGcSUO2bwTzk30/0TYkpuU9TwBwGIqYwdLZGkvubumVJRquuuuPAAMWUtA1Tl27oH/HE1FGEUIV52VVkeps7eoZdeBYrQl1I6RXVFhHr64pRMYZmfU7uVRUK6aH8s4bTKuC8XzPhn1zD+Oe5B2QDAP+VXBPxTzqyQf5pyV6ivisoHhRog4AMCEFM2I27dsYfOvODarKByEpnq7o374FIozhACQaJynuT29g89wTXl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", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "PlotlyHelper.combine_plots([p1, p2, p3], title=\"Comparison of simulation accuracies\", xrange=[0, 0.015])" ] }, { "cell_type": "markdown", "id": "a2390325-c71a-4ef1-86cc-de67893e5760", "metadata": {}, "source": [ "## The comparison reveals a gradient \"less precise\" -> \"more precise\" -> \"exact\" solution" ] }, { "cell_type": "code", "execution_count": null, "id": "9d9ca463-5064-469c-be43-008c4b1a671d", "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.11.9" } }, "nbformat": 4, "nbformat_minor": 5 }