{
"cells": [
{
"cell_type": "markdown",
"id": "5cbc8640",
"metadata": {},
"source": [
"### Adaptive time steps (variable time resolution) for reaction `A <-> B`,\n",
"with 1st-order kinetics in both directions, taken to equilibrium\n",
"\n",
"This is a repeat of the experiment _\"react_2_a\"_ , but with adaptive variable time steps\n",
"\n",
"LAST REVISED: May 6, 2024"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "3792d78d-7429-4221-a263-57b07d77b5bc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Added 'D:\\Docs\\- MY CODE\\BioSimulations\\life123-Win7' to sys.path\n"
]
}
],
"source": [
"import set_path # Importing this module will add the project's home directory to sys.path"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a29db1c7",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from experiments.get_notebook_info import get_notebook_basename\n",
"\n",
"from src.modules.reactions.reaction_dynamics import ReactionDynamics\n",
"from src.modules.visualization.graphic_log import GraphicLog"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "121fdfdd",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-> Output will be LOGGED into the file 'react_2_b.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": "ac9eea69-174c-43e5-9eed-443cbc5e2ba7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "10c710ac",
"metadata": {},
"source": [
"# PART 1 - RUN THE SIMULATION"
]
},
{
"cell_type": "markdown",
"id": "e0529a0c",
"metadata": {},
"source": [
"### Initialize the System"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "78077d8c",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 1 (at temp. 25 C)\n",
"0: A <-> B (kF = 3 / kR = 2 / delta_G = -1,005.1 / K = 1.5) | 1st order in all reactants & products\n",
"Set of chemicals involved in the above reactions: {'B', 'A'}\n"
]
}
],
"source": [
"# Instantiate the simulator and specify the chemicals\n",
"dynamics = ReactionDynamics(names=[\"A\", \"B\"])\n",
"\n",
"# Reaction A <-> B , with 1st-order kinetics in both directions\n",
"dynamics.add_reaction(reactants=[\"A\"], products=[\"B\"], \n",
" forward_rate=3., reverse_rate=2.)\n",
"\n",
"dynamics.describe_reactions()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "373afeb1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[GRAPHIC ELEMENT SENT TO LOG FILE `react_2_b.log.htm`]\n"
]
}
],
"source": [
"# Send a plot of the network of reactions to the HTML log file\n",
"dynamics.plot_reaction_network(\"vue_cytoscape_2\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "9fc3948d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0:\n",
"2 species:\n",
" Species 0 (A). Conc: 10.0\n",
" Species 1 (B). Conc: 50.0\n",
"Set of chemicals involved in reactions: {'B', 'A'}\n"
]
}
],
"source": [
"# Set the initial concentrations of all the chemicals, in their index order\n",
"dynamics.set_conc([10., 50.])\n",
"\n",
"dynamics.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "0cc938cc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0 | \n",
" 10.0 | \n",
" 50.0 | \n",
" Initial state | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"0 0.0 10.0 50.0 Initial state"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "c4595dd6-ddfa-4715-b2fc-07255a004681",
"metadata": {},
"outputs": [],
"source": [
"dynamics.set_diagnostics() # To save diagnostic information about the call to single_compartment_react()\n",
" # Useful for insight into the inner workings of the simulation"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ab5f46e6-347d-49e9-b8b4-9f2a4310a10e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Parameters used for the automated adaptive time step sizes -\n",
" THRESHOLDS: [{'norm': 'norm_A', 'low': 0.5, 'high': 0.8, 'abort': 1.44}, {'norm': 'norm_B', 'low': 0.08, 'high': 0.5, 'abort': 1.5}]\n",
" STEP FACTORS: {'upshift': 1.2, 'downshift': 0.5, 'abort': 0.4}\n",
" STEP FACTOR in case of 'ERROR ABORTS': 0.25\n"
]
}
],
"source": [
"# For experiment repeatability, we specify a particular group of preset parameters applicable to the adaptive time steps\n",
"dynamics.use_adaptive_preset(preset=\"mid\") # A \"middle-of-the road\" heuristic: somewhat \"conservative\" but not overly so\n",
"\n",
"dynamics.show_adaptive_parameters() # Details may vary across different versions of Life123"
]
},
{
"cell_type": "markdown",
"id": "987af2c5",
"metadata": {
"tags": []
},
"source": [
"### Run the reaction"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "43735178-313b-48cf-a583-5181238feac3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* INFO: the tentative time step (0.1) leads to a least one norm value > its ABORT threshold:\n",
" -> will backtrack, and re-do step with a SMALLER delta time, multiplied by 0.4 (set to 0.04) [Step started at t=0, and will rewind there]\n",
"* INFO: the tentative time step (0.04) leads to a least one norm value > its ABORT threshold:\n",
" -> will backtrack, and re-do step with a SMALLER delta time, multiplied by 0.4 (set to 0.016) [Step started at t=0, and will rewind there]\n",
"Some steps were backtracked and re-done, to prevent negative concentrations or excessively large concentration changes\n",
"19 total step(s) taken\n"
]
}
],
"source": [
"dynamics.single_compartment_react(initial_step=0.1, target_end_time=1.2,\n",
" variable_steps=True, explain_variable_steps=False,\n",
" snapshots={\"initial_caption\": \"1st reaction step\",\n",
" \"final_caption\": \"last reaction step\"}\n",
" )"
]
},