{
"cells": [
{
"cell_type": "markdown",
"id": "ef6b822a-73a9-4057-97ea-b55c1661c2bc",
"metadata": {},
"source": [
"### Reaction A + B <-> C, mostly forward and with 1st-order kinetics for each species, taken to equilibrium\n",
"\n",
"Initial concentrations of A and B are spacially separated to the opposite ends of the system;\n",
"as a result, no C is being generated.\n",
"\n",
"But, as soon as A and B, from their respective distant originating points at the edges, \n",
"diffuse into the middle - and into each other - the reaction starts,\n",
"consuming both A and B (the forward reaction is much more substantial than the reverse one),\n",
"until an equilibrium is reached in both diffusion and reactions.\n",
"\n",
"A LOT of plots are sent to the log file from this experiment; the reason is to compare two\n",
"graphic elements, \"vue_curves_3\" and \"vue_curves_4\""
]
},
{
"cell_type": "markdown",
"id": "43636136-9bab-44d2-bfdc-80a6f700c240",
"metadata": {},
"source": [
"### TAGS : \"reactions 1D\", \"diffusion 1D\""
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "4fac097f-7e52-4a45-9e89-b14a5e75dcc5",
"metadata": {},
"outputs": [],
"source": [
"LAST_REVISED = \"Dec. 16, 2024\"\n",
"LIFE123_VERSION = \"1.0-rc.1\" # Library version this experiment is based on"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "34e78b1f-5856-4168-b8c8-e9e3081370a4",
"metadata": {},
"outputs": [],
"source": [
"#import set_path # Using MyBinder? Uncomment this before running the next cell!"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "8a51735f",
"metadata": {},
"outputs": [],
"source": [
"#import sys\n",
"#sys.path.append(\"C:/some_path/my_env_or_install\") # CHANGE to the folder containing your venv or libraries installation!\n",
"# NOTE: If any of the imports below can't find a module, uncomment the lines above, or try: import set_path \n",
"\n",
"from experiments.get_notebook_info import get_notebook_basename\n",
"\n",
"from life123 import BioSim1D, ChemData, UniformCompartment, GraphicLog, HtmlLog as log\n",
"\n",
"import plotly.express as px"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "6eae381c-b048-4345-904b-939c551ce1ef",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-> Output will be LOGGED into the file 'rd_1.log.htm'\n"
]
}
],
"source": [
"# Initialize the HTML logging\n",
"log_file = get_notebook_basename() + \".log.htm\" # Use the notebook base filename for the log file\n",
"\n",
"# Set up the use of some specified graphic (Vue) components\n",
"GraphicLog.config(filename=log_file,\n",
" components=[\"vue_heatmap_11\", \"vue_curves_3\", \"vue_curves_4\", \"vue_cytoscape_2\"],\n",
" extra_js=\"https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.21.2/cytoscape.umd.js\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d5f90394-bbd6-4216-a686-c1d5e689fa42",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 1 (at temp. 25 C)\n",
"0: A + B <-> C (kF = 20 / kR = 2 / delta_G = -5,708 / K = 10) | 1st order in all reactants & products\n",
"Set of chemicals involved in the above reactions: {'A', 'C', 'B'}\n"
]
}
],
"source": [
"# Initialize the system\n",
"chem_data = ChemData(names=[\"A\", \"B\", \"C\"], diffusion_rates=[50., 50., 1.])\n",
"\n",
"uc = UniformCompartment(chem_data=chem_data)\n",
"\n",
"# Reaction A + B <-> C , with 1st-order kinetics for each species; note that it's mostly in the forward direction\n",
"uc.add_reaction(reactants=[\"A\", \"B\"], products=[\"C\"], forward_rate=20., reverse_rate=2.)\n",
"uc.describe_reactions()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "37eb3a95-3d46-479e-9c93-2e81a2d3202d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reaction: A + B C\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n"
]
}
],
"source": [
"# Send a header and a plot to the HTML log file\n",
"log.write(\"Reaction: A + B <-> C\",\n",
" style=log.h2)\n",
"uc.plot_reaction_network(\"vue_cytoscape_2\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "da65cd1c-007f-403f-be89-6c2d0bfc5fc2",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 7,
"id": "43b8e224-0548-4e93-8bf4-f670ced47fc9",
"metadata": {},
"outputs": [],
"source": [
"bio = BioSim1D(n_bins=7, reaction_handler=uc)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "d3dfb8b7-f54a-4e56-915b-e1d9b89d2365",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM SNAPSHOT at time 0:\n",
" A B C\n",
"0 0.0 0.0 0.0\n",
"1 0.0 0.0 0.0\n",
"2 0.0 0.0 0.0\n",
"3 0.0 0.0 0.0\n",
"4 0.0 0.0 0.0\n",
"5 0.0 0.0 0.0\n",
"6 0.0 0.0 0.0\n"
]
}
],
"source": [
"bio.show_system_snapshot() # No concentrations anywhere yet"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dc49e75c-6aa5-414d-831f-805461f04f3a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "3fbf21cc-79ab-4915-ac51-8a963f16dc88",
"metadata": {},
"source": [
"# Inject initial concentrations of A and B at opposite ends of the system"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "f9e1cf26-1df8-4f38-af51-10f162043c7c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0:\n",
"7 bins and 3 species:\n",
" Species 0 (A). Diff rate: 50.0. Conc: [20. 0. 0. 0. 0. 0. 0.]\n",
" Species 1 (B). Diff rate: 50.0. Conc: [ 0. 0. 0. 0. 0. 0. 20.]\n",
" Species 2 (C). Diff rate: 1.0. Conc: [0. 0. 0. 0. 0. 0. 0.]\n"
]
}
],
"source": [
"bio.set_bin_conc(bin_address=0, species_name=\"A\", conc=20.)\n",
"bio.set_bin_conc(bin_address=6, species_name=\"B\", conc=20.)\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "4a7f7fe9-a0f2-4233-a815-09668d44dac2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM SNAPSHOT at time 0:\n",
" A B C\n",
"0 20.0 0.0 0.0\n",
"1 0.0 0.0 0.0\n",
"2 0.0 0.0 0.0\n",
"3 0.0 0.0 0.0\n",
"4 0.0 0.0 0.0\n",
"5 0.0 0.0 0.0\n",
"6 0.0 20.0 0.0\n"
]
}
],
"source": [
"bio.show_system_snapshot()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "33f4d6c1-5d4b-4128-90dc-cb8789717eed",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0 0.0 0.0 0.0 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at the middle bin\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 3))\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "457c42a1-4d83-4445-98ec-b1b2fbbdb784",
"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
Bin number=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
20,
0,
0,
0,
0,
0,
0
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
Bin number=%{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,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0,
0,
0,
0,
0,
0,
20
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
Bin number=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "green",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0,
0,
0,
0,
0,
0,
0
],
"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": "A + B <-> C . System snapshot at time t=0"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
6
],
"title": {
"text": "Bin number"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-1.1111111111111112,
21.11111111111111
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.system_snapshot(), y=[\"A\", \"B\", \"C\"], \n",
" title= f\"A + B <-> C . System snapshot at time t={bio.system_time}\",\n",
" color_discrete_sequence = ['red', 'orange', 'green'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\", \"index\":\"Bin number\"})\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "433d4426-ca90-4d48-a7e6-b83a98904f5c",
"metadata": {},
"outputs": [],
"source": [
"# Set the heatmap parameters\n",
"heatmap_pars = {\"range\": [0, 20],\n",
" \"outer_width\": 850, \"outer_height\": 100,\n",
" \"margins\": {\"top\": 30, \"right\": 30, \"bottom\": 30, \"left\": 55}\n",
" }\n",
"\n",
"# Set the parameters of the line plots (for now, same for single-curve and multiple-curves)\n",
"lineplot_pars = {\"range\": [0, 20],\n",
" \"outer_width\": 850, \"outer_height\": 200,\n",
" \"margins\": {\"top\": 30, \"right\": 30, \"bottom\": 30, \"left\": 55}\n",
" }"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "1fd5d82c-8523-418c-8132-cfc284605b1c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Initial system state at time t=0:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n"
]
}
],
"source": [
"log.write(f\"Initial system state at time t={bio.system_time}:\", blanks_before=2, style=log.bold)\n",
"\n",
"# Output to the log file a heatmap for each chemical species\n",
"for i in range(bio.n_species):\n",
" log.write(f\"{bio.chem_data.get_label(i)}:\", also_print=False)\n",
" bio.single_species_heatmap(species_index=i, heatmap_pars=heatmap_pars, graphic_component=\"vue_heatmap_11\")\n",
"\n",
"# Output to the log file a one-curve line plot for each chemical species\n",
"for i in range(bio.n_species):\n",
" log.write(f\"{bio.chem_data.get_label(i)}:\", also_print=False)\n",
" bio.single_species_line_plot(species_index=i, plot_pars=lineplot_pars, graphic_component=\"vue_curves_3\")\n",
"\n",
"# Output to the log file a line plot for ALL the chemicals together (same color as used for plotly elsewhere)\n",
"bio.line_plot(plot_pars=lineplot_pars, graphic_component=\"vue_curves_4\", color_mapping={0: 'red', 1: 'orange', 2: 'green'})"
]
},
{
"cell_type": "markdown",
"id": "358042af-afda-4935-baec-563b0e0fd370",
"metadata": {
"tags": []
},
"source": [
"### First step"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "a69f25a4-34c2-48d5-bd0a-17cd4f0d3656",
"metadata": {},
"outputs": [],
"source": [
"delta_t = 0.002 # This will be our time \"quantum\" for this experiment"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "f3c1fe2b-61d3-429e-92d2-b922e8a2fad5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.002:\n",
"7 bins and 3 species:\n",
" Species 0 (A). Diff rate: 50.0. Conc: [18. 2. 0. 0. 0. 0. 0.]\n",
" Species 1 (B). Diff rate: 50.0. Conc: [ 0. 0. 0. 0. 0. 2. 18.]\n",
" Species 2 (C). Diff rate: 1.0. Conc: [0. 0. 0. 0. 0. 0. 0.]\n"
]
}
],
"source": [
"# First step\n",
"bio.react_diffuse(time_step=delta_t, n_steps=1)\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "901b2e59-fea6-4190-af69-fc49f14d9a64",
"metadata": {},
"source": [
"_After the first delta_t time step_:\n",
"\n",
" Species 0 (A). Diff rate: 50.0. Conc: [18. 2. 0. 0. 0. 0. 0.]\n",
" \n",
" Species 1 (B). Diff rate: 50.0. Conc: [ 0. 0. 0. 0. 0. 2. 18.]\n",
" \n",
" Species 2 (C). Diff rate: 1.0. Conc: [0. 0. 0. 0. 0. 0. 0.]\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "0efdf530-d562-4ff5-8629-e1096c42e681",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM SNAPSHOT at time 0.002:\n",
" A B C\n",
"0 18.0 0.0 0.0\n",
"1 2.0 0.0 0.0\n",
"2 0.0 0.0 0.0\n",
"3 0.0 0.0 0.0\n",
"4 0.0 0.0 0.0\n",
"5 0.0 2.0 0.0\n",
"6 0.0 18.0 0.0\n"
]
}
],
"source": [
"bio.show_system_snapshot()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "13d683c6-4264-4acc-88e7-d9043e0bc125",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.002 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0.000 0.0 0.0 0.0 \n",
"1 0.002 0.0 0.0 0.0 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at the middle bin\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 3))\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "97192492-d8ea-418a-bafc-f0dfd69a64b0",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
Bin number=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
18,
2,
0,
0,
0,
0,
0
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
Bin number=%{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,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0,
0,
0,
0,
0,
2,
18
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
Bin number=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "green",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0,
0,
0,
0,
0,
0,
0
],
"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": "A + B <-> C . System snapshot at time t=0.002"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
6
],
"title": {
"text": "Bin number"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-1,
19
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.system_snapshot(), y=[\"A\", \"B\", \"C\"], \n",
" title= f\"A + B <-> C . System snapshot at time t={bio.system_time}\",\n",
" color_discrete_sequence = ['red', 'orange', 'green'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\", \"index\":\"Bin number\"})\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "47bca5d0-c1f8-478d-ac9a-acb3a4ffbb3c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"System state at time t=0.002:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n"
]
}
],
"source": [
"log.write(f\"System state at time t={bio.system_time}:\", blanks_before=2, style=log.bold)\n",
"\n",
"# Output to the log file a heatmap for each chemical species\n",
"for i in range(bio.n_species):\n",
" log.write(f\"{bio.chem_data.get_label(i)}:\", also_print=False)\n",
" bio.single_species_heatmap(species_index=i, heatmap_pars=heatmap_pars, graphic_component=\"vue_heatmap_11\")\n",
"\n",
"# Output to the log file a one-curve line plot for each chemical species\n",
"for i in range(bio.n_species):\n",
" log.write(f\"{bio.chem_data.get_label(i)}:\", also_print=False)\n",
" bio.single_species_line_plot(species_index=i, plot_pars=lineplot_pars, graphic_component=\"vue_curves_3\")\n",
"\n",
"# Output to the log file a line plot for ALL the chemicals together (same color as used for plotly elsewhere)\n",
"bio.line_plot(plot_pars=lineplot_pars, graphic_component=\"vue_curves_4\", color_mapping={0: 'red', 1: 'orange', 2: 'green'})"
]
},