{
"cells": [
{
"cell_type": "markdown",
"id": "3bbe8002-bdf3-490c-bde0-80dd3713a3d0",
"metadata": {},
"source": [
"## The reversible Synthesis/Decomposition reaction `A + B <-> C`\n",
"#### with 1st-order kinetics for each species, taken to equilibrium.\n",
"#### Exploration of debugging and diagnostics options\n",
"(Adaptive variable time steps are used)\n",
"\n",
"_See also the experiment \"1D/reactions/reaction_4\"_ "
]
},
{
"cell_type": "markdown",
"id": "1b7d393d-a9b5-4437-80ae-c2b3effd9ca8",
"metadata": {},
"source": [
"### TAGS : \"uniform compartment\", \"under-the-hood\""
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "5dafa9a4-85de-49a5-925d-e268ff1402a1",
"metadata": {},
"outputs": [],
"source": [
"LAST_REVISED = \"Sep. 8, 2024\"\n",
"LIFE123_VERSION = \"1.0.0.beta.38\" # 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!\n",
" # Importing this local file will add the project's home directory to sys.path"
]
},
{
"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",
"from experiments.get_notebook_info import get_notebook_basename\n",
"\n",
"from life123 import check_version, UniformCompartment, GraphicLog"
]
},
{
"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": 5,
"id": "83c3cc5f-de21-4f66-9988-2806fbf0666d",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-> Output will be LOGGED into the file 'react_3_a.log.htm'\n"
]
}
],
"source": [
"# Initialize the HTML logging (for the graphics)\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": null,
"id": "22559b04-73d8-4bd2-8c8d-c95dbdb0e862",
"metadata": {},
"outputs": [],
"source": []
},
{
"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": 6,
"id": "e328c104-126d-400b-89fe-c4bbe1dc2212",
"metadata": {},
"outputs": [],
"source": [
"# Instantiate the simulator and specify the chemicals\n",
"uc = UniformCompartment(preset=\"fast\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "1521d60a-b189-40d1-be43-013a6f5ac510",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 1 (at temp. 25 C)\n",
"0: A + B <-> C (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', 'C'}\n"
]
}
],
"source": [
"# Reaction A + B <-> C , with 1st-order kinetics for each species\n",
"uc.add_reaction(reactants=[\"A\" , \"B\"], products=\"C\",\n",
" forward_rate=5., reverse_rate=2.)\n",
"\n",
"uc.describe_reactions()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "cb582868-431c-4022-aa0e-a2f554f80d6c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[GRAPHIC ELEMENT SENT TO LOG FILE `react_3_a.log.htm`]\n"
]
}
],
"source": [
"# Send a plot of the network of reactions to the HTML log file\n",
"uc.plot_reaction_network(\"vue_cytoscape_2\")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ae304704-c8d9-4cef-9e0b-2587bb3909ef",
"metadata": {},
"outputs": [],
"source": [
"# Set the initial concentrations of all the chemicals\n",
"uc.set_conc({\"A\": 10., \"B\": 50., \"C\": 20.}, snapshot=True)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "a605dacf-2c67-403e-9aa9-5be25fc9f481",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0:\n",
"3 species:\n",
" Species 0 (A). Conc: 10.0\n",
" Species 1 (B). Conc: 50.0\n",
" Species 2 (C). Conc: 20.0\n",
"Set of chemicals involved in reactions: {'A', 'B', 'C'}\n"
]
}
],
"source": [
"uc.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "0ff2c242-a15b-456d-ad56-0ba1041c0b4c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0 | \n",
" 10.0 | \n",
" 50.0 | \n",
" 20.0 | \n",
" Initialized state | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0.0 10.0 50.0 20.0 Initialized state"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"uc.get_history()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "42f757ce-98bb-4d3f-871d-78d059cba2a9",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "1767907f-a74c-484c-a5ef-ef134c96f928",
"metadata": {},
"source": [
"### Sneak preview of eventual equilibrum:\n",
"we can preview the final equilibrium concentrations without actually running the simulation"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "8e24fba5-d8af-475d-8701-573fb6eff788",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'A': 0.2948774087575341, 'B': 40.294877408757536, 'C': 29.705122591242464}"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"uc.find_equilibrium_conc(rxn_index=0) # This is an EXACT solution"
]
},