{
"cells": [
{
"cell_type": "markdown",
"id": "8d1aaf6c-3d58-4e27-88ac-9482296ac61a",
"metadata": {},
"source": [
"### One-bin `2A <-> 3B` reaction, with 1st-order kinetics in both directions, taken to equilibrium\n",
"\n",
"Diffusion not applicable (just 1 bin)\n",
"\n",
"LAST REVISED: July 14, 2023"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "1fe1cc26-5763-4feb-b097-3ff995c10c8b",
"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": "592e626f",
"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.visualization.graphic_log import GraphicLog"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4745cc84-d917-4701-87a8-8c16f9ac428e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-> Output will be LOGGED into the file 'reaction_3.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": "code",
"execution_count": 4,
"id": "b2660f8d-3447-4874-88d0-da99c0edcfcd",
"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: [10.]\n",
" Species 1 (B). Diff rate: None. Conc: [50.]\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 <-> 3B , with 1st-order kinetics in both directions\n",
"chem_data.add_reaction(reactants=[(2,\"A\")], products=[(3,\"B\")], forward_rate=5., reverse_rate=2.)\n",
"\n",
"bio = BioSim1D(n_bins=1, chem_data=chem_data)\n",
"\n",
"bio.set_uniform_concentration(species_index=0, conc=10.)\n",
"bio.set_uniform_concentration(species_index=1, conc=50.)\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "50961a8b-29af-4001-8d46-2a57ed7ccb0d",
"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",
" 10.0 | \n",
" 50.0 | \n",
" Initial state | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"0 0 10.0 50.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": "0506f3fa-67d8-4aaf-986b-103f955336bb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 1 (at temp. 25 C)\n",
"0: 2 A <-> 3 B (kF = 5 / kR = 2 / Delta_G = -2,271.45 / K = 2.5) | 1st order in all reactants & products\n"
]
}
],
"source": [
"chem_data.describe_reactions()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "feae8232-392a-44fd-a9cf-0fb426258fee",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[GRAPHIC ELEMENT SENT TO LOG FILE `reaction_3.log.htm`]\n"
]
}
],
"source": [
"# Send the plot to the HTML log file\n",
"graph_data = chem_data.prepare_graph_network()\n",
"GraphicLog.export_plot(graph_data, \"vue_cytoscape_1\")"
]
},
{
"cell_type": "markdown",
"id": "ce4ebe89-8187-4c6f-a526-5609937ac65e",
"metadata": {
"tags": []
},
"source": [
"### First step"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "430626a5-2e29-4738-944f-6233edd0e7c7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.05:\n",
"1 bins and 2 species:\n",
" Species 0 (A). Diff rate: None. Conc: [15.]\n",
" Species 1 (B). Diff rate: None. Conc: [42.5]\n"
]
}
],
"source": [
"# First step\n",
"bio.react(time_step=0.05, n_steps=1)\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "27067455-0efd-45d3-abd8-9b66b6f48097",
"metadata": {},
"source": [
"_Early in the reaction :_\n",
"[A] = 15. [B] = 42.5\n",
"\n",
"We're taking a smaller first step than in experimetn \"reaction_2\", to avoid over-shooting the equilibrium value with too large a step!"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "63f11bce-17f0-4757-98a3-a40e7621084f",
"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",
" 10.0 | \n",
" 50.0 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.05 | \n",
" 15.0 | \n",
" 42.5 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"0 0.00 10.0 50.0 Initial state\n",
"1 0.05 15.0 42.5 "
]
},
"execution_count": 9,
"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",
"bio.get_history()"
]
},
{
"cell_type": "markdown",
"id": "b12d38ef-c936-47b0-a1de-232fc9d521b7",
"metadata": {},
"source": [
"### Numerous more steps"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "f714a848-01a0-4343-bfbb-89d946a7e343",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 10.05:\n",
"1 bins and 2 species:\n",
" Species 0 (A). Diff rate: None. Conc: [16.25]\n",
" Species 1 (B). Diff rate: None. Conc: [40.625]\n"
]
}
],
"source": [
"# Numerous more steps\n",
"bio.react(time_step=0.1, n_steps=100, snapshots={\"sample_bin\": 0})\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "markdown",
"id": "ff1860cd-a3c7-47a5-9b9f-3c04560962fa",
"metadata": {
"tags": []
},
"source": [
"### Equilibrium"
]
},