{
"cells": [
{
"cell_type": "markdown",
"id": "49bcb5b0-f19d-4b96-a5f1-e0ae30f66d8f",
"metadata": {},
"source": [
"### `A` up-regulates `B` , by being *the limiting reagent* in the reaction: \n",
"### `A + X <-> 2B` (mostly forward), where `X` is plentiful\n",
"1st-order kinetics. \n",
"If [A] is low, [B] remains low, too. Then, if [A] goes high, then so does [B]. However, at that point, A can no longer bring B down to any substantial extent.\n",
"\n",
"**Single-bin reaction**\n",
"\n",
"Based on experiment `reactions_single_compartment/up_regulate_1`"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "78f9eeee-be2c-4c24-a078-3847e02afc10",
"metadata": {},
"outputs": [],
"source": [
"LAST_REVISED = \"May 5, 2025\"\n",
"LIFE123_VERSION = \"1.0.0rc3\" # Library version this experiment is based on"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "7d6a2ab2-9c00-494c-a2e9-783dd50fea49",
"metadata": {},
"outputs": [],
"source": [
"#import set_path # Using MyBinder? Uncomment this before running the next cell!"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "1dc1a2e7",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"#import sys\n",
"#sys.path.append(\"C:/some_path/my_env_or_install\") # CHANGE to the folder containing your venv or libraries installation!\n",
"# NOTE: If any of the imports below can't find a module, uncomment the lines above, or try: import set_path \n",
"\n",
"from experiments.get_notebook_info import get_notebook_basename\n",
"\n",
"from life123 import check_version, ChemData, BioSim1D, GraphicLog"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "cc53849f-351d-49e0-bfa8-22f8d8e22f8e",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-> Output will be LOGGED into the file 'up_regulation_1.log.htm'\n"
]
}
],
"source": [
"# Initialize the HTML logging\n",
"log_file = get_notebook_basename() + \".log.htm\" # Use the notebook base filename for the log file\n",
"\n",
"# Set up the use of some specified graphic (Vue) components\n",
"GraphicLog.config(filename=log_file,\n",
" components=[\"vue_cytoscape_2\"],\n",
" extra_js=\"https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.21.2/cytoscape.umd.js\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "32c31a81-f120-49c5-bc3a-4cf9bd6db2f2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0:\n",
"1 bins and 3 chemical species:\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Species | \n",
" Diff rate | \n",
" Bin 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" A | \n",
" None | \n",
" 5.0 | \n",
"
\n",
" \n",
" | 1 | \n",
" X | \n",
" None | \n",
" 100.0 | \n",
"
\n",
" \n",
" | 2 | \n",
" B | \n",
" None | \n",
" 0.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Species Diff rate Bin 0\n",
"0 A None 5.0\n",
"1 X None 100.0\n",
"2 B None 0.0"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Initialize the system. NOTE: Diffusion not applicable (just 1 bin)\n",
"chem_data = ChemData(names=[\"A\", \"X\", \"B\"], plot_colors=['red', 'darkorange', 'green']) \n",
"\n",
"bio = BioSim1D(n_bins=1, chem_data=chem_data)\n",
"\n",
"bio.set_uniform_concentration(chem_label=\"A\", conc=5.) # Scarce\n",
"bio.set_uniform_concentration(chem_label=\"X\", conc=100.) # Plentiful\n",
"# Initially, no \"B\" is present\n",
"\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "4dd82ee6-bb2a-4f07-a9fe-1cb18b2c4298",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 1 (at temp. 25 C)\n",
"0: A + X <-> 2 B (kF = 8 / kR = 2 / delta_G = -3,436.6 / K = 4) | 1st order in all reactants & products\n",
"Set of chemicals involved in the above reactions: {\"B\" (green), \"X\" (darkorange), \"A\" (red)}\n",
"[GRAPHIC ELEMENT SENT TO LOG FILE `up_regulation_1.log.htm`]\n"
]
}
],
"source": [
"reactions = bio.get_reactions()\n",
"\n",
"# Reaction A + X <-> 2B , with 1st-order kinetics for all species\n",
"reactions.add_reaction(reactants=[\"A\" , \"X\"], products=[(2, \"B\", 1)],\n",
" forward_rate=8., reverse_rate=2.)\n",
"\n",
"reactions.describe_reactions()\n",
"\n",
"# Send the plot of the reaction network to the HTML log file\n",
"reactions.plot_reaction_network(\"vue_cytoscape_2\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "be6fabbe-bded-4ff6-b220-5610e73b401f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "726a29b7-c9d9-4be5-9ad3-51bd1adedd98",
"metadata": {},
"source": [
"### Enable History"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5562fea2-834e-40a9-9b1d-5ea28a0100bf",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"History enabled for bins None and chemicals None (None means 'all')\n"
]
}
],
"source": [
"# Let's enable history for all the chemicals\n",
"bio.enable_history(take_snapshot=True) # Taking a snapshot to include the current initial state in the history"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "b5f6b794-f5d7-4d21-8216-6ab23790b485",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" X | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0 | \n",
" 5.0 | \n",
" 100.0 | \n",
" 0.0 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A X B caption\n",
"0 0.0 5.0 100.0 0.0 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_bin_history(bin_address=0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f40eaa45-0595-4182-808d-d2b60b6b17ca",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "0b46b395-3f68-4dbd-b0c5-d67a0e623726",
"metadata": {
"tags": []
},
"source": [
"## Take the initial system to equilibrium"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "bcf652b8-e0dc-438e-bdbe-02216c1d52a0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"System Time is now: 0.015\n",
"SYSTEM STATE at Time t = 0.015:\n",
"1 bins and 3 chemical species:\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Species | \n",
" Diff rate | \n",
" Bin 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" A | \n",
" None | \n",
" 0.026173 | \n",
"
\n",
" \n",
" | 1 | \n",
" X | \n",
" None | \n",
" 95.026173 | \n",
"
\n",
" \n",
" | 2 | \n",
" B | \n",
" None | \n",
" 9.947653 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Species Diff rate Bin 0\n",
"0 A None 0.026173\n",
"1 X None 95.026173\n",
"2 B None 9.947653"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.react(time_step=0.0005, n_steps=30)\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "2eca7d5b-b284-4bfa-b588-1c2529180ec0",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" X | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0000 | \n",
" 5.000000 | \n",
" 100.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.0005 | \n",
" 3.000000 | \n",
" 98.000000 | \n",
" 4.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.0010 | \n",
" 1.828000 | \n",
" 96.828000 | \n",
" 6.344000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.0015 | \n",
" 1.126338 | \n",
" 96.126338 | \n",
" 7.747325 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.0020 | \n",
" 0.701002 | \n",
" 95.701002 | \n",
" 8.597996 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.0025 | \n",
" 0.441254 | \n",
" 95.441254 | \n",
" 9.117493 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.0030 | \n",
" 0.281916 | \n",
" 95.281916 | \n",
" 9.436168 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.0035 | \n",
" 0.183906 | \n",
" 95.183906 | \n",
" 9.632188 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.0040 | \n",
" 0.123519 | \n",
" 95.123519 | \n",
" 9.752963 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.0045 | \n",
" 0.086274 | \n",
" 95.086274 | \n",
" 9.827453 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.0050 | \n",
" 0.063287 | \n",
" 95.063287 | \n",
" 9.873425 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.0055 | \n",
" 0.049096 | \n",
" 95.049096 | \n",
" 9.901809 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.0060 | \n",
" 0.040331 | \n",
" 95.040331 | \n",
" 9.919337 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.0065 | \n",
" 0.034918 | \n",
" 95.034918 | \n",
" 9.930163 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.0070 | \n",
" 0.031575 | \n",
" 95.031575 | \n",
" 9.936851 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.0075 | \n",
" 0.029509 | \n",
" 95.029509 | \n",
" 9.940982 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.0080 | \n",
" 0.028233 | \n",
" 95.028233 | \n",
" 9.943534 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.0085 | \n",
" 0.027445 | \n",
" 95.027445 | \n",
" 9.945110 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.0090 | \n",
" 0.026958 | \n",
" 95.026958 | \n",
" 9.946084 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.0095 | \n",
" 0.026657 | \n",
" 95.026657 | \n",
" 9.946686 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.0100 | \n",
" 0.026471 | \n",
" 95.026471 | \n",
" 9.947058 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.0105 | \n",
" 0.026356 | \n",
" 95.026356 | \n",
" 9.947287 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.0110 | \n",
" 0.026285 | \n",
" 95.026285 | \n",
" 9.947429 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.0115 | \n",
" 0.026242 | \n",
" 95.026242 | \n",
" 9.947517 | \n",
" | \n",
"
\n",
" \n",
" | 24 | \n",
" 0.0120 | \n",
" 0.026215 | \n",
" 95.026215 | \n",
" 9.947571 | \n",
" | \n",
"
\n",
" \n",
" | 25 | \n",
" 0.0125 | \n",
" 0.026198 | \n",
" 95.026198 | \n",
" 9.947604 | \n",
" | \n",
"
\n",
" \n",
" | 26 | \n",
" 0.0130 | \n",
" 0.026188 | \n",
" 95.026188 | \n",
" 9.947625 | \n",
" | \n",
"
\n",
" \n",
" | 27 | \n",
" 0.0135 | \n",
" 0.026181 | \n",
" 95.026181 | \n",
" 9.947638 | \n",
" | \n",
"
\n",
" \n",
" | 28 | \n",
" 0.0140 | \n",
" 0.026177 | \n",
" 95.026177 | \n",
" 9.947646 | \n",
" | \n",
"
\n",
" \n",
" | 29 | \n",
" 0.0145 | \n",
" 0.026175 | \n",
" 95.026175 | \n",
" 9.947650 | \n",
" | \n",
"
\n",
" \n",
" | 30 | \n",
" 0.0150 | \n",
" 0.026173 | \n",
" 95.026173 | \n",
" 9.947653 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A X B caption\n",
"0 0.0000 5.000000 100.000000 0.000000 \n",
"1 0.0005 3.000000 98.000000 4.000000 \n",
"2 0.0010 1.828000 96.828000 6.344000 \n",
"3 0.0015 1.126338 96.126338 7.747325 \n",
"4 0.0020 0.701002 95.701002 8.597996 \n",
"5 0.0025 0.441254 95.441254 9.117493 \n",
"6 0.0030 0.281916 95.281916 9.436168 \n",
"7 0.0035 0.183906 95.183906 9.632188 \n",
"8 0.0040 0.123519 95.123519 9.752963 \n",
"9 0.0045 0.086274 95.086274 9.827453 \n",
"10 0.0050 0.063287 95.063287 9.873425 \n",
"11 0.0055 0.049096 95.049096 9.901809 \n",
"12 0.0060 0.040331 95.040331 9.919337 \n",
"13 0.0065 0.034918 95.034918 9.930163 \n",
"14 0.0070 0.031575 95.031575 9.936851 \n",
"15 0.0075 0.029509 95.029509 9.940982 \n",
"16 0.0080 0.028233 95.028233 9.943534 \n",
"17 0.0085 0.027445 95.027445 9.945110 \n",
"18 0.0090 0.026958 95.026958 9.946084 \n",
"19 0.0095 0.026657 95.026657 9.946686 \n",
"20 0.0100 0.026471 95.026471 9.947058 \n",
"21 0.0105 0.026356 95.026356 9.947287 \n",
"22 0.0110 0.026285 95.026285 9.947429 \n",
"23 0.0115 0.026242 95.026242 9.947517 \n",
"24 0.0120 0.026215 95.026215 9.947571 \n",
"25 0.0125 0.026198 95.026198 9.947604 \n",
"26 0.0130 0.026188 95.026188 9.947625 \n",
"27 0.0135 0.026181 95.026181 9.947638 \n",
"28 0.0140 0.026177 95.026177 9.947646 \n",
"29 0.0145 0.026175 95.026175 9.947650 \n",
"30 0.0150 0.026173 95.026173 9.947653 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_bin_history(bin_address=0)"
]
},