{
"cells": [
{
"cell_type": "markdown",
"id": "80abc7ee-f50e-48b7-9ea7-15ce6226b0bf",
"metadata": {},
"source": [
"## One-bin `2A <-> B` reaction, \n",
"### COMPARING 1st-order and 2nd-order kinetics in *forward* direction; reverse direction 1-st order\n",
"\n",
"Diffusion not applicable (just 1 bin)\n",
"\n",
"See also the experiment _\"reactions_single_compartment/react_4\"_ \n",
"\n",
"LAST REVISED: Dec. 6, 2023"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "9bbb329b-3c10-45dd-8d43-bba25487f64f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Added 'D:\\Docs\\- MY CODE\\BioSimulations\\life123-Win7' to sys.path\n"
]
}
],
"source": [
"import set_path # Importing this module will add the project's home directory to sys.path"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "f86597fb",
"metadata": {},
"outputs": [],
"source": [
"from experiments.get_notebook_info import get_notebook_basename\n",
"\n",
"from src.modules.chemicals.chem_data import ChemData as chem\n",
"from src.life_1D.bio_sim_1d import BioSim1D\n",
"\n",
"import plotly.express as px\n",
"from src.modules.html_log.html_log import HtmlLog as log\n",
"from src.modules.visualization.graphic_log import GraphicLog"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "ecba68b6-d062-47fe-9a17-ec339907323e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-> Output will be LOGGED into the file 'reaction_7.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_cytoscape_1\"],\n",
" extra_js=\"https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.21.2/cytoscape.umd.js\")"
]
},