
{
"cell_type": "markdown",
"id": "20ce715e-e24a-4ec3-a93d-d3eb5858aef5",
"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: [A] = 16.25 , [B] = 40.625"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "796bef2e-8a11-4aff-8ce5-0b9bb5f72680",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2 A <-> 3 B\n",
"Final concentrations: [B] = 40.63 ; [A] = 16.25\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 2.5\n",
" Formula used: [B] / [A]\n",
"2. Ratio of forward/reverse reaction rates: 2.5\n",
"Discrepancy between the two values: 1.776e-14 %\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": "7527ea21-fd7d-4514-ab49-cc6c16482c10",
"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",
" 10.00 | \n",
" 50.000 | \n",
" Initial state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.05 | \n",
" 15.00 | \n",
" 42.500 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.15 | \n",
" 17.00 | \n",
" 39.500 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.25 | \n",
" 15.80 | \n",
" 41.300 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.35 | \n",
" 16.52 | \n",
" 40.220 | \n",
" | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 97 | \n",
" 9.65 | \n",
" 16.25 | \n",
" 40.625 | \n",
" | \n",
"
\n",
" \n",
" | 98 | \n",
" 9.75 | \n",
" 16.25 | \n",
" 40.625 | \n",
" | \n",
"
\n",
" \n",
" | 99 | \n",
" 9.85 | \n",
" 16.25 | \n",
" 40.625 | \n",
" | \n",
"
\n",
" \n",
" | 100 | \n",
" 9.95 | \n",
" 16.25 | \n",
" 40.625 | \n",
" | \n",
"
\n",
" \n",
" | 101 | \n",
" 10.05 | \n",
" 16.25 | \n",
" 40.625 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
102 rows × 4 columns
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A B caption\n",
"0 0.00 10.00 50.000 Initial state\n",
"1 0.05 15.00 42.500 \n",
"2 0.15 17.00 39.500 \n",
"3 0.25 15.80 41.300 \n",
"4 0.35 16.52 40.220 \n",
".. ... ... ... ...\n",
"97 9.65 16.25 40.625 \n",
"98 9.75 16.25 40.625 \n",
"99 9.85 16.25 40.625 \n",
"100 9.95 16.25 40.625 \n",
"101 10.05 16.25 40.625 \n",
"\n",
"[102 rows x 4 columns]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_history()"
]
},