
{
"cell_type": "markdown",
"id": "7dc56592-179d-4e4c-b75a-8eb81dcafe71",
"metadata": {},
"source": [
"A, as the scarse limiting reagent, stops the reaction. \n",
"When A is low, B is also low."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3bb64d53-b679-435f-9f9b-96c11f6ec9c5",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "962acf15-3b50-40e4-9daa-3dcca7d3291a",
"metadata": {},
"source": [
"### Equilibrium"
]
},
{
"cell_type": "markdown",
"id": "809b4afa-fb2f-4ac3-92c9-083fc487c81b",
"metadata": {},
"source": [
"Consistent with the 4/1 ratio of forward/reverse rates (and the 1st order reactions),\n",
"the systems settles in the following equilibrium:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "064d9592-d9f6-4d12-9f54-67f75bdf72ed",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A + X <-> 2 B\n",
"Current concentrations: [A] = 0.02617 ; [X] = 95.03 ; [B] = 9.948\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 3.99963\n",
" Formula used: [B] / ([A][X])\n",
"2. Ratio of forward/reverse reaction rates: 4\n",
"Discrepancy between the two values: 0.009347 %\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": null,
"id": "ce695529-32d7-4fac-aa6d-3770eae6c638",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "cbf6c9c7-8cec-400f-9e70-49ff1a9f485c",
"metadata": {
"tags": []
},
"source": [
"# Plots of changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "ddd30fcb-ebdd-46e3-ba1c-923945a07bf7",
"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": "red",
"dash": "solid",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.0005,
0.001,
0.0015,
0.002,
0.0025,
0.003,
0.0035,
0.004,
0.0045000000000000005,
0.005000000000000001,
0.005500000000000001,
0.006000000000000002,
0.006500000000000002,
0.007000000000000003,
0.007500000000000003,
0.008000000000000004,
0.008500000000000004,
0.009000000000000005,
0.009500000000000005,
0.010000000000000005,
0.010500000000000006,
0.011000000000000006,
0.011500000000000007,
0.012000000000000007,
0.012500000000000008,
0.013000000000000008,
0.013500000000000009,
0.014000000000000009,
0.01450000000000001,
0.01500000000000001
],
"xaxis": "x",
"y": [
5,
3,
1.828,
1.1263376640000002,
0.7010021302186202,
0.44125370052882307,
0.28191596761389115,
0.18390616153420203,
0.12351872192313587,
0.08627354264983586,
0.06328727686095315,
0.049095515982419145,
0.04033138739837671,
0.034918290928958894,
0.031574626645931,
0.029509131438994037,
0.02823316007394518,
0.027444904480387076,
0.026957938077751462,
0.026657098810348785,
0.02647124466112761,
0.026356426293401222,
0.026285492804494114,
0.02624167084464946,
0.02621459808083849,
0.026197872793348027,
0.026187540072133496,
0.026181156615558383,
0.02617721297656817,
0.026174776633602247,
0.026173271483838915
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "X",
"line": {
"color": "darkorange",
"dash": "solid",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "X",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.0005,
0.001,
0.0015,
0.002,
0.0025,
0.003,
0.0035,
0.004,
0.0045000000000000005,
0.005000000000000001,
0.005500000000000001,
0.006000000000000002,
0.006500000000000002,
0.007000000000000003,
0.007500000000000003,
0.008000000000000004,
0.008500000000000004,
0.009000000000000005,
0.009500000000000005,
0.010000000000000005,
0.010500000000000006,
0.011000000000000006,
0.011500000000000007,
0.012000000000000007,
0.012500000000000008,
0.013000000000000008,
0.013500000000000009,
0.014000000000000009,
0.01450000000000001,
0.01500000000000001
],
"xaxis": "x",
"y": [
100,
98,
96.828,
96.126337664,
95.70100213021863,
95.44125370052883,
95.2819159676139,
95.18390616153421,
95.12351872192315,
95.08627354264985,
95.06328727686096,
95.04909551598243,
95.04033138739838,
95.03491829092897,
95.03157462664595,
95.02950913143901,
95.02823316007397,
95.0274449044804,
95.02695793807777,
95.02665709881038,
95.02647124466115,
95.02635642629343,
95.02628549280452,
95.02624167084467,
95.02621459808086,
95.02619787279336,
95.02618754007214,
95.02618115661556,
95.02617721297658,
95.02617477663361,
95.02617327148384
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "green",
"dash": "solid",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.0005,
0.001,
0.0015,
0.002,
0.0025,
0.003,
0.0035,
0.004,
0.0045000000000000005,
0.005000000000000001,
0.005500000000000001,
0.006000000000000002,
0.006500000000000002,
0.007000000000000003,
0.007500000000000003,
0.008000000000000004,
0.008500000000000004,
0.009000000000000005,
0.009500000000000005,
0.010000000000000005,
0.010500000000000006,
0.011000000000000006,
0.011500000000000007,
0.012000000000000007,
0.012500000000000008,
0.013000000000000008,
0.013500000000000009,
0.014000000000000009,
0.01450000000000001,
0.01500000000000001
],
"xaxis": "x",
"y": [
0,
4,
6.343999999999999,
7.7473246719999995,
8.59799573956276,
9.117492598942356,
9.43616806477222,
9.632187676931599,
9.752962556153731,
9.82745291470033,
9.873425446278096,
9.901808968035164,
9.919337225203249,
9.930163418142085,
9.93685074670814,
9.940981737122014,
9.943533679852111,
9.945110191039227,
9.946084123844498,
9.946685802379303,
9.947057510677745,
9.947287147413197,
9.947429014391012,
9.947516658310702,
9.947570803838325,
9.947604254413305,
9.947624919855734,
9.947637686768884,
9.947645574046865,
9.947650446732796,
9.947653457032322
],
"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": "Reaction A + X <-> 2B
Concentration changes with time of all chemicals at bin 0"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
0.01500000000000001
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-5.555555555555555,
105.55555555555556
],
"title": {
"text": "Concentration"
},
"type": "linear"
}
}
},
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bio.plot_history_single_bin(bin_address=0, \n",
" title_prefix=\"Reaction A + X <-> 2B\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e2928a57-c5f2-4049-bf6c-b50aaf4531c9",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "448ec7fa-6529-438b-84ba-47888c2cd080",
"metadata": {
"tags": []
},
"source": [
"# Now, let's suddenly increase [A]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "7245be7a-c9db-45f5-b033-d6c521237a9c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.015:\n",
"1 bins and 3 chemical species:\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Species | \n",
" Diff rate | \n",
" Bin 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" A | \n",
" None | \n",
" 50.000000 | \n",
"
\n",
" \n",
" | 1 | \n",
" X | \n",
" None | \n",
" 95.026173 | \n",
"
\n",
" \n",
" | 2 | \n",
" B | \n",
" None | \n",
" 9.947653 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Species Diff rate Bin 0\n",
"0 A None 50.000000\n",
"1 X None 95.026173\n",
"2 B None 9.947653"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.set_bin_conc(bin_address=0, chem_index=0, conc=50.)\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "007161ef-f4d0-4623-92c5-0fe3d2bda98a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"bio.capture_snapshot(caption=\"[A] suddenly increased externally\")"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "743185b9-56fa-46ad-a504-f4af7361a1a7",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" X | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0000 | \n",
" 5.000000 | \n",
" 100.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.0005 | \n",
" 3.000000 | \n",
" 98.000000 | \n",
" 4.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.0010 | \n",
" 1.828000 | \n",
" 96.828000 | \n",
" 6.344000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.0015 | \n",
" 1.126338 | \n",
" 96.126338 | \n",
" 7.747325 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.0020 | \n",
" 0.701002 | \n",
" 95.701002 | \n",
" 8.597996 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.0025 | \n",
" 0.441254 | \n",
" 95.441254 | \n",
" 9.117493 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.0030 | \n",
" 0.281916 | \n",
" 95.281916 | \n",
" 9.436168 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.0035 | \n",
" 0.183906 | \n",
" 95.183906 | \n",
" 9.632188 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.0040 | \n",
" 0.123519 | \n",
" 95.123519 | \n",
" 9.752963 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.0045 | \n",
" 0.086274 | \n",
" 95.086274 | \n",
" 9.827453 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.0050 | \n",
" 0.063287 | \n",
" 95.063287 | \n",
" 9.873425 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.0055 | \n",
" 0.049096 | \n",
" 95.049096 | \n",
" 9.901809 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.0060 | \n",
" 0.040331 | \n",
" 95.040331 | \n",
" 9.919337 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.0065 | \n",
" 0.034918 | \n",
" 95.034918 | \n",
" 9.930163 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.0070 | \n",
" 0.031575 | \n",
" 95.031575 | \n",
" 9.936851 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.0075 | \n",
" 0.029509 | \n",
" 95.029509 | \n",
" 9.940982 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.0080 | \n",
" 0.028233 | \n",
" 95.028233 | \n",
" 9.943534 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.0085 | \n",
" 0.027445 | \n",
" 95.027445 | \n",
" 9.945110 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.0090 | \n",
" 0.026958 | \n",
" 95.026958 | \n",
" 9.946084 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.0095 | \n",
" 0.026657 | \n",
" 95.026657 | \n",
" 9.946686 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.0100 | \n",
" 0.026471 | \n",
" 95.026471 | \n",
" 9.947058 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.0105 | \n",
" 0.026356 | \n",
" 95.026356 | \n",
" 9.947287 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.0110 | \n",
" 0.026285 | \n",
" 95.026285 | \n",
" 9.947429 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.0115 | \n",
" 0.026242 | \n",
" 95.026242 | \n",
" 9.947517 | \n",
" | \n",
"
\n",
" \n",
" | 24 | \n",
" 0.0120 | \n",
" 0.026215 | \n",
" 95.026215 | \n",
" 9.947571 | \n",
" | \n",
"
\n",
" \n",
" | 25 | \n",
" 0.0125 | \n",
" 0.026198 | \n",
" 95.026198 | \n",
" 9.947604 | \n",
" | \n",
"
\n",
" \n",
" | 26 | \n",
" 0.0130 | \n",
" 0.026188 | \n",
" 95.026188 | \n",
" 9.947625 | \n",
" | \n",
"
\n",
" \n",
" | 27 | \n",
" 0.0135 | \n",
" 0.026181 | \n",
" 95.026181 | \n",
" 9.947638 | \n",
" | \n",
"
\n",
" \n",
" | 28 | \n",
" 0.0140 | \n",
" 0.026177 | \n",
" 95.026177 | \n",
" 9.947646 | \n",
" | \n",
"
\n",
" \n",
" | 29 | \n",
" 0.0145 | \n",
" 0.026175 | \n",
" 95.026175 | \n",
" 9.947650 | \n",
" | \n",
"
\n",
" \n",
" | 30 | \n",
" 0.0150 | \n",
" 0.026173 | \n",
" 95.026173 | \n",
" 9.947653 | \n",
" | \n",
"
\n",
" \n",
" | 31 | \n",
" 0.0150 | \n",
" 50.000000 | \n",
" 95.026173 | \n",
" 9.947653 | \n",
" [A] suddenly increased externally | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A X B \\\n",
"0 0.0000 5.000000 100.000000 0.000000 \n",
"1 0.0005 3.000000 98.000000 4.000000 \n",
"2 0.0010 1.828000 96.828000 6.344000 \n",
"3 0.0015 1.126338 96.126338 7.747325 \n",
"4 0.0020 0.701002 95.701002 8.597996 \n",
"5 0.0025 0.441254 95.441254 9.117493 \n",
"6 0.0030 0.281916 95.281916 9.436168 \n",
"7 0.0035 0.183906 95.183906 9.632188 \n",
"8 0.0040 0.123519 95.123519 9.752963 \n",
"9 0.0045 0.086274 95.086274 9.827453 \n",
"10 0.0050 0.063287 95.063287 9.873425 \n",
"11 0.0055 0.049096 95.049096 9.901809 \n",
"12 0.0060 0.040331 95.040331 9.919337 \n",
"13 0.0065 0.034918 95.034918 9.930163 \n",
"14 0.0070 0.031575 95.031575 9.936851 \n",
"15 0.0075 0.029509 95.029509 9.940982 \n",
"16 0.0080 0.028233 95.028233 9.943534 \n",
"17 0.0085 0.027445 95.027445 9.945110 \n",
"18 0.0090 0.026958 95.026958 9.946084 \n",
"19 0.0095 0.026657 95.026657 9.946686 \n",
"20 0.0100 0.026471 95.026471 9.947058 \n",
"21 0.0105 0.026356 95.026356 9.947287 \n",
"22 0.0110 0.026285 95.026285 9.947429 \n",
"23 0.0115 0.026242 95.026242 9.947517 \n",
"24 0.0120 0.026215 95.026215 9.947571 \n",
"25 0.0125 0.026198 95.026198 9.947604 \n",
"26 0.0130 0.026188 95.026188 9.947625 \n",
"27 0.0135 0.026181 95.026181 9.947638 \n",
"28 0.0140 0.026177 95.026177 9.947646 \n",
"29 0.0145 0.026175 95.026175 9.947650 \n",
"30 0.0150 0.026173 95.026173 9.947653 \n",
"31 0.0150 50.000000 95.026173 9.947653 \n",
"\n",
" caption \n",
"0 \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 \n",
"23 \n",
"24 \n",
"25 \n",
"26 \n",
"27 \n",
"28 \n",
"29 \n",
"30 \n",
"31 [A] suddenly increased externally "
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_bin_history(bin_address=0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "695f6718-9354-4d7c-a19f-568d51bb815e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "24455d58-a0ea-43fa-b6ad-95c42a8b34b2",
"metadata": {},
"source": [
"### Again, take the system to equilibrium"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "c06fd8d8-d550-4e35-a239-7b91bee32be9",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"System Time is now: 0.035\n",
"SYSTEM STATE at Time t = 0.035:\n",
"1 bins and 3 chemical species:\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Species | \n",
" Diff rate | \n",
" Bin 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" A | \n",
" None | \n",
" 0.601080 | \n",
"
\n",
" \n",
" | 1 | \n",
" X | \n",
" None | \n",
" 45.627253 | \n",
"
\n",
" \n",
" | 2 | \n",
" B | \n",
" None | \n",
" 108.745494 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Species Diff rate Bin 0\n",
"0 A None 0.601080\n",
"1 X None 45.627253\n",
"2 B None 108.745494"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.react(time_step=0.0005, n_steps=40)\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "a0974394-afba-44f0-a104-fc8484cd27cd",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" X | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0000 | \n",
" 5.000000 | \n",
" 100.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.0005 | \n",
" 3.000000 | \n",
" 98.000000 | \n",
" 4.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.0010 | \n",
" 1.828000 | \n",
" 96.828000 | \n",
" 6.344000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.0015 | \n",
" 1.126338 | \n",
" 96.126338 | \n",
" 7.747325 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.0020 | \n",
" 0.701002 | \n",
" 95.701002 | \n",
" 8.597996 | \n",
" | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 67 | \n",
" 0.0330 | \n",
" 0.607674 | \n",
" 45.633847 | \n",
" 108.732305 | \n",
" | \n",
"
\n",
" \n",
" | 68 | \n",
" 0.0335 | \n",
" 0.605484 | \n",
" 45.631658 | \n",
" 108.736685 | \n",
" | \n",
"
\n",
" \n",
" | 69 | \n",
" 0.0340 | \n",
" 0.603704 | \n",
" 45.629877 | \n",
" 108.740246 | \n",
" | \n",
"
\n",
" \n",
" | 70 | \n",
" 0.0345 | \n",
" 0.602256 | \n",
" 45.628430 | \n",
" 108.743141 | \n",
" | \n",
"
\n",
" \n",
" | 71 | \n",
" 0.0350 | \n",
" 0.601080 | \n",
" 45.627253 | \n",
" 108.745494 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
72 rows × 5 columns
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A X B caption\n",
"0 0.0000 5.000000 100.000000 0.000000 \n",
"1 0.0005 3.000000 98.000000 4.000000 \n",
"2 0.0010 1.828000 96.828000 6.344000 \n",
"3 0.0015 1.126338 96.126338 7.747325 \n",
"4 0.0020 0.701002 95.701002 8.597996 \n",
".. ... ... ... ... ...\n",
"67 0.0330 0.607674 45.633847 108.732305 \n",
"68 0.0335 0.605484 45.631658 108.736685 \n",
"69 0.0340 0.603704 45.629877 108.740246 \n",
"70 0.0345 0.602256 45.628430 108.743141 \n",
"71 0.0350 0.601080 45.627253 108.745494 \n",
"\n",
"[72 rows x 5 columns]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_bin_history(bin_address=0)"
]
},