
{
"cell_type": "markdown",
"id": "c2f8bbb7-ccfc-4490-8245-580f2d753e10",
"metadata": {},
"source": [
"### Several more steps"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "a2746d1b-48f9-4d57-980c-9ea807a4e989",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.004:\n",
"[[16.4 3.4 0.2 0. 0. 0. 0. ]\n",
" [ 0. 0. 0. 0. 0.2 3.4 16.4]\n",
" [ 0. 0. 0. 0. 0. 0. 0. ]]\n",
"SYSTEM STATE at Time t = 0.006:\n",
"[[15.1 4.38 0.5 0.02 0. 0. 0. ]\n",
" [ 0. 0. 0. 0.02 0.5 4.38 15.1 ]\n",
" [ 0. 0. 0. 0. 0. 0. 0. ]]\n",
"SYSTEM STATE at Time t = 0.008:\n",
"[[1.4028e+01 5.0640e+00 8.4000e-01 6.5984e-02 2.0000e-03 0.0000e+00\n",
" 0.0000e+00]\n",
" [0.0000e+00 0.0000e+00 2.0000e-03 6.5984e-02 8.4000e-01 5.0640e+00\n",
" 1.4028e+01]\n",
" [0.0000e+00 0.0000e+00 0.0000e+00 1.6000e-05 0.0000e+00 0.0000e+00\n",
" 0.0000e+00]]\n",
"SYSTEM STATE at Time t = 0.01:\n",
"[[1.31316000e+01 5.53800000e+00 1.18493120e+00 1.36813108e-01\n",
" 8.13120000e-03 2.00000000e-04 0.00000000e+00]\n",
" [0.00000000e+00 2.00000000e-04 8.13120000e-03 1.36813108e-01\n",
" 1.18493120e+00 5.53800000e+00 1.31316000e+01]\n",
" [0.00000000e+00 0.00000000e+00 6.72320000e-05 1.90027530e-04\n",
" 6.72320000e-05 0.00000000e+00 0.00000000e+00]]\n",
"SYSTEM STATE at Time t = 0.012:\n",
"[[1.23722400e+01 5.86200882e+00 1.51504114e+00 2.28008774e-01\n",
" 1.98211433e-02 9.28816000e-04 2.00000000e-05]\n",
" [2.00000000e-05 9.28816000e-04 1.98211433e-02 2.28008774e-01\n",
" 1.51504114e+00 5.86200882e+00 1.23722400e+01]\n",
" [0.00000000e+00 4.44384640e-05 4.52470702e-04 9.37489304e-04\n",
" 4.52470702e-04 4.44384640e-05 0.00000000e+00]]\n",
"SYSTEM STATE at Time t = 0.014:\n",
"[[1.17212070e+01 6.07811756e+00 1.81983529e+00 3.33817478e-01\n",
" 3.75512896e-02 2.50955578e-03 1.00983808e-04]\n",
" [1.00983808e-04 2.50955578e-03 3.75512896e-02 3.33817478e-01\n",
" 1.81983529e+00 6.07811756e+00 1.17212070e+01]\n",
" [9.98666893e-06 2.62777001e-04 1.65200869e-03 3.01131931e-03\n",
" 1.65200869e-03 2.62777001e-04 9.98666893e-06]]\n",
"SYSTEM STATE at Time t = 0.016:\n",
"[[1.11568507e+01 6.21598919e+00 2.09433486e+00 4.48347321e-01\n",
" 6.09468566e-02 5.16378807e-03 2.94534867e-04]\n",
" [2.94534867e-04 5.16378807e-03 6.09468566e-02 4.48347321e-01\n",
" 2.09433486e+00 6.21598919e+00 1.11568507e+01]\n",
" [5.77983875e-05 8.74133777e-04 4.37882730e-03 7.45120113e-03\n",
" 4.37882730e-03 8.74133777e-04 5.77983875e-05]]\n"
]
}
],
"source": [
"# Continue with several delta_t steps\n",
"for _ in range(7):\n",
" bio.react_diffuse(time_step=delta_t, n_steps=1)\n",
" bio.describe_state(concise=True)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "fa7d3b56-4ff5-4ccb-90ee-493a9e93b32f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM SNAPSHOT at time 0.016:\n",
" A B C\n",
"0 11.156851 0.000295 0.000058\n",
"1 6.215989 0.005164 0.000874\n",
"2 2.094335 0.060947 0.004379\n",
"3 0.448347 0.448347 0.007451\n",
"4 0.060947 2.094335 0.004379\n",
"5 0.005164 6.215989 0.000874\n",
"6 0.000295 11.156851 0.000058\n"
]
}
],
"source": [
"bio.show_system_snapshot()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "7280ab4a-b2b2-401f-a832-353ff62b9826",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.002 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.016 | \n",
" 0.448347 | \n",
" 0.448347 | \n",
" 0.007451 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0.000 0.000000 0.000000 0.000000 \n",
"1 0.002 0.000000 0.000000 0.000000 \n",
"2 0.016 0.448347 0.448347 0.007451 "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at the middle bin\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 3))\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "5296418d-635c-4a71-9a1e-430f391fe0a4",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
Bin number=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
11.156850734867037,
6.215989188067845,
2.0943348565616033,
0.4483473209623955,
0.060946856561603334,
0.00516378806784531,
0.00029453486703668355
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
Bin number=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "orange",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.00029453486703668355,
0.00516378806784531,
0.060946856561603334,
0.44834732096239543,
2.0943348565616033,
6.215989188067845,
11.156850734867037
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
Bin number=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "green",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
5.77983875394964e-05,
0.0008741337768494389,
0.004378827295405076,
0.0074512011250459685,
0.004378827295405076,
0.0008741337768494388,
5.7798387539496395e-05
],
"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": "A + B <-> C . System snapshot (interpolated) at time t=0.016"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
6
],
"title": {
"text": "Bin number"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-0.6197640314168771,
11.776672564671454
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArkAAAFoCAYAAABT1OOjAAAgAElEQVR4Xu2dCZgUxdnH39n73gXkxgMVRQHjEY8kJhqPqJh8JibiF6NGIx4ISQTjiWAU7wNMggeKYpTkiyYxp5hDjRqTeEVNAAXFA+UQUNhl73O+qprtpbe3e/qq6vPfzzPP7M5UvVXv762p/nd1dVUmyw7CAQIgAAIgAAIgAAIgAAIJIpCByE1QNOEKCIAACIAACIAACICAIACRi4YAAiAAAiAAAiAAAiCQOAIQuYkLKRwCARAAARAAARAAARCAyEUbAAEQAAEQAAEQAAEQSBwBiNzEhRQOgQAIgAAIgAAIgAAIQOSiDYAACIAACIAACIAACCSOAERu4kIKh0AABEAABEAABEAABCBy0QZAAARAAARAAARAAAQSRwAiN3EhhUMgAAIgAAIgAAIgAAIQuWgDIAACIAACIAACIAACiSMAkZu4kMIhEAABEAABEAABEAABiFy0ARAAARAAARAAARAAgcQRgMhNXEjhEAiAAAiAAAiAAAiAAEQu2gAIgAAIgAAIgAAIgEDiCEDkJi6kcAgEQAAEQAAEQAAEQAAiF20ABEAABEAABEAABEAgcQQgchMXUjgEAiAAAiAAAiAAAiAAkYs2AAIgAAIgAAIgAAIgkDgCELmJCykcAgEQAAEQAAEQAAEQgMhFGwABEAABEAABEAABEEgcAYjcxIUUDoEACIAACIAACIAACEDkog2AAAiAAAiAAAiAAAgkjgBEbuJCCodAAARAAARAAARAAAQgctEGQAAEQAAEQAAEQAAEEkcAIjdxIYVDIAACIAACIAACIAACELloAyAAAiAAAiAAAiAAAokjAJGbuJDCIRAAARAAARAAARAAAYhctAEQAAEQAAEQAAEQAIHEEYDITVxI4RAIgAAIgAAIgAAIgABELtoACIAACIAACIAACIBA4ghA5CYupHAIBEAABEAABEAABEAAIhdtAARAAARAAARAAARAIHEEIHITF1I4BAIgAAIgAAIgAAIgAJGLNgACIAACIAACIAACIJA4AhC5iQspHAIBEAABEAABEAABEIDIRRsAARAAARAAARAAARBIHAGI3MSFFA6BQPQITDjyLPrSEQfTgmumR6JyM6++k/7y7MuRqlPQYP7x0nI679Lb6aqLzqBvfvXooIu3LO+2ux+h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AAJpIgCRm6Zow1cQAAEQAAEQAAEQSAkBiNyUBBpuggAIgAAIgAAIgECaCEDkpina8BUEQAAEQAAEQAAEUkIAIjclgYabIAACIAACIAACIJAmAhC5aYo2fAUBEAABEAABEACBlBCAyE1JoOEmCIAACIAACIAACKSJAERumqINX0EABEAABEAABEAgJQQgclMSaLgJAiAAAiAAAiAAAmkiAJGbpmjDVxAAARAAARAAARBICQGI3JQEGm6CAAiAAAiAAAiAQJoIQOSmKdrwFQRAAARAAARAAARSQgAiNyWBhpsgAAIgAAIgAAIgkCYCELlpijZ8BQEQAAEQAAEQAIGUEIDITUmg4SYIgAAIgAAIgAAIpIkARG6aog1fQQAEQAAEQAAEQCAlBCByUxJouAkCIAACIAACIAACaSIAkZumaMNXEAABEAABEAABEEgJAYjclAQaboIACIAACIAACIBAmghA5KYp2vAVBEAABEAABEAABFJCACI3JYGGmyAAAiAAAiAAAiCQJgIQuWmKNnwFARAAARAAARAAgZQQgMhNSaDhJgiAAAiAAAiAAAikiQBEbpqiDV9BAARAAARAAARAICUEIHJTEmi4CQIgAAIgAAIgAAJpIgCRm6Zow1cQAAEQAAEQAAEQSAkBiNyUBBpuggAIgAAIgAAIgECaCEDkpina8BUEQAAEQAAEQAAEUkIAIjclgYabIAACIAACIAACIJAmAhC5aYo2fAUBEAABEAABEACBlBCAyE1JoOEmCIAACIAACIAACKSJAERumqINX0EABEAABEAABEAgJQQgclMSaLgJAiAAAiAAAiAAAmkiAJGbpmjDVxAAARAAARAAARBICQGI3JQEGm6CAAiAAAiAAAiAQJoIQOSmKdrwFQRAAARAAARAAARSQgAiNyWBhpsgAAIgAAIgAAIgkCYCELlpijZ8BQEQAAEQAAEQAIGUEIDITUmg4SYIgAAIgAAIgAAIpIkARG6aog1fQQAEQAAEQAAEQCAlBCByUxJouAkCIAACIAACIAACaSIAkZumaMNXEAABEAABEAABEEgJAYjclAQaboIACIAACIAACIBAmghA5KYp2vAVBEAABEAABEAABFJCACI3JYGGmyAAAiAAAiAAAiCQJgIQuWmKNnwFARAAARAAARAAgZQQgMhNSaDhJgiAAAiAAAiAAAikiQBEbpqi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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.system_snapshot(), y=[\"A\", \"B\", \"C\"], \n",
" title= f\"A + B <-> C . System snapshot (interpolated) at time t={bio.system_time}\",\n",
" color_discrete_sequence = ['red', 'orange', 'green'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\", \"index\":\"Bin number\"},\n",
" line_shape=\"spline\")\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "b8f59740-166c-4909-bd92-321f6e865479",
"metadata": {},
"source": [
"A is continuing to diffuse from the left. \n",
"B is continuing to diffuse from the right. \n",
"They're finally beginning to overlap in the middle bin"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "9974a579-14c5-447b-9616-b136e356ee90",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"System state at time t=0.016:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n"
]
}
],
"source": [
"log.write(f\"System state at time t={bio.system_time}:\", blanks_before=2, style=log.bold)\n",
"\n",
"# Output to the log file a heatmap for each chemical species\n",
"for i in range(bio.n_species):\n",
" log.write(f\"{bio.chem_data.get_label(i)}:\", also_print=False)\n",
" bio.single_species_heatmap(species_index=i, heatmap_pars=heatmap_pars, graphic_component=\"vue_heatmap_11\")\n",
"\n",
"# Output to the log file a one-curve line plot for each chemical species\n",
"for i in range(bio.n_species):\n",
" log.write(f\"{bio.chem_data.get_label(i)}:\", also_print=False)\n",
" bio.single_species_line_plot(species_index=i, plot_pars=lineplot_pars, graphic_component=\"vue_curves_3\")\n",
"\n",
"# Output to the log file a line plot for ALL the chemicals together (same color as used for plotly elsewhere)\n",
"bio.line_plot(plot_pars=lineplot_pars, graphic_component=\"vue_curves_4\", color_mapping={0: 'red', 1: 'orange', 2: 'green'})"
]
},