
{
"cell_type": "markdown",
"id": "2169c3b3",
"metadata": {},
"source": [
"## The flag _variable_steps_ automatically adjusts up or down the time step"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2d5df59c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000000 | \n",
" 10.000000 | \n",
" 50.000000 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.016000 | \n",
" 11.120000 | \n",
" 48.880000 | \n",
" 1st reaction step | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.032000 | \n",
" 12.150400 | \n",
" 47.849600 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.048000 | \n",
" 13.098368 | \n",
" 46.901632 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.067200 | \n",
" 14.144925 | \n",
" 45.855075 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.086400 | \n",
" 15.091012 | \n",
" 44.908988 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.109440 | \n",
" 16.117327 | \n",
" 43.882673 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.132480 | \n",
" 17.025411 | \n",
" 42.974589 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.160128 | \n",
" 17.989578 | \n",
" 42.010422 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.193306 | \n",
" 18.986635 | \n",
" 41.013365 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.233119 | \n",
" 19.984624 | \n",
" 40.015376 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.280894 | \n",
" 20.943812 | \n",
" 39.056188 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.338225 | \n",
" 21.819882 | \n",
" 38.180118 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.407022 | \n",
" 22.569810 | \n",
" 37.430190 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.489579 | \n",
" 23.160168 | \n",
" 36.839832 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.588647 | \n",
" 23.576169 | \n",
" 36.423831 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.707528 | \n",
" 23.828097 | \n",
" 36.171903 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.850186 | \n",
" 23.950713 | \n",
" 36.049287 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 1.021375 | \n",
" 23.992900 | \n",
" 36.007100 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 1.226802 | \n",
" 24.000193 | \n",
" 35.999807 | \n",
" last reaction step | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"0 0.000000 10.000000 50.000000 Initial state\n",
"1 0.016000 11.120000 48.880000 1st reaction step\n",
"2 0.032000 12.150400 47.849600 \n",
"3 0.048000 13.098368 46.901632 \n",
"4 0.067200 14.144925 45.855075 \n",
"5 0.086400 15.091012 44.908988 \n",
"6 0.109440 16.117327 43.882673 \n",
"7 0.132480 17.025411 42.974589 \n",
"8 0.160128 17.989578 42.010422 \n",
"9 0.193306 18.986635 41.013365 \n",
"10 0.233119 19.984624 40.015376 \n",
"11 0.280894 20.943812 39.056188 \n",
"12 0.338225 21.819882 38.180118 \n",
"13 0.407022 22.569810 37.430190 \n",
"14 0.489579 23.160168 36.839832 \n",
"15 0.588647 23.576169 36.423831 \n",
"16 0.707528 23.828097 36.171903 \n",
"17 0.850186 23.950713 36.049287 \n",
"18 1.021375 23.992900 36.007100 \n",
"19 1.226802 24.000193 35.999807 last reaction step"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"history = dynamics.get_history() # The system's history, saved during the run of single_compartment_react()\n",
"history"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "1092029f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"From time 0 to 0.048, in 3 steps of 0.016\n",
"From time 0.048 to 0.0864, in 2 steps of 0.0192\n",
"From time 0.0864 to 0.1325, in 2 steps of 0.023\n",
"From time 0.1325 to 0.1601, in 1 step of 0.0276\n",
"From time 0.1601 to 0.1933, in 1 step of 0.0332\n",
"From time 0.1933 to 0.2331, in 1 step of 0.0398\n",
"From time 0.2331 to 0.2809, in 1 step of 0.0478\n",
"From time 0.2809 to 0.3382, in 1 step of 0.0573\n",
"From time 0.3382 to 0.407, in 1 step of 0.0688\n",
"From time 0.407 to 0.4896, in 1 step of 0.0826\n",
"From time 0.4896 to 0.5886, in 1 step of 0.0991\n",
"From time 0.5886 to 0.7075, in 1 step of 0.119\n",
"From time 0.7075 to 0.8502, in 1 step of 0.143\n",
"From time 0.8502 to 1.021, in 1 step of 0.171\n",
"From time 1.021 to 1.227, in 1 step of 0.205\n",
"(19 steps total)\n"
]
}
],
"source": [
"dynamics.explain_time_advance()"
]
},
{
"cell_type": "markdown",
"id": "edb7c015",
"metadata": {
"tags": []
},
"source": [
"## Notice how the reaction proceeds in smaller steps in the early times, when [A] and [B] are changing much more rapidly\n",
"### That resulted from passing the flag _variable_steps=True_ to single_compartment_react()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bc58e5c8-bd08-41d7-9984-18d000869a69",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "766e8bba-3a15-461e-9bf6-9daf509197d5",
"metadata": {
"tags": []
},
"source": [
"# PART 2 - Scrutinizing some instances of step-size changes"
]
},