
{
"cell_type": "markdown",
"id": "43fb42a4-1582-45b5-9c8b-be146cb72236",
"metadata": {},
"source": [
"# INITIALLY, with 1st-order kinetics in both directions"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "72d71ac8-3f7d-47b5-94ba-142fca566ff4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0:\n",
"1 bins and 2 species:\n",
" Species 0 (A). Diff rate: None. Conc: [3.]\n",
" Species 1 (B). Diff rate: None. Conc: [5.]\n"
]
}
],
"source": [
"# Initialize the system\n",
"chem_data = chem(names=[\"A\", \"B\"]) # NOTE: Diffusion not applicable (just 1 bin)\n",
"\n",
"\n",
"\n",
"# Reaction 2A <-> B , FOR NOW with 1st-order kinetics in both directions\n",
"chem_data.add_reaction(reactants=[(2, \"A\", 1)], products=[\"B\"], forward_rate=5., reverse_rate=2.)\n",
"\n",
"bio = BioSim1D(n_bins=1, chem_data=chem_data)\n",
"\n",
"bio.set_all_uniform_concentrations( [3., 5.] )\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "35163098-208e-4ba1-a115-e02463df2750",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0 | \n",
" 3.0 | \n",
" 5.0 | \n",
" Initial state | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"0 0 3.0 5.0 Initial state"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at bin 0\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 0), caption=\"Initial state\")\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b472b184-9e22-45d4-ab18-b2507a83334a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 1 (at temp. 25 C)\n",
"0: 2 A <-> B (kF = 5 / kR = 2 / delta_G = -2,271.4 / K = 2.5) | 1st order in all reactants & products\n",
"Set of chemicals involved in the above reactions: {'B', 'A'}\n"
]
}
],
"source": [
"chem_data.describe_reactions()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "3be8b568-fc3c-41a3-98dd-6ad6983f2bc9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reaction 2A B is 1st order in all species:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `reaction_7.log.htm`]\n"
]
}
],
"source": [
"# Send a header and a plot to the HTML log file\n",
"log.write(\"Reaction 2A <-> B is 1st order in all species:\",\n",
" style=log.h2)\n",
"\n",
"graph_data = chem_data.prepare_graph_network()\n",
"GraphicLog.export_plot(graph_data, \"vue_cytoscape_1\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "4ee91e87-4800-41d6-bc21-223ac1e493b3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.02:\n",
"1 bins and 2 species:\n",
" Species 0 (A). Diff rate: None. Conc: [2.8]\n",
" Species 1 (B). Diff rate: None. Conc: [5.1]\n"
]
}
],
"source": [
"# First step\n",
"bio.react(time_step=0.02, n_steps=1, snapshots={\"sample_bin\": 0})\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "fb58f958-29fc-4a43-ad33-751ef02c3cc2",
"metadata": {},
"source": [
"Small conc. changes so far: [A] = 2.8 , [B] = 5.1"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "86a7497e-cd17-4f4d-b9b1-9bfd786c865f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.00 | \n",
" 3.0 | \n",
" 5.0 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.02 | \n",
" 2.8 | \n",
" 5.1 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"0 0.00 3.0 5.0 Initial state\n",
"1 0.02 2.8 5.1 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "1e458105-4a8d-4f81-9776-7bde2c92b630",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.42:\n",
"1 bins and 2 species:\n",
" Species 0 (A). Diff rate: None. Conc: [2.16928427]\n",
" Species 1 (B). Diff rate: None. Conc: [5.41535786]\n"
]
}
],
"source": [
"# Numerous more steps, to equilibrium\n",
"bio.react(time_step=0.02, n_steps=20, snapshots={\"sample_bin\": 0})\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "bb5ee324-b0e9-4823-82ae-815aab494b57",
"metadata": {},
"source": [
"Consistent with the 5/2 ratio of forward/reverse rates (and the *1st order* reactions),\n",
"the systems settles in the following equilibrium: \n",
"[A] = 2.16928427 , [B] = 5.41535786"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "c3a088c4-c904-4d23-9940-307d9ca9a80f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2 A <-> B\n",
"Final concentrations: [A] = 2.169 ; [B] = 5.415\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.49638\n",
" Formula used: [B] / [A]\n",
"2. Ratio of forward/reverse reaction rates: 2.5\n",
"Discrepancy between the two values: 0.1448 %\n",
"Reaction IS in equilibrium (within 1% tolerance)\n",
"\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Verify that the reaction has reached equilibrium\n",
"bio.reaction_dynamics.is_in_equilibrium(rxn_index=0, conc=bio.bin_snapshot(bin_address = 0))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "7508667b-5e7f-4eed-ba41-a478f4d068b6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.00 | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.02 | \n",
" 2.800000 | \n",
" 5.100000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.04 | \n",
" 2.648000 | \n",
" 5.176000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.06 | \n",
" 2.532480 | \n",
" 5.233760 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.08 | \n",
" 2.444685 | \n",
" 5.277658 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.10 | \n",
" 2.377960 | \n",
" 5.311020 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.12 | \n",
" 2.327250 | \n",
" 5.336375 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.14 | \n",
" 2.288710 | \n",
" 5.355645 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.16 | \n",
" 2.259420 | \n",
" 5.370290 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.18 | \n",
" 2.237159 | \n",
" 5.381421 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.20 | \n",
" 2.220241 | \n",
" 5.389880 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.22 | \n",
" 2.207383 | \n",
" 5.396309 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.24 | \n",
" 2.197611 | \n",
" 5.401194 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.26 | \n",
" 2.190184 | \n",
" 5.404908 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.28 | \n",
" 2.184540 | \n",
" 5.407730 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.30 | \n",
" 2.180251 | \n",
" 5.409875 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.32 | \n",
" 2.176990 | \n",
" 5.411505 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.34 | \n",
" 2.174513 | \n",
" 5.412744 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.36 | \n",
" 2.172630 | \n",
" 5.413685 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.38 | \n",
" 2.171199 | \n",
" 5.414401 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.40 | \n",
" 2.170111 | \n",
" 5.414945 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.42 | \n",
" 2.169284 | \n",
" 5.415358 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"0 0.00 3.000000 5.000000 Initial state\n",
"1 0.02 2.800000 5.100000 \n",
"2 0.04 2.648000 5.176000 \n",
"3 0.06 2.532480 5.233760 \n",
"4 0.08 2.444685 5.277658 \n",
"5 0.10 2.377960 5.311020 \n",
"6 0.12 2.327250 5.336375 \n",
"7 0.14 2.288710 5.355645 \n",
"8 0.16 2.259420 5.370290 \n",
"9 0.18 2.237159 5.381421 \n",
"10 0.20 2.220241 5.389880 \n",
"11 0.22 2.207383 5.396309 \n",
"12 0.24 2.197611 5.401194 \n",
"13 0.26 2.190184 5.404908 \n",
"14 0.28 2.184540 5.407730 \n",
"15 0.30 2.180251 5.409875 \n",
"16 0.32 2.176990 5.411505 \n",
"17 0.34 2.174513 5.412744 \n",
"18 0.36 2.172630 5.413685 \n",
"19 0.38 2.171199 5.414401 \n",
"20 0.40 2.170111 5.414945 \n",
"21 0.42 2.169284 5.415358 "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = bio.get_history()\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "7a77d5dc-035c-40b7-bd82-44bcfdef3ac6",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
" \n",
" "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "navy",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.02,
0.04,
0.06,
0.08,
0.1,
0.12000000000000001,
0.14,
0.16,
0.18,
0.19999999999999998,
0.21999999999999997,
0.23999999999999996,
0.25999999999999995,
0.27999999999999997,
0.3,
0.32,
0.34,
0.36000000000000004,
0.38000000000000006,
0.4000000000000001,
0.4200000000000001
],
"xaxis": "x",
"y": [
3,
2.8,
2.6479999999999997,
2.5324799999999996,
2.4446847999999997,
2.3779604479999996,
2.32724994048,
2.2887099547647995,
2.2594195656212475,
2.237158869872148,
2.2202407411028324,
2.2073829632381528,
2.197611052060996,
2.1901843995663572,
2.1845401436704317,
2.180250509189528,
2.1769903869840412,
2.174512694107871,
2.172629647521982,
2.171198532116706,
2.1701108844086967,
2.1692842721506094
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "orange",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.02,
0.04,
0.06,
0.08,
0.1,
0.12000000000000001,
0.14,
0.16,
0.18,
0.19999999999999998,
0.21999999999999997,
0.23999999999999996,
0.25999999999999995,
0.27999999999999997,
0.3,
0.32,
0.34,
0.36000000000000004,
0.38000000000000006,
0.4000000000000001,
0.4200000000000001
],
"xaxis": "x",
"y": [
5,
5.1,
5.175999999999999,
5.233759999999999,
5.2776575999999995,
5.311019775999999,
5.336375029759999,
5.355645022617599,
5.370290217189376,
5.381420565063926,
5.389879629448584,
5.396308518380923,
5.401194473969502,
5.404907800216821,
5.407729928164784,
5.409874745405236,
5.411504806507979,
5.412743652946064,
5.413685176239008,
5.414400733941646,
5.414944557795651,
5.415357863924695
],
"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": "2A <-> B : changes in concentrations with time"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
0.4200000000000001
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
1.9889468503853824,
5.595695285689922
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAABCcAAAFoCAYAAABkA5G6AAAAAXNSR0IArs4c6QAAIABJREFUeF7tvQ2wHOV57/nM+T76OpIAScgI8eEkfFg2Gwcj58aYGzZ1c/ElTrFrBa+31g65XC3srZQxJQrZlaW4riAKCkxlq8wqVLBzK14TuS5bCdckrjVZLrmxBb5sSIgFTplPgZCEviV0vs9sPT3Tc3r69Mx0z7zv9NMzv1OlOufMdD/v079/z2j6d97uLpXL5bLwBQEIQAACEIAABCAAAQhAAAIQgAAEciJQQk7kRJ5hIQABCEAAAhCAAAQgAAEIQAACEAgIICfYESAAAQhAAAIQgAAEIAABCEAAAhDIlQByIlf8DA4BCEAAAhCAAAQgAAEIQAACEIAAcoJ9AAIQgAAEIAABCEAAAhCAAAQgAIFcCSAncsXP4BCAAAQgAAEIQAACEIAABCAAAQggJ9gHIAABCEAAAhCAAAQgAAEIQAACEMiVAHIiV/wMDgEIQAACEIAABCAAAQhAAAIQgABygn0AAhCAAAQgAAEIQAACEIAABCAAgVwJICdyxc/gEIAABCAAAQhAAAIQgAAEIAABCCAn2AcgAAEIQAACEIAABCAAAQhAAAIQyJUAciJX/AwOAQhAAAIQgAAEIAABCEAAAhCAAHKCfQACEIAABCAAAQhAAAIQgAAEIACBXAkgJ3LFz+AQgAAEIAABCEAAAhCAAAQgAAEIICfYByAAAQhAAAIQgAAEIAABCEAAAhDIlQByIlf8DA4BCEAAAhCAAAQgAAEIQAACEIAAcoJ9AAIQgAAEIAABCEAAAhCAAAQgAIFcCSAncsXP4BCAAAQgAAEIQAACEIAABCAAAQggJ9gHIAABCEAAAhCAAAQgAAEIQAACEMiVAHIiV/wMDgEIQAACEIAABCAAAQhAAAIQgABygn0AAhCAAAQgAAEIQAACEIAABCAAgVwJICdyxc/gEIAABCAAAQhAAAIQgAAEIAABCCAn2AcgAAEIQAACEIAABCAAAQhAAAIQyJUAciJX/AwOAQhAAAIQgAAEIAABCEAAAhCAAHKCfQACEIAABCAAAQhAAAIQgAAEIACBXAkgJ3LFz+AQgAAEIAABCEAAAhCAAAQgAAEIICfYByAAAQhAAAIQgAAEIAABCEAAAhDIlQByIlf8DA4BCEAAAhCAAAQgAAEIQAACEIAAcoJ9AAIQgAAEIAABCEAAAhCAAAQgAIFcCSAncsXP4BCAAAQgAAEIQAACEIAABCAAAQggJ9gHIAABCEAAAhCAAAQgAAEIQAACEMiVAHIiV/wMDgEIQAACEIAABCAAAQhAAAIQgABygn0AAhCAAAQgAAEIQAACEIAABCAAgVwJICdyxc/gEIAABCAAAQhAAAIQgAAEIAABCCAn2AcgAAEIQAACEIAABCAAAQhAAAIQyJUAciJX/AwOAQhAAAIQgAAEIAABCEAAAhCAAHKCfQACEIAABCAAAQhAAAIQgAAEIACBXAkgJ3LFz+BxAq+9dUC23/WQ3P7Fz8pNN1wLIAhAoOAEnnz6Ofnmn/6F7H7gTrl088aCbw3tQwACEIAABCAAAQj4ItDTcuL4ydNy293fkJdfeb3G7zPXb5V7d9wi42MjiUz1g/QfPPC4nL/+nJ78MP2Tl16VL335/sRt/73P3yBf2b7N176Wqi5yYhFTuP9euHFd0302Fdg+XShk+ImrLvOybzerH+7LN/z6NV7GzjPSh3fvkaf/5vnae2Sz160LOaHjvfDSq/Lo/XfImomVtU3nNZLnXsDYEIAABCAAAQhAwC2BnpUTSR9aJ6dm5J4HH5e3Dxxe8iFXsdaef/eQHDl+yvlf7+Mf6NNGGQqTr991S8ezCUI58e1H7parr7qs1oKVAynkBHIi7esizXLIiTSUsi+DnMjOjDUgAAEIQAACEIAABJoT6Gk5oTMmrt36sToCzQ5+w+f+9zv+F/nP/8+Pg/WazbJIu3PpB/k/+e7THc3GiM546ERSNJITrcRN2m3tdDnkRKcEWT9KIE850U9J5DVzop8Ys60QgAAEIAABCECg1wn0rJxoFFyzD9HRqcP/79/9fcfnSbuQEvHtiEqK+OyHNDtrKzmRRciEtbKeDpJ0akkoXKL5aC96ik34Fd/eRqeoNJoVotexaFVTn086HejXPrFFTp7+YMmMm3gPWy6/ZMkyofj5/jN7a9vS6vSiaB/RUxKy8Gm2PyT1FO89HOu9Q0eDUkmnOoVT9h/5D/9e/uOeH0i4jUkcGrGNs0jiH880fK3et/NW+equx2qnbkVrJdXRHsJlDhw6Uru+yaaN62qnO+n+/Ls3/+slp4TputF9PUv96PVT0nDNmnP4XhNm3oh/dJ9Iei9oJHPip1VEfz924nTAMdxPwjFCVln3kfh+G9+26L64dvXKIKfoa0TH2/PUsxLfN0Im8X6z7KvtvOemeV9mGQhAAAIQgAAEIAABkb6TE+EpEvEPmfEP5Z38Bd+HlHAlKRrJiUaPN3uRtCMnkk5tUfbfeuKv5LYv/raEB4x6oBOdIZJ03rqO/7fP/2Pd+fxJ2xE9GGxVs9HpLUnnvCdtS7zPUAJEpU/av+YnLZdlWxpl12gbtXc9SNfTfZI4Jr12kq7RkrTN2ktYMz7z54//7Cm5/lMfDy6WmLRM0msxfI1FDyyTeKW5JoTua3HBpuvt+qPvyM7f/0LtGgft1o9e3DUt1yw5x/fNRvzj+0O4PdtuvK52uljYX5RrWG/DurW111p8zFYzJ+LX8UnbY9hzq2tOxOWEjpe0b+hsulb7TKN9tZP/E/iwAQEIQAACEIAABCDQmkBfyYnww7hiiV9YLemgodEH4kZYwxrdvJhm1jGbXRDTd99pBEijA4CkA6mkHJIOpLLU1MwPHj625HSe8K+x4X4T1ty189a6a3eklVza53N7X5J/dd0nGr5Km8mJ+N1MsvKJypJGB61JF5GMvyYaXexQs96567HaBRPTCJmk7BodnDZ6bcZzSiMnstwZppP6zXpJe7Afz7lZzR88+4Jcu/Wqhhf/Vbbx/T38Xa/Lc+f2bcG+nbSvp+1Xx0i7jzT77yqrnNCZE/H3+Hh24Xjxx7Psh63/i2UJCEAAAhCAAAQgAIG0BPpGTkSnsSdNzU368JvmYDoKOqso0HWTZEGaKdnhuFnHbLZNLi+8mbQDNjo4iC7bSiTED5gbTa2P/iU8bc1mB3rx3pttS/SAb2p6unZ6QNYp4e3IiVZ3pUgjMRqJl6QDzWYHnnpXmHCbm9UM82+2TFx2NJMT0dtWdionkk4pSPOXd92m+H6XhWvafTb6vtbOtWii+7H2rKdIqJTQGUn6pXfvibMPpUb07hmtZk4k3Uo0y/trN+VElv0w7X+0LAcBCEAAAhCAAAQg0JpAX8iJVmKi0QFuiC/rNRWKeFqHbmvWqdatd6/6JdLMREl7UBYeKOv07Wg+7cycCA/oWx1gRf8am3TQGt3aVtc+SCOgfMiJNFPTmx00xp9LKyfSHIg2m9WjbKMze3zLiZDTuWsn6v4C38nMiSxcs7wOkq4fknYWVPRAXBk/tHtPsL0/f+Pd2s96/Z29L+6rm03kauZEVGA1ez/pppzIsh9mfQ9keQhAAAIQgAAEIACBxgR6Xk60EhPhQW7SX/b0uTQH1I3w+pAU0Q/OWf8Sr302O0DyfccOlzMnGv1FvBM50WxWQZaZE63ecMIMWl0U04ecKOrMiThT33LCx2kjPmZOJO1rjcRK0rLR/eHN/QeDRXS2RPi4nvKidy6KXm8i6X2xldjrlZkTrV7bPA8BCEAAAhCAAAQg0D6BnpYT4QfsI8dO1s59j6NqNVug0UX8siB3ISmiUqKd6dthv2nkhC7r4haqcUbNxg7Pj4/eQSF6h4Ms13K458HH6w6m0v4Vutm+EJcTaWYC6Pbr2JNT0/KRX7q4Dkca6eVDTjTbxrDXD204d8kdEMLms1xzIvpX8WanV/zTz96Q8bFRSbrzQjPxFz2tIFyu0QVJ4wfXYTZ6l4n4NSey7AfNrk8Q3+9cXnMinO2jNZNumdxoRksSzyDTv39Fjhw/JdFrqCRdf6LRftBK7HUqJxqJzSSmaa8tEd1norOi0lwfJcv7P8tCAAIQgAAEIAABCKQj0LNyotnFL6NoWk1zbyUv0mGuLKUf9p/+m+cbipJGtVxeC6LZQXUoUdLOyAhrZTntJYlB9BoNaeVEUi7RWTLtXHNC+SfxSbqDQZjnn3z36dp1FaICKLyLSNL+lfbgx4eciB6U3/Dr19TuvhD/q36SlGt0t460B55JNePXM2i0TymL6N0z0s6cCHNKEhlZ/9ofbn/8lJxGvSTVT8s1rVBL2keyvmc12r8bPZ7EtJXQSbuPNHoPbPS+5UNORN8H0tzFJcv/ASwLAQhAAAIQgAAEINCYQM/KiVbnDYcHGHoLy1bCIMtfIa3vbM24pLkOQnT72pETun54kBfWio6b9qBM142fa6/n2T/yH/69/Mc9P2hr5kRULuhf/cMvPUC5aNMGSboDQBLP+Pn+Scukmf3iS07odiVdZyXeU5iF3mpTv5KuY5D2mhMhy3hNfbzRbX11RkD0K9pfFjkR30/C02kaibBwzPh+quPrV3w/yFo/Ddcsr4MkplmEYbh+VFZF95ELN65bMpMqiX98nwp7yLqPNHoPjeYR7otJs206nTkRjt/oWkRpXrvW/x+gPwhAAAIQgAAEIGCRQM/KCYuw6am4BOK3XCzultA5BCAAAQhAAAIQgAAEIAABewSQE/YyoaMcCehfkb/z5A9lx203y/jYSNBJswsZ5tgqQ0MAAhCAAAQgAAEIQAACEOgZAsiJnomSDXFBIGmKfNrbMroYnxoQgAAEIAABCEAAAhCAAAT6kQByoh9TZ5shAAEIQAACEIAABCAAAQhAAAKGCCAnDIVBKxCAAAQgAAEIQAACEIAABCAAgX4kgJzox9TZZghAAAIQgAAEIAABCEAAAhCAgCECyAlDYdAKBCAAAQhAAAIQgAAEIAABCECgHwkgJ/oxdbYZAhCAAAQgAAEIQAACEIAABCBgiABywlAYtAIBCEAAAhCAAAQgAAEIQAACEOhHAsiJfkydbYYABCAAAQhAAAIQgAAEIAABCBgigJwwFAatQAACEIAABCAAAQhAAAIQgAAE+pEAcqIfU2ebIQABCEAAAhCAAAQgAAEIQAAChgggJwyFQSsQgAAEIAABCEAAAhCAAAQgAIF+JICc6MfU2WYIQAACEIAABCAAAQhAAAIQgIAhAsgJQ2HQCgQgAAEIQAACEIAABCAAAQhAoB8JICf6MXW2GQIQgAAEIAABCEAAAhCAAAQgYIgAcsJQGLQCAQhAAAIQgAAEIAABCEAAAhDoRwLIiX5MnW2GAAQgAAEIQAACEIAABCAAAQgYIoCcMBQGrUAAAhCAAAQgAAEIQAACEIAABPqRAHKiH1NnmyEAAQhAAAIQgAAEIAABCEAAAoYIICcMhUErEIAABCAAAQhAAAIQgAAEIACBfiSAnOjH1NlmCEAAAhCAAAQgAAEIQAACEICAIQLICUNh0AoEIAABCEAAAhCAAAQgAAEIQKAfCSAn+jF1thkCEIAABCAAAQhAAAIQgAAEIGCIAHLCUBi0AgEIQAACEIAABCAAAQhAAAIQ6EcCyIl+TJ1thgAEIAABCEAAAhCAAAQgAAEIGCKAnDAUBq1AAAIQgAAEIAABCEAAAhCAAAT6kQByoh9TZ5shAAEIQAACEIAABCAAAQhAAAKGCCAnDIVBKxCAAAQgAAEIQAACEIAABCAAgX4kgJzox9TZZghAAAIQgAAEIAABCEAAAhCAgCECyAlDYdAKBCAAAQhAAAIQgAAEIAABCECgHwkgJ/oxdbYZAhCAAAQgAAEIQAACEIAABCBgiABywlAYtAIBCEAAAhCAAAQgAAEIQAACEOhHAsiJfkydbYYABCAAAQhAAAIQgAAEIAABCBgigJwwFAatQAACEIAABCAAAQhAAAIQgAAE+pEAcqIfU2ebIQABCEAAAhCAAAQgAAEIQAAChgggJwyFQSsQgAAEIAABCEAAAhCAAAQgAIF+JICc6MfU2WYIQAACEIAABCAAAQhAAAIQgIAhAsgJQ2HQCgQgAAEIQAACEIAABCAAAQhAoB8JICf6MXW2GQIQgAAEIAABCEAAAhCAAAQgYIgAcsJQGLQCAQhAAAIQgAAEIAABCEAAAhDoRwLIiX5MnW2GAAQgAAEIQAACEIAABCAAAQgYIoCcMBQGrUAAAhCAAAQgAAEIQAACEIAABPqRAHKiH1NnmyEAAQhAAAIQgAAEIAABCEAAAoYIICcMhUErEIAABCAAAQhAAAIQgAAEIACBfiSAnOjH1NlmCEAAAhCAAAQgAAEIQAACEICAIQLICUNh0AoEIAABCEAAAhCAAAQgAAEIQKAfCSAn+jF1thkCEIAABCAAAQhAAAIQgAAEIGCIAHLCUBi0AgEIQAACEIAABCAAAQhAAAIQ6EcCyIl+TJ1thgAEIAABCEAAAhCAAAQgAAEIGCKAnHAQxoGjkw6qUMIHgcGBkpw7MSqHjk/5KE9NRwTOmxiVEx/MyuzcgqOKlHFNYPnYkAwNluTkB7OuS1PPEYGBksi6NeNy8Bj/JzlC6qXMOatG5czkrEzP8n7nBbCDostGB2VkeFBOnJlxUI0SvghsPGdc+Azui66bumtWjMjU7LxMTs+7Keixiu5PfOVPADnhIAPeGB1A9FQCOeEJrOOyyAnHQD2UQ054gOq4JHLCMVBP5ZATnsA6LIuccAjTYynkhEe4jkojJxyB7KMyyAkHYSMnHED0VAI54Qms47LICcdAPZRDTniA6rgkcsIxUE/lkBOewDosi5xwCNNjKeSER7iOSiMnHIHsozLICQdhIyccQPRUAjnhCazjssgJx0A9lENOeIDquCRywjFQT+WQE57AOiyLnHAI02Mp5IRHuI5KIyccgeyjMsgJB2EjJxxA9FQCOeEJrOOyyAnHQD2UQ054gOq4JHLCMVBP5ZATnsA6LIuccAjTYynkhEe4jkojJxyB7KMyyAkHYSMnHED0VAI54Qms47LICcdAPZRDTniA6rgkcsIxUE/lkBOewDosi5xwCNNjKeSER7iOSiMnHIHsozLICQdhIyccQPRUAjnhCazjssgJx0A9lENOeIDquCRywjFQT+WQE57AOiyLnHAI02Mp5IRHuI5KIyccgeyjMsgJB2EjJxxA9FQCOeEJrOOyyAnHQD2UQ054gOq4JHLCMVBP5ZATnsA6LIuccAjTYynkhEe4jkojJ1qD/MlLr8pDu/fIo/ffIWsmVrZewegSx0+eltvu/obcuX2bXH3VZW13iZxoG93iisgJBxA9lUBOeALruCxywjFQD+WQEx6gOi7Zj3KitDApUp4XKZelVF6o/FzS7wuLv+vjpejvZRHR3+eD77psZfnI7+Hz5cqyWj/8XgrqlyvryeL3YHz9XZevW0cqvVSXXTE+KNMzszI7X+0pUiOsWQpqRMfQuuE2lqvbGOmtyqCyS+nj0e/6UPhY5PFS5LGE50tJ60TrRkumHbO2nDKJFKj10rynxO2o62npdpYiY6blMDRQkoGBkszM6T6RhVP4om6xHY1qtuCwuC1J9RMyDuJOtz/UcYr210a2i6sn97SYfQtOLfbRkSHNSF8ri9vZcDuSOCTm0KCnhGySXyONtqnZvtGCU5RD6p7T7w/Jr5EG6yftD+FjSe8jpZLIQuX9q+61FP3/L2U2pfKU4/81Y+X+p7o3NWdjTU7NyD0PPi7ff2ZvXc2v33WL3HTDtZKnnHjy6edkz1PPOhEjyAlnu0znhZATnTP0VQE54Yus27rICbc8fVTrKTkRHohWD2LrDm6Dg0I92E1zcLu4bOuD28qBb+UAunoQHf4eHMiGz+sB6eJBcnCQGhx4Vg+gq73VDpTD57SWLMjy0ZKcOTtdPXCerx4UhwfT1d91uxciYwQHztHfqz3UDuoXxw+2M7LsIqeKANBea9uoves4NTFQ3fZqr/XbtcigxrImBKpjBn1WD0R87OTUhAAEIACB/iXgQU689tYB2X7XQ3LDr18jX9m+rcZWD+R33veY7Lj9Zjl2/BQzJyJ7HTMnHLwEkRMOIHoqgZzwBNZxWeSEY6DVcqWFKZHynJQW5kREv8+KLMxJSfS7HkTOVp+fFZHZynLBX4SnK8vqurrMwpyMDS3IoMzJ5PS0yMKslMq6bLV2UGdeZEHXqz5eV7u6XG3scH1dr1xZpyYK4n/Bjh7sVg6aKwfsiwfttd+jUiH4q/O8BH9Z56unCZQHlomUBkSkJGX9XhoUEf0+IOXIz8HvMlhbdunzg1KurlepN1hdv6SlqzX1h+pYwbL6XOX3uh6CFeKP62MlGR0ZFv2D/Lx6lqCnpTWCWuXq9tQ9X6lR2c6SSDnsQbc5+ulOx9avoPHqj+HPkceSni83fz7od0nN2FhZx4zUrKtfe7xFz21sZ/I4iqwkI0MDMjQ4KGen9b1T/+CbnWM9pxqQaEjps2nBoaz7QjzvcJ3ac/GMqus0er76eN12pOWQWDPKsG5nrSButV9Fa1b7OHdiVI6cnInt39HtXBxzkVHy88HraXHHXsqz1fPV/ltuR912LuWQ/Jpd7Llh/Vo2LfbVVtsReX5xrBav+Sb7xeoVwzI1uyBT01WxnLRf1fWU8Fpp0XN5YCwKsu2f9TQhl1/hjIkN69bWiYn4GOHMCT0dYueux+S9Q0eDRb79yN11p0eEoiN8/vc+f0Otbjhr4Xd/5zflW3/+1/LyK68HNXR2xseu/HAgSJLq6syJvS/uk3t33CLjYyPBOvFxtlx+STCzQr/0tI2wtv6e1AOndbjci9qshZxoE1wXVkNOdAGygyGKLidKCzMi5RkpBQfnlX+yoL9XHqsctC8+Hyw7PyOlcv1zMq9/8Z6uPVcKf1cZEK0byIOZpXWDZfTAX+voX8L5SiYQO2itHchWDmj1oLRy0Fj9XQ9wa7/rQWDlYDI4QKwd7EYOhoMDywEpD4QHyeHBZ+zgt6QHv5VlgwPqoGZ1Wf1da4QH28H3at3qspUP09VxygNSGhiQ5cvG5MyUfgjU3qrbGR7I6njVx4NaddsV2e6gh2rvQY3YAX+4zcH2h89Xfk464K8tEznwj7OrGyNas7rdgVQI1y/4bs01J+wHyDUn7GekHXLNCfs59fM1J8KD/F07b216DQaVE1/68v3ymeu31iRB/HQLrfW1XY/JH+68VS7dvFHi4iOUE7pHhNeuCOuGckGvZxE/hSQuJ5J6/sGzL8iHL75A1q5eKd964q/kti/+diAywjG33XhdcHoKp3UYej0iJwyFEWsFOWE3m2hnWeREaf6DxQPw+engQLx2oB496A+fm6+Kg7rfVQpMSWm+eiAfea4iDKpSQf/yPn82Ih30L/2hgFDBcMY84MpflQelPDAsUhqSckm/D0t5YKj6+5DIwLCUS/p79ftAuNxQZT0ZksHhERkYHJLpuUGR2vNaRw+qh4MaQR3Rerp+tV51/aBOcLBeHTtcNugplALJf+2u/AV78eC3Jgb0oL4qAJod3JYH3P41xGro/XjNCatZNOsLOWE/NeSE/YyQE8XIqJ/lhIoAnQmx+4E7A6HQ6CvpmhNxGfHw7j1y0aYNgQQIv6Lr6WPxi1EmyYL4Y3E5oePoV/QUlGZ7mq7/5v6DwfLICUOvSeSEoTCQE10JQ6fKl+anginzpflJ0dMHKt+rv4eP6ZR6/bm6rOiBvv4cHPBX15ublJHBGZmf0WVjMwfqZgfYnp5fHlwh5YERKZdGRAZHg+/lgdHgnwTf9cB/tPrcqJQHdVn9vfJdfxedmlj9ebFOdFmtOxaIhcW61To6djDOiJQHlzvfD3rqmhPO6dgoiJywkUOrLpATrQjl/zxyIv8M0nTAzIk0lPJdBjnRuZzYuP7cxAtqarLxUy6ip1RklRNaTy/c+bkbr2s40yN+yoeuE874mJqe5m4d+b7cFkdHTlhJYmkf/ThzYmD2hJTmT8rA7EkZmDtZEQERQRCKhYooCMVB5efKbAKVBjo74KyU5qoCIRAJ+vuUeL9acovdKTg41wP54CC+IgGkdmAeygA9UK8crEtEElQO6PUv9yoF9CBff48c1KssiNQKftb1g3GiIiGsq+u6OdfR7quo0hlywnpCIsgJ+xlph8gJ+zkhJ+xnpB0iJ+zn1M9yIstpHfFbiUZnToRyYuvHr6ibORFNP42I0OWbzZxoJSd0lsQfPPB43bUwojMvkBOGXo/ICUNhxFopopwI5MLciUAsBIKhJhtOSGn2pJRm9bkTwXOluVMyMHu8uqxKidNdC2NhaJUE0+UHxqWsB/qDy4LfKz+PV34eiPw8OC6iy0SfDwTBuEysmpDTM4MyW9ap/5GZBCogPM4G6BqsHhgIOWE/ROSE/YyQE8XICDlRjJyQE/Zz6mc50eqCmOG1HJLu1pF0Woem3eh0CxdyQq8j0ey0jqRTS5ATRl+DyAmjweil6gZKoldzPnTc872RIwgqsqAiEgbmTsvA7DEpqWjQx2aqUmE+lAunZWDmmAwEMx1ULnR+DQM9vWBheLWoPFgYXhucKlAnC4aq0kDFQk0WRMRCIBj0d52ZEJEMQ/qY1nJ/ykCWa07Y3dt6uzPkhP18kRP2M0JOFCMj5EQxckJO2M+pn+WEptPoVqJ6oP/03zwfXI8ijZwIL26pd98IrzuhQiK8QGXSrIU0wiJ+zYlwnOidQkKJ8hd//V/l4OFjtYt2htv2yx/5heAxZk4Yej0iJwyF0fHMiXIgCRblQlUaNJALwewFXb56GkVFLpQ7AFKSRbkwEUiG8pB+n5CFocrP5ZHVlccHK89XnpuQ8lDl57rbUHXQSTdXRU50k3Z7YyEn2uPWzbWQE92k3f5YnNbRPrturYmc6BbpzsZBTnTGrxtr97ucUMbhDIrvP7O3hrzZHTRCqRG9O0dUdIS3BNXHQlmRRkTo8q0uiKknGRJDAAAgAElEQVTLhIIibDbsdWx0tO7aF3qtiY9ecan8477XkBPdeDFlGQM5kYWW52XLCxW5MF+ZuTA0f1ImRs7KqRPvV2YmBOIhPDWictpEMMPB2cyFkiwMrZSySoOqPChX5UEgF4YnKs8FMxsWhYJKhfKgPr6qkHKh01SRE50S9L8+csI/405HQE50SrA76yMnusO5k1GQE53Q6966yInusW53JOREu+T6d71SuVzu5M+8/UsusuXICYe7gcqFueMVkRBec6F6/YXgegszxwOREEiG4LSJU5XrM9Qu/tjpaREDi3JBZyxUhUIwO2FwdTBrIZANgUhQ0VBZRqVCP8uFTvcA5ESnBP2vj5zwz7jTEZATnRLszvrIie5w7mQU5EQn9Lq3LnKie6zbHQk50S65/l0POeEge+REc4h6qsPgzPsyMH1YBmYOy+CMftffD8nAVPh75Tmd1dDZ10BEFFRmKQyPr5HJ8srKqRDBv6pQ0As61n6uzmgY0pkLfHWbAHKi28Szj4ecyM6s22sgJ7pNvL3xkBPtcevmWsiJbtJufyzkRPvsurUmcqJbpHtnHOSEgyz7UU4Ep04EouFQRSpMV2XD9KJ8GKzKCL0FZeqv0mDlQo7V6ysEMxYi11eonBYRyoXqz9FTKIZW1g2VxwUxU28rC9YIICfs7wzICfsZISfsZ6QdIifs54ScsJ+RdoicsJ8TcsJ+RtY6RE44SKQn5ERwrYYjlVkNgWB4XwZUPEwtyofKjIfKrIdSeTY1uXJpTBbG1sn88HmyMLpOFkbWyfzIOinrYyP6+/rK99HzKneXkFLq2q0WRE60ImTjeeSEjRyadYGcsJ8RcsJ+RsiJYmSEnChGTsgJ+zkhJ+xnZK1D5ISDRCzLCb2t5eDU/sosh6kDorMZStOHqvJBRcOh4LGB2aOZSOgdJSpCYYPMj5wrCyPnBdJhYXR9ICDm9Xvw+PpgJkReX8iJvMhnGxc5kY1XHksjJ/Kgnm1M5EQ2XnktzcyJvMinHxc5kZ5VnksiJ/Kkn25s5EQ6Tiy1SAA54WBvyFNODE7ul8Hp/TKk36feloGzb4s+NjT1tgxOvSOVW1um+1oYXlOZ1aBiQWc5qGwYU8lwXlVE6HPrZH5sc7qCBpZCThgIIUULyIkUkHJeBDmRcwAphkdOpIBkYBHkhIEQWrSAnLCfkXaInLCfE3LCfkbWOkROtEjktbcOyPa7HpLoPWWj96bV1X3JidLCpAydfVMGpt+tfJ98Rwan3pLBqXdlaFK/72+5P5UHlsn8+AUyP3ZB9RSK6uwGlRBj5wenUVRmOmxsWauICyAnipEacsJ+TsgJ+xkhJ+xnpB0iJ+znhJywnxFyohgZISeKkZOlLpETKeTE13Y9Jn+481a5dHPyAXy7ckIvJhnMfNBZDpP7ZSCc8RDOgpg93qK7UjCrYW78Qpkf3STz45tkYdmFMje2SeaDfxfKwohew6F/v5ATxcgeOWE/J+SE/YyQE/YzQk4UIyPkRDFyYuaE/ZyQE/YzstYhcsKTnCgtzNakg552EUiIs5XZDhUh8Y6UytNNRy+XRiszHsarskG/L9tcFRE6G+JCKQ+MWNunTPWDnDAVR8NmkBP2c0JO2M8IOWE/I+REMTJCThQjJ+SE/ZyQE/YzstYhciKFnIie1hE/pUPe/c9y6vCrMnC2Kh30FIzJN4MLULb60ms8zI9fLPNjGyvCYdmFVRFxYUVKjG5oVYLnWxBAThRjF0FO2M8JOWE/I+SE/YyQE8XICDlRjJyQE/ZzQk7Yzej4ydNy293fkAs3rpN7d9wi42M2/uCNnMi4zzy8e48cPHxsMcT/q/FtL8vLNkt5+WYpj28SWX5h8K+87GIpL/uQlJdfIjI4lnF0Fs9KQNMZGhyQ2fmFrKuyfBcJDA+WZG6hLOVyFwdlqEwEBkul4C6/8wuElAlcFxcO3u+GBmR2zu37nWauopcvNwSGBkuysFAWXkpuePqoorv7QKny/xJfdgmMDA3IjOP3O7tbW8zOhgZKslAuxvud7k/99PWTl16V7z31rJw6c1Z23H5zw8sXdJsJciIjcb1A5oPffEJ2ffVWWTOxUuTvPi+T5VWiIkIvPLmg13/Qaz+MXZCxMov7IDAwUJLVK4bl2KkZH+Wp6YjA6hUjcmZqTub4kOGIqPsy46ODwQHqmck598Wp6ISA+qO1K0fl6Knmpww6GYwibROYWD4iZ6fnnEukthtixSUExkYGA9F35uwsdAwTOHdiVI6c5P3OcESyctlwIJCmZ+Yttxn0pvtTP33pH9w/dc1H5W+f/0e5aNMGuemGa01sPnIiYwxL5ITHu3VkbI3FEwhwWkcxdgtO67CfE6d12M+I0zrsZ6QdcrcO+zlxWof9jLRDTuuwnxOndYgcPTopL798qOthnXPOMtmyZV3iuHpKx64/+o7s/P0vyM/feDeYQWHl1A7kRItd5QfPviAfvviC2lQXtUz69ZXt22prtnu3jq7vpX04IHKiGKEjJ+znhJywnxFywn5GyIliZIScKEZOyAn7OSEnRJ566p/lt37ru10P68Ybf1H+8i8/nziuntKhMyb0eDa89sSd27fJ1Vdd1vU+4wMiJ1pEoOF96cv315b6zPVbl5gl5ETu+3HDBpATdrOJdoacsJ8TcsJ+RsgJ+xkhJ4qREXKiGDkhJ+znhJwQ+dGP9svXvvY3XQ/rk5+8QO677/ol405Ozcg9Dz4un7vxupqMSPrje9cbrg6InHBAHjnhAKKnEsgJT2Adl0VOOAbqoRxywgNUxyWRE46BeirHaR2ewDosi5xwCNNjKeSER7iOSiMnHIF0WEYvURC9E2VYeskdKR2OmaUUciILrQbLIiccQPRUAjnhCazjssgJx0A9lENOeIDquCRywjFQT+WQE57AOiyLnHAI02Mp5IRHuI5KIyccgXRY5smnn5O9L+6rOxMgaTaFwyEzlUJOZMKVvDBywgFETyWQE57AOi6LnHAM1EM55IQHqI5LIiccA/VUDjnhCazDssgJhzA9lkJOeITrqDRywhFIR2VCCbH141csuTuHSos39x+su66io2EzlUFOZMKFnHCAq6slkBNdxd32YMiJttF1bUXkRNdQtz0QcqJtdF1dETnRVdxtDYacaAtb11dCTnQdeeYBkROZkfX9CsgJB7sAMyccQPRUAjnhCazjssgJx0A9lENOeIDquCRywjFQT+WQE57AOiyLnHAI02Mp5IRHuI5KIyccgeyjMsgJB2EjJxxA9FQCOeEJrOOyyAnHQD2UQ054gOq4JHLCMVBP5ZATnsA6LIuccAjTYynkhEe4jkojJxyB7KMyyAkHYSMnHED0VAI54Qms47LICcdAPZRDTniA6rgkcsIxUE/lkBOewDosi5xwCNNjKeSER7iOSiMnHIHsozLICQdhIyccQPRUAjnhCazjssgJx0A9lENOeIDquCRywjFQT+WQE57AOiyLnHAI02Mp5IRHuI5KIyccgeyjMsgJB2EjJxxA9FQCOeEJrOOyyAnHQD2UQ054gOq4JHLCMVBP5ZATnsA6LIuccAjTYynkhEe4jkojJxyB7KMypuXE8ZOn5ba7vyEvv/L6kki2XH6JPHr/HbJmYmXucSEnco+gYQPICbvZRDtDTtjPCTlhPyPkhP2MtEPkhP2ckBP2M9IOkRP2c0JO2M/IWoem5cTDu/cEvL6yfZs1bnX9ICfsxoOcsJsNcqIY2YRdIifs54WcsJ8RcqIYGSEnipETcsJ+TsgJ+xlZ69CsnNBZEzvve0x23H6zXLp5ozVuyAnTiSw2h5woRlDMnLCfE3LCfkbICfsZISeKkRFyohg5ISfs54ScsJ+RtQ6REw4SYeaEA4ieSiAnPIF1XBY54Rioh3LICQ9QHZdETjgG6qkcp3V4AuuwLHLCIUyPpZATHuE6Ko2ccASyj8qYlROagZ7WcdGmDXLTDdeajgQ5YTce5ITdbKKdISfs54ScsJ8RcsJ+RtohcsJ+TsgJ+xlph8gJ+zkhJ+xllHRNR0vXcjQtJ15764B858kfyo7bbpbxsRF76VY7Qk6YjUaQE3azQU4UI5uwS+SE/byQE/YzQk4UIyPkRDFyQk7Yzwk5YS+jUE7cuX2bXH3VZUGDlq7zaFZONLtTh0K0ZHiQE/ZeeGFHyAm72SAnipENcqI4OSEnipEVMyfs54ScsJ8RMyeKkRFywl5OSXLiyaefk70v7pN7d9yS+4QAs3LCXpSNO0JO2E0LOWE3G+REMbJBThQnJ+REMbJCTtjPCTlhPyPkRDEyQk6IyPRRkRMvdz+w0XNEVm9ZMm6jmRNWLqWAnHCwqyAnHED0VAI54Qms47Jcc8IxUA/lOK3DA1THJZETjoF6Koec8ATWYVnkhEOYHktxWodHuI5KIydE5N2nRP7LbzkimqHMh24U+fRfNpQTL7/yet1zX7/rFhPXeTQvJ37y0qvypS/fXwfv24/cXTtHJkNE3hZFTnhD23Fh5ETHCLtSADnRFcwdDYKc6AhfV1ZGTnQFc8eDICc6Rui9AHLCO2InAyAnnGD0WgQ5ISJHfiTy0te8ck4sft4nRT52X0M5Eb3mRNJsiu43XBnRtJxQMfHQ7j3y6P13yJqJlUHDepHM7Xc9JLd/8bMm7I72hJzIa/dtPS5yojUjC0sgJyyk0LwH5IT9jJAT9jPSDpET9nNCTtjPSDtETtjPCTlhL6NGIsLKXTLNyonJqRm558HH5XM3XrdkloRKi+899ayJi3YgJ+y96KIdISds5xN2h5ywnxNywn5GyAn7GSEnipERcqIYOSEn7OeEnLCXUZKcYOZEipwU0s77HpMdt98sl27eWLeGzp548JtPyK6v3lqbUZGipLdFmDnhDW3HhZETHSPsSgHkRFcwdzQIcqIjfF1ZGTnRFcwdD8LMiY4Rei+AnPCO2MkAyAknGL0WQU54xdtW8UZ3xLRy2QRmTrQVa/1KyAkHED2VQE54Auu4LHLCMVAP5ZATHqA6LomccAzUUznkhCewDssiJxzC9FgKOeERrqPSyAlHIPuojFk5oRnoPVf3PPUs15zoox3S9aYiJ1wT9VMPOeGHq8uqyAmXNP3UQk744eq6KnLCNVH39ZAT7pn6qIic8EHVbU3khFue/VDNtJzQALhbRz/shv62ETnhj63LysgJlzT91EJO+OHqsipywiVNf7WQE/7YuqqMnHBF0m8d5IRfvi6qIydcUOyvGublRBHi4LQOuykhJ+xmE+0MOWE/J+SE/YyQE/Yz0g6RE/ZzQk7Yz0g7RE7Yzwk5YT8jax0iJxwkgpxwANFTCeSEJ7COyyInHAP1UA454QGq45LICcdAPZVDTngC67AscsIhTI+lkBMe4ToqjZxwBLKPyiAnHISNnHAA0VMJ5IQnsI7LIiccA/VQDjnhAarjksgJx0A9lUNOeALrsCxywiFMj6WQEx7hOiqNnHAEso/KmJMT4e1Nfvd3flO+9ed/LS+/8npiHFsuv6TuQpl5ZoacyJN+87GRE3aziXaGnLCfE3LCfkbICfsZaYfICfs5ISfsZ6QdIifs54ScsJ+RtQ7NyYkQkEqKnfc9Jjtuv1ku3byxjpteJPN7Tz0r9+64RcbHRnJnipzIPYKGDSAn7GaDnChGNmGXyAn7eSEn7GeEnChGRsiJYuSEnLCfE3LCfkbWOiyknHjtrQPy4DefkF1fvVXWTKzMnSlyIvcIkBN2I0jVGTMnUmHKdSHkRK74Uw2OnEiFKfeFmDmRewQtG0BOtERkYgHkhIkYmjaBnLCfkbUOCyknnnz6Odn74j5mTljbmwz2w8wJg6EktIScsJ8TcsJ+RsgJ+xkxc6IYGSEnipETcsJ+TsgJ+xlZ69CcnNBZEdvvekjeO3S0Iavz158jux+4c8npHnnBZeZEXuRbj4ucaM3IwhLICQspNO8BOWE/I+SE/YyQE8XICDlRjJyQE/ZzQk7Yz8hah+bkRAio2TUnrEFETlhLZLEf5ITdbKKdISfs54ScsJ8RcsJ+RsiJYmSEnChGTsgJ+zkhJ+xnZK1Ds3LCGqhm/SAn7KaFnLCbDXKiGNmEXSIn7OeFnLCfEXKiGBkhJ4qRE3LCfk7ICfsZWesQOeEgEeSEA4ieSiAnPIF1XJaZE46BeiiHnPAA1XFJ5IRjoJ7KcUFMT2AdlkVOOITpsRRywiNcR6WRE45A9lEZ03Ki2fUntlx+iTx6/x3craOPdtZ2NhU50Q617q+DnOg+86wjIieyEuv+8siJ7jNvZ0TkRDvUursOcqK7vNsdDTnRLrnurYec6B7rXhnJrJyYnJqRex58XLZ+/Ar52JUflu88+UPZcdvNMj42Ig/v3iOfuuajcvVVl5nIgZkTJmJIbAI5YTebaGfICfs5ISfsZ4ScsJ+RdoicsJ8TcsJ+RtohcsJ+TsgJ+xlZ69CsnIheEFOhPfjNJ2TXV28NZkr85KVX5XtPPcutRK3tTQb7QU4YDCWhJeSE/ZyQE/YzQk7Yzwg5UYyMkBPFyAk5YT8n5IT9jKx1WAg5sXb1Stn1R9+Rnb//hUBO6OkeUVmRN1RmTuSdQOPxkRN2s2HmRDGyCbtETtjPCzlhPyPkRDEyQk4UIyfkhP2ckBP2M7LWoVk5ET2t46Ybrg1O5bho0wbRn598+jnZ++I+Zk5Y25sM9oOcMBgKMyeKEUqsS+SE/diQE/YzQk4UIyPkRDFyQk7Yzwk5YT8jax2alRNxUHqax213f0NefuV1OX/9ObL7gTvl0s0bu8pTTyf50pfvl28/cnfd9S6YOdHVGDINhpzIhCu3hTmtIzf0qQdGTqRGlduCyInc0GcamGtOZMKVy8LIiVywZx4UOZEZWddXQE50HXnhByyMnMibdCgmtA/kRN5ppB8fOZGeVZ5LIifypJ9ubOREOk55LoWcyJN++rGRE+lZ5bUkciIv8tnGRU5k45XH0siJPKgXe0yzciJ6Qcxuz5CIRxpe4+Ku/+3z8tVdj8md27cxc6Ig+z1yohhBISfs54ScsJ8RcsJ+RtohcsJ+TsgJ+xlph8gJ+zkhJ+xnZK1D5ESLRFRMfG3XY/KHO28VvTCnnlqCnLC2GzfuBzlRjKyQE/ZzQk7Yzwg5YT8j5EQxMkJOFCMn5IT9nJAT9jOy1qFZOaGg9CKYn7rmo3WzFLoJMD57I7zuRVxOzC+Uu9kWY2UkoIKCjDJC6/LiA6WSLJR5HXUZe6bhSiWRkojwdpcJW9cX9vF+NzdflqFBTZ8vFwT0/a5cLgvveC5o+qmhe3uJ/5f8wHVY1cf7ncP2KCUiRXq/0/2Jr/wJmJYTOmvhO0/+UHbcdrOMj410nZaOv/2uh+S9Q0eXjB297sShE1Nd740B0xEYLJVk7coRef/UdLoVWCoXAuesHJFTZ+dkdn4hl/EZtDWBZaNDMjRQklOTs60XZolcCAzoKQMTY/L+Sbf/J5XKJSmXOJR2Far+JfHs1JxMz/F+54qp6zrjI4MyPDQop87OuC5NPYcE1q8eEz6DOwTqodTEshGZnpuXqZl5D9XdltT9ia/8CZiVE9G7cyRh2nL5JfLo/XfImomVXaPYaOYEd+voWgSZB+K0jszIclmB0zpywZ5pUE7ryIQrl4U5rSMX7JkH5ZoTmZF1fQVO6+g68rYG5LSOtrB1dSVO6+gq7p4YzKycsEgXOWExleY9ISeKkRlywn5OyAn7GSEn7GekHSIn7OeEnLCfkXaInLCfE3LCfkbWOjQrJ5rdrUNv6/m9p56Ve3fc0tXTPZAT1nbf1v0gJ1ozsrAEcsJCCs17QE7Yzwg5YT8j5EQxMkJOFCMn5IT9nJAT9jOy1mEh5UR4a89dX721q6d1NAqP0zqs7daL/SAn7GYT7Qw5YT8n5IT9jJAT9jNCThQjI+REMXJCTtjPCTlhPyNrHRZSTjz59HOy98V9XZ85gZywtvu27gc50ZqRhSWQExZSYOaE/RSad4icKEaCnNZhPyfkhP2MtEPkhP2ckBP2M7LWoTk50ewOGSG889efI7sfuFMu3bzRBE9mTpiIIbEJ5ITdbJg5UYxswi6ZOWE/L+SE/YyYOVGMjJATxcgJOWE/J+SE/YysdWhOToSAml1zwhpE5IS1RBb7QU7YzQY5UYxskBPFyQk5UYysmDlhPyfkhP2MmDlRjIyQE8XIyVKXZuWEJUitekFOtCKU3/PIifzYZxmZ0zqy0MpnWWZO5MM9y6jIiSy08lsWOZEf+7QjIyfSksp3OWZO5Ms/zejIiTSUWCZKADnhYH9ATjiA6KkEcsITWMdlkROOgXooh5zwANVxSeSEY6CeyiEnPIF1WBY54RCmx1LICY9wHZVGTjgC2UdlTMuJ8NadL7/y+pJItlx+iTx6/x3craOPdtZ2NhU50Q617q+DnOg+86wjIieyEuv+8siJ7jNvZ0TkRDvUursOcqK7vNsdDTnRLrnurYec6B7rXhnJtJx4ePeegPNXtm8zzZuZE3bjQU7YzSbaGXLCfk7ICfsZISfsZ6QdIifs54ScsJ+RdoicsJ8TcsJ+RtY6NCsnuCCmtV2lmP0gJ4qRG3LCfk7ICfsZISfsZ4ScKEZGyIli5IScsJ8TcsJ+RtY6RE44SISZEw4geiqBnPAE1nFZ5IRjoB7KISc8QHVcEjnhGKincsyc8ATWYVnkhEOYHkshJzzCdVQaOeEIZB+VMSsnNAM9reOiTRvkphuuNR0JcsJuPMgJu9lEO0NO2M8JOWE/I+SE/Yy0Q+SE/ZyQE/Yz0g6RE/ZzQk7Yz8hah6blxGtvHZDvPPlD2XHbzTI+NmKNXa0f5ITZaAQ5YTcb5EQxsgm7RE7Yzws5YT8j5EQxMkJOFCMn5IT9nJAT9jOy1qFZOdHsTh0Kkbt1WNuVbPaDnLCZS7wrZk7Yzwk5YT8j5IT9jJATxcgIOVGMnJAT9nNCTtjPyFqHZuWENVDN+mHmhN20kBN2s2HmRDGyYeZEcXJCThQjK07rsJ8TcsJ+RtohcsJ+TsgJ+xlZ6xA54SAR5IQDiJ5KICc8gXVclpkTjoF6KMfMCQ9QHZdETjgG6qkccsITWIdlkRMOYXoshZzwCNdRaeSEI5B9VMa0nJicmpF7Hnxcvv/MXjl//Tmy+4E7ZeP6c4PHtn78CjMXykRO2H3FICfsZsPMiWJkw8yJ4uSEnChGVsgJ+zkhJ+xnxMyJYmSEnChGTpa6NC0nwrt1/Otf3yoPPvqEfOGm/14u3bxRfvLSq/K9p56Ve3fcYuJCmcgJS7t0fS/ICbvZICeKkQ1yojg5ISeKkRVywn5OyAn7GSEnipERcqIYOVnq0qyc0Ati7rzvMdlx+83BbImonNC7eDz4zSdk11dvlTUTK3PniZzIPYKGDSAn7GaDnChGNsiJ4uSEnChGVsgJ+zkhJ+xnhJwoRkbIiWLkZKnLQsoJZk5Y2oVs94KcsJ1P2B3XnLCfE9ecsJ8RcsJ+RtohcsJ+TsgJ+xkhJ4qREXKiGDlZ6tKsnFBITz79nOx9cZ/s/P0vyP/x+P8dnNaxdvVKue3ub8i2G6/jmhOW9iSjvSAnjAYTaws5YT8n5IT9jJAT9jNCThQjI+REMXLigpj2c0JO2M/IWoem5YTC0lkSX/ry/XXcvv3I3XL1VZeZYclpHWaiWNIIcsJuNtHOkBP2c0JO2M8IOWE/I+REMTJCThQjJ+SE/ZyQE/YzstaheTlhDVhSP8gJuykhJ+xmg5woRjZhl8gJ+3khJ+xnhJwoRkbIiWLkhJywnxNywn5G1jo0LSf0bh0HDx+ruytHeHtRbiVqbVey2Q9ywmYu8a6YOWE/J+SE/YyQE/YzQk4UIyPkRDFyQk7Yzwk5YT8jax2alROhhPjcjdctOYWDC2Ja243s9oOcsJsNMyeKkQ0zJ4qTE3KiGFlxQUz7OSEn7GekHSIn7OeEnLCfkbUOzcqJ6K1EL928sY4btxK1thvZ7Qc5YTcb5EQxskFOFCcn5EQxskJO2M8JOWE/I+REMTJCThQjJ0tdmpUTzJywtJsUtxfkRDGy47QO+zlxWof9jJAT9jPSDpET9nNCTtjPCDlRjIyQE8XIyVKXZuWEQtLTN3buekx2P3CnhLMndNbE9rsektu/+FluJWppTzLaC3LCaDCxtpAT9nNCTtjPCDlhPyPkRDEyQk4UIydO67CfE3LCfkbWOjQtJxRWKCPeO3S0xo5biVrbjez2g5ywm020M+SE/ZyQE/YzQk7Yzwg5UYyMkBPFyAk5YT8n5IT9jKx1aF5OWAOW1A+3ErWbEnLCbjbIiWJkE3aJnLCfF3LCfkbIiWJkhJwoRk7ICfs5ISfsZ2StQ+SEg0SQEw4geiqBnPAE1nFZZk44BuqhHHLCA1THJZETjoF6Ksc1JzyBdVgWOeEQpsdSyAmPcB2VRk44AtlHZUzLCb1jx213f0NefuX1JZFsufwSefT+O2TNxMrc40JO5B5BwwaQE3aziXaGnLCfE3LCfkbICfsZaYfICfs5ISfsZ6QdIifs54ScsJ+RtQ5Ny4mHd+8JeH1l+zZr3Or6QU7YjQc5YTcb5EQxsgm7RE7Yzws5YT8j5EQxMkJOFCMn5IT9nJAT9jOy1qFZOaGzJnbe95jsuP3m2p06rMEL+0FOWE1GBDlhNxvkRDGyQU4UJyfkRDGyYuaE/ZyQE/YzYuZEMTJCThQjJ0tdIiccpIGccADRUwnkhCewjstyWodjoB7KMXPCA1THJZETjoF6Koec8ATWYVnkhEOYHksxc8IjXEelkROOQPZRGbNyQjPQ0zou2rRBbrrhWtORICfsxoOcsJtNtDPkhP2ckBP2M0JO2M9IO0RO2M8JOWE/I+0QOWE/J+SE/YysdWhaTrz21gH5zpM/lB233SzjYyPW2NX6QU6YjYbTOuxGU9cZcsJ+UMgJ+xkhJ+xnhJwoRkbIiWLkhJywnxNywn5G1jo0Kyea3alDIXK3Dmu7ks1+mDlhM4YKtPMAACAASURBVJd4V8gJ+zkhJ+xnhJywnxFyohgZISeKkRNywn5OyAn7GVnr0KycsAaqWT/MnLCbFnLCbjbRzpAT9nNCTtjPCDlhPyPkRDEyQk4UIyfkhP2ckBP2M7LWIXLCQSLICQcQPZVATngC67gscsIxUA/lkBMeoDouiZxwDNRTOa454Qmsw7LICYcwPZZCTniE66g0csIRyD4qY15O/OSlV+VLX76/LpJvP3K3XH3VZWZiQk6YiWJJI8gJu9lEO0NO2M8JOWE/I+SE/Yy0Q+SE/ZyQE/Yz0g6RE/ZzQk7Yz8hah6blhIqJh3bvkUfvv0PWTKwM2OlFMrff9ZDc/sXPmrmLB3LC2m692A9ywm42yIliZBN2iZywnxdywn5GyIliZIScKEZOyAn7OSEn7GdkrUOzcmJyakbuefBx+dyN1y2ZJaHS4ntPPSv37rjF+108Qhny3qGjQXafuX7rknGRE9Z2a+SE3USSO2PmhP3EkBP2M0JO2M8IOVGMjJATxcgJOWE/J+SE/YysdWhWTujdOnbe95jsuP1muXTzxjpuKgwe/OYTsuurt9ZmVPgC++TTz8mmjetqguTh3XuCob6yfVttSOSEL/qd12XmROcMu1EBOdENyp2NgZzojF831kZOdINy52NwWkfnDH1XQE74JuymPnLCDUefVZATPun2Zm2zcsLKzIl47Cor9r64r272BHLC7osDOWE3m2hnyAn7OSEn7GeEnLCfkXaInLCfE3LCfkbaIXLCfk7ICfsZWevQrJxQUCoC9jz1rJlrToTCZMO6tbWZE9/97j/JmvUr5KMfW28tW/oREeREMXYD5IT9nJAT9jNCTtjPCDlRjIyQE8XICTlhPyfkhP2MrHVoWk4oLCt369DTOf7ku08vueZEqXRvkOmKFSOydesF8ulPb5Zf+7UL5dOfvsha1n3bT6kkUi737eYXYsODjLRTcjKbl2YURERGZjPSxny8383OL8jw4IDp7S5Sc7zfFSCtkoi+5fF+ZzsrH+93tre4eN0V6f0u/JxTPMq91bF5OWENd/y0jn/7b/9SfvjMG/LWmyeWtPrLv7JRfvVfbJKrr7lAtn5yk6xcNWJtc3q+H505oVNoD5+Y6vltLfIGnrtqVE6enZXZuYUib0ZP9758dEgGB0ty6uxsT29nkTdOZ06ct3pcDh2fdLoZeoDGhzZ3SNeuHJUPJmdlmvc7d1AdV1o2MijDw4Ny8oMZx5Up55LA+WvH5b1jbt/vXPZHLZHVy0dkenZeJmfmzePQ/Ymv/AmYlhM6W+Hg4WN113cIT63Y+vErcrmVaNLFOPWaE0ePTsqP/+5tef5H++X5ve/IK/vel4WFxT8x6ge7X7zsXLlm6wVyzSc3ySd/dZOs37Ai/z2gxzvgtI5iBMxpHfZz4rQO+xlxWof9jLRDrjlhPydO67CfkXbIaR32c+K0DvsZWevQrJywckHMP/6zp+T6T328dseQJGGSdEHMM2dm5YW9+2Xvj/fLCz9+R/7hpYMyE7OGF2xaJZ/YWplV8Ymtm+QXfnGttf2j8P0gJ4oRIXLCfk7ICfsZISfsZ4ScKEZGyIli5IScsJ8TcsJ+RtY6NCsnrNxKNH7Ni89cv7VuJocGmuZuHSom/v7FA/L83nfl+R+9Lf/tJ++KCozo19q143L1NR8KZlboDIstH9sQTKPmq30CyIn22XVzTeREN2m3NxZyoj1u3VwLOdFN2u2PxcyJ9tl1a03kRLdIdzYOcqIzft1YGznRDcq9NYZZOWFl5kSauNPIiXgdPeXjp/90WF7Y+05tdsWRI2frFhsfH5Zf/pXzq6eCXCi/8omNMjY2lKYllqkSQE4UY1dATtjPCTlhPyPkhP2MtEPkhP2ckBP2M9IOkRP2c0JO2M/IWodm5YSC0lkLO3c9JrsfuLN2WoVe82H7XQ/J7V/8bC7XnEgKsB05kVTn9deOBTMr9v7o7eBUkLffPlm32NDQgFy5ZZ1cs3WTXPPJyukgq9eMWdunTPWDnDAVR8NmkBP2c0JO2M8IOWE/I+REMTJCThQjJ+SE/ZyQE/YzstahaTmhsEIZ8d6hozV2337kbrn6qsvMsHQlJ+Ib9P7hD+RHepHNH78jz/94v/zs1SNLbmv14V9YW71uxYVy9dYPyYUXTpjhYqER5ISFFFr3gJxozSjvJZATeSfQenzkRGtGFpZg5oSFFJr3gJywn5F2iJywnxNywn5G1jo0LyesAUvqx5eciI91+tSMPL93fyAq9I4gepHNudn6Wy9uOH9FbWaFXrvily47t69vAYecKMIrSAQ5YT8n5IT9jJAT9jPSDpET9nNCTtjPCDlRjIyQE8XIyVKXyAkHaXRLTiS1+qP/ul9eeP4d+fHfvSX/7YUDMjU1V7fYylUjcvUnLpD/8XeulA0bVshFF6/pq1uYIicc7OBdKIGc6ALkDodATnQIsAurIye6ANnBEMgJBxA9l0BOeAbsqDwzJxyB9FgGOeERbo+WRk44CDZPORFv/6X/771gVoXOrlBpcfzY1JItXDUxKh+7aoN8ZMs6ufyK9XLFR86Ty684zwEJeyWQE/YySeoIOWE/J+SE/YyQE/Yz0g6RE/ZzQk7Yz0g7RE7Yzwk5YT8jax0iJxwkYklOxDfnn392NLgjyD+89J68su99+dkrR+Ts2fpbmIbrXHHleXLFR9bJR7asl8uvWCcf/dh6UZFR5C/kRDHSQ07Yzwk5YT8j5IT9jJATxcgIOVGMnJAT9nNCTtjPyFqHyAkHiViWE/HNK5dF9r99Ql7ZdySQFa/89LC8su+wvPnGCZmfLy+hodewuOLKdcHsCpUWV1y5Xi6+ZLUM6KfgAnwhJwoQknDNiSKkhJywnxJywn5GyIliZIScKEZOyAn7OSEn7GdkrUPkhINEiiQnGm3uzMy8vPrKEXn1lfdl3z8dDr6/8tP35ciRs0tWGR8fll+6/FzRmRZXfqRyWsiVH1kny5ePOKDptgRywi1PX9WYOeGLrLu6yAl3LH1VQk74Iuu2Lqd1uOXpoxpywgdV9zWRE+6Zuq6InHBNtPfrISccZNwLcqIRBpUTKikCafHTw/Kqnhry6lGZnq6/8GapJLJp00RwWkhNWmxZl/utTZETDnbwLpRATnQBcodDICc6BNiF1ZETXYDsYAjkhAOInksgJzwDdlQeOeEIpMcyyAmPcHu0NHLCQbC9LCeS8CwslOX1144vmWWxf/9J0dNGol8rV44E16+ozK7Q00LOk8uvPE9GR4cckG9dAjnRmpGFJZATFlJo3gNywn5GyAn7GWmHyAn7OSEn7GekHSIn7OeEnLCfkbUOkRMOEuk3OdEImV5oMzrLQq9r8eorh+Xkiem6VfR6FXrdCr1+xZVbdKZFZbbF+RtXOkijvgRywjlSLwWRE16wOi2KnHCK00sx5IQXrM6LIiecI3VeEDnhHKmXgsgJL1idFkVOOMXZF8WQEw5iRk40h3jg3dPys1ePyE9frlx8859/dkT2/fT9JSvpLIvlK0Zk2bIR2XzRhPzCL54rF26ekEsuXSsXXbxaNl+0OnNayInMyHJZATmRC/ZMgyInMuHKZWHkRC7YMw+KnMiMrOsrICe6jrytAZETbWHr6krIia7i7onBkBMOYkROZIc4N7sgP//5sWCmxb59h6ozLo7IewdONyw2NDwgF164OhAVF1+ypvLv0rVy8cWr5YJNEzI4uPQOIsiJ7NnksQZyIg/q2cZETmTjlcfSyIk8qGcfEzmRnVm310BOdJt4e+MhJ9rj1s21kBPdpN0bYyEnHOSInHAAsVpCTw3R25q+9cZxefPNk/LmG8fkrTf19xPy7runEm93qququNALcqqwuOhilRZr5JJL1sgll66RX96yXo6cqj+1xF3HVHJBADnhgqLfGsgJv3xdVEdOuKDovwZywj/jTkdATnRKsDvrIye6w7mTUZATndDrz3WREw5yR044gJiixNzcgryz/2QgLd5+84S8+cbxQFzo97ffOikqNpK+hoYGgpkVep2Li1VcfFhnW+jMi8qMC32er3wJICfy5Z9mdOREGkr5LoOcyJd/2tGRE2lJ5bccciI/9llGRk5koZXPssiJfLgXeVTkhIP0kBMOIDoo8f7hD+TN6iwLFRZvvnlc9r91MhAXhw9/0FBcfOiCVbXTRHSmRTDz4pI1sulCxIWDWFKVQE6kwpTrQsiJXPGnGhw5kQpT7gshJ3KPoGUDyImWiEwsgJwwEUPTJpAT9jOy1iFywkEiyAkHED2VCK858ca7pzOfLqLXsAhmXOg1LvTaFuEpI5eslgs3r2bGhcPMkBMOYXoqhZzwBNZhWeSEQ5geSyEnPMJ1VBo54Qik5zLICc+AHZRHTjiA2GclkBMOAkdOOIDoqUTaC2K+8Xrl1JDKKSIn5LWfH5O339bTR07K5OTS00U2fmhlICj0a/nyYVm/YYWcv3GVrF+/PLgl6rnnLZcNG1bIuvXLPW1Zb5VFTtjPEzlhPyPkhP2MtEPkhP2ckBP2M9IOkRP2c0JO2M/IWofICQeJICccQPRUIq2caDb84UMfyNtvn5A3XtPrWxyTt946Ie+8fUoOHDgt775zqmXnFXGxUs47b1kgMTacvzIQF/r9vHXLg8f0uX7+Qk7YTx85YT8j5IT9jJATxcgIOVGMnJAT9nNCTtjPyFqHyAkHiSAnHED0VMKFnGjWWrkscuTIWTn43mk5+N6Z4Fao7x04JQcPVn4OHz99eqbpFurdRtZVRYXKivXrK/Ii+FlFRnUWxtq1455I5VsWOZEv/zSjIyfSUMp3GeREvvzTjs7MibSk8lsOOZEf+ywjIyey0MpnWeREPtyLPCpywkF6yAkHED2V8C0n0ratdxI58O6iwDh4UCVG5Z8KjPfeOyNHj5yVhYVy05LDI4PBqSM1abFe5UW9xNDnJlaPpm3NxHLICRMxNG0COWE/I+SE/Yy0Q+SE/ZyQE/Yz0g6RE/ZzQk7Yz8hah8gJB4kgJxxA9FTCipxIu3nv7D8lhw6ekQM6++K9M3L40BnRx/RnlRh6HYy0X3q3kSs/sk6uuPK82irLV4zKmrXjojMwgn/njMuaNeOyes1Y2rJelkNOeMHqtChywilOL8WQE16wOi+KnHCO1HlB5IRzpF4KIie8YHVaFDnhFGdfFENOOIgZOeEAoqcSRZMTaTAcPToZiAq9FoZe80J/PvBu9VQSnYVx4LScPtX8NJKkcc45pyIr1p6zXNasGQskxrnnLpPVa6qPV4VGRW4sczo7AzmRJvl8l0FO5Ms/zejIiTSU8l8GOZF/Bq06QE60ImTjeeSEjRyadYGcsJ+RtQ6REw4SQU44gOipRC/KiTSopqbmAmFx6OAHcvToWTl+bFKOH5+SI+9/IMeO6e9TwWPH9N/RSfngg+wyQ/tQebFm7VhFaOj3qNBYu6w6M0OfrwiNVRPJp5sgJ9Kkmu8yyIl8+acZHTmRhlL+yyAn8s+gVQfIiVaEbDyPnLCRA3LCfg5F6hA54SAt5IQDiJ5K9KucaAennk4SyorjxyvSQr8fef+sHD9+Vo4frcoMFR3HpjoSGsHpJBF5ceEFq2RkbFhWrByRlatGZdWqUVm5cjT4eWKi8n3ZsuF2Not1HBFATjgC6bEMcsIjXIelkRMOYXoqhZzwBNZxWeSEY6AeyjFzwgPUHi+JnHAQMHLCAURPJZATnsCKyNzsQjArQ4WGygqdkaFCoyI49PFFoaGzNjqZoaFbMTQ0ICtXjcjKlWOyatVIMAtj1aqxuscmVuvvleejy4WPjY4O+QPS45WRE/YDRk7Yz0g7RE7Yzwk5YT8j7RA5YT8n5IT9jKx1iJxwkAhywgFETyWQE57AdlBWr4kRyorKKSaTMnN2Vt47fEZOnpiWU6en5fSpaTml/05Wftbbtbr60lNPVk1UBYbO0KjO1FDRoRcGXbGiOnujOnOjIkEqy+lpLP36hZywnzxywn5GyIliZIScKEZOyAn7OSEn7GdkrUPkhINEkBMOIHoqgZzwBNZx2TTXnJifL8uJE1Ny6uRUIC70op+nT03JqdOV7yf1udhjKjeij83OzHfcud7OdXx8KDjNZNmykdrP48v0sRHR7+PjleeW6WPL9bv+PixjwePDleeXV5eP1Fq2fFgGB0sd9+ijAHLCB1W3NZETbnn6qsbMCV9k3dVFTrhj6bMScsInXTe1kRNuOPZTFeSEg7SREw4geiqBnPAE1nHZNHLCxZDT03OBrKjMyKjKjNOV74H0CMTHjJw+PRXIj1O6TCg4qo/NzS24aKVhjaHhgUWBEYiMisRQmVGRHsMyHgqOZcOyfEUoSPS7PrcoSUIpUltvfEhUrrTzhZxoh1p310FOdJd3u6MhJ9ol1731kBPdY93JSMiJTuh1Z13kRHc499IoyAkHaSInHED0VAI54Qms47LdkhMu2p6ZmZezH8zK5OSsnD07V/0+E/w8dVYfq/yrPD8bXDh0Upc7OyOTk3PV56s/f7C47GSwzpx4lx9DA0tmd6jsiIqMmvxYPiTLl48GgmS1Xph0xajIQCmQIzrLoyI96meKtCs/XGTT7zWQE8XYA5AT9nNCTtjPSDtETtjPCTlhPyNrHSInHCSCnHAA0VMJ5IQnsI7LFklOON70xHInjk/V5MfZQGpUREgr+RGVJYEIicmP06fbu2Vs1m1esUJncFRmcoSntoSnwoSzOILTXKqzPEaGB2V4ZECGhwdlZER/Hqz+HHmsukxl2crzo6OV7/p7WKOf7+qCnMi6p+azPHIiH+5ZRkVOZKGV37LIifzYpx0ZOZGWFMuFBJATDvYF5IQDiJ5KICc8gXVcFjnhGGiLcnrh0YrwqMz4CH7W2SDV2Rt1QmRyVs6cmZHZ6XmZnJwJrvERzAw5q7NAIuuf1Wt/dEd+pKW1fPlInfSoiI+BqshYFBo1KRITIKEICdYbHpCh4UEZGhyQwaEBGRoqyeBgRZ4Evw/qY/pcKbJMddnguVJtucr6lXWitSrrD8hw9buuozIn7RdyIi2pfJdDTuTLP83oyIk0lPJfBjmRfwatOkBOtCLE83ECyAkH+wRywgFETyWQE57AOi6LnHAM1EO5LNec0Ot0RE9tqciPiszQGR0qQcKfZ6bnZGpqTmZmFmR2dl70tBn9PjuzIDP6+/Rc9fHK83pR0/gywWPVdbRWL3+NjQ01FR1jo4NSrt56tyI6qvJEpYlKj5pECYXKUmkSLrMoYFSaDNZJk8VlFgVMIGYiY9SPVy9tQjGj0mdpTxXJ06uzYJAT9l+hyAn7GWmHyAn7OSEn7GdkrUPkhINEkBMOIHoqgZzwBNZxWeSEY6AeymWREx6Gz1xSJUUoOKLyoiZAqhIklCK6zPRMZZ2oJAmfn1NRMjsv83MLMjdXrnyf158Xaj/Pz5WD3/XxynILMl9bply/fPX5oFZ1maRaehFXvioERkdVzCydnRJKkOHhymyWcAbK4uyURmImoVZ0NstQZZbNgD6m/wZK1Z8l+H1goDKe3mGnskxJBgcGZEC/h/9qv1efHxyQNatGZWZuXubLEtQMagXLJ4xRrdlsDOXCl1sCyAm3PH1VQ074IuuuLnLCHct+qYSccJA0csIBRE8lkBOewDoui5xwDNRDuaLJCQ8Ici25sBAVIpGfZxclyMJ8WSaWDcvBY5MxaVIRKnXSpCZRlgqVubn5egEzq7+H0qWy/KJ0iUqa5DGCsbXPJdImuVYogMLlddv5SkegVBIplUoSfpfwd6l/fHG5crB8bbno+rJYRxfRovH64e8qaoKbICcuUxkjfU+VXrP3VD9OrdeGfTVgVZLKKVcDJZmb15rR5XQbG7CMMG7GKl1fAUopKdeQXSyP2uMDA8m5RJav77laO5ZV0HPD/WRxm5dsW0JflfGSx9FRluwLjZiG+12Dvs6dGJFjp2eCemn7CvbVpP20OsbSfJfuV7WxGmVSrZ+2p0o/jfffRq+HdO8K+S6FnMiXfxFHR044SA054QCipxLICU9gHZdFTjgG6qEccsIDVMcle/2aE3p6UDhrZTacsVITJY1ms6QXMzpjpiJdovJHHyvL/MKCqPwJfp4vy4KKFhVG+j32+8K8VB6vCqXaMguVZTUnnZETyJdw3aDuggQSKnhcUo3R66cxOX6JUA4CEIBAQwLl8j3QMUAAOeEgBOSEA4ieSiAnPIF1XBY54Rioh3LICQ9QHZfsdTnhGFdu5Xxec6JcFimXyxJ+1wuQBL9L/ePh8wsL+kTCc7JYQ5fVgvHadb9Xl09erpSppyW9R/tr2FfQYt04td816Vb9Bwsvrj9SveDtmcnZWN0UvBZasKrm0binxW2pyya27bWcFxaStz2yfH3GyayCfhrsJ1G2dX03WL4yXoNMGvaVzC3sS8VddN8ul0uiOU3NLCzNN4FV4n4e3S+q27J0ufr9t/Z6yMoq2MWWbuPieEvHib52k/rP7U2sBwfW2TcLC8gJC9EiJxykgJxwANFTCeSEJ7COyyInHAP1UA454QGq45LICcdAPZXzKSc8tdx3ZbnmRDEi55oT9nPitA77GVnrEDnhIBHkhAOInkogJzyBdVwWOeEYqIdyyAkPUB2XRE44BuqpHHLCE1iHZZETDmF6LIWc8AjXUWnkhCOQfVQGOeEgbOSEA4ieSiAnPIF1XBY54Rioh3LICQ9QHZdETjgG6qkccsITWIdlkRMOYXoshZzwCNdRaeSEI5B9VAY50SLsn7z0qnzpy/fXlvrM9Vvl3h23yPjYSO0x5ITdVwxywm420c6QE/ZzQk7Yzwg5YT8j7RA5YT8n5IT9jLRD5IT9nJAT9jOy1iFyokUiTz79nGzauE6uvuoymZyakXsefFw2rFsrX9m+DTlhbW9O6Ac5UYCQRAQ5YT8n5IT9jJAT9jNCThQjI+REMXJCTtjPCTlhPyNrHSInMiaismLvi/vqZk8wcyIjxC4ujpzoIuwOhkJOdACvS6siJ7oEuoNhkBMdwOviqsyc6CLsNodCTrQJrsurISe6DLyN4ZATbUDr81WQExl3gId37wnWYOZERnA5LY6cyAl8xmGRExmB5bA4ciIH6BmHRE5kBJbT4siJnMBnGBY5kQFWjosiJ3KEn3Jo5ERKUCxWI4CcyLAz6PUnHtq9Rx69/w5ZM7GytiYzJzJA7PKiyIkuA29zOOREm+C6uBpyoouw2xwKOdEmuC6vhpzoMvA2hkNOtAEth1WQEzlAzzgkciIjMBYX5ETKnUDFxM5dj8nuB+6USzdvTLkWi0EAAhCAAAQgAAEIQAACEIAABCDQigByohUhEUFMpIDEIhCAAAQgAAEIQAACEIAABCAAgTYJICdagGt0KkebvFkNAhCAAAQgAAEIQAACEIAABCAAgRgB5ESLXUIvgPkn3326bqnz15/D6R28lCAAAQhAAAIQgAAEIAABCEAAAo4IICfaBKm3FP2DBx4P1v7M9Vvrbi3aZklWS0ng+MnTctvd35CXX3k9WOPbj9wtV191WcO1my3/2lsHZPtdD8l7h47W1t9y+SVLLnqasjUWa0BgcmpG7nnwcfn+M3uDJb5+1y1y0w3XtuSlr7M39x+suztOy5VYIDUBnRn2pS/fHyyfdr/X19PO+x6THbffXHf9neh7YtjA733+BrJLnUa6BbNkFn9/S5txuk5YKkogy2eCaIZJnyGS/iiS9j2TVNITyJJZ/LXE5770nLMsmfWzQvy1Ev08GP/sp33wx8UsaaRbNmtm0aqa3wsvvcpn7nSo+2Yp5EQbUcdP9Ui6vWgbZVklBYHwTXDrx68IDm71A8PXdj0mf7jz1sQLlbZavtX6KVpikRQEoq+R8APDndu3NZRK0Q/vHOCmANzGIvF9Xz+o731xX0PRGv0AkvQBr9X6bbTIKjECWTPT19H+A4drIlBfhwcPH0OmO96zsn4m0NfKpo3rgve/8HW1Yd3amsjjM4XjgBLKdZKZliMjPxll+aygnyW+9cRfyW1f/G0ZHxtZ8nkwzWcNP1vRX1WzZBYXEzozHWneX/tLmq1FTqShFFtGX4gXbdpQ+8DHdSnagNjmKvrh/MFvPiG7vnprcDvXuHyIl221PHKizSAyrJb0l/a0H+yYOZEBdMZF42zTvhaazZxoJjcytsfiCQTazSwsxf9VfnarTj8TxMVe2vdHP1vTH1VdZ9Yf1PxuZSefFbSzuIxATvjNK2Qen0mZ5v0r/L/sU9d8VB7avYeZE/6jKtQIyImMcSUdDKf9UJ9xKBZPIJD04brZG2Gr5Zn27H83S3p9pP0rO3LCXz7x103aD3JpT+tgxov77NrNLOwk7evOfee9W9HFZ4J4rvGp6pzS4Xb/6TSzpNkubjvsz2qdfFZQYvE768VP6+CUDvf7VTuZRf8f+qdXX0dOuI+l8BWRExkjDP9T+tyN19WmpCMnMkLsYHH9z+d7Tz1bNy25lZzIsjzTnjsIp8Gq8dkruljagyTkhPs8worxvxx2KieinYa1tt14Xapri/jbyt6q3G5mSoH/p/zsC51+Jmg1myUU6Lt23tr02kp+tq43q3aSWSiOuOaE+32j3c8K0T8yNbsGmX6e2PPUs/yV3mF0WTOLf4Zv9f7nsFVKFYgAciJjWJ0a94zDsXiMQKuZEHFgWZdPeqMlhM4ItGPWwxGRE52xb7Z2u3+FbzRzIj4W2bnPrt3MOMB1n0VYsZPPBPG/9DbqMi6l/G1Nf1TuJLPo/02cxuZ2f+nks4J20kqwp/2/y+1W9Xa1rJklXThbCXHdid7eT7JuHXIiK7HqhZC45kQb4Bys0uoaEvEhOl3eQct9X6KT80g5wPW3+7R7/YK0H/DIzn127WSGmHCfQ7xiO9cvSCsmdCzkhPsM28ks2gV/yHCfSSefFcJumr1W0v7f5X7Lerdip5kxc6J3941Otgw50Qa9rFd5bmMIVmlAIM3dN/TWoOEU2FbL/+DZF+TDuhobDwAAC3ZJREFUF19Qu9NHmgv5EE52As2u5tzsFAAOcLOzTrtGqzs/NJoCm/RhRF9n/+n7/0X+h898Orhqequ/YKXtkeXqCbTKLC4iOJWjO3tQq88E8dMFm30g19fO08/slS/c9BtB82ToJ8NWmcXf//74z56S6z/18brPCtz5xn02WT4r6Gvjmb99Uf7d/3xj7bUS/fynGetXeKv5tKeTut+q3q7Y6m4dzU6XRk709r7R7tYhJ9okl+X+2G0OwWoNCMQvchQ9xzDpr4TNlm91v3lCcEOg2X2wk+REPBftotm5pG667L8qUc7xaZXxD+fxDJVW9LxrLuLXnf2nWWbx979GU2h5LbnPqtlngviH8/hrRbsJL9a3cf25cs+Dj8v3n9lba5K83OelFZtlFn//47OCnwziVbN8Vkj6Pynp8+B7h44Gw3DqgJ8Mm2WmIyIn/HDv5arIiV5Ol22DAAQgAAEIQAACEIAABCAAAQgUgAByogAh0SIEIAABCEAAAhCAAAQgAAEIQKCXCSAnejldtg0CEIAABCAAAQhAAAIQgAAEIFAAAsiJAoREixCAAAQgAAEIQAACEIAABCAAgV4mgJzo5XTZNghAAAIQgAAEIAABCEAAAhCAQAEIICcKEBItQgACEIAABCAAAQhAAAIQgAAEepkAcqKX02XbIAABCEAAAhCAAAQgAAEIQAACBSCAnChASLQIAQhAAAIQgAAEIAABCEAAAhDoZQLIiV5Ol22DAAQgAAEIQAACEIAABCAAAQgUgAByogAh0SIEIAABCEAAAhCAAAQgAAEIQKCXCSAnejldtg0CEIAABCAAAQhAAAIQgAAEIFAAAsiJAoREixCAAAQgAAEIQAACEIAABCAAgV4mgJzo5XTZNghAAAIQgAAEIAABCEAAAhCAQAEIICcKEBItQgACEIAABCAAAQhAAAIQgAAEepkAcqKX02XbIAABCEAAAhCAAAQgAAEIQAACBSCAnChASLQIAQhAAAIQgAAEIAABCEAAAhDoZQLIiV5Ol22DAAQgAAEIQAACEIAABCAAAQgUgAByogAh0SIEIAABCEAAAhCAAAQgAAEIQKCXCSAnejldtg0CEIAABMwQePLp5+QPHni8rp8tl18ij95/h/z8jXflS1++X779yN1y9VWX1S3z8O498sJLrwbLrZlYKc3qHDtxWrbf9ZC8d+how+3++l23yKaN64Lxkr7CHn7y0qvBMp+5fqvcu+MWGR8bqS3e7Dld6PjJ03Lb3d+Ql195vWEfv/f5G+SiTRvqmGhvN91wrbz21oFgO85dO1Hb7rBQ0nNhP822x8yOQCMQgAAEIAABCCQSQE6wY0AAAhCAAAQ8E4gLhnA4ffxT13w0EBIqHfY89WzdwbgeiH9t12PyhztvlUs3b5Q0daKbojX3vrgvUS7s3PWY7H7gzqBu0ld4wH/++nPqlpucmpF7Hnxcvv/M3kRx0ajWQ7v3LBENuqyOE+8lFBAqWeLCRhn8yXefllDsqLBJquE5UspDAAIQgAAEIOCYAHLCMVDKQQACEIAABKIEwlkE2268LpgV0OgrPOjfsG6tfGX7Ngl/3/rxK4L10tZxKSdUKPz6v/jv5MwHk0FPoUz43lPPyooVy+TMmbNLxIcrOaFS5t/8xq/KP+57rTaGSosHv/mE/PKWX5C/+bu/r8kO5ASvOQhAAAIQgEDxCSAnip8hWwABCEAAAoYJxKVDs1bDGQO7dt4q+w8crptJkaVOOEanMydUTty5fZs89H/+ed3sDT0d4839B+Xg4WNe5cSd/+vvSNhDOLtEx9Xxo7NMkBOGXwC0BgEIQAACEEhJADmREhSLQQACEIAABNolEL8mQvSUhHjN8LQFfTx+SkOWOrp+MzmR5poT4akY33rir4I2P/ubvxbMXNj11VtFH/MtJ/R0ln/46c+DU1Pu+Hefk3sf/lPZcfvNwWNxOdFqe9rNjvUgAAEIQAACEOgOAeREdzgzCgQgAAEIQKB2qoZer0G/4tdz0MfC0zc+cdVltVMp4uii131oVKeVnEhzzYlQTuiFNvU0C/3a9lv/MjjNRCVKN+TE2tUrg4trTqxcLr906aaASfz6HMyc4MUFAQhAAAIQKD4B5ETxM2QLIAABCECggAQanaYRv9ZEq01rdrqHi9M6wruExC/G2S05oRfs1O345p/+Re3CnMiJVnsFz0MAAhCAAASKRwA5UbzM6BgCEIAABApEQGdC6C01r936sSVd6wG+foUXm9SfG8mJrHW0lks5odfD+Pkb78i/uu4TQc/dlBO67U8/s1e+cNNvBGMjJwr0AqBVCEAAAhCAQEoCyImUoFgMAhCAAAQg0A6B8DSNCzeuq7t4ZHj9iPh1JZrJCT29IW0d13Iivu3dlBPxsZET7eyJrAMBCEAAAhCwTQA5YTsfuoMABCAAgR4gEAoKnUERfiVdb0Kfa3ZaR5Y6reREqwtIqjwJrzmxZmLlkhRcyAmVDH/wwOO12l+/65bgehY6S0OvcaEXxNTTOtLIiVbb0wO7EZsAAQhAAAIQ6GkCyImejpeNgwAEIAABCEAAAhCAAAQgAAEI2CeAnLCfER1CAAIQgAAEIAABCEAAAhCAAAR6mgByoqfjZeMgAAEIQAACEIAABCAAAQhAAAL2CSAn7GdEhxCAAAQgAAEIQAACEIAABCAAgZ4mgJzo6XjZOAhAAAIQgAAEIAABCEAAAhCAgH0CyAn7GdEhBCAAAQhAAAIQgAAEIAABCECgpwkgJ3o6XjYOAhCAAAQgAAEIQAACEIAABCBgnwBywn5GdAgBCEAAAhCAAAQgAAEIQAACEOhpAsiJno6XjYMABCAAAQhAAAIQgAAEIAABCNgngJywnxEdQgACEIAABCAAAQhAAAIQgAAEepoAcqKn42XjIAABCEAAAhCAAAQgAAEIQAAC9gkgJ+xnRIcQgAAEIAABCEAAAhCAAAQgAIGeJoCc6Ol42TgIQAACEIAABCAAAQhAAAIQgIB9AsgJ+xnRIQQgAAEIQAACEIAABCAAAQhAoKcJICd6Ol42DgIQgAAEIAABCEAAAhCAAAQgYJ8AcsJ+RnQIAQhAAAIQgAAEIAABCEAAAhDoaQLIiZ6Ol42DAAQgAAEIQAACEIAABCAAAQjYJ4CcsJ8RHUIAAhCAAAQgAAEIQAACEIAABHqaAHKip+Nl4yAAAQhAAAIQgAAEIAABCEAAAvYJICfsZ0SHEIAABCAAAQhAAAIQgAAEIACBniaAnOjpeNk4CEAAAhCAAAQgAAEIQAACEICAfQLICfsZ0SEEIAABCEAAAhCAAAQgAAEIQKCnCSAnejpeNg4CEIAABCAAAQhAAAIQgAAEIGCfAHLCfkZ0CAEIQAACEIAABCAAAQhAAAIQ6GkCyImejpeNgwAEIAABCEAAAhCAAAQgAAEI2CeAnLCfER1CAAIQgAAEIAABCEAAAhCAAAR6mgByoqfjZeMgAAEIQAACEIAABCAAAQhAAAL2CSAn7GdEhxCAAAQgAAEIQAACEIAABCAAgZ4mgJzo6XjZOAhAAAIQgAAEIAABCEAAAhCAgH0CyAn7GdEhBCAAAQhAAAIQgAAEIAABCECgpwkgJ3o6XjYOAhCAAAQgAAEIQAACEIAABCBgnwBywn5GdAgBCEAAAhCAAAQgAAEIQAACEOhpAsiJno6XjYMABCAAAQhAAAIQgAAEIAABCNgngJywnxEdQgACEIAABCAAAQhAAAIQgAAEepoAcqKn42XjIAABCEAAAhCAAAQgAAEIQAAC9gkgJ+xnRIcQgAAEIAABCEAAAhCAAAQgAIGeJoCc6Ol42TgIQAACEIAABCAAAQhAAAIQgIB9AsgJ+xnRIQQgAAEIQAACEIAABCAAAQhAoKcJICd6Ol42DgIQgAAEIAABCEAAAhCAAAQgYJ/A/w+RKlAuBZcdJQAAAABJRU5ErkJggg==",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.get_history(), x=\"SYSTEM TIME\", y=[\"A\", \"B\"], \n",
" title=\"2A <-> B : changes in concentrations with time\",\n",
" color_discrete_sequence = ['navy', 'orange'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\"})\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "c3d00af0-3222-4cba-8367-3345cea820f4",
"metadata": {},
"source": [
"A gets depleted, while B gets produced."
]
},