{
"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",
"and the use of **diagnostic tools** for insight into the details of the simulation. \n",
"\n",
"**Background**: please see experiment `react_2_a` "
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "6e9d0902-6fc9-4692-ac39-0651d08902ca",
"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": "1e0ae9a9-9d0c-4edf-a5f2-1c589419e6cf",
"metadata": {},
"outputs": [],
"source": [
"#import set_path # Using MyBinder? Uncomment this before running the next cell!"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a29db1c7",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"#import sys\n",
"#sys.path.append(\"C:/some_path/my_env_or_install\") # CHANGE to the folder containing your venv or libraries installation!\n",
"# NOTE: If any of the imports below can't find a module, uncomment the lines above, or try: import set_path \n",
"\n",
"import ipynbname\n",
"\n",
"from life123 import check_version, UniformCompartment, GraphicLog, PlotlyHelper"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "af15ecf0-e083-4fef-b68e-abe794dcc86e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"OK\n"
]
}
],
"source": [
"check_version(LIFE123_VERSION)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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 = ipynbname.name() + \".log.htm\" # Use the notebook base filename for the log file\n",
" # IN CASE OF PROBLEMS, set manually to any desired name\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": "34d1cefc-f644-410a-9fe4-5204964742ac",
"metadata": {},
"outputs": [],
"source": []
},
{
"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": 6,
"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: {'A', 'B'}\n"
]
}
],
"source": [
"# Instantiate the simulator and specify the chemicals\n",
"dynamics = UniformCompartment(names=[\"A\", \"B\"], preset=\"mid\")\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": 7,
"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": 8,
"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: {'A', 'B'}\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": 9,
"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",
" Initialized state | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"0 0.0 10.0 50.0 Initialized state"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "c4595dd6-ddfa-4715-b2fc-07255a004681",
"metadata": {},
"outputs": [],
"source": [
"dynamics.enable_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": 11,
"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, 'error': 0.25}\n"
]
}
],
"source": [
"# For experiment repeatability, we specified, when instantiating the \"UniformCompartment\" class, \n",
"# a particular preset applicable to the adaptive time steps; \n",
"# that preset assigned the following values\n",
"dynamics.adaptive_steps.show_adaptive_parameters() "
]
},
{
"cell_type": "markdown",
"id": "987af2c5",
"metadata": {
"tags": []
},
"source": [
"## Run the reaction \n",
"#### Passing True to _variable_steps_ automatically adjusts up or down the time steps"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "43735178-313b-48cf-a583-5181238feac3",
"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",
"19 total step(s) taken\n",
"Number of step re-do's because of elective soft aborts: 2\n",
"Norm usage: {'norm_A': 17, 'norm_B': 15, 'norm_C': 15, 'norm_D': 15}\n"
]
}
],
"source": [
"dynamics.single_compartment_react(initial_step=0.1, target_end_time=1.2,\n",
" variable_steps=True,\n",
" snapshots={\"initial_caption\": \"1st reaction step\",\n",
" \"final_caption\": \"last reaction step\"}\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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",
" Initialized 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 Initialized 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": 13,
"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": "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": 14,
"id": "4bf3a728-320a-4916-b01a-f7b217c4015d",
"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": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Verify that the reaction has reached equilibrium\n",
"dynamics.is_in_equilibrium()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b47c8bd4-d28c-471c-94e8-b1070692b608",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "ab3b6bdc-fed9-47a5-9315-904fc80c099d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "ecae7dca-3e74-40a6-a690-12fc0f30afe1",
"metadata": {},
"source": [
"# PART 2 - Visualize the Results"
]
},
{
"cell_type": "markdown",
"id": "6d233695-a6cd-4e55-81b7-ebb79546d321",
"metadata": {
"tags": []
},
"source": [
"### Plots of changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "5d271f6b-a727-4609-9399-342c1a98e7b3",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
" "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "darkturquoise",
"dash": "solid"
},
"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.0008472387610268712,
1.2276489647279363
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
7.777777777777778,
52.22222222222222
],
"title": {
"text": "Concentration"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dynamics.plot_history(colors=['darkturquoise', 'orange'], show_intervals=True)"
]
},
{
"cell_type": "markdown",
"id": "584fdc8a-dee8-4c48-8d96-2728f01a78bf",
"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": "a63b4d56-de25-41d7-9343-5395dc8a172b",
"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": 16,
"id": "d36a7f1a-5d3d-4619-88e0-c8cea6a82b0d",
"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.00082780143452558,
1.227629527401435
],
"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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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dynamics.plot_step_sizes(show_intervals=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2b01d1d8-b442-4754-879f-b4ad88ec80cb",
"metadata": {},
"outputs": [],
"source": []
},
{
"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 the inner workings of the step-size changes"
]
},
{
"cell_type": "markdown",
"id": "c910ec1f-0453-48bb-b342-83bf46f78df7",
"metadata": {},
"source": [
"NOTE: this part is NOT meant for typically end users. It's for debugging, and for anyone interested in taking an \"under the hood\" look"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "74ee2506-6684-4338-bb95-d88f1656125e",
"metadata": {},
"outputs": [],
"source": [
"diagnostics = dynamics.diagnostics # Available because we turned on diagnostics"
]
},
{
"cell_type": "markdown",
"id": "1bb39a84-2b5e-4c9f-b4ec-7dd9d1b02c54",
"metadata": {},
"source": [
"The \"Diagnostics\" object contains a treasure trove of data and methods yo get insights into the inner workings of the simulation. \n",
"Diagnostic data was saved because of the call to `enable_diagnostics()` prior to running the reaction"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "cf5cc033-dc33-4f8b-9a7c-46dda6845f9f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"life123.diagnostics.Diagnostics"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(diagnostics)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"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": [
"# Let's revisit the variables steps taken\n",
"dynamics.diagnostics.explain_time_advance()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b745736d-292c-42c8-bc3d-96faeb21c12a",
"metadata": {},
"outputs": [],
"source": []
},
{
"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 be inspected from the diagnostic data:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"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",
" time_step | \n",
" Delta A | \n",
" Delta B | \n",
" rate | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.000000 | \n",
" 0.100000 | \n",
" 7.000000 | \n",
" -7.000000 | \n",
" -70.000000 | \n",
" aborted: excessive norm value(s) | \n",
"
\n",
" \n",
" 1 | \n",
" 0.000000 | \n",
" 0.040000 | \n",
" 2.800000 | \n",
" -2.800000 | \n",
" -70.000000 | \n",
" aborted: excessive norm value(s) | \n",
"
\n",
" \n",
" 2 | \n",
" 0.000000 | \n",
" 0.016000 | \n",
" 1.120000 | \n",
" -1.120000 | \n",
" -70.000000 | \n",
" | \n",
"
\n",
" \n",
" 3 | \n",
" 0.016000 | \n",
" 0.016000 | \n",
" 1.030400 | \n",
" -1.030400 | \n",
" -64.400000 | \n",
" | \n",
"
\n",
" \n",
" 4 | \n",
" 0.032000 | \n",
" 0.016000 | \n",
" 0.947968 | \n",
" -0.947968 | \n",
" -59.248000 | \n",
" | \n",
"
\n",
" \n",
" 5 | \n",
" 0.048000 | \n",
" 0.019200 | \n",
" 1.046557 | \n",
" -1.046557 | \n",
" -54.508160 | \n",
" | \n",
"
\n",
" \n",
" 6 | \n",
" 0.067200 | \n",
" 0.019200 | \n",
" 0.946087 | \n",
" -0.946087 | \n",
" -49.275377 | \n",
" | \n",
"
\n",
" \n",
" 7 | \n",
" 0.086400 | \n",
" 0.023040 | \n",
" 1.026315 | \n",
" -1.026315 | \n",
" -44.544940 | \n",
" | \n",
"
\n",
" \n",
" 8 | \n",
" 0.109440 | \n",
" 0.023040 | \n",
" 0.908084 | \n",
" -0.908084 | \n",
" -39.413363 | \n",
" | \n",
"
\n",
" \n",
" 9 | \n",
" 0.132480 | \n",
" 0.027648 | \n",
" 0.964167 | \n",
" -0.964167 | \n",
" -34.872944 | \n",
" | \n",
"
\n",
" \n",
" 10 | \n",
" 0.160128 | \n",
" 0.033178 | \n",
" 0.997057 | \n",
" -0.997057 | \n",
" -30.052108 | \n",
" | \n",
"
\n",
" \n",
" 11 | \n",
" 0.193306 | \n",
" 0.039813 | \n",
" 0.997988 | \n",
" -0.997988 | \n",
" -25.066824 | \n",
" | \n",
"
\n",
" \n",
" 12 | \n",
" 0.233119 | \n",
" 0.047776 | \n",
" 0.959188 | \n",
" -0.959188 | \n",
" -20.076882 | \n",
" | \n",
"
\n",
" \n",
" 13 | \n",
" 0.280894 | \n",
" 0.057331 | \n",
" 0.876070 | \n",
" -0.876070 | \n",
" -15.280942 | \n",
" | \n",
"
\n",
" \n",
" 14 | \n",
" 0.338225 | \n",
" 0.068797 | \n",
" 0.749929 | \n",
" -0.749929 | \n",
" -10.900592 | \n",
" | \n",
"
\n",
" \n",
" 15 | \n",
" 0.407022 | \n",
" 0.082556 | \n",
" 0.590357 | \n",
" -0.590357 | \n",
" -7.150948 | \n",
" | \n",
"
\n",
" \n",
" 16 | \n",
" 0.489579 | \n",
" 0.099068 | \n",
" 0.416002 | \n",
" -0.416002 | \n",
" -4.199162 | \n",
" | \n",
"
\n",
" \n",
" 17 | \n",
" 0.588647 | \n",
" 0.118881 | \n",
" 0.251928 | \n",
" -0.251928 | \n",
" -2.119154 | \n",
" | \n",
"
\n",
" \n",
" 18 | \n",
" 0.707528 | \n",
" 0.142658 | \n",
" 0.122616 | \n",
" -0.122616 | \n",
" -0.859515 | \n",
" | \n",
"
\n",
" \n",
" 19 | \n",
" 0.850186 | \n",
" 0.171189 | \n",
" 0.042187 | \n",
" -0.042187 | \n",
" -0.246433 | \n",
" | \n",
"
\n",
" \n",
" 20 | \n",
" 1.021375 | \n",
" 0.205427 | \n",
" 0.007293 | \n",
" -0.007293 | \n",
" -0.035500 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" START_TIME time_step Delta A Delta B rate \\\n",
"0 0.000000 0.100000 7.000000 -7.000000 -70.000000 \n",
"1 0.000000 0.040000 2.800000 -2.800000 -70.000000 \n",
"2 0.000000 0.016000 1.120000 -1.120000 -70.000000 \n",
"3 0.016000 0.016000 1.030400 -1.030400 -64.400000 \n",
"4 0.032000 0.016000 0.947968 -0.947968 -59.248000 \n",
"5 0.048000 0.019200 1.046557 -1.046557 -54.508160 \n",
"6 0.067200 0.019200 0.946087 -0.946087 -49.275377 \n",
"7 0.086400 0.023040 1.026315 -1.026315 -44.544940 \n",
"8 0.109440 0.023040 0.908084 -0.908084 -39.413363 \n",
"9 0.132480 0.027648 0.964167 -0.964167 -34.872944 \n",
"10 0.160128 0.033178 0.997057 -0.997057 -30.052108 \n",
"11 0.193306 0.039813 0.997988 -0.997988 -25.066824 \n",
"12 0.233119 0.047776 0.959188 -0.959188 -20.076882 \n",
"13 0.280894 0.057331 0.876070 -0.876070 -15.280942 \n",
"14 0.338225 0.068797 0.749929 -0.749929 -10.900592 \n",
"15 0.407022 0.082556 0.590357 -0.590357 -7.150948 \n",
"16 0.489579 0.099068 0.416002 -0.416002 -4.199162 \n",
"17 0.588647 0.118881 0.251928 -0.251928 -2.119154 \n",
"18 0.707528 0.142658 0.122616 -0.122616 -0.859515 \n",
"19 0.850186 0.171189 0.042187 -0.042187 -0.246433 \n",
"20 1.021375 0.205427 0.007293 -0.007293 -0.035500 \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": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diagnostics.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 - in the above listing - also records the values that were considered (but not actually used) during *ABORTED* steps. For example, in steps 0-2, above, the START_TIME remains the same, as the time_step gets progressively reduced until the resulting changes are deemed acceptable."
]
},
{
"cell_type": "markdown",
"id": "93e5050c-38c9-42d0-ad9c-bdea00db6040",
"metadata": {},
"source": [
"Line 2, above, shows that the concentration of the product [B], which was set by us to an initial value of 50, gets affected by a **rate of change of -70**, sustained over a delta_time of 0.016 . \n",
"The reaction rate is negative because _the product is decreasing._ \n",
"The new value for [B] is: "
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "3283e0b5-3098-4572-aeb7-a83b54dada1e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"48.88"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"50. - 70. * 0.016"
]
},
{
"cell_type": "markdown",
"id": "380d6e79-ba9a-4d36-be6e-f8e7a5fa47db",
"metadata": {},
"source": [
"That's indeed the value we saw in the history of the product [B] at time t=0.016 :"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "e227e37b-9b0e-4f76-aa80-7f041eaf4244",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" search_value | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" 1 | \n",
" 0.016 | \n",
" 0.016 | \n",
" 11.12 | \n",
" 48.88 | \n",
" 1st reaction step | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" search_value SYSTEM TIME A B caption\n",
"1 0.016 0.016 11.12 48.88 1st reaction step"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.get_history(t=0.016)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e30f292d-b9ae-4034-a615-39b2986a0483",
"metadata": {},
"outputs": [],
"source": []
},
{
"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": 23,
"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": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"history[1:4]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "d7c7164a-0350-4549-874a-5084a04160a5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.0304, -1.0304], dtype=float32)"
]
},
"execution_count": 24,
"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": 25,
"id": "199858ec-ee69-4581-a4b8-58a6948de536",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([11.12, 48.88], dtype=float32)"
]
},
"execution_count": 25,
"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": 26,
"id": "aeb179e2-27a0-41b6-a6f0-3dfff52abeae",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'action': 'stay',\n",
" 'step_factor': 1,\n",
" 'norms': {'norm_A': 0.5308620929718018, 'norm_B': 0.09266187},\n",
" 'applicable_norms': 'ALL'}"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Computes some measures of how large delta_concentrations is, and propose a course of action\n",
"dynamics.adaptive_steps.adjust_timestep(delta_conc=delta_concentrations, baseline_conc=baseline_conc,\n",
" n_chems=2, indexes_of_active_chemicals=dynamics.chem_data.indexes_of_active_chemicals()) "
]
},
{
"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": 27,
"id": "e5f56eb8-36d8-441b-8598-dd94c1d1be58",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.016000000000000004"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"original_step = history[\"SYSTEM TIME\"][2] - history[\"SYSTEM TIME\"][1]\n",
"original_step"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "72d25589",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.016000000000000007"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"next_step = history[\"SYSTEM TIME\"][3] - history[\"SYSTEM TIME\"][2]\n",
"next_step"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "aa7fee98",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0000000000000002"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"next_step / original_step"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a07edd4c-0f94-494b-a7c2-0b1007d824d1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "c96e6b0c-b343-445c-8d76-a01f2bed7d30",
"metadata": {
"tags": []
},
"source": [
"### Example 2: **very late in the run** "
]
},
{
"cell_type": "code",
"execution_count": 30,
"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": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"history[17:20]"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "28f3a54f-f5a4-420f-be44-912b58a31cea",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.04218667, -0.04218667], dtype=float32)"
]
},
"execution_count": 31,
"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": 32,
"id": "95c676b7-ce6e-4228-99c2-bdd0f75a4ce2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([23.950714, 36.049286], dtype=float32)"
]
},
"execution_count": 32,
"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": 33,
"id": "281220ff-55c6-4b0a-ae62-037133174efd",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'action': 'low',\n",
" 'step_factor': 1.2,\n",
" 'norms': {'norm_A': 0.0008898575906641781, 'norm_B': 0.0017613951},\n",
" 'applicable_norms': 'ALL'}"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Computes a measure of how large delta_concentrations is, and propose a course of action\n",
"dynamics.adaptive_steps.adjust_timestep(delta_conc=delta_concentrations, baseline_conc=baseline_conc,\n",
" n_chems=2, indexes_of_active_chemicals=dynamics.chem_data.indexes_of_active_chemicals()) "
]
},
{
"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": 34,
"id": "0522109c-64e3-46f1-8f43-36360dc6a381",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.17118912860651525"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"original_step = history[\"SYSTEM TIME\"][18] - history[\"SYSTEM TIME\"][17]\n",
"original_step"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "a177ec82-5600-4b21-ba15-79324f72d44c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.2054269543278182"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"next_step = history[\"SYSTEM TIME\"][19] - history[\"SYSTEM TIME\"][18]\n",
"next_step"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "09104a03-3335-403b-96f4-fa2cddad6f92",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.1999999999999995"
]
},
"execution_count": 36,
"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": 37,
"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, 'error': 0.25}\n"
]
}
],
"source": [
"dynamics.adaptive_steps.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": 38,
"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": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diagnostics.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": 39,
"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",
" 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",
" 7.000000 | \n",
" -7.000000 | \n",
" 24.500000 | \n",
" NaN | \n",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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",
" None | \n",
" None | \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 norm_C norm_D \\\n",
"0 0.000000 7.000000 -7.000000 24.500000 NaN None None \n",
"1 0.000000 2.800000 -2.800000 3.920000 NaN None None \n",
"2 0.000000 1.120000 -1.120000 0.627200 0.112000 None None \n",
"3 0.016000 1.030400 -1.030400 0.530862 0.092662 None None \n",
"4 0.032000 0.947968 -0.947968 0.449322 0.078019 None None \n",
"5 0.048000 1.046557 -1.046557 0.547640 0.079900 None None \n",
"6 0.067200 0.946087 -0.946087 0.447541 0.066885 None None \n",
"7 0.086400 1.026315 -1.026315 0.526662 0.068008 None None \n",
"8 0.109440 0.908084 -0.908084 0.412308 0.056342 None None \n",
"9 0.132480 0.964167 -0.964167 0.464809 0.056631 None None \n",
"10 0.160128 0.997057 -0.997057 0.497061 0.055424 None None \n",
"11 0.193306 0.997988 -0.997988 0.497990 0.052563 None None \n",
"12 0.233119 0.959188 -0.959188 0.460021 0.047996 None None \n",
"13 0.280894 0.876070 -0.876070 0.383749 0.041830 None None \n",
"14 0.338225 0.749929 -0.749929 0.281197 0.034369 None None \n",
"15 0.407022 0.590357 -0.590357 0.174261 0.026157 None None \n",
"16 0.489579 0.416002 -0.416002 0.086529 0.017962 None None \n",
"17 0.588647 0.251928 -0.251928 0.031734 0.010686 None None \n",
"18 0.707528 0.122616 -0.122616 0.007517 0.005146 None None \n",
"19 0.850186 0.042187 -0.042187 0.000890 0.001761 None None \n",
"20 1.021375 0.007293 -0.007293 0.000027 0.000304 None None \n",
"\n",
" action step_factor time_step caption \n",
"0 ABORT 0.4 0.100000 excessive norm value(s) \n",
"1 ABORT 0.4 0.040000 excessive norm value(s) \n",
"2 OK (stay) 1.0 0.016000 \n",
"3 OK (stay) 1.0 0.016000 \n",
"4 OK (low) 1.2 0.016000 \n",
"5 OK (stay) 1.0 0.019200 \n",
"6 OK (low) 1.2 0.019200 \n",
"7 OK (stay) 1.0 0.023040 \n",
"8 OK (low) 1.2 0.023040 \n",
"9 OK (low) 1.2 0.027648 \n",
"10 OK (low) 1.2 0.033178 \n",
"11 OK (low) 1.2 0.039813 \n",
"12 OK (low) 1.2 0.047776 \n",
"13 OK (low) 1.2 0.057331 \n",
"14 OK (low) 1.2 0.068797 \n",
"15 OK (low) 1.2 0.082556 \n",
"16 OK (low) 1.2 0.099068 \n",
"17 OK (low) 1.2 0.118881 \n",
"18 OK (low) 1.2 0.142658 \n",
"19 OK (low) 1.2 0.171189 \n",
"20 OK (low) 1.2 0.205427 "
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diagnostics.get_diagnostic_decisions_data()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1a0f579c-a3ae-49ba-8057-da68e5abca0f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "cccd3c9a-e0f8-4f84-9871-753d0ad86a26",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "de785658-4ea1-4c2a-b55d-c0798a53ffaf",
"metadata": {},
"source": [
"# PART 3 - Investigate A_dot, i.e. d[A]/dt"
]
},
{
"cell_type": "markdown",
"id": "7d1c6c79-5506-4b54-b08f-bb7a1659e5dd",
"metadata": {},
"source": [
"In experiment `react_2_a`, the time derivative (rate of change) of [A] was obtained by numeric differentiation of [A](t), i.e. the time values of [A] \n",
" \n",
"But no need for that! **The rates (at every time step) of each reaction are automatically stored with the diagnostics data, whenever diagnostics data is saved** :) \n",
"\n",
"Let's again look at the table for reaction 0 :"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "2d5464c3-638c-46ca-9463-a6fd2499f2f8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reaction: A <-> B\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" START_TIME | \n",
" time_step | \n",
" Delta A | \n",
" Delta B | \n",
" rate | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.000000 | \n",
" 0.100000 | \n",
" 7.000000 | \n",
" -7.000000 | \n",
" -70.000000 | \n",
" aborted: excessive norm value(s) | \n",
"
\n",
" \n",
" 1 | \n",
" 0.000000 | \n",
" 0.040000 | \n",
" 2.800000 | \n",
" -2.800000 | \n",
" -70.000000 | \n",
" aborted: excessive norm value(s) | \n",
"
\n",
" \n",
" 2 | \n",
" 0.000000 | \n",
" 0.016000 | \n",
" 1.120000 | \n",
" -1.120000 | \n",
" -70.000000 | \n",
" | \n",
"
\n",
" \n",
" 3 | \n",
" 0.016000 | \n",
" 0.016000 | \n",
" 1.030400 | \n",
" -1.030400 | \n",
" -64.400000 | \n",
" | \n",
"
\n",
" \n",
" 4 | \n",
" 0.032000 | \n",
" 0.016000 | \n",
" 0.947968 | \n",
" -0.947968 | \n",
" -59.248000 | \n",
" | \n",
"
\n",
" \n",
" 5 | \n",
" 0.048000 | \n",
" 0.019200 | \n",
" 1.046557 | \n",
" -1.046557 | \n",
" -54.508160 | \n",
" | \n",
"
\n",
" \n",
" 6 | \n",
" 0.067200 | \n",
" 0.019200 | \n",
" 0.946087 | \n",
" -0.946087 | \n",
" -49.275377 | \n",
" | \n",
"
\n",
" \n",
" 7 | \n",
" 0.086400 | \n",
" 0.023040 | \n",
" 1.026315 | \n",
" -1.026315 | \n",
" -44.544940 | \n",
" | \n",
"
\n",
" \n",
" 8 | \n",
" 0.109440 | \n",
" 0.023040 | \n",
" 0.908084 | \n",
" -0.908084 | \n",
" -39.413363 | \n",
" | \n",
"
\n",
" \n",
" 9 | \n",
" 0.132480 | \n",
" 0.027648 | \n",
" 0.964167 | \n",
" -0.964167 | \n",
" -34.872944 | \n",
" | \n",
"
\n",
" \n",
" 10 | \n",
" 0.160128 | \n",
" 0.033178 | \n",
" 0.997057 | \n",
" -0.997057 | \n",
" -30.052108 | \n",
" | \n",
"
\n",
" \n",
" 11 | \n",
" 0.193306 | \n",
" 0.039813 | \n",
" 0.997988 | \n",
" -0.997988 | \n",
" -25.066824 | \n",
" | \n",
"
\n",
" \n",
" 12 | \n",
" 0.233119 | \n",
" 0.047776 | \n",
" 0.959188 | \n",
" -0.959188 | \n",
" -20.076882 | \n",
" | \n",
"
\n",
" \n",
" 13 | \n",
" 0.280894 | \n",
" 0.057331 | \n",
" 0.876070 | \n",
" -0.876070 | \n",
" -15.280942 | \n",
" | \n",
"
\n",
" \n",
" 14 | \n",
" 0.338225 | \n",
" 0.068797 | \n",
" 0.749929 | \n",
" -0.749929 | \n",
" -10.900592 | \n",
" | \n",
"
\n",
" \n",
" 15 | \n",
" 0.407022 | \n",
" 0.082556 | \n",
" 0.590357 | \n",
" -0.590357 | \n",
" -7.150948 | \n",
" | \n",
"
\n",
" \n",
" 16 | \n",
" 0.489579 | \n",
" 0.099068 | \n",
" 0.416002 | \n",
" -0.416002 | \n",
" -4.199162 | \n",
" | \n",
"
\n",
" \n",
" 17 | \n",
" 0.588647 | \n",
" 0.118881 | \n",
" 0.251928 | \n",
" -0.251928 | \n",
" -2.119154 | \n",
" | \n",
"
\n",
" \n",
" 18 | \n",
" 0.707528 | \n",
" 0.142658 | \n",
" 0.122616 | \n",
" -0.122616 | \n",
" -0.859515 | \n",
" | \n",
"
\n",
" \n",
" 19 | \n",
" 0.850186 | \n",
" 0.171189 | \n",
" 0.042187 | \n",
" -0.042187 | \n",
" -0.246433 | \n",
" | \n",
"
\n",
" \n",
" 20 | \n",
" 1.021375 | \n",
" 0.205427 | \n",
" 0.007293 | \n",
" -0.007293 | \n",
" -0.035500 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" START_TIME time_step Delta A Delta B rate \\\n",
"0 0.000000 0.100000 7.000000 -7.000000 -70.000000 \n",
"1 0.000000 0.040000 2.800000 -2.800000 -70.000000 \n",
"2 0.000000 0.016000 1.120000 -1.120000 -70.000000 \n",
"3 0.016000 0.016000 1.030400 -1.030400 -64.400000 \n",
"4 0.032000 0.016000 0.947968 -0.947968 -59.248000 \n",
"5 0.048000 0.019200 1.046557 -1.046557 -54.508160 \n",
"6 0.067200 0.019200 0.946087 -0.946087 -49.275377 \n",
"7 0.086400 0.023040 1.026315 -1.026315 -44.544940 \n",
"8 0.109440 0.023040 0.908084 -0.908084 -39.413363 \n",
"9 0.132480 0.027648 0.964167 -0.964167 -34.872944 \n",
"10 0.160128 0.033178 0.997057 -0.997057 -30.052108 \n",
"11 0.193306 0.039813 0.997988 -0.997988 -25.066824 \n",
"12 0.233119 0.047776 0.959188 -0.959188 -20.076882 \n",
"13 0.280894 0.057331 0.876070 -0.876070 -15.280942 \n",
"14 0.338225 0.068797 0.749929 -0.749929 -10.900592 \n",
"15 0.407022 0.082556 0.590357 -0.590357 -7.150948 \n",
"16 0.489579 0.099068 0.416002 -0.416002 -4.199162 \n",
"17 0.588647 0.118881 0.251928 -0.251928 -2.119154 \n",
"18 0.707528 0.142658 0.122616 -0.122616 -0.859515 \n",
"19 0.850186 0.171189 0.042187 -0.042187 -0.246433 \n",
"20 1.021375 0.205427 0.007293 -0.007293 -0.035500 \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": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = diagnostics.get_diagnostic_rxn_data(rxn_index=0) # For the 0-th reaction (the only reaction in our case)\n",
"df"
]
},
{
"cell_type": "markdown",
"id": "cfe3afb6-d659-4985-bcda-551783a9c63f",
"metadata": {},
"source": [
"#### Note that **reaction rates** are defined for the reaction _products_. So, for `A`, a reactant, we must flip the sign; since the stoichiometry of `A` is simply 1, no further adjustment needed."
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "2c932a18-10ff-4857-afa7-a3bd48e53d5e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" START_TIME | \n",
" time_step | \n",
" Delta A | \n",
" Delta B | \n",
" rate | \n",
" caption | \n",
" A_dot | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.000000 | \n",
" 0.100000 | \n",
" 7.000000 | \n",
" -7.000000 | \n",
" -70.000000 | \n",
" aborted: excessive norm value(s) | \n",
" 70.000000 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.000000 | \n",
" 0.040000 | \n",
" 2.800000 | \n",
" -2.800000 | \n",
" -70.000000 | \n",
" aborted: excessive norm value(s) | \n",
" 70.000000 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.000000 | \n",
" 0.016000 | \n",
" 1.120000 | \n",
" -1.120000 | \n",
" -70.000000 | \n",
" | \n",
" 70.000000 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.016000 | \n",
" 0.016000 | \n",
" 1.030400 | \n",
" -1.030400 | \n",
" -64.400000 | \n",
" | \n",
" 64.400000 | \n",
"
\n",
" \n",
" 4 | \n",
" 0.032000 | \n",
" 0.016000 | \n",
" 0.947968 | \n",
" -0.947968 | \n",
" -59.248000 | \n",
" | \n",
" 59.248000 | \n",
"
\n",
" \n",
" 5 | \n",
" 0.048000 | \n",
" 0.019200 | \n",
" 1.046557 | \n",
" -1.046557 | \n",
" -54.508160 | \n",
" | \n",
" 54.508160 | \n",
"
\n",
" \n",
" 6 | \n",
" 0.067200 | \n",
" 0.019200 | \n",
" 0.946087 | \n",
" -0.946087 | \n",
" -49.275377 | \n",
" | \n",
" 49.275377 | \n",
"
\n",
" \n",
" 7 | \n",
" 0.086400 | \n",
" 0.023040 | \n",
" 1.026315 | \n",
" -1.026315 | \n",
" -44.544940 | \n",
" | \n",
" 44.544940 | \n",
"
\n",
" \n",
" 8 | \n",
" 0.109440 | \n",
" 0.023040 | \n",
" 0.908084 | \n",
" -0.908084 | \n",
" -39.413363 | \n",
" | \n",
" 39.413363 | \n",
"
\n",
" \n",
" 9 | \n",
" 0.132480 | \n",
" 0.027648 | \n",
" 0.964167 | \n",
" -0.964167 | \n",
" -34.872944 | \n",
" | \n",
" 34.872944 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.160128 | \n",
" 0.033178 | \n",
" 0.997057 | \n",
" -0.997057 | \n",
" -30.052108 | \n",
" | \n",
" 30.052108 | \n",
"
\n",
" \n",
" 11 | \n",
" 0.193306 | \n",
" 0.039813 | \n",
" 0.997988 | \n",
" -0.997988 | \n",
" -25.066824 | \n",
" | \n",
" 25.066824 | \n",
"
\n",
" \n",
" 12 | \n",
" 0.233119 | \n",
" 0.047776 | \n",
" 0.959188 | \n",
" -0.959188 | \n",
" -20.076882 | \n",
" | \n",
" 20.076882 | \n",
"
\n",
" \n",
" 13 | \n",
" 0.280894 | \n",
" 0.057331 | \n",
" 0.876070 | \n",
" -0.876070 | \n",
" -15.280942 | \n",
" | \n",
" 15.280942 | \n",
"
\n",
" \n",
" 14 | \n",
" 0.338225 | \n",
" 0.068797 | \n",
" 0.749929 | \n",
" -0.749929 | \n",
" -10.900592 | \n",
" | \n",
" 10.900592 | \n",
"
\n",
" \n",
" 15 | \n",
" 0.407022 | \n",
" 0.082556 | \n",
" 0.590357 | \n",
" -0.590357 | \n",
" -7.150948 | \n",
" | \n",
" 7.150948 | \n",
"
\n",
" \n",
" 16 | \n",
" 0.489579 | \n",
" 0.099068 | \n",
" 0.416002 | \n",
" -0.416002 | \n",
" -4.199162 | \n",
" | \n",
" 4.199162 | \n",
"
\n",
" \n",
" 17 | \n",
" 0.588647 | \n",
" 0.118881 | \n",
" 0.251928 | \n",
" -0.251928 | \n",
" -2.119154 | \n",
" | \n",
" 2.119154 | \n",
"
\n",
" \n",
" 18 | \n",
" 0.707528 | \n",
" 0.142658 | \n",
" 0.122616 | \n",
" -0.122616 | \n",
" -0.859515 | \n",
" | \n",
" 0.859515 | \n",
"
\n",
" \n",
" 19 | \n",
" 0.850186 | \n",
" 0.171189 | \n",
" 0.042187 | \n",
" -0.042187 | \n",
" -0.246433 | \n",
" | \n",
" 0.246433 | \n",
"
\n",
" \n",
" 20 | \n",
" 1.021375 | \n",
" 0.205427 | \n",
" 0.007293 | \n",
" -0.007293 | \n",
" -0.035500 | \n",
" | \n",
" 0.035500 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" START_TIME time_step Delta A Delta B rate \\\n",
"0 0.000000 0.100000 7.000000 -7.000000 -70.000000 \n",
"1 0.000000 0.040000 2.800000 -2.800000 -70.000000 \n",
"2 0.000000 0.016000 1.120000 -1.120000 -70.000000 \n",
"3 0.016000 0.016000 1.030400 -1.030400 -64.400000 \n",
"4 0.032000 0.016000 0.947968 -0.947968 -59.248000 \n",
"5 0.048000 0.019200 1.046557 -1.046557 -54.508160 \n",
"6 0.067200 0.019200 0.946087 -0.946087 -49.275377 \n",
"7 0.086400 0.023040 1.026315 -1.026315 -44.544940 \n",
"8 0.109440 0.023040 0.908084 -0.908084 -39.413363 \n",
"9 0.132480 0.027648 0.964167 -0.964167 -34.872944 \n",
"10 0.160128 0.033178 0.997057 -0.997057 -30.052108 \n",
"11 0.193306 0.039813 0.997988 -0.997988 -25.066824 \n",
"12 0.233119 0.047776 0.959188 -0.959188 -20.076882 \n",
"13 0.280894 0.057331 0.876070 -0.876070 -15.280942 \n",
"14 0.338225 0.068797 0.749929 -0.749929 -10.900592 \n",
"15 0.407022 0.082556 0.590357 -0.590357 -7.150948 \n",
"16 0.489579 0.099068 0.416002 -0.416002 -4.199162 \n",
"17 0.588647 0.118881 0.251928 -0.251928 -2.119154 \n",
"18 0.707528 0.142658 0.122616 -0.122616 -0.859515 \n",
"19 0.850186 0.171189 0.042187 -0.042187 -0.246433 \n",
"20 1.021375 0.205427 0.007293 -0.007293 -0.035500 \n",
"\n",
" caption A_dot \n",
"0 aborted: excessive norm value(s) 70.000000 \n",
"1 aborted: excessive norm value(s) 70.000000 \n",
"2 70.000000 \n",
"3 64.400000 \n",
"4 59.248000 \n",
"5 54.508160 \n",
"6 49.275377 \n",
"7 44.544940 \n",
"8 39.413363 \n",
"9 34.872944 \n",
"10 30.052108 \n",
"11 25.066824 \n",
"12 20.076882 \n",
"13 15.280942 \n",
"14 10.900592 \n",
"15 7.150948 \n",
"16 4.199162 \n",
"17 2.119154 \n",
"18 0.859515 \n",
"19 0.246433 \n",
"20 0.035500 "
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"A_dot\"] = -df[\"rate\"]\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "f21b76a5-a211-4344-a5b9-0aff8f3aa27b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" START_TIME | \n",
" time_step | \n",
" Delta A | \n",
" Delta B | \n",
" rate | \n",
" caption | \n",
" A_dot | \n",
"
\n",
" \n",
" \n",
" \n",
" 2 | \n",
" 0.000000 | \n",
" 0.016000 | \n",
" 1.120000 | \n",
" -1.120000 | \n",
" -70.000000 | \n",
" | \n",
" 70.000000 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.016000 | \n",
" 0.016000 | \n",
" 1.030400 | \n",
" -1.030400 | \n",
" -64.400000 | \n",
" | \n",
" 64.400000 | \n",
"
\n",
" \n",
" 4 | \n",
" 0.032000 | \n",
" 0.016000 | \n",
" 0.947968 | \n",
" -0.947968 | \n",
" -59.248000 | \n",
" | \n",
" 59.248000 | \n",
"
\n",
" \n",
" 5 | \n",
" 0.048000 | \n",
" 0.019200 | \n",
" 1.046557 | \n",
" -1.046557 | \n",
" -54.508160 | \n",
" | \n",
" 54.508160 | \n",
"
\n",
" \n",
" 6 | \n",
" 0.067200 | \n",
" 0.019200 | \n",
" 0.946087 | \n",
" -0.946087 | \n",
" -49.275377 | \n",
" | \n",
" 49.275377 | \n",
"
\n",
" \n",
" 7 | \n",
" 0.086400 | \n",
" 0.023040 | \n",
" 1.026315 | \n",
" -1.026315 | \n",
" -44.544940 | \n",
" | \n",
" 44.544940 | \n",
"
\n",
" \n",
" 8 | \n",
" 0.109440 | \n",
" 0.023040 | \n",
" 0.908084 | \n",
" -0.908084 | \n",
" -39.413363 | \n",
" | \n",
" 39.413363 | \n",
"
\n",
" \n",
" 9 | \n",
" 0.132480 | \n",
" 0.027648 | \n",
" 0.964167 | \n",
" -0.964167 | \n",
" -34.872944 | \n",
" | \n",
" 34.872944 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.160128 | \n",
" 0.033178 | \n",
" 0.997057 | \n",
" -0.997057 | \n",
" -30.052108 | \n",
" | \n",
" 30.052108 | \n",
"
\n",
" \n",
" 11 | \n",
" 0.193306 | \n",
" 0.039813 | \n",
" 0.997988 | \n",
" -0.997988 | \n",
" -25.066824 | \n",
" | \n",
" 25.066824 | \n",
"
\n",
" \n",
" 12 | \n",
" 0.233119 | \n",
" 0.047776 | \n",
" 0.959188 | \n",
" -0.959188 | \n",
" -20.076882 | \n",
" | \n",
" 20.076882 | \n",
"
\n",
" \n",
" 13 | \n",
" 0.280894 | \n",
" 0.057331 | \n",
" 0.876070 | \n",
" -0.876070 | \n",
" -15.280942 | \n",
" | \n",
" 15.280942 | \n",
"
\n",
" \n",
" 14 | \n",
" 0.338225 | \n",
" 0.068797 | \n",
" 0.749929 | \n",
" -0.749929 | \n",
" -10.900592 | \n",
" | \n",
" 10.900592 | \n",
"
\n",
" \n",
" 15 | \n",
" 0.407022 | \n",
" 0.082556 | \n",
" 0.590357 | \n",
" -0.590357 | \n",
" -7.150948 | \n",
" | \n",
" 7.150948 | \n",
"
\n",
" \n",
" 16 | \n",
" 0.489579 | \n",
" 0.099068 | \n",
" 0.416002 | \n",
" -0.416002 | \n",
" -4.199162 | \n",
" | \n",
" 4.199162 | \n",
"
\n",
" \n",
" 17 | \n",
" 0.588647 | \n",
" 0.118881 | \n",
" 0.251928 | \n",
" -0.251928 | \n",
" -2.119154 | \n",
" | \n",
" 2.119154 | \n",
"
\n",
" \n",
" 18 | \n",
" 0.707528 | \n",
" 0.142658 | \n",
" 0.122616 | \n",
" -0.122616 | \n",
" -0.859515 | \n",
" | \n",
" 0.859515 | \n",
"
\n",
" \n",
" 19 | \n",
" 0.850186 | \n",
" 0.171189 | \n",
" 0.042187 | \n",
" -0.042187 | \n",
" -0.246433 | \n",
" | \n",
" 0.246433 | \n",
"
\n",
" \n",
" 20 | \n",
" 1.021375 | \n",
" 0.205427 | \n",
" 0.007293 | \n",
" -0.007293 | \n",
" -0.035500 | \n",
" | \n",
" 0.035500 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" START_TIME time_step Delta A Delta B rate caption A_dot\n",
"2 0.000000 0.016000 1.120000 -1.120000 -70.000000 70.000000\n",
"3 0.016000 0.016000 1.030400 -1.030400 -64.400000 64.400000\n",
"4 0.032000 0.016000 0.947968 -0.947968 -59.248000 59.248000\n",
"5 0.048000 0.019200 1.046557 -1.046557 -54.508160 54.508160\n",
"6 0.067200 0.019200 0.946087 -0.946087 -49.275377 49.275377\n",
"7 0.086400 0.023040 1.026315 -1.026315 -44.544940 44.544940\n",
"8 0.109440 0.023040 0.908084 -0.908084 -39.413363 39.413363\n",
"9 0.132480 0.027648 0.964167 -0.964167 -34.872944 34.872944\n",
"10 0.160128 0.033178 0.997057 -0.997057 -30.052108 30.052108\n",
"11 0.193306 0.039813 0.997988 -0.997988 -25.066824 25.066824\n",
"12 0.233119 0.047776 0.959188 -0.959188 -20.076882 20.076882\n",
"13 0.280894 0.057331 0.876070 -0.876070 -15.280942 15.280942\n",
"14 0.338225 0.068797 0.749929 -0.749929 -10.900592 10.900592\n",
"15 0.407022 0.082556 0.590357 -0.590357 -7.150948 7.150948\n",
"16 0.489579 0.099068 0.416002 -0.416002 -4.199162 4.199162\n",
"17 0.588647 0.118881 0.251928 -0.251928 -2.119154 2.119154\n",
"18 0.707528 0.142658 0.122616 -0.122616 -0.859515 0.859515\n",
"19 0.850186 0.171189 0.042187 -0.042187 -0.246433 0.246433\n",
"20 1.021375 0.205427 0.007293 -0.007293 -0.035500 0.035500"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = df[2:] # Drop the aborted first 2 steps\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "6cb5759f-4365-42f3-ba3b-7655c71f42f0",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A_dot
START_TIME=%{x}
concentration change/unit time=%{y}",
"legendgroup": "A_dot",
"line": {
"color": "brown",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A_dot",
"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
],
"xaxis": "x",
"y": [
70,
64.4,
59.248000000000005,
54.50816,
49.27537664,
44.544940482559994,
39.41336333896908,
34.87294388231984,
30.05210812002794,
25.066824008212734,
20.076881646923468,
15.28094185751489,
10.900591659933795,
7.150947748460368,
4.1991621732056075,
2.1191537434934844,
0.8595145673411082,
0.24643310980890476,
0.03549976316899972
],
"yaxis": "y"
}
],
"layout": {
"autosize": true,
"legend": {
"title": {
"text": "Chemical"
},
"tracegroupgap": 0
},
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmapgl"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Rate of change of of A with time"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
1.0213747716390913
],
"title": {
"text": "START_TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-3.8514169166549443,
73.88691667982394
],
"title": {
"text": "concentration change/unit time"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"p1 = PlotlyHelper.plot_pandas(df=df, x_var=\"START_TIME\", fields=[\"A_dot\"], colors=['brown'], \n",
" ylabel=\"concentration change/unit time\",\n",
" title=\"Rate of change of of A with time\")\n",
"p1"
]
},
{
"cell_type": "markdown",
"id": "83501854-f0d3-492c-93b9-8065bfeb8601",
"metadata": {},
"source": [
"Let's create a combined plot like we had in experiment `react_2_a`:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "8bed8066-7e09-40b0-8329-90b29433a71e",
"metadata": {},
"outputs": [],
"source": [
"p2 = dynamics.plot_history(chemicals=\"A\", colors='darkturquoise') # The plot of [A] vs. time that we saw earlier"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "fb25c52e-96fc-4b5d-b54c-5f5b6af12b50",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "A
Chemical=A_dot
START_TIME=%{x}
concentration change/unit time=%{y}",
"legendgroup": "A_dot",
"line": {
"color": "brown",
"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
],
"xaxis": "x",
"y": [
70,
64.4,
59.248000000000005,
54.50816,
49.27537664,
44.544940482559994,
39.41336333896908,
34.87294388231984,
30.05210812002794,
25.066824008212734,
20.076881646923468,
15.28094185751489,
10.900591659933795,
7.150947748460368,
4.1991621732056075,
2.1191537434934844,
0.8595145673411082,
0.24643310980890476,
0.03549976316899972
],
"yaxis": "y"
},
{
"hovertemplate": "A_dot
SYSTEM TIME=%{x}
A=%{y}",
"legendgroup": "",
"line": {
"color": "darkturquoise",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A_dot",
"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"
}
],
"layout": {
"autosize": true,
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmapgl"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Concentration of A with time (darkturquoise), and its rate of change (brown)"
},
"xaxis": {
"autorange": true,
"range": [
0,
1.2268017259669095
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"autorange": true,
"range": [
-3.8514169166549443,
73.88691667982394
],
"title": {
"text": "concentration (darkturquoise) /
concentration change per unit time (brown)"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"PlotlyHelper.combine_plots([p1, p2],\n",
" xlabel=\"SYSTEM TIME\", \n",
" ylabel=\"concentration (darkturquoise) /
concentration change per unit time (brown)\",\n",
" curve_labels=[\"A\", \"A_dot\"],\n",
" title=\"Concentration of A with time (darkturquoise), and its rate of change (brown)\")"
]
},
{
"cell_type": "markdown",
"id": "22eb0e80-1601-4471-9f53-7d790341632b",
"metadata": {},
"source": [
"### Notice how much smoother the lines are, compared to what we had in experiment `react_2_a` !"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8421106a-66b8-43bc-ad29-d0e18373975e",
"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.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}