
{
"cell_type": "markdown",
"id": "ec7ea562-26ed-46b6-8af2-25c28bb3cf46",
"metadata": {},
"source": [
"The Delta-concentration values for all the individual reaction time steps, as contribued by a single reaction, may all be inspected at once from the diagnostic data:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "e8cb2d84-b012-424b-90be-54fd2dae1a27",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reaction: A <-> B\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" START_TIME | \n",
" Delta A | \n",
" Delta B | \n",
" time_step | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000000 | \n",
" 7.000000 | \n",
" -7.000000 | \n",
" 0.100000 | \n",
" aborted: excessive norm value(s) | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.000000 | \n",
" 2.800000 | \n",
" -2.800000 | \n",
" 0.040000 | \n",
" aborted: excessive norm value(s) | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.000000 | \n",
" 1.120000 | \n",
" -1.120000 | \n",
" 0.016000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.016000 | \n",
" 1.030400 | \n",
" -1.030400 | \n",
" 0.016000 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.032000 | \n",
" 0.947968 | \n",
" -0.947968 | \n",
" 0.016000 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.048000 | \n",
" 1.046557 | \n",
" -1.046557 | \n",
" 0.019200 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.067200 | \n",
" 0.946087 | \n",
" -0.946087 | \n",
" 0.019200 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.086400 | \n",
" 1.026315 | \n",
" -1.026315 | \n",
" 0.023040 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.109440 | \n",
" 0.908084 | \n",
" -0.908084 | \n",
" 0.023040 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.132480 | \n",
" 0.964167 | \n",
" -0.964167 | \n",
" 0.027648 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.160128 | \n",
" 0.997057 | \n",
" -0.997057 | \n",
" 0.033178 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.193306 | \n",
" 0.997988 | \n",
" -0.997988 | \n",
" 0.039813 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.233119 | \n",
" 0.959188 | \n",
" -0.959188 | \n",
" 0.047776 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.280894 | \n",
" 0.876070 | \n",
" -0.876070 | \n",
" 0.057331 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.338225 | \n",
" 0.749929 | \n",
" -0.749929 | \n",
" 0.068797 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.407022 | \n",
" 0.590357 | \n",
" -0.590357 | \n",
" 0.082556 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.489579 | \n",
" 0.416002 | \n",
" -0.416002 | \n",
" 0.099068 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.588647 | \n",
" 0.251928 | \n",
" -0.251928 | \n",
" 0.118881 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.707528 | \n",
" 0.122616 | \n",
" -0.122616 | \n",
" 0.142658 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.850186 | \n",
" 0.042187 | \n",
" -0.042187 | \n",
" 0.171189 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 1.021375 | \n",
" 0.007293 | \n",
" -0.007293 | \n",
" 0.205427 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" START_TIME Delta A Delta B time_step \\\n",
"0 0.000000 7.000000 -7.000000 0.100000 \n",
"1 0.000000 2.800000 -2.800000 0.040000 \n",
"2 0.000000 1.120000 -1.120000 0.016000 \n",
"3 0.016000 1.030400 -1.030400 0.016000 \n",
"4 0.032000 0.947968 -0.947968 0.016000 \n",
"5 0.048000 1.046557 -1.046557 0.019200 \n",
"6 0.067200 0.946087 -0.946087 0.019200 \n",
"7 0.086400 1.026315 -1.026315 0.023040 \n",
"8 0.109440 0.908084 -0.908084 0.023040 \n",
"9 0.132480 0.964167 -0.964167 0.027648 \n",
"10 0.160128 0.997057 -0.997057 0.033178 \n",
"11 0.193306 0.997988 -0.997988 0.039813 \n",
"12 0.233119 0.959188 -0.959188 0.047776 \n",
"13 0.280894 0.876070 -0.876070 0.057331 \n",
"14 0.338225 0.749929 -0.749929 0.068797 \n",
"15 0.407022 0.590357 -0.590357 0.082556 \n",
"16 0.489579 0.416002 -0.416002 0.099068 \n",
"17 0.588647 0.251928 -0.251928 0.118881 \n",
"18 0.707528 0.122616 -0.122616 0.142658 \n",
"19 0.850186 0.042187 -0.042187 0.171189 \n",
"20 1.021375 0.007293 -0.007293 0.205427 \n",
"\n",
" caption \n",
"0 aborted: excessive norm value(s) \n",
"1 aborted: excessive norm value(s) \n",
"2 \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 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.get_diagnostic_rxn_data(rxn_index=0) # For the 0-th reaction (the only reaction in our case)"
]
},
{
"cell_type": "markdown",
"id": "4b4fbb1d-0b7e-43f9-b4bc-dbaef933d044",
"metadata": {},
"source": [
"### Note that diagnostic data with the DELTA Concentrations - above and below - also record the values that were considered (but not actually used) during ABORTED steps"
]
},
{
"cell_type": "markdown",
"id": "789c4faf-12ba-4d63-9af8-3cef487de113",
"metadata": {},
"source": [
"In the examples below, we'll re-compute Delta values for individual steps, directly from the system history."
]
},