
{
"cell_type": "markdown",
"id": "158e3787-f2d5-4a01-aaa9-6066e93e584c",
"metadata": {},
"source": [
"A, still the limiting reagent, is again stopping the reaction. \n",
"The (transiently) high value of [A] led to a high value of [B]"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "2745237a",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ratio of equilibrium concentrations (B_eq / (A_eq * X_eq)): 3.9999999999983915\n"
]
},
{
"ename": "AttributeError",
"evalue": "'ChemData' object has no attribute 'get_forward_rate'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[24], line 6\u001b[0m\n\u001b[0;32m 4\u001b[0m B_eq \u001b[38;5;241m=\u001b[39m bio\u001b[38;5;241m.\u001b[39mbin_concentration(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m2\u001b[39m)\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRatio of equilibrium concentrations (B_eq / (A_eq * X_eq)): \u001b[39m\u001b[38;5;124m\"\u001b[39m, (B_eq \u001b[38;5;241m/\u001b[39m (A_eq \u001b[38;5;241m*\u001b[39m X_eq)))\n\u001b[1;32m----> 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRatio of forward/reverse rates: \u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[43mchem_data\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_forward_rate\u001b[49m(\u001b[38;5;241m0\u001b[39m) \u001b[38;5;241m/\u001b[39m chem_data\u001b[38;5;241m.\u001b[39mget_reverse_rate(\u001b[38;5;241m0\u001b[39m))\n",
"\u001b[1;31mAttributeError\u001b[0m: 'ChemData' object has no attribute 'get_forward_rate'"
]
}
],
"source": [
"# Verify the equilibrium\n",
"bio.reaction_dynamics.is_in_equilibrium(rxn_index=0, conc=bio.bin_snapshot(bin_address = 0))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "270a79e8-5d2e-47a4-a1f4-a76685d305e3",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.0005,
0.001,
0.0015,
0.002,
0.0025,
0.003,
0.0035,
0.004,
0.0045000000000000005,
0.005000000000000001,
0.005500000000000001,
0.006000000000000002,
0.006500000000000002,
0.007000000000000003,
0.007500000000000003,
0.008000000000000004,
0.008500000000000004,
0.009000000000000005,
0.009500000000000005,
0.010000000000000005,
0.010500000000000006,
0.011000000000000006,
0.011500000000000007,
0.012000000000000007,
0.012500000000000008,
0.013000000000000008,
0.013500000000000009,
0.014000000000000009,
0.01450000000000001,
0.01500000000000001,
0.01500000000000001,
0.01550000000000001,
0.01600000000000001,
0.01650000000000001,
0.01700000000000001,
0.017500000000000012,
0.018000000000000013,
0.018500000000000013,
0.019000000000000013,
0.019500000000000014,
0.020000000000000014,
0.020500000000000015,
0.021000000000000015,
0.021500000000000016,
0.022000000000000016,
0.022500000000000017,
0.023000000000000017,
0.023500000000000017,
0.024000000000000018,
0.02450000000000002,
0.02500000000000002,
0.02550000000000002,
0.02600000000000002,
0.02650000000000002,
0.02700000000000002,
0.02750000000000002,
0.02800000000000002,
0.028500000000000022,
0.029000000000000022,
0.029500000000000023,
0.030000000000000023,
0.030500000000000024,
0.031000000000000024,
0.03150000000000002,
0.03200000000000002,
0.03250000000000002,
0.03300000000000002,
0.03350000000000002,
0.03400000000000002,
0.034500000000000024,
0.035000000000000024
],
"xaxis": "x",
"y": [
5,
3,
1.828,
1.1263376640000002,
0.7010021302186202,
0.44125370052882307,
0.28191596761389115,
0.18390616153420203,
0.12351872192313587,
0.08627354264983586,
0.06328727686095315,
0.049095515982419145,
0.04033138739837671,
0.034918290928958894,
0.031574626645931,
0.029509131438994037,
0.02823316007394518,
0.027444904480387076,
0.026957938077751462,
0.026657098810348785,
0.02647124466112761,
0.026356426293401222,
0.026285492804494114,
0.02624167084464946,
0.02621459808083849,
0.026197872793348027,
0.026187540072133496,
0.026181156615558383,
0.02617721297656817,
0.026174776633602247,
0.026173271483838915,
50,
31.00471299916026,
21.623387995046514,
15.925331580650214,
12.120736870506565,
9.435792407048389,
7.4713012668016265,
5.997408525637942,
4.871324304129126,
3.9992617383566698,
3.316948682572402,
2.7788558199565143,
2.3518726285178757,
2.011408019338362,
1.738885783882158,
1.520079280276284,
1.343970798859013,
1.2019500324406225,
1.0872382086134893,
0.9944663340905837,
0.9193611478351968,
0.858507921949972,
0.8091691103602572,
0.7691442527238707,
0.7366607965738188,
0.7102883852455001,
0.6888711519440374,
0.6714739618446233,
0.6573395464390022,
0.6458542024212616,
0.6365202639649677,
0.628933957923929,
0.6227675543081823,
0.6177549557172486,
0.6136800478198229,
0.6103672717112957,
0.6076739876581376,
0.605484285395273,
0.6037039640125998,
0.6022564584836971,
0.6010795330423921
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "X",
"line": {
"color": "darkorange",
"dash": "solid",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "X",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.0005,
0.001,
0.0015,
0.002,
0.0025,
0.003,
0.0035,
0.004,
0.0045000000000000005,
0.005000000000000001,
0.005500000000000001,
0.006000000000000002,
0.006500000000000002,
0.007000000000000003,
0.007500000000000003,
0.008000000000000004,
0.008500000000000004,
0.009000000000000005,
0.009500000000000005,
0.010000000000000005,
0.010500000000000006,
0.011000000000000006,
0.011500000000000007,
0.012000000000000007,
0.012500000000000008,
0.013000000000000008,
0.013500000000000009,
0.014000000000000009,
0.01450000000000001,
0.01500000000000001,
0.01500000000000001,
0.01550000000000001,
0.01600000000000001,
0.01650000000000001,
0.01700000000000001,
0.017500000000000012,
0.018000000000000013,
0.018500000000000013,
0.019000000000000013,
0.019500000000000014,
0.020000000000000014,
0.020500000000000015,
0.021000000000000015,
0.021500000000000016,
0.022000000000000016,
0.022500000000000017,
0.023000000000000017,
0.023500000000000017,
0.024000000000000018,
0.02450000000000002,
0.02500000000000002,
0.02550000000000002,
0.02600000000000002,
0.02650000000000002,
0.02700000000000002,
0.02750000000000002,
0.02800000000000002,
0.028500000000000022,
0.029000000000000022,
0.029500000000000023,
0.030000000000000023,
0.030500000000000024,
0.031000000000000024,
0.03150000000000002,
0.03200000000000002,
0.03250000000000002,
0.03300000000000002,
0.03350000000000002,
0.03400000000000002,
0.034500000000000024,
0.035000000000000024
],
"xaxis": "x",
"y": [
100,
98,
96.828,
96.126337664,
95.70100213021863,
95.44125370052883,
95.2819159676139,
95.18390616153421,
95.12351872192315,
95.08627354264985,
95.06328727686096,
95.04909551598243,
95.04033138739838,
95.03491829092897,
95.03157462664595,
95.02950913143901,
95.02823316007397,
95.0274449044804,
95.02695793807777,
95.02665709881038,
95.02647124466115,
95.02635642629343,
95.02628549280452,
95.02624167084467,
95.02621459808086,
95.02619787279336,
95.02618754007214,
95.02618115661556,
95.02617721297658,
95.02617477663361,
95.02617327148384,
95.02617327148384,
76.0308862706441,
66.64956126653036,
60.95150485213406,
57.14691014199041,
54.46196567853224,
52.49747453828547,
51.023581797121786,
49.89749757561297,
49.02543500984051,
48.34312195405624,
47.805029091440346,
47.37804590000171,
47.037581290822196,
46.765059055365995,
46.54625255176012,
46.370144070342846,
46.228123303924455,
46.11341148009732,
46.02063960557442,
45.94553441931903,
45.884681193433806,
45.83534238184409,
45.795317524207704,
45.76283406805765,
45.73646165672933,
45.71504442342787,
45.69764723332845,
45.68351281792283,
45.67202747390509,
45.662693535448796,
45.655107229407754,
45.64894082579201,
45.64392822720108,
45.639853319303654,
45.636540543195125,
45.633847259141966,
45.6316575568791,
45.62987723549642,
45.62842972996752,
45.627252804526215
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "green",
"dash": "solid",
"shape": "linear"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.0005,
0.001,
0.0015,
0.002,
0.0025,
0.003,
0.0035,
0.004,
0.0045000000000000005,
0.005000000000000001,
0.005500000000000001,
0.006000000000000002,
0.006500000000000002,
0.007000000000000003,
0.007500000000000003,
0.008000000000000004,
0.008500000000000004,
0.009000000000000005,
0.009500000000000005,
0.010000000000000005,
0.010500000000000006,
0.011000000000000006,
0.011500000000000007,
0.012000000000000007,
0.012500000000000008,
0.013000000000000008,
0.013500000000000009,
0.014000000000000009,
0.01450000000000001,
0.01500000000000001,
0.01500000000000001,
0.01550000000000001,
0.01600000000000001,
0.01650000000000001,
0.01700000000000001,
0.017500000000000012,
0.018000000000000013,
0.018500000000000013,
0.019000000000000013,
0.019500000000000014,
0.020000000000000014,
0.020500000000000015,
0.021000000000000015,
0.021500000000000016,
0.022000000000000016,
0.022500000000000017,
0.023000000000000017,
0.023500000000000017,
0.024000000000000018,
0.02450000000000002,
0.02500000000000002,
0.02550000000000002,
0.02600000000000002,
0.02650000000000002,
0.02700000000000002,
0.02750000000000002,
0.02800000000000002,
0.028500000000000022,
0.029000000000000022,
0.029500000000000023,
0.030000000000000023,
0.030500000000000024,
0.031000000000000024,
0.03150000000000002,
0.03200000000000002,
0.03250000000000002,
0.03300000000000002,
0.03350000000000002,
0.03400000000000002,
0.034500000000000024,
0.035000000000000024
],
"xaxis": "x",
"y": [
0,
4,
6.343999999999999,
7.7473246719999995,
8.59799573956276,
9.117492598942356,
9.43616806477222,
9.632187676931599,
9.752962556153731,
9.82745291470033,
9.873425446278096,
9.901808968035164,
9.919337225203249,
9.930163418142085,
9.93685074670814,
9.940981737122014,
9.943533679852111,
9.945110191039227,
9.946084123844498,
9.946685802379303,
9.947057510677745,
9.947287147413197,
9.947429014391012,
9.947516658310702,
9.947570803838325,
9.947604254413305,
9.947624919855734,
9.947637686768884,
9.947645574046865,
9.947650446732796,
9.947653457032322,
9.947653457032322,
47.9382274587118,
66.70087746693929,
78.09699029573189,
85.70617971601918,
91.07606864293552,
95.00505092342905,
97.95283640575643,
100.20500484877407,
101.94912998031899,
103.31375609188753,
104.38994181711931,
105.24390819999658,
105.92483741835561,
106.46988188926801,
106.90749489647976,
107.25971185931431,
107.54375339215109,
107.77317703980536,
107.95872078885117,
108.10893116136194,
108.23063761313239,
108.32931523631181,
108.40936495158459,
108.4743318638847,
108.52707668654133,
108.56991115314426,
108.6047055333431,
108.63297436415434,
108.65594505218982,
108.67461292910241,
108.68978554118449,
108.70211834841598,
108.71214354559784,
108.72029336139269,
108.72691891360975,
108.73230548171607,
108.7366848862418,
108.74024552900715,
108.74314054006496,
108.74549439094757
],
"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": "Reaction A + X <-> 2B
Concentration changes with time of all chemicals at bin 0"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
0.035000000000000024
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-6.041416355052642,
114.78691074600022
],
"title": {
"text": "Concentration"
},
"type": "linear"
}
}
},
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bio.plot_history_single_bin(bin_address=0, \n",
" title_prefix=\"Reaction A + X <-> 2B\")"
]
},