
{
"cell_type": "markdown",
"id": "4dc3b1cd-3ef9-4882-abfe-479cfc0a25cf",
"metadata": {},
"source": [
"### Several group of longer runs"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "bb248152-bda9-4f70-b81d-52d982a2233e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"+ 10 steps later:\n",
"SYSTEM STATE at Time t = 0.036:\n",
"[[7.92576526 5.95824446 3.31917619 1.31581241 0.35918764 0.07038175\n",
" 0.01251229]\n",
" [0.01251229 0.07038175 0.35918764 1.31581241 3.31917619 5.95824446\n",
" 7.92576526]\n",
" [0.01555131 0.07914514 0.24409632 0.36133444 0.24409632 0.07914514\n",
" 0.01555131]]\n",
"\n",
"\n",
"+ 10 steps later:\n",
"SYSTEM STATE at Time t = 0.056:\n",
"[[6.29600683 5.06118233 3.15970431 1.44600532 0.47532616 0.12019317\n",
" 0.03045075]\n",
" [0.03045075 0.12019317 0.47532616 1.44600532 3.15970431 5.06118233\n",
" 6.29600683]\n",
" [0.07498099 0.28735559 0.78250579 1.12144639 0.78250579 0.28735559\n",
" 0.07498099]]\n",
"\n",
"\n",
"+ 10 steps later:\n",
"SYSTEM STATE at Time t = 0.076:\n",
"[[5.13609493 4.21433746 2.7454954 1.35328847 0.4992179 0.14748071\n",
" 0.04559633]\n",
" [0.04559633 0.14748071 0.4992179 1.35328847 2.7454954 4.21433746\n",
" 5.13609493]\n",
" [0.1615343 0.52706799 1.31954666 1.8421909 1.31954666 0.52706799\n",
" 0.1615343 ]]\n",
"\n",
"\n",
"+ 10 steps later:\n",
"SYSTEM STATE at Time t = 0.096:\n",
"[[4.2209458 3.50170661 2.34873485 1.23042685 0.50075376 0.16821567\n",
" 0.0606064 ]\n",
" [0.0606064 0.16821567 0.50075376 1.23042685 2.34873485 3.50170661\n",
" 4.2209458 ]\n",
" [0.25982593 0.75464804 1.76534285 2.40897641 1.76534285 0.75464804\n",
" 0.25982593]]\n"
]
}
],
"source": [
"# Now, do several group of longer runs\n",
"for _ in range(4):\n",
" print(\"\\n\\n+ 10 steps later:\")\n",
" bio.react_diffuse(time_step=delta_t, n_steps=10)\n",
" bio.describe_state(concise=True)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "dfa3d4e1-a187-4231-b9f1-658fbfc7dedc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM SNAPSHOT at time 0.09600000000000007:\n",
" A B C\n",
"0 4.220946 0.060606 0.259826\n",
"1 3.501707 0.168216 0.754648\n",
"2 2.348735 0.500754 1.765343\n",
"3 1.230427 1.230427 2.408976\n",
"4 0.500754 2.348735 1.765343\n",
"5 0.168216 3.501707 0.754648\n",
"6 0.060606 4.220946 0.259826\n"
]
}
],
"source": [
"bio.show_system_snapshot()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "c962bc0d-b2b9-411c-8c61-f2a0a1fdeb27",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.002 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.016 | \n",
" 0.448347 | \n",
" 0.448347 | \n",
" 0.007451 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.096 | \n",
" 1.230427 | \n",
" 1.230427 | \n",
" 2.408976 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0.000 0.000000 0.000000 0.000000 \n",
"1 0.002 0.000000 0.000000 0.000000 \n",
"2 0.016 0.448347 0.448347 0.007451 \n",
"3 0.096 1.230427 1.230427 2.408976 "
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at the middle bin\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 3))\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "9636c478-844b-4c9f-9777-61c296b1be02",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
Bin number=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
4.220945799875002,
3.501706607196435,
2.348734851167281,
1.2304268485314716,
0.5007537562676033,
0.1682156746601824,
0.06060640434340992
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
Bin number=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "orange",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.06060640434340992,
0.1682156746601824,
0.5007537562676033,
1.2304268485314713,
2.34873485116728,
3.5017066071964345,
4.220945799875002
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
Bin number=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "green",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.2598259315037728,
0.7546480379299466,
1.7653428524886312,
2.4089764141139147,
1.765342852488631,
0.7546480379299465,
0.25982593150377276
],
"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": "A + B <-> C . System snapshot at time t=0.09600000000000007"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
6
],
"title": {
"text": "Bin number"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-0.17052356207501188,
4.452075766293424
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArkAAAFoCAYAAABT1OOjAAAgAElEQVR4Xuy9B5gcxdX3e2Y2J+WVtMoChAQoWoDAZBBJRIscjE0wGNvYBmx47+W+/p7P7/V3X7BBr21sTDIYBBgwIhmRBCYaRJKERFBAWVrltDnN3HNqtmdnZyd0z1R198z+W08/vZqpPlX1q5rqf58+XRUI80bYQAAEQAAEQAAEQAAEQCCPCAQgcvOoNVEVEAABEAABEAABEAABRQAiFx0BBEAABEAABEAABEAg7whA5OZdk6JCIAACIAACIAACIAACELnoAyAAAiAAAiAAAiAAAnlHACI375oUFQIBEAABEAABEAABEIDIRR8AARAAARAAARAAARDIOwIQuXnXpKgQCIAACIAACIAACIAARC76AAiAAAiAAAiAAAiAQN4RgMjNuyZFhUAABEAABEAABEAABCBy0QdAAARAAARAAARAAATyjgBEbt41KSoEAiAAAiAAAiAAAiAAkYs+AAIgAAIgAAIgAAIgkHcEIHLzrklRIRAAARAAARAAARAAAYhc9AEQAAEQAAEQAAEQAIG8IwCRm3dNigqBAAiAAAiAAAiAAAhA5KIPgAAIgAAIgAAIgAAI5B0BiNy8a1JUCARAAARAAARAAARAACIXfQAEQAAEQAAEQAAEQCDvCEDk5l2TokIgAAIgAAIgAAIgAAIQuegDIAACIAACIAACIAACeUcAIjfvmhQVAgEQAAEQAAEQAAEQgMhFHwABEAABEAABEAABEMg7AhC5edekqBAIgAAIgAAIgAAIgABELvoACIAACIAACIAACIBA3hGAyM27JkWFQAAEQAAEQAAEQAAEIHLRB0AABEAABEAABEAABPKOAERu3jUpKgQCIAACIAACIAACIACRiz4AAiAAAiAAAiAAAiCQdwQgcvOuSVEhEAABEAABEAABEAABiFz0ARAAARAAARAAARAAgbwjAJGbd02KCoEACIAACIAACIAACEDkog+AAAiAAAiAAAiAAAjkHQGI3LxrUlQIBEAABEAABEAABEAAIhd9AARAAARAAARAAARAIO8IQOTmXZOiQiAAAiAAAiAAAiAAAhC56AMgAAIgAAIgAAIgAAJ5RwAiN++aFBUCAf8ROOT479Mpxx1Gc/73j/1XOJQIBEAABEAgLwn4WuRe9MP/Tcu+XkODBvSlt+f93rMGWL9pK51+2a0J8/e6bCahvP/RUrr2ljt7ZPH//Py7dMm5JxnJOlmeV150Ov3i+ouM5Cn9bMu2XZ72MSMV85FREyLXhE0LmVPbv7vnSXroyZfp5cdup1HDh3Qjf9zsn9GOXXvpi7ce9k2LpCpvtoUUdrFbJuOFXRtPPPcG/b//82i3/FJxTjS+JEpvXXssw6lu0JyktVuvROVM1LekfFZbWmVNdU1yUlYnaXtrvZJdr2I75H133ExHHT4p258Vzs+QgG9FbrywzLajWJ0x2UCRip9VlkQDnfy4dQldq4wTJ4ylJ//yv2w3qXWeTk+ZdWGOv0BZFxWnZbRTmRv/15/otbc/pvg8rUFcZ/1iywORa6d1skvjVDTayc2ETYhcO+QTp0k0Tlpjk12h68SGNV7EjumWMEs0zlvfpbvZkLFPtljHSrK+Zjetk3pZY2wss2Q3JckYJLppt1tWqbvdtKhX8t+L1Tbp+lvmvzicaYeAb0Wu9aMWcSvexGwFjimRq8MjEivoM61n7B1lpjasDpNo4IzvTHLBcCLE03VGq/ypPLZSLhOPuyFy07VO9t+bEKQmbJoQudnT029Bx7gVX6pkF3X5/LOlK2w9KbFrI5V4ln4RfxNuV3BYAjPeqWJ9HiuenaS1Wy9LYA4dPKDH+CrC81uTDoyOgdZ1I37MtD6PFclOyuokLeqV+obP5BNI/aNCflr0rciVH7T1Q7d7B56qiUyJXDuCMFm5dIjbeNvZit1UXmuTPwEnHp9Eng6rbInEstVGseW3Llbxj+SsNIkuZrHnx9+dW0L5//zHNd1CPKyLbfxjVSc3IokeySbz8nz3hv+jHo0nqod8loiFfB7v+YoVQelsJgrnia+fJUgPnzah2+PlZBzSPSqNfzwqdUj3RCVZ2FGissb39VS24x8XW+dabZToJsriMXzoIBXmYG3WRTG+nZJ5Qq0nLvHnp/qtpitvpr/z2DE71kYy0ZQoH7s2Uon0eOGVSPQlq2My0ZZIUDpJa7deyYRr7G/XGntScY3Pz0lZnaTt7fVy2o8y/W3hvMwJ+FLkxgueVKLGbtVNiNxMBaEJcZtK7Dq5m9TB2m6bxKaLZWLn8U6ix2liL15QJLpBij83lSfXGvBjPTupHpPGepBi65ToczvtEvtEw4rris8/VrTEP7qNf2wp54qwio1vTlSfVDYlTt5qo0Q3FYn6kCVKYwVlshubRJ64ZJ85uVmw2iO2fyX7DTv1EqcSXclErvTX2D4QezOT6PPYPmiVO1G/ssMkVXntxBlK2eO9pcmYObmBtWsjVfnjv7O4CtPYGwqpQ/zNQ6qxIL5sTtLarVcqVvH1ctLnnJTVSdreXq9E1zo7TyUzuUbinMwI+FLkJrqTTHSRc1JlHSI3WX52483kfMvzYudC5KR+ydLGXrDslDORqNJRDjs2Enks5bxE8diJvBiJPDbJBmGppyX0kg3qqS448Y8Ok9lI5ulI9nk8p2R2pf5HHTZRveSU7GJn14OWiFsym/GeplTp3v94WfQFxVQxjbGPZpPZS9QWToVoKq9L/ON0p7adCA4pRyL76R4/xwrfVP1CXsRK9+6B7nCFVDf8dkWuExupbsbj62ZdT+LHXCtdLNdkN8+J2sxuWtP1ShZ/HHuDa7es1jVKjole9o7tt6hX4pevdTx5tnO9RBp7BHwpchNdAJyGBcQ/xkuGw84LVHZ+zHZFayYiN9EjdTteQKlzLonc2DZK9Dg6XqTH9xProhXrqbN4p+KVTDCkEy5SXisuOZkNp5/H91Or36fqp05Frp0ZLFLVPVagx96YpPLA2xW5OrxI6Ya+ZCEqseX3QuQmE7+JPk/nQUv3om6ui9xYh0G8yLPGDuvzVNeOeEECMZj4pTPrNwWRG5lxKJnDCF7cdKOv+9/7TuQm8+ZZaOyKu3iUOjy5yYSsUwHu53AF6+Jnx+vrZne1LlyxQiT+Qi1pEvWPRDc8sSIgmbBKFr9q1Ts2TtOpmHXysluicsTW04nITTRrRiIPol2RKywS/WbtPsqO92in8nDHP81xKkStcsbH1yZ7cmT3xlUYpLshig8bSVZ2O58niy2O/T2m+/3meriCVddENyzSbjJLizVWpBqf479zcpPlJG26mxKrvRCukPzJlLR5onC0ZNM/uhFeEn8NhBfXTVVgLy/fidxUA0equ+x01TUpcjN9xG9C7Obqi2fp2i/ZhcoStsNrBqkXmtI9pk0U+5vOk2snRtikyI1nYwlVS6jbFbnJLqBORW46cWm1VawQ94MnN93NTK55cjO94U8nytP9FpN9b/clpFT2ddmInYUg1fgcP644eenKSVq79cKLZ103zYmeRvjthbrYvmw3LCfT3xfOy4yAr0Ruuhe5MhWTgsakyHXqyY1vKh1iN1txG1sm62401SNPqbPO6bzEyzZq2OCkk2anEigSTylxncOGDOpWJuH61Atv9VhEIlHMXqIpjpwMWqZEbiLO8eWyK3KTxeg6EbnxeSfrB/Gi1q7IdRKTGx8XnW4ITCY0EokVp7YTTTEV623U6clN5NFKV/f471OV16ktK30y0Sef655CLFkZE9Ur1XUlvk84mT7LSVonbFLF8WMKsVu7hQo4aQMnaZ20l9UXs3HCZfqbw3npCfhK5KYTselEcKrqmhK5iV5eSI89cQqrjHbihBPdQTp5vJqujIkea8s51kBhp4zWQJHu0WmsXfk73nOayk7sDUK8FzfRG+hiP34wSvWCVqLZFazyfrTo66ioNiVyrXaIZZJsdoX4+sfXK9HvJ5ZfohCI+Bud+JCBRHySza6QqH8muqBLHvEhBYlePE12IUrWtxPdjMaGgiRibMeLL/ml8sAl6ht2whJi6xGfPlnftvr3o3/8v3usvBZrL1V5040Nyb5P1L+S3ShafSS+TzixEV+OVKFWicaQZL/tRGIl1U2alCPdwhFO6pXo95Ps5i9Rn071EqydsiYaI+WzVC9L2pk1JV/rFXv9snOty/T3hfMyI+ArkWvnTijTmBcdIjcZ4nQveWTWNN6f5WS2g0SldSJyY4VCvK1085+miuNM9JJVIoEeH/eabp5cKaOduF6n4jcRx0Qv4aWKTbZspJqBwkojbEUQybLViUSufB87724ioZooLjKROLYrcqVs8TaT3cDFxlun6ydiN76d5aIkNyuxMZwWG6e2438vdubJjX8a4lT8Joo3t3MDGnthtuqr6wId318T2U0mcq2yOLER25dTLf+eaDxLdhNjt/856auWUIz9jad7gSk2LZb17Zt0QRGv2yvRjbn3V3CUQAj4SuSiSUDAKQG702Q5tdvb0+t++76380T9QQAEQAAE3CcAkes+c+SokYAd77/G7HqNKYjcXtPUqCgIgAAI5C0BiNy8bdr8r1iqCeHzv/ZmawiRa5YvrIMACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkugwc2YEACIAACIAACIAACJgnAJFrnjFyAAEQAAEQAAEQAAEQcJkARK7LwJEdCIAACIAACIAACICAeQIQueYZIwcQAAEQAAEQAAEQAAGXCUDkagC+eWeTBiswEUugqqxQ/beuqR1gNBMAW81AY8yBLdiaI2DOMvqtObZiedjAMrMZwHpSAhC5GjoHRK4GiHEmMOjqZ2pZBFuwNUfAnGX0W7A1R8CsZYhcs3xTWYfI1cAeIlcDRIhc/RCTWIRYMIcabMHWHAFzltFvzbGFJ9cs23TWIXLTEbLxPUSuDUgOk2DQdQjMQXKwdQDLYVKwdQjMQXKwdQDLYVKwdQjMYXJ4ch0C05gcIlcDTIhcDRDhydUPEZ5c15haGUEsmEMOtmBrjoBZyxC5Zvmmsg6Rq4E9RK4GiBC5+iFC5LrGFCLXPGqIXHOMwdYcW7EMkWuWL0SuYb4QufoBY9DVzxRCzBxTsAVb8wTM5YDx1hxbiFyzbNNZhyc3HSEb30Pk2oDkMAkGXYfAHCQHWwewHCYFW4fAHCQHWwewHCYFW4fAHCY36cm97pY7aXhNNf3qxisclsr75LXbdtHMC2+iBU/dRTWDBxgpEERutljLyqjxvIuo5fgTqeW4kyg0wExDZVvMXDsfg665FgNbsDVHwJxl9FuwNUdAr+Vg6y4q2fUGlex4kwpaNlLJKQsyzuDXcx6hJ59/s9v5o0cMoflzb1efeSFyFy1bSZf/5Dc09+7baNrEcRnXDSI3Y3QunhgIdMusdcaRLHZZ8B5/ErUefoSLBcmvrHBBM9eeYAu25giYs4x+C7bmCGRvuXj3h1Syk4XtrjepePcH3Q1eGs4og0OO/z7FClrLiAjfYUMG0jWXnuGJyM2oMglOgsjVRdKknUWLaN/z86nk7X9RyVtvdMspNHCg8u4qLy+L3o5hw02WJK9s44JmrjnBFmzNETBnGf0WbM0RcG65oHlTRNSyt1a8tsHWnd2MtAzka/8gvvbzsXrMDMcZiJD98NMvoh7bZAYsT658b3l8kwnjWI9wbIjArMtvpdmzjqV589+hdRu3qqx++5/XU82QAcpja23WOYnEabzHWc6fddIMSuSJ/uKth5VJiFzH3cKbE6yY3EBTIwtd7vBv887HwlUruhWobfJUJXaV6D32BG8KmyO54oJmrqHAFmzNETBnGf0WbM0RsGe5ZBc7s0TUsrgt2re420ntFQeyoI2IWhG34WDXUr6ZxOSKF/fGay9Q3tpUm4jc9z5aqkSpiErZRLQeMf2QaJyuCM1Ntdvp3jtuVt/Pf2Mh/fK/7iFLbEp6EbeWiLW+jw+LkHPFRrw4jRfk8v39j/1T5S/f/eCyM6Mxt1LeZHbstYKzVIjJdcYrYepkL56JyFWilz28cgw0N0XPD1dUUsuJM6n5xJOp5YSZ1DFipIaS5I8JXNDMtSXYgq05AuYso9+CrTkCiS0XNG9gQbuASne8zuJ2AQXa67uu4SxilagdxKKWjyJyk21ORa4lIu3EvCaKyX3g8Zfo48VfJxSkVhlF2P7kytlKGFueXEtQJ/Kwik3x9EoscOz3Yk9eHrNTVktg3/3QvB528OKZ2707QX7W3U18Y9qdXcESu3IsWvZ5txzapkxj0Xsyi96Z1Hrk0T6orbdFwAXNHH+wBVtzBMxZRr8FW3MEuiwX736PRe0CFrWvs7d2UffrdNXkiKe2U9zaLY+XItd6SSxRWS3vbzKRG6t1RP8kEqdbtu1UIQ2WVzhRPpanOPY7SY9wBbs9yIV0VgOLSz9TkRtbzIIN66nkX3yH+CbfIb7Jd4iNDdGvZYaGlhPYw9vp6Q1VD3ahhv7KAhc0c+0BtmBrjoA5y+i3YGuCQLB1W9RTW7LzdY6t3RXNJlxQwZ5afuI6iK/HA/mJa9mojIrgVORKJk7CFeKnEIv15FoiN50IlZjceE+uDpEr9bjonBOjoROxoRIQuRl1J/0nxd7BSIPpELnxpRTBW8KCt5QFb+Hyr7p9rWZs4JAG8fS2futQ/RX0oUVc0Mw1CtiCrTkC5iyj34KtLgLFez9RnloJRYifCaG98iAWtXy97RS2OvLMROSme/FMhGyy2RUShSukCifIxpMrfJKFKyQS2BC5OnqURhuxAte6uzIhcmOLrGJ5Wewq0cvilzo6ol93DB9BzTNPpZaTT6OWk06hcFGRxtr6xxQuaObaAmzB1hwBc5bRb8E2UwKBUBsL2teoZNsr7LV9lQqaN3aZChRQM3tplahlcZsqtjbT/DMRuZbeiJ8pwRKO1ktp6WJyxY41w0GsN1eE8PTJB6p5brMRuRJLK2XYsHlbdCYI68UzeeEsXgCLo1A2hCtk2ps0nhcvcJOJ3I5QZnPg2SpqSwsFXnuVAq++xvsrRKtXd51WXEzh02fxfpo60ogRtkzmQqJg5/TDJtHmAgcTZQRbE1QjNsEWbM0RMGc5L/tt40YK1M6nwOZX1JFCrV0AK/ejcA1fN2vYUTT0VP7hlpiDy5YLLMAZ5JJoCq5YR5sdkRsrdGOLEDu7QqbhCtYLY9YsD5Z9q4wipufc93Q0W4kDtmZ2QLhCBh1C5ymJOpdlP3a6jq27m3Vmm9JW0eJFVLzgVSp5/RUq+nhht7Rthx6uPLytvLdNneZamUxkVFFaqMw2NLebMN+rbYKtueYHW7A1R8Cc5Xzpt0V7+fq4/RUq4b1oz0fdr4/9ZlBLNV8fq0+ltr7uXh+H9C8113iwnJIAphBz2EFMxeQ6LIZKXrCZJ6N+4zUqZcFbsoA9va0tUTMdo8eosIbmU2ZxWMPJmZj39Bw8mjSHH2zB1hwBc5bRb8E2EQGJrS3dPj8ShtC4NpokzN7ZlkGnUDMLWzl2lHq3GFOm4QrmWrz3WIbIddjWfhK53Yre3k6l4uHlXY4FGzdEvw717UstLHabT+X9NA5vKO2apNph9V1LjguaOdRgC7bmCJizjH4LtkIgEGqi0m0sankv2TGfgm17u5w7ZSP5pTF+Z4X3ZvbYUiDyRNDrDSLXuxaAyHXI3rciN64exZ9+HBG8r7xERUuXdH0bDEbEroheFrx+nZ4MFzSHHdNBcrB1AMthUrB1CMxBcrB1AMthUr+zVdN8bRVvLe/staVwKFrDtqop1Dz4DCVsW/sd5rDm7iSHyHWHc6JcIHI1sLe7GISGrDIyIbM1lL72Mgve+VT873e72Wg5+jhqEdF76unUvt8BGdk3cZLfB10TdXbLJtiaIw22YGuOgDnLfuy3hY2r2Fv7MsfXssd219vdKt/a/xhqHsLXrUF83Uqx0pg5Ys4sQ+Q646UzNUSuBpp+F7mxVSzYuoVKXuW74c499ru2qd+i5llnUdOss6l9wkEayGRuwo+Dbua18deZYGuuPcAWbM0RMGfZL/22sP4rKtv6AovbF3m1sc+6Vbi5mkXtYH7HhI8dJUPNwTBgGSLXAFSbJiFybYJKlSyXRG5sPQIN9VEPr3h6A3X7ol+3TZ6qBG8zC962gw/RQMmZCb8Mus5KnRupwdZcO4Et2JojYM6yl/22qO4LFrWWsF0crWS4sA/H1Z6uhK14bMOFleYAGLYMkWsYcArzELka2OeqyI2vusTvls5/kfcXKLhnT5fgnTg5InjPYMF7yCQNxNKb8HLQTV+63E4BtubaD2zB1hwBc5bd7rdF9UupdEunsK37PFqxUFE/FrVncygCX2+qzzBXYZctQ+S6DDwmO4hcDezzReTGolAxvJbg3dW1lnfbIROVd7f5zHNZ8E7UQC+xCbcHXWMV8aFhsDXXKGALtuYImLPsRr8tqlvGHtvn+AWyF0j+trZQ8YCIsB0swvZ0c5X00DJErnfwIXI1sM9HkRuLRebgLWPvroje4I7tXR5ejuFtOvs71Mx7+5j9NJDsMuHGoKu1wDlkDGzNNRbYgq05AuYsm+q3hU2r2WP7LJXxHhtjGyquVqK2acjZag7bfN8gcr1rYYhcDezzXeR2E7xvLqCyf/Ld+IvPUnD37uhXrd8+Rgle2UODh2RN1dSgm3XB8sAA2JprRLAFW3MEzFnW2W+DrVuVqJW9eHfXbD6hov4chsDXiCHnsrCdaa4yPrScjyJ31uW3KtLz597uQ+JdRYLI1dA8vUnkxuISz27ZC89SKe+xq62pldY6BW+4siojwjoH3YwKkMcnga25xgVbsDVHwJzlbPttoL2OZ0XgawELW1l5zNrCgRJqHsrClnfx3PbWLd9E7qJlK+kvj7xAGzZvo9/8xzU0beI43zYtRK6GpumtItdCJwJXhK4SvCx8o1tBATXNvpD3C6j55NMckc520HWUWS9LDLbmGhxswdYcAXOWM+23pdtfYY/t01RW+xQv0NARLaAKRRBhy55bWV63t2/5JnJ/PecROnTyePrk8+WqaX914xW+bWKIXA1N09tFbixCCWGQUAYRvCVvvRH9qmPESGr6zgXUdN6F1MazNaTbMh1009nF90Rga64XgC3YmiNgzrKTflvEsyGUbX6KPbdPU0FT1/LxLQNPigpbCU3A1kUgK5H7YozjyG2oZyX2vsvKrwueuou2bNtJt/33A74OWYDI1dBpIHITQyxcu5rKnuHB8NmnqfDrr6KJWg+bERW8oYGDEp7sZNDV0IS9ygTYmmtusAVbcwTMWU7Xb4NtOyLClr22xXsWRgvSXnkQC1t2Xgy7kNrL9L58bK627lvOSuTedBPRnDnuF1ry/PnPe+RrhSrce8fN6jsRvHPvvs23IQsQuRq6DkRueojFH7xHZfP4sda8pyi4d2/0BAlnaLzoMmo56eRuRtINuulzRIpkBMDWXN8AW7A1R8Cc5WT9tmTH61S++bFIOELnFirqy8KWw9BqLqDW/kebK1QeWc5a5K5a5T6NE09MKHKtUIVZJ81QZZL/y+bXkAWIXA1dByLXGUTx7IqHVxafsLb2ceOp8eLLqIkFb8fQGjxSd4bUUWoIMUe4HCUGW0e4HCUGW0e4HCWOZVvQUste28eofNNjVNgQibmUTRZnEI+teG6xOSOQlch1lpXx1OK5TbR98dbDxvPOJAOI3EyoxZ0DkZsZxIIN66n8SfYSPPk4Fa75Jmqk6dzziK64gtpPPZ3qmtozM46zkhKAWDDXOcAWbM0RMGdZ+m3h1peJ1jzCIQnPRDNqL9+fhe2l1DiMnQ9lo8wVIM8t54vIlVCFRDG4fg5ZgMjV8OOCyM0eYumr83OWNc0AACAASURBVFnssuDlF9asLTR+AtV99ypq/P7VFC4tyz4TWFAEIMTMdQSwBVtzBPRbDoSaqHz9g1S16UEK1nd5bWVmhCYWts3Vs/Rn2gst5ovIve6WO2l4TXWP0AQ/hyxA5Gr4wUHkaoDYaaJg8yYq//tcqnj6cQquXKk+lbl2G65gsfu9q6h9f//Ox6ePgllLEGLm+IIt2JojoM9yYcNKKt/4V6rY8CAFOuqV4VDlOGoYyl7b4ZdTR+lwfZnBEuWLyM3FpoTI1dBqELkaIMaZUI/Pnp1HwQfu7zYVWdN3zqdGFrwtxxyvP9NeYhFCzFxDgy3YmiOQveWSXW9ROQvb2JAEmfortN8PqH34bISHZY84oQWIXENgbZiFyLUBKV0SiNx0hJx/HysWij/9mMr/9iCVPx55i1O21sOPYM/u1WpmBmzOCECIOePlJDXYOqHlLC3YOuMVm1pmSBBxW7znw+jHjcOvoMaRV1Nr38MQwpQ5WltnQuTawmQkEUSuBqwQuRogxplIdEErqN1M5Y/wI7aHH6Dg9m3qDFlkokHE7hVXU2jgQP0FyUOLEAvmGhVswdYcAWeWg607OSThQarg3Vq0IVQ8mBpY2Iq47SgZFjWIfuuMrdPUELlOielLD5GrgSVErgaINkRuN8/Eow8psVu0ZFHk48JCqr/2x9Rw7Y+U8MWWnAAuaOZ6B9iCrTkC9iyLoK1Y/2eqXPcnfqEhMjtNW59p1DDqGo63vTKhEfRbe2wzTQWRmym57M+DyM2eIUHkaoDoUORayUsWvEYVjzxIpfO7lj5suOpaarjux3hJLUmz4IKmv79aFsEWbM0RSG25sHElVaz9E79Mdl80YfPgs6hhxNXUUn1KypPRb822GkSuWb6prPtO5M66/FZat3FrwjL7dbJhiFz9HdjpoFv82SdUce+feJGJJ6OFabzse8qz23bIJP0FzGGLTtnmcFVdLzrYmkMOtonZFtUtVZ7b8o1/iyZoqrmIGkb/mONtD7XVIGBrC1PGiSByM0aX9Ym+ErnJ5mDLupaGDUDk6gec6aBb9MUyqrifB/y5D3cN+Lx0sHh2W6cfpr+gOWgxU7Y5WFXXiwy25pCDbXe2xXs/Vp7bsi1dS+42jvg+hyXwjX3VREcNAbaOcDlODJHrGJm2E3wlcv28akYq4hC52vpj1FC2g27h6lXKs1vx4L1Rm81nnE31Ina/fYz+AueQxWzZ5lBVXS8q2JpDDrYRtsW731XxtqVbX4jCbhh1nfLctpcfkFEDgG1G2GyfBJFrG5X2hBC5GpBC5GqAGGdC16BbsGljROyydzfQ1qZyaZ55KtX/7GZqPfJo/QXPAYu62OZAVV0vItiaQ97b2Rbvfo8qV99JpTteVZDDwSKeKeFH1DDmx7x4w4iswPd2tlnBs3EyRK4NSIaS+ErkSrjCOaceTbNOmmGoumbMQuTq56p70A3u3EEV9/Ebxyx4A/V1qsBN555H9TfcRG1TpumvgI8t6mbr46q6XjSwNYe8t7It2reIKtfeRWW1z0TEbUEV1bOwlbCEUPEgLcB7K1st8GwYySeRm+i9Kb++LyVN4yuRu2jZSrrtvx+g+XNvt9Ft/JMEIld/W5gadAN1+6jyj3Oo6g93ErVHptdpvPQKFrs3Uvu48for4kOLptj6sKquFwlszSHvbWwLG5ZT5Zo5VL6pcxGcQCHV7XczC9wbKVzYRyvo3sZWKzwbxvJN5P7kytlRZ+Sv5zxCm2q307133GyDhPtJfCVyJSY31ebXuwWIXP0d1/SgW7B1C1Wy0JVQBmtruOaHyrPbMTy7R3/6aei1aJqt3tLmljWwNddevYVtQdNG5bmtWP+XrrGJ423rx97MCzgMNQK4t7A1As+G0XwWufPfWEh3PzTPt85JX4lcG33Fl0kgcvU3i1uDbuGab5TYLX/04UglAgEldOt/ejOF+vXTXzEfWHSLrQ+q6noRwNYc8nxnG2zbw57bO3m/iyGGFUiZLaGevbftZfubA8uW852tUXg2jGclcjd1zQFvIyu9SYaf1cOehCvEenIlzPSwqRPomkvP0Ju3JmsQuRpAQuRqgBhnwu1Bt2jZ5yx2Oe5tXmQ6nnBFpQphELEbLi7WX0EPLbrN1sOqup412JpDnq9sA6HWTnE7hwId9Qpg09ALWdzy+wJVk80BjbGcr2xdgWcjk6xE7mc3EX09x0YumpNM5zzH/zyhyI1fy+DGay+AyLWLX+JyL//Jb7oln3v3bTRt4ji7JrSme+Dxl2jOfU9HbR59+KQesScQuVqRK2NeDbrFCz/gmN27qPSVl1Q5QtWDldCtv/4G/ZX0yKJXbD2qrqvZgq053PnItnLtH5XADbZuU+CaB5/BMbc3UWv/I82BTGA5H9m6CjBNZlmL3LpV7ldn6IlJRW6sJ1cKJqGmv/3P6305aYCvPLkS2/HL/7qHFjx1F9UMHqAatXbbLpp54U2eARRXfGxAdaIFKyBy9f/+vB50S/61QL2gVvLOv1TlOkaPpTqedqzxiqv0V9Zli16zdbm6rmYHtuZw5xPb8o1/pSqeDqygaY0C1jLwBPVCWcugmeYAprCcT2w9AWhS5PqsQvHhClI8P4cs+ErkJoInAP0U2Cye3Y8Xf91N+ELk6v8V+mXQLX3pBeXZLf7kI1XJtkMmqpjdpvMv1l9plyz6ha1L1XU1G7A1hzsf2JbV/l3F3BbVLVOgWvsdrjy3zUPONgfOhuV8YGujmp4lycqT61mpE2ccr9O8dkSmw+MrkZtsxTMrhMEPsytIAx8x/RD61Y1XRNlC5KbrZs6/99ugW/b0E2rascKvvoxcnA6bocRu86yegfnOa+vuGX5j627tzeYGtub45jLb0m0vKnFbvGehAtReebCaDqyp5hJzwBxYzmW2DqrpWdJ8E7nxMbl+DVWQBveVyPWzJ9eaADlRTG448iIsNp0EAp3G/Mb23nspcAfP47wm8piRZs6k8C9vITr5ZJ21N2vLr2zN1tod62BrjnMusq19nQJf30G0ZUGES8VYCh98K9EB15njlInlXGSbST09Oocn7cHmEQFfiVw/xuTGt0uiiY9rdzV51Hz5m21VaaGqXF1zZMEGv20Vf/q9mo0huGO7Klrz6WdSgywVzB5ev29+Z+t3fqnKB7bmWi+X2IrHtkKW4N32TwUkVFzN89zeRA1jf2YOUBaWc4ltFtX07NSaAWWe5d3bM/aVyJXG8NvsCvEdJFHoBMIV9P+McuHxWaC1hSp/z/Na8gtqgcYGBUGtnnbTLdQ+Zj/9UDRZzAW2mqrquhmwNYc8F9gWNq2mym/uiK5SFi6oUC+U1e/PUxEGSszBydJyLrDNsoqenp5P4Qqegswgc9+J3AzqYPQUCVOIXWZY3iKULXbGBYhc/U2QS4NucPduqvyf31Lln/4nCkKmHatjsRuurNIPJ0uLucQ2y6q6fjrYmkPuZ7aBjjqqYnEr04FZW/2Yn/Nct7+kUFF/c1A0WfYzW01V9NQMRK53+CFy07AXUfveR0ujqTBPrjudNRcH3cJvVlLlXezFefIxBSnUvz/V33gr1f/op+5As5lLLrK1WTXPk4GtuSbwK9vKtX+gytW3U7Btt6p847DL2HPLT3PKvZnbPZMW8CvbTOrix3Mgcr1rFV+IXGsiYZkjN9Xmh9kVEpUPnlz9HTiXB93iD/9NVf9zB5UseE2BaR83nupu/CU1XXipflAZWMxlthlU19VTwNYcbr+xLdv8OM91+1sqbFiuKt1SfQrVjb2FF3L4tjkIhiz7ja2hanpmFiLXM/T+ml3BOwzZ5QyRmx2/RGfnw6Arc+xW3XU7FS1ZpKrYeuTRLHZvoZYTvZnw3eKcD2z19zg9FsFWD0c/jwklOxawuL2Dine/p4rZ1mca1e1/K69W5u1ct9mQR7/Nhl76cyFy0zMylcIXnlyrcsnmyfXTYhCJGgIiV3/3zKdBt+JvD1LlnDuoYOMGBar5rHM5XvdWaps0RT84Gxbzia2N6rqaBGzN4faabVHdEo67vZ1Ktz6nKtlRNpJjbm+hhhFXm6u0S5a9ZutSNT3LBiLXM/T+8uTmwmIQELnudNa8G3RDIeXVrZzzWwq0NCuIDVf+gGN2b6GOYcPdgdqZS96xdZVe6szA1lxjeMW2oHkTx9zeQRUb7leVCwdL1QtldfvxfLeBoLkKu2jZK7YuVtHTrCByvcOfE55cWUp33vx3us1y4B2ynjnDk6u/NfJ10A1u20pV7NWtuL8z/rywUHl163/+SwoXF+sHmcBivrJ1BV6aTMDWXCu4zTYQauXZEn6rvLcUjszX3TD6ehV3GyoZYq6iHlh2m60HVfQ0S4hc7/B7LnITzYubCMfcu2+jaRP9+bYqRK7+Dpzvg27Rl1+wV/d2Knv2Hwpex9Aa5dVtuNr8Skj5zlZ/b7RvEWzts3Ka0k22FevvVd7bgpZaVcymmvN5MQcOMao6xGmxcyK9m2xzAojmQuajyLVWgY1F5cfJATwXubGAkoUraO5v2s1B5GpHSr1l0C15518qhKHk3bcUxLZDJvFiErdS0zmz9UPttNhb2BoDmMIw2Jqj7gbbsi3zeDEHflm0PjJtZMvA41nc/pKPJ5irmA8su8HWB9X0rAj5JHJrt+2imRfeRDdeewFdc+kZUabyxF222M88Ax6Tsa9Erh+AZFIGiNxMqKU+p7cNumXznlJhDIVffRm5uB5/klpMovXbx2iH29vYagcIkesm0mheJvtt8e531WIOJTvfUPm1Vx2swhKaai70pK5uZ2qSrdt18WN++SRyZe2A4TXV9Ksbr/Aj6h5lgsjV0EwQuRogxpnorYNuxX1/Vi+oBXdsV0Sazr+Y6n72C2o/6GBtkHsrW20AIXLdQNkjDxP9trDuS6pa8zsqq/27yi9UVK2mA2sY/SNP6uhVpibYelUXP+abjch9cfmLnlXprPFn9cg71564+0rkWm7wZC3qx3gPKStErv7fYG8edAPNTWrlNPHsUjis4DZcdS3JUsEdI0ZmDbs3s80aXhoDYGuOsE62BU0bqHLtnVSx/r7OAgd4toRb1Epl4WCZuUr41LJOtj6toqfFykbk3vTqTTTnwzmul3/OqXPo50f8vFu+lkZb8NRdVDN4gOtlyiRDX4lcCWSePetYmj75QLrtvx+IzqYg7vFzTj2aZp00I5M6Gj8HIlc/Ygy6RAUb1lPl739HFQ8/EAUsQreePbuhvn0zhg62GaNLeyLYpkWUcQIdbIPte/mFst/xrAl3RsvRMPIajrv9Bc97OyrjsuX6iTrY5joDk+XPVuSu2rXKZPES2j5x7Ik9RK4khCc3i6aw4A0dPJCuvun2qMiVGRhiRW8WWRg5FSJXP1YMul1M1UwMLHbLnnlSfRiurOIQBha7LHipoMAxfLB1jMz2CWBrG5XjhFmxDXcoYVu1+k4KdNSpvJtqLlLiNl9nTHACOCu2TjLqpWmzEbl+Q4aY3CxaJPYOQf62whOsacYQrpAF3Bw7FYNuzwYrXvgBVf7hTip9db76sqNmmPLqNlzzQ0etC7aOcDlKDLaOcDlKnCnbivV/YYH7Oypo3qzya66exeL2Zmrtf6Sj/PM5caZs85mJzrrlk8i19Fj87AqyMu3mrTswu0KqjiN3CIdNnaAgxf6NxSB0/txywxYG3eTtVPLG61TFnt3if7+rErUfOIG9ujdR48WX22pcsLWFKaNEYJsRNlsnOWVbvmkux93eRYX1Xyv7rf2P4bjbX1DLoJNt5debEjll25vY6KhrPolci4c4ImO30SOG+HLBLl/F5MZ3pliIfg50RriCjmGguw0MuumZlj33jApjKFq6JHIR/9ahyrPbfMbZKU8G2/RsM00BtpmSS3+eXbalW19QntvivZ8oo21VU3gZ3l9Q09Dz0mfSS1PYZdtL8WRd7XwUuVlDccmAr0WuSwyyzgYiN2uEPQxg0LXPtPzRh1UYQ+Gab9RJLcedyGL3Zmo5NvEE9mBrn63TlGDrlJj99OnYluzihVU45rZk55vKaHv5/iosoXHE9+1n0ktTpmPbS7FoqzZErjaUjg35SuTm2lt7Fm2IXMf9Lu0JGHTTIuqRoPKePyrPrjXHbvOZ56iX08TDG7uBrXO2ds8AW7uknKdLxlY8tvJSWenW55XRUHG1eqGsfswNzjPppWeg35pteIhcs3xTWYfI1cAeIlcDxDgTGHQzYxpoaWahe6fa5W/ZJFZXPLvt48ar/4NtZmyts+pa99G+lr0UPbZ1/b8lFHlzvyRYRVXFfahPSV+qKuo8Wv/nIzbnBOL7bWHDcuW5Ld88VxkLB0uV57Z+v5vV39jsE8CYYJ9VJikhcjOhpuccX4lcv8+Hmww5RK6ezhhrBYNudkyDO3cor27ln/8QNdTwg+tVzG752MiCEnVN7dllkqdnb9y3nlbuXk6rdn9NK3d9TSv4WNuwSQlb2XVslgAeVjmCDhwwgcb1n0AH8D6u/3ga0af3zteaiq01JjTu4YUceK7bivX3RJPXj/mpirsNFQ3S0Ty9zgbGW7NNDpFrlm8q674SubKaRuz8uN5hcZYzRK4zXnZSY9C1Qyl9msK1q5XYlbhdtfG8uq0338L7L2hfQe9b2SmW2Lp9q1nELmdBy2KWRe2KnV+xsF2uPLQpxRZ7YiMiVY7sqZW/5cj/r66IrAK0vWEX1bWwh7c14vGt4+M+/n/k7/T2D2CxO06J3/Esgg/iv8fT6D77pW/wPE7Rp6iJilfyC2UrZCXADlVTibcVcdte1rvZZNvsGG+zJZj6fIhcs3xzRuTGT0kRX3DMk+tdR3E7Zwy6eonLDAzyclrZs/9QhsP9+lPdDTdS/Q03EQWDejPzqbUvdnxOH256jxbWvk8L+bijaXvCkg4uHxLxqrKwFA+reFpH990vKmQDFEhaQzv9NkzhqABet3c1rWBvsRLaLLjFe7ytcWtC+4PKqmnG8KNpRs1RdAQfDxk02aekNRcrHFJTgVWtmUOBtt3KeFPN+RxzezO19ZmiObPeac5Ov+2dZPTUGiJXD8dMrPjKk5tJBfxwDjy5+lsBg65+pmKx+IP3qN8fee7Q115RGagFJVjoNlz7IzMZemh16fbFtHAzC9rNLGz5uLNpR7fS1FQOj4pY8Zoq7ymL2oFlmT/y1tFvpZwiesWrvGLXV1Fvc239pm7ll3LOGHYUHd4peidVT/WQtpmsK9b9mV8qu4sKWiILObQPOY32jL6J57w92kyGvdSqjn7bS9HZqjZEri1MRhL5SuQmm11BVtK4+6F5vpxoWFoFIld/38Sgq5+pZVHYFr76MhX8LmZBif3Hsdi9kRov/765jA1b/nrnl/TuhjeUoP2Qhe3u5l3dchzdZywdzqLwCN5nDD+KxvY9QHuJTPbbNXtXsQda6vY+fcT7un1rupW/f+kA5eEVT+8xI0+iCQMP1l4/twyWb+Rp8dbOocKGlSpLWcihYwKHJQw5HbHkBhrBZL81UNycMwmR612T5YTIxbK+3nUQr3LGoGuOfCzbsufnUSV7dosWf6YybJs4Wa2e1jT7QnMF0Gj5480f0IJ1L9Pra16i5ez1jN0khvWIESL6vq08nmP67q8x58Sm3Oy3a/d+E/FU1/6bPtz4Hove1d0KNZ5jeU8eewbNHH06HTYsN5awLat9Snlui+o+j/THPt/iGRO4Pw6djVlBDPZeN/utwWr41jRErndNkxMiF8v6etdBvMoZg6458onYlv+dl0D9I3vOlkeEYuuMI1UYQ/NpZ5grSIaW31z3Gi1YO5+F7XzaXL8xakViVvuU9KMbpv9Cxa6K59btzct+K55diTX+46e/45fc9nSLOZZZHE4eO4tmjplFJ44+xW0safMr3f6SErfFuz9QadsrD2Jxy08WhnUtVe0l27QVyPEEYGu2ASFyzfJNZd1zkWt5adMhmHv3bTRt4rh0yTz5HuEK+rFj0NXP1LKYim3FX+9Tnt2CDetV8pbjT1JhDLKKmldbY1sDi1rx1rKwZXEbOzuBeGdPHns6nczi7agRx3tVxGi+fuq37298S/F6fc3LJF7faPvzbBDCKyJ6T6fyogrPuMnqZJX8QlnJzjdUGTrKRvELZRwjPuraHmXyE1vPgBnKGGwNge00C5Frlq+vRW5s4bDimXcdwW85Y9A11yJ22Fb+6X94Noa7SObbla359DOVZ7f18CPMFSzO8j9XzaMXVj1D8795jsLhcPRbecFKPYZngTZl8LdcK4+djOywtWNHd5ol2z7rvFF4ieSFPGsLBAI0a/9z6ewDzqMzD5itO9uk9op3f6hmTCjd9k+VJlQ8SIUl1I/5edJz/MrWNWgGMwJbg3DZNESuWb45I3K9w5BdzvDkZscv0dkYdPUztSzaZRtoblJCV8IYAk2N6vSm8y5SMbtth0wyUkDxPr6w8hkWt//otvDCkcOPpVPY+ziTvbb79fPnEx0BYpetEXg2ja7es5IWsHf3NfbyfrDpnehZfUv70Vn7n0dnjzvPmFe8qH4pL+RwF5XVPqnyDReUs7Dlqez2u4lXKUs9b3MusLXZBL5LBrZmmwQi1yxfiFzDfCFy9QPGoKufqVORa6UP7tqlQhhkt7bG7/Ik/OzZbd8v+xkKvty5lF5Y8Q8lbmNfnpo25DA6Z9z5dBaLrqEVw8wB0Wg51/rtlobN9CJzf37lP2jR1o+jJOSlvXMOjLA/eGD2NzSFjatUzK3MmmBtEc/tTezFjSygkW7LNbbp6uOn78HWbGtA5Jrlm1Mid9blt9K6jYknQ8diEN51FLdzxqBrjnimbAs28nKqLHQrHrw3WriG636sxG7H0BpHBZY5X8VbK8J28dZPoudKjO3ZLGzl8flBgyY6sumHxJmy9UPZv9qxTIWHvMCCNzaGd+qQQ5V39+wDzieZW9jJVtBSq8Rtxbo/dfWZUdcpcdtRFlle2u6Wy2zt1tGrdGBrljxErlm+OSNyr7vlThpeU02/uvEK74jE5fzrOY/Qk8+/Gf306MMn0b133NwtFTy5+psLg65+ppbFbNkWrlyuQhjKH38kYpKXChahK3uob9+UBRev4TPLn1AvRFlbX54RQQlbFlLfHn6cuYq7YDlbti4U0VYW/970diRshAXvXp6pwdrkhbXzxl+iPLyptmDbXhVzKwK3awneK1RoQnvFeFtliE+UL2wzqrzhk8DWLGCIXLN8c0bk+vHFM/Esz597e5Sh/H/2rGPpmku7plaCyNXfgTHo6meqS+RadoqWLFKe3bLnnlEfhSurVLxu3c9+oYSvtclyus98/QTNY3G7vWlb9PMzx82mszkG9IwDvmOusi5bzsd++9KqZ+mFb56hf66cF6VZXTaYZrPYPW/CJd2XFw53UNXq3ylxG+ioU+mbhp6nXipr6zMtq9bIR7ZZAdF4MthqhJnAFESuWb4QuRr5ypy9Hy/+ups3FyJXI+BOUxh09TPVLXIte8Ufvk+Vv7+TSl/vXCqYQxe2//Sn9MhRVTSPxe3C2vejlZlcPS0ijngfUDbQXCU9spzP/XZX007lhZeblc+3L4oSlhXWZrPYvaKsjqrX/4GX4K1V3zUPOo3q97+ZWvsdpaU18pmtFkBZGAHbLODZOBUi1wYkQ0k8nyc3tl4SrnDOqUfTrJNmGKpu9maljIdNndDNk1u7syl7w7DQjUAlLz0rW31TO8hoJmCKbckbr9Nnj/4n/T34Oc2dwnPsdjpzq3he1tkHXqSE7aE17k1BphmbLXOm2NrK3MVEn9R+GBG8K56MzltcEiC6vIro4mGT6VtT/4taBp2stUS9ha1WaDaNga1NUBkmqxmYeuaQDM3iNBsEfCVyZWGI2/77gW7hATbq4FoS8eLOue9pin8BrmsGT9eKkvcZ8fVSbWCrv6l1s62tr6VHlzxKj30+l5ZuWxot8Em8yuzlvDrr5UXTqeDW/4vovNRxnPpr6r5F3Wzdr4GDHDc8Qx3L/j+au+5TmruP6I2Ye/1JgyfRZZMvp+9O+S6/rObspcRkJehVbB00g46kYKuDYnIbFl+zucB6IgK+ErkSk5tq83J2hflvLKRf/tc9tOCpu6hmcPcpbxCuoP/Hhcdn+plaFnWxfXX1P+mZFU+QxGxa2/Cqkcpj+x323E59+SM1z27hNyvV1y1HH0f1P7uZWk6Yaa5yHlvWxdbjaqTMvmTHAo65vZNKdr2t0rWXj1Mxt4vLD6dn2bMrHt5NdRuiNiTmWvrEqWPPzKpavYFtVoCyOBlss4Bn41SEK9iAZCiJr0SuoTpmbTaZB9cyDJGbNeIeBjDo6meqQ+Su2r2cRczfeX+8u5DhVbMk1va0/c7qUfCKe//EYvdOKti6RX2nVk/7KcdqHubfsKRM6edzvy3es1CJW2uVso6SoSxub6aG0T/ugeuV1S+q2N2XeLU6a4vcAF3K+8V0QH/nMyzkM9tM+5uu88BWF8nEdiByzfJNZR0iNw17icGVLX7asNjTIHL1d2AMuvqZZipyZUld8djKDAnvbHgjWrAJAw/uFC2X0JCK1I+kA21t/HIav3Uvq6c11CsbTRdcQnUsdtsPOthcZV22nI/9trDuS6paeyeVbX5C0QwXVqp5bkXghoNFKQlvbahVnl3pP1/v+CKa9tiRJymxK6JXlha2s+UjWzv1diMN2JqlDJFrlm9OiVwRle99FInrm3v3bTRt4jiSMIaLzjnR9flza7ftopkX3pSQn1U2+RIiV38HxqCrn6lTkSuLNIg4+cfXj0eX2C0qKFaPnkWgZDKnbXD37ojYvXtOtIINV/5AeXY7Ro4yV2mXLOdTvy1oWq88txUb7o/SU6uUsbgNFfV3TFTm3o08BXiC2jpa1fl9SvpG+tOBl9C0oYeltJlPbB3DM3wC2JoFDJFrlm/OiNzYxSBkPtrf/Mc1SuRKPOzdD83z7QtpELn6OzAGXf1M7YjcfS17I5433mOXeT2s5kglRmazxFeRgAAAIABJREFUuK0oqsy6cAXr16kQhoqHH+gSULKgBIvdUH/nAirrAmkykA/9NtjKNyLsuVULOXRuDSP5RoTFbUdZ9jciDW31HMoQEbsf134QzUOWcY7cQF2ixG/8lg9sNXUz7WbAVjvSbgYhcs3yzRmRKx5b68WuWJErsy5c/pPf9JjVwDts3XOGyNXfEhh09TNNJXIlDEG8bBJHGQqHVFKZxzYiOi6lSdVTjRSo6MsvlNgt+8fflf1wBT8K5wUlROyGi1I/CjdSoCyN5nK/DYQ4pIQ9t5GFHDpDSmouprr9fkHtlWZCSpZuX9x5U/U4yTy8sgUDwc65lC8mCWtI1W+zbC6c3kkgl/ttLjQiRK53reSrmFwRtg/edauavQCeXO86hR9yxqBrrhUstl9vW9M51+nfaeWur6MZnjj6VLWS1bnjLjRXiDjLxR99qMRu6SsvqW86hvBLTSx0G67r+VKTa4XKIKNc7bcV6/jlQBa4BS2dLwdWn6E8t6393ZvX+LmVT6m47zfXvRolLy+oWbG7EwaPVZ/XYe7sDHpm6lNytd9qB2HIIESuIbA2zPpK5MosBvPmv6PCEiyRO3TwQBUXe+O1F3RbgMFG3VxLAk+uftQYdPUztSy+ueFF+vsXc3nqrxejmYzus58StiIoxvTd31zmaSyXvMnTU7HYLXmvc3qq/Xl6KvbsNl72Pc/K5CTjXOu35Rv/pjy3hY2d07wN4GneWNy2DPJumre1e7+JxO6y4F23jydb7tzOOOAsuviQy+nEkT1n8HDSRkjbk0Cu9dtca0OIXO9azFciVzBYoQmxSH77n9f7ehU0iFz9HRiDrl6mIhye+voxevqrubS5fmPU+DnjLlAhCSeNOU1vhllaK3vhWSV2ixZ/piy1HTKRGn70M2q86LIsLZs9PVf6bfnmx6hi7e+pqG5ZhG+fbylx2zT0O2YBObT+xtpX1NOG51c+HT1zWOUIuuCgy+nCCZd5ekPmsCq+Tp4r/dbXEFMUDiLXu5bzncj1DkXmOUPkZs4u2ZkYdPUwlXlKRdi+vnZ+1OCk6sl06cTv0hn7X0QDSwfpyciQlfLHH+GZGP6HCldEwinaJk6m+h/9lJouvNRQjtmZ9Xu/Ldv8OL9U9gcWt7wUHW/tFRNY3P6cGodfkV3FDZ+9s3kHz7n7JD2+7FFauj1SdtlOHjNLCd4zeJ5mbJkT8Hu/zbxm/jgTIte7dvCVyP31nEfoyeff7PGCmVdTiNltFohcu6Tsp8Oga59VfMp1e1dHvLZfz+22YMP57PkS79dp4yKPonMptrH80Yeo8s9/oMKVyyNid/LUiNg9/+LMQRk406/9tqz27xyWIJ7bJZ3idjzPdftTahxxpQEKZkxabF9ZuUD173/wbm2y0MQFEyLe3dF99zNTgDy26td+my/IIXK9a0lfiVyJw/3JlbN7hCZgCjHvOohXOWPQdU5+/jfPK2H72prIy1uyHTRoIl04/nIlAPqXRZajzmW25Y/8lSr/9PvoUsFtU6ZR/Y9/Rk2z3XtJLlXL+I1t2ZanIuJ236KIuFVL8HLYx4irnHcwj8+IZ7u7aZfq708tn0tf7YiEXch2ytgzVH+ftf85Hpc4d7L3W7/NHXL2SgqRa4+TiVS+ErnisY1dZMGqMKYQM9H0/raJQdde+zS1N9Ijy+6nv31+f7eXdM7nab8uOOgyOnrECT0M5QNbmV+3QsTumm9U/dqmTWfPLovd75xvD5yhVH5hW7bl6UhYwt5PI+K2bH9qYHHbMPIaQzU3bzYV2/c2/Iue5qWmY7278jLl9yb/gK6Y+AMqKyw3X8AczsEv/TaHEaYsOkSudy3rK5ELT653HcFvOWPQTd0iG+vW09+W3kePLL2f6tvqVGLx2l7Aj2svYM+tzHGbbMsnthV/vY8qJIxhbeQt/Nbph1HD9RzGcO55nnRpr9mWbXlGvVBWvPeTiLgt348aRv+UGkZd6wkPnZnaYStz7Yp39+nlj0W9u1XFfZTQvWLSD2hEVfaLWeisk19s2WHrl7LmYjkgcr1rNV+JXAlL+OV/3RNdEEKwWEvr+nmGBcTk6u/AGHQTM1289VPluX3yq0eiCWTC/O9NupZO28/e1Er5yLbiwXs5Zvf3VLBubUTsHnq4mo2h6Wx3Zwvwim3ZlmepYh2L2z0fqfp3lI+h+tHsuR11nf4fp0cWnbJ9ZfWL6kZQFjqxtosOukIJ3qlDpntUC39m65StP2vh31JB5HrXNr4SuYIh0RRiiUIYvEPWM2eIXP2tgUG3O1OZIF8u2AvWvhz9YvaBF6sL9mHDjnTUAPnMtuL+eyJid8P6iNg9/AgVxtB8pjvxmW6zLd36PFWKuN39YUTc8rK79WNE3F7vqE/kQuJM2X68+QN1YzhvRWRVPdlmjjld3RjKwifYcjtOPxfaDyLXu1byncj1DkXmOUPkZs4u2ZmZXtD0l8Rbi/Lo9WEWt4u3Rh4/FwdLVJyhXKDH9j0go8L1BrYV9/IKXvf8gQo2boiI3RlHRsTuGWdnxMzuSW6xLd36Qqe4/aBT3I5kzy2HJYzOrRXi7HKVdNmyXbN3Fd8oSvz6fdQaalFZTx1yKH2ff0vyolpv3rJl25vZ2ak7RK4dSmbSQORq4AqRqwFinInePuiK1/b+JXfTmj2rFJlhVSOU1/Z7E6+lPiV9swLem9hW/OXuiGd386aI2D3iKDUbQ/PpZ2bFMNnJptmWbvsnv1Amntv3I+K2dHjEczv6J0bq4yejutjua9lLf1vG8ezs3d1cF1kYZWy/A+gHU36ibh5746aLbW9kZ6fOELl2KJlJ4zuRKy+frdu4NWFtv3jrYTMUsrQKkZslwASn99ZB96HP/0L3L/4jz5SwRlGZVD1VXXgvOfj72iD3RrYyx26FiN0ttRGx++1jImL31FnauIohU2xLt89XU4EV7343Im5LaqiBxa3MddtbNhNsn/jyYRUGtHT7YoVR5tgVsXvl5B/2FqyqnibY9iqAaSoLketdb/CVyL3uljtpeE01/epGf6++E99cELn6O3BvG3QfXPJn9tz+kTbsW6dgTh08nX4w7QY6d5z++V97G9to7wyHlVdXZmMo2LolInZlNoZrfkhNF1yipRPrZisrlFVsuJdfKPu4U9wOZXH7U+W9JQpoKXOuGNHNNrbez618iu5f9EdavC0y5drIPqNZ7N5AV0/5Ua7gyaqcJtlmVbA8ORki17uG9JXITTZPrnd47OUMkWuPk5NUvWXQvX/x3UrcbqqLxI5OG3oYXcsX17PHmZvvtbewTdrfOjpUvK68pFawKfK4uv2AA5XYbbiaZyMIZC4e9bAN80wJf1HitrBhRUTclo7gkITrVdwtBQqc/JTyJq0etqlxvLDyH3Qf/x4XbYncVMhKatdO/SldMyV/Y52lnm6wzZuOmEFFIHIzgKbpFIhcDSAhcjVAjDOR74PufYv+oC6mtfWRWNHpNTOUuD3zgNn6YfYytk4AygpqFQ/cQ0VffqFOC1UP7hS7P6RQv35OTKm02fTbYNseqlh/D+/3UrB1m7LXVnWImikhF1cocwwvzQnZsHValn+umqd+n5/WLlSn1lQOp+tY7P5g6g1OTeVEejfZ5gQQzYWEyNUM1IE5X4lcCVc459Sjeyzr66A+niSFyNWPPR8H3VA4RPctZnHLMbdbGyKxoTL9lzwWPWP/c/VDTGIxH9lmC6/sOV5E4YG/UPGHkRe6wsUlLHavY8/uD6lj9Bjb5jNhW9C4lr227LllcRvofOu/tf9RLG45jGKoN4ta2K6wiwkzYZtt8V765jn1pEWmIZNtSEUNXTeNxS7/ZoOBYLbmfXO+F2x9U3kXCgKR6wLkJFn4SuTKHLm3/fcDNH/u7d4RySBniNwMoKU5JZ8G3fZQuxK38kLZtsbIS5Uzhh2lvEKn72d2SqtEmPOJre6eV/KvBUrslr46P2q68bLvKe9u26QpabNzwraobokKSyjf9Leo3ebqWUrctgyamTav3pbACVvdbF5e/YL6/S7cHLkJGlw+hK7tFLuFwULd2bluz0u2rlfWgwwhcj2A3pmlr0SuxOSm2jC7gncdxe2c82HQbetopXs7xe2Opu0K4ZHDj1Hi9tSxZqawstNO+cDWTj2zSVP82SdK7JY99XjUTMvMU6jh8itTLixhh60s4FCx6SEq2f5a1HbTsEuVuG3te2g2xc7rc+2wNQ3g1TX/VGL3g02RWS4GlVWr37OEMhQVFJvO3ph9P7A1VjkfGIbI9a4RfCVyvcOQXc7w5GbHL9HZuTzotnQ0070ccyuPOXc17ewUt8eqx5wnj9E7ZVUm5HOZbSb1zeacwm9WKrFb/re/UqA1soBA+7jx1Pjd71PDd6+kcFWfbuaTsQ2076OKjQ9R+caH+WWy5eqccKCEGkdexS+U/ZDay8dlU8xeca6f+u3ra+er3/gHm95R7AeUDVQhDPIbLykozbn28BPbnINno8AQuTYgGUoCkasBLESuBohxJnJx0G1qbyTrhbI9zbtVjY4acby68J00+jT9kDK0mItsM6yqttMC9XVU8QiL1EcfosKVnSKV43ZF7DZecRW1HTJJ5RXPtqh+KZVv+KsSt1a8bXsFi+QRV1LDSBbJBVXaypjvhvzYb99Y94oSu+9vfEvh71faX71AKqEMZYXlOdMkfmSbM/BsFBQi1wYkQ0l8J3IlLvfyn/ymW3Xn3n0bTZvoX08HRK7+3plLg25DW31U3MpqSrIdM/JENfXQiaNP0Q8nS4u5xDbLqho5vfSlF6ji0b9SyYKucIPmmacqsVt03ndUnm3rnlXitnTHq9EytFRzuMOIq6h5sPtx2EZAuGzUz/32zXWvqbj7dze8qajIqoSW2K0oqnSZlPPs/MzWeW38dwZErndt4iuRO/+NhfTL/7qHFjx1F9UMHqCo1G7bRTMvvIl++5/X+3bWBYhc/R04Fwbd+tY6FZ9375I/UF3LPgXhuFEzlbg9no9+3XKBrV/ZxZaraNnnJFOQiXc30NbGblwOQZg9mOgEnsq2KDIFWDhYpLy2MgVYW9XkXKiWb8uYC/32rfULlNh9m4+yVZX0oeumRKYeqyz2r9c+F9j6tmPaKBhErg1IhpL4SuTKkr4/uXJ2DzEr4vfuh+b5dtYFiFz9vdPPg66IW2sqsLrWiLg9YfTJStweO/Ik/TA0W/QzW81VdcVc2frnqPLj26mocklXfrygWtv2KVQ39VZqnune9HCuVNijTHKp376z4Q01Rvxr3esRsVvch8cHDmPgMcKPYjeX2HrU/bLKFiI3K3xZnewrkZtsxTMrhAGzK2TV1jl1sh8H3fo2FreyiAN7by1xe+KYU+gHk2+gY0f5X9xaHcCPbHOqc3JhC5rWUzkvuVtW+/foqmRSh47wdKL3+Pu/RJaHlU1WU2u64GJqvPBS6hg5Kteq6pvy5mK/fWf9G3T/53+kN9dGQluiYpdjdiuL/OPZzUW2vumYNgoCkWsDkqEkvhK58OQaauUcNOunQVcErQhbEbgidGWTWFvxykjsba5tfmKba+xk+i8Rt6XbXuwSseUHUNOwS6iRpwErH7C/+rxx+TdUztOPlT31BBWuXhVN2zzrLCV2m888J9eq7nl5c7nfSqyueHYldlc2Ebjycpp4d0X4er3lMluv2dnJHyLXDiUzaXwlchGTa6aRc9GqHwbdqLjli5OEKETE7alqtoSjR3DgZY5ufmCbS+gK679mYfsEe22foILmjdGiN9VcqMRt86BTo58lYlu64FUqe5IF77NPR9N1DB/B3l0WxhdeQu0HTsglHJ6VNR/67Xsb/6VmY3hzXeSFRAldkJtlr8VuPrD1rGPayBgi1wYkQ0l8JXKljphdwVBL55hZLwddWZXsoc/voQeX/Jlk5oR8EbdWF/CSbS51QxG1Im5LdkReIpKtrXISNQ2/VHltQ8XVPaqTim1wx/aId5cFb9EXS6PntpwwU4ldEb3YkhPIp34bL3ZlBoarp/yIrpx8vVpNze0tn9i6zc5OfhC5diiZSeM7kWummtlbTfXyG148y55vvAUvBt11+1bTX0XcLv4zhfmfbDK/rXhuZb7bfNm8YJsr7Ir2LeqMtX2Cgq27VLHDwWL22IqwvYRa+x+Tsip22Za8/44KZSh7+gleZKJV2QwNGNDp3b2U2qZMyxVkrpXTLlvXCqQhI5lfVzy7Mt+ubAH+d/XUH9FVLHZH99lPQw72TOQjW3s1dycVRK47nBPl4iuR++s5j9CTz79J8S+YyQtpF51zIv3qxitcJxXrWR49YkjCGR4gcvU3i5uD7pc7lipx+8SXD0crcsYB31EXmiOGHa2/ch5bdJOtx1W1lX0g1ERl7LGVWNvi3f+OntPab0ZU3IYL7M116pRtoKGevbssdtnDW/zxwq68j/i2it1tYg9vuLTMVj3yPZFTtrnEY2Ht++rJ0Uurno0W+5KDv6/GoIMHRRYaMbnlM1uT3Ozahsi1S0p/Ol+JXD+/eAZPrv7Ol8qiG4PuJ7UfKnH7/MquWMkLJlyuHhtOqp7qboVdzM0Nti5WJ+Osine/T+WbIjMkiNCVLVTUl5pqIuEIbX15pgSHWzZsixZ92vmy2uMU3BtZVEQErpqZ4aJLqfWIoxyWJr+SZ8M2V0gs3b5YjUlPffVotMjnjLtAid1Da44wVo3ewNYYPBuGIXJtQDKUxFci189TiKUSuVt2NRtqnt5rtrKsQFW+vqlDO4S3eQ5L8Zq8vmZ+1PaVk37I4vZ62r//gdrz85tBk2z9Vtf48hTWf0GltfOodOuzVFj/VfTr1gEnUNOIy5TnVh4aZ7ppYRsOc9zuYyp2t/idf0WL0j7+IGo++zvUfM5saj/okEyLmLPnaWGbI7X/ZvcKHqPuoYeW/iVa4pPHzlI34McZmIu7N7H1ogsMHVDqRbbIU0bzMG9+IZGrntyQfxD6pSmzLofEpslmxcZmbZANPP75Y/TAogfo7XVvK3NlhWX0kxk30A2H30DDq4bryCInbJhg6+uKN6ylwPp/UGDDP4h2ftRV1LLhFB57OYXHXE7UV49o1M72iy8oMHeu2mnTpq6yH344hc8/X+00Zoyv8esqnHa2ugpm0M6muk1090d30x8X/oGa2iNPG44bfRxdM+0aunTyZdpy7o1stcGzYSgYyPzG2YZ5JElBwFci189TiCFcwd3fka7HZzubd9Bjy/5Kj3/5EG3Yt05VYmDZIPX476rJP1JrzPe2TRdbP3MLtu6kMvbWlm6ZRyW73ooWNVTYh5qHzqamIbOpZZD+pZdNsi15cwGVvche6OfnUXBfZKU92VqOPUF5eJvO+g6FBg70c7NkVTaTbLMqmAsn72vZy2EMf1ahDDubdqgcR/YZTZcefCVdNvEqGlg6KKtS9Ga2WYGzeTLCFWyCMpDMVyJX6ufXKcQgcg30vhQmsx10F2/9lB7/4q/0GItba5tYPYUuO+QqdWEoDBa6WyEf5ZYtWx9VpVtRAqFmFYZQtoXF7bZ/dn0XKFCitmkoP+ofYnaJXbfYlr74HJW9wHV9YR4vs9YV0tN8+pnUJCENvIdL8usRqVts/dq/pVztoXZ1w/4Yj23LtnctI30Zj2mX8tg2dYjzOHKxC7ZmWx0i1yzfVNZ9J3K9Q5E6Z4hcd1sm00FX3k6eyxcAWTve2k7b7ywWt1erVcqw5d8FTVYfU8KWBW4g1BJt4uZBp1FzjXhtWfAVVLjS9Jn220wLF2hsUGJXvLulr0emoZItXFwS8e6K4OVV1vJhc5ut35nJghIidl9Z3bX63rEcr3s5i12ZHcbJBrZOaDlPC5HrnJmuMyBy05BM5Fm+8doL6JpLz4ieiSnEdHXHLjtOBt26ln3ssWWv7RcP0eo9K5WR8qIKFrbs3WAPx4EDDtJfwBy26IStX6tZsutf6gWysm3PRuezlbLKPLZNEo7AXttQ8WDXi+8l2+D2bRHvLgve4n+/G627mn+XQxnkhTUJbcjVzUu2fma2YtdXnd7dh6ixrUEVdb9+49T4d9nBV1FVSfplg8HWbAtD5Jrlm8o6RK4G9hC5GiDGmbAz6C5Y+zI9v+Jpem7lUxQKh5QFEbQSkiADfFlhuf6C5YFFO2z9WM3ivR9HhW1B0/poEdv6TFPeWvHatpe5N4F+IkZ+YVu4djWVdgreoiWLokXtGDkqKnhbpx/mx2ZOWia/sPUrtKb2RnWjL95dEb6yBQNBOnfchXTOgRfQzDGng61HjQeR6xF4zhYiVwN7iFwNEG2KXIlDk3ltn1vxFG2u3xg968TRpypxK6EJ2FITyCWxULTvM46vfZlfIpvXbcqv9ooDo8JWltr1y+ZHtrKEsIQziJe3cNWKKKr2CQdxOMNsaj7ldGqb+i2/IIQQ09ASEsIgYldCGqxtWOUIOvdAFrw87668nxC7+bHfasDgGxMQud41BUSuBvYQuRogphC5O5q2Rz22n23pmgJqwsCD1YB9Dg/co/uM1V+IPLXo9wtayY7XqXT7y7y/SgVNa6Kt0FE6jF8c4zhTfomstf+Rvmwdv7MtXviBellNvLwFtZu72I4eS80nn8r76dRy0slg60sCzgu1bt8aHjufUo6Br3d+GTXwraGHRz28g8qq8eKZc7SOzoDIdYRLa2KIXA04IXI1QEwgcp9f8Sz9fdkT9NI3z0W/7Vvaj8454AI6d/yFNKOmd68AlSl1vwmxYNseKtnxCntseedjoL1reqyO0pHUXM0vkFWfSS3V/hRfueoRK3mDbyZe+ad6Ya1g44ZoNcJVPM3aycz8lNOoZeZpFOrXL9OupvU8v/VbrZVzwZgsHfzccha8q56mvc17ojmesf+5dPHES9hZ8B2qa2p3oSS9LwuIXO/aHCJXA3uIXA0Q2YTElC1Y8zJJrK3se1p2Rw2fMvaM6KM2Pbn1Xit+EAuFjd9QyXYWtbyX7OyaCUNapa3PVBa17FEcdCq19js8pxrKD2wzAVb8yUdUwmJXBG/R54u7mWg5/iQleltY9LaP3T8T81rOyVW2Wiqv2YgV8vXampeilvuV9Fdxu2ofezreadDIHCJXI0yHpiByHQJLlBwiN3OI2xq30OsianmJXRG21gtkYnHqkG/R2RyOIC9ODKmoyTwTnNmNgFdioXgPC6kdr6pQhKJ9cUJqIAsp9ti28N5e7p2QyrareMU223LHnl+4hm9AXosI3pK34m5AJvMNCMfwtszkG5BD3b0ByQe2OttJh62tDbXqxd0XOJxh8dbPoiblhbWI2J1FJ/NxcPlQHdn1WhsQud41PUSuBvYQuc4gLtn2mZrH9q11r9OHm9/rdvKRw45RXoSzx59J4wdOwOMzZ2htpXZNLPBy16U7X6USfnFMPLYFzTGPxGXlMRWGwMKW57MNFfnjkbgtgCkSucY224LaPD+4h0NJXuf2e51vTlj0BupiQklGcCiJ8vCeTs0sesnw0qX5xtZmE7iSTNgu3/k1Pb/8RXpj7Sv0waauKeikAEcOP4aOGzWTZB7eKYP9/5KiK9AcZAKR6wCW5qQQuRqAQuSmhri9aRu9s/4NFrZvqqN4b60tmccAFzQNHTOJCZNsZTld8dSqGFt+cSzQEZm3U7aOsjERYTuIPYE5EF+bSQuYZJtJeXSfo+J4lejlm5Z1a6Pmw+UV6sW1Fonl5ZfXTCwvnO9sdbeVE3vxbFM9YROv7rGjTmLBe6I6Vpe5Px+1k7r5IS1ErnetAJGrgT1EbneIEnKwkD2072z4l/LYLt76SbcEMhPCMSNPUF6BE8ecmjD2Cxc0DR3TJZFbvPtdjqt9h0p2vUPyd+zW1nc6i1oWPoN5mqo++e8B6k39tmgxT+/2WkTwFi36tFu7t377GGo5+li1y986tt7EVgcvJzZSsZV3Jd5c+6pyUrzLu8zYELtNHXKoGsuP5TF9xrCj1dy82LoTgMj1rkdA5GpgD5FLJG/uLtz0Hj/mek+FILR2dC2vWhgsUgOgDITH8C5Tf6XbcEFLRyjz77NlK3PXlux6m4o7hW0g1NStMC2DTlYvjom47Sgfk3lBc/DMbNnmYJVVkcWrK2JXvLzi7Y3dwqVl1Hq0iN7jqOWoY6lt2vSMqtlb2WYEy+FJTtjKVGTvypO5jfxkjkVve6gtmltxQQkdwUL3yOFH0wzZMQOOYgOR67BDakwOkasBZm8UuZ/UfkgfbH5XeWw/3PS+mhkhdjtk0GT69ojjInf4I06gwoIiR6SdDLqODCOx4zkxC+u/ohL20BazsBVvrYQkxG5tVZOodQB77dR+PIULq3otZfRbDs2tr6OSd96ikvfZs//eOySLUcRussywCN5WFrzi6W0fb2/ZbbA197PKlG17RxuL3cgTu39vfJu+2PF5t0LKqpNHDD9KeXjlfYtDa44wVwkfW4bI9a5xIHI1sM93kdvQVk+fbllIImzVkff61rpu5CYMPES9nHBEzdF0xIhjSCYYz2bLdNDNJs/ecm46tgVN66KhB+KxLWjqemFMGMnsB5aolWNHCWa+sPpOOra9pY/F1rNgSy0Vs+AtYcEroldmb4jdOvgFNvHwth4V8fZ2jBqdEBPYmus9utjKwj0fbnyXPqyVp3rv8gIUX3QrdGVxFR06dAZN510ErxwriirNVcwnliFyvWsIiFwN7PNN5G7ct54+3dolamU2hPht/MCD+FGUPJZiYct36YMr9E4xo2vQ1dC8eWcinm2wdXtE1PIuHtvC+q+7ixAWsVFRO5A9b2W5O8WX6cZEv01PWESuiF0leln8igiO3drHjY/E8nZ6ekODIjfMYJuebaYpTLHd1rBFha+J4F3Iwnf5zq96FFFma4iK3iEzaESfUZlWw7fnQeR61zQQuRrY57LI7Qh10JJtn9Ji3mXJXBG36/eu7UFlek3n3TcPQnIHbnreWlODrobmznkTfYqbqGD7O9RRy4+Ud/Pj5H2LutUpxNN7tQ7g+En20oq4lXASW/TpAAAZkUlEQVQEbPYIoN/a4xSbSsIZlOhV4Q1vU3Bf1zRlkq5tyjTl6S048XjqOOZY2ldQ5jwTnJGSgFv9VubllSeCn3Q6UWKXabcKOKrvGJrO1xlZenjq4Ok8Zdl0KggW5HQLQuR613wQuRrY55LIXbV7uRK0S7ZGhK0cO8Id3Sj0K+2vBhkRs/Jo6dBhR1BxsEQDKfsm3Bp07ZcoN1MG+KUQeVFMhGzR3s+ouO4zKqzrWsNeahXmFwNb+0s87TFK3Lb2m5GblfVBqdFvs2+E4o8XKrFb8j7HgbPwDbR1vdgk1tsPOphap3yL2qbyzgJYjuEiZzH/2Zcyvyx41W9bQy0R0Vvb+eSQxe+e5q6VLoVyQaCApgyZHhG8nccD+o/PqQaAyPWuuSByNbD3q8jd1rg14qVlIbtk2ydK1O5u2tWjxjLbwZTBh/Kd82FK3B40aKIGKtmZ8GrQza7U3p9dVLeExawI2k9Z0EaEbY+NLxodA2ZQY18RtRwHyQKXgoXeFz4PSoB+q7kR29sjHl4WvOUfvEsFHy3kCZe735RLjiJ0W5Xgnc47HydN0VyQ/Dbnp3771Y5l6oniZ1s+Vtctmc0hfutfNqDTy3sor4wZ8fYOLh/i20aCyPWuaSByNbD3g8jd0rCZlm1fwvtiWsr7sh1LSGJr47eayuE0jec1lEFBDQ7V06mqpI8GCnpN+GnQ1VszfdYkdraIhWwxC1nLUxsINffIQMINZI7atr6895lGJfwYkFUtVpPT1xRRS+i3BqB2mlRsQyFq+eAjKlrCN3A8T6/a42ZvkOThklKeqizi6W3t9Pi2HzjBXOFy3LKf+21dyz520EScNNYTyNr6TT2ISyzvxEFT1D5p8DSaWD2FhlYM80XLQOR61wwQuRrYuy1yRbyKiFW7iNpti0lEbvxWVdyHJnNQf+xjnuFVIzXU2LwJPw+65mvfM4eCxrVRz6wStPs+pWDb3h4J2ysOVEJWRG1rXz6ysA0Hy7ulA1tzLQi27rMNNDUqsVu8uFP4sgAuXLWiR0FCfftGPL2dIQ7i+e0YPcZcgXPIcq712011G7qJ3s/55ei61u6x3IJfRK6IXSV6RQDz3yOq3H+xDSLXux8DRK4G9iZFrryN+tWupSSPcL7kOQjFWythCPFb35J+NKk6cvc6afBU9YPOtbil2Drl2qCroRspEyJcCxuWd+4reKaDL5WnNtjas807ykYpQdsqXloRtry6WKiof9qi9Fa2acFoSAC2GiAmMeGEbXD3bha+nyqPb7F4e/lYsKHnk63Q4CHK09s+4WBqH3cg7+PVLoK4N21O2PqVi7xvIo4fcfrIdXLp9kW0t2VPj+JKWINcJw/mudwlNO+gAZNIZgsyuUHkmqSb2jZErgb2OkSu/Bi/3GmJWTkuZVG7jCQwP34bWDqIJrKQnVQdEbPygx3b7wANNfGPiXwYdFPRLGje1CVkRdTWs6DlY0FLT4+82AkVD2Yxy0K2H3uiqiIe2kznp813tl72YrA1Rz9btjJVmQpvkFAHXoa4mI/B7dsSFrijZlin4LWEb+TYMWy4uQp6aDlbth4WPWXWa/asioTxifiVMD4WwDubd/Q4R16sPlgE76BJdNDAiepvEcHiPNKxQeTqoJiZDYjczLh1O8upyP1mzwr6escXLGqXKTH71a5lCaftkkxG99mv249PBO2oPmM0lNrfJvJl0C1sEPEaEbBdx+UJQw2kRSS0QEIO2ivYo1QZOUrYQUfZWG0Nli9stQHRaAhsNcKMM2WCbcG6NSrMoXAl/z5X8u+08yghEIk28fBa3t4uzy//Tg840FzFXbBsgq0Lxc4oi/X71irh+1Xn9Veuw+v2rk5oS6YzO2hARPwezOJ3wqBDaP9+ztsaIjejptJyEkSuBozJRO7GuvU8+fWXtHyX7F/RCvX3V9TS0fPloFKe+1EenRwid5Jq5zvJgZNI4mp745ZLg26wdRcVNK/rJmSL6iOilsLtiS+WxdURIdspaNs6/+4oN38Dk0tsc63vg625FnOTbcG6tUr0FinR2yWAgzu2J65gYaEKd2jrDHewBHDHyNEkyxj7fXOTrR9ZSDyvLEksYYHqKaoSwMuouaOpR3FLCkpp/ICD6ECelUiOstrngXxMFesLketdq0PkamC/ZMM6WsFCVqY6kaMIWRG2+1p6vhgk2Y3sM5p/HAezhzbyaET2cQPw5m9sU/hp0A227ealbdepvbCRjy3rqUCOLGwLmtZTsL3nCw9WXcQD2yZCtlIEbZd3NlQ0SEPPy8yEn9hmVgP/ngW25trGD2yDO3d09/quWM5CeAWJRzjZFurThzpGjuJ9tFqyuGPEKGqXo+wigvunj6M3RzVi2Q9sTdcxE/srd30d8fjy/iWLX7mub9i3LqGpPiV91XVdCWA+ytScIoSrywYTRG4m9PWcA5GbJceaO2toS/2WhFYkwF06uwS1j+e7vfH9+cj/9+OUXVli0H66m4NuVMQ2r4+I2E7xagnbVCJWKi4rhHWUjWYRO66bd1a8tOGC7jMbaAeVgUE32WZQvJw+BWzNNZ+f2Up4Q2y4g/L+rlrJL7ut67GCWzyhiAi2RG9EDCsR3CmM3RDBfmZrrkdlZlmmNFNPZ3dHns5azq1EL4RLDqIDtv4ysUbIrAQ4ywkBiFwntBKkDfzvAEXv4NTji647uerywVla772n6xp0A+EWCjZvZuEqe23k2LIh4pnt9MommoorlnyoiC9CpXzxYSGrdv67XY7lvJeM4pfC/P84MrY+utj23t6ZvOZga65X5Crb4C4OZ9rIT3/W85Mg3q2/RQDLjA/xyxj3EMEcByzeX+X5lX34SJIX4zpqatQxxHu4OLsVKXOVrbne5tzy9qZt0ZBEJYI7QxXF0t7/6DnLg/MccEYmBCByM6EWc866PeuoqANiNkuMPU63M+gGW7ezYI0I12Brp4DlWQuClpjlz4KtPd+kjc8szJ7Ydp6OyxKwyiurBC1/VsqPE3NMxKZrCzts09nA94kJgK25npGvbJUI7hS8SgR3/i3HwvXrKVCXPBzKoh0aOIg6hlqiV47DIwK48zP5LjSoOmnj5Ctbc73RmWWEKzjjpTM1RK4Gmk5nV9CQZV6bkPCAqsAuCrB4banbGBGxnWK2oFPMinc2EGpNyyEcLKJQKXs9inng52OoRI4jOkVsxDMbKsotT2zaSqdJgAtatgSTnw+2YKubQFQEiydYBPCmjRTk6dAKavmpFB+DfAy0taXNNlxcrLy+lhiOFcElo0ZQmIVwXZ+BJOET2PQSgMjVy9OJNYhcJ7SSpIXITQ0x2LaLp8zayV5VOcb+zZ+1bOPPt1EB7+KZlf8nWpo2UQ4iTruEK3suLBFbwgO5ErMsanl+WWzdCUCImesRYAu25ggktyzz/VqiV45REVzLT7Y6BbGIZTubLIkcqq7mfTB18C5HtQ9gAcwzRahjfzny3j/yGbbUBCByveshELka2OezyBVvaaC9nvd9FOywjnXsOdjDswrsjRx5la5g+x5Ow0f5mz9Tf7ezoGVh63QLF1ZRuHQwrz8/lFrFA8uCNSTCVTyy8nfnMRwsc2oa6ZkAhJi5bgC2YGuOQHaWA81NUc+veICVGO70BhdvraXA1i28s5Ohvs5xRkrw9htAYY4fDvXtp1aMC/eJ+dv6TI6VPL5X9eFjpTqG5che5nzeIHK9a12IXA3s/SByxfsZ4Dn9AiHeOxp5l//zMdTAgpP3Dt5DjSxAWah2/q3Eq5WGPw/K5yxmAyxmg22Ro12vaiqMEtMaKuI7fva8Rnf+LFzIntiSIextZa9BCXsN2Osqf8uMBBALGjpmEhNgC7bmCJizjH7rDluZKSK4nd93YO+wzAsc3MZe4u1bKbCbnRbsDQ7u4idw1t97Ip9lu4n3WMRuyBK9IoIrKiICuJyP5eUUrpC/+cj/VwK58++wpJM0ZfxdGduRY2kZf8Y72/XDBpHrXStA5Npgf90td9J7Hy1VKY8+fBLde8fNXWeFO6h2O3suwxwTxUvwKs+nLMWrjryHOW6U90AHfydp5Kg+lzT8t4hR/lsd1XkiTiN/qyPxZ9b/5bt2Ea6WgBVBGxG2FA7ZqInzJBLTqjyrBVU8VRYfO/dQAd+RF/HdemHkGCrqx3/zkfcw/60+YxEbeWkr4DhjXNAcI7N9AtjaRuU4Idg6Rmb7BLC1jcpxwqzYhsMR8SuCdy8/3dvLT/fkuI+f5ll/dx6D+/haWcdPAtlbHOw8qv/biCl2XCk5IRiMCN4yaxcBzEJYBLII6xKelUL+L3/LkT3KcqTO79RnVjpOK7NYKK+z/F3E10Y5v4jP6fw/yflWGnXkNHwcNrgyo+LjpOwJQOSmYfjrOY/QptrtUWErgnd4TTX96sYrImc+7lzAZd9sPS2Eg/xj5JVYxAsqj/HDvIJa5Mh3uIW8B+XI3xXy3bL8Len4b1lGVqUp4s8L+P8804BKw6JWCVq268WW1aDrRYFzKE+wNddYYAu25giYs+x1vw20sOOGxW6QxW9UBNfzk0TZG/kJYyM7dxrkb/Yyy//l7wb+TP0t3/PO4RiBRt7lyN7oQBPbZLu+2PhGAJs3BCBy03Cfdfmt9Jv/uIamTRynUi5atpJu++8HaP7c26MiNyIsi9hhyXduQb6TC/CdXgH/HeC7OD4S8Wed/yf5Xv3Nnwf5KMJUBKr8zTtZYlVsdX5HcmSbSrhaeyDmb4lNDQS96UGGcvV60DVULV+YBVtzzQC2YGuOgDnLedtvQ6FO0SvC1xLAMX+38pPW5ogYDqgjP0HlI8n/5W+1R74j+bs18hnxeeJ9Vn+38d/ynXij1THy/8jnbD/UEfk/Nk8IQOSmwF67bRfNvPAmWvDUXVQzOPIGaaLPmlo6PGm8fM60sCDiIW/vwB2w7nYGW91Eu+yBLdiaI2DOMvqtObZiuaykwGwG/3979xNqV3HHAfyshEI3pmh4VXCVIsQUQ/DPQkSqq+eiENCCBFEQi5BNFNuF6KLiQqVmExBFUEoQVAi48K1URLqoSlGoAcGVYAlasJtCoatmrs7z5HruuzPnztzMue/zdu9lzu/M+czkvu+dO+c81RcKCLkFQq75RYAAAQIECBAg0JaAkFsg5P77P8v/KEFbw95+b352xffvfP/7P6vkpUeLbWnRH+uxZVtPoF5l87aebah85c83+xFpdfVWqy7kLvFbuif34vEtPEJstWnQ3tEbu0esAWq29QaBLdt6AvUqm7f1bENljxCr67tXdSF3if3SpysIuVVmrxfdKqyzomzZ1hOoV9m8ZVtPoG5lIbeur5C7ou+ez8kVclfUHT7cL7QqrEJuPVa2bCsL1Cvv9baerZXcurbLqlvJXSaU8O+2KyQgZTbxopsJltGcbQZWZlO2mWAZzdlmYGU2ZZsJltncSm4mWMHmQm4BTCG3AOJcCS+65U1jRbZs6wnUq2zesq0nULeykFvXd6/qQu7ls3dmAgQIECBAgACBSgJCbiVYZQkQIECAAAECBC6fgJB7+eydmQABAgQIECBAoJKAkFsJVlkCBAgQIECAAIHLJyDkjrRf9lixkWUd9oPAznsfdWdePdftnH2WSSGB8MznN95+f7fabTcf6V567rFC1fd3mVdef6c7/fJbbCtPg/C68PjTL3ZnzzzRHb3hUOWzbX75+Xkbr/j8B69t/sWv6QoP3/HA7pmef/KRbvvOW9Z0ZqcJAkLuiHmQ8gciRpR1yEWBTz//sjtx8pmZxXXXHhRyC86K8Nf7+m8awvfHt2/vHrrv7oJn2Z+lwpve/huG8P01W1d1T526f3+CVLjq+Mb3q6+/EXIL+YaQ+8lnX3izW8izX+bCt991d937aCfYVsDNKCnkZmDFpil/6ndEWYf0BKzk1p8OfsHVM2Zb1rb/ehBWxqzklvE1T8s4DlUJi2G/PPgLiwj1iJMqC7lJTD82iu/O3n3zhW7r6gOzfxj6WWZZzecEhNz6UyKsNt504/VehCtQhzfCtx47bCW3gO38a4GQWwD1hxLz2xV8elbONszT4Bk+eYhf/dxQ7kwq7SUg5GbODyE3E2xkcyF3JFziYfGXm713iWCJzUK4Db/U7HdOBFvSbOh1QMgtYztUJbzxDV/26q9mHHNC/xMHr7mrmY49WsjNlBNyM8FGNhdyR8IlHBZv3rGqkIA1ssn8vv2RZfb9YfM3S/ZB7HUsPz3iPRHe/K5mu+jTXW/QVnMdc7SQO0LNntwRaJmHCLmZYInNrSYkQq3YTFhYEXCPwwWFerbmbTnboXlq7pbzTa0k5KZK9dp5usIItMxDhNxMsITmPopMQBrZZP7JFaxHQiYcJigkICU2GXriir3kiXhLmoWc8Le/n999ok1YYDi386EnBpXhTa4i5CZTXdrQc3JHwi05rP8Isdj01MP3uDlqRe748dlQGXeqr4h78fD+60GoZk/u6qaLKgi55Wzn5+3vfvsbN0uW4+36223c1FcQNqOUkJuBpSkBAgQIECBAgMA0BITcaYyTXhIgQIAAAQIECGQICLkZWJoSIECAAAECBAhMQ0DIncY46SUBAgQIECBAgECGgJCbgaUpAQIECBAgQIDANASE3GmMk14SIECAAAECBAhkCAi5GViaEiBAgAABAgQITENAyJ3GOOklAQIECBAgQIBAhoCQm4GlKQECBAgQIECAwDQEhNxpjJNeEiBAgAABAgQIZAgIuRlYmhIgQIAAAQIECExDQMidxjjpJQECBAgQIECAQIaAkJuBpSkBAgQIECBAgMA0BITcaYyTXhIgQIAAAQIECGQICLkZWJoSIECAAAECBAhMQ0DIncY46SUBAgQIECBAgECGgJCbgaUpAQIECBAgQIDANASE3GmMk14SIECAAAECBAhkCAi5GViaEiBAYJ0Cv//Dn7trtq7qnjp1/zpP61wECBDYCAEhdyOG0UUQ2F8Cr7z+Tnf65bd+ctGnHr6ne+i+u2c///TzL7sTJ5/pzp55ojt6w6FJAgm5kxw2nSZAoBEBIbeRgdANAgTSBULIPbfzYbdz9tndgy58+113172Pds8/+Ui3fect6cUabinkNjw4ukaAQPMCQm7zQ6SDBAjMCwyF3NBm+8Qfu+Pbt89Wc2PofffNF7qtqw90MTCGdm+8/f6s5HXXHrwkKA9JpxwX2tx04/W7q8ihzp9O/6X754V/dS8999isbOxbCOdfff3N7GchkG8dPDBbcY5fsb/h+5Rzx3PFawrfL6vR/3eziwABApsqIORu6si6LgIbLDAUcnfe+6h7/OkXdwPeUMj968f/uGSlNwTPW48d3nPPawiay45LDbkh3MaAGfvbD9qhTviKwXjo3PNt5sN0rHv+g9dmtYZqbPDUcGkECBDYFRByTQYCBCYnsGhPbj8wLlrJ7d/EFep88tkXu6FyCGJoy8D8cakhN64yh/PM9y/8bD68D5077jUOYTl8hS0a8yuzIbyffPD4bNuGLQ+Tm946TIBAIQEhtxCkMgQIrE9g0XaFsKoZPrYPq5hTCbn9G+PCKuyZV8/tbqEYCqjxusJx4au/1aE/AnFvspC7vnnpTAQItCUg5LY1HnpDgECCwKKQGw49fMcDsy0JR48cumSVM2VFdujUKcetspJbIuTGrQmp/U8g1oQAAQKTFxByJz+ELoDA/hNYFHL7T1hYd8idf57tohvP4iPO+iuy8RFnKSu5cbtCf7V6r8ekWcndf/8/XDEBAt8LCLlmAgECkxNYFHLjTVbr3q4w358YRG+7+chPnq6wasgNK9X95wH3t2jEgQz9OfbrX82eDyzkTm566zABAoUEhNxCkMoQILA+gdZuPAtXHm72io8GC+E2rOwOPUIsN+SGJzv0v/oBN/48Bt1+u/7TFfzVtPXNTWciQKAdASG3nbHQEwIECBAgQIAAgUICQm4hSGUIECBAgAABAgTaERBy2xkLPSFAgAABAgQIECgkIOQWglSGAAECBAgQIECgHQEht52x0BMCBAgQIECAAIFCAkJuIUhlCBAgQIAAAQIE2hEQctsZCz0hQIAAAQIECBAoJCDkFoJUhgABAgQIECBAoB0BIbedsdATAgQIECBAgACBQgJCbiFIZQgQIECAAAECBNoREHLbGQs9IUCAAAECBAgQKCQg5BaCVIYAAQIECBAgQKAdASG3nbHQEwIECBAgQIAAgUICQm4hSGUIECBAgAABAgTaERBy2xkLPSFAgAABAgQIECgkIOQWglSGAAECBAgQIECgHQEht52x0BMCBAgQIECAAIFCAkJuIUhlCBAgQIAAAQIE2hEQctsZCz0hQIAAAQIECBAoJCDkFoJUhgABAgQIECBAoB0BIbedsdATAgQIECBAgACBQgJCbiFIZQgQIECAAAECBNoREHLbGQs9IUCAAAECBAgQKCQg5BaCVIYAAQIECBAgQKAdASG3nbHQEwIECBAgQIAAgUICQm4hSGUIECBAgAABAgTaERBy2xkLPSFAgAABAgQIECgkIOQWglSGAAECBAgQIECgHQEht52x0BMCBAgQIECAAIFCAkJuIUhlCBAgQIAAAQIE2hEQctsZCz0hQIAAAQIECBAoJCDkFoJUhgABAgQIECBAoB0BIbedsdATAgQIECBAgACBQgJCbiFIZQgQIECAAAECBNoREHLbGQs9IUCAAAECBAgQKCQg5BaCVIYAAQIECBAgQKAdASG3nbHQEwIECBAgQIAAgUICQm4hSGUIECBAgAABAgTaEfg/RjFmxb+YRIMAAAAASUVORK5CYII=",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.system_snapshot(), y=[\"A\", \"B\", \"C\"], \n",
" title= f\"A + B <-> C . System snapshot at time t={bio.system_time}\",\n",
" color_discrete_sequence = ['red', 'orange', 'green'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\", \"index\":\"Bin number\"},\n",
" line_shape=\"spline\")\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "461feca1-4016-44d8-ab71-bf36e437e121",
"metadata": {},
"source": [
"A is continuing to diffuse from the left. \n",
"B is continuing to diffuse from the right. \n",
"By now, they're overlapping in the middle bin sufficiently to react and generate C"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "cff27b4b-5cf3-4d70-80a7-8a13e1e3cd99",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"System state at time t=0.09600000000000007:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n"
]
}
],
"source": [
"log.write(f\"System state at time t={bio.system_time}:\", blanks_before=2, style=log.bold)\n",
"\n",
"# Output to the log file a heatmap for each chemical species\n",
"for i in range(bio.n_species):\n",
" log.write(f\"{bio.chem_data.get_label(i)}:\", also_print=False)\n",
" bio.single_species_heatmap(species_index=i, heatmap_pars=heatmap_pars, graphic_component=\"vue_heatmap_11\")\n",
"\n",
"# Output to the log file a one-curve line plot for each chemical species\n",
"for i in range(bio.n_species):\n",
" log.write(f\"{bio.chem_data.get_label(i)}:\", also_print=False)\n",
" bio.single_species_line_plot(species_index=i, plot_pars=lineplot_pars, graphic_component=\"vue_curves_3\")\n",
"\n",
"# Output to the log file a line plot for ALL the chemicals together (same color as used for plotly elsewhere)\n",
"bio.line_plot(plot_pars=lineplot_pars, graphic_component=\"vue_curves_4\", color_mapping={0: 'red', 1: 'orange', 2: 'green'})"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "c15dfca3-00fc-4b9a-80c4-01f565f30cf8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"+++ 30 steps later:\n",
"SYSTEM STATE at Time t = 0.156:\n",
"[[2.39736516 2.05453684 1.50075745 0.92781069 0.48529917 0.22472198\n",
" 0.11560109]\n",
" [0.11560109 0.22472198 0.48529917 0.92781069 1.50075745 2.05453684\n",
" 2.39736516]\n",
" [0.57202182 1.29674075 2.59761288 3.36115673 2.59761288 1.29674075\n",
" 0.57202182]]\n",
"\n",
"\n",
"+++ 30 steps later:\n",
"SYSTEM STATE at Time t = 0.216:\n",
"[[1.43652347 1.28435794 1.02979899 0.73906751 0.47257834 0.28028088\n",
" 0.18445971]\n",
" [0.18445971 0.28028088 0.47257834 0.73906751 1.02979899 1.28435794\n",
" 1.43652347]\n",
" [0.8597085 1.64384498 2.94653088 3.67276444 2.94653088 1.64384498\n",
" 0.8597085 ]]\n",
"\n",
"\n",
"+++ 30 steps later:\n",
"SYSTEM STATE at Time t = 0.276:\n",
"[[0.94369275 0.88396666 0.77535511 0.63019458 0.46959173 0.33300009\n",
" 0.25664867]\n",
" [0.25664867 0.33300009 0.46959173 0.63019458 0.77535511 0.88396666\n",
" 0.94369275]\n",
" [1.09382006 1.85282552 3.05530325 3.70365274 3.05530325 1.85282552\n",
" 1.09382006]]\n",
"\n",
"\n",
"+++ 30 steps later:\n",
"SYSTEM STATE at Time t = 0.336:\n",
"[[0.69798039 0.68111864 0.64213556 0.57196145 0.47435422 0.37878712\n",
" 0.32097915]\n",
" [0.32097915 0.37878712 0.47435422 0.57196145 0.64213556 0.68111864\n",
" 0.69798039]\n",
" [1.27482053 1.97696102 3.05404907 3.62102222 3.05404907 1.97696102\n",
" 1.27482053]]\n"
]
}
],
"source": [
"# Continue the simulation\n",
"for _ in range(4):\n",
" print(\"\\n\\n+++ 30 steps later:\")\n",
" bio.react_diffuse(time_step=delta_t, n_steps=30)\n",
" bio.describe_state(concise=True)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "c4ae0ca5-2b98-4db4-b5e0-874ec2117ef0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM SNAPSHOT at time 0.33600000000000024:\n",
" A B C\n",
"0 0.697980 0.320979 1.274821\n",
"1 0.681119 0.378787 1.976961\n",
"2 0.642136 0.474354 3.054049\n",
"3 0.571961 0.571961 3.621022\n",
"4 0.474354 0.642136 3.054049\n",
"5 0.378787 0.681119 1.976961\n",
"6 0.320979 0.697980 1.274821\n"
]
}
],
"source": [
"bio.show_system_snapshot()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "ea014eb8-5573-4e76-bb05-2dde0d4fedd7",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.002 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.016 | \n",
" 0.448347 | \n",
" 0.448347 | \n",
" 0.007451 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.096 | \n",
" 1.230427 | \n",
" 1.230427 | \n",
" 2.408976 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.336 | \n",
" 0.571961 | \n",
" 0.571961 | \n",
" 3.621022 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0.000 0.000000 0.000000 0.000000 \n",
"1 0.002 0.000000 0.000000 0.000000 \n",
"2 0.016 0.448347 0.448347 0.007451 \n",
"3 0.096 1.230427 1.230427 2.408976 \n",
"4 0.336 0.571961 0.571961 3.621022 "
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at the middle bin\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 3))\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "a7a47fc3-be8f-44b8-85a7-3c39807af45f",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
Bin number=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.6979803947540457,
0.6811186419131374,
0.6421355607884652,
0.5719614476422076,
0.4743542231899681,
0.3787871183250772,
0.3209791512733909
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
Bin number=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "orange",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.3209791512733906,
0.3787871183250769,
0.47435422318996767,
0.5719614476422071,
0.6421355607884647,
0.6811186419131368,
0.697980394754045
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
Bin number=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "green",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
1.2748205305163067,
1.9769610210647641,
3.054049068409041,
3.6210222221334734,
3.0540490684090416,
1.976961021064764,
1.2748205305163067
],
"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": "A + B <-> C . System snapshot at time t=0.33600000000000024"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
6
],
"title": {
"text": "Bin number"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
0.13764342511449712,
3.804357948292367
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.system_snapshot(), y=[\"A\", \"B\", \"C\"], \n",
" title= f\"A + B <-> C . System snapshot at time t={bio.system_time}\",\n",
" color_discrete_sequence = ['red', 'orange', 'green'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\", \"index\":\"Bin number\"},\n",
" line_shape=\"spline\")\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "ba4c44a3-3384-4f1a-b656-783c06eeb4af",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"System state at time t=0.33600000000000024:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n"
]
}
],
"source": [
"log.write(f\"System state at time t={bio.system_time}:\", blanks_before=2, style=log.bold)\n",
"\n",
"# Output to the log file a heatmap for each chemical species\n",
"for i in range(3):\n",
" bio.single_species_heatmap(species_index=i, heatmap_pars=heatmap_pars, graphic_component=\"vue_heatmap_11\")\n",
"\n",
"# Output to the log file a one-curve line plot for each chemical species\n",
"for i in range(3):\n",
" bio.single_species_line_plot(species_index=i, plot_pars=lineplot_pars, graphic_component=\"vue_curves_3\")\n",
"\n",
"# Output to the log file a line plot for ALL the chemicals together (same color as used for plotly elsewhere)\n",
"bio.line_plot(plot_pars=lineplot_pars, graphic_component=\"vue_curves_4\", color_mapping={0: 'red', 1: 'orange', 2: 'green'})"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "d7bd2795-9a78-4a2e-834c-477951677878",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"+++++ 50 steps later:\n",
"SYSTEM STATE at Time t = 0.436:\n",
"[[0.53513401 0.5437576 0.54867719 0.53174198 0.48696931 0.43256384\n",
" 0.39647767]\n",
" [0.39647767 0.43256384 0.48696931 0.53174198 0.54867719 0.5437576\n",
" 0.53513401]\n",
" [1.49508439 2.09028492 2.96849022 3.41695934 2.96849022 2.09028492\n",
" 1.49508439]]\n",
"\n",
"+++++ 50 steps later:\n",
"SYSTEM STATE at Time t = 0.536:\n",
"[[0.48751897 0.50165856 0.51768297 0.51798994 0.49498758 0.46076288\n",
" 0.4365229 ]\n",
" [0.4365229 0.46076288 0.49498758 0.51798994 0.51768297 0.50165856\n",
" 0.48751897]\n",
" [1.65797359 2.15520413 2.86719131 3.22213812 2.86719131 2.15520413\n",
" 1.65797359]]\n",
"\n",
"+++++ 50 steps later:\n",
"SYSTEM STATE at Time t = 0.636:\n",
"[[0.47470241 0.48869324 0.50591479 0.51120986 0.49756771 0.47365233\n",
" 0.45594669]\n",
" [0.45594669 0.47365233 0.49756771 0.51120986 0.50591479 0.48869324\n",
" 0.47470241]\n",
" [1.78774781 2.20070508 2.77778668 3.05983384 2.77778668 2.20070508\n",
" 1.78774781]]\n",
"\n",
"+++++ 50 steps later:\n",
"SYSTEM STATE at Time t = 0.736:\n",
"[[0.47257504 0.48488523 0.50040062 0.50652836 0.49733067 0.47935337\n",
" 0.46567693]\n",
" [0.46567693 0.47935337 0.49733067 0.50652836 0.50040062 0.48488523\n",
" 0.47257504]\n",
" [1.89367665 2.23536347 2.70338342 2.9284027 2.70338342 2.23536347\n",
" 1.89367665]]\n"
]
}
],
"source": [
"# Continue the simulation\n",
"for _ in range(4):\n",
" print(\"\\n+++++ 50 steps later:\")\n",
" bio.react_diffuse(time_step=delta_t, n_steps=50)\n",
" bio.describe_state(concise=True)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "9bea764f-c52e-4346-a1e5-8a3e78bfca47",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM SNAPSHOT at time 0.7360000000000005:\n",
" A B C\n",
"0 0.472575 0.465677 1.893677\n",
"1 0.484885 0.479353 2.235363\n",
"2 0.500401 0.497331 2.703383\n",
"3 0.506528 0.506528 2.928403\n",
"4 0.497331 0.500401 2.703383\n",
"5 0.479353 0.484885 2.235363\n",
"6 0.465677 0.472575 1.893677\n"
]
}
],
"source": [
"bio.show_system_snapshot()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "420d2e10-a6e7-4c90-80ea-5995db2b5ed6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.002 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.016 | \n",
" 0.448347 | \n",
" 0.448347 | \n",
" 0.007451 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.096 | \n",
" 1.230427 | \n",
" 1.230427 | \n",
" 2.408976 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.336 | \n",
" 0.571961 | \n",
" 0.571961 | \n",
" 3.621022 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.736 | \n",
" 0.506528 | \n",
" 0.506528 | \n",
" 2.928403 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0.000 0.000000 0.000000 0.000000 \n",
"1 0.002 0.000000 0.000000 0.000000 \n",
"2 0.016 0.448347 0.448347 0.007451 \n",
"3 0.096 1.230427 1.230427 2.408976 \n",
"4 0.336 0.571961 0.571961 3.621022 \n",
"5 0.736 0.506528 0.506528 2.928403 "
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at the middle bin\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 3))\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "46bc7cfb-b84b-4254-804e-abfccd653840",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
Bin number=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.4725750443651417,
0.48488523225546837,
0.5004006196750737,
0.5065283645846138,
0.4973306679836395,
0.47935337045557536,
0.4656769255300913
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
Bin number=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "orange",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.4656769255300909,
0.4793533704555749,
0.497330667983639,
0.5065283645846134,
0.5004006196750732,
0.4848852322554679,
0.47257504436514125
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
Bin number=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "green",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
1.8936766456371241,
2.2353634669163234,
2.7033834234014043,
2.928402703240674,
2.7033834234014047,
2.2353634669163234,
1.8936766456371241
],
"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": "A + B <-> C . System snapshot at time t=0.7360000000000005"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
6
],
"title": {
"text": "Bin number"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
0.32885882676839184,
3.065220802002373
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.system_snapshot(), y=[\"A\", \"B\", \"C\"], \n",
" title= f\"A + B <-> C . System snapshot at time t={bio.system_time}\",\n",
" color_discrete_sequence = ['red', 'orange', 'green'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\", \"index\":\"Bin number\"},\n",
" line_shape=\"spline\")\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "8ac79f33-0548-49ce-a165-24b9773a7c4c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"System state at time t=0.7360000000000005:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n"
]
}
],
"source": [
"log.write(f\"System state at time t={bio.system_time}:\", blanks_before=2, style=log.bold)\n",
"\n",
"# Output to the log file a heatmap for each chemical species\n",
"for i in range(3):\n",
" bio.single_species_heatmap(species_index=i, heatmap_pars=heatmap_pars, graphic_component=\"vue_heatmap_11\")\n",
"\n",
"# Output to the log file a one-curve line plot for each chemical species\n",
"for i in range(3):\n",
" bio.single_species_line_plot(species_index=i, plot_pars=lineplot_pars, graphic_component=\"vue_curves_3\")\n",
"\n",
"# Output to the log file a line plot for ALL the chemicals together (same color as used for plotly elsewhere)\n",
"bio.line_plot(plot_pars=lineplot_pars, graphic_component=\"vue_curves_4\", color_mapping={0: 'red', 1: 'orange', 2: 'green'})"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "b041f211-cc16-42a4-b0ca-2beb4e2c34aa",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"+++++++++++++++ 150 steps later:\n",
"SYSTEM STATE at Time t = 1.036:\n",
"[[0.47744061 0.4845086 0.49346999 0.49747162 0.49331726 0.48423339\n",
" 0.47709743]\n",
" [0.47709743 0.48423339 0.49331726 0.49747162 0.49346999 0.4845086\n",
" 0.47744061]\n",
" [2.11014111 2.3007984 2.55138084 2.66782039 2.55138084 2.3007984\n",
" 2.11014111]]\n",
"\n",
"+++++++++++++++ 150 steps later:\n",
"SYSTEM STATE at Time t = 1.336:\n",
"[[0.48168804 0.48554921 0.49041386 0.49259511 0.49040626 0.48553552\n",
" 0.48167096]\n",
" [0.48167096 0.48553552 0.49040626 0.49259511 0.49041386 0.48554921\n",
" 0.48168804]\n",
" [2.2288825 2.33377315 2.46847456 2.52988061 2.46847456 2.33377315\n",
" 2.2288825 ]]\n",
"\n",
"+++++++++++++++ 150 steps later:\n",
"SYSTEM STATE at Time t = 1.636:\n",
"[[0.48405962 0.48615505 0.48878337 0.48995858 0.48878299 0.48615437\n",
" 0.48405877]\n",
" [0.48405877 0.48615437 0.48878299 0.48995858 0.48878337 0.48615505\n",
" 0.48405962]\n",
" [2.29360822 2.350868 2.42345244 2.45618991 2.42345244 2.350868\n",
" 2.29360822]]\n",
"\n",
"+++++++++++++++ 150 steps later:\n",
"SYSTEM STATE at Time t = 1.936:\n",
"[[0.48534444 0.4864795 0.48789956 0.48853323 0.48789955 0.48647947\n",
" 0.4853444 ]\n",
" [0.4853444 0.48647947 0.48789955 0.48853323 0.48789956 0.4864795\n",
" 0.48534444]\n",
" [2.32876222 2.35988613 2.39905402 2.4166151 2.39905402 2.35988613\n",
" 2.32876222]]\n"
]
}
],
"source": [
"# Continue the simulation\n",
"for _ in range(4):\n",
" print(\"\\n+++++++++++++++ 150 steps later:\")\n",
" bio.react_diffuse(time_step=delta_t, n_steps=150)\n",
" bio.describe_state(concise=True)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "ef8f0e74-c8b0-4228-98a3-8357cc411471",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM SNAPSHOT at time 1.9360000000000015:\n",
" A B C\n",
"0 0.485344 0.485344 2.328762\n",
"1 0.486480 0.486479 2.359886\n",
"2 0.487900 0.487900 2.399054\n",
"3 0.488533 0.488533 2.416615\n",
"4 0.487900 0.487900 2.399054\n",
"5 0.486479 0.486480 2.359886\n",
"6 0.485344 0.485344 2.328762\n"
]
}
],
"source": [
"bio.show_system_snapshot()"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "a32c0374-ffa2-4460-9344-0b6027dd1d39",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.002 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.016 | \n",
" 0.448347 | \n",
" 0.448347 | \n",
" 0.007451 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.096 | \n",
" 1.230427 | \n",
" 1.230427 | \n",
" 2.408976 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.336 | \n",
" 0.571961 | \n",
" 0.571961 | \n",
" 3.621022 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.736 | \n",
" 0.506528 | \n",
" 0.506528 | \n",
" 2.928403 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 1.936 | \n",
" 0.488533 | \n",
" 0.488533 | \n",
" 2.416615 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0.000 0.000000 0.000000 0.000000 \n",
"1 0.002 0.000000 0.000000 0.000000 \n",
"2 0.016 0.448347 0.448347 0.007451 \n",
"3 0.096 1.230427 1.230427 2.408976 \n",
"4 0.336 0.571961 0.571961 3.621022 \n",
"5 0.736 0.506528 0.506528 2.928403 \n",
"6 1.936 0.488533 0.488533 2.416615 "
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at the middle bin\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 3))\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "2c2e193a-2f6a-4fef-a464-aede77db0541",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
Bin number=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.4853444442523408,
0.4864795044657281,
0.48789956465607354,
0.48853323167520946,
0.48789954585012646,
0.4864794705785825,
0.4853444019957615
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
Bin number=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "orange",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.4853444019957611,
0.48647947057858204,
0.487899545850126,
0.488533231675209,
0.4878995646560731,
0.4864795044657277,
0.48534444425234047
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
Bin number=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "green",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
2.3287622221659676,
2.3598861313027153,
2.3990540155447895,
2.416615098499249,
2.3990540155447895,
2.3598861313027157,
2.3287622221659676
],
"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": "A + B <-> C . System snapshot at time t=1.9360000000000015"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
6
],
"title": {
"text": "Bin number"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
0.3780515855233451,
2.523907914971665
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.system_snapshot(), y=[\"A\", \"B\", \"C\"], \n",
" title= f\"A + B <-> C . System snapshot at time t={bio.system_time}\",\n",
" color_discrete_sequence = ['red', 'orange', 'green'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\", \"index\":\"Bin number\"},\n",
" line_shape=\"spline\")\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "149c2dd1-ae24-42af-9cb7-ea3e3b7bc7ae",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"System state at time t=1.9360000000000015:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n"
]
}
],
"source": [
"log.write(f\"System state at time t={bio.system_time}:\", blanks_before=2, style=log.bold)\n",
"\n",
"# Output to the log file a heatmap for each chemical species\n",
"for i in range(3):\n",
" bio.single_species_heatmap(species_index=i, heatmap_pars=heatmap_pars, graphic_component=\"vue_heatmap_11\")\n",
"\n",
"# Output to the log file a one-curve line plot for each chemical species\n",
"for i in range(3):\n",
" bio.single_species_line_plot(species_index=i, plot_pars=lineplot_pars, graphic_component=\"vue_curves_3\")\n",
"\n",
"# Output to the log file a line plot for ALL the chemicals together (same color as used for plotly elsewhere)\n",
"bio.line_plot(plot_pars=lineplot_pars, graphic_component=\"vue_curves_4\", color_mapping={0: 'red', 1: 'orange', 2: 'green'})"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "c9a71254-b873-4f84-92e8-55110fd3e9e1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"++++++++++ ... ++++++++++ 1,000 steps later:\n",
"SYSTEM STATE at Time t = 3.936:\n",
"[[0.48683089 0.48684974 0.48687325 0.48688372 0.48687325 0.48684974\n",
" 0.48683089]\n",
" [0.48683089 0.48684974 0.48687325 0.48688372 0.48687325 0.48684974\n",
" 0.48683089]\n",
" [2.36959744 2.37011659 2.37076408 2.37105229 2.37076408 2.37011659\n",
" 2.36959744]]\n",
"\n",
"++++++++++ ... ++++++++++ 1,000 steps later:\n",
"SYSTEM STATE at Time t = 5.936:\n",
"[[0.48685551 0.48685582 0.48685621 0.48685639 0.48685621 0.48685582\n",
" 0.48685551]\n",
" [0.48685551 0.48685582 0.48685621 0.48685639 0.48685621 0.48685582\n",
" 0.48685551]\n",
" [2.37027551 2.37028411 2.37029484 2.37029961 2.37029484 2.37028411\n",
" 2.37027551]]\n"
]
}
],
"source": [
"# Continue the simulation\n",
"for _ in range(2):\n",
" print(\"\\n++++++++++ ... ++++++++++ 1,000 steps later:\")\n",
" bio.react_diffuse(time_step=delta_t, n_steps=1000)\n",
" bio.describe_state(concise=True)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "665df78f-4f5d-4f49-bd1e-7fe92f6f9be1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM SNAPSHOT at time 5.935999999999568:\n",
" A B C\n",
"0 0.486856 0.486856 2.370276\n",
"1 0.486856 0.486856 2.370284\n",
"2 0.486856 0.486856 2.370295\n",
"3 0.486856 0.486856 2.370300\n",
"4 0.486856 0.486856 2.370295\n",
"5 0.486856 0.486856 2.370284\n",
"6 0.486856 0.486856 2.370276\n"
]
}
],
"source": [
"bio.show_system_snapshot()"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "123afda8-993f-4d81-823b-dd4bca921727",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" C | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.002 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.016 | \n",
" 0.448347 | \n",
" 0.448347 | \n",
" 0.007451 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.096 | \n",
" 1.230427 | \n",
" 1.230427 | \n",
" 2.408976 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.336 | \n",
" 0.571961 | \n",
" 0.571961 | \n",
" 3.621022 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.736 | \n",
" 0.506528 | \n",
" 0.506528 | \n",
" 2.928403 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 1.936 | \n",
" 0.488533 | \n",
" 0.488533 | \n",
" 2.416615 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 5.936 | \n",
" 0.486856 | \n",
" 0.486856 | \n",
" 2.370300 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B C caption\n",
"0 0.000 0.000000 0.000000 0.000000 \n",
"1 0.002 0.000000 0.000000 0.000000 \n",
"2 0.016 0.448347 0.448347 0.007451 \n",
"3 0.096 1.230427 1.230427 2.408976 \n",
"4 0.336 0.571961 0.571961 3.621022 \n",
"5 0.736 0.506528 0.506528 2.928403 \n",
"6 1.936 0.488533 0.488533 2.416615 \n",
"7 5.936 0.486856 0.486856 2.370300 "
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at the middle bin\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 3))\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "cbb48141-8d21-428e-9ab4-404ff3b8d35f",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
Bin number=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.48685551153677936,
0.48685582393940047,
0.48685621349957875,
0.48685638687034016,
0.4868562134995788,
0.48685582393940047,
0.48685551153677936
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
Bin number=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "orange",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
0.48685551153677914,
0.48685582393940025,
0.4868562134995785,
0.48685638687033994,
0.4868562134995786,
0.48685582393940025,
0.48685551153677914
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
Bin number=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "green",
"dash": "solid",
"shape": "spline"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6
],
"xaxis": "x",
"y": [
2.370275505456777,
2.3702841089131943,
2.370294837283766,
2.370299611870659,
2.3702948372837667,
2.3702841089131947,
2.3702755054567777
],
"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": "A + B <-> C . System snapshot at time t=5.935999999999568"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
6
],
"title": {
"text": "Bin number"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
0.3822197281848969,
2.4749353952225412
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.system_snapshot(), y=[\"A\", \"B\", \"C\"], \n",
" title= f\"A + B <-> C . System snapshot at time t={bio.system_time}\",\n",
" color_discrete_sequence = ['red', 'orange', 'green'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\", \"index\":\"Bin number\"},\n",
" line_shape=\"spline\")\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "ebc287ae-60de-4d52-9b34-6714b3813198",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"System state at time t=5.935999999999568:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `rd_1.log.htm`]\n"
]
}
],
"source": [
"log.write(f\"System state at time t={bio.system_time}:\", blanks_before=2, style=log.bold)\n",
"\n",
"# Output to the log file a heatmap for each chemical species\n",
"for i in range(3):\n",
" bio.single_species_heatmap(species_index=i, heatmap_pars=heatmap_pars, graphic_component=\"vue_heatmap_11\")\n",
"\n",
"# Output to the log file a one-curve line plot for each chemical species\n",
"for i in range(3):\n",
" bio.single_species_line_plot(species_index=i, plot_pars=lineplot_pars, graphic_component=\"vue_curves_3\")\n",
"\n",
"# Output to the log file a line plot for ALL the chemicals together (same color as used for plotly elsewhere)\n",
"bio.line_plot(plot_pars=lineplot_pars, graphic_component=\"vue_curves_4\", color_mapping={0: 'red', 1: 'orange', 2: 'green'})"
]
},