
{
"cell_type": "markdown",
"id": "6047485b",
"metadata": {
"tags": []
},
"source": [
"### Example 1: **very early in the run** "
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "b47eaf6a-c343-4c56-9854-7ba08c26b4b8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1 | \n",
" 0.016 | \n",
" 11.120000 | \n",
" 48.880000 | \n",
" 1st reaction step | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.032 | \n",
" 12.150400 | \n",
" 47.849600 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.048 | \n",
" 13.098368 | \n",
" 46.901632 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"1 0.016 11.120000 48.880000 1st reaction step\n",
"2 0.032 12.150400 47.849600 \n",
"3 0.048 13.098368 46.901632 "
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"history[1:4]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "d7c7164a-0350-4549-874a-5084a04160a5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.0304, -1.0304], dtype=float32)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"delta_concentrations = dynamics.extract_delta_concentrations(history, 1, 2, ['A', 'B'])\n",
"delta_concentrations"
]
},
{
"cell_type": "markdown",
"id": "044a0b46-a7b2-43d3-9649-4a4ed3782a35",
"metadata": {},
"source": [
"As expected by the 1:1 stoichiometry, delta_A = - delta_B"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "199858ec-ee69-4581-a4b8-58a6948de536",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([11.12, 48.88], dtype=float32)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get all the concentrations at the start of the above steps\n",
"baseline_conc = dynamics.get_historical_concentrations(row=1)\n",
"#dynamics.get_historical_concentrations(t=0.016) # Alternate way\n",
"baseline_conc"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "aeb179e2-27a0-41b6-a6f0-3dfff52abeae",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('stay', 1, {'norm_A': 0.5308620929718018, 'norm_B': 0.09266187})"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Computes some measures of how large delta_concentrations is, and propose a course of action\n",
"dynamics.adjust_speed(delta_conc=delta_concentrations, baseline_conc=baseline_conc) "
]
},
{
"cell_type": "markdown",
"id": "a980506c-5c06-46f2-b975-dbc9d66bed5c",
"metadata": {},
"source": [
"#### The above analysis indicates that the time step is just about right, and the simulations should STAY on that course : that's based on the shown computed norms (indicating the extent of the change taking place.) \n",
"Indeed, the simulator maintains the same time step :"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "e5f56eb8-36d8-441b-8598-dd94c1d1be58",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.016000000000000004"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"original_step = history[\"SYSTEM TIME\"][2] - history[\"SYSTEM TIME\"][1]\n",
"original_step"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "72d25589",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.016000000000000007"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"next_step = history[\"SYSTEM TIME\"][3] - history[\"SYSTEM TIME\"][2]\n",
"next_step"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "aa7fee98",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0000000000000002"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"next_step / original_step"
]
},
{
"cell_type": "markdown",
"id": "c96e6b0c-b343-445c-8d76-a01f2bed7d30",
"metadata": {
"tags": []
},
"source": [
"### Example 2: **very late in the run** "
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "c3e65edc-7ce0-42c4-8573-fe5934962d16",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 17 | \n",
" 0.850186 | \n",
" 23.950713 | \n",
" 36.049287 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 1.021375 | \n",
" 23.992900 | \n",
" 36.007100 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 1.226802 | \n",
" 24.000193 | \n",
" 35.999807 | \n",
" last reaction step | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"17 0.850186 23.950713 36.049287 \n",
"18 1.021375 23.992900 36.007100 \n",
"19 1.226802 24.000193 35.999807 last reaction step"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"history[17:20]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "28f3a54f-f5a4-420f-be44-912b58a31cea",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.04218667, -0.04218667], dtype=float32)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"delta_concentrations = dynamics.extract_delta_concentrations(history, 17, 18, ['A', 'B'])\n",
"delta_concentrations"
]
},
{
"cell_type": "markdown",
"id": "382261e6-50e2-4189-a268-b367bfa64284",
"metadata": {},
"source": [
"#### Notice the far less change now that the system is approaching equilibrium"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "95c676b7-ce6e-4228-99c2-bdd0f75a4ce2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([23.950714, 36.049286], dtype=float32)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get all the concentrations at the start of the above steps\n",
"baseline_conc = dynamics.get_historical_concentrations(row=17)\n",
"#dynamics.get_historical_concentrations(t=0.850186) # Alternate way\n",
"baseline_conc"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "281220ff-55c6-4b0a-ae62-037133174efd",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('low', 1.2, {'norm_A': 0.0008898575906641781, 'norm_B': 0.0017613951})"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Computes a measure of how large delta_concentrations is, and propose a course of action\n",
"dynamics.adjust_speed(delta_conc=delta_concentrations, baseline_conc=baseline_conc) "
]
},
{
"cell_type": "markdown",
"id": "3370c89b-bece-44af-864b-ee2221ebaaff",
"metadata": {},
"source": [
"#### The above analysis indicates that the time step is on the \"LOW\" side, and the simulations should increase it by a factor 1.2 : again, that's based on the shown computed norms (indicating the extent of the change taking place.) \n",
"Indeed, the simulator increases the time step x1.2:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "0522109c-64e3-46f1-8f43-36360dc6a381",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.17118912860651525"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"original_step = history[\"SYSTEM TIME\"][18] - history[\"SYSTEM TIME\"][17]\n",
"original_step"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "a177ec82-5600-4b21-ba15-79324f72d44c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.2054269543278182"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"next_step = history[\"SYSTEM TIME\"][19] - history[\"SYSTEM TIME\"][18]\n",
"next_step"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "09104a03-3335-403b-96f4-fa2cddad6f92",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.1999999999999995"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"next_step / original_step"
]
},