
{
"cell_type": "markdown",
"id": "ab27ab50-7be4-4257-a6cc-2ef163539e1f",
"metadata": {},
"source": [
"#### Let's verify that the stoichiometry is being respected"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "e88539b9-28e1-4b07-9b68-169d1e650e4f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([3., 5.], dtype=float32), array([2.8, 5.1], dtype=float32))"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# We'll check the first two arrays of concentrations, from the run's history\n",
"arr0 = bio.reaction_dynamics.get_historical_concentrations(row=0, df=df)\n",
"arr1 = bio.reaction_dynamics.get_historical_concentrations(row=1, df=df)\n",
"arr0, arr1"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "f1d42c06-f5bc-447d-93c0-bf7c4b1c824d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.reaction_dynamics.stoichiometry_checker(rxn_index=0, \n",
" conc_arr_before = arr0, \n",
" conc_arr_after = arr1)"
]
},
{
"cell_type": "markdown",
"id": "6c277db7-6b2b-4e74-b50e-4746cff17e90",
"metadata": {},
"source": [
"# STARTING OVER, this time with 2nd-order kinetics in the forward reaction"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "162100c5-e9d4-498b-81ee-be7b71e7f542",
"metadata": {},
"outputs": [],
"source": [
"bio.reaction_dynamics.clear_reactions()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "9c09f158-2d64-49d6-8d0c-6d3a8b7eff4b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Reaction 2A <-> B , NOW WITH 2nd-order kinetics in the forward direction\n",
"chem_data.add_reaction(reactants=[(2, \"A\", 2)], products=[\"B\"], forward_rate=5., reverse_rate=2.)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "f2dea24e-6f87-4f76-a513-176916934edb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.42:\n",
"1 bins and 2 species:\n",
" Species 0 (A). Diff rate: None. Conc: [3.]\n",
" Species 1 (B). Diff rate: None. Conc: [5.]\n"
]
}
],
"source": [
"# RESET the concentrations to their original values\n",
"bio.set_all_uniform_concentrations( [3., 5.] )\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "8c2155d6-cb42-49e3-8247-c858b0c65860",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.00 | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.02 | \n",
" 2.800000 | \n",
" 5.100000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.04 | \n",
" 2.648000 | \n",
" 5.176000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.06 | \n",
" 2.532480 | \n",
" 5.233760 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.08 | \n",
" 2.444685 | \n",
" 5.277658 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.10 | \n",
" 2.377960 | \n",
" 5.311020 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.12 | \n",
" 2.327250 | \n",
" 5.336375 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.14 | \n",
" 2.288710 | \n",
" 5.355645 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.16 | \n",
" 2.259420 | \n",
" 5.370290 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.18 | \n",
" 2.237159 | \n",
" 5.381421 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.20 | \n",
" 2.220241 | \n",
" 5.389880 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.22 | \n",
" 2.207383 | \n",
" 5.396309 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.24 | \n",
" 2.197611 | \n",
" 5.401194 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.26 | \n",
" 2.190184 | \n",
" 5.404908 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.28 | \n",
" 2.184540 | \n",
" 5.407730 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.30 | \n",
" 2.180251 | \n",
" 5.409875 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.32 | \n",
" 2.176990 | \n",
" 5.411505 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.34 | \n",
" 2.174513 | \n",
" 5.412744 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.36 | \n",
" 2.172630 | \n",
" 5.413685 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.38 | \n",
" 2.171199 | \n",
" 5.414401 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.40 | \n",
" 2.170111 | \n",
" 5.414945 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.42 | \n",
" 2.169284 | \n",
" 5.415358 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.42 | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" RESET all concentrations to initial values | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B \\\n",
"0 0.00 3.000000 5.000000 \n",
"1 0.02 2.800000 5.100000 \n",
"2 0.04 2.648000 5.176000 \n",
"3 0.06 2.532480 5.233760 \n",
"4 0.08 2.444685 5.277658 \n",
"5 0.10 2.377960 5.311020 \n",
"6 0.12 2.327250 5.336375 \n",
"7 0.14 2.288710 5.355645 \n",
"8 0.16 2.259420 5.370290 \n",
"9 0.18 2.237159 5.381421 \n",
"10 0.20 2.220241 5.389880 \n",
"11 0.22 2.207383 5.396309 \n",
"12 0.24 2.197611 5.401194 \n",
"13 0.26 2.190184 5.404908 \n",
"14 0.28 2.184540 5.407730 \n",
"15 0.30 2.180251 5.409875 \n",
"16 0.32 2.176990 5.411505 \n",
"17 0.34 2.174513 5.412744 \n",
"18 0.36 2.172630 5.413685 \n",
"19 0.38 2.171199 5.414401 \n",
"20 0.40 2.170111 5.414945 \n",
"21 0.42 2.169284 5.415358 \n",
"22 0.42 3.000000 5.000000 \n",
"\n",
" caption \n",
"0 Initial state \n",
"1 \n",
"2 \n",
"3 \n",
"4 \n",
"5 \n",
"6 \n",
"7 \n",
"8 \n",
"9 \n",
"10 \n",
"11 \n",
"12 \n",
"13 \n",
"14 \n",
"15 \n",
"16 \n",
"17 \n",
"18 \n",
"19 \n",
"20 \n",
"21 \n",
"22 RESET all concentrations to initial values "
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the state of the concentrations of all species at bin 0\n",
"bio.add_snapshot(bio.bin_snapshot(bin_address = 0),\n",
" caption = \"RESET all concentrations to initial values\")\n",
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "68b1c2fa-fc50-4f33-a4f0-55d231939752",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 1 (at temp. 25 C)\n",
"0: 2 A <-> B (kF = 5 / kR = 2 / delta_G = -2,271.4 / K = 2.5) | 2-th order in reactant A\n",
"Set of chemicals involved in the above reactions: {'B', 'A'}\n"
]
}
],
"source": [
"chem_data.describe_reactions()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "9c9e81e0-b5b3-45eb-a4eb-0ab157dcf9db",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reaction 2A B is 2nd order in A, and 1st order in B:\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `reaction_7.log.htm`]\n"
]
}
],
"source": [
"# Send a header and a plot to the HTML log file\n",
"log.write(\"Reaction 2A <-> B is 2nd order in A, and 1st order in B:\",\n",
" style=log.h2)\n",
"graph_data = chem_data.prepare_graph_network()\n",
"GraphicLog.export_plot(graph_data, \"vue_cytoscape_1\")"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "ab938afe-a818-4e9c-bc2d-d347aa0d0a23",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.44:\n",
"1 bins and 2 species:\n",
" Species 0 (A). Diff rate: None. Conc: [1.6]\n",
" Species 1 (B). Diff rate: None. Conc: [5.7]\n"
]
}
],
"source": [
"# First step\n",
"bio.react(time_step=0.02, n_steps=1, snapshots={\"sample_bin\": 0})\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "0c8b4979-26aa-4b43-baa9-b65547d3ba24",
"metadata": {},
"source": [
"[A] = 1.6 , [B] = 5.7\n",
"_(Contrast with the counterpart in the 1st order kinetics: [A] = 2.8 , [B] = 5.1)_"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "a964cc75-e378-493a-aa5c-27da363c7baf",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.00 | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.02 | \n",
" 2.800000 | \n",
" 5.100000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.04 | \n",
" 2.648000 | \n",
" 5.176000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.06 | \n",
" 2.532480 | \n",
" 5.233760 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.08 | \n",
" 2.444685 | \n",
" 5.277658 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.10 | \n",
" 2.377960 | \n",
" 5.311020 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.12 | \n",
" 2.327250 | \n",
" 5.336375 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.14 | \n",
" 2.288710 | \n",
" 5.355645 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.16 | \n",
" 2.259420 | \n",
" 5.370290 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.18 | \n",
" 2.237159 | \n",
" 5.381421 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.20 | \n",
" 2.220241 | \n",
" 5.389880 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.22 | \n",
" 2.207383 | \n",
" 5.396309 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.24 | \n",
" 2.197611 | \n",
" 5.401194 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.26 | \n",
" 2.190184 | \n",
" 5.404908 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.28 | \n",
" 2.184540 | \n",
" 5.407730 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.30 | \n",
" 2.180251 | \n",
" 5.409875 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.32 | \n",
" 2.176990 | \n",
" 5.411505 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.34 | \n",
" 2.174513 | \n",
" 5.412744 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.36 | \n",
" 2.172630 | \n",
" 5.413685 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.38 | \n",
" 2.171199 | \n",
" 5.414401 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.40 | \n",
" 2.170111 | \n",
" 5.414945 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.42 | \n",
" 2.169284 | \n",
" 5.415358 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.42 | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" RESET all concentrations to initial values | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.44 | \n",
" 1.600000 | \n",
" 5.700000 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B \\\n",
"0 0.00 3.000000 5.000000 \n",
"1 0.02 2.800000 5.100000 \n",
"2 0.04 2.648000 5.176000 \n",
"3 0.06 2.532480 5.233760 \n",
"4 0.08 2.444685 5.277658 \n",
"5 0.10 2.377960 5.311020 \n",
"6 0.12 2.327250 5.336375 \n",
"7 0.14 2.288710 5.355645 \n",
"8 0.16 2.259420 5.370290 \n",
"9 0.18 2.237159 5.381421 \n",
"10 0.20 2.220241 5.389880 \n",
"11 0.22 2.207383 5.396309 \n",
"12 0.24 2.197611 5.401194 \n",
"13 0.26 2.190184 5.404908 \n",
"14 0.28 2.184540 5.407730 \n",
"15 0.30 2.180251 5.409875 \n",
"16 0.32 2.176990 5.411505 \n",
"17 0.34 2.174513 5.412744 \n",
"18 0.36 2.172630 5.413685 \n",
"19 0.38 2.171199 5.414401 \n",
"20 0.40 2.170111 5.414945 \n",
"21 0.42 2.169284 5.415358 \n",
"22 0.42 3.000000 5.000000 \n",
"23 0.44 1.600000 5.700000 \n",
"\n",
" caption \n",
"0 Initial state \n",
"1 \n",
"2 \n",
"3 \n",
"4 \n",
"5 \n",
"6 \n",
"7 \n",
"8 \n",
"9 \n",
"10 \n",
"11 \n",
"12 \n",
"13 \n",
"14 \n",
"15 \n",
"16 \n",
"17 \n",
"18 \n",
"19 \n",
"20 \n",
"21 \n",
"22 RESET all concentrations to initial values \n",
"23 "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "95e9aab1-a16d-46b7-9b97-82ab60011e6b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.84:\n",
"1 bins and 2 species:\n",
" Species 0 (A). Diff rate: None. Conc: [1.51554944]\n",
" Species 1 (B). Diff rate: None. Conc: [5.74222528]\n"
]
}
],
"source": [
"# Numerous more steps\n",
"bio.react(time_step=0.02, n_steps=20, snapshots={\"sample_bin\": 0})\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "bec6b756-4269-4ab5-b4e8-7ba989b4454e",
"metadata": {},
"source": [
"The systems settles in the following equilibrium: [A] = 1.51554944 , [B] = 5.74222528"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "8c2e158b-091f-485d-b5fd-a1dd21bcf6f0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2 A <-> B\n",
"Final concentrations: [A] = 1.516 ; [B] = 5.742\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.5\n",
" Formula used: [B] / [A]^2 \n",
"2. Ratio of forward/reverse reaction rates: 2.5\n",
"Discrepancy between the two values: 1.041e-08 %\n",
"Reaction IS in equilibrium (within 1% tolerance)\n",
"\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Verify that the reaction has reached equilibrium\n",
"bio.reaction_dynamics.is_in_equilibrium(rxn_index=0, conc=bio.bin_snapshot(bin_address = 0))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "3eeeb74b-0427-48ce-a2e3-9a876c0c66a0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.00 | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.02 | \n",
" 2.800000 | \n",
" 5.100000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.04 | \n",
" 2.648000 | \n",
" 5.176000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.06 | \n",
" 2.532480 | \n",
" 5.233760 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.08 | \n",
" 2.444685 | \n",
" 5.277658 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.10 | \n",
" 2.377960 | \n",
" 5.311020 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.12 | \n",
" 2.327250 | \n",
" 5.336375 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.14 | \n",
" 2.288710 | \n",
" 5.355645 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.16 | \n",
" 2.259420 | \n",
" 5.370290 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.18 | \n",
" 2.237159 | \n",
" 5.381421 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.20 | \n",
" 2.220241 | \n",
" 5.389880 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.22 | \n",
" 2.207383 | \n",
" 5.396309 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.24 | \n",
" 2.197611 | \n",
" 5.401194 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.26 | \n",
" 2.190184 | \n",
" 5.404908 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.28 | \n",
" 2.184540 | \n",
" 5.407730 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.30 | \n",
" 2.180251 | \n",
" 5.409875 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.32 | \n",
" 2.176990 | \n",
" 5.411505 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.34 | \n",
" 2.174513 | \n",
" 5.412744 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.36 | \n",
" 2.172630 | \n",
" 5.413685 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.38 | \n",
" 2.171199 | \n",
" 5.414401 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.40 | \n",
" 2.170111 | \n",
" 5.414945 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.42 | \n",
" 2.169284 | \n",
" 5.415358 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.42 | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" RESET all concentrations to initial values | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.44 | \n",
" 1.600000 | \n",
" 5.700000 | \n",
" | \n",
"
\n",
" \n",
" | 24 | \n",
" 0.46 | \n",
" 1.544000 | \n",
" 5.728000 | \n",
" | \n",
"
\n",
" \n",
" | 25 | \n",
" 0.48 | \n",
" 1.525453 | \n",
" 5.737274 | \n",
" | \n",
"
\n",
" \n",
" | 26 | \n",
" 0.50 | \n",
" 1.519033 | \n",
" 5.740483 | \n",
" | \n",
"
\n",
" \n",
" | 27 | \n",
" 0.52 | \n",
" 1.516780 | \n",
" 5.741610 | \n",
" | \n",
"
\n",
" \n",
" | 28 | \n",
" 0.54 | \n",
" 1.515984 | \n",
" 5.742008 | \n",
" | \n",
"
\n",
" \n",
" | 29 | \n",
" 0.56 | \n",
" 1.515703 | \n",
" 5.742148 | \n",
" | \n",
"
\n",
" \n",
" | 30 | \n",
" 0.58 | \n",
" 1.515604 | \n",
" 5.742198 | \n",
" | \n",
"
\n",
" \n",
" | 31 | \n",
" 0.60 | \n",
" 1.515569 | \n",
" 5.742216 | \n",
" | \n",
"
\n",
" \n",
" | 32 | \n",
" 0.62 | \n",
" 1.515556 | \n",
" 5.742222 | \n",
" | \n",
"
\n",
" \n",
" | 33 | \n",
" 0.64 | \n",
" 1.515552 | \n",
" 5.742224 | \n",
" | \n",
"
\n",
" \n",
" | 34 | \n",
" 0.66 | \n",
" 1.515550 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
" | 35 | \n",
" 0.68 | \n",
" 1.515550 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
" | 36 | \n",
" 0.70 | \n",
" 1.515550 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
" | 37 | \n",
" 0.72 | \n",
" 1.515549 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
" | 38 | \n",
" 0.74 | \n",
" 1.515549 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
" | 39 | \n",
" 0.76 | \n",
" 1.515549 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
" | 40 | \n",
" 0.78 | \n",
" 1.515549 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
" | 41 | \n",
" 0.80 | \n",
" 1.515549 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
" | 42 | \n",
" 0.82 | \n",
" 1.515549 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
" | 43 | \n",
" 0.84 | \n",
" 1.515549 | \n",
" 5.742225 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B \\\n",
"0 0.00 3.000000 5.000000 \n",
"1 0.02 2.800000 5.100000 \n",
"2 0.04 2.648000 5.176000 \n",
"3 0.06 2.532480 5.233760 \n",
"4 0.08 2.444685 5.277658 \n",
"5 0.10 2.377960 5.311020 \n",
"6 0.12 2.327250 5.336375 \n",
"7 0.14 2.288710 5.355645 \n",
"8 0.16 2.259420 5.370290 \n",
"9 0.18 2.237159 5.381421 \n",
"10 0.20 2.220241 5.389880 \n",
"11 0.22 2.207383 5.396309 \n",
"12 0.24 2.197611 5.401194 \n",
"13 0.26 2.190184 5.404908 \n",
"14 0.28 2.184540 5.407730 \n",
"15 0.30 2.180251 5.409875 \n",
"16 0.32 2.176990 5.411505 \n",
"17 0.34 2.174513 5.412744 \n",
"18 0.36 2.172630 5.413685 \n",
"19 0.38 2.171199 5.414401 \n",
"20 0.40 2.170111 5.414945 \n",
"21 0.42 2.169284 5.415358 \n",
"22 0.42 3.000000 5.000000 \n",
"23 0.44 1.600000 5.700000 \n",
"24 0.46 1.544000 5.728000 \n",
"25 0.48 1.525453 5.737274 \n",
"26 0.50 1.519033 5.740483 \n",
"27 0.52 1.516780 5.741610 \n",
"28 0.54 1.515984 5.742008 \n",
"29 0.56 1.515703 5.742148 \n",
"30 0.58 1.515604 5.742198 \n",
"31 0.60 1.515569 5.742216 \n",
"32 0.62 1.515556 5.742222 \n",
"33 0.64 1.515552 5.742224 \n",
"34 0.66 1.515550 5.742225 \n",
"35 0.68 1.515550 5.742225 \n",
"36 0.70 1.515550 5.742225 \n",
"37 0.72 1.515549 5.742225 \n",
"38 0.74 1.515549 5.742225 \n",
"39 0.76 1.515549 5.742225 \n",
"40 0.78 1.515549 5.742225 \n",
"41 0.80 1.515549 5.742225 \n",
"42 0.82 1.515549 5.742225 \n",
"43 0.84 1.515549 5.742225 \n",
"\n",
" caption \n",
"0 Initial state \n",
"1 \n",
"2 \n",
"3 \n",
"4 \n",
"5 \n",
"6 \n",
"7 \n",
"8 \n",
"9 \n",
"10 \n",
"11 \n",
"12 \n",
"13 \n",
"14 \n",
"15 \n",
"16 \n",
"17 \n",
"18 \n",
"19 \n",
"20 \n",
"21 \n",
"22 RESET all concentrations to initial values \n",
"23 \n",
"24 \n",
"25 \n",
"26 \n",
"27 \n",
"28 \n",
"29 \n",
"30 \n",
"31 \n",
"32 \n",
"33 \n",
"34 \n",
"35 \n",
"36 \n",
"37 \n",
"38 \n",
"39 \n",
"40 \n",
"41 \n",
"42 \n",
"43 "
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2 = bio.get_history()\n",
"df2"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "16ec259b-98fe-4660-8123-83fdf55b74fb",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "navy",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.02,
0.04,
0.06,
0.08,
0.1,
0.12000000000000001,
0.14,
0.16,
0.18,
0.19999999999999998,
0.21999999999999997,
0.23999999999999996,
0.25999999999999995,
0.27999999999999997,
0.3,
0.32,
0.34,
0.36000000000000004,
0.38000000000000006,
0.4000000000000001,
0.4200000000000001,
0.4200000000000001,
0.4400000000000001,
0.46000000000000013,
0.48000000000000015,
0.5000000000000001,
0.5200000000000001,
0.5400000000000001,
0.5600000000000002,
0.5800000000000002,
0.6000000000000002,
0.6200000000000002,
0.6400000000000002,
0.6600000000000003,
0.6800000000000003,
0.7000000000000003,
0.7200000000000003,
0.7400000000000003,
0.7600000000000003,
0.7800000000000004,
0.8000000000000004,
0.8200000000000004,
0.8400000000000004
],
"xaxis": "x",
"y": [
3,
2.8,
2.6479999999999997,
2.5324799999999996,
2.4446847999999997,
2.3779604479999996,
2.32724994048,
2.2887099547647995,
2.2594195656212475,
2.237158869872148,
2.2202407411028324,
2.2073829632381528,
2.197611052060996,
2.1901843995663572,
2.1845401436704317,
2.180250509189528,
2.1769903869840412,
2.174512694107871,
2.172629647521982,
2.171198532116706,
2.1701108844086967,
2.1692842721506094,
3,
1.5999999999999999,
1.544,
1.5254528,
1.519033438994432,
1.5167795836780045,
1.5159843392384003,
1.5157032623056466,
1.5156038559406249,
1.515568692074582,
1.5155562523122668,
1.5155518514352155,
1.515550294500065,
1.5155497436882157,
1.5155495488220039,
1.515549479882208,
1.5155494554926734,
1.5155494468641386,
1.5155494438115338,
1.5155494427315825,
1.515549442349517,
1.5155494422143498
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "orange",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.02,
0.04,
0.06,
0.08,
0.1,
0.12000000000000001,
0.14,
0.16,
0.18,
0.19999999999999998,
0.21999999999999997,
0.23999999999999996,
0.25999999999999995,
0.27999999999999997,
0.3,
0.32,
0.34,
0.36000000000000004,
0.38000000000000006,
0.4000000000000001,
0.4200000000000001,
0.4200000000000001,
0.4400000000000001,
0.46000000000000013,
0.48000000000000015,
0.5000000000000001,
0.5200000000000001,
0.5400000000000001,
0.5600000000000002,
0.5800000000000002,
0.6000000000000002,
0.6200000000000002,
0.6400000000000002,
0.6600000000000003,
0.6800000000000003,
0.7000000000000003,
0.7200000000000003,
0.7400000000000003,
0.7600000000000003,
0.7800000000000004,
0.8000000000000004,
0.8200000000000004,
0.8400000000000004
],
"xaxis": "x",
"y": [
5,
5.1,
5.175999999999999,
5.233759999999999,
5.2776575999999995,
5.311019775999999,
5.336375029759999,
5.355645022617599,
5.370290217189376,
5.381420565063926,
5.389879629448584,
5.396308518380923,
5.401194473969502,
5.404907800216821,
5.407729928164784,
5.409874745405236,
5.411504806507979,
5.412743652946064,
5.413685176239008,
5.414400733941646,
5.414944557795651,
5.415357863924695,
5,
5.7,
5.728,
5.7372736,
5.740483280502784,
5.741610208160997,
5.7420078303808,
5.742148368847177,
5.742198072029688,
5.74221565396271,
5.742221873843867,
5.742224074282393,
5.742224852749968,
5.7422251281558925,
5.7422252255889985,
5.7422252600588966,
5.7422252722536635,
5.742225276567931,
5.742225278094233,
5.7422252786342085,
5.7422252788252415,
5.742225278892825
],
"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": "2A <-> B : changes in concentrations (the jump at 0.42 is the concentration reset)"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
0.8400000000000004
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
1.2807341179544345,
5.97704060315274
],
"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\"], \n",
" title=\"2A <-> B : changes in concentrations (the jump at 0.42 is the concentration reset)\",\n",
" color_discrete_sequence = ['navy', 'orange'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\"})\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "3fd3bce2-7095-43a4-9ef0-764714be1301",
"metadata": {},
"source": [
"**Compared to first-order kinetics in A**, the (2nd order in A) reaction now takes place much more quickly, and proceeds to almost complete depletion of A"
]
},
{
"cell_type": "markdown",
"id": "ea064b52-efc9-4fb6-94c7-9a22264bc751",
"metadata": {},
"source": [
"#### Let's verify that the stoichiometry is still being respected"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "8798e44e-7a1b-41ba-af64-5a4b1e7cf687",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([3., 5.], dtype=float32), array([1.6, 5.7], dtype=float32))"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# We'll check the first two arrays of concentrations, from the run's history\n",
"arr0 = bio.reaction_dynamics.get_historical_concentrations(row=22, df=df2) # Row 22 is the conc. reset\n",
"arr1 = bio.reaction_dynamics.get_historical_concentrations(row=23, df=df2)\n",
"arr0, arr1"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "bdbcef17-1fc3-4547-8afe-7c932a586dc3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.reaction_dynamics.stoichiometry_checker(rxn_index=0, \n",
" conc_arr_before = arr0, \n",
" conc_arr_after = arr1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0ebe7c58",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}