
{
"cell_type": "markdown",
"id": "1ede543d-6d62-4ede-bb7b-7b6022c69b09",
"metadata": {
"tags": []
},
"source": [
"### Equilibrium"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "1678d6bf-434f-476c-a966-998fbfa0e74a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Ratio of equilibrium concentrations ((C_eq) / (A_eq * B_eq)) : 9.999968840509963\n",
"Ratio of forward/reverse rates: 1.0\n"
]
}
],
"source": [
"# Verify equilibrium concentrations (sampled in the 0-th bin; at this point, all bins have equilibrated)\n",
"A_eq = bio.bin_concentration(bin_address=0, species_label=\"A\")\n",
"B_eq = bio.bin_concentration(bin_address=0, species_label=\"B\")\n",
"C_eq = bio.bin_concentration(bin_address=0, species_label=\"C\")\n",
"print(f\"\\nRatio of equilibrium concentrations ((C_eq) / (A_eq * B_eq)) : {(C_eq) / (A_eq * B_eq)}\")\n",
"print(f\"Ratio of forward/reverse rates: {uc.get_single_reaction(0).extract_forward_rate() / uc.get_single_reaction(0).extract_forward_rate()}\")\n",
"# Both are essentially equal, as expected"
]
},
{
"cell_type": "markdown",
"id": "ee7d1b45-0e56-45fd-bd63-7a97b39eb8f0",
"metadata": {
"tags": []
},
"source": [
"# Plots of changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "790211a2-8f53-498a-8363-1c6e5f6f5d7e",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "navy",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.002,
0.016,
0.09600000000000007,
0.33600000000000024,
0.7360000000000005,
1.9360000000000015,
5.935999999999568
],
"xaxis": "x",
"y": [
0,
0,
0.4483473209623955,
1.2304268485314716,
0.5719614476422076,
0.5065283645846138,
0.48853323167520946,
0.48685638687034016
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "cyan",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.002,
0.016,
0.09600000000000007,
0.33600000000000024,
0.7360000000000005,
1.9360000000000015,
5.935999999999568
],
"xaxis": "x",
"y": [
0,
0,
0.44834732096239543,
1.2304268485314713,
0.5719614476422071,
0.5065283645846134,
0.488533231675209,
0.48685638687033994
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=C
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "C",
"line": {
"color": "red",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "C",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.002,
0.016,
0.09600000000000007,
0.33600000000000024,
0.7360000000000005,
1.9360000000000015,
5.935999999999568
],
"xaxis": "x",
"y": [
0,
0,
0.0074512011250459685,
2.4089764141139147,
3.6210222221334734,
2.928402703240674,
2.416615098499249,
2.370299611870659
],
"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": "Reactions: A + B <-> C . Changes in concentrations in the MIDDLE bin"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
5.935999999999568
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-0.2011679012296374,
3.822190123363111
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.get_history(), x=\"SYSTEM TIME\", y=[\"A\", \"B\", \"C\"], \n",
" title=\"Reactions: A + B <-> C . Changes in concentrations in the MIDDLE bin\",\n",
" color_discrete_sequence = ['navy', 'cyan', 'red'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\"})\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "4dbf45ff-5161-4265-a278-aca3121b8e37",
"metadata": {},
"source": [
"A and B overlap on the plot, due to the symmetry of the system. \n",
"Initially, in the middle bin, neither A nor B are present; over time they diffuse there... but then they react and get consumed (producing C), to an equilibrium value.\n",
"C gradually diffuses away."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "146f8c63",
"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
}