
{
"cell_type": "markdown",
"id": "58b2fdca-bff2-4b88-b6b8-68db4844ef86",
"metadata": {},
"source": [
"Where does that x1.2 factor come from? It's one of the parameters that we passed to the simulator; they can be seen as follows:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "89246ea8-47f7-4ffb-80e3-ed2ad321a447",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Parameters used for the automated adaptive time step sizes -\n",
" THRESHOLDS: [{'norm': 'norm_A', 'low': 0.5, 'high': 0.8, 'abort': 1.44}, {'norm': 'norm_B', 'low': 0.08, 'high': 0.5, 'abort': 1.5}]\n",
" STEP FACTORS: {'upshift': 1.2, 'downshift': 0.5, 'abort': 0.4}\n",
" STEP FACTOR in case of 'ERROR ABORTS': 0.25\n"
]
}
],
"source": [
"dynamics.show_adaptive_parameters()"
]
},
{
"cell_type": "markdown",
"id": "53e2d39f-cff2-4035-a40e-752a8418a3ec",
"metadata": {},
"source": [
"**1.2** is stored as the \"step factor\" (for the time steps to take) in case an 'upshift' (in step size) is the decided course of action"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "49fc2e1e-12f9-427c-8233-c998026caac4",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "66f7a05f-122e-496b-a101-9ac82a4599cf",
"metadata": {},
"source": [
"## Diagnostics of the run may be investigated as follows: \n",
"_(note - this is possible because we make a call to set_diagnostics() prior to running the simulation)_"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "807a8624-64c5-4b34-9433-54279f6c05ab",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000000 | \n",
" 10.000000 | \n",
" 50.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.016000 | \n",
" 11.120000 | \n",
" 48.880000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.032000 | \n",
" 12.150400 | \n",
" 47.849600 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.048000 | \n",
" 13.098368 | \n",
" 46.901632 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.067200 | \n",
" 14.144925 | \n",
" 45.855075 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.086400 | \n",
" 15.091012 | \n",
" 44.908988 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.109440 | \n",
" 16.117327 | \n",
" 43.882673 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.132480 | \n",
" 17.025411 | \n",
" 42.974589 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.160128 | \n",
" 17.989578 | \n",
" 42.010422 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.193306 | \n",
" 18.986635 | \n",
" 41.013365 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.233119 | \n",
" 19.984624 | \n",
" 40.015376 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.280894 | \n",
" 20.943812 | \n",
" 39.056188 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.338225 | \n",
" 21.819882 | \n",
" 38.180118 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.407022 | \n",
" 22.569810 | \n",
" 37.430190 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.489579 | \n",
" 23.160168 | \n",
" 36.839832 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.588647 | \n",
" 23.576169 | \n",
" 36.423831 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.707528 | \n",
" 23.828097 | \n",
" 36.171903 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.850186 | \n",
" 23.950713 | \n",
" 36.049287 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 1.021375 | \n",
" 23.992900 | \n",
" 36.007100 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 1.226802 | \n",
" 24.000193 | \n",
" 35.999807 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" TIME A B caption\n",
"0 0.000000 10.000000 50.000000 \n",
"1 0.016000 11.120000 48.880000 \n",
"2 0.032000 12.150400 47.849600 \n",
"3 0.048000 13.098368 46.901632 \n",
"4 0.067200 14.144925 45.855075 \n",
"5 0.086400 15.091012 44.908988 \n",
"6 0.109440 16.117327 43.882673 \n",
"7 0.132480 17.025411 42.974589 \n",
"8 0.160128 17.989578 42.010422 \n",
"9 0.193306 18.986635 41.013365 \n",
"10 0.233119 19.984624 40.015376 \n",
"11 0.280894 20.943812 39.056188 \n",
"12 0.338225 21.819882 38.180118 \n",
"13 0.407022 22.569810 37.430190 \n",
"14 0.489579 23.160168 36.839832 \n",
"15 0.588647 23.576169 36.423831 \n",
"16 0.707528 23.828097 36.171903 \n",
"17 0.850186 23.950713 36.049287 \n",
"18 1.021375 23.992900 36.007100 \n",
"19 1.226802 24.000193 35.999807 "
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.get_diagnostic_conc_data() # This will be complete, even if we only saved part of the history during the run"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "f9ebf09e-caba-44e8-a675-3538cbee1cc0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" START_TIME | \n",
" Delta A | \n",
" Delta B | \n",
" norm_A | \n",
" norm_B | \n",
" action | \n",
" step_factor | \n",
" time_step | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000000 | \n",
" 7.000000 | \n",
" -7.000000 | \n",
" 24.500000 | \n",
" NaN | \n",
" ABORT | \n",
" 0.4 | \n",
" 0.100000 | \n",
" excessive norm value(s) | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.000000 | \n",
" 2.800000 | \n",
" -2.800000 | \n",
" 3.920000 | \n",
" NaN | \n",
" ABORT | \n",
" 0.4 | \n",
" 0.040000 | \n",
" excessive norm value(s) | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.000000 | \n",
" 1.120000 | \n",
" -1.120000 | \n",
" 0.627200 | \n",
" 0.112000 | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.016000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.016000 | \n",
" 1.030400 | \n",
" -1.030400 | \n",
" 0.530862 | \n",
" 0.092662 | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.016000 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.032000 | \n",
" 0.947968 | \n",
" -0.947968 | \n",
" 0.449322 | \n",
" 0.078019 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.016000 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.048000 | \n",
" 1.046557 | \n",
" -1.046557 | \n",
" 0.547640 | \n",
" 0.079900 | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.019200 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.067200 | \n",
" 0.946087 | \n",
" -0.946087 | \n",
" 0.447541 | \n",
" 0.066885 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.019200 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.086400 | \n",
" 1.026315 | \n",
" -1.026315 | \n",
" 0.526662 | \n",
" 0.068008 | \n",
" OK (stay) | \n",
" 1.0 | \n",
" 0.023040 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.109440 | \n",
" 0.908084 | \n",
" -0.908084 | \n",
" 0.412308 | \n",
" 0.056342 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.023040 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.132480 | \n",
" 0.964167 | \n",
" -0.964167 | \n",
" 0.464809 | \n",
" 0.056631 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.027648 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.160128 | \n",
" 0.997057 | \n",
" -0.997057 | \n",
" 0.497061 | \n",
" 0.055424 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.033178 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.193306 | \n",
" 0.997988 | \n",
" -0.997988 | \n",
" 0.497990 | \n",
" 0.052563 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.039813 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.233119 | \n",
" 0.959188 | \n",
" -0.959188 | \n",
" 0.460021 | \n",
" 0.047996 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.047776 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.280894 | \n",
" 0.876070 | \n",
" -0.876070 | \n",
" 0.383749 | \n",
" 0.041830 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.057331 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.338225 | \n",
" 0.749929 | \n",
" -0.749929 | \n",
" 0.281197 | \n",
" 0.034369 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.068797 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.407022 | \n",
" 0.590357 | \n",
" -0.590357 | \n",
" 0.174261 | \n",
" 0.026157 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.082556 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.489579 | \n",
" 0.416002 | \n",
" -0.416002 | \n",
" 0.086529 | \n",
" 0.017962 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.099068 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.588647 | \n",
" 0.251928 | \n",
" -0.251928 | \n",
" 0.031734 | \n",
" 0.010686 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.118881 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.707528 | \n",
" 0.122616 | \n",
" -0.122616 | \n",
" 0.007517 | \n",
" 0.005146 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.142658 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.850186 | \n",
" 0.042187 | \n",
" -0.042187 | \n",
" 0.000890 | \n",
" 0.001761 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.171189 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 1.021375 | \n",
" 0.007293 | \n",
" -0.007293 | \n",
" 0.000027 | \n",
" 0.000304 | \n",
" OK (low) | \n",
" 1.2 | \n",
" 0.205427 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" START_TIME Delta A Delta B norm_A norm_B action \\\n",
"0 0.000000 7.000000 -7.000000 24.500000 NaN ABORT \n",
"1 0.000000 2.800000 -2.800000 3.920000 NaN ABORT \n",
"2 0.000000 1.120000 -1.120000 0.627200 0.112000 OK (stay) \n",
"3 0.016000 1.030400 -1.030400 0.530862 0.092662 OK (stay) \n",
"4 0.032000 0.947968 -0.947968 0.449322 0.078019 OK (low) \n",
"5 0.048000 1.046557 -1.046557 0.547640 0.079900 OK (stay) \n",
"6 0.067200 0.946087 -0.946087 0.447541 0.066885 OK (low) \n",
"7 0.086400 1.026315 -1.026315 0.526662 0.068008 OK (stay) \n",
"8 0.109440 0.908084 -0.908084 0.412308 0.056342 OK (low) \n",
"9 0.132480 0.964167 -0.964167 0.464809 0.056631 OK (low) \n",
"10 0.160128 0.997057 -0.997057 0.497061 0.055424 OK (low) \n",
"11 0.193306 0.997988 -0.997988 0.497990 0.052563 OK (low) \n",
"12 0.233119 0.959188 -0.959188 0.460021 0.047996 OK (low) \n",
"13 0.280894 0.876070 -0.876070 0.383749 0.041830 OK (low) \n",
"14 0.338225 0.749929 -0.749929 0.281197 0.034369 OK (low) \n",
"15 0.407022 0.590357 -0.590357 0.174261 0.026157 OK (low) \n",
"16 0.489579 0.416002 -0.416002 0.086529 0.017962 OK (low) \n",
"17 0.588647 0.251928 -0.251928 0.031734 0.010686 OK (low) \n",
"18 0.707528 0.122616 -0.122616 0.007517 0.005146 OK (low) \n",
"19 0.850186 0.042187 -0.042187 0.000890 0.001761 OK (low) \n",
"20 1.021375 0.007293 -0.007293 0.000027 0.000304 OK (low) \n",
"\n",
" step_factor time_step caption \n",
"0 0.4 0.100000 excessive norm value(s) \n",
"1 0.4 0.040000 excessive norm value(s) \n",
"2 1.0 0.016000 \n",
"3 1.0 0.016000 \n",
"4 1.2 0.016000 \n",
"5 1.0 0.019200 \n",
"6 1.2 0.019200 \n",
"7 1.0 0.023040 \n",
"8 1.2 0.023040 \n",
"9 1.2 0.027648 \n",
"10 1.2 0.033178 \n",
"11 1.2 0.039813 \n",
"12 1.2 0.047776 \n",
"13 1.2 0.057331 \n",
"14 1.2 0.068797 \n",
"15 1.2 0.082556 \n",
"16 1.2 0.099068 \n",
"17 1.2 0.118881 \n",
"18 1.2 0.142658 \n",
"19 1.2 0.171189 \n",
"20 1.2 0.205427 "
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.get_diagnostic_decisions_data()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "94939e71-9ab1-437c-82c1-85285c904170",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "6deca814",
"metadata": {},
"source": [
"# PART 3 - Analyze the reaction Dynamics"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "23c4b3ba",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0: A <-> B\n",
"Final concentrations: [A] = 24 ; [B] = 36\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 1.49998\n",
" Formula used: [B] / [A]\n",
"2. Ratio of forward/reverse reaction rates: 1.5\n",
"Discrepancy between the two values: 0.001338 %\n",
"Reaction IS in equilibrium (within 1% tolerance)\n",
"\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Verify that the reaction has reached equilibrium\n",
"dynamics.is_in_equilibrium()"
]
},