
{
"cell_type": "markdown",
"id": "bc4c0dd9-609a-40ba-93e7-910dd2550ba6",
"metadata": {},
"source": [
"`A`, still the limiting reagent, is again stopping the reaction. \n",
"The (transiently) high value of [A] led to a high value of [B]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "54755c71-4b29-4135-b5d1-4f2586db0b5d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "f6619731-c5ea-484c-af3e-cea50d685361",
"metadata": {
"tags": []
},
"source": [
"# Let's again suddenly increase [A]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "d3618eba-a673-4ff5-85d0-08f5ea592361",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0.035:\n",
"1 bins and 3 chemical species:\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Species | \n",
" Diff rate | \n",
" Bin 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" A | \n",
" None | \n",
" 30.000000 | \n",
"
\n",
" \n",
" | 1 | \n",
" X | \n",
" None | \n",
" 45.627253 | \n",
"
\n",
" \n",
" | 2 | \n",
" B | \n",
" None | \n",
" 108.745494 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Species Diff rate Bin 0\n",
"0 A None 30.000000\n",
"1 X None 45.627253\n",
"2 B None 108.745494"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.set_bin_conc(bin_address=0, chem_index=0, conc=30.)\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "3ed2e33d-a414-4ca2-813a-f880b5bb229d",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"bio.capture_snapshot(caption=\"[A] again suddenly increased externally\")"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "0593a573-4973-4bc3-8bb1-2e7ae874d720",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" X | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0000 | \n",
" 5.000000 | \n",
" 100.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.0005 | \n",
" 3.000000 | \n",
" 98.000000 | \n",
" 4.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.0010 | \n",
" 1.828000 | \n",
" 96.828000 | \n",
" 6.344000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.0015 | \n",
" 1.126338 | \n",
" 96.126338 | \n",
" 7.747325 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.0020 | \n",
" 0.701002 | \n",
" 95.701002 | \n",
" 8.597996 | \n",
" | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 68 | \n",
" 0.0335 | \n",
" 0.605484 | \n",
" 45.631658 | \n",
" 108.736685 | \n",
" | \n",
"
\n",
" \n",
" | 69 | \n",
" 0.0340 | \n",
" 0.603704 | \n",
" 45.629877 | \n",
" 108.740246 | \n",
" | \n",
"
\n",
" \n",
" | 70 | \n",
" 0.0345 | \n",
" 0.602256 | \n",
" 45.628430 | \n",
" 108.743141 | \n",
" | \n",
"
\n",
" \n",
" | 71 | \n",
" 0.0350 | \n",
" 0.601080 | \n",
" 45.627253 | \n",
" 108.745494 | \n",
" | \n",
"
\n",
" \n",
" | 72 | \n",
" 0.0350 | \n",
" 30.000000 | \n",
" 45.627253 | \n",
" 108.745494 | \n",
" [A] again suddenly increased externally | \n",
"
\n",
" \n",
"
\n",
"
73 rows × 5 columns
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A X B \\\n",
"0 0.0000 5.000000 100.000000 0.000000 \n",
"1 0.0005 3.000000 98.000000 4.000000 \n",
"2 0.0010 1.828000 96.828000 6.344000 \n",
"3 0.0015 1.126338 96.126338 7.747325 \n",
"4 0.0020 0.701002 95.701002 8.597996 \n",
".. ... ... ... ... \n",
"68 0.0335 0.605484 45.631658 108.736685 \n",
"69 0.0340 0.603704 45.629877 108.740246 \n",
"70 0.0345 0.602256 45.628430 108.743141 \n",
"71 0.0350 0.601080 45.627253 108.745494 \n",
"72 0.0350 30.000000 45.627253 108.745494 \n",
"\n",
" caption \n",
"0 \n",
"1 \n",
"2 \n",
"3 \n",
"4 \n",
".. ... \n",
"68 \n",
"69 \n",
"70 \n",
"71 \n",
"72 [A] again suddenly increased externally \n",
"\n",
"[73 rows x 5 columns]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_bin_history(bin_address=0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "98e585fb-2c4c-457b-a2eb-2cb9165f41e1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "0974480d-ca45-46fe-addd-c8d394780fdb",
"metadata": {},
"source": [
"### Yet again, take the system to equilibrium"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "8fe20f9c-05c4-45a4-b485-a51005440200",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"System Time is now: 0.07\n",
"SYSTEM STATE at Time t = 0.07:\n",
"1 bins and 3 chemical species:\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Species | \n",
" Diff rate | \n",
" Bin 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" A | \n",
" None | \n",
" 2.316313 | \n",
"
\n",
" \n",
" | 1 | \n",
" X | \n",
" None | \n",
" 17.943565 | \n",
"
\n",
" \n",
" | 2 | \n",
" B | \n",
" None | \n",
" 164.112869 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Species Diff rate Bin 0\n",
"0 A None 2.316313\n",
"1 X None 17.943565\n",
"2 B None 164.112869"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.react(time_step=0.0005, n_steps=70)\n",
"bio.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "01c24f5b-4c51-4a74-9594-a917cde9b67e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" A | \n",
" X | \n",
" B | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0000 | \n",
" 5.000000 | \n",
" 100.000000 | \n",
" 0.000000 | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.0005 | \n",
" 3.000000 | \n",
" 98.000000 | \n",
" 4.000000 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.0010 | \n",
" 1.828000 | \n",
" 96.828000 | \n",
" 6.344000 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.0015 | \n",
" 1.126338 | \n",
" 96.126338 | \n",
" 7.747325 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.0020 | \n",
" 0.701002 | \n",
" 95.701002 | \n",
" 8.597996 | \n",
" | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 138 | \n",
" 0.0680 | \n",
" 2.326989 | \n",
" 17.954242 | \n",
" 164.091517 | \n",
" | \n",
"
\n",
" \n",
" | 139 | \n",
" 0.0685 | \n",
" 2.323963 | \n",
" 17.951216 | \n",
" 164.097568 | \n",
" | \n",
"
\n",
" \n",
" | 140 | \n",
" 0.0690 | \n",
" 2.321189 | \n",
" 17.948442 | \n",
" 164.103117 | \n",
" | \n",
"
\n",
" \n",
" | 141 | \n",
" 0.0695 | \n",
" 2.318645 | \n",
" 17.945898 | \n",
" 164.108204 | \n",
" | \n",
"
\n",
" \n",
" | 142 | \n",
" 0.0700 | \n",
" 2.316313 | \n",
" 17.943565 | \n",
" 164.112869 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
143 rows × 5 columns
\n",
"
"
],
"text/plain": [
" SYSTEM TIME A X B caption\n",
"0 0.0000 5.000000 100.000000 0.000000 \n",
"1 0.0005 3.000000 98.000000 4.000000 \n",
"2 0.0010 1.828000 96.828000 6.344000 \n",
"3 0.0015 1.126338 96.126338 7.747325 \n",
"4 0.0020 0.701002 95.701002 8.597996 \n",
".. ... ... ... ... ...\n",
"138 0.0680 2.326989 17.954242 164.091517 \n",
"139 0.0685 2.323963 17.951216 164.097568 \n",
"140 0.0690 2.321189 17.948442 164.103117 \n",
"141 0.0695 2.318645 17.945898 164.108204 \n",
"142 0.0700 2.316313 17.943565 164.112869 \n",
"\n",
"[143 rows x 5 columns]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio.get_bin_history(bin_address=0)"
]
},