
{
"cell_type": "markdown",
"id": "e1f57520-6b81-49fc-8b82-b9424a5fe70f",
"metadata": {},
"source": [
"The reaction will proceed forward, with `A` and `B` being consumed, and `C` being produced"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d460fc5b-8e07-4efc-bb27-1d5093612de7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "fc516ca2-e62d-4784-b826-5372ff7f4c75",
"metadata": {
"tags": []
},
"source": [
"# Run the reaction"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "2502cd11-0df9-4303-8895-98401a1df7b8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Some steps were backtracked and re-done, to prevent negative concentrations or excessively large concentration changes\n",
"23 total step(s) taken\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"
]
}
],
"source": [
"uc.enable_diagnostics() # To save diagnostic information about the call to single_compartment_react()\n",
"\n",
"uc.single_compartment_react(initial_step=0.004, duration=0.06,\n",
" variable_steps=True,\n",
" snapshots={\"initial_caption\": \"1st reaction step\",\n",
" \"final_caption\": \"last reaction step\"})"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "80fbaee3-bd6f-4197-9270-23374d46a4a7",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000000 | \n",
" 10.000000 | \n",
" 50.000000 | \n",
" 20.000000 | \n",
" Initialized state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.000864 | \n",
" 7.874560 | \n",
" 47.874560 | \n",
" 22.125440 | \n",
" 1st reaction step | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.001555 | \n",
" 6.602265 | \n",
" 46.602265 | \n",
" 23.397735 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.002246 | \n",
" 5.571266 | \n",
" 45.571266 | \n",
" 24.428734 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.002938 | \n",
" 4.727594 | \n",
" 44.727594 | \n",
" 25.272406 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.003629 | \n",
" 4.031746 | \n",
" 44.031746 | \n",
" 25.968254 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.004666 | \n",
" 3.165305 | \n",
" 43.165305 | \n",
" 26.834695 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.005702 | \n",
" 2.512652 | \n",
" 42.512652 | \n",
" 27.487348 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.006739 | \n",
" 2.015898 | \n",
" 42.015898 | \n",
" 27.984102 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.007776 | \n",
" 1.634842 | \n",
" 41.634842 | \n",
" 28.365158 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.008813 | \n",
" 1.340804 | \n",
" 41.340804 | \n",
" 28.659196 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.009850 | \n",
" 1.112883 | \n",
" 41.112883 | \n",
" 28.887117 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.010886 | \n",
" 0.935595 | \n",
" 40.935595 | \n",
" 29.064405 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.011923 | \n",
" 0.797321 | \n",
" 40.797321 | \n",
" 29.202679 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.013478 | \n",
" 0.635211 | \n",
" 40.635211 | \n",
" 29.364789 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.015034 | \n",
" 0.525833 | \n",
" 40.525833 | \n",
" 29.474167 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.016589 | \n",
" 0.451805 | \n",
" 40.451805 | \n",
" 29.548195 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.018922 | \n",
" 0.376490 | \n",
" 40.376490 | \n",
" 29.623510 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.021254 | \n",
" 0.337393 | \n",
" 40.337393 | \n",
" 29.662607 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.024754 | \n",
" 0.306871 | \n",
" 40.306871 | \n",
" 29.693129 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.030002 | \n",
" 0.293965 | \n",
" 40.293965 | \n",
" 29.706035 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.037876 | \n",
" 0.295437 | \n",
" 40.295437 | \n",
" 29.704563 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.049685 | \n",
" 0.294082 | \n",
" 40.294082 | \n",
" 29.705918 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.067400 | \n",
" 0.296969 | \n",
" 40.296969 | \n",
" 29.703031 | \n",
" last reaction step | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0.000000 10.000000 50.000000 20.000000 Initialized state\n",
"1 0.000864 7.874560 47.874560 22.125440 1st reaction step\n",
"2 0.001555 6.602265 46.602265 23.397735 \n",
"3 0.002246 5.571266 45.571266 24.428734 \n",
"4 0.002938 4.727594 44.727594 25.272406 \n",
"5 0.003629 4.031746 44.031746 25.968254 \n",
"6 0.004666 3.165305 43.165305 26.834695 \n",
"7 0.005702 2.512652 42.512652 27.487348 \n",
"8 0.006739 2.015898 42.015898 27.984102 \n",
"9 0.007776 1.634842 41.634842 28.365158 \n",
"10 0.008813 1.340804 41.340804 28.659196 \n",
"11 0.009850 1.112883 41.112883 28.887117 \n",
"12 0.010886 0.935595 40.935595 29.064405 \n",
"13 0.011923 0.797321 40.797321 29.202679 \n",
"14 0.013478 0.635211 40.635211 29.364789 \n",
"15 0.015034 0.525833 40.525833 29.474167 \n",
"16 0.016589 0.451805 40.451805 29.548195 \n",
"17 0.018922 0.376490 40.376490 29.623510 \n",
"18 0.021254 0.337393 40.337393 29.662607 \n",
"19 0.024754 0.306871 40.306871 29.693129 \n",
"20 0.030002 0.293965 40.293965 29.706035 \n",
"21 0.037876 0.295437 40.295437 29.704563 \n",
"22 0.049685 0.294082 40.294082 29.705918 \n",
"23 0.067400 0.296969 40.296969 29.703031 last reaction step"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"uc.get_history()"
]
},