
{
"cell_type": "markdown",
"id": "03866901",
"metadata": {
"tags": []
},
"source": [
"### Plots of changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "6b033cc7-078f-4b94-a466-1aa91e2fca4d",
"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": "blue",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.016000000000000004,
0.03200000000000001,
0.048000000000000015,
0.06720000000000002,
0.08640000000000003,
0.10944000000000004,
0.13248000000000004,
0.16012800000000005,
0.19330560000000005,
0.23311872000000006,
0.28089446400000007,
0.3382253568000001,
0.4070224281600001,
0.48957891379200014,
0.5886466965504001,
0.7075280358604801,
0.850185643032576,
1.0213747716390913,
1.2268017259669095
],
"xaxis": "x",
"y": [
10,
11.120000000000001,
12.150400000000001,
13.098368,
14.144924672,
15.091011903488,
16.117327332206184,
17.025411223536032,
17.989578375994412,
18.98663519835745,
19.984623670615306,
20.94381162849702,
21.819881668013238,
22.569810450307923,
23.160167565358876,
23.576169251301298,
23.828097086531773,
23.950713378038216,
23.992900047366195,
24.000192655593363
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "orange",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.016000000000000004,
0.03200000000000001,
0.048000000000000015,
0.06720000000000002,
0.08640000000000003,
0.10944000000000004,
0.13248000000000004,
0.16012800000000005,
0.19330560000000005,
0.23311872000000006,
0.28089446400000007,
0.3382253568000001,
0.4070224281600001,
0.48957891379200014,
0.5886466965504001,
0.7075280358604801,
0.850185643032576,
1.0213747716390913,
1.2268017259669095
],
"xaxis": "x",
"y": [
50,
48.88,
47.8496,
46.901632,
45.855075328,
44.908988096512,
43.88267266779381,
42.97458877646397,
42.01042162400559,
41.013364801642545,
40.015376329384694,
39.05618837150298,
38.180118331986755,
37.43018954969207,
36.83983243464112,
36.42383074869869,
36.171902913468216,
36.04928662196178,
36.007099952633794,
35.999807344406626
],
"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.016000000000000004,
"x1": 0.016000000000000004,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.03200000000000001,
"x1": 0.03200000000000001,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.048000000000000015,
"x1": 0.048000000000000015,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.06720000000000002,
"x1": 0.06720000000000002,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.08640000000000003,
"x1": 0.08640000000000003,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.10944000000000004,
"x1": 0.10944000000000004,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.13248000000000004,
"x1": 0.13248000000000004,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.16012800000000005,
"x1": 0.16012800000000005,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.19330560000000005,
"x1": 0.19330560000000005,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.23311872000000006,
"x1": 0.23311872000000006,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.28089446400000007,
"x1": 0.28089446400000007,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.3382253568000001,
"x1": 0.3382253568000001,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.4070224281600001,
"x1": 0.4070224281600001,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.48957891379200014,
"x1": 0.48957891379200014,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.5886466965504001,
"x1": 0.5886466965504001,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.7075280358604801,
"x1": 0.7075280358604801,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.850185643032576,
"x1": 0.850185643032576,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 1.0213747716390913,
"x1": 1.0213747716390913,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 1.2268017259669095,
"x1": 1.2268017259669095,
"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` . Changes in concentrations with time (time steps shown in dashed lines)"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
-0.0006284844907617364,
1.2274302104576713
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
7.777777777777778,
52.22222222222222
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "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ECBAgAABAlUFhEJVBdUnQIAAAQIECBAgQIAAAQIECCQoIBRKcNJ0mQABAgQIECBAgAABAgQIECBQVUAoVFVQfQIECBAgQIAAAQIECBAgQIBAggJCoQQnTZcJECBAgAABAgQIECBAgAABAlUFhEJVBdUnQIAAAQIECBAgQIAAAQIECCQoIBRKcNJ0mQABAgQIECBAgAABAgQIECBQVUAoVFVQfQIECBAgQIAAAQIECBAgQIBAggJCoQQnTZcJECBAgAABAgQIECBAgAABAlUFhEJVBdUnQIAAAQIECBAgQIAAAQIECCQoIBRKcNJ0mQABAgQIECBAgAABAgQIECBQVUAoVFVQfQIECBAgQIAAAQIECBAgQIBAggJCoQQnTZcJECBAgAABAgQIECBAgAABAlUFhEJVBdUnQIAAAQIECBAgQIAAAQIECCQoIBRKcNJ0mQABAgQIECBAgAABAgQIECBQVUAoVFVQfQIECBAgQIAAAQIECBAgQIBAggJCoQQnTZcJECBAgAABAgQIECBAgAABAlUFhEJVBdUnQIAAAQIECBAgQIAAAQIECCQoIBRKcNJ0mQABAgQIECBAgAABAgQIECBQVUAoVFVQfQIECBAgQIAAAQIECBAgQIBAggJCoQQnTZcJECBAgAABAgQIECBAgAABAlUF/h/7dS13a2wA7gAAAABJRU5ErkJggg==",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dynamics.plot_history(colors=['blue', 'orange'], show_intervals=True)"
]
},