
{
"cell_type": "markdown",
"id": "81a8be4a-f374-494e-b647-184e35707295",
"metadata": {},
"source": [
"A, again the scarse limiting reagent, stops the reaction yet again"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "5d7ded33-8a16-4fdb-b099-a4ea11f7583c",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0: A + X <-> 2 B\n",
"Current concentrations: [A] = 2.316 ; [X] = 17.94 ; [B] = 164.1\n",
"1. Ratio of reactant/product concentrations, adjusted for reaction orders: 3.94854\n",
" Formula used: [B] / ([A][X])\n",
"2. Ratio of forward/reverse reaction rates: 4\n",
"Discrepancy between the two values: 1.286 %\n",
"Reaction IS in equilibrium (within 2% tolerance)\n",
"\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Verify the equilibrium\n",
"bio.reaction_dynamics.is_in_equilibrium(conc=bio.bin_snapshot(bin_address = 0), \n",
" tolerance=2)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "c9953bff",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "A",
"line": {
"color": "red",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "A",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.001,
0.002,
0.003,
0.004,
0.005000000000000001,
0.006000000000000002,
0.007000000000000003,
0.008000000000000004,
0.009000000000000005,
0.010000000000000005,
0.011000000000000006,
0.012000000000000007,
0.013000000000000008,
0.014000000000000009,
0.01500000000000001,
0.01500000000000001,
0.01600000000000001,
0.01700000000000001,
0.018000000000000013,
0.019000000000000013,
0.020000000000000014,
0.021000000000000015,
0.022000000000000016,
0.023000000000000017,
0.024000000000000018,
0.02500000000000002,
0.02600000000000002,
0.02700000000000002,
0.02800000000000002,
0.029000000000000022,
0.030000000000000023,
0.031000000000000024,
0.03200000000000002,
0.03300000000000002,
0.03400000000000002,
0.035000000000000024,
0.035000000000000024,
0.036000000000000025,
0.037000000000000026,
0.03800000000000003,
0.03900000000000003,
0.04000000000000003,
0.04100000000000003,
0.04200000000000003,
0.04300000000000003,
0.04400000000000003,
0.04500000000000003,
0.046000000000000034,
0.047000000000000035,
0.048000000000000036,
0.04900000000000004,
0.05000000000000004,
0.05100000000000004,
0.05200000000000004,
0.05300000000000004,
0.05400000000000004,
0.05500000000000004,
0.05600000000000004,
0.057000000000000044,
0.058000000000000045,
0.059000000000000045,
0.060000000000000046,
0.06100000000000005,
0.06200000000000005,
0.06300000000000004,
0.06400000000000004,
0.06500000000000004,
0.06600000000000004,
0.06700000000000005,
0.06800000000000005,
0.06900000000000005,
0.07000000000000005
],
"xaxis": "x",
"y": [
5,
1.828,
0.7010021302186202,
0.28191596761389115,
0.12351872192313587,
0.06328727686095315,
0.04033138739837671,
0.031574626645931,
0.02823316007394518,
0.026957938077751462,
0.02647124466112761,
0.026285492804494114,
0.02621459808083849,
0.026187540072133496,
0.02617721297656817,
0.026173271483838915,
50,
21.623387995046514,
12.120736870506565,
7.4713012668016265,
4.871324304129126,
3.316948682572402,
2.3518726285178757,
1.738885783882158,
1.343970798859013,
1.0872382086134893,
0.9193611478351968,
0.8091691103602572,
0.7366607965738188,
0.6888711519440374,
0.6573395464390022,
0.6365202639649677,
0.6227675543081823,
0.6136800478198229,
0.6076739876581376,
0.6037039640125998,
0.6010795330423921,
30,
20.78590713353102,
15.620951544522198,
12.321668962573067,
10.049916181784992,
8.407693929463546,
7.179695039949368,
6.238536049026302,
5.503733429098575,
4.921808117315241,
4.455781425530507,
4.0792490236048256,
3.7728540703729303,
3.522093325113542,
3.3159005866267086,
3.1457023187471025,
3.0047703250561706,
2.887767075012364,
2.7904193729304776,
2.709279596876919,
2.641547986288441,
2.5849383266855717,
2.5375750363217384,
2.497913347105048,
2.464676724435737,
2.4368073314881324,
2.413426487445248,
2.3938028695914815,
2.3773267774749263,
2.3634891865109093,
2.351864616889117,
2.342097064151129,
2.333888402655969,
2.3269887978016692,
2.321188758142156,
2.3163125320956275
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "X",
"line": {
"color": "darkorange",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "X",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.001,
0.002,
0.003,
0.004,
0.005000000000000001,
0.006000000000000002,
0.007000000000000003,
0.008000000000000004,
0.009000000000000005,
0.010000000000000005,
0.011000000000000006,
0.012000000000000007,
0.013000000000000008,
0.014000000000000009,
0.01500000000000001,
0.01500000000000001,
0.01600000000000001,
0.01700000000000001,
0.018000000000000013,
0.019000000000000013,
0.020000000000000014,
0.021000000000000015,
0.022000000000000016,
0.023000000000000017,
0.024000000000000018,
0.02500000000000002,
0.02600000000000002,
0.02700000000000002,
0.02800000000000002,
0.029000000000000022,
0.030000000000000023,
0.031000000000000024,
0.03200000000000002,
0.03300000000000002,
0.03400000000000002,
0.035000000000000024,
0.035000000000000024,
0.036000000000000025,
0.037000000000000026,
0.03800000000000003,
0.03900000000000003,
0.04000000000000003,
0.04100000000000003,
0.04200000000000003,
0.04300000000000003,
0.04400000000000003,
0.04500000000000003,
0.046000000000000034,
0.047000000000000035,
0.048000000000000036,
0.04900000000000004,
0.05000000000000004,
0.05100000000000004,
0.05200000000000004,
0.05300000000000004,
0.05400000000000004,
0.05500000000000004,
0.05600000000000004,
0.057000000000000044,
0.058000000000000045,
0.059000000000000045,
0.060000000000000046,
0.06100000000000005,
0.06200000000000005,
0.06300000000000004,
0.06400000000000004,
0.06500000000000004,
0.06600000000000004,
0.06700000000000005,
0.06800000000000005,
0.06900000000000005,
0.07000000000000005
],
"xaxis": "x",
"y": [
100,
96.828,
95.70100213021863,
95.2819159676139,
95.12351872192315,
95.06328727686096,
95.04033138739838,
95.03157462664595,
95.02823316007397,
95.02695793807777,
95.02647124466115,
95.02628549280452,
95.02621459808086,
95.02618754007214,
95.02617721297658,
95.02617327148384,
95.02617327148384,
66.64956126653036,
57.14691014199041,
52.49747453828547,
49.89749757561297,
48.34312195405624,
47.37804590000171,
46.765059055365995,
46.370144070342846,
46.11341148009732,
45.94553441931903,
45.83534238184409,
45.76283406805765,
45.71504442342787,
45.68351281792283,
45.662693535448796,
45.64894082579201,
45.639853319303654,
45.633847259141966,
45.62987723549642,
45.627252804526215,
45.627252804526215,
36.413159938057234,
31.248204349048414,
27.948921767099282,
25.677168986311205,
24.03494673398976,
22.806947844475584,
21.865788853552516,
21.13098623362479,
20.549060921841455,
20.083034230056725,
19.706501828131046,
19.40010687489915,
19.149346129639763,
18.94315339115293,
18.772955123273324,
18.632023129582393,
18.51501987953859,
18.4176721774567,
18.336532401403144,
18.268800790814666,
18.212191131211796,
18.164827840847963,
18.125166151631273,
18.091929528961963,
18.06406013601436,
18.040679291971475,
18.02105567411771,
18.004579582001156,
17.99074199103714,
17.979117421415346,
17.969349868677355,
17.961141207182195,
17.954241602327894,
17.948441562668382,
17.94356533662185
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=B
SYSTEM TIME=%{x}
concentration=%{y}",
"legendgroup": "B",
"line": {
"color": "green",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "B",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.001,
0.002,
0.003,
0.004,
0.005000000000000001,
0.006000000000000002,
0.007000000000000003,
0.008000000000000004,
0.009000000000000005,
0.010000000000000005,
0.011000000000000006,
0.012000000000000007,
0.013000000000000008,
0.014000000000000009,
0.01500000000000001,
0.01500000000000001,
0.01600000000000001,
0.01700000000000001,
0.018000000000000013,
0.019000000000000013,
0.020000000000000014,
0.021000000000000015,
0.022000000000000016,
0.023000000000000017,
0.024000000000000018,
0.02500000000000002,
0.02600000000000002,
0.02700000000000002,
0.02800000000000002,
0.029000000000000022,
0.030000000000000023,
0.031000000000000024,
0.03200000000000002,
0.03300000000000002,
0.03400000000000002,
0.035000000000000024,
0.035000000000000024,
0.036000000000000025,
0.037000000000000026,
0.03800000000000003,
0.03900000000000003,
0.04000000000000003,
0.04100000000000003,
0.04200000000000003,
0.04300000000000003,
0.04400000000000003,
0.04500000000000003,
0.046000000000000034,
0.047000000000000035,
0.048000000000000036,
0.04900000000000004,
0.05000000000000004,
0.05100000000000004,
0.05200000000000004,
0.05300000000000004,
0.05400000000000004,
0.05500000000000004,
0.05600000000000004,
0.057000000000000044,
0.058000000000000045,
0.059000000000000045,
0.060000000000000046,
0.06100000000000005,
0.06200000000000005,
0.06300000000000004,
0.06400000000000004,
0.06500000000000004,
0.06600000000000004,
0.06700000000000005,
0.06800000000000005,
0.06900000000000005,
0.07000000000000005
],
"xaxis": "x",
"y": [
0,
6.343999999999999,
8.59799573956276,
9.43616806477222,
9.752962556153731,
9.873425446278096,
9.919337225203249,
9.93685074670814,
9.943533679852111,
9.946084123844498,
9.947057510677745,
9.947429014391012,
9.947570803838325,
9.947624919855734,
9.947645574046865,
9.947653457032322,
9.947653457032322,
66.70087746693929,
85.70617971601918,
95.00505092342905,
100.20500484877407,
103.31375609188753,
105.24390819999658,
106.46988188926801,
107.25971185931431,
107.77317703980536,
108.10893116136194,
108.32931523631181,
108.4743318638847,
108.56991115314426,
108.63297436415434,
108.67461292910241,
108.70211834841598,
108.72029336139269,
108.73230548171607,
108.74024552900715,
108.74549439094757,
108.74549439094757,
127.17368012388553,
137.50359130190319,
144.10215646580144,
148.6456620273776,
151.9301065320205,
154.38610431104883,
156.26842229289497,
157.7380275327504,
158.90187815631708,
159.83393153988655,
160.5869963437379,
161.19978625020167,
161.70130774072044,
162.1136932176941,
162.45408975345333,
162.7359537408352,
162.96996024092283,
163.1646556450866,
163.32693519719373,
163.4623984183707,
163.57561773757644,
163.6703443183041,
163.74966769673748,
163.8161409420761,
163.87187972797128,
163.91864141605706,
163.9578886517646,
163.9908408359977,
164.01851601792572,
164.04176515716932,
164.0613002626453,
164.0777175856356,
164.0915167953442,
164.10311687466324,
164.11286932675628
],
"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 (reaction A + X <-> 2B)"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
0.07000000000000005
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-9.117381629264237,
173.2302509560205
],
"title": {
"text": "concentration"
},
"type": "linear"
}
}
},
"image/png": "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QIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQLKAXhATA+AQIECBAgQIAAAaVABggQIECAAAECBAiECygF4QEwPgECBAgQIECAAAGlQAYIECBAgAABAgQIhAsoBeEBMD4BAgQIECBAgAABpUAGCBAgQIAAAQIECIQL/ADHCvvyljBd5AAAAABJRU5ErkJggg==",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bio.plot_history_single_bin(bin_address=0, \n",
" title_prefix=\"Reaction A + X <-> 2B\")"
]
},
{
"cell_type": "markdown",
"id": "e86e8319-2d19-4a59-91f1-9e45cf2dd333",
"metadata": {},
"source": [
"`A`, again the scarse limiting reagent, stops the reaction yet again. \n",
"And, again, the (transiently) high value of [A] up-regulated [B] \n",
"\n",
"Note: `A` can up-regulate `B`, but it cannot bring it down. \n",
"`X` will soon need to be replenished, if `A` is to continue being the limiting reagent."
]
},
{
"cell_type": "markdown",
"id": "837435d0-d2ea-4b98-85c4-6a6d44371ae8",
"metadata": {},
"source": [
"# For additional exploration, see the experiment `reactions_single_compartment/up_regulate_1`"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "116d06a6",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"jupytext": {
"formats": "ipynb,py:percent"
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}