
{
"cell_type": "markdown",
"id": "f2e3dc99-8b9d-4dcd-a2e3-ad099efbcbf4",
"metadata": {
"tags": []
},
"source": [
"# Plots of changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "c206e345-03c3-4c13-b1f3-d1d21d6bf100",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
" "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "navy",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.05,
0.15000000000000002,
0.25,
0.35,
0.44999999999999996,
0.5499999999999999,
0.6499999999999999,
0.7499999999999999,
0.8499999999999999,
0.9499999999999998,
1.0499999999999998,
1.15,
1.25,
1.35,
1.4500000000000002,
1.5500000000000003,
1.6500000000000004,
1.7500000000000004,
1.8500000000000005,
1.9500000000000006,
2.0500000000000007,
2.150000000000001,
2.250000000000001,
2.350000000000001,
2.450000000000001,
2.550000000000001,
2.6500000000000012,
2.7500000000000013,
2.8500000000000014,
2.9500000000000015,
3.0500000000000016,
3.1500000000000017,
3.2500000000000018,
3.350000000000002,
3.450000000000002,
3.550000000000002,
3.650000000000002,
3.750000000000002,
3.8500000000000023,
3.9500000000000024,
4.0500000000000025,
4.150000000000002,
4.250000000000002,
4.350000000000001,
4.450000000000001,
4.550000000000001,
4.65,
4.75,
4.85,
4.949999999999999,
5.049999999999999,
5.149999999999999,
5.249999999999998,
5.349999999999998,
5.4499999999999975,
5.549999999999997,
5.649999999999997,
5.7499999999999964,
5.849999999999996,
5.949999999999996,
6.049999999999995,
6.149999999999995,
6.249999999999995,
6.349999999999994,
6.449999999999994,
6.549999999999994,
6.649999999999993,
6.749999999999993,
6.8499999999999925,
6.949999999999992,
7.049999999999992,
7.1499999999999915,
7.249999999999991,
7.349999999999991,
7.44999999999999,
7.54999999999999,
7.64999999999999,
7.749999999999989,
7.849999999999989,
7.949999999999989,
8.049999999999988,
8.149999999999988,
8.249999999999988,
8.349999999999987,
8.449999999999987,
8.549999999999986,
8.649999999999986,
8.749999999999986,
8.849999999999985,
8.949999999999985,
9.049999999999985,
9.149999999999984,
9.249999999999984,
9.349999999999984,
9.449999999999983,
9.549999999999983,
9.649999999999983,
9.749999999999982,
9.849999999999982,
9.949999999999982,
10.049999999999981
],
"xaxis": "x",
"y": [
10,
15,
17,
15.8,
16.52,
16.088,
16.3472,
16.191679999999998,
16.284992000000003,
16.2290048,
16.262597120000002,
16.242441728,
16.2545349632,
16.24727902208,
16.251632586752002,
16.249020447948798,
16.250587731230723,
16.24964736126157,
16.25021158324306,
16.249873050054166,
16.250076169967503,
16.2499542980195,
16.2500274211883,
16.249983547287023,
16.250009871627785,
16.24999407702333,
16.250003553786005,
16.2499978677284,
16.250001279362962,
16.249999232382226,
16.250000460570668,
16.2499997236576,
16.250000165805442,
16.249999900516734,
16.25000005968996,
16.249999964186024,
16.250000021488386,
16.249999987106968,
16.25000000773582,
16.24999999535851,
16.250000002784898,
16.249999998329063,
16.250000001002565,
16.249999999398465,
16.250000000360924,
16.249999999783448,
16.250000000129933,
16.249999999922046,
16.25000000004678,
16.249999999971937,
16.250000000016843,
16.2499999999899,
16.250000000006064,
16.249999999996366,
16.250000000002185,
16.249999999998693,
16.25000000000079,
16.24999999999953,
16.250000000000288,
16.249999999999833,
16.250000000000107,
16.24999999999994,
16.25000000000004,
16.24999999999998,
16.250000000000018,
16.249999999999996,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004,
16.250000000000007,
16.250000000000004
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "darkorange",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.05,
0.15000000000000002,
0.25,
0.35,
0.44999999999999996,
0.5499999999999999,
0.6499999999999999,
0.7499999999999999,
0.8499999999999999,
0.9499999999999998,
1.0499999999999998,
1.15,
1.25,
1.35,
1.4500000000000002,
1.5500000000000003,
1.6500000000000004,
1.7500000000000004,
1.8500000000000005,
1.9500000000000006,
2.0500000000000007,
2.150000000000001,
2.250000000000001,
2.350000000000001,
2.450000000000001,
2.550000000000001,
2.6500000000000012,
2.7500000000000013,
2.8500000000000014,
2.9500000000000015,
3.0500000000000016,
3.1500000000000017,
3.2500000000000018,
3.350000000000002,
3.450000000000002,
3.550000000000002,
3.650000000000002,
3.750000000000002,
3.8500000000000023,
3.9500000000000024,
4.0500000000000025,
4.150000000000002,
4.250000000000002,
4.350000000000001,
4.450000000000001,
4.550000000000001,
4.65,
4.75,
4.85,
4.949999999999999,
5.049999999999999,
5.149999999999999,
5.249999999999998,
5.349999999999998,
5.4499999999999975,
5.549999999999997,
5.649999999999997,
5.7499999999999964,
5.849999999999996,
5.949999999999996,
6.049999999999995,
6.149999999999995,
6.249999999999995,
6.349999999999994,
6.449999999999994,
6.549999999999994,
6.649999999999993,
6.749999999999993,
6.8499999999999925,
6.949999999999992,
7.049999999999992,
7.1499999999999915,
7.249999999999991,
7.349999999999991,
7.44999999999999,
7.54999999999999,
7.64999999999999,
7.749999999999989,
7.849999999999989,
7.949999999999989,
8.049999999999988,
8.149999999999988,
8.249999999999988,
8.349999999999987,
8.449999999999987,
8.549999999999986,
8.649999999999986,
8.749999999999986,
8.849999999999985,
8.949999999999985,
9.049999999999985,
9.149999999999984,
9.249999999999984,
9.349999999999984,
9.449999999999983,
9.549999999999983,
9.649999999999983,
9.749999999999982,
9.849999999999982,
9.949999999999982,
10.049999999999981
],
"xaxis": "x",
"y": [
50,
42.5,
39.5,
41.3,
40.22,
40.867999999999995,
40.4792,
40.71248,
40.572511999999996,
40.6564928,
40.60610432,
40.636337408,
40.6181975552,
40.62908146688,
40.622551119872,
40.62646932807681,
40.62411840315392,
40.62552895810765,
40.624682625135414,
40.625190424918756,
40.62488574504875,
40.62506855297075,
40.624958868217554,
40.62502467906947,
40.62498519255833,
40.62500888446501,
40.624994669321,
40.625003198407406,
40.624998080955564,
40.625001151426666,
40.624999309144,
40.62500041451361,
40.62499975129184,
40.6250001492249,
40.624999910465064,
40.62500005372097,
40.62499996776742,
40.62500001933955,
40.624999988396276,
40.62500000696224,
40.62499999582266,
40.62500000250641,
40.62499999849616,
40.62500000090231,
40.62499999945862,
40.62500000032484,
40.62499999980511,
40.62500000011694,
40.62499999992984,
40.62500000004211,
40.62499999997475,
40.62500000001516,
40.62499999999091,
40.625000000005464,
40.62499999999673,
40.62500000000197,
40.62499999999883,
40.62500000000072,
40.62499999999958,
40.62500000000026,
40.62499999999985,
40.6250000000001,
40.62499999999995,
40.62500000000004,
40.624999999999986,
40.62500000000002,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014,
40.62500000000001,
40.625000000000014
],
"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": "Changes in concentrations"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
10.049999999999981
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
7.777777777777778,
52.22222222222222
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAABbMAAAFoCAYAAABtzWbpAAAAAXNSR0IArs4c6QAAIABJREFUeF7t3Qu8XWV5J/7n5EYChBBAbsqddgDFMqVIOlXKSMdqKNXSgeJoR4tNM9D5twITJoFSyrSQTDJcpo4waWqk0zLS2DI61KitKIOdEaEolipYBaTYgAgJIZD75f9ZG/bpOTv7nLP3Pmvt/b57f/fn4yfknLWe9bzfZ22T/LLy7qE9e/bsCS8CBAgQIECAAAECBAgQIECAAAECBAgQIJCwwJAwO+HpaI0AAQIECBAgQIAAAQIECBAgQIAAAQIEagLCbDcCAQIECBAgQIAAAQIECBAgQIAAAQIECCQvIMxOfkQaJECAAAECBAgQIECAAAECBAgQIECAAAFhtnuAAAECBAgQIECAAAECBAgQIECAAAECBJIXEGYnPyINEiBAgAABAgQIECBAgAABAgQIECBAgIAw2z1AgAABAgQIECBAgAABAgQIECBAgAABAskLCLOTH5EGCRAgQIAAAQIECBAgQIAAAQIECBAgQECY7R4gQIAAAQIECBAgQIAAAQIECBAgQIAAgeQFhNnJj0iDBAgQIECAAAECBAgQIECAAAECBAgQICDMdg8QIECAAAECBAgQIECAAAECBAgQIECAQPICwuzkR6RBAgQIECBAgAABAgQIECBAgAABAgQIEBBmuwcIECBAgAABAgQIECBAgAABAgQIECBAIHkBYXbyI9IgAQIECBAgQIAAAQIECBAgQIAAAQIECAiz3QMECBAgQIAAAQIECBAgQIAAAQIECBAgkLyAMDv5EWmQAAECBAgQIECAAAECBAgQIECAAAECBITZ7gECBAgQIECAAAECBAgQIECAAAECBAgQSF5AmJ38iDRIgAABAgQIECBAgAABAgQIECBAgAABAsJs9wABAgQIECBAgAABAgQIECBAgAABAgQIJC8gzE5+RBokQIAAAQIECBAgQIAAAQIECBAgQIAAAWG2e4AAAQIECBAgQIAAAQIECBAgQIAAAQIEkhcQZic/Ig0SIECAAAECBAgQIECAAAECBAgQIECAgDDbPUCAAAECBAgQIECAAAECBAgQIECAAAECyQsIs5MfkQYJECBAgAABAgQIECBAgAABAgQIECBAQJjtHiBAgAABAgQIECBAgAABAgQIECBAgACB5AWE2cmPSIMECBAgQIAAAQIECBAgQIAAAQIECBAgIMx2DxAgQIAAAQIECBAgQIAAAQIECBAgQIBA8gLC7ORHpEECBAgQIECAAAECBAgQIECAAAECBAgQEGa7BwgQIECAAAECBAgQIECAAAECBAgQIEAgeQFhdvIj0iABAgQIECBAgAABAgQIECBAgAABAgQICLPdAwQIECBAgAABAgQIECBAgAABAgQIECCQvIAwO/kRaZAAAQIECBAgQIAAAQIECBAgQIAAAQIEhNnuAQIECBAgQIAAAQIECBAgQIAAAQIECBBIXkCYnfyINEiAAAECBAgQIECAAAECBAgQIECAAAECwmz3AAECBAgQIECAAAECBAgQIECAAAECBAgkLyDMTn5EGiRAgAABAgQIECBAgAABAgQIECBAgAABYbZ7gAABAgQIECBAgAABAgQIECBAgAABAgSSFxBmVzSim1auiQcefixuW3ZZzJ0zu6KrKEuAAAECBAgQIECAAAECBAgQIECAAIHBEBBmtznnLVu3x7UrVsdn7rl/1JnnnjMvrlt0ccyaOaP2dWH2P/Hctfa+uGb56rj9lsVxxmkntSnu8ELg8afWxcIrb4xLP/DuOH/+WaWjFDO69Y8+HSuXXxEnHHPkqPrFvbz2i19t+r3SG1GQAAECBAgQIECAAAECBAgQIECAwBgCwuw2bo0HH34sPvjhZdEYXNcD7q/93XeGAz9htjC7jVtrwkOF2RMSOYAAAQIECBAgQIAAAQIECBAgQKDPBYTZLQ64HibOf/uZcfnCC5ue9fl7H4gTj3tD7clWYXaLsA5rSaCXYXZLDTqIAAECBAgQIECAAAECBAgQIECAQMUCwuwWgdvdaqEeZt+wZEFctXRVPPLoE7UrjfVU90TblhTntlqzvqT69h71n5960nHx/IaXmm5V0XhsY59FjfqT6SPJWtk6pNkWFu2uZawxNevpd6+8eNRWHMW1PvaJtcMlPvTe+Xv9hUS7/bRy3YlMN2zcFJcsvjnectpJ8bYz31x76r/+GrmGepD9zA9eGMVQX0e995t/59fj5j/4ZG0LnCMOO7j2rwS+8c3v1rZ4Gfmqf6++nUhjn/Vj67Md6y9mJlpfu/dss3U2zrLFt6vDCBAgQIAAAQIECBAgQIAAAQIE+lBAmN3CUOuh49FHHjpqX+zxTq0HqKeefPzwh0CODC/rT3cXW5SsuO3OeN/5PzO8V3F925KifuM+3EUoO1HNeojYuM9xs6d769f6h3XPjfqwysYAsx7ejgyvx9tneaTNWGF2q2sZy7nZXzAUxh+/87NxyQfeUzut2N98pONYs2x1XmPZNrvuRKb1Xoq/6BgZsDezHu/J7HrvjSF10WthX7xG7rPdbB4T7Znd+GGmjffHePdRK3Nutr5mDi28XR1CgAABAgQIECBAgAABAgQIECDQpwLC7BYG2yyEnui08Z5mXXP3vaOC42a1iiBvydJVoz50r9Wa9WBw6ZIFoz5wsb6OC887ezjcbHadop/GcHGsa//dt5+MWTP32etDA0euabwns29bdlnMnTN7+PDi2FZ9iieZx3syfKyAtllw2qptKwFrq6Zj3Vf1YPjwQw8afoJ8ojC7MWwe7/5sdh+0E2aPZdBsPa26jjerLVu3xZv+2XETveV8nwABAgQIECBAgAABAgQIECBAoM8FhNktDLjsMPvWP/r0qJC6aKHZVg+NT9qOFwyOrDlWMNgsxCxqPvvc+r2eOG8MVOv9Ndt+ZCLCdsPsZj6N12gl9B5rbe2Gro22E4XtrZpOFGYXa64/mT+ZMHusbUpGbuHRTpg9ln2zf1HQ6j1bD8hH/quDie4r3ydAgAABAgQIECBAgAABAgQIEBgsAWF2C/PudJuRZk/LNoaG9drPr984KuBu98nskYHrWAFiY5hdDx8b9+seSTJy+4tmgXsrexpXEWZP9AGbY23VUqxtMqFrq9dtxbQbYXZ9C5KRc5rsk9njGTR+r9Uwu5hLs33Im+1v3sJb1iEECBAgQIAAAQIECBAgQIAAAQJ9KCDMbnGonX4AZLNtNFp5inoyYfZYT86282T2RCwjg/CJPgSyijA7xyezG02rDrPHepp7smF2FU9mN7vfmgXxE92Xvk+AAAECBAgQIECAAAECBAgQINC/AsLsFmdbDwbnv/3M4X2MG08duX90q0+kjnXcZMLsifY0Hrlndqsf4vj5ex+Is+adFrNmzhhe9nhbX4y0qSLMHm/v6nqvn/3i/dFsy5J298weWWMy151MmN0sgK7XG+8earaveDt7pxfXaOXDQIvjJrN9y333f6P2waYj90/vZHufFt/ODiNAgAABAgQIECBAgAABAgQIEMhQQJjdxtDqQWbjvtH1p5S/9nffGd4qpNUwu1k4Wv9ap3tmN9tGY+ST1CO3nGjWe52kCKGL1/nzz9or0Cy+3moQXkWYXQ9Z137xq3t9SGZ9D/DimGtXrI5/WPfc8AdujrVlTKvzaue6I++HZqbtPJk93rYpE20r85bTThr+C5j6NR959IkYeR+0uyd3479UqPc30rpZED7SYaJ/odDKh2228fZ1KAECBAgQIECAAAECBAgQIECAQOYCwuw2BzjWPtONAXc74WjjXsHFPsFvO/PNsWTpqr2C2lb24S6W1NhnEYwvXbIgbly5JkY+mT0yXLxm+epRGiM/jK/Zulv9sL6qwux6oD6y72Y91berqC+u2T7M7cyr1es222N8ZH/thNnFNUcG0cXP6+sYbw/rxnOK69+wZEFctXTVXvdB431Y3z5mPJuR9s0+HLQd18Y5Nf5lTptvVYcTIECAAAECBAgQIECAAAECBAj0mYAwu88GOt5y6k/fFqH2GaedNEArt1QCBAgQIECAAAECBAgQIECAAAECBHIXEGbnPsEx+i+eci2e7h4ZWhdfq2/BMXLv6z4lsCwCBAgQIECAAAECBAgQIECAAAECBPpIQJjdR8McuZTGLRuK7zXbXqNPl29ZBAgQIECAAAECBAgQIECAAAECBAj0mYAwu88GajkECBAgQIAAAQIECBAgQIAAAQIECBDoRwFhdj9O1ZoIECBAgAABAgQIECBAgAABAgQIECDQZwLC7D4bqOUQIECAAAECBAgQIECAAAECBAgQIECgHwWE2f04VWsiQIAAAQIECBAgQIAAAQIECBAgQIBAnwkIs/tsoJZDgAABAgQIECBAgAABAgQIECBAgACBfhQQZvfjVK2JAAECBAgQIECAAAECBAgQIECAAAECfSYgzO6zgVoOAQIECBAgQIAAAQIECBAgQIAAAQIE+lFAmN2PU7UmAgQIECBAgAABAgQIECBAgAABAgQI9JmAMLvPBmo5BAgQIECAAAECBAgQIECAAAECBAgQ6EcBYXY/TtWaCBAgQIAAAQIECBAgQIAAAQIECBAg0GcCwuw+G6jlECBAgAABAgQIECBAgAABAgQIECBAoB8FhNn9OFVrIkCAAAECBAgQIECAAAECBAgQIECAQJ8JCLP7bKCWQ4AAAQIECBAgQIAAAQIECBAgQIAAgX4UEGb341StiQABAgQIECBAgAABAgQIECBAgAABAn0mIMzus4FaDgECBAgQIECAAAECBAgQIECAAAECBPpRQJjdj1O1JgIECBAgQIAAAQIECBAgQIAAAQIECPSZgDC7zwZqOQQIECBAgAABAgQIECBAgAABAgQIEOhHAWF2P07VmggQIECAAAECBAgQIECAAAECBAgQINBnAsLsPhuo5RAgQIAAAQIECBAgQIAAAQIECBAgQKAfBYTZ/ThVayJAgAABAgQIECBAgAABAgQIECBAgECfCQiz+2yglkOAAAECBAgQIECAAAECBAgQIECAAIF+FBBm9+NUrYkAAQIECBAgQIAAAQIECBAgQIAAAQJ9JiDM7rOBWg4BAgQIECBAgAABAgQIECBAgAABAgT6UUCY3Y9TtSYCBAgQIECAAAECBAgQIECAAAECBAj0mYAwu88GajkECBAgQIAAAQIECBAgQIAAAQIECBDoRwFhdj9O1ZoIECBAgAABAgQIECBAgAABAgQIECDQZwLC7D4bqOUQIECAAAECBAgQIECAAAECBAgQIECgHwWE2f04VWsiQIAAAQIECBAgQIAAAQIECBAgQIBAnwkIs/tsoJZDgAABAgQIECBAgAABAgQIECBAgACBfhQQZvfjVK2JAAECBAgQIECAAAECBAgQIECAAAECfSYgzO6zgVoOAQIECBAgQIAAAQIECBAgQIAAAQIE+lFAmN2PU7UmAgQIECBAgAABAgQIECBAgAABAgQI9JmAMLvPBmo5BAgQIECAAAECBAgQIECAAAECBAgQ6EcBYXY/TtWaCBAgQIAAAQIECBAgQIAAAQIECBAg0GcCwuw+G6jlECBAgAABAgQIECBAgAABAgQIECBAoB8FhNn9OFVrIkCAAAECBAgQIECAAAECBAgQIECAQJ8JCLP7bKCWQ4AAAQIECBAgQIAAAQIECBAgQIAAgX4UEGb341StiQABAgQIECBAgAABAgQIECBAgAABAn0mIMzus4FaDgECBAgQIECAAAECBAgQIECAAAECBPpRQJjdj1O1JgIECBAgQIAAAQIECBAgQIAAAQIECPSZgDC7zwZqOQQIECBAgAABAgQIECBAgAABAgQIEOhHAWF2P07VmggQIECAAAECBAgQIECAAAECBAgQINBnAsLsPhuo5RAgQIAAAQIECBAgQIAAAQIECBAgQKAfBYTZ/ThVayJAgAABAgQIECBAgAABAgQIECBAgECfCQiz+2yglkOA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TIAAAQIECBDogUA9iB556Wb7ZRffH2+bkXbqTBRmt/oBkMWe2Y2vMsLsen+PPPpErXzx9Pptyy6rPfl908o1ta8V24o0vsYKs30AZA9ubJckQIAAAQIECBDomoAwu2vULkSAAAECBAgQIECAAAECBAgQIECAAAECnQoIszuVcx4BAgQIECBAgAABAgQIECBAgAABAgQIdE1AmN01ahciQIAAAQIECBAgQIAAAQIECBAgQIAAgU4FhNmdyjmPAAECBAgQIECAAAECBAgQIECAAAECBLomIMzuGrULESBAgAABAgQIECBAgAABAgQIECBAgECnAsLsTuWcR4AAAQIECBAgQIAAAQIECBAgQIAAAQJdExBmd43ahQgQIECAAAECBAgQIECAAAECBAgQIECgUwFhdqdyziNAgAABAgQIECBAgAABAgQIECBAgACBrgkIs7tG7UIECBAgQIAAAQIECBAgacyjYwAAA6NJREFUQIAAAQIECBAg0KmAMLtTOecRIECAAAECBAgQIECAAAECBAgQIECAQNcEhNldo3YhAgQIECBAgAABAgQIECBAgAABAgQIEOhUQJjdqZzzCBAgQIAAAQIECBAgQIAAAQIECBAgQKBrAsLsrlG7EAECBAgQIECAAAECBAgQIECAAAECBAh0KiDM7lTOeQQIECBAgAABAgQIECBAgAABAgQIECDQNQFhdteoXYgAAQIECBAgQIAAAQIECBAgQIAAAQIEOhUQZncq5zwCBAgQIECAAAECBAgQIECAAAECBAgQ6JqAMLtr1C5EgAABAgQIECBAgAABAgQIECBAgAABAp0KCLM7lXMeAQIECBAgQIAAAQIECBAgQIAAAQIECHRNQJjdNWoXIkCAAAECBAgQIECAAAECBAgQIECAAIFOBYTZnco5jwABAgQIECBAgAABAgQIECBAgAABAgS6JiDM7hq1CxEgQIAAAQIECBAgQIAAAQIECBAgQIBApwLC7E7lnEeAAAECBAgQIECAAAECBAgQIECAAAECXRMQZneN2oUIECBAgAABAgQIECBAgAABAgQIECBAoFMBYXancs4jQIAAAQIECBAgQIAAAQIECBAgQIAAga4JCLO7Ru1CBAgQIECAAAECBAgQIECAAAECBAgQINCpgDC7UznnESBAgAABAgQIECBAgAABAgQIECBAgEDXBITZXaN2IQIECBAgQIAAAQIECBAgQIAAAQIECBDoVECY3amc8wgQIECAAAECBAgQIECAAAECBAgQIECgawLC7K5RuxABAgQIECBAgAABAgQIECBAgAABAgQIdCogzO5UznkECBAgQIAAAQIECBAgQIAAAQIECBAg0DUBYXbXqF2IAAECBAgQIECAAAECBAgQIECAAAECBDoVEGZ3Kuc8AgQIECBAgAABAgQIECBAgAABAgQIEOiagDC7a9QuRIAAAQIECBAgQIAAAQIECBAgQIAAAQKdCgizO5VzHgECBAgQIECAAAECBAgQIECAAAECBAh0TUCY3TVqFyJAgAABAgQIECBAgAABAgQIECBAgACBTgWE2Z3KOY8AAQIECBAgQIAAAQIECBAgQIAAAQIEuiYgzO4atQsRIECAAAECBAgQIECAAAECBAgQIECAQKcCwuxO5ZxHgAABAgQIECBAgAABAgQIECBAgAABAl0TEGZ3jdqFCBAgQIAAAQIECBAgQIAAAQIECBAgQKBTgf8fD0ROipbI4HIAAAAASUVORK5CYII=",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = px.line(data_frame=bio.get_history(), x=\"SYSTEM TIME\", y=[\"A\", \"B\"], \n",
" title=\"Changes in concentrations\",\n",
" color_discrete_sequence = ['navy', 'darkorange'],\n",
" labels={\"value\":\"concentration\", \"variable\":\"Chemical\"})\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "ca41b04c-8626-45b1-b83d-79a97dd9a3cd",
"metadata": {},
"source": [
"### Notice the *early overshoots* (the time step is too large early in the simulation!)\n",
"Variable, adaptive time steps are explored at length in the _\"reactions_single_compartment\"_ experiments"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "243badde",
"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
}