
{
"cell_type": "markdown",
"id": "306e3db7",
"metadata": {},
"source": [
"## Note how the left-hand side of this plot is much smoother than it was in experiment `react_2_a`, where no adaptive time steps were used!"
]
},
{
"cell_type": "markdown",
"id": "6b96283e-20d8-4256-b857-2e328923e942",
"metadata": {},
"source": [
"#### Compare the above with the fixed step sizes of experiment `react_2_a` \n",
"To see the sizes of the steps taken:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "039e5eab-53bf-4bfb-b68b-e83f399490c5",
"metadata": {},
"outputs": [
{
"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.048000000000000015,
0.048000000000000015,
0.08640000000000003,
0.08640000000000003,
0.13248000000000004,
0.13248000000000004,
0.16012800000000005,
0.16012800000000005,
0.19330560000000005,
0.19330560000000005,
0.23311872000000006,
0.23311872000000006,
0.28089446400000007,
0.28089446400000007,
0.3382253568000001,
0.3382253568000001,
0.4070224281600001,
0.4070224281600001,
0.48957891379200014,
0.48957891379200014,
0.5886466965504001,
0.5886466965504001,
0.7075280358604801,
0.7075280358604801,
0.850185643032576,
0.850185643032576,
1.0213747716390913,
1.0213747716390913,
1.2268017259669095
],
"xaxis": "x",
"y": [
0.016000000000000007,
0.016000000000000007,
0.01920000000000001,
0.01920000000000001,
0.023040000000000005,
0.023040000000000005,
0.027648000000000006,
0.027648000000000006,
0.0331776,
0.0331776,
0.03981312000000001,
0.03981312000000001,
0.04777574400000001,
0.04777574400000001,
0.05733089280000003,
0.05733089280000003,
0.06879707136000002,
0.06879707136000002,
0.08255648563200002,
0.08255648563200002,
0.0990677827584,
0.0990677827584,
0.11888133931007994,
0.11888133931007994,
0.14265760717209597,
0.14265760717209597,
0.17118912860651525,
0.17118912860651525,
0.2054269543278182,
0.2054269543278182
],
"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.016000000000000004,
"x1": 0.016000000000000004,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.03200000000000001,
"x1": 0.03200000000000001,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.048000000000000015,
"x1": 0.048000000000000015,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.06720000000000002,
"x1": 0.06720000000000002,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.08640000000000003,
"x1": 0.08640000000000003,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.10944000000000004,
"x1": 0.10944000000000004,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.13248000000000004,
"x1": 0.13248000000000004,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.16012800000000005,
"x1": 0.16012800000000005,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.19330560000000005,
"x1": 0.19330560000000005,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.23311872000000006,
"x1": 0.23311872000000006,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.28089446400000007,
"x1": 0.28089446400000007,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.3382253568000001,
"x1": 0.3382253568000001,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.4070224281600001,
"x1": 0.4070224281600001,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.48957891379200014,
"x1": 0.48957891379200014,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.5886466965504001,
"x1": 0.5886466965504001,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.7075280358604801,
"x1": 0.7075280358604801,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 0.850185643032576,
"x1": 0.850185643032576,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 1.0213747716390913,
"x1": 1.0213747716390913,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
},
{
"line": {
"color": "gray",
"dash": "dot",
"width": 1
},
"type": "line",
"x0": 1.2268017259669095,
"x1": 1.2268017259669095,
"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": [
-0.0006158643202645128,
1.227417590287174
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
0.005476280315121219,
0.215950674012697
],
"title": {
"text": "Step size"
},
"type": "linear"
}
}
},
"image/png": "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CCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQQIheK4UhUBBBBAAAEEEEAAAQQQQAABBBDItQChUK6nh8EhgAACCCCAAAIIIIAAAggggAACcQT+f22e4jzJrElSAAAAAElFTkSuQmCC",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dynamics.plot_step_sizes(show_intervals=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7f59733f",
"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
}