
{
"cell_type": "markdown",
"id": "b1366038-2dea-4d69-a655-ae464ca22922",
"metadata": {},
"source": [
"## Note: \"A\" (now largely depleted) is the limiting reagent"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "1598a75b-0322-45ac-bf2c-21fd09049966",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"From time 0 to 0.000864, in 1 step of 0.000864\n",
"From time 0.000864 to 0.003629, in 4 steps of 0.000691\n",
"From time 0.003629 to 0.01192, in 8 steps of 0.00104\n",
"From time 0.01192 to 0.01659, in 3 steps of 0.00156\n",
"From time 0.01659 to 0.02125, in 2 steps of 0.00233\n",
"From time 0.02125 to 0.02475, in 1 step of 0.0035\n",
"From time 0.02475 to 0.03, in 1 step of 0.00525\n",
"From time 0.03 to 0.03788, in 1 step of 0.00787\n",
"From time 0.03788 to 0.04969, in 1 step of 0.0118\n",
"From time 0.04969 to 0.0674, in 1 step of 0.0177\n",
"(23 steps total)\n"
]
}
],
"source": [
"uc.diagnostics.explain_time_advance()"
]
},
{
"cell_type": "markdown",
"id": "9fb5f6b8-dde3-415d-9e90-b8d102bfd748",
"metadata": {},
"source": [
"### Notice how the reaction proceeds in smaller steps in the early times, when the concentrations are changing much more rapidly.\n",
"#### The argument argument _variable_steps=True_ dynamically adjusts the initial_step (which is initially found to be too large, leading to some backtracking)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "226c1b6e-6838-46f3-aab1-9cb20c409724",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
" "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "x=%{x}
y=%{y}",
"legendgroup": "",
"line": {
"color": "#636efa",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "",
"orientation": "v",
"showlegend": false,
"type": "scatter",
"x": [
0,
0.0008639999999999999,
0.0008639999999999999,
0.0036287999999999993,
0.0036287999999999993,
0.011923199999999997,
0.011923199999999997,
0.016588799999999994,
0.016588799999999994,
0.021254399999999993,
0.021254399999999993,
0.024753599999999994,
0.024753599999999994,
0.03000239999999999,
0.03000239999999999,
0.03787559999999999,
0.03787559999999999,
0.04968539999999999,
0.04968539999999999,
0.06740009999999999
],
"xaxis": "x",
"y": [
0.0008639999999999999,
0.0008639999999999999,
0.0006911999999999999,
0.0006911999999999999,
0.0010367999999999992,
0.0010367999999999992,
0.001555199999999998,
0.001555199999999998,
0.0023327999999999995,
0.0023327999999999995,
0.003499200000000001,
0.003499200000000001,
0.005248799999999998,
0.005248799999999998,
0.007873199999999997,
0.007873199999999997,
0.011809800000000002,
0.011809800000000002,
0.0177147,
0.0177147
],
"yaxis": "y"
}
],
"layout": {
"autosize": true,
"legend": {
"tracegroupgap": 0
},
"margin": {
"t": 60
},
"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": "Simulation step sizes"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
-5.871088850174215e-05,
0.06745881088850174
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-0.0002545500000000001,
0.01866045
],
"title": {
"text": "Step size"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"uc.plot_step_sizes(show_intervals=True)"
]
},
{
"cell_type": "markdown",
"id": "6ac3dd4e-9dd0-4d3a-aa83-76102bd79524",
"metadata": {
"tags": []
},
"source": [
"## Plots changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "5f73e330-2d43-4cef-b2a0-c6eb379eea2e",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.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": "darkorange",
"dash": "solid"
},
"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"
},
"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": [
-6.007139037433154e-05,
0.06746017139037432
],
"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.plot_history(colors=['red', 'darkorange', 'green'], show_intervals=True)"
]
},
{
"cell_type": "markdown",
"id": "c02a8f55-a671-4771-86c9-fc4d1b126bf8",
"metadata": {},
"source": [
"### Check the final equilibrium"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "765f6f39-4b2e-4a86-b6a9-ace9d1941663",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0: A + B <-> C\n",
"Final concentrations: [A] = 0.297 ; [B] = 40.3 ; [C] = 29.7\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.48209\n",
" Formula used: [C] / ([A][B])\n",
"2. Ratio of forward/reverse reaction rates: 2.5\n",
"Discrepancy between the two values: 0.7163 %\n",
"Reaction IS in equilibrium (within 1% tolerance)\n",
"\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Verify that the reaction has reached equilibrium\n",
"uc.is_in_equilibrium()"
]
},
{
"cell_type": "markdown",
"id": "e2ea05d1-6e9b-4f62-88e6-192e058078f6",
"metadata": {},
"source": [
"Compare with the values we saw earlier for the exact solution of the equilibrium values: \n",
"{'A': 0.2948774087575341, 'B': 40.294877408757536, 'C': 29.705122591242464} \n",
"\n",
"It's instructive to compare the exact values with the last few points from the simulation: "
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "fcc82495-c952-4200-b316-157aac1ef22f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 21 | \n",
" 0.037876 | \n",
" 0.295437 | \n",
" 40.295437 | \n",
" 29.704563 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.049685 | \n",
" 0.294082 | \n",
" 40.294082 | \n",
" 29.705918 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.067400 | \n",
" 0.296969 | \n",
" 40.296969 | \n",
" 29.703031 | \n",
" last reaction step | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"21 0.037876 0.295437 40.295437 29.704563 \n",
"22 0.049685 0.294082 40.294082 29.705918 \n",
"23 0.067400 0.296969 40.296969 29.703031 last reaction step"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"uc.get_history(tail=3)"
]
},
{
"cell_type": "markdown",
"id": "36087ae6-1bd5-4db1-881f-bf6e1dbd6439",
"metadata": {},
"source": [
"The 2nd-to-last simulation point, rather than the last one, is actually closer to the exact equilibrium values. \n",
"That's because by that time the variable steps are getting so large that they introduce some error. \n",
"If we were to run the simulation longer (not shown), we'd see the variable steps continuing to grow, and then suddenly being reduced; \n",
"then continued cycles of growth and reduction (\"hitting the brakes whenever getting too fast\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e1b89183-ddc6-48f2-8ecf-7c2e8a922e01",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "635c27c1-37c9-4ca0-8684-03de92380fb6",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "5c747824-a170-439e-96a5-dd35bc81e08b",
"metadata": {},
"source": [
"# _Everthing below is just for diagnostic insight_ \n",
"## _into the adaptive variable time steps_ \n",
"This information is available because we made a call to `dynamics.set_diagnostics()` prior to running the simulation"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "06c8c7e9-edd9-45e1-b4a0-508f0b379c42",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" START_TIME | \n",
" Delta A | \n",
" Delta B | \n",
" Delta C | \n",
" norm_A | \n",
" norm_B | \n",
" norm_C | \n",
" norm_D | \n",
" action | \n",
" step_factor | \n",
" time_step | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000000 | \n",
" -9.840000 | \n",
" -9.840000 | \n",
" 9.840000 | \n",
" 3.227520e+01 | \n",
" NaN | \n",
" None | \n",
" None | \n",
" ABORT | \n",
" 0.6 | \n",
" 0.004000 | \n",
" excessive norm value(s) | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.000000 | \n",
" -5.904000 | \n",
" -5.904000 | \n",
" 5.904000 | \n",
" 1.161907e+01 | \n",
" NaN | \n",
" None | \n",
" None | \n",
" ABORT | \n",
" 0.6 | \n",
" 0.002400 | \n",
" excessive norm value(s) | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.000000 | \n",
" -3.542400 | \n",
" -3.542400 | \n",
" 3.542400 | \n",
" 4.182866e+00 | \n",
" NaN | \n",
" None | \n",
" None | \n",
" ABORT | \n",
" 0.6 | \n",
" 0.001440 | \n",
" excessive norm value(s) | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.000000 | \n",
" -2.125440 | \n",
" -2.125440 | \n",
" 2.125440 | \n",
" 1.505832e+00 | \n",
" 0.212544 | \n",
" None | \n",
" None | \n",
" OK (high) | \n",
" 0.8 | \n",
" 0.000864 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.000864 | \n",
" -1.272295 | \n",
" -1.272295 | \n",
" 1.272295 | \n",
" 5.395782e-01 | \n",
" 0.161570 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.000691 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.001555 | \n",
" -1.030999 | \n",
" -1.030999 | \n",
" 1.030999 | \n",
" 3.543195e-01 | \n",
" 0.156158 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.000691 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.002246 | \n",
" -0.843672 | \n",
" -0.843672 | \n",
" 0.843672 | \n",
" 2.372610e-01 | \n",
" 0.151433 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.000691 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.002938 | \n",
" -0.695848 | \n",
" -0.695848 | \n",
" 0.695848 | \n",
" 1.614015e-01 | \n",
" 0.147189 | \n",
" None | \n",
" None | \n",
" OK (low) | \n",
" 1.5 | \n",
" 0.000691 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.003629 | \n",
" -0.866441 | \n",
" -0.866441 | \n",
" 0.866441 | \n",
" 2.502399e-01 | \n",
" 0.214905 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.001037 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.004666 | \n",
" -0.652653 | \n",
" -0.652653 | \n",
" 0.652653 | \n",
" 1.419851e-01 | \n",
" 0.206189 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.001037 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.005702 | \n",
" -0.496755 | \n",
" -0.496755 | \n",
" 0.496755 | \n",
" 8.225505e-02 | \n",
" 0.197701 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.001037 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.006739 | \n",
" -0.381056 | \n",
" -0.381056 | \n",
" 0.381056 | \n",
" 4.840115e-02 | \n",
" 0.189025 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.001037 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.007776 | \n",
" -0.294038 | \n",
" -0.294038 | \n",
" 0.294038 | \n",
" 2.881949e-02 | \n",
" 0.179857 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.001037 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.008813 | \n",
" -0.227921 | \n",
" -0.227921 | \n",
" 0.227921 | \n",
" 1.731599e-02 | \n",
" 0.169988 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.001037 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.009850 | \n",
" -0.177288 | \n",
" -0.177288 | \n",
" 0.177288 | \n",
" 1.047695e-02 | \n",
" 0.159305 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.001037 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.010886 | \n",
" -0.138275 | \n",
" -0.138275 | \n",
" 0.138275 | \n",
" 6.373314e-03 | \n",
" 0.147793 | \n",
" None | \n",
" None | \n",
" OK (low) | \n",
" 1.5 | \n",
" 0.001037 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.011923 | \n",
" -0.162110 | \n",
" -0.162110 | \n",
" 0.162110 | \n",
" 8.759877e-03 | \n",
" 0.203318 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.001555 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.013478 | \n",
" -0.109377 | \n",
" -0.109377 | \n",
" 0.109377 | \n",
" 3.987793e-03 | \n",
" 0.172190 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.001555 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.015034 | \n",
" -0.074029 | \n",
" -0.074029 | \n",
" 0.074029 | \n",
" 1.826757e-03 | \n",
" 0.140784 | \n",
" None | \n",
" None | \n",
" OK (low) | \n",
" 1.5 | \n",
" 0.001555 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.016589 | \n",
" -0.075315 | \n",
" -0.075315 | \n",
" 0.075315 | \n",
" 1.890774e-03 | \n",
" 0.166698 | \n",
" None | \n",
" None | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.002333 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.018922 | \n",
" -0.039097 | \n",
" -0.039097 | \n",
" 0.039097 | \n",
" 5.095229e-04 | \n",
" 0.103846 | \n",
" None | \n",
" None | \n",
" OK (low) | \n",
" 1.5 | \n",
" 0.002333 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.021254 | \n",
" -0.030522 | \n",
" -0.030522 | \n",
" 0.030522 | \n",
" 3.105277e-04 | \n",
" 0.090464 | \n",
" None | \n",
" None | \n",
" OK (low) | \n",
" 1.5 | \n",
" 0.003499 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.024754 | \n",
" -0.012906 | \n",
" -0.012906 | \n",
" 0.012906 | \n",
" 5.551890e-05 | \n",
" 0.042056 | \n",
" None | \n",
" None | \n",
" OK (low) | \n",
" 1.5 | \n",
" 0.005249 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.030002 | \n",
" 0.001472 | \n",
" 0.001472 | \n",
" -0.001472 | \n",
" 7.220164e-07 | \n",
" 0.005007 | \n",
" None | \n",
" None | \n",
" OK (low) | \n",
" 1.5 | \n",
" 0.007873 | \n",
" | \n",
"
\n",
" \n",
" | 24 | \n",
" 0.037876 | \n",
" -0.001355 | \n",
" -0.001355 | \n",
" 0.001355 | \n",
" 6.116239e-07 | \n",
" 0.004585 | \n",
" None | \n",
" None | \n",
" OK (low) | \n",
" 1.5 | \n",
" 0.011810 | \n",
" | \n",
"
\n",
" \n",
" | 25 | \n",
" 0.049685 | \n",
" 0.002886 | \n",
" 0.002886 | \n",
" -0.002886 | \n",
" 2.776401e-06 | \n",
" 0.009814 | \n",
" None | \n",
" None | \n",
" OK (low) | \n",
" 1.5 | \n",
" 0.017715 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" START_TIME Delta A Delta B Delta C norm_A norm_B norm_C \\\n",
"0 0.000000 -9.840000 -9.840000 9.840000 3.227520e+01 NaN None \n",
"1 0.000000 -5.904000 -5.904000 5.904000 1.161907e+01 NaN None \n",
"2 0.000000 -3.542400 -3.542400 3.542400 4.182866e+00 NaN None \n",
"3 0.000000 -2.125440 -2.125440 2.125440 1.505832e+00 0.212544 None \n",
"4 0.000864 -1.272295 -1.272295 1.272295 5.395782e-01 0.161570 None \n",
"5 0.001555 -1.030999 -1.030999 1.030999 3.543195e-01 0.156158 None \n",
"6 0.002246 -0.843672 -0.843672 0.843672 2.372610e-01 0.151433 None \n",
"7 0.002938 -0.695848 -0.695848 0.695848 1.614015e-01 0.147189 None \n",
"8 0.003629 -0.866441 -0.866441 0.866441 2.502399e-01 0.214905 None \n",
"9 0.004666 -0.652653 -0.652653 0.652653 1.419851e-01 0.206189 None \n",
"10 0.005702 -0.496755 -0.496755 0.496755 8.225505e-02 0.197701 None \n",
"11 0.006739 -0.381056 -0.381056 0.381056 4.840115e-02 0.189025 None \n",
"12 0.007776 -0.294038 -0.294038 0.294038 2.881949e-02 0.179857 None \n",
"13 0.008813 -0.227921 -0.227921 0.227921 1.731599e-02 0.169988 None \n",
"14 0.009850 -0.177288 -0.177288 0.177288 1.047695e-02 0.159305 None \n",
"15 0.010886 -0.138275 -0.138275 0.138275 6.373314e-03 0.147793 None \n",
"16 0.011923 -0.162110 -0.162110 0.162110 8.759877e-03 0.203318 None \n",
"17 0.013478 -0.109377 -0.109377 0.109377 3.987793e-03 0.172190 None \n",
"18 0.015034 -0.074029 -0.074029 0.074029 1.826757e-03 0.140784 None \n",
"19 0.016589 -0.075315 -0.075315 0.075315 1.890774e-03 0.166698 None \n",
"20 0.018922 -0.039097 -0.039097 0.039097 5.095229e-04 0.103846 None \n",
"21 0.021254 -0.030522 -0.030522 0.030522 3.105277e-04 0.090464 None \n",
"22 0.024754 -0.012906 -0.012906 0.012906 5.551890e-05 0.042056 None \n",
"23 0.030002 0.001472 0.001472 -0.001472 7.220164e-07 0.005007 None \n",
"24 0.037876 -0.001355 -0.001355 0.001355 6.116239e-07 0.004585 None \n",
"25 0.049685 0.002886 0.002886 -0.002886 2.776401e-06 0.009814 None \n",
"\n",
" norm_D action step_factor time_step caption \n",
"0 None ABORT 0.6 0.004000 excessive norm value(s) \n",
"1 None ABORT 0.6 0.002400 excessive norm value(s) \n",
"2 None ABORT 0.6 0.001440 excessive norm value(s) \n",
"3 None OK (high) 0.8 0.000864 \n",
"4 None OK (stay) 1.0 0.000691 \n",
"5 None OK (stay) 1.0 0.000691 \n",
"6 None OK (stay) 1.0 0.000691 \n",
"7 None OK (low) 1.5 0.000691 \n",
"8 None OK (stay) 1.0 0.001037 \n",
"9 None OK (stay) 1.0 0.001037 \n",
"10 None OK (stay) 1.0 0.001037 \n",
"11 None OK (stay) 1.0 0.001037 \n",
"12 None OK (stay) 1.0 0.001037 \n",
"13 None OK (stay) 1.0 0.001037 \n",
"14 None OK (stay) 1.0 0.001037 \n",
"15 None OK (low) 1.5 0.001037 \n",
"16 None OK (stay) 1.0 0.001555 \n",
"17 None OK (stay) 1.0 0.001555 \n",
"18 None OK (low) 1.5 0.001555 \n",
"19 None OK (stay) 1.0 0.002333 \n",
"20 None OK (low) 1.5 0.002333 \n",
"21 None OK (low) 1.5 0.003499 \n",
"22 None OK (low) 1.5 0.005249 \n",
"23 None OK (low) 1.5 0.007873 \n",
"24 None OK (low) 1.5 0.011810 \n",
"25 None OK (low) 1.5 0.017715 "
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"uc.diagnostics.get_diagnostic_decisions_data() # diagnostic data about concentration changes at every step - EVEN aborted ones"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "4e3012c6-c870-411c-bb80-7e1076233ca3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reaction: A + B <-> C\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" START_TIME | \n",
" time_step | \n",
" Delta A | \n",
" Delta B | \n",
" Delta C | \n",
" rate | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000000 | \n",
" 0.004000 | \n",
" -9.840000 | \n",
" -9.840000 | \n",
" 9.840000 | \n",
" 2460.000000 | \n",
" aborted: excessive norm value(s) | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.000000 | \n",
" 0.002400 | \n",
" -5.904000 | \n",
" -5.904000 | \n",
" 5.904000 | \n",
" 2460.000000 | \n",
" aborted: excessive norm value(s) | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.000000 | \n",
" 0.001440 | \n",
" -3.542400 | \n",
" -3.542400 | \n",
" 3.542400 | \n",
" 2460.000000 | \n",
" aborted: excessive norm value(s) | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.000000 | \n",
" 0.000864 | \n",
" -2.125440 | \n",
" -2.125440 | \n",
" 2.125440 | \n",
" 2460.000000 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.000864 | \n",
" 0.000691 | \n",
" -1.272295 | \n",
" -1.272295 | \n",
" 1.272295 | \n",
" 1840.704596 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.001555 | \n",
" 0.000691 | \n",
" -1.030999 | \n",
" -1.030999 | \n",
" 1.030999 | \n",
" 1491.607041 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.002246 | \n",
" 0.000691 | \n",
" -0.843672 | \n",
" -0.843672 | \n",
" 0.843672 | \n",
" 1220.590807 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.002938 | \n",
" 0.000691 | \n",
" -0.695848 | \n",
" -0.695848 | \n",
" 0.695848 | \n",
" 1006.724671 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.003629 | \n",
" 0.001037 | \n",
" -0.866441 | \n",
" -0.866441 | \n",
" 0.866441 | \n",
" 835.687508 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.004666 | \n",
" 0.001037 | \n",
" -0.652653 | \n",
" -0.652653 | \n",
" 0.652653 | \n",
" 629.487372 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.005702 | \n",
" 0.001037 | \n",
" -0.496755 | \n",
" -0.496755 | \n",
" 0.496755 | \n",
" 479.122900 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.006739 | \n",
" 0.001037 | \n",
" -0.381056 | \n",
" -0.381056 | \n",
" 0.381056 | \n",
" 367.530575 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.007776 | \n",
" 0.001037 | \n",
" -0.294038 | \n",
" -0.294038 | \n",
" 0.294038 | \n",
" 283.601647 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.008813 | \n",
" 0.001037 | \n",
" -0.227921 | \n",
" -0.227921 | \n",
" 0.227921 | \n",
" 219.831166 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.009850 | \n",
" 0.001037 | \n",
" -0.177288 | \n",
" -0.177288 | \n",
" 0.177288 | \n",
" 170.994900 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.010886 | \n",
" 0.001037 | \n",
" -0.138275 | \n",
" -0.138275 | \n",
" 0.138275 | \n",
" 133.366974 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.011923 | \n",
" 0.001555 | \n",
" -0.162110 | \n",
" -0.162110 | \n",
" 0.162110 | \n",
" 104.237355 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.013478 | \n",
" 0.001555 | \n",
" -0.109377 | \n",
" -0.109377 | \n",
" 0.109377 | \n",
" 70.330011 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.015034 | \n",
" 0.001555 | \n",
" -0.074029 | \n",
" -0.074029 | \n",
" 0.074029 | \n",
" 47.600851 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.016589 | \n",
" 0.002333 | \n",
" -0.075315 | \n",
" -0.075315 | \n",
" 0.075315 | \n",
" 32.285157 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.018922 | \n",
" 0.002333 | \n",
" -0.039097 | \n",
" -0.039097 | \n",
" 0.039097 | \n",
" 16.759651 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.021254 | \n",
" 0.003499 | \n",
" -0.030522 | \n",
" -0.030522 | \n",
" 0.030522 | \n",
" 8.722521 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.024754 | \n",
" 0.005249 | \n",
" -0.012906 | \n",
" -0.012906 | \n",
" 0.012906 | \n",
" 2.458788 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.030002 | \n",
" 0.007873 | \n",
" 0.001472 | \n",
" 0.001472 | \n",
" -0.001472 | \n",
" -0.186932 | \n",
" | \n",
"
\n",
" \n",
" | 24 | \n",
" 0.037876 | \n",
" 0.011810 | \n",
" -0.001355 | \n",
" -0.001355 | \n",
" 0.001355 | \n",
" 0.114699 | \n",
" | \n",
"
\n",
" \n",
" | 25 | \n",
" 0.049685 | \n",
" 0.017715 | \n",
" 0.002886 | \n",
" 0.002886 | \n",
" -0.002886 | \n",
" -0.162918 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" START_TIME time_step Delta A Delta B Delta C rate \\\n",
"0 0.000000 0.004000 -9.840000 -9.840000 9.840000 2460.000000 \n",
"1 0.000000 0.002400 -5.904000 -5.904000 5.904000 2460.000000 \n",
"2 0.000000 0.001440 -3.542400 -3.542400 3.542400 2460.000000 \n",
"3 0.000000 0.000864 -2.125440 -2.125440 2.125440 2460.000000 \n",
"4 0.000864 0.000691 -1.272295 -1.272295 1.272295 1840.704596 \n",
"5 0.001555 0.000691 -1.030999 -1.030999 1.030999 1491.607041 \n",
"6 0.002246 0.000691 -0.843672 -0.843672 0.843672 1220.590807 \n",
"7 0.002938 0.000691 -0.695848 -0.695848 0.695848 1006.724671 \n",
"8 0.003629 0.001037 -0.866441 -0.866441 0.866441 835.687508 \n",
"9 0.004666 0.001037 -0.652653 -0.652653 0.652653 629.487372 \n",
"10 0.005702 0.001037 -0.496755 -0.496755 0.496755 479.122900 \n",
"11 0.006739 0.001037 -0.381056 -0.381056 0.381056 367.530575 \n",
"12 0.007776 0.001037 -0.294038 -0.294038 0.294038 283.601647 \n",
"13 0.008813 0.001037 -0.227921 -0.227921 0.227921 219.831166 \n",
"14 0.009850 0.001037 -0.177288 -0.177288 0.177288 170.994900 \n",
"15 0.010886 0.001037 -0.138275 -0.138275 0.138275 133.366974 \n",
"16 0.011923 0.001555 -0.162110 -0.162110 0.162110 104.237355 \n",
"17 0.013478 0.001555 -0.109377 -0.109377 0.109377 70.330011 \n",
"18 0.015034 0.001555 -0.074029 -0.074029 0.074029 47.600851 \n",
"19 0.016589 0.002333 -0.075315 -0.075315 0.075315 32.285157 \n",
"20 0.018922 0.002333 -0.039097 -0.039097 0.039097 16.759651 \n",
"21 0.021254 0.003499 -0.030522 -0.030522 0.030522 8.722521 \n",
"22 0.024754 0.005249 -0.012906 -0.012906 0.012906 2.458788 \n",
"23 0.030002 0.007873 0.001472 0.001472 -0.001472 -0.186932 \n",
"24 0.037876 0.011810 -0.001355 -0.001355 0.001355 0.114699 \n",
"25 0.049685 0.017715 0.002886 0.002886 -0.002886 -0.162918 \n",
"\n",
" caption \n",
"0 aborted: excessive norm value(s) \n",
"1 aborted: excessive norm value(s) \n",
"2 aborted: excessive norm value(s) \n",
"3 \n",
"4 \n",
"5 \n",
"6 \n",
"7 \n",
"8 \n",
"9 \n",
"10 \n",
"11 \n",
"12 \n",
"13 \n",
"14 \n",
"15 \n",
"16 \n",
"17 \n",
"18 \n",
"19 \n",
"20 \n",
"21 \n",
"22 \n",
"23 \n",
"24 \n",
"25 "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"uc.diagnostics.get_diagnostic_rxn_data(rxn_index=0) # diagnostic run data of the requested SINGLE reaction"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "a5cee533-a63c-4ff8-9427-e9b64cf4885a",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000000 | \n",
" 10.000000 | \n",
" 50.000000 | \n",
" 20.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.000864 | \n",
" 7.874560 | \n",
" 47.874560 | \n",
" 22.125440 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.001555 | \n",
" 6.602265 | \n",
" 46.602265 | \n",
" 23.397735 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.002246 | \n",
" 5.571266 | \n",
" 45.571266 | \n",
" 24.428734 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.002938 | \n",
" 4.727594 | \n",
" 44.727594 | \n",
" 25.272406 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.003629 | \n",
" 4.031746 | \n",
" 44.031746 | \n",
" 25.968254 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.004666 | \n",
" 3.165305 | \n",
" 43.165305 | \n",
" 26.834695 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.005702 | \n",
" 2.512652 | \n",
" 42.512652 | \n",
" 27.487348 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.006739 | \n",
" 2.015898 | \n",
" 42.015898 | \n",
" 27.984102 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.007776 | \n",
" 1.634842 | \n",
" 41.634842 | \n",
" 28.365158 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.008813 | \n",
" 1.340804 | \n",
" 41.340804 | \n",
" 28.659196 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.009850 | \n",
" 1.112883 | \n",
" 41.112883 | \n",
" 28.887117 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.010886 | \n",
" 0.935595 | \n",
" 40.935595 | \n",
" 29.064405 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.011923 | \n",
" 0.797321 | \n",
" 40.797321 | \n",
" 29.202679 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.013478 | \n",
" 0.635211 | \n",
" 40.635211 | \n",
" 29.364789 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.015034 | \n",
" 0.525833 | \n",
" 40.525833 | \n",
" 29.474167 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.016589 | \n",
" 0.451805 | \n",
" 40.451805 | \n",
" 29.548195 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.018922 | \n",
" 0.376490 | \n",
" 40.376490 | \n",
" 29.623510 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.021254 | \n",
" 0.337393 | \n",
" 40.337393 | \n",
" 29.662607 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.024754 | \n",
" 0.306871 | \n",
" 40.306871 | \n",
" 29.693129 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.030002 | \n",
" 0.293965 | \n",
" 40.293965 | \n",
" 29.706035 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.037876 | \n",
" 0.295437 | \n",
" 40.295437 | \n",
" 29.704563 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.049685 | \n",
" 0.294082 | \n",
" 40.294082 | \n",
" 29.705918 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.067400 | \n",
" 0.296969 | \n",
" 40.296969 | \n",
" 29.703031 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" TIME A B C caption\n",
"0 0.000000 10.000000 50.000000 20.000000 \n",
"1 0.000864 7.874560 47.874560 22.125440 \n",
"2 0.001555 6.602265 46.602265 23.397735 \n",
"3 0.002246 5.571266 45.571266 24.428734 \n",
"4 0.002938 4.727594 44.727594 25.272406 \n",
"5 0.003629 4.031746 44.031746 25.968254 \n",
"6 0.004666 3.165305 43.165305 26.834695 \n",
"7 0.005702 2.512652 42.512652 27.487348 \n",
"8 0.006739 2.015898 42.015898 27.984102 \n",
"9 0.007776 1.634842 41.634842 28.365158 \n",
"10 0.008813 1.340804 41.340804 28.659196 \n",
"11 0.009850 1.112883 41.112883 28.887117 \n",
"12 0.010886 0.935595 40.935595 29.064405 \n",
"13 0.011923 0.797321 40.797321 29.202679 \n",
"14 0.013478 0.635211 40.635211 29.364789 \n",
"15 0.015034 0.525833 40.525833 29.474167 \n",
"16 0.016589 0.451805 40.451805 29.548195 \n",
"17 0.018922 0.376490 40.376490 29.623510 \n",
"18 0.021254 0.337393 40.337393 29.662607 \n",
"19 0.024754 0.306871 40.306871 29.693129 \n",
"20 0.030002 0.293965 40.293965 29.706035 \n",
"21 0.037876 0.295437 40.295437 29.704563 \n",
"22 0.049685 0.294082 40.294082 29.705918 \n",
"23 0.067400 0.296969 40.296969 29.703031 "
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"uc.diagnostics.get_diagnostic_conc_data() # diagnostic concentration data saved during the run, regardless of how much history we requested to save"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1918451d",
"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
}