{ "cells": [ { "cell_type": "markdown", "id": "49bcb5b0-f19d-4b96-a5f1-e0ae30f66d8f", "metadata": {}, "source": [ "## Validation of the independence of the automatically-picked variable time steps from the presence of extraneous chemicals not participating in the dynamical changes.\n", "\n", "Just as in experiment `variable_steps_1` : 2 coupled reactions: `2 S <-> U` and `S <-> X` \n", "\n", "However, here:\n", "\n", "* in part 1 there are a few extra chemicals in the system that don't participate in any of the reactions \n", "* in part 2 there's a hypothetical enzyme (with concentration 1) that catalyzes the first reaction \n", "\n", "In either case, the extra chemicals and the enzyme don't vary in concentration - and thus **get automatically excluded from considerations about the adaptive variable step sizes** , which remain exactly as they were in experiment `variable_steps_1`\n", "\n", "LAST REVISED: Dec. 3, 2023" ] }, { "cell_type": "code", "execution_count": 1, "id": "d545a787-f84c-4d63-97a1-36a29f6c5dd6", "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": "386fc233", "metadata": { "tags": [] }, "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.modules.reactions.reaction_dynamics import ReactionDynamics\n", "\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": null, "id": "1d2a65ac-1ed4-44b2-bb4b-6815fdaca946", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "d6d3ca49-589d-49b7-8424-37c7b01bcacf", "metadata": {}, "source": [ "# PART 1 : \n", "#### Notice the \"EXTRA\" group of chemicals, that don't participate in any of the reactions " ] }, { "cell_type": "code", "execution_count": 3, "id": "23c15e66-52e4-495b-aa3d-ecddd8d16942", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of reactions: 2 (at temp. 25 C)\n", "0: 2 S <-> U (kF = 8 / kR = 2 / delta_G = -3,436.6 / K = 4) | 1st order in all reactants & products\n", "1: S <-> X (kF = 6 / kR = 3 / delta_G = -1,718.3 / K = 2) | 1st order in all reactants & products\n", "Set of chemicals involved in the above reactions: {'X', 'U', 'S'}\n" ] } ], "source": [ "# Initialize the system. \n", "chem_data = chem(names=[\"EXTRA 1\", \"U\", \"EXTRA 2\", \"X\", \"S\", \"EXTRA 3\"])\n", "\n", "# Reaction 2 S <-> U , with 1st-order kinetics for all species (mostly forward)\n", "chem_data.add_reaction(reactants=[(2, \"S\", 1)], products=\"U\",\n", " forward_rate=8., reverse_rate=2.)\n", "\n", "# Reaction S <-> X , with 1st-order kinetics for all species (mostly forward)\n", "chem_data.add_reaction(reactants=\"S\", products=\"X\",\n", " forward_rate=6., reverse_rate=3.)\n", "\n", "chem_data.describe_reactions()" ] }, { "cell_type": "markdown", "id": "d1d0eabb-b5b1-4e15-846d-5e483a5a24a7", "metadata": {}, "source": [ "### Set the initial concentrations of all the chemicals" ] }, { "cell_type": "code", "execution_count": 4, "id": "e80645d6-eb5b-4c78-8b46-ae126d2cb2cf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0:\n", "6 species:\n", " Species 0 (EXTRA 1). Conc: 0.0\n", " Species 1 (U). Conc: 50.0\n", " Species 2 (EXTRA 2). Conc: 55.0\n", " Species 3 (X). Conc: 100.0\n", " Species 4 (S). Conc: 0.0\n", " Species 5 (EXTRA 3). Conc: 100.0\n", "Set of chemicals involved in reactions: {'X', 'U', 'S'}\n" ] } ], "source": [ "dynamics = ReactionDynamics(chem_data=chem_data)\n", "dynamics.set_conc(conc={\"U\": 50., \"X\": 100., \"S\": 0., \"EXTRA 1\": 0., \"EXTRA 2\": 55., \"EXTRA 3\": 100. })\n", "dynamics.describe_state()" ] }, { "cell_type": "code", "execution_count": 5, "id": "bcf652b8-e0dc-438e-bdbe-02216c1d52a0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "(STEP 0) ANALYSIS: Examining Conc. Changes from System Time 0 due to tentative step of 0.01:\n", " Baseline: [ 0. 50. 55. 100. 0. 100.]\n", " Deltas: [ 0. -1. 0. -3. 5. 0.]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 3.888888888888889}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | abort 1.44 | (VALUE 3.8889)\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'ABORT' (with step size factor of 0.5)\n", "* INFO: the tentative time step (0.01) leads to a least one norm value > its ABORT threshold:\n", " -> will backtrack, and re-do step with a SMALLER delta time, multiplied by 0.5 (set to 0.005) [Step started at t=0, and will rewind there]\n", "\n", "(STEP 0) ANALYSIS: Examining Conc. Changes from System Time 0 due to tentative step of 0.005:\n", " Baseline: [ 0. 50. 55. 100. 0. 100.]\n", " Deltas: [ 0. -0.5 0. -1.5 2.5 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.9722222222222222}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.97222) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.0025) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0, and will continue to 0.005]\n", "\n", "(STEP 1) ANALYSIS: Examining Conc. Changes from System Time 0.005 due to tentative step of 0.0025:\n", " Baseline: [ 0. 49.5 55. 98.5 2.5 100. ]\n", " Deltas: [ 0. -0.1975 0. -0.70125 1.09625 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.19250243055555555}\n", " Thresholds: \n", " norm_A : (VALUE 0.1925) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.0025) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.005) at the next round, because all norms are low\n", " [The current step started at System Time: 0.005, and will continue to 0.0075]\n", "\n", "(STEP 2) ANALYSIS: Examining Conc. Changes from System Time 0.0075 due to tentative step of 0.005:\n", " Baseline: [ 0. 49.3025 55. 97.79875 3.59625 100. ]\n", " Deltas: [ 0. -0.349175 0. -1.35909375 2.05744375 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.6891259762586809}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.68913) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.0025) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.0075, and will continue to 0.0125]\n", "\n", "(STEP 3) ANALYSIS: Examining Conc. Changes from System Time 0.0125 due to tentative step of 0.0025:\n", " Baseline: [ 0. 48.953325 55. 96.43965625 5.65369375\n", " 100. ]\n", " Deltas: [ 0. -0.13169275 0. -0.63849202 0.90187752 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.1375997875121511}\n", " Thresholds: \n", " norm_A : (VALUE 0.1376) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.0025) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.005) at the next round, because all norms are low\n", " [The current step started at System Time: 0.0125, and will continue to 0.015]\n", "\n", "(STEP 4) ANALYSIS: Examining Conc. Changes from System Time 0.015 due to tentative step of 0.005:\n", " Baseline: [ 0. 48.82163225 55. 95.80116423 6.55557127\n", " 100. ]\n", " Deltas: [ 0. -0.22599347 0. -1.24035033 1.69233727 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.494838601385062}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.49484) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.015, and will continue to 0.02]\n", "\n", "(STEP 5) ANALYSIS: Examining Conc. Changes from System Time 0.02 due to tentative step of 0.005:\n", " Baseline: [ 0. 48.59563878 55. 94.56081391 8.24790853\n", " 100. ]\n", " Deltas: [ 0. -0.15604005 0. -1.17097495 1.48305505 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.3994425670227834}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.39944) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.02, and will continue to 0.025]\n", "\n", "(STEP 6) ANALYSIS: Examining Conc. Changes from System Time 0.025 due to tentative step of 0.005:\n", " Baseline: [ 0. 48.43959873 55. 93.38983896 9.73096358\n", " 100. ]\n", " Deltas: [ 0. -0.09515744 0. -1.10891868 1.29923357 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.32519593644806855}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.3252) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.025, and will continue to 0.03]\n", "\n", "(STEP 7) ANALYSIS: Examining Conc. Changes from System Time 0.03 due to tentative step of 0.005:\n", " Baseline: [ 0. 48.34444129 55. 92.28092028 11.03019715\n", " 100. ]\n", " Deltas: [ 0. -0.04223653 0. -1.05330789 1.13778094 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.2673096568217399}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.26731) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.03, and will continue to 0.035]\n", "\n", "(STEP 8) ANALYSIS: Examining Conc. Changes from System Time 0.035 due to tentative step of 0.005:\n", " Baseline: [ 0. 48.30220476 55. 91.22761239 12.16797809\n", " 100. ]\n", " Deltas: [ 0. 0.00369708 0. -1.00337484 0.99598069 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.22208358683873192}\n", " Thresholds: \n", " norm_A : (VALUE 0.22208) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.01) at the next round, because all norms are low\n", " [The current step started at System Time: 0.035, and will continue to 0.04]\n", "\n", "(STEP 9) ANALYSIS: Examining Conc. Changes from System Time 0.04 due to tentative step of 0.01:\n", " Baseline: [ 0. 48.30590184 55. 90.22423755 13.16395878\n", " 100. ]\n", " Deltas: [ 0. 0.08699867 0. -1.9168896 1.74289227 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.7466342181101149}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.74663) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.005) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.04, and will continue to 0.05]\n", "\n", "(STEP 10) ANALYSIS: Examining Conc. Changes from System Time 0.05 due to tentative step of 0.005:\n", " Baseline: [ 0. 48.3929005 55. 88.30734795 14.90685105\n", " 100. ]\n", " Deltas: [ 0. 0.11234504 0. -0.87740469 0.65271461 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.13427741784149083}\n", " Thresholds: \n", " norm_A : (VALUE 0.13428) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.01) at the next round, because all norms are low\n", " [The current step started at System Time: 0.05, and will continue to 0.055]\n", "\n", "(STEP 11) ANALYSIS: Examining Conc. Changes from System Time 0.055 due to tentative step of 0.01:\n", " Baseline: [ 0. 48.50524554 55. 87.42994326 15.55956566\n", " 100. ]\n", " Deltas: [ 0. 0.27466034 0. -1.68932436 1.14000367 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.4698737184351335}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.46987) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.055, and will continue to 0.065]\n", "\n", "(STEP 12) ANALYSIS: Examining Conc. Changes from System Time 0.065 due to tentative step of 0.01:\n", " Baseline: [ 0. 48.77990588 55. 85.7406189 16.69956934\n", " 100. ]\n", " Deltas: [ 0. 0.36036743 0. -1.57024441 0.84950955 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.3685776282283221}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.36858) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.065, and will continue to 0.075]\n", "\n", "(STEP 13) ANALYSIS: Examining Conc. Changes from System Time 0.075 due to tentative step of 0.01:\n", " Baseline: [ 0. 49.14027331 55. 84.17037449 17.54907888\n", " 100. ]\n", " Deltas: [ 0. 0.42112084 0. -1.4721665 0.62992481 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.3046024715786003}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.3046) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.075, and will continue to 0.085]\n", "\n", "(STEP 14) ANALYSIS: Examining Conc. Changes from System Time 0.085 due to tentative step of 0.01:\n", " Baseline: [ 0. 49.56139416 55. 82.69820799 18.1790037\n", " 100. ]\n", " Deltas: [ 0. 0.46309241 0. -1.39020602 0.46402119 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.2624936691312418}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.26249) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.085, and will continue to 0.095]\n", "\n", "(STEP 15) ANALYSIS: Examining Conc. Changes from System Time 0.095 due to tentative step of 0.01:\n", " Baseline: [ 0. 50.02448657 55. 81.30800197 18.64302489\n", " 100. ]\n", " Deltas: [ 0. 0.49095226 0. -1.32065857 0.33875405 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.23332527475445466}\n", " Thresholds: \n", " norm_A : (VALUE 0.23333) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n", " [The current step started at System Time: 0.095, and will continue to 0.105]\n", "\n", "(STEP 16) ANALYSIS: Examining Conc. Changes from System Time 0.105 due to tentative step of 0.02:\n", " Baseline: [ 0. 50.51543883 55. 79.98734341 18.98177894\n", " 100. ]\n", " Deltas: [ 0. 1.01646708 0. -2.52142713 0.48849298 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.847713943482735}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.84771) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.01) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.105, and will continue to 0.125]\n", "\n", "(STEP 17) ANALYSIS: Examining Conc. Changes from System Time 0.125 due to tentative step of 0.01:\n", " Baseline: [ 0. 51.5319059 55. 77.46591628 19.47027191\n", " 100. ]\n", " Deltas: [ 0. 0.52698364 0. -1.15576117 0.1017939 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.18042862670354223}\n", " Thresholds: \n", " norm_A : (VALUE 0.18043) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n", " [The current step started at System Time: 0.125, and will continue to 0.135]\n", "\n", "(STEP 18) ANALYSIS: Examining Conc. Changes from System Time 0.135 due to tentative step of 0.02:\n", " Baseline: [ 0. 52.05888954 55. 76.3101551 19.57206582\n", " 100. ]\n", " Deltas: [ 0. 1.04917495 0. -2.22996141 0.13161151 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.676757504987934}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.67676) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.01) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.135, and will continue to 0.155]\n", "\n", "(STEP 19) ANALYSIS: Examining Conc. Changes from System Time 0.155 due to tentative step of 0.01:\n", " Baseline: [ 0. 53.10806449 55. 74.08019369 19.70367733\n", " 100. ]\n", " Deltas: [ 0. 0.5141329 0. -1.04018517 0.01191938 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.149606655239135}\n", " Thresholds: \n", " norm_A : (VALUE 0.14961) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n", " [The current step started at System Time: 0.155, and will continue to 0.165]\n", "\n", "(STEP 20) ANALYSIS: Examining Conc. Changes from System Time 0.165 due to tentative step of 0.02:\n", " Baseline: [ 0. 53.62219739 55. 73.04000852 19.71559671\n", " 100. ]\n", " Deltas: [ 0. 1.00960758 0. -2.01652891 -0.00268625 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.5650781675774635}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.56508) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.165, and will continue to 0.185]\n", "\n", "(STEP 21) ANALYSIS: Examining Conc. Changes from System Time 0.185 due to tentative step of 0.02:\n", " Baseline: [ 0. 54.63180496 55. 71.02347962 19.71291046\n", " 100. ]\n", " Deltas: [ 0. 0.96879347 0. -1.89585952 -0.04172743 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.5038428113796767}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.50384) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.185, and will continue to 0.205]\n", "\n", "(STEP 22) ANALYSIS: Examining Conc. Changes from System Time 0.205 due to tentative step of 0.02:\n", " Baseline: [ 0. 55.60059844 55. 69.12762009 19.67118303\n", " 100. ]\n", " Deltas: [ 0. 0.92336535 0. -1.78711524 -0.05961545 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.4499931616991674}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.44999) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.205, and will continue to 0.225]\n", "\n", "(STEP 23) ANALYSIS: Examining Conc. Changes from System Time 0.225 due to tentative step of 0.02:\n", " Baseline: [ 0. 56.52396378 55. 67.34050485 19.61156758\n", " 100. ]\n", " Deltas: [ 0. 0.87689226 0. -1.68704218 -0.06674234 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.4021673223106198}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.40217) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.225, and will continue to 0.245]\n", "\n", "(STEP 24) ANALYSIS: Examining Conc. Changes from System Time 0.245 due to tentative step of 0.02:\n", " Baseline: [ 0. 57.40085605 55. 65.65346267 19.54482524\n", " 100. ]\n", " Deltas: [ 0. 0.8311378 0. -1.59382873 -0.06844686 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.3595294483481833}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.35953) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.245, and will continue to 0.265]\n", "\n", "(STEP 25) ANALYSIS: Examining Conc. Changes from System Time 0.265 due to tentative step of 0.02:\n", " Baseline: [ 0. 58.23199384 55. 64.05963394 19.47637838\n", " 100. ]\n", " Deltas: [ 0. 0.78694079 0. -1.50641263 -0.06746894 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.32145631944741265}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.32146) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.265, and will continue to 0.285]\n", "\n", "(STEP 26) ANALYSIS: Examining Conc. Changes from System Time 0.285 due to tentative step of 0.02:\n", " Baseline: [ 0. 59.01893463 55. 62.55322131 19.40890943\n", " 100. ]\n", " Deltas: [ 0. 0.74466812 0. -1.42412415 -0.0652121 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.2874347575511702}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.28743) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.285, and will continue to 0.305]\n", "\n", "(STEP 27) ANALYSIS: Examining Conc. Changes from System Time 0.305 due to tentative step of 0.02:\n", " Baseline: [ 0. 59.76360275 55. 61.12909716 19.34369733\n", " 100. ]\n", " Deltas: [ 0. 0.70444746 0. -1.34650215 -0.06239278 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.25702301402562294}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.25702) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.305, and will continue to 0.325]\n", "\n", "(STEP 28) ANALYSIS: Examining Conc. Changes from System Time 0.325 due to tentative step of 0.02:\n", " Baseline: [ 0. 60.46805022 55. 59.78259501 19.28130456\n", " 100. ]\n", " Deltas: [ 0. 0.66628672 0. -1.27319915 -0.05937429 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.22983326503644058}\n", " Thresholds: \n", " norm_A : (VALUE 0.22983) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.04) at the next round, because all norms are low\n", " [The current step started at System Time: 0.325, and will continue to 0.345]\n", "\n", "(STEP 29) ANALYSIS: Examining Conc. Changes from System Time 0.345 due to tentative step of 0.04:\n", " Baseline: [ 0. 61.13433694 55. 58.50939586 19.22193027\n", " 100. ]\n", " Deltas: [ 0. 1.26027073 0. -2.40786424 -0.11267722 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.8220876292375117}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.82209) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.02) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.345, and will continue to 0.385]\n", "\n", "(STEP 30) ANALYSIS: Examining Conc. Changes from System Time 0.385 due to tentative step of 0.02:\n", " Baseline: [ 0. 62.39460767 55. 56.10153162 19.10925305\n", " 100. ]\n", " Deltas: [ 0. 0.56169618 0. -1.07298153 -0.05041083 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.16325924649115092}\n", " Thresholds: \n", " norm_A : (VALUE 0.16326) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.04) at the next round, because all norms are low\n", " [The current step started at System Time: 0.385, and will continue to 0.405]\n", "\n", "(STEP 31) ANALYSIS: Examining Conc. Changes from System Time 0.405 due to tentative step of 0.04:\n", " Baseline: [ 0. 62.95630385 55. 55.02855009 19.05884222\n", " 100. ]\n", " Deltas: [ 0. 1.0623252 0. -2.02930388 -0.09534652 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.5839666694455721}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.58397) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.405, and will continue to 0.445]\n", "\n", "(STEP 32) ANALYSIS: Examining Conc. Changes from System Time 0.445 due to tentative step of 0.04:\n", " Baseline: [ 0. 64.01862905 55. 52.99924621 18.96349569\n", " 100. ]\n", " Deltas: [ 0. 0.9468283 0. -1.80867058 -0.08498602 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.4638884123583411}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.46389) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.445, and will continue to 0.485]\n", "\n", "(STEP 33) ANALYSIS: Examining Conc. Changes from System Time 0.485 due to tentative step of 0.04:\n", " Baseline: [ 0. 64.96545735 55. 51.19057563 18.87850968\n", " 100. ]\n", " Deltas: [ 0. 0.84388651 0. -1.61202675 -0.07574626 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.36850135438022225}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.3685) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.485, and will continue to 0.525]\n", "\n", "(STEP 34) ANALYSIS: Examining Conc. Changes from System Time 0.525 due to tentative step of 0.04:\n", " Baseline: [ 0. 65.80934386 55. 49.57854888 18.80276341\n", " 100. ]\n", " Deltas: [ 0. 0.75213678 0. -1.43676265 -0.06751092 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.29272826302332505}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.29273) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.525, and will continue to 0.565]\n", "\n", "(STEP 35) ANALYSIS: Examining Conc. Changes from System Time 0.565 due to tentative step of 0.04:\n", " Baseline: [ 0. 66.56148064 55. 48.14178623 18.73525249\n", " 100. ]\n", " Deltas: [ 0. 0.67036235 0. -1.28055375 -0.06017094 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.23253601370675195}\n", " Thresholds: \n", " norm_A : (VALUE 0.23254) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.08) at the next round, because all norms are low\n", " [The current step started at System Time: 0.565, and will continue to 0.605]\n", "\n", "(STEP 36) ANALYSIS: Examining Conc. Changes from System Time 0.605 due to tentative step of 0.08:\n", " Baseline: [ 0. 67.23184299 55. 46.86123248 18.67508155\n", " 100. ]\n", " Deltas: [ 0. 1.19495731 0. -2.28265665 -0.10725798 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.7388831828204337}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.73888) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.08) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.04) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.605, and will continue to 0.685]\n", "\n", "(STEP 37) ANALYSIS: Examining Conc. Changes from System Time 0.685 due to tentative step of 0.04:\n", " Baseline: [ 0. 68.4268003 55. 44.57857583 18.56782357\n", " 100. ]\n", " Deltas: [ 0. 0.46755952 0. -0.89315144 -0.0419676 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.11312140907262146}\n", " Thresholds: \n", " norm_A : (VALUE 0.11312) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.08) at the next round, because all norms are low\n", " [The current step started at System Time: 0.685, and will continue to 0.725]\n", "\n", "(STEP 38) ANALYSIS: Examining Conc. Changes from System Time 0.725 due to tentative step of 0.08:\n", " Baseline: [ 0. 68.89435982 55. 43.68542439 18.52585598\n", " 100. ]\n", " Deltas: [ 0. 0.83345025 0. -1.59209098 -0.07480952 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.3594432769718806}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.35944) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.08) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.725, and will continue to 0.805]\n", "\n", "(STEP 39) ANALYSIS: Examining Conc. Changes from System Time 0.805 due to tentative step of 0.08:\n", " Baseline: [ 0. 69.72781007 55. 42.0933334 18.45104645\n", " 100. ]\n", " Deltas: [ 0. 0.65222012 0. -1.24589772 -0.05854252 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.2201199373223358}\n", " Thresholds: \n", " norm_A : (VALUE 0.22012) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.08) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.16) at the next round, because all norms are low\n", " [The current step started at System Time: 0.805, and will continue to 0.885]\n", "\n", "(STEP 40) ANALYSIS: Examining Conc. Changes from System Time 0.885 due to tentative step of 0.16:\n", " Baseline: [ 0. 70.38003019 55. 40.84743568 18.39250394\n", " 100. ]\n", " Deltas: [ 0. 1.02079538 0. -1.94996535 -0.0916254 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.5391981423603522}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.5392) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.16) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.885, and will continue to 1.045]\n", "\n", "(STEP 41) ANALYSIS: Examining Conc. Changes from System Time 1.045 due to tentative step of 0.16:\n", " Baseline: [ 0. 71.40082557 55. 38.89747033 18.30087853\n", " 100. ]\n", " Deltas: [ 0. 0.57686034 0. -1.10194237 -0.05177831 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.17219175887655633}\n", " Thresholds: \n", " norm_A : (VALUE 0.17219) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.16) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.32) at the next round, because all norms are low\n", " [The current step started at System Time: 1.045, and will continue to 1.205]\n", "\n", "(STEP 42) ANALYSIS: Examining Conc. Changes from System Time 1.205 due to tentative step of 0.32:\n", " Baseline: [ 0. 71.97768591 55. 37.79552796 18.24910022\n", " 100. ]\n", " Deltas: [ 0. 0.65197758 0. -1.24543442 -0.05852075 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.21995626094117085}\n", " Thresholds: \n", " norm_A : (VALUE 0.21996) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.32) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.64) at the next round, because all norms are low\n", " [The current step started at System Time: 1.205, and will continue to 1.525]\n", "\n", "(STEP 43) ANALYSIS: Examining Conc. Changes from System Time 1.525 due to tentative step of 0.64:\n", " Baseline: [ 0. 72.62966349 55. 36.55009354 18.19057947\n", " 100. ]\n", " Deltas: [ 0. 0.16979763 0. -0.32435443 -0.01524084 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {1, 3, 4}\n", " Norms: {'norm_A': 0.01491881249157113}\n", " Thresholds: \n", " norm_A : (VALUE 0.014919) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.64) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 1.28) at the next round, because all norms are low\n", " [The current step started at System Time: 1.525, and will continue to 2.165]\n", "44 total step(s) taken\n" ] } ], "source": [ "dynamics.set_diagnostics() # To save diagnostic information about the call to single_compartment_react()\n", "\n", "# All of these settings are currently close to the default values... but subject to change; set for repeatability\n", "dynamics.set_thresholds(norm=\"norm_A\", low=0.25, high=0.64, abort=1.44)\n", "dynamics.set_thresholds(norm=\"norm_B\") # We are disabling norm_B (to conform to the original run)\n", "dynamics.set_step_factors(upshift=2.0, downshift=0.5, abort=0.5) # Note: upshift=2.0 seems to often be excessive. About 1.4 is currently recommended\n", "dynamics.set_error_step_factor(0.5)\n", "\n", "dynamics.single_compartment_react(initial_step=0.01, target_end_time=2.0, \n", " variable_steps=True, explain_variable_steps=True)" ] }, { "cell_type": "markdown", "id": "8d588746-92b1-42c0-8154-c68d18910565", "metadata": {}, "source": [ "## Compare the above printout with its counterpart from the experiment `variable_steps_1`\n", "Notice the extra lines we have this time, saying _\"Restricting adaptive time step analysis to 3 chemicals only\"_" ] }, { "cell_type": "code", "execution_count": 6, "id": "8a57c6d4-32cc-4351-8ad8-2e8b30e9fecf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEEXTRA 1UEXTRA 2XSEXTRA 3caption
00.00000.050.00000055.0100.0000000.000000100.0Initial state
10.00500.049.50000055.098.5000002.500000100.0
20.00750.049.30250055.097.7987503.596250100.0
30.01250.048.95332555.096.4396565.653694100.0
40.01500.048.82163255.095.8011646.555571100.0
50.02000.048.59563955.094.5608148.247909100.0
60.02500.048.43959955.093.3898399.730964100.0
70.03000.048.34444155.092.28092011.030197100.0
80.03500.048.30220555.091.22761212.167978100.0
90.04000.048.30590255.090.22423813.163959100.0
100.05000.048.39290155.088.30734814.906851100.0
110.05500.048.50524655.087.42994315.559566100.0
120.06500.048.77990655.085.74061916.699569100.0
130.07500.049.14027355.084.17037417.549079100.0
140.08500.049.56139455.082.69820818.179004100.0
150.09500.050.02448755.081.30800218.643025100.0
160.10500.050.51543955.079.98734318.981779100.0
170.12500.051.53190655.077.46591619.470272100.0
180.13500.052.05889055.076.31015519.572066100.0
190.15500.053.10806455.074.08019419.703677100.0
200.16500.053.62219755.073.04000919.715597100.0
210.18500.054.63180555.071.02348019.712910100.0
220.20500.055.60059855.069.12762019.671183100.0
230.22500.056.52396455.067.34050519.611568100.0
240.24500.057.40085655.065.65346319.544825100.0
250.26500.058.23199455.064.05963419.476378100.0
260.28500.059.01893555.062.55322119.408909100.0
270.30500.059.76360355.061.12909719.343697100.0
280.32500.060.46805055.059.78259519.281305100.0
290.34500.061.13433755.058.50939619.221930100.0
300.38500.062.39460855.056.10153219.109253100.0
310.40500.062.95630455.055.02855019.058842100.0
320.44500.064.01862955.052.99924618.963496100.0
330.48500.064.96545755.051.19057618.878510100.0
340.52500.065.80934455.049.57854918.802763100.0
350.56500.066.56148155.048.14178618.735252100.0
360.60500.067.23184355.046.86123218.675082100.0
370.68500.068.42680055.044.57857618.567824100.0
380.72500.068.89436055.043.68542418.525856100.0
390.80500.069.72781055.042.09333318.451046100.0
400.88500.070.38003055.040.84743618.392504100.0
411.04500.071.40082655.038.89747018.300879100.0
421.20500.071.97768655.037.79552818.249100100.0
431.52500.072.62966355.036.55009418.190579100.0
442.16500.072.79946155.036.22573918.175339100.0
\n", "
" ], "text/plain": [ " SYSTEM TIME EXTRA 1 U EXTRA 2 X S EXTRA 3 \\\n", "0 0.0000 0.0 50.000000 55.0 100.000000 0.000000 100.0 \n", "1 0.0050 0.0 49.500000 55.0 98.500000 2.500000 100.0 \n", "2 0.0075 0.0 49.302500 55.0 97.798750 3.596250 100.0 \n", "3 0.0125 0.0 48.953325 55.0 96.439656 5.653694 100.0 \n", "4 0.0150 0.0 48.821632 55.0 95.801164 6.555571 100.0 \n", "5 0.0200 0.0 48.595639 55.0 94.560814 8.247909 100.0 \n", "6 0.0250 0.0 48.439599 55.0 93.389839 9.730964 100.0 \n", "7 0.0300 0.0 48.344441 55.0 92.280920 11.030197 100.0 \n", "8 0.0350 0.0 48.302205 55.0 91.227612 12.167978 100.0 \n", "9 0.0400 0.0 48.305902 55.0 90.224238 13.163959 100.0 \n", "10 0.0500 0.0 48.392901 55.0 88.307348 14.906851 100.0 \n", "11 0.0550 0.0 48.505246 55.0 87.429943 15.559566 100.0 \n", "12 0.0650 0.0 48.779906 55.0 85.740619 16.699569 100.0 \n", "13 0.0750 0.0 49.140273 55.0 84.170374 17.549079 100.0 \n", "14 0.0850 0.0 49.561394 55.0 82.698208 18.179004 100.0 \n", "15 0.0950 0.0 50.024487 55.0 81.308002 18.643025 100.0 \n", "16 0.1050 0.0 50.515439 55.0 79.987343 18.981779 100.0 \n", "17 0.1250 0.0 51.531906 55.0 77.465916 19.470272 100.0 \n", "18 0.1350 0.0 52.058890 55.0 76.310155 19.572066 100.0 \n", "19 0.1550 0.0 53.108064 55.0 74.080194 19.703677 100.0 \n", "20 0.1650 0.0 53.622197 55.0 73.040009 19.715597 100.0 \n", "21 0.1850 0.0 54.631805 55.0 71.023480 19.712910 100.0 \n", "22 0.2050 0.0 55.600598 55.0 69.127620 19.671183 100.0 \n", "23 0.2250 0.0 56.523964 55.0 67.340505 19.611568 100.0 \n", "24 0.2450 0.0 57.400856 55.0 65.653463 19.544825 100.0 \n", "25 0.2650 0.0 58.231994 55.0 64.059634 19.476378 100.0 \n", "26 0.2850 0.0 59.018935 55.0 62.553221 19.408909 100.0 \n", "27 0.3050 0.0 59.763603 55.0 61.129097 19.343697 100.0 \n", "28 0.3250 0.0 60.468050 55.0 59.782595 19.281305 100.0 \n", "29 0.3450 0.0 61.134337 55.0 58.509396 19.221930 100.0 \n", "30 0.3850 0.0 62.394608 55.0 56.101532 19.109253 100.0 \n", "31 0.4050 0.0 62.956304 55.0 55.028550 19.058842 100.0 \n", "32 0.4450 0.0 64.018629 55.0 52.999246 18.963496 100.0 \n", "33 0.4850 0.0 64.965457 55.0 51.190576 18.878510 100.0 \n", "34 0.5250 0.0 65.809344 55.0 49.578549 18.802763 100.0 \n", "35 0.5650 0.0 66.561481 55.0 48.141786 18.735252 100.0 \n", "36 0.6050 0.0 67.231843 55.0 46.861232 18.675082 100.0 \n", "37 0.6850 0.0 68.426800 55.0 44.578576 18.567824 100.0 \n", "38 0.7250 0.0 68.894360 55.0 43.685424 18.525856 100.0 \n", "39 0.8050 0.0 69.727810 55.0 42.093333 18.451046 100.0 \n", "40 0.8850 0.0 70.380030 55.0 40.847436 18.392504 100.0 \n", "41 1.0450 0.0 71.400826 55.0 38.897470 18.300879 100.0 \n", "42 1.2050 0.0 71.977686 55.0 37.795528 18.249100 100.0 \n", "43 1.5250 0.0 72.629663 55.0 36.550094 18.190579 100.0 \n", "44 2.1650 0.0 72.799461 55.0 36.225739 18.175339 100.0 \n", "\n", " caption \n", "0 Initial state \n", "1 \n", "2 \n", "3 \n", "4 \n", "5 \n", "6 \n", "7 \n", "8 \n", "9 \n", "10 \n", "11 \n", "12 \n", "13 \n", "14 \n", "15 \n", "16 \n", "17 \n", "18 \n", "19 \n", "20 \n", "21 \n", "22 \n", "23 \n", "24 \n", "25 \n", "26 \n", "27 \n", "28 \n", "29 \n", "30 \n", "31 \n", "32 \n", "33 \n", "34 \n", "35 \n", "36 \n", "37 \n", "38 \n", "39 \n", "40 \n", "41 \n", "42 \n", "43 \n", "44 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.get_history()" ] }, { "cell_type": "code", "execution_count": 7, "id": "12da63da-9b3b-4c43-a68b-7dfb6585b9d0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "From time 0 to 0.005, in 1 step of 0.005\n", "From time 0.005 to 0.0075, in 1 step of 0.0025\n", "From time 0.0075 to 0.0125, in 1 step of 0.005\n", "From time 0.0125 to 0.015, in 1 step of 0.0025\n", "From time 0.015 to 0.04, in 5 steps of 0.005\n", "From time 0.04 to 0.05, in 1 step of 0.01\n", "From time 0.05 to 0.055, in 1 step of 0.005\n", "From time 0.055 to 0.105, in 5 steps of 0.01\n", "From time 0.105 to 0.125, in 1 step of 0.02\n", "From time 0.125 to 0.135, in 1 step of 0.01\n", "From time 0.135 to 0.155, in 1 step of 0.02\n", "From time 0.155 to 0.165, in 1 step of 0.01\n", "From time 0.165 to 0.345, in 9 steps of 0.02\n", "From time 0.345 to 0.385, in 1 step of 0.04\n", "From time 0.385 to 0.405, in 1 step of 0.02\n", "From time 0.405 to 0.605, in 5 steps of 0.04\n", "From time 0.605 to 0.685, in 1 step of 0.08\n", "From time 0.685 to 0.725, in 1 step of 0.04\n", "From time 0.725 to 0.885, in 2 steps of 0.08\n", "From time 0.885 to 1.205, in 2 steps of 0.16\n", "From time 1.205 to 1.525, in 1 step of 0.32\n", "From time 1.525 to 2.165, in 1 step of 0.64\n", "(44 steps total)\n" ] } ], "source": [ "(transition_times, step_sizes) = dynamics.explain_time_advance(return_times=True)" ] }, { "cell_type": "code", "execution_count": 8, "id": "438e4ec0-44f7-4c0d-b6a6-4a435da6e683", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.005 , 0.0025, 0.005 , 0.0025, 0.005 , 0.01 , 0.005 , 0.01 ,\n", " 0.02 , 0.01 , 0.02 , 0.01 , 0.02 , 0.04 , 0.02 , 0.04 ,\n", " 0.08 , 0.04 , 0.08 , 0.16 , 0.32 , 0.64 ])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.array(step_sizes)" ] }, { "cell_type": "code", "execution_count": 9, "id": "74d500e5-0b59-419c-90ae-4948eb7c8611", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0. , 0.005 , 0.0075, 0.0125, 0.015 , 0.04 , 0.05 , 0.055 ,\n", " 0.105 , 0.125 , 0.135 , 0.155 , 0.165 , 0.345 , 0.385 , 0.405 ,\n", " 0.605 , 0.685 , 0.725 , 0.885 , 1.205 , 1.525 , 2.165 ])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.array(transition_times) # Note: there will be one more transition time (the end time) than step sizes" ] }, { "cell_type": "markdown", "id": "cbf6c9c7-8cec-400f-9e70-49ff1a9f485c", "metadata": { "tags": [] }, "source": [ "## Plots of changes of concentration with time" ] }, { "cell_type": "code", "execution_count": 10, "id": "c388dae7-c4a6-4644-a390-958e3862d102", "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=EXTRA 1
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "EXTRA 1", "line": { "color": "lightgray", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "EXTRA 1", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "yaxis": "y" }, { "hovertemplate": "Chemical=U
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "U", "line": { "color": "green", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "U", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 50, 49.5, 49.3025, 48.953325, 48.82163225, 48.595638778125, 48.439598731740624, 48.34444128763423, 48.30220476057483, 48.30590183654385, 48.39290050226037, 48.5052455391863, 48.7799058814107, 49.14027331067588, 49.56139415522215, 50.02448656789047, 50.51543882771388, 51.5319059043599, 52.05888953946266, 53.10806448877514, 53.6221973851961, 54.631804962718874, 55.60059843741017, 56.52396378475239, 57.400856045782184, 58.231993841938426, 59.018934628561645, 59.76360275298115, 60.468050216020096, 61.13433693633931, 62.39460766762712, 62.95630384813689, 64.01862904935517, 64.96545734689445, 65.8093438554794, 66.56148063896055, 67.23184298514343, 68.4268002988057, 68.89435981841929, 69.72781007217334, 70.38003019051833, 71.40082556698592, 71.97768590721373, 72.62966349214221, 72.7994611238083 ], "yaxis": "y" }, { "hovertemplate": "Chemical=EXTRA 2
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "EXTRA 2", "line": { "color": "lightgray", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "EXTRA 2", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55 ], "yaxis": "y" }, { "hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "X", "line": { "color": "orange", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "X", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 100, 98.5, 97.79875, 96.43965625, 95.801164234375, 94.56081390882812, 93.38983895624335, 92.28092027930796, 91.22761238948105, 90.22423754631991, 88.30734794676586, 87.42994325902578, 85.7406189010111, 84.17037449415082, 82.69820799239614, 81.30800197445382, 79.98734340860611, 77.46591627640568, 76.31015510300598, 74.08019369499387, 73.0400085237914, 71.02347961706188, 69.12762009493821, 67.34050485287088, 65.65346267101354, 64.05963393924337, 62.55322130811434, 61.12909716179896, 59.782595011959664, 58.5093958579621, 56.10153161965286, 55.02855008788483, 52.99924620914057, 51.19057563015947, 49.578548876792716, 48.14178623051722, 46.86123248082995, 44.57857582889467, 43.685424387065844, 42.0933334026959, 40.84743568346842, 38.897470333478665, 37.79552796465638, 36.5500935427452, 36.2257391168805 ], "yaxis": "y" }, { "hovertemplate": "Chemical=S
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "S", "line": { "color": "blue", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "S", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 0, 2.5, 3.59625, 5.65369375, 6.555571265625001, 8.247908534921876, 9.730963580275391, 11.03019714542356, 12.167978089369273, 13.163958780592365, 14.906851048713396, 15.559565662601617, 16.699569336167485, 17.5490788844974, 18.179003697159533, 18.643024889765208, 18.981778935966094, 19.470271914874488, 19.572065818068666, 19.703677327455825, 19.715596705816367, 19.712910457500335, 19.671183030241412, 19.611567577624296, 19.54482523742205, 19.476378376879737, 19.40890943476233, 19.343697332238698, 19.2813045560001, 19.221930269359245, 19.10925304509285, 19.058842215841338, 18.963495692149042, 18.878509676051582, 18.80276341224844, 18.735252491561642, 18.67508154888315, 18.56782357349389, 18.52585597609554, 18.451046452957367, 18.392503935494886, 18.300878532549454, 18.24910022091612, 18.190579472970335, 18.17533863550288 ], "yaxis": "y" }, { "hovertemplate": "Chemical=EXTRA 3
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "EXTRA 3", "line": { "color": "lightgray", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "EXTRA 3", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 ], "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 concentration for `2 S <-> U` and `S <-> X`" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 2.165 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ -5.555555555555555, 105.55555555555556 ], "title": { "text": "concentration" }, "type": "linear" } } }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAFoCAYAAABaP0PZAAAAAXNSR0IArs4c6QAAIABJREFUeF7tvQu4HFWZqP31vl+zcyM3CAESIBDACAIBBSN4GYJcxEnE48yAeHIieGZ+LidI5DDIcTAMTJR/ZgRjHlBnhgMGhxlFQFQUASGAKCN3QrgkITfIdWff+3KeVb2rd3fv6u6q7lVVq2q//Tz72Xt3r/rWV+9X3f326lWrEplMJiPcIAABCEAAAhCAAAQgEGMCCaQ3xtVl1yAAAQhAAAIQgAAELAJILwcCBCAAAQhAAAIQgEDsCSC9sS8xOwgBCEAAAhCAAAQggPRyDEAAAhCAAAQgAAEIxJ4A0hv7ErODEIAABCAAAQhAAAJIL8cABCAAAQhAAAIQgEDsCSC9sS8xOwgBCEAAAhCAAAQggPRyDEAAAhCAAAQgAAEIxJ4A0hv7ErODEIAABCAAAQhAAAJIL8cABCAAAQhAAAIQgEDsCSC9sS8xOwgBCEAAAhCAAAQggPRyDEAAAhCAAAQgAAEIxJ4A0hv7ErODEIAABCAAAQhAAAJIL8cABCAAAQhAAAIQgEDsCSC9sS8xOwgBCEAAAhCAAAQggPRyDEAAAhCAAAQgAAEIxJ4A0hv7ErODEIAABCAAAQhAAAJIL8cABCAAAQhAAAIQgEDsCSC9sS8xOwgBCEAAAhCAAAQggPRyDEAAAhCAAAQgAAEIxJ4A0hv7ErODEIAABCAAAQhAAAJIL8cABCAAAQhAAAIQgEDsCSC9sS8xOwgBCEAAAhCAAAQggPRyDEAAAhCAAAQgAAEIxJ4A0hv7ErODEIAABCAAAQhAAAJIL8cABCAAAQhAAAIQgEDsCSC9sS8xOwgBCEAAAhCAAAQggPRyDEAAAhCAAAQgAAEIxJ4A0hv7ErODEIAABCAAAQhAAAJIL8cABCAAAQhAAAIQgEDsCSC9sS8xOwgBCEAAAhCAAAQggPRyDEAAAhCAAAQgAAEIxJ4A0hv7ErODEIAABCAAAQhAAAJIL8cABCAAAQhAAAIQgEDsCSC9sS8xOwgBCEAAAhCAAAQggPRyDEAAAqES2L23Wy695ttWDrffdIVM6OoMNZ+x3vm3Vq+VO+5+UH5w6zVy4vy5scFx34OPyXU33ynfuPoSuWDR6bHZryB3hOdqkLTpyw8CkZde9UJ22w9/Iqtvvkpmz5rhByNiQmDMELDFQO3wsUcdFpiE2m+mS85ZiJAYcLQp8d22Y5fcsPwSaW1pMiCj0SmoY3Xt/Y96Okar2cbInQ8xKZ6rIcKn65oJGCu9ff2Dcv0td8oDj6wr2Mmzz1xQ8EKM9I7g2fDOFll29SpZdMbJcuWyJTUfHGMxgM3wsovO80W+ysVXovHgr58O7QNc2M+lZ59/VVasXFN2/1Wbiy+/qeDQ9DpyZ79pv/DKm2VfW6J+/Kvj6ZnnX3WUQvv1Ve2jk9hGQWyqEVh7v6dNmVj2NTL/w1/+cRCn0e9KI/rlHnfzXI3684f840nASOm139iKBdd+wfrDi+tzb4xhv1GbdFggvbVXY6xKr1sZqJ1w9RHs14V8yfV6zNsxvvT5RQXSY8eZPLHL08ih097YLDdu2eEpltPrW/W0RGqR3lr6DWrbaqS3Um7lamBLoNcPWU59ej1u7Riljt9K+1XuOM1/Py3uR8e+VpMb20DALwLGSa+bF4OHH31G5hx6kDWdAen169AYm3HDlN4wiUdBel987S1pbWkeNY3J7WtApdFNxf+u+34pi85cUNW84vxvp2qZGmLL1fSpk2oa9Ud6vT+jbKksNaKrXh/eeGuzfGrhSd6Di4j9+rJ1+04p/uDlNqCOGHZf9oj+wTOm5Eb8ne5zmxvtIGA6AeOk1+tXvPYb3q3/53/Kv6x9ODcdwulNx+krK6c3Fi8xVYHzX4TU/yrm5Anj5OADp4766rA4h+LRbLW901e4br5WcxI2+43vmyuWytdWrhH7K12nfssdrG6+Vnazb17zcdNvcZvi2tsv4ifNnyunnXxcwdfjTqOG6g0p/2a/OeXL1U9+/oR1so+6qdqoW/HX7vZj9slAxceJ3Ycdv5Sk+ME1f/9Kfd2fz8ZLDt/++lfk29+713ou1ipubl5A3Upv/nGgc/qPLtkt3ldbfqsV6DCk1+n5Wvw8yH/NVNOI1E2dYGbfnF7rnI7Rj5x0rOzt7vE0ml7peHJ7LFWKU/y4TlG1Y+fHrGVEtvgblHLHjdf9pj0ETCNglPRW8wnTfjPOf3MtNaKj2qpb/pm7Ti9yXmI6feXq1H+przyLX2CcRhrcvhCXkl4lZ/lvnF7f/J0+iKgY37/nIbn0ovOtE12K96Pc/rrNx22/xfNgi3nlv2Hmj644sS430psvfsVvzCrW40//qeArc6/xnd5s/ODq9CJUbqTXaw5BiK69D16mEuTLqZsPkZVerP2SXV3yG5b0enkeqA+YxR+uik9MLvXtnx9yVmpqXaVjodTjfshuOaGuVn7t19qLl/yZrPynu2K3cke19WO7+BEwUnrViJzbkZhSQuh2or3TCRtuY1YShfyzn0vlUyxZpV7IS321m39IlhvpLV4Kyu18uEpf96n+S7Vxkutyo5n5Z2K76dfe35UrlhYsrVTcbynJd6pfJen1slKI1/huPgAp3rVwLfUSVupY1lFbP182vc5xLDWq7fWrZvsDULWjsNUwsUd+3X5LE4b0uv1AVep55vR6XGolCbevYV5Zu/1GsFzc/A9EXo8tr/k6jfx6/VBXamCg2lzYDgKmEoi19Kqvm4uf/KW+Yq402uAkd5XOxM+X3lIv3MWyYb/gun1jq0V63QicmzeWUm2cRrzLSW9+PrX0q5jk8+4fGLDWgS3+MOWUXy3S60aoKh0z+Wfb+8HVq/TqyMGvF79aTz6zJTI/P7eCUo30OsmUl+d5VKS3lueB2w+sqmZuXiNqOfac3ivcfotRjfSW4uZWYPPzdbuNzQfpreVIYdsoETBSevMn1VeCWW5Utlh6nc6+9TrSmx+z3GhkvnSpfXBafq3Um63Tm6Obr628jvS6kV43XyGWa1P8mFvpdduvPa/W6TixhSII6bVrli9NtY70+sHVq/TqyKHSc7iax2sVXqc+7dcHt8LA9IbRFGt9HhRLb6UPoV7X6a3mWCseST3+mMNdr18cpekN6gP3Fz/3Z3Ll129jekMtBwrbGk3AKOm1R+i8rFXqVnq9fJ3mNWbx1+vFI432nNdqFnv3Mg/RD+l1M5qiYzSwmHkt/RY/4ypNb1Dt7bVKK73JOn1QqBQ/f01QRnprfz30Q3hVVuVqUy5rv+TXlvBqp1CUew55ndfvpmo6ngelRnqdLlri5jXCTd5e2rj5MO4Uzw/51XUim/1Bxf6w53QuhRdGtIWAyQSMk95SJy3kQ8yf3+pWUCvNTcx/UXUbs9wbR/F0hlIxiw8OtRzb6QvmF1wFye2bsR/SW2402871xVfftFYuKB4h8zr3NF8oa+m3Ful1Gvm345WqYan6OI30lovv15xeNyP6UZnTW8uJRor9g4+sky9c8AnH12Q388iDkF9bdt1+lV4qp3L7U2o+fC1vVl6eB5UGIeypSOWWmfNDevOXwyxm4WbJu0r8dMivjhjFo9f5FzSq5oTySvvN4xAwhYBx0qvA6Lg4RfELvpOA5c9jqmZOr8rVSYSc5uWWW/RctVc3taqE00iCW2H2Q3pVXk6f/IulvriN29Uqygml237VFIdyqylUGoFSOdgjvZXeZJ0EstxqHWrZLqcpD/l92gycau8HV6cXn0onZeZ/++K1trpe7LyetFbqw49ats/peFEf3NzO6XUjv2FfnKLUc9cvqfHyPHArvfnvB/k1s4+FakfBS9Wv1DkV5V6/qzm+3QzuOMWt9TmQH7PcyidOqxJVs59sAwHTCBgpvQpS/leG+dDcXobYaZSj+EQB9YJpr19bzUhvvrDlrzOpBPrtTdscr13vNF83/4Xbab/dvrD7Jb223Ofvo5t1kJ1O0nE7p7cUW6d+ndYGzR8l8yK9qt/i48RpnV51YRSnNxD7stmqf3vt6OJLnpaKX45NPnsdXItfiMpJr1P9veSg60XP6cSz/NhuhLXU60qto6q69tGPONWeI1BNLsV8Sz0PvEhvvvjaOalaHzJzmvgxp7fUWsNujq9qmIWxjRuJ9zrHPYz9oE8IeCVgrPR63RGT2lcSCJNyJRcIQAACEIAABCAwFgggvTVWudRFCVasXFPTJURrTIvNIQABCEAAAhCAAATyCCC9NR4OTl+FuZ2OUGPXbA4BCEAAAhCAAAQg4JIA0usSFM0gAAEIQAACEIAABKJLAOmNbu3IHAIQgAAEIAABCEDAJQGk1yUomkEAAhCAAAQgAAEIRJcA0hvd2pE5BCAAAQhAAAIQgIBLAkivS1A0gwAEIAABCEAAAhCILgGkN7q1I3MIQAACEIAABCAAAZcEkF6XoGgGAQhAAAIQgAAEIBBdAkhvdGtH5hCAAAQgAAEIQAACLgkgvS5B0QwCEIAABCAAAQhAILoEkN7o1o7MIQABCEAAAhCAAARcEkB6XYKiGQQgAAEIQAACEIBAdAkgvdGtHZlDAAIQgAAEIAABCLgkgPS6BEUzCEAAAhCAAAQgAIHoEkB6o1s7MocABCAAAQhAAAIQcEkA6XUJimYQgAAEIAABCEAAAtElgPRGt3ZkDgEIQAACEIAABCDgkgDS6xIUzSAAAQhAAAIQgAAEoksA6Y1u7cgcAhCAAAQgAAEIQMAlAaTXJSiaQQACEIAABCAAAQhElwDSG93akTkEIAABCEAAAhCAgEsCSK9LUDSDAAQgAAEIQAACEIguAaQ3urUjcwhAAAIQgAAEIAABlwSQXpegaAYBCEAAAhCAAAQgEF0CSG90a0fmEIAABCAAAQhAAAIuCSC9LkHRDAIQgAAEIAABCEAgugSQ3ujWjswhAAEIQAACEIAABFwSQHpdgqIZBCAAAQhAAAIQgEB0CSC90a0dmUMAAhCAAAQgAAEIuCSA9LoERTMIQAACEIAABCAAgegSQHqjWzsyhwAEIAABCEAAAhBwSQDpdQmKZhCAAAQgAAEIQAAC0SWA9Ea3dmQOAQhAAAIQgAAEIOCSANLrEhTNIAABCEAAAhCAAASiSwDpjW7tyBwCEIAABCAAAQhAwCUBpNclKJpBAAIQgAAEIAABCESXANIb3dqROQQgAAEIQAACEICASwJIr0tQNIMABCAAAQhAAAIQiC4BpDe6tSNzCEAAAhCAAAQgAAGXBJBel6BoBgEIQAACEIAABCAQXQJIb3RrR+YQgAAEIAABCEAAAi4JIL0uQdEMAhCAAAQgAAEIQCC6BJDe6NaOzCEAAQhAAAIQgAAEXBJAel2CohkEIAABCEAAAhCAQHQJIL3RrR2ZQwACEIAABCAAAQi4JID0ugRFMwhAAAIQgAAEIACB6BJAeqNbOzKHAAQgAAEIQAACEHBJAOl1CYpmEIAABCAAAQhAAALRJYD0aqjdlp19GqIQImwCXe2NkkxlpKc/GXYq9K+BwISOJukfSknfQEpDNEKETWBiZ5P09ielfygddir0r4HA5K5m2dczJINJ8+o5Y1Krhj0khIkEkF4NVUF6NUA0IATSa0ARNKaA9GqEaUAopNeAImhMAenVCJNQrgkgva5RlW6I9GqAaEAIpNeAImhMAenVCNOAUEivAUXQmALSqxEmoVwTQHpdo0J6NaAyOgTSa3R5PCeH9HpGZvQGSK/R5fGcHNLrGRkbaCAwpqT3vgcfk7c3bZMrly0pQLd7b7dces235YVX3rTu/8Gt18iJ8+fm2qjtrrv5Tuv/s89cIDcsv0RaW5pyjzPSq+FINCAE0mtAETSmgPRqhGlAKKTXgCJoTAHp1QiTUK4JjAnpffb5V+Xiy2+yoHzp84sKpLevf1Cuv+VOWXDC0XLBotNlwztb5NqVa+TGFUtl9qwZorZdtXqt3H7TFTKhq1O+tXqtFSdfnJFe18eb0Q2RXqPL4zk5pNczMqM3QHqNLo/n5JBez8jYQAOBMSG9NienkV4lubfcdo+s/NpSS2qLJVhJ7iEzp1lCrG7FEqzuQ3o1HIkGhEB6DSiCxhSQXo0wDQiF9BpQBI0pIL0aYRLKNYExL71OEmuP5l560fkFo8CKavFIMNLr+lgzviHSa3yJPCWI9HrCZXxjpNf4EnlKcCxKrz2V8qplSwqmUHoCZ0hjNYi47rmXR033NCS9kmkgvc+/Kvfe/2hB4Yqld/E5C3MHaLH0vvjii6bXmPwgAAEIQAACEHBJ4JhjjnHZcnQz5Q933P1gwQP2tMowpdfue8k5C3PfXFe9kyKC9NZCL6BtnaY31DrSi/QGVDy6gQAEIAABCARAoBrptaXy4BlTCgbR7CmTavBszqEHWifNM9IbQBFLdDHmR3prntP7fxOSbpwg2z/6umTq28OrJD3XTIDpDTUjNCoA0xuMKkfNyTC9oWaERgWI2/QGNcK7bceusl/322J82UXnyc9++ZQ88Mg6qybFJ9ir+/JHjKdPnSSrb77KOrnelujjjp4tf3p5Q0GML154VsFKVN+4+pLcqK7TKHPxylX5/RSPWB971GG5E/pVfoz0GvV0ck7GaaS35tUbfv0JkW2/ku7Z10r3nGsjQIEUSxFAeuN1bCC98aon0huvesZJet1OHbDbvb9rb05i1cDbsqtXycoVS3PTKItXiVLfSK9YucbaZsbUyda5Rn94cf2oGOoIseW4eCpmsfQ65az6UTe1ZOv3/u1+OfO0EyzRtiU8X+qRXoOfj/lLltlp5q/FW9M6vXteEHnwOMnUtcv2ha9bo77cokkA6Y1m3UpljfTGq55Ib7zqGSfpdRJXp2o5jbY6Dbzlryil4uS3OeuMBaNOsC+OUbyNWn2quG+v0lr8rbjX7U05esfU9Aa/oPf9+rPSuu0+6Tn4y7L3qG/51Q1xfSaA9PoMOODwSG/AwH3uDun1GXDA4ZHe7AWwioXVaZDOLo2arqBLeouXYy0uv52XPQVDPZ4//QHpDfgJY1J32ze/IlMfP9ZKaftpL0iq9RCT0iMXlwSQXpegItIM6Y1IoVymifS6BBWRZnGSXq/TG/JPZHOS3vwLYpWSUfuCWk7i7Gakt5z02iPXi844OXchruLpEkhvRJ5ofqSpLk4x/qX/KW2b75S+6Ytl93E/9KMbYvpMAOn1GXDA4ZHegIH73B3S6zPggMPHSXoVunInstlzZZ1Wb6h0XpFf0ltOWlW+xUu5Ir0BP0FM7k5Jb93gDpn66FxJZPrlvQ8/K0Md80xOmdwcCCC98ToskN541RPpjVc94ya9pZYsU3J53c13ijqPyI302hK8ccuOUaslzJwxRY6Ze5iWOb32aK5aSSL/irP2UWafOJe/YkT+yXOM9Mbr+ehpb+zLEI97/W+l461/kIGJH5WdJz7kKQaNwyeA9IZfA50ZIL06aYYfC+kNvwY6M4ib9Npsipf6yp8H6+ZEtlJx7CXDWpqbtUiv6scW363bd1rdFs/ZVbJu37/80s/J9+95SG5csdRa0QHp1flsiFgsW3oTyW6Z9ugcSaS6ZeeH7peBSWdGbE/GdrpIb7zqj/TGq55Ib7zqGVfpjVeV4rc3rN6goaa29KpQHW///zLutRUyMOljsvNDD2iIToigCCC9QZEOph+kNxjOQfWC9AZFOph+kN5gONNLIQGkV8MRkS+9iXS/HPDEidLQt0H2HflN2X/I5Rp6IEQQBJDeICgH1wfSGxzrIHpCeoOgHFwfSG9wrOlphADSq+FoyJdeFa5p77Myed1HJdU8XXZ96Gcy1HGUhl4I4TcBpNdvwsHGR3qD5e13b0iv34SDjY/0Bsub3rIEkF4NR0Kx9KqQnW/cKJ0bbpRk62x57yNPS6auTUNPhPCTANLrJ93gYyO9wTP3s0ek10+6wcdGeoNnTo9Ir5ZjwEl6JZOWyc98Upr2PCm9M/5C9hz7PS19EcQ/Akivf2zDiIz0hkHdvz6RXv/YhhEZ6Q2DOn0y0qvhGHCUXhGp739XDvjdh6QuuVd2z/9X6Zv6WQ29EcIvAkivX2TDiYv0hsPdr16RXr/IhhMX6Q2H+1jvFenVcASUkl4VuuX9h2Xic5+xpje89+GnJdk2W0OPhPCDANLrB9XwYiK94bH3o2ek1w+q4cVEesNjP5Z7Rno1VL+c9KrwXS9fLu2bvifJ9rny3qlPSqauRUOvhNBNAOnVTTTceEhvuPx194706iYabjykN1z+Y7V3pFdD5StJr1rGbPJTH5bG/a9I70EXy555t2nolRC6CSC9uomGGw/pDZe/7t6RXt1Ew42H9IbLf6z2jvRqqHwl6VVdNPSulwN+t0AS6T7Z+aGfysCkj2vomRA6CSC9OmmGHwvpDb8GOjNAenXSDD8W0ut/Dfr6B61LFj/wyLqCzuxLGv/md3+Udc+9LDcsv0RaW5qsNvalkheeOl9+/LPfin2J4uJsf3DrNbJpyw6xL1VsP67uP3H+3ILmzz7/qlx8+U3yjasvkQsWne5qx9Vljt/etE2uXLbEVXu3jZBet6TKtHMjvWrz9s3fl66XviKZunZ5f8GvZajzWA29E0IXAaRXF0kz4iC9ZtRBVxZIry6SZsRBev2vgy29C044uqRsfmv1Wjlk5rTc4+p/dcuXzQ3vbJFrV66RG1csldmzZuQSV2KaL81KblesXCOrb76qoJ0dc9uOXQWC7UTAFmT12Jc+vwjp9f8w8d6DW+lVkce/sEzatvyrpJqmyXsfeUbSjZO9d8gWvhBAen3BGlpQpDc09L50jPT6gjW0oEiv/+jdSK8a2V3xzTWy/LILrYRuue0eWfm1pTKhqzOXoFvptUeJr1q2JDfaq+5b+Y93yZcvOk9u/s7dVj/54lyKAiO9/h8fVffgRXpVJ5N+f7Y07/yN9E/6hOw+/h7J1LVW3Tcb6iOA9OpjaUIkpNeEKujLAenVx9KESHGV3u7u7lDwdnaOSKqdgBvpVW3V6Ooddz9obaZGV4unJ7iVXhVn1eq1cvtNV+SkWd33+NN/skZsi0eVy4FCekM5jNx16lV6E8lumfz0QuvEtoGJp8uuE+7jim3uUPvaCun1FW/gwZHewJH72iHS6yvewIPHVXpfeuklyWQygfOcN2+eJBKJgn4rzenNH811mtZgBysnvflzes8+c8Go6Qsq7mknH2eJtJMUM9Ib+KFSe4depVf1WDf0vkx+6mPS0LdBBrsWyM6THmDEt/ZS1BQB6a0Jn3EbI73GlaSmhJDemvAZt3FcpXfjxo2hSO+sWbNG1djLSO+q7/5I3t+9T1auWFrVSO+W7e+PmverZDl/uoTT9Aek17inZuWEqpFeFbV+cLtMWvdxxLcy4kBaIL2BYA6sE6Q3MNSBdIT0BoI5sE7iKr2BAXTRkRvpzZ/Tu2v3vlHTE1Q3bqc3FJ/Ypv4vXt1BxXNzghrTG1wUOKwm1UqvLb6T1y2U+r53GPENq4DD/SK9IRdAc/dIr2agIYdDekMugObukV7NQB3CuZFenas32P1NmzJRLr3ofGu5tOKVI4pHfxnp9f840N5DLdJriW//uzL5mY8jvtor4y0g0uuNl+mtkV7TK+QtP6TXGy/TWyO9/leo0pzecuv0LjlnYW4ZM7cjvWqP7CkMhx96oKx/c/OoZc7snBafs3DUNAq1ff6SZTYhp7V/q6XHOr3VksvbrlbpzYmvGvEdeJcRXw01qSYE0lsNNXO3QXrNrU01mSG91VAzdxuk19zaxDkzpFdDdXVIb1Z835HJTy205vpycpuGwngMgfR6BGZ4c6TX8AJ5TA/p9QjM8OZIr+EFiml6SK+GwuqSXpVKQ+8GmfT0xxFfDXXxGgLp9UrM7PZIr9n18Zod0uuVmNntkV6z6xPX7JBeDZXVKb1Z8X1DJq87U+qG3pOBCR+RnSf9QkOWhKhEAOmtRChajyO90apXpWyR3kqEovU40hutesUlW6RXQyV1S68lvj2vy+SnlfjulKFxx8vOD/1E0o2TNGRLiFIEkN54HRtIb7zqifTGq55Ib7zqGZW9QXo1VMoP6c2K72sy6ffnSH3/Zkm1Hiw7T/iJJNuP1JAxIZwIIL3xOi6Q3njVE+mNVz2R3njVMyp746v02ktXvPDKm6N4HHvUYQXXZ44KMKc8/ZJe1Zca6Z30+3Olcd8fJd0wzrpk8eD4U6OMy9jckV5jS1NVYkhvVdiM3QjpNbY0VSWG9FaFjY1qJOCr9Ja7lnONeRu1uZ/Sq3Y0ke6X8X/679K6/T5rv3cd/2PpP2CRUQzikAzSG4cqjuwD0huveiK98aon0huvekZlb3yT3vxL282eNSMqPKrK02/ptZPqfP066XxrlfXv/ll/Lfvm/n1V+bKRMwGkN15HBtIbr3oivfGqJ9Ibr3pGZW+QXg2VCkp6VaptW38kXS9+RRLpXhnsOkl2f/D/Sqo53h8qNJTIVQik1xWmyDRCeiNTKleJIr2uMEWmEdIbmVLFKlHfpFdRKr6mc6zI5e1MkNKrulVLmk38w2LrRLd04wTZc9z3pX/yJ+OKN7D9QnoDQx1IR0hvIJgD6wTpDQx1IB0hvf5jts+rumrZkoJL/t734GOy7rmX5Ybll0hrS5P/iRjUg6/Sq67XfNd9v5Lll14Ya7BBS686fhLpPul66XJp2/Kv6j/pPvQK6T78BpFEvUGHV7RSQXqjVa9K2SK9lQhF63GkN1r1qpQt0luJUO2PI72jGfomveVWblBpsHpD7Qe0itC6da2Mf/FSS4LVpYt3H3+3pJqm6gk+xqIgvfEqONIbr3oivfGqJ9Lrfz2R3gCl1/9ymtNDGCO9+XuvpjlM/OOFw9MdJsvuD/xQBiZ9zBxAEckE6Y1IoVymifS6BBWRZkhvRArlMs24Su9DbzwkqXTKJQV9zT59xKdHBUN6kV59R1hepLClV6WiRnrHv3CptG5bq1b3le7Dlkv3nOtEEnW+7HMcgyK98aoq0huveiK98apnXKW345s05kCqAAAgAElEQVQd0jPUE3ixer7WI22NbQX9Ir0hSO+zz78qF19+U0HPP7j1moJJ1YEfHZo7NEF67V1q2/Jv1lxftbrDwITTZM/8f2G6g8t6I70uQUWkGdJbW6F6kz3WiNVQekhS6aQk00kZyth/pySZHrLuU48V3J9JSjI1/FgmObx9SpLl7lcxkoNWm1yfqr3qV8XKJKW+PiP9QwMymCq8P5lOSUYyIplMboet/0XdNfx7+H/rPvuxojYFj+Vi5cUsimXHdtrO7qMgh0RhTtlky+SZ62+4pcv9szlkHPory6XE/uXvSy52OXZFfJ3qoNjVJRJWuIyki2o1ctwW18+J+UCqv7YD3WHrzPUjdfcafPG9i2UgOeB1s5rb//TzPx0Vo5z0vr1pm1y5bEnN/UYtgG9zehUIJbyrVq8tuPKaOrlt2dWr5LKLzpMLFp0eNV6O+ZokvSrBUdMdPniXJcDcyhNAeuN1hAQhvX3JXkvMBtODlpwpQVQyOGRJ4pAMpgaH5XDkPtVmKDU43DYrhdY21vaq/fB9efGU2NlyaYmmksmUEtBhmbQFNCeKyaxkDueRlUm1TXZbp/v7U33xOgDYGwhUSaAW6a2yS1826+sflOtvuVMWn7OwYKBxrFw4zAmqb9JbCrYtw/fe/2hslsswTXoV41HTHeZcK92zr7FWeuDmTADpjf6Rsad/t+wf6paewf1S1zggu/r2yq79e62vG+37e4d6ZN/gPukZ7M7d35/sl8H0QIG4DlojjFkZzYpsdvRSie5YuLXUt0pDXb3U1zVIY12j9btB/SQaC+5X91ltEqpNfbZNnWqTvb8hMbyd/Xf98GMJFTfbpqmuSerrs22z/TVIff52dY3S1dYsqVSdSDqbk92Pys2+JYZf3hL5r3PDd9r3JexG1qthdoPi39Z9ZbazX0eL21TarjiHRGa4/7yc3MXO7rHjvhTlPdyw9H7aDBy2K8cgx9jNdnn1sLeb1NUs3b1JSSZHRlVH9mc0F/udyw3z5vqWmp6iMya11rS9SRur5cnW3v9obvDRHnhcuWJprL5xd8vcN+ktd0U2Bf2W2+6RlV9bKhO6Ot3mamw7E6XXhtX27r9kpztk+iXVerDsmfddGZi00FiWYSaG9AZLX40s7h/cL71D+2X/0H7pUT+D6u+sjCopVffvV3JadL+S1L2De3L3K9kN46beXJWgNdQ3WtLXWN9kCV/+feoxJXVK0hqV8FntVJvR96nHmiwpVI83ZuNawpmVSSWCOQFVUqhEMSeWeTJZPyKcOWm1JLLeijkiotm/Vfz2xo4wELrukzm9rlFFomFc5/SaCF+N7N5x94O51OI2xdQLc9+kl5FeL2Xwt23j/pdlwvNfsKY9qBuXMHbmjfSWPw4tKR3+UbLaMyynlpTmHuuR/QP7crKqRlWVxObLrWrfPbjPl4O+s2mcdDR1Skdjh4xr7pS2pg5pq++Qtsb23P0dzeOkvbHdkjz1o9qr/3OiaQunJalNWfnMu890OfQFrAFBkV4DiqAxBaRXI0xCuSbgm/SqDIqH1dV9zOl1XRutDRPpQenY8PfS8dY/SCIzJMn2I2XXB++xfnPLEhhL0qu+pt/Z957s7H9fdvXtHPm7933Z2Zf92dWfvX9X3/uyu3+XpDJ6l+FpqmuW9qasjLY3dEh7kxJQJagdlrSq+5WsKpFVj1mCqkR1WFI7GjsL7i/+SjOIOb08d4IjgPQGxzqInpDeICjTRzEBX6VXdcbqDWYddI37X5GuFy+Vpr3PWIntPepb0nPwl81KMqRsoi69arrAlu7NsqN3m2zr2Srbe7Za8vpe73bZ2WtLrJLc96yRWK83NcfTGiEdls5xTV3S2thWIKPjmsZZolpJUie0TPTavef2SK9nZEZvgPQaXR7PySG9npGxgQYCvkuvhhyND2HynN5S8Dre+WfpfP3r1tJmaq7vviNXSt/UzxjP2s8ETZbed/a9mRNZJbM7erbJ1v1bLLG1f7yK7OTWA2Ri62SZpH63TJJJrZNF3TehbZJMahm+vzX799T26X6i9yU20usL1tCCIr2hofelY6TXF6wErUAA6dVwiERRetVu1w2+J+Ne/aq0bb3HojDYdYrsnXerDHUeq4FK9EKEIb0bu9+2BNYWVzVCu23/luxorZLa3m2yb2Cva5gHds60BFX9TLN+ZsjE1kkyUUls2+Ts75bJMr5lguuYUW2I9Ea1cs55I73xqifSG696RmVvkF4NlYqq9Nq73rT3Wel68cuipj6oq7n1HviXsu/Iv5N04yQNdKITQpf0qvmySlrzRXb7/pERWWvqQe9Wa56sm5s6iWpK29SczE5tnybTOmYUyO3UtukSxJQBN/ma0gbpNaUSevJAevVwNCUK0mtKJcZWHtql174CyBc/92fy/R/9XF545U1HoscedVjBRSuijD3q0muxz6SlffMd0rn+61I3tFsy9Z3SPWeF9Bz8FcnkrYMZ5TpVyt2L9L6+61XZuO8t6+edvW/LW3vekC37N1ujturkMLe3KW3TrBFZe3R2eueBluBO7zhQDhgW3QNap7gNR7s8AkhvvA4HpDde9UR641XPqOyNdum1d7zcOr3q5DYuTmHmIaKEt/P1v5X2zd8XkbQkWw+TfXNvkv4pnzYzYY1ZFUuvEts397wur+16xZLajfvekbf3brBGcCvd1NxYW2RzUw06ZlgyO7l1Sk50K8Xh8eoJIL3VszNxS6TXxKpUnxPSWz07tqyeQCjSy8Upqi9YUFs2dr8g49WUh31/tLpUlzHed/StMtRxVFApBNKPWvFg/a7XZL0aud2/Xl5+7yV59f1XZMOe9WX7P6jzYDl43CEyq+swOaTrMJnVdajM7Jxlia4SW27hE0B6w6+BzgyQXp00w4+F9IZfg7GYQSjSq9bvXffcy1yG2PgjLiNtW+6WzteulfrB7SKJeuk56BLpPvzrkm6M1olQ6mIIr+162ZJbJbnq7zd2vyabuzeWrIKS18MnHClHTDxaDhs/Rw7pmi0Hd82SQ7vmGF85EhRBeuN1FCC98aon0huvekZlb7RLr33xia3bd5aWiamTZPXNV8nsWTOiwqlsnrGY01tmDxPJbul84++k451/slqlm6ZI9+HXS89BXzSufmpN2vW7syO3r+96RdbvzkquOrHM6VafqJeZ4w6RIybOlXlTjrZ+z+o8QuZMONL4y7IaB9+whJBewwpSYzpIb40ADdsc6fW/IPaVcR94ZF1BZ/Y5Vb/53R9HDUDa52UtPHW+/Phnv5VSLqcuZbxpyw657uY7C2I7XeLYvl7DN66+RC5YdHrZHS++ZLKbbbyQ1C69dufl5vR6STAKbeMuvXYN1GWMu16+Qpp3PWrdlWqdJd1z/lZ6Z3w+0DJlJGON0KqRWktudyq5fc0S3L0DexxzUZeTVaO1h4+fa4nt4ZPmyuET5srsCYeLujKYunk5kS3QHaazqgggvVVhM3YjpNfY0lSVGNJbFTZPG9nSu+CEo0vKppLMQ2ZOyz2u/le3K5ctyfWlBjOvXblGblyxtGCwsvhbeyW3K1auGTWoacfctmNX2W/4Vb63//A/5YsXniUTujpzV/BduWKpnDh/rqd9L9XYN+nVkl1EgowV6bXL0fL+w9L52nXSuP9F666hzuNkzzHflaFx832pmFoN4bmtT8sftj0jf9z+rPzXjueke7Dbsa+2hnaZM+EIOXyiktujrN9qioKae6tGdcvdkF5fyhdaUKQ3NPS+dIz0+oI1tKBIr//o3Uhv/gClyuiW2+6RlV9bakmnfXMrvfYo8VXLluQkVd238h/vki9fdJ7c/J27ZfllF7r+lt9N/l4pIr1eiTm0H2vSayNo23KPdL5xg9T3vWPdNTjuBOk57H9J39TzaqL6xu7X5dmtT8q6LU/IM+8+KeoCDsU3dXEFNWo7Z+KRcuSko6xRW/WjLs5Q7Q3prZacmdshvWbWpdqskN5qyZm5XVylt7vbeUDG7yp0do5Iqt2XW2lUI7R33P2gtdmXPr9o1KiqW+lVcVatXluwHK267/Gn/2SNHBePKldi4iTRlbap9Liv0ltufi/r9FYqTXQeb9/4XenYcLPUD2bnzaplzvbPXi69B17kaiee3/57eXrr7+SpzY/LM1ufdJyi8KFpC+T4aSfJCdNPkuMO+KAcPO5QV7G9NEJ6vdAyvy3Sa36NvGSI9HqhZX7buErvSy+9JJlMJvACzJs3TxKJREG/leb05o/mOk1rsIOVk978Ob1nn7lg1PQFFfe0k4+zRNpJisuBKpdTtYB9k978TxgfmDdH7rrvV7L80gultaXJsn0bQrWJm7TdWB3pLahBJiltW9dK+1urhq/sJpJqniE9h/6N9Mz875Kpa7OaqyXCfr/1aXn63Scswf3DtmelN9lTEEpdlOFD0xfIidMXiJJdJblqTq7fN6TXb8LBxkd6g+Xtd29Ir9+Eg40fV+nduHFjKNI7a9asUQX0MtK76rs/kvd37xOn+bNuRnq3bH9/1Lzf4uVpvYzcKk+sNAe4miPWN+ktN0+Ei1NUU6robNPy3oPSsWGVNO19ykp6oK5dflV/tNyyc1B+995Loi7Ta9/UPNu5k+YNS+4pcsL0k+XgzkNC2VmkNxTsvnWK9PqGNpTASG8o2H3rNK7S6xuwKgK7kd58V9u1e9+o6QmqWzfSqwY0i09sU/8Xr+6g4qkpFPknyhXvml/Cq/oJRHonju+0JjKv+Jsv5M7Ic5osXUVNjdiEkd6RMqjL8j6z5SlrPm76/UfkLxo2ydntIupLl76MyL/ub5JfNZ8sh0z/mDWK+8GpHzJmaTCk14ink7YkkF5tKI0IhPQaUQZtSSC92lCWDORGenWu3mD3N23KRLn0ovPl+lvulOKVIypdnMyPKQ35gHyT3mLY+WC5OIX/B3tQPby5Z708sflReXLzY/L0lt+NWg9XXcjh3GlHydKW7XJ07x8kIUmRRIP0Tvus7J/9NUm2Hx5UqhX7QXorIopUA6Q3UuWqmCzSWxFRpBogvf6Xq9Kc3nLr9C45Z2FuGTO3I71qj+wpDIcfeqCsf3PzqGXO7JwWn7Nw1Alz9rYvvPJmARynucLV0vNNeosTyt+Z6Vycotp6hb5dz9B++fU7D8tjG39t/d7Ws6Ugp5NnfEROmn6KddLZSdNPFbXKgn2r798s7W/dKu2bvy+JdJ91d++ML0jfjM/LwKQzQt83pDf0EmhNAOnVijP0YEhv6CXQmgDSqxUnwVwSCEx6XeYTyWZxn96gRPcXbz0oP3l9rfzy7eyyJvbt1ANPl9MOPkNOP+gMmT/1Q67qVze0W9SKD+1v/6PUJfda2yTbj5Seg5dJ70EXSaau1VUc3Y2QXt1Ew42H9IbLX3fvSK9uouHGQ3rD5T9We/dNerkiW7QPKbWiwkMbfio/e+M++cVbD+R2pqt5vHzmiM/Jxw89S0458DRpqa9eUBPpfmnbeo+0vX1b7kIX6cbx0nvgxdIz6zJJtRwUKESkN1DcvneG9PqOONAOkN5AcfveGdLrO2I6cCCA9Go4LOIy0tuX7LVGcn+6/t/lN2//wlpeTN3GNXfJWYeeK+cdsUQ+MnNhxSubVYO0edfj0rbxNmnd8TORTEokUS99Uz4tvbMuk4EJp1UT0vM2SK9nZEZvgPQaXR7PySG9npEZvQHSa3R5Ypucb9KriMVtPd5SR0GUpXcg1Z8V3df/3Zqjq8RX3dobO+SThy6yRPdjB39CGuoaA3kS1PdtkvaNt0nb5u9LXXKf1efAxIUyMPVs6Ztynq+jv0hvICUOrBOkNzDUgXSE9AaCObBOkN7AUNNRHgFfpVed8Zd/UYq4ko+a9CrRfeTtn1sjuuq3fXEINVXhjEM+JecfsVg+cegiaaprDq1k1tSHLXdL2zvfkcb9Lw/nkZDBrhOlf/pnpW/an0uqebrW/JBerThDD4b0hl4CrQkgvVpxhh4M6Q29BGMyAd+kt9TSEzbluFyG+MUXXxyTB06QO93a97J07X5QuvY+LI1D2Usdq5V/e9uOk33jPyV7x/+ZDDUcEGRK9AUBCEAAAjElcMwxx8R0z9gt36R3rKBFeoOsdEbae5+XcUqA9/xCGlK78gT4A8MC/CkEOMiS0BcEIACBmBFAemNW0Lzd8U16y63ewGWI/Tugkukh+c3GX8pP1/9YfvnWA9I92G11VpeokxOnn2pNXTh3zp8XrJ/rXzY+Rs6kpXnXb6V161pp2fETqRvakxPgwa6TpX/G8BSIpqmuk2B6g2tUkWjI9IZIlMl1kkxvcI0qEg2Z3hCJMsUuyVCkt9Jl6KJGOew5vUp0f7vpEUt0H37zZ9I9mD0BTN0+OPVES3TPO3yxHNDmXgCjVINEekiad/5KWrauldYdD0gitT9PgBcMC/BnJVVBgJHeKFW9cq5Ib2VGUWqB9EapWpVzRXorM6KFfgKhSK9plyFWq0zccXfhRRe+cfUluUvwqXyvu/lOi77T5fDCkN5kOimPb/61Jbo/f/N+2TeQvciDus2bfJycf8QSaz3d6R0H6j9qDI6oToBree8hS4BbdjwsiUz/iACPP0X6p18gfdOcBRjpNbiwVaSG9FYBzeBNkF6Di1NFakhvFdA8bqK+VV+1eq3cftMVMqGr09ravgzwtCkT5cplSzxGjH5z7dKrRnGXXb1Ktm7fWZKOaZchVtKrbk4HQPFB49Q2KOlNZVLy+ObfyP2v/1h+/tb9sqd/d47xERPnyrmHL5YLjvyczBp3WPSPTA17oEZ8W7ffbwlw885fSyIzVCDAfcOrQKSbsifBIb0aoBsUAuk1qBgaUkF6NUA0KATSG0wx1KDd25u25fzGtEHHYCiM9KJdeu3QUboiWznpVY8dMnNabtTX6ZOTn9KrRPd3m387PKL7U9ndb5+8JZbcnnv4Z+X8I5fI3Inzgj52ItWfmvPbuv0/pGXrj6R512O53NMNXTLUdbwMTlooDTPPlsGO46SnPxmpfSNZZwJIb7yODKQ3XvVEeoOppz2yu/ichTLn0ANlxTfXyPLLLpTZs2YEk4BhvfgmvYbtZ9l0iqc32FMb7INlwQlH56RXjWRfu3KN3Lhiae6g0S296Uxannz3MUt0H9rwE9nVPzJqPqPjIDlnzmflvCMWywemHB8lzMbkWjf4nrRu+7G0brlXmvY+LSKZEQlunSl9k8+SgSmLZGDSRyWTCG+tYmOARTQRpDeihSuRNtIbr3rGVnq3PJS9qmjQtwM/XbJH+zyqcR1tku8zQadoQn9Ib1EV7OkZK1cslWPmHibX33KnqE9IJ86fa7Uslt7P/OgzsvDgT8gl8/9HzfX8047nZfVz35EH1t9fILpT26fJuUd8Rv78qM/JKQd9uOZ+CDBCIDGwXRq2/1wa3v1PaXjvEZHhSy9bLepaJDnl45I86LMyNPMvwBYxAq1N9ZJMpWUoNfKhJmK7QLp5BFQ9h5JpSaapZxwOjLbmehkYSkvKwHp2tjZUj/hHHSKpnuq3r3bLz/WI1LeV3HqsT2uwwfgqveUuUGHyxSnsKQ1nnbHAkt5yI72JGxIWy6Mnz5NbPn6rnDbzo64O2b5knzz97lPy2MZH5clNT8iT7z5RsF1X83g5/8jPyuKjPienH7zQVUwa1UagualeZOvDIpvvl4btD0pd7zsFATPNUyQ18VRJTf5w9veEE2vrkK19JdCipDedkWQy7Ws/BA+GQGvzsPTyISYY4D730tbSIAODKTOlt62x+r1/fLFIeqD67avd8qM/LbmlPVinGiw592O5b66r7SrK2/kqveXmypoMLX8eb6U5vX/32N/Jqqe+lTup7KMHnyknTD3Z2r32pk6Z3jFDlMBu3f+uDKYG5d39m2Tdu0/Ic9vU1+qFt8MnHCmnHvRROeuw8+S0mR8zGVEscys+ka1x/0vS8t7D0vTeL6R598g84PydH5hwmgxOOFmGJnxYBsefIumGcbFkE8WdYnpDFKtWOmemN8SrnrGd3mBYmfLn9E6cMG7U9EzD0vU9Hd+kNyonsqk8H3xknXzhgk9YsIunL7hZveGN7e/LD19YI2ue/yfZ3rPVVdHGt0yQ46eeJMdPO0lOmHaytZ5uZ1N2SRFu4RAou3pDJilN+56Xpj1PSeOuddbv+kH7ksh2vglJth8pA+NPkaGJp8jg+AWSbJsTzs7QqyC98ToIkN541RPpDaaerN5QyHnMS6/9KeiBR9blyPzg1mtyc3jVnV7W6X1m65Oyad87lvxu7X5XtvZukd6h/TKlbZpMa59hnXx2zJT5MrNzVjBHPL24JuB1ybL6/nekefc6adz9lDTtfkrUyLBI4Vfp6cbJMjhhgQxOONX6PTTug5wc57oitTVEemvjZ9rWSK9pFaktH6S3Nn5utmad3tGUfJNe1VXx1AA3RYpiG92rN0SRQRxy9iq9xfus1gVu2v20NO1+0hoJbtrzrCTShSc0pFoOkWTrwZLsmCvJrvkyOO6DMtT5gTjgM24fkF7jSlJTQkhvTfiM2xjpNa4kYyIhX6VXTRW4675fyfJLL5TWlqbYAkV641HaWqV3FIVM2hr9tUaB9zwlzXvWSX1f4clxaptMokWGxh1rrRc81HWCDI07Xoba54ok6uIBNqS9QHpDAu9Tt0ivT2BDCov0hgR+jHfrm/SWW7lBMTd59QavxwTS65WYme21S6/DbtYN7pKmfc9K474/SuOe56zf9QNbRvtyXZsMdR4ng13HS7LrhOzv9iNEJLtaCLfKBJDeyoyi1ALpjVK1KueK9FZmRAv9BHyTXv2pmhsR6TW3Nl4yC0J6nfJRF8to2vucNO79vSXBalpE3dD7jiKs5Heoc74kx58gvdM/52X3xlxbpDdeJUd641VPpDde9YzK3iC9GiqF9GqAaECIsKTXadfV6G/jvv+Sxj3PSuPeP0jTvuekbmjkynz526SaZ0iyfY4kW2dLun22DHXMlVTrITLUcbQBVMNLAekNj70fPSO9flANLybSGx77sdyzr9KbvzLC9KmTZPXNV8mMqZNHXfAh6gVAeqNewWz+Jkmvowj3b5bGfc9nRVgJce9rjnOEC4S45SBr2bRk22xJKTFuP0KSrYdaJ9LF/Yb0xqvCSG+86on0xqueUdkbX6U3/8pmt9x+j3zhgo/L7FkzRC2jce/9j8oNyy+JxQluSG9UDvfyeZouvU7ZJ9JDUt/3ljT0viENvRukvkf9Hv67b/OoJdRGYtRJqnWmJNsOs6TYEmJLjudYo8SZuhquSGTI4YD0GlIITWkgvZpAGhIG6TWkEGMsDd+kN//iFGp0N1961aoOt9x2j6z82lKZ0BX9CzIgvfF41kRReiuRb9j/qjQoKe55fViIN1hSXN+vhLj0LdU6q2CEeFCdTDf+lErdGfU40mtUOWpOBumtGaFRAZBeo8oxZpIJRXoZ6R0zx1ekdjSO0luuAI37X8mOEu9/LSvEfRukoWeD1A+8W7Zumbo2SbUcKKmWGdmf5oMkbf2dvS+tfjdNDb32SG/oJdCaANKrFWfowZDe0EswJhPwTXoVTXUls3XPvSwr/uYL8k93/oc1vWHi+E659Jpvy5JzFsoFi06PBXRGemNRRuPn9AZJWa0vXN/79vAI8Xpp6HtT6vvetZZXS6T7XKWSaplpCXGqZbolxLYYD0z6mKQbJ7mKUUsjpLcWeuZti/SaV5NaMkJ6a6HHttUS8FV6VVJqVPfiy28qyK/4Mr/VJm/KdkivKZWoLY+xNtJbLa26od3WaHDdwDZp6NskdX2bLRmu699i3V/f/67UJfe6Dp9qOUjUChTpxgmSbj5AUk1TJNM8RdJNUyXVPE3SjRMl3TzF8+gx0uu6BJFoiPRGokyuk0R6XaOqqaHTNRPOPnNBbM6p8grHd+n1mlAU2yO9Uaza6JyRXn11TKT7pb5/k9T3b7Uk2BJhW4gH35P6ga1SN/Ce61FjOzM1QpxuOkBSSoobp1i/s4KclWX7MXUyHtKrr54mREJ6TaiCvhyQXn0sS0WyV9BacMLRBd+sf+/f7pczTzvBWlhgrN18lV61esO2HbsKPlGUKkKUwSO9Ua7eSO5Ib/B1TKR6pH5whyXAdYM7pH4w+7uuf4eoi3Zk71N/7xA1wiyScZ9kQ4clwcnGA7IjxcO/1d/Wz7A0p9X9TRPdx6VlKASQ3lCw+9Yp0usb2lxgtWjAtSvXyI0rlo5JwXUi7Jv02nK7+JyFcuL8wjVBOZHN/4OdHrwTQHq9Mwt6i/qBbVkBHtwp9t+JoZ3WiLIS56wgq5Hk8ifjFeet1i92OvkuU9cqmYYOydS3S6a+Q9KN40Qa2qz/0/UdkmkYvt/6O6+d9XdH0Hhi3R/SG6/yxlV6H3pIJJUKvlaf/vToPu2pDQfPmDJmpzMUU/FNevOXLCseQmfJsuCfEPRYmQDSW5lRlFpMbO6Vwf1bZbBnu9QPqNHk4RFj9XtIifH7Uje4PSvRyX2+7Jpa6cISZFuIG7okU98i6YbOrEir0ej6dpGi/5UwWxKdaJJMXbNIXbO1dnIm0SyZ+mYR67d6rNWXvE0MivSaWJXqc4qr9HZ0iPT0VM+l2i1Vn21tpcX3hVfezD34jasvic1CAl55+Sa9jPR6LQXtwyaA9IZdAb39e5rTm0lLXWq/JNRPssf6bf0//LeahpH9f79IslvqUj3W39b96veodj2SSPd6m45R5e5nEo3DUjwsyEqIlSBbomwLc/ax4v+lrikr0nVNIvUtBXEK2ir5tmVbbVMyrurXHxFHeqs8QAzdLK7Su3ixyMBA8NB/+lN3fdqLC8RtQQF3ey/im/SqBBTcFSvXWJcftkd71SjvsqtXyWUXnRebTxrM6XV7uJndDuk1uz5es/MkvV6Du2xvybMlx1lhzsnzsFBnRbsnK9JDWdlW/1tt032iTghMpAesH0kP5v627kvtd5lFOM2yo9xZqZb65qxcJ5RcD/9dn7n2rZcAAB48SURBVB25Hvm/qG19k0hdi4gl3E3S1touA+kGGUpn/7e3TbYcIsn2w8PZSXqtmkBcpbdqIAFtGMfzqryg81V6VSK25G7dvjOXV9w+YSC9Xg45c9sivebWpprMTJDeavKuZhtLlofl2EmQs8KclWbJKIkeEWhbpiWVFWxJDxXGyuS3VY/ZIj7oIOLd1aTPNoYRyCTUh43EcFbqd6Lg/0z+Y9bfxT9q0+w2GfuxXLvsY3V1dZLJiGRjJdQfVn+5/3N92nmoZiP9FGxXKp+8Pq088nNVfw/3ObJ/Cckk6qT5rMcMq0h16Sj/uuu+X8nySy+U1pYmK8hYP7nNd+mtrlTR2grpjVa9SmWL9MajjvZejCXpNbFyIyKu5LhYtAckkUlnR7VtEU8NSSKjpHuk7YiID0pL/ZCkhvollVKj3INW25ykZ+wzh5RFqRU+Mup7zJG/szpl/a80zP57ZDWQvLZqe7Xt8EohCTve8PZZ1sOriOQ9ZrXL2y6XR4ntrTzyH8utTFKY30j/w1UuipfI9JtY/mjn9N88rBJj8J7ao7oPPLIul+X0qZMKvn03OH1fUkN6NWBFejVANCAE0mtAETSmgPRqhGlAKOb0+l8ENYqfFfriDwzqruEPDE4Sb8v+8GMjQm9/QCj6UCEZmTiuSfb3DslgMlXmg0jh9tkPLHn3jfrgkM3T3oeCDyzWZg4fiHIfhOwPRiKTDv+k/7DpIRQCvkqv05VA7L089qjD5PabrpAJXZ2h7LjOTpFenTTDi4X0hsfej56RXj+ohhcT6Q2PvR89M6fXD6rErETAV+lVF6dQtyuXLamUR6QfR3ojXb5c8khvPOpo7wXSG696Ir3xqifSG696RmVvfJPecuv0RgWO2zyRXrekzG6H9JpdH6/ZIb1eiZndHuk1uz5es0N6vRKjvQ4CSK8GikivBogGhEB6DSiCxhSQXo0wDQiF9BpQBI0pIL0aYRLKNQHfpFdloKY3HDJzWmzW4y1FFel1fbwZ3RDpNbo8npNDej0jM3oDpNfo8nhODun1jIwNNBDwVXqd1ojTkLNxIZBe40pSVUJIb1XYjN0I6TW2NFUlhvRWhc3YjZBeY0sT68R8k95yKzcooqzeEOvjKpI7h/RGsmwlk0Z641VPpDde9UR641XPqOyNb9IbFQA68mSkVwfF8GMgveHXQGcGSK9OmuHHQnrDr4HODJBenTSJ5ZYA0uuWVJl2SK8GiAaEQHoNKILGFJBejTANCIX0GlAEjSkgvRphEso1Ad+l99nnX5WLL7+pIKEf3HqNnDh/ruskTW+I9JpeIXf5Ib3uOEWlFdIblUq5yxPpdccpKq2QXv8r5XQZYtWrPb30N7/7o6x77mW5Yfkl0trSZCVkT01deOp8+fHPfitbt+90TFR53KYtO+S6m++s6He2B37j6ksqLmxw34OPFcR0s40Xkr5Kr9rRVavXFlx5TZ3ctuzqVXLZRedV3HkvOxJmW6Q3TPr6+kZ69bE0IRLSa0IV9OWA9OpjaUIkpNf/KtjSu+CEo0v6VvEqW04XFVPedu3KNXLjiqUye9aMXOJKUPOlWTnfipVrZPXNVxW0s2Nu27GrQLCLCah8b//hf8oXLzzLulqvLeBXLVuibaDUN+m1YS8+Z+GoZBWYe+9/tOzO+3846OsB6dXHMsxISG+Y9PX3jfTqZxpmRKQ3TPr6+0Z69TN1ksjrb7lTyklv/oXE1Pa33HaPrPzaUks67Ztb6XWSVHXfyn+8S7580Xly83fuluWXXVggxOUouJF2rxR9k95yV2RTAJ3Aek3elPZIrymVqC0PpLc2fqZtjfSaVpHa8kF6a+Nn2tZxld7u7u5QUHd2jkiqnYBbaVQDkXfc/aC12Zc+v2jUQKVb6XX6dl/d9/jTf5Irly3xfO0Ge2bAyhVLGekN5agq0SnSa1I1qs8F6a2enYlbIr0mVqX6nJDe6tmZuGVcpfell16STCYTOPJ58+ZJIpEo6LfSnN780VynaQ1uRnrz5/SefeaCUd/gq7innXycJa1OUuwEKn/J20jN6VXzPdbe/yhzegM//OmwGgJIbzXUzN0G6TW3NtVkhvRWQ83cbeIqvRs3bgxFemfNmjWq2F5Geld990fy/u594jSq6makd8v290fN+y3+Vt/rHF23+Xs5yn2b3mAnweoNXspB2zAJIL1h0tffN9Krn2mYEZHeMOnr7zuu0qufVPUR3Uhj/lTUXbv3jVp8QPXuRnrV6g/FJ7YVr8Rg74maQqGmO7i5qRhvb9rmun2lmL5Lb6UE4vA40xviUEURpDcedbT3AumNVz2R3njVE+n1v55upFfn6g12f9OmTJRLLzpfnE6iK3dOlxLw79/zkLWtkmh7ZHjJOQu1rfblq/QqmMVLVLgpgv+Hgt4ekF69PMOKhvSGRd6ffpFef7iGFRXpDYu8P/0ivf5wzY9aaU5vuXV680XT7Uiv6tsW1cMPPVDWv7l51DJn5Vb2Utsrb7RPqlP/R2ZOL0uW+X9A04NeAkivXp5hR0N6w66A3v6RXr08w46G9IZdgbHZv28jvSxZNjYPqCjvNdIb5eqNzh3pjVc9kd541RPpjVc9o7I3vkkvI71ROQTI0yaA9MbrWEB641VPpDde9UR641XPqOyNb9KrADhdko7LEEfl0Bh7eSK98ao50huveiK98aon0huvekZlb3yVXgXBltyt23fmmPzg1mu0XV3DBNCcyGZCFWrPAemtnaFJEZBek6pRey5Ib+0MTYqA9JpUjbGTi+/SOxZQIr3xqDLSG4862nuB9MarnkhvvOqJ9MarnlHZG6RXQ6WCkN6NGxOyYX2dvLE+Ie+/L9Lfl5D+fpG+vpG/1f/9/QnpV/dZj9l/J6S3N7ujkyZlpL1DpLMzIx2dIg0NGWloEKmvV3+L1DeINKi/G7P3q7+t+wraZLJt1P2Nibw2mVyc/Fj1RX04xbL7GOkvM5JLXl52rOZmDYUrCoH06mcaZkSkN0z6+vtGevUzDTMi0hsm/bHbN9KrofZ+SO+LL9TJT+6rk9/+pl7eWF8nAwMaEo1pCCXAWcnOynhOoHOiXkqgs9JvC39Lc8L6WxKqfeGHgRFRz4ulhD/3wWCkfWPjyIeHbC6Fedn9WX07frBw/iBix2ptjWkhNe8W0qsZaMjhkN6QC6C5e6RXM1DCuSKA9LrCVL6RLul95+2E/Od9DXLfvWpEt66g03FdGTnyyIzMOSItMw8WaWnJSEuLSGvbyN9tbdkRWy+3ZFLE/kmpv1PZ/1PJhPW3dd/w/dm/E9n7rMcyMjQkkrK2SWS3y21vtxl+LC9Wrk0qIcmh/HbOsQrbZEe4uflHwB5FTyRE1I+62X8nEpnc/1L0WH476+/h7Qrur7SNQ592LBWwOJ+R2CN52W3q67OdpTOZbP5O+eTtW3H+Tv3l+i8Va/hpO5Jntu9RbIb3ZfghK7ly7Zy2H7XN8CHhVLdiTva2Jft0iFWWR4W6ldz/HJtCTk7HVltzvSRTaUmmhutpM8xB9O85QWT9BNpaGmRgMCWpdPa5a9Jt1c2NJqVDLhoJIL0aYNYivd37EnL3XfXyk/+ol+f/MCK6SnI/dVZKPn1uWj7wwbQccIB5Lwwa0GkJoaZ4FMr4sLgPC7j1mIOMp9MJGRwcEfXmBvUinJGevnSe2JeOlU5lZEBtb38YyPWXL/+FHwZGPhjkf3hw+GCRHyv3ISMbi1F/LYcNQSAAAQg4EsjwdhvbIwPp1VDaaqX339c2yNf/d4Ps2pUdqlDzbRedk5Kzzk7LRz+W0pAZIbwQGMtzepVIqxd6+8W+8O9E7n4p2UbUQ47bl91m+M3F7s9+r7HyKHpM1bJUXrn787bpbG2UgWRK+gfTJfarMN9K+za6/+IcRziVZpnbLeuPYt7O/Efajdpm+ADP8XNklqjMchRbN/wd8refcOWOk1yOhbwq7VtrU70MDqVlKJUNYO2zgaOEXl5zxnJbU0d66+oTcsvKhrFcmljvO9KrobxepXfvnoQs+1KjPP7b7FyET/5ZSr78laScfEpaQzaEqJbAWJbeapmZvB1zek2ujvfcmNPrnZnJWzCn1+TqxDc3pFdDbb1I7/rX6+SvLmwStRrD7Dlp+ftVSTnlw4zqaihDzSGQ3poRGhUA6TWqHDUng/TWjNCoAEivUeUYM8kgvRpK7VZ61cjul/6qSXp6RD7+yZT88+oha+kwbmYQQHrNqIOuLJBeXSTNiIP0mlEHXVkgvbpIEscLAaTXC60Sbd1IrzpR7bKlTVaE5SuScvlVQxp6JoROAkivTprhx0J6w6+BzgyQXp00w4+F9IZfg7GYAdKroeqVpPfJJ+pl8flZ4V1956B8+lymM2jArj0E0qsdaagBkd5Q8WvvHOnVjjTUgEhvqPjHbOdIr4bSl5PeV1+pk/MXNUl3d0L+v6uScvUKRng1IPclBNLrC9bQgiK9oaH3pWOk1xesoQVFekNDP6Y7Rno1lL+c9J5xWrO89kqdNbqrRnm5mUsA6TW3NtVkhvRWQ83cbZBec2tTTWZIbzXU2KZWAkhvrQRFpJT0/tsPG+SrVzXKxIkZefr5flFXTONmLgGk19zaVJMZ0lsNNXO3QXrNrU01mSG91VBjm1oJIL21EiwhvWo6w8kfbBa1Ju/KfxiSv7o4qaEnQvhJAOn1k27wsZHe4Jn72SPS6yfd4GMjvcEzp0cRpFfDUeA00vt//rZRVt/WIEccmZZfPzEg9jXuNXRHCJ8IIL0+gQ0pLNIbEnifukV6fQIbUlikNyTwY7xbpFfDAVAsvZs3JeTDJ7VIckjkvvsHuNKaBsZBhEB6g6AcXB9Ib3Csg+gJ6Q2CcnB9IL3BsaanEQJIr4ajoVh6L/nLJnn4oXr59HkpWX0HJ69pQBxICKQ3EMyBdYL0BoY6kI6Q3kAwB9YJ0hsYajrKI4D0ajgc8qV33ZN18tlzm6WpSeSJZ/rlwIO44poGxIGEQHoDwRxYJ0hvYKgD6QjpDQRzYJ0gvYGhpiOkV+8xYEtvJiNyxkea5fXX6uSK5Un5X19lTV69pP2NhvT6yzfo6Ehv0MT97Q/p9Zdv0NGR3qCJ058iwEivhuPAlt777m2Qv760UaZMzchTz/VLS4uG4IQIjADSGxjqQDpCegPBHFgnSG9gqAPpCOkNBDOdFBFAejUcErb0fnJhs7z0Yp3883eH5DN/zhJlGtAGGgLpDRS3750hvb4jDrQDpDdQ3L53hvT6jpgOHAggvRoOCyW99lzeAw7IyO9f6JeGBg2BCREoAaQ3UNy+d4b0+o440A6Q3kBx+94Z0us7YjpAev05BpT0XvnXjfKjuxvkyuVDctVXGeX1h7S/UZFef/kGHR3pDZq4v/0hvf7yDTo60hs0cfpTBBjp1XAcbNrRJ0fPbpH9+xPyy9/2y9HzWLFBA9bAQyC9gSP3tUOk11e8gQdHegNH7muHSK+veAleggDSq+HQuGvtgPzF55rl0MMy1jJl3KJJAOmNZt1KZY30xqueSG+86on0xqueUdkbpFdDpf7bX6bk7n+rl7+5Milf/RrLlGlAGkoIpDcU7L51ivT6hjaUwEhvKNh96xTp9Q0tgcsQQHprPDxSKZHJB2Rkz+6E/OLRfpl3DFMbakQa2uZIb2jofekY6fUFa2hBkd7Q0PvSMdLrC1aCViCA9NZ4iPzqVyKf+IRYV1575nmmNtSIM9TNkd5Q8WvvHOnVjjTUgEhvqPi1d470akdKQBcEkF4XkO578DG57uY7rZZnn7lAblh+ibS2NFn/f/nLIqtXi/zNFUn56rVMbXCB09gmSK+xpakqMaS3KmzGboT0GluaqhJDeqvCxkY1EkB6KwB89vlXZdXqtXL7TVfIhK5O+dbqtdYWVy5bYv2eNk1k+3aRXzw6IPOOSddYDjYPkwDSGyZ9/X0jvfqZhhkR6Q2Tvv6+kV79TIlYmQDSW4GRktxDZk6TCxadbrUsluBEgqkNlQ+zaLRAeqNRJ7dZIr1uSUWjHdIbjTq5zRLpdUuKdjoJIL1laPb1D8r1t9wpC044Oie9G97ZIteuXCM3rlgqs2fNECW9f315Uq7530xt0HlghhEL6Q2Dun99Ir3+sQ0jMtIbBnX/+kR6/WNL5NIEkF4X0rv4nIVy4vy5Vksn6b333jdk7lxOYuOJBgEIQAACEIg6gWOOOSbqu0D+JQggvS6kt9xI789//rocdNAgBxgEIAABCEAAAjEggPTGoIhIb3VFrDSnV0XdsrOvuuBsZRQBpjcYVY6ak2F6Q80IjQrA9AajylFzMkxvqBkhAaogwEhvBWiVVm9Aeqs46gzdBOk1tDBVpoX0VgnO0M2QXkMLU2VaSG+V4NisJgJIrwt85dbpRXpdAIxIE6Q3IoVymSbS6xJURJohvREplMs0kV6XoGimlQDSqwEn0xs0QDQgBNJrQBE0poD0aoRpQCik14AiaEwB6dUIk1CuCSC9rlGVboj0aoBoQAik14AiaEwB6dUI04BQSK8BRdCYAtKrESahXBNAel2jQno1oDI6BNJrdHk8J4f0ekZm9AZIr9Hl8Zwc0usZGRtoIID0aoDISK8GiAaEQHoNKILGFJBejTANCIX0GlAEjSkgvRphEso1AaTXNSpGejWgMjoE0mt0eTwnh/R6Rmb0Bkiv0eXxnBzS6xkZG2gggPRqgEgICEAAAhCAAAQgAAGzCSC9ZteH7CAAAQhAAAIQgAAENBBAejVAJAQEIAABCEAAAhCAgNkEkF6z60N2EIAABCAAAQhAAAIaCCC9VUKsdJW2KsOymc8EvNQtv62d1pc+v0iuXLbE5ywJr4OAqt/bm7ZRLx0wA4zhtm48PwMsisauvrV6rdxx94O5iN+4+hK5YNHpGnsgFARKE0B6qzg6nn3+VVm1eq3cftMVMqGrU9STWN2QoSpgBriJ17qpN9V1z70sNyy/RFpbmgLMlK5qIaDqfPHlN1kh+JBSC8lgt/VaN56fwdZHR299/YNy+w//U7544VnWe+eGd7bIsqtXycoVS+XE+XN1dEEMCJQlgPRWcYAoyT1k5rTcp9NimaoiJJsEQMBr3XhTDaAoPnbhdsTQxxQIXQUBt3Xj+VkFXMM2URJ8/S13yoITjma017DaxDUdpNdjZZ2epOrT6rUr18iNK5bK7FkzPEakeRAEqqlb8denjBoGUSl9fbiVJ309EkkHAbd14/mpg3a4MXbv7ZZLr/m2XLVsCSO94ZZizPSO9HostS1Pi89ZmHuSIr0eIYbQvNa62S/OS85ZyIhECPWrpku38lRNbLbxj0A1deP56V89/IzM1EA/6RLbiQDS6/G4qGbE0GMXNPeBgI66VfNm7MOuENIlAerlEpRhzaqtW7XbGbb7YyYdJbzbduzinIkxU3EzdhTpraIOXueGVtEFm/hAoNa68abqQ1F8DEm9fITrY+hq61btdj7uCqFLEEB4OTTCIoD0VkHe6yoAVXTBJj4QqFS3/Bdi1f2/P/Bb+ezZH7VWbmDumQ8F8TkkEuQzYJ/Cl6obz0+fgAcclikNAQOnuwICSG+VB4SX9V6r7ILNfCBQrm7Fow+sJ+lDAQIImb/0ld3dD269hhNlAmBfSxeV6sbzsxa6ZmxrDx688MqbBQmdfeYCpjmYUaLYZ4H0xr7E7CAEIAABCEAAAhCAANLLMQABCEAAAhCAAAQgEHsCSG/sS8wOQgACEIAABCAAAQggvRwDEIAABCAAAQhAAAKxJ4D0xr7E7CAEIAABCEAAAhCAANLLMQABCEAAAhCAAAQgEHsCSG/sS8wOQgACEIAABCAAAQggvRwDEIAABCAAAQhAAAKxJ4D0xr7E7CAEIAABCEAAAhCAANLLMQABCEAAAhCAAAQgEHsCSG/sS8wOQgACEIAABCAAAQggvRwDEIAABCAAAQhAAAKxJ4D0xr7E7CAEIAABCEAAAhCAANLLMQABCEAAAhCAAAQgEHsCSG/sS8wOQgACEIAABCAAAQggvRwDEIAABCAAAQhAAAKxJ4D0xr7E7CAEIAABCEAAAhCAANLLMQABCEAAAhCAAAQgEHsCSG/sS8wOQsAcArv3dsul13xbXnjlzYKkvnH1JXLWGQvk+lvutO6/Yfkl0trSlGuz4Z0tsuzqVXLZRefJBYtOl3Jx1OPfWr1W7rj7wZI7fuxRh8m3vv4VufV798oDj6wb1e7sMxdYOaibykm1+cGt18iJ8+fm2vb1D5Z8zG5034OPyXU3Z/fJ6TZ96iS5+bovy83fuTvHROV2+01XyISuztx+KD5qv/Jv9j7aj+XnU9yXvT/5TM05KsgEAhCAQDAEkN5gONMLBMY8gWJxtYGo+++671ey/NILpX9gwJLiJecsLJA8JXjqduWyJeImTr7c2YJ81bIljtI6bcpEK67TLV8kv/T5RQXtnn3+Vbn48puszYqFuFysBSccPUpg7X6Kc7HFtlhabQZbt++UYukttz9j/iAEAAQgMKYJIL1juvzsPASCI6BGPdfe/2huFLNUz0omV6xcI6tvvkpmz5oh6v9Vq9fmtnMbx46vQ3rnHHqg/OGF9bL8sgutnGxJPe7o2fKDtT+XlSuWFgi1Tund39sv+/f3yuJzFub6UDLc0d4qv/7dH3MfEEqJc3AVpicIQAACZhNAes2uD9lBIDYEimW23I4pqdu2Y5dc8T8WyxVf/07ByK+XOKoPHdKrRmff3rStYLT5ltvuETX6qwTdT+lVnR4yc5qse+5la8qFGg1f8c01Vt/qw4A9Ko70xuapwo5AAAI+EUB6fQJLWAhAoJCA05xTp7mqaqv8r++Lv9r3EseN9LqZ06uk9wPz5si1K9fIjSuWyk9+/oQlouo+NdfYb+n94oVnWdM+1BSNTVt2WAJu31csveX2hzm9PCshAIGxTADpHcvVZ98hEBKB/PmwKoXi+bLqPjWN4bYf/iQ3zcEpVTdxdI302ifIPfPHV2R8V6es/NpS2bWnOxDpVXOOrWkdP/2NhUGJ98TxnQXznxnpDelgplsIQCAyBJDeyJSKRCEQTwKlpisUz+WttPel4uiU3uKT6Oz//R7pVdJr78dJ8+daJ9TZ/zO9odKRweMQgAAEsgSQXo4ECEAgEAKPrfsvUctxqaW48m9KHO1pA+okMftWSnq9xtEpvSq3u+77pSw6c4G1H0FKr+r74UefkTmHHmSdTIf0BnLY0gkEIBAjAkhvjIrJrkDAZAL2mrX5y3vZX8mrvIvX5i0lvV7j6JbeYmEPYk6v05JqSK/JRzu5QQACJhJAek2sCjlBIKYEnC7W4DSfV+1+uekNXuJUkl63J7IVXxxC5ahjpLf4QhvFF6dQ/XiRXk5ki+mTh92CAARqJoD01oyQABCAAAQgAAEIQAACphNAek2vEPlBAAIQgAAEIAABCNRMAOmtGSEBIAABCEAAAhCAAARMJ4D0ml4h8oMABCAAAQhAAAIQqJkA0lszQgJAAAIQgAAEIAABCJhOAOk1vULkBwEIQAACEIAABCBQMwGkt2aEBIAABCAAAQhAAAIQMJ0A0mt6hcgPAhCAAAQgAAEIQKBmAkhvzQgJAAEIQAACEIAABCBgOgGk1/QKkR8EIAABCEAAAhCAQM0EkN6aERIAAhCAAAQgAAEIQMB0Akiv6RUiPwhAAAIQgAAEIACBmgkgvTUjJAAEIAABCEAAAhCAgOkEkF7TK0R+EIAABCAAAQhAAAI1E0B6a0ZIAAhAAAIQgAAEIAAB0wkgvaZXiPwgAAEIQAACEIAABGomgPTWjJAAEIAABCAAAQhAAAKmE0B6Ta8Q+UEAAhCAAAQgAAEI1EwA6a0ZIQEgAAEIQAACEIAABEwngPSaXiHygwAEIAABCEAAAhComQDSWzNCAkAAAhCAAAQgAAEImE4A6TW9QuQHAQhAAAIQgAAEIFAzAaS3ZoQEgAAEIAABCEAAAhAwnQDSa3qFyA8CEIAABCAAAQhAoGYCSG/NCAkAAQhAAAIQgAAEIGA6AaTX9AqRHwQgAAEIQAACEIBAzQSQ3poREgACEIAABCAAAQhAwHQCSK/pFSI/CEAAAhCAAAQgAIGaCSC9NSMkAAQgAAEIQAACEICA6QSQXtMrRH4QgAAEIAABCEAAAjUTQHprRkgACEAAAhCAAAQgAAHTCSC9pleI/CAAAQhAAAIQgAAEaiaA9NaMkAAQgAAEIAABCEAAAqYTQHpNrxD5QQACEIAABCAAAQjUTADprRkhASAAAQhAAAIQgAAETCeA9JpeIfKDAAQgAAEIQAACEKiZANJbM0ICQAACEIAABCAAAQiYTgDpNb1C5AcBCEAAAhCAAAQgUDMBpLdmhASAAAQgAAEIQAACEDCdwP8DLZlx1JV7Ye8AAAAASUVORK5CYII=", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dynamics.plot_history(colors=['lightgray', 'green', 'lightgray', 'orange', 'blue', 'lightgray'])" ] }, { "cell_type": "code", "execution_count": 11, "id": "2f07ad6b-a1c9-4d99-8108-72b16727303d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Min abs distance found at data row: 28\n" ] }, { "data": { "text/plain": [ "(0.3183157284824908, 60.23261431038145)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.curve_intersection(\"U\", \"X\", t_start=0.3, t_end=0.35)" ] }, { "cell_type": "code", "execution_count": null, "id": "94832b6d", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "2bcf7587-5d3d-42fd-8c48-871e1af49891", "metadata": {}, "source": [ "# PART 2 : \n", "#### Notice the fictitious enzyme \"E\" in the first reaction, with concentration 1 (not affecting any of the kinetic parameters)" ] }, { "cell_type": "code", "execution_count": 12, "id": "d4d7a985-a365-412e-8d51-9cabbbb18ec1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of reactions: 2 (at temp. 25 C)\n", "0: 2 S + E <-> U + E (kF = 8 / kR = 2 / delta_G = -3,436.6 / K = 4) | Enzyme: E | 1st order in all reactants & products\n", "1: S <-> X (kF = 6 / kR = 3 / delta_G = -1,718.3 / K = 2) | 1st order in all reactants & products\n", "Set of chemicals involved in the above reactions (not counting enzymes): {'X', 'U', 'S'}\n", "Set of enzymes involved in the above reactions: {'E'}\n" ] } ], "source": [ "# Initialize the system\n", "chem_data = chem(names=[\"U\", \"X\", \"S\", \"E\"])\n", "\n", "# Reaction 2 S <-> U , with 1st-order kinetics for all species (mostly forward)\n", "chem_data.add_reaction(reactants=[(2, \"S\", 1), \"E\"], products=[\"U\", \"E\"],\n", " forward_rate=8., reverse_rate=2.)\n", "\n", "# Reaction S <-> X , with 1st-order kinetics for all species (mostly forward)\n", "chem_data.add_reaction(reactants=\"S\", products=\"X\",\n", " forward_rate=6., reverse_rate=3.)\n", "\n", "chem_data.describe_reactions()" ] }, { "cell_type": "markdown", "id": "abcbc23f-77f4-4c8b-9352-a07e3056681c", "metadata": {}, "source": [ "### Set the initial concentrations of all the chemicals" ] }, { "cell_type": "code", "execution_count": 13, "id": "0f21468d-0344-496a-8cfa-cd55562dc2e0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0:\n", "4 species:\n", " Species 0 (U). Conc: 50.0\n", " Species 1 (X). Conc: 100.0\n", " Species 2 (S). Conc: 0.0\n", " Species 3 (E). Conc: 1.0\n", "Set of chemicals involved in reactions (not counting enzymes): {'X', 'U', 'S'}\n", "Set of enzymes involved in reactions: {'E'}\n" ] } ], "source": [ "dynamics = ReactionDynamics(chem_data=chem_data)\n", "dynamics.set_conc(conc={\"U\": 50., \"X\": 100., \"S\": 0., \"E\": 1. })\n", "dynamics.describe_state()" ] }, { "cell_type": "code", "execution_count": 14, "id": "6c661846-e390-4b48-80a8-00c459391d0b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "(STEP 0) ANALYSIS: Examining Conc. Changes from System Time 0 due to tentative step of 0.01:\n", " Baseline: [ 50. 100. 0. 1.]\n", " Deltas: [-1. -3. 5. 0.]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 3.888888888888889}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | abort 1.44 | (VALUE 3.8889)\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'ABORT' (with step size factor of 0.5)\n", "* INFO: the tentative time step (0.01) leads to a least one norm value > its ABORT threshold:\n", " -> will backtrack, and re-do step with a SMALLER delta time, multiplied by 0.5 (set to 0.005) [Step started at t=0, and will rewind there]\n", "\n", "(STEP 0) ANALYSIS: Examining Conc. Changes from System Time 0 due to tentative step of 0.005:\n", " Baseline: [ 50. 100. 0. 1.]\n", " Deltas: [-0.5 -1.5 2.5 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.9722222222222222}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.97222) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.0025) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0, and will continue to 0.005]\n", "\n", "(STEP 1) ANALYSIS: Examining Conc. Changes from System Time 0.005 due to tentative step of 0.0025:\n", " Baseline: [49.5 98.5 2.5 1. ]\n", " Deltas: [-0.1975 -0.70125 1.09625 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.19250243055555555}\n", " Thresholds: \n", " norm_A : (VALUE 0.1925) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.0025) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.005) at the next round, because all norms are low\n", " [The current step started at System Time: 0.005, and will continue to 0.0075]\n", "\n", "(STEP 2) ANALYSIS: Examining Conc. Changes from System Time 0.0075 due to tentative step of 0.005:\n", " Baseline: [49.3025 97.79875 3.59625 1. ]\n", " Deltas: [-0.349175 -1.35909375 2.05744375 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.6891259762586809}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.68913) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.0025) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.0075, and will continue to 0.0125]\n", "\n", "(STEP 3) ANALYSIS: Examining Conc. Changes from System Time 0.0125 due to tentative step of 0.0025:\n", " Baseline: [48.953325 96.43965625 5.65369375 1. ]\n", " Deltas: [-0.13169275 -0.63849202 0.90187752 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.1375997875121511}\n", " Thresholds: \n", " norm_A : (VALUE 0.1376) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.0025) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.005) at the next round, because all norms are low\n", " [The current step started at System Time: 0.0125, and will continue to 0.015]\n", "\n", "(STEP 4) ANALYSIS: Examining Conc. Changes from System Time 0.015 due to tentative step of 0.005:\n", " Baseline: [48.82163225 95.80116423 6.55557127 1. ]\n", " Deltas: [-0.22599347 -1.24035033 1.69233727 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.494838601385062}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.49484) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.015, and will continue to 0.02]\n", "\n", "(STEP 5) ANALYSIS: Examining Conc. Changes from System Time 0.02 due to tentative step of 0.005:\n", " Baseline: [48.59563878 94.56081391 8.24790853 1. ]\n", " Deltas: [-0.15604005 -1.17097495 1.48305505 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.3994425670227834}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.39944) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.02, and will continue to 0.025]\n", "\n", "(STEP 6) ANALYSIS: Examining Conc. Changes from System Time 0.025 due to tentative step of 0.005:\n", " Baseline: [48.43959873 93.38983896 9.73096358 1. ]\n", " Deltas: [-0.09515744 -1.10891868 1.29923357 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.32519593644806855}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.3252) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.025, and will continue to 0.03]\n", "\n", "(STEP 7) ANALYSIS: Examining Conc. Changes from System Time 0.03 due to tentative step of 0.005:\n", " Baseline: [48.34444129 92.28092028 11.03019715 1. ]\n", " Deltas: [-0.04223653 -1.05330789 1.13778094 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.2673096568217399}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.26731) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.03, and will continue to 0.035]\n", "\n", "(STEP 8) ANALYSIS: Examining Conc. Changes from System Time 0.035 due to tentative step of 0.005:\n", " Baseline: [48.30220476 91.22761239 12.16797809 1. ]\n", " Deltas: [ 0.00369708 -1.00337484 0.99598069 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.22208358683873192}\n", " Thresholds: \n", " norm_A : (VALUE 0.22208) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.01) at the next round, because all norms are low\n", " [The current step started at System Time: 0.035, and will continue to 0.04]\n", "\n", "(STEP 9) ANALYSIS: Examining Conc. Changes from System Time 0.04 due to tentative step of 0.01:\n", " Baseline: [48.30590184 90.22423755 13.16395878 1. ]\n", " Deltas: [ 0.08699867 -1.9168896 1.74289227 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.7466342181101149}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.74663) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.005) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.04, and will continue to 0.05]\n", "\n", "(STEP 10) ANALYSIS: Examining Conc. Changes from System Time 0.05 due to tentative step of 0.005:\n", " Baseline: [48.3929005 88.30734795 14.90685105 1. ]\n", " Deltas: [ 0.11234504 -0.87740469 0.65271461 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.13427741784149083}\n", " Thresholds: \n", " norm_A : (VALUE 0.13428) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.005) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.01) at the next round, because all norms are low\n", " [The current step started at System Time: 0.05, and will continue to 0.055]\n", "\n", "(STEP 11) ANALYSIS: Examining Conc. Changes from System Time 0.055 due to tentative step of 0.01:\n", " Baseline: [48.50524554 87.42994326 15.55956566 1. ]\n", " Deltas: [ 0.27466034 -1.68932436 1.14000367 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.4698737184351335}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.46987) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.055, and will continue to 0.065]\n", "\n", "(STEP 12) ANALYSIS: Examining Conc. Changes from System Time 0.065 due to tentative step of 0.01:\n", " Baseline: [48.77990588 85.7406189 16.69956934 1. ]\n", " Deltas: [ 0.36036743 -1.57024441 0.84950955 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.3685776282283221}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.36858) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.065, and will continue to 0.075]\n", "\n", "(STEP 13) ANALYSIS: Examining Conc. Changes from System Time 0.075 due to tentative step of 0.01:\n", " Baseline: [49.14027331 84.17037449 17.54907888 1. ]\n", " Deltas: [ 0.42112084 -1.4721665 0.62992481 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.3046024715786003}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.3046) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.075, and will continue to 0.085]\n", "\n", "(STEP 14) ANALYSIS: Examining Conc. Changes from System Time 0.085 due to tentative step of 0.01:\n", " Baseline: [49.56139416 82.69820799 18.1790037 1. ]\n", " Deltas: [ 0.46309241 -1.39020602 0.46402119 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.2624936691312418}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.26249) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.085, and will continue to 0.095]\n", "\n", "(STEP 15) ANALYSIS: Examining Conc. Changes from System Time 0.095 due to tentative step of 0.01:\n", " Baseline: [50.02448657 81.30800197 18.64302489 1. ]\n", " Deltas: [ 0.49095226 -1.32065857 0.33875405 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.23332527475445466}\n", " Thresholds: \n", " norm_A : (VALUE 0.23333) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n", " [The current step started at System Time: 0.095, and will continue to 0.105]\n", "\n", "(STEP 16) ANALYSIS: Examining Conc. Changes from System Time 0.105 due to tentative step of 0.02:\n", " Baseline: [50.51543883 79.98734341 18.98177894 1. ]\n", " Deltas: [ 1.01646708 -2.52142713 0.48849298 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.847713943482735}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.84771) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.01) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.105, and will continue to 0.125]\n", "\n", "(STEP 17) ANALYSIS: Examining Conc. Changes from System Time 0.125 due to tentative step of 0.01:\n", " Baseline: [51.5319059 77.46591628 19.47027191 1. ]\n", " Deltas: [ 0.52698364 -1.15576117 0.1017939 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.18042862670354223}\n", " Thresholds: \n", " norm_A : (VALUE 0.18043) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n", " [The current step started at System Time: 0.125, and will continue to 0.135]\n", "\n", "(STEP 18) ANALYSIS: Examining Conc. Changes from System Time 0.135 due to tentative step of 0.02:\n", " Baseline: [52.05888954 76.3101551 19.57206582 1. ]\n", " Deltas: [ 1.04917495 -2.22996141 0.13161151 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.676757504987934}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.67676) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.01) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.135, and will continue to 0.155]\n", "\n", "(STEP 19) ANALYSIS: Examining Conc. Changes from System Time 0.155 due to tentative step of 0.01:\n", " Baseline: [53.10806449 74.08019369 19.70367733 1. ]\n", " Deltas: [ 0.5141329 -1.04018517 0.01191938 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.149606655239135}\n", " Thresholds: \n", " norm_A : (VALUE 0.14961) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.01) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n", " [The current step started at System Time: 0.155, and will continue to 0.165]\n", "\n", "(STEP 20) ANALYSIS: Examining Conc. Changes from System Time 0.165 due to tentative step of 0.02:\n", " Baseline: [53.62219739 73.04000852 19.71559671 1. ]\n", " Deltas: [ 1.00960758 -2.01652891 -0.00268625 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.5650781675774635}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.56508) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.165, and will continue to 0.185]\n", "\n", "(STEP 21) ANALYSIS: Examining Conc. Changes from System Time 0.185 due to tentative step of 0.02:\n", " Baseline: [54.63180496 71.02347962 19.71291046 1. ]\n", " Deltas: [ 0.96879347 -1.89585952 -0.04172743 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.5038428113796767}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.50384) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.185, and will continue to 0.205]\n", "\n", "(STEP 22) ANALYSIS: Examining Conc. Changes from System Time 0.205 due to tentative step of 0.02:\n", " Baseline: [55.60059844 69.12762009 19.67118303 1. ]\n", " Deltas: [ 0.92336535 -1.78711524 -0.05961545 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.4499931616991674}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.44999) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.205, and will continue to 0.225]\n", "\n", "(STEP 23) ANALYSIS: Examining Conc. Changes from System Time 0.225 due to tentative step of 0.02:\n", " Baseline: [56.52396378 67.34050485 19.61156758 1. ]\n", " Deltas: [ 0.87689226 -1.68704218 -0.06674234 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.4021673223106198}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.40217) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.225, and will continue to 0.245]\n", "\n", "(STEP 24) ANALYSIS: Examining Conc. Changes from System Time 0.245 due to tentative step of 0.02:\n", " Baseline: [57.40085605 65.65346267 19.54482524 1. ]\n", " Deltas: [ 0.8311378 -1.59382873 -0.06844686 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.3595294483481833}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.35953) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.245, and will continue to 0.265]\n", "\n", "(STEP 25) ANALYSIS: Examining Conc. Changes from System Time 0.265 due to tentative step of 0.02:\n", " Baseline: [58.23199384 64.05963394 19.47637838 1. ]\n", " Deltas: [ 0.78694079 -1.50641263 -0.06746894 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.32145631944741265}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.32146) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.265, and will continue to 0.285]\n", "\n", "(STEP 26) ANALYSIS: Examining Conc. Changes from System Time 0.285 due to tentative step of 0.02:\n", " Baseline: [59.01893463 62.55322131 19.40890943 1. ]\n", " Deltas: [ 0.74466812 -1.42412415 -0.0652121 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.2874347575511702}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.28743) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.285, and will continue to 0.305]\n", "\n", "(STEP 27) ANALYSIS: Examining Conc. Changes from System Time 0.305 due to tentative step of 0.02:\n", " Baseline: [59.76360275 61.12909716 19.34369733 1. ]\n", " Deltas: [ 0.70444746 -1.34650215 -0.06239278 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.25702301402562294}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.25702) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.305, and will continue to 0.325]\n", "\n", "(STEP 28) ANALYSIS: Examining Conc. Changes from System Time 0.325 due to tentative step of 0.02:\n", " Baseline: [60.46805022 59.78259501 19.28130456 1. ]\n", " Deltas: [ 0.66628672 -1.27319915 -0.05937429 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.22983326503644058}\n", " Thresholds: \n", " norm_A : (VALUE 0.22983) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.04) at the next round, because all norms are low\n", " [The current step started at System Time: 0.325, and will continue to 0.345]\n", "\n", "(STEP 29) ANALYSIS: Examining Conc. Changes from System Time 0.345 due to tentative step of 0.04:\n", " Baseline: [61.13433694 58.50939586 19.22193027 1. ]\n", " Deltas: [ 1.26027073 -2.40786424 -0.11267722 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.8220876292375117}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.82209) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.02) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.345, and will continue to 0.385]\n", "\n", "(STEP 30) ANALYSIS: Examining Conc. Changes from System Time 0.385 due to tentative step of 0.02:\n", " Baseline: [62.39460767 56.10153162 19.10925305 1. ]\n", " Deltas: [ 0.56169618 -1.07298153 -0.05041083 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.16325924649115092}\n", " Thresholds: \n", " norm_A : (VALUE 0.16326) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.02) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.04) at the next round, because all norms are low\n", " [The current step started at System Time: 0.385, and will continue to 0.405]\n", "\n", "(STEP 31) ANALYSIS: Examining Conc. Changes from System Time 0.405 due to tentative step of 0.04:\n", " Baseline: [62.95630385 55.02855009 19.05884222 1. ]\n", " Deltas: [ 1.0623252 -2.02930388 -0.09534652 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.5839666694455721}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.58397) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.405, and will continue to 0.445]\n", "\n", "(STEP 32) ANALYSIS: Examining Conc. Changes from System Time 0.445 due to tentative step of 0.04:\n", " Baseline: [64.01862905 52.99924621 18.96349569 1. ]\n", " Deltas: [ 0.9468283 -1.80867058 -0.08498602 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.4638884123583411}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.46389) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.445, and will continue to 0.485]\n", "\n", "(STEP 33) ANALYSIS: Examining Conc. Changes from System Time 0.485 due to tentative step of 0.04:\n", " Baseline: [64.96545735 51.19057563 18.87850968 1. ]\n", " Deltas: [ 0.84388651 -1.61202675 -0.07574626 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.36850135438022225}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.3685) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.485, and will continue to 0.525]\n", "\n", "(STEP 34) ANALYSIS: Examining Conc. Changes from System Time 0.525 due to tentative step of 0.04:\n", " Baseline: [65.80934386 49.57854888 18.80276341 1. ]\n", " Deltas: [ 0.75213678 -1.43676265 -0.06751092 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.29272826302332505}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.29273) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.525, and will continue to 0.565]\n", "\n", "(STEP 35) ANALYSIS: Examining Conc. Changes from System Time 0.565 due to tentative step of 0.04:\n", " Baseline: [66.56148064 48.14178623 18.73525249 1. ]\n", " Deltas: [ 0.67036235 -1.28055375 -0.06017094 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.23253601370675195}\n", " Thresholds: \n", " norm_A : (VALUE 0.23254) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.08) at the next round, because all norms are low\n", " [The current step started at System Time: 0.565, and will continue to 0.605]\n", "\n", "(STEP 36) ANALYSIS: Examining Conc. Changes from System Time 0.605 due to tentative step of 0.08:\n", " Baseline: [67.23184299 46.86123248 18.67508155 1. ]\n", " Deltas: [ 1.19495731 -2.28265665 -0.10725798 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.7388831828204337}\n", " Thresholds: \n", " norm_A : low 0.25 | high 0.64 | (VALUE 0.73888) | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'HIGH' (with step size factor of 0.5)\n", "NOTICE: the tentative time step (0.08) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.04) at the next round, because at least one norm is high\n", " [The current step started at System Time: 0.605, and will continue to 0.685]\n", "\n", "(STEP 37) ANALYSIS: Examining Conc. Changes from System Time 0.685 due to tentative step of 0.04:\n", " Baseline: [68.4268003 44.57857583 18.56782357 1. ]\n", " Deltas: [ 0.46755952 -0.89315144 -0.0419676 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.11312140907262146}\n", " Thresholds: \n", " norm_A : (VALUE 0.11312) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.04) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.08) at the next round, because all norms are low\n", " [The current step started at System Time: 0.685, and will continue to 0.725]\n", "\n", "(STEP 38) ANALYSIS: Examining Conc. Changes from System Time 0.725 due to tentative step of 0.08:\n", " Baseline: [68.89435982 43.68542439 18.52585598 1. ]\n", " Deltas: [ 0.83345025 -1.59209098 -0.07480952 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.3594432769718806}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.35944) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.08) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.725, and will continue to 0.805]\n", "\n", "(STEP 39) ANALYSIS: Examining Conc. Changes from System Time 0.805 due to tentative step of 0.08:\n", " Baseline: [69.72781007 42.0933334 18.45104645 1. ]\n", " Deltas: [ 0.65222012 -1.24589772 -0.05854252 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.2201199373223358}\n", " Thresholds: \n", " norm_A : (VALUE 0.22012) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.08) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.16) at the next round, because all norms are low\n", " [The current step started at System Time: 0.805, and will continue to 0.885]\n", "\n", "(STEP 40) ANALYSIS: Examining Conc. Changes from System Time 0.885 due to tentative step of 0.16:\n", " Baseline: [70.38003019 40.84743568 18.39250394 1. ]\n", " Deltas: [ 1.02079538 -1.94996535 -0.0916254 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.5391981423603522}\n", " Thresholds: \n", " norm_A : low 0.25 | (VALUE 0.5392) | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'STAY' (with step size factor of 1)\n", "NOTICE: the tentative time step (0.16) results in norm values that leads to the following:\n", "ACTION: COMPLETE NORMALLY - we're inside the target range. No change to step size.\n", " [The current step started at System Time: 0.885, and will continue to 1.045]\n", "\n", "(STEP 41) ANALYSIS: Examining Conc. Changes from System Time 1.045 due to tentative step of 0.16:\n", " Baseline: [71.40082557 38.89747033 18.30087853 1. ]\n", " Deltas: [ 0.57686034 -1.10194237 -0.05177831 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.17219175887655633}\n", " Thresholds: \n", " norm_A : (VALUE 0.17219) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.16) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.32) at the next round, because all norms are low\n", " [The current step started at System Time: 1.045, and will continue to 1.205]\n", "\n", "(STEP 42) ANALYSIS: Examining Conc. Changes from System Time 1.205 due to tentative step of 0.32:\n", " Baseline: [71.97768591 37.79552796 18.24910022 1. ]\n", " Deltas: [ 0.65197758 -1.24543442 -0.05852075 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.21995626094117085}\n", " Thresholds: \n", " norm_A : (VALUE 0.21996) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.32) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.64) at the next round, because all norms are low\n", " [The current step started at System Time: 1.205, and will continue to 1.525]\n", "\n", "(STEP 43) ANALYSIS: Examining Conc. Changes from System Time 1.525 due to tentative step of 0.64:\n", " Baseline: [72.62966349 36.55009354 18.19057947 1. ]\n", " Deltas: [ 0.16979763 -0.32435443 -0.01524084 0. ]\n", " Restricting adaptive time step analysis to 3 chemicals only: {'X', 'U', 'S'} , with indexes: {0, 1, 2}\n", " Norms: {'norm_A': 0.01491881249157113}\n", " Thresholds: \n", " norm_A : (VALUE 0.014919) | low 0.25 | high 0.64 | abort 1.44\n", " Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5}\n", " => Action: 'LOW' (with step size factor of 2.0)\n", "NOTICE: the tentative time step (0.64) results in norm values that leads to the following:\n", "ACTION: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 1.28) at the next round, because all norms are low\n", " [The current step started at System Time: 1.525, and will continue to 2.165]\n", "44 total step(s) taken\n" ] } ], "source": [ "dynamics.set_diagnostics() # To save diagnostic information about the call to single_compartment_react()\n", "\n", "# All of these settings are currently close to the default values... but subject to change; set for repeatability\n", "dynamics.set_thresholds(norm=\"norm_A\", low=0.25, high=0.64, abort=1.44)\n", "dynamics.set_thresholds(norm=\"norm_B\") # We are disabling norm_B (to conform to the original run)\n", "dynamics.set_step_factors(upshift=2.0, downshift=0.5, abort=0.5) # Note: upshift=2.0 seems to often be excessive. About 1.4 is currently recommended\n", "dynamics.set_error_step_factor(0.5)\n", "\n", "dynamics.single_compartment_react(initial_step=0.01, target_end_time=2.0, \n", " variable_steps=True, explain_variable_steps=True)" ] }, { "cell_type": "markdown", "id": "d44576e5-5198-40c7-9c10-8bd8e90a37cc", "metadata": {}, "source": [ "## Compare the above printout with its counterpart from the experiment `variable_steps_1`\n", "Notice the extra lines we have this time, saying _\"Restricting adaptive time step analysis to 3 chemicals only\"_" ] }, { "cell_type": "code", "execution_count": 15, "id": "5e1a5aa2-973d-4f3e-8844-d8ab81509562", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEUXSEcaption
00.000050.000000100.0000000.0000001.0Initial state
10.005049.50000098.5000002.5000001.0
20.007549.30250097.7987503.5962501.0
30.012548.95332596.4396565.6536941.0
40.015048.82163295.8011646.5555711.0
50.020048.59563994.5608148.2479091.0
60.025048.43959993.3898399.7309641.0
70.030048.34444192.28092011.0301971.0
80.035048.30220591.22761212.1679781.0
90.040048.30590290.22423813.1639591.0
100.050048.39290188.30734814.9068511.0
110.055048.50524687.42994315.5595661.0
120.065048.77990685.74061916.6995691.0
130.075049.14027384.17037417.5490791.0
140.085049.56139482.69820818.1790041.0
150.095050.02448781.30800218.6430251.0
160.105050.51543979.98734318.9817791.0
170.125051.53190677.46591619.4702721.0
180.135052.05889076.31015519.5720661.0
190.155053.10806474.08019419.7036771.0
200.165053.62219773.04000919.7155971.0
210.185054.63180571.02348019.7129101.0
220.205055.60059869.12762019.6711831.0
230.225056.52396467.34050519.6115681.0
240.245057.40085665.65346319.5448251.0
250.265058.23199464.05963419.4763781.0
260.285059.01893562.55322119.4089091.0
270.305059.76360361.12909719.3436971.0
280.325060.46805059.78259519.2813051.0
290.345061.13433758.50939619.2219301.0
300.385062.39460856.10153219.1092531.0
310.405062.95630455.02855019.0588421.0
320.445064.01862952.99924618.9634961.0
330.485064.96545751.19057618.8785101.0
340.525065.80934449.57854918.8027631.0
350.565066.56148148.14178618.7352521.0
360.605067.23184346.86123218.6750821.0
370.685068.42680044.57857618.5678241.0
380.725068.89436043.68542418.5258561.0
390.805069.72781042.09333318.4510461.0
400.885070.38003040.84743618.3925041.0
411.045071.40082638.89747018.3008791.0
421.205071.97768637.79552818.2491001.0
431.525072.62966336.55009418.1905791.0
442.165072.79946136.22573918.1753391.0
\n", "
" ], "text/plain": [ " SYSTEM TIME U X S E caption\n", "0 0.0000 50.000000 100.000000 0.000000 1.0 Initial state\n", "1 0.0050 49.500000 98.500000 2.500000 1.0 \n", "2 0.0075 49.302500 97.798750 3.596250 1.0 \n", "3 0.0125 48.953325 96.439656 5.653694 1.0 \n", "4 0.0150 48.821632 95.801164 6.555571 1.0 \n", "5 0.0200 48.595639 94.560814 8.247909 1.0 \n", "6 0.0250 48.439599 93.389839 9.730964 1.0 \n", "7 0.0300 48.344441 92.280920 11.030197 1.0 \n", "8 0.0350 48.302205 91.227612 12.167978 1.0 \n", "9 0.0400 48.305902 90.224238 13.163959 1.0 \n", "10 0.0500 48.392901 88.307348 14.906851 1.0 \n", "11 0.0550 48.505246 87.429943 15.559566 1.0 \n", "12 0.0650 48.779906 85.740619 16.699569 1.0 \n", "13 0.0750 49.140273 84.170374 17.549079 1.0 \n", "14 0.0850 49.561394 82.698208 18.179004 1.0 \n", "15 0.0950 50.024487 81.308002 18.643025 1.0 \n", "16 0.1050 50.515439 79.987343 18.981779 1.0 \n", "17 0.1250 51.531906 77.465916 19.470272 1.0 \n", "18 0.1350 52.058890 76.310155 19.572066 1.0 \n", "19 0.1550 53.108064 74.080194 19.703677 1.0 \n", "20 0.1650 53.622197 73.040009 19.715597 1.0 \n", "21 0.1850 54.631805 71.023480 19.712910 1.0 \n", "22 0.2050 55.600598 69.127620 19.671183 1.0 \n", "23 0.2250 56.523964 67.340505 19.611568 1.0 \n", "24 0.2450 57.400856 65.653463 19.544825 1.0 \n", "25 0.2650 58.231994 64.059634 19.476378 1.0 \n", "26 0.2850 59.018935 62.553221 19.408909 1.0 \n", "27 0.3050 59.763603 61.129097 19.343697 1.0 \n", "28 0.3250 60.468050 59.782595 19.281305 1.0 \n", "29 0.3450 61.134337 58.509396 19.221930 1.0 \n", "30 0.3850 62.394608 56.101532 19.109253 1.0 \n", "31 0.4050 62.956304 55.028550 19.058842 1.0 \n", "32 0.4450 64.018629 52.999246 18.963496 1.0 \n", "33 0.4850 64.965457 51.190576 18.878510 1.0 \n", "34 0.5250 65.809344 49.578549 18.802763 1.0 \n", "35 0.5650 66.561481 48.141786 18.735252 1.0 \n", "36 0.6050 67.231843 46.861232 18.675082 1.0 \n", "37 0.6850 68.426800 44.578576 18.567824 1.0 \n", "38 0.7250 68.894360 43.685424 18.525856 1.0 \n", "39 0.8050 69.727810 42.093333 18.451046 1.0 \n", "40 0.8850 70.380030 40.847436 18.392504 1.0 \n", "41 1.0450 71.400826 38.897470 18.300879 1.0 \n", "42 1.2050 71.977686 37.795528 18.249100 1.0 \n", "43 1.5250 72.629663 36.550094 18.190579 1.0 \n", "44 2.1650 72.799461 36.225739 18.175339 1.0 " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.get_history()" ] }, { "cell_type": "code", "execution_count": 16, "id": "6daa736f-466a-4786-8560-4c780863a0d7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "From time 0 to 0.005, in 1 step of 0.005\n", "From time 0.005 to 0.0075, in 1 step of 0.0025\n", "From time 0.0075 to 0.0125, in 1 step of 0.005\n", "From time 0.0125 to 0.015, in 1 step of 0.0025\n", "From time 0.015 to 0.04, in 5 steps of 0.005\n", "From time 0.04 to 0.05, in 1 step of 0.01\n", "From time 0.05 to 0.055, in 1 step of 0.005\n", "From time 0.055 to 0.105, in 5 steps of 0.01\n", "From time 0.105 to 0.125, in 1 step of 0.02\n", "From time 0.125 to 0.135, in 1 step of 0.01\n", "From time 0.135 to 0.155, in 1 step of 0.02\n", "From time 0.155 to 0.165, in 1 step of 0.01\n", "From time 0.165 to 0.345, in 9 steps of 0.02\n", "From time 0.345 to 0.385, in 1 step of 0.04\n", "From time 0.385 to 0.405, in 1 step of 0.02\n", "From time 0.405 to 0.605, in 5 steps of 0.04\n", "From time 0.605 to 0.685, in 1 step of 0.08\n", "From time 0.685 to 0.725, in 1 step of 0.04\n", "From time 0.725 to 0.885, in 2 steps of 0.08\n", "From time 0.885 to 1.205, in 2 steps of 0.16\n", "From time 1.205 to 1.525, in 1 step of 0.32\n", "From time 1.525 to 2.165, in 1 step of 0.64\n", "(44 steps total)\n" ] } ], "source": [ "(transition_times, step_sizes) = dynamics.explain_time_advance(return_times=True)" ] }, { "cell_type": "code", "execution_count": 17, "id": "ef4384d4-37bb-4ed0-bc82-487060b41b84", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.005 , 0.0025, 0.005 , 0.0025, 0.005 , 0.01 , 0.005 , 0.01 ,\n", " 0.02 , 0.01 , 0.02 , 0.01 , 0.02 , 0.04 , 0.02 , 0.04 ,\n", " 0.08 , 0.04 , 0.08 , 0.16 , 0.32 , 0.64 ])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.array(step_sizes)" ] }, { "cell_type": "code", "execution_count": 18, "id": "f099e57e-3869-4d91-afb0-548727b787c4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0. , 0.005 , 0.0075, 0.0125, 0.015 , 0.04 , 0.05 , 0.055 ,\n", " 0.105 , 0.125 , 0.135 , 0.155 , 0.165 , 0.345 , 0.385 , 0.405 ,\n", " 0.605 , 0.685 , 0.725 , 0.885 , 1.205 , 1.525 , 2.165 ])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.array(transition_times) # Note: there will be one more transition time (the end time) than step sizes" ] }, { "cell_type": "markdown", "id": "d7f758cb-6af3-4d30-bc2c-26dcb52e306e", "metadata": { "tags": [] }, "source": [ "## Plots of changes of concentration with time" ] }, { "cell_type": "code", "execution_count": 19, "id": "7dedbcc8-f1fb-48af-b0e1-2941c3a83d88", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Chemical=U
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "U", "line": { "color": "green", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "U", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 50, 49.5, 49.3025, 48.953325, 48.82163225, 48.595638778125, 48.439598731740624, 48.34444128763423, 48.30220476057483, 48.30590183654385, 48.39290050226037, 48.5052455391863, 48.7799058814107, 49.14027331067588, 49.56139415522215, 50.02448656789047, 50.51543882771388, 51.5319059043599, 52.05888953946266, 53.10806448877514, 53.6221973851961, 54.631804962718874, 55.60059843741017, 56.52396378475239, 57.400856045782184, 58.231993841938426, 59.018934628561645, 59.76360275298115, 60.468050216020096, 61.13433693633931, 62.39460766762712, 62.95630384813689, 64.01862904935517, 64.96545734689445, 65.8093438554794, 66.56148063896055, 67.23184298514343, 68.4268002988057, 68.89435981841929, 69.72781007217334, 70.38003019051833, 71.40082556698592, 71.97768590721373, 72.62966349214221, 72.7994611238083 ], "yaxis": "y" }, { "hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "X", "line": { "color": "orange", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "X", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 100, 98.5, 97.79875, 96.43965625, 95.801164234375, 94.56081390882812, 93.38983895624335, 92.28092027930796, 91.22761238948105, 90.22423754631991, 88.30734794676586, 87.42994325902578, 85.7406189010111, 84.17037449415082, 82.69820799239614, 81.30800197445382, 79.98734340860611, 77.46591627640568, 76.31015510300598, 74.08019369499387, 73.0400085237914, 71.02347961706188, 69.12762009493821, 67.34050485287088, 65.65346267101354, 64.05963393924337, 62.55322130811434, 61.12909716179896, 59.782595011959664, 58.5093958579621, 56.10153161965286, 55.02855008788483, 52.99924620914057, 51.19057563015947, 49.578548876792716, 48.14178623051722, 46.86123248082995, 44.57857582889467, 43.685424387065844, 42.0933334026959, 40.84743568346842, 38.897470333478665, 37.79552796465638, 36.5500935427452, 36.2257391168805 ], "yaxis": "y" }, { "hovertemplate": "Chemical=S
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "S", "line": { "color": "blue", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "S", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 0, 2.5, 3.59625, 5.65369375, 6.555571265625001, 8.247908534921876, 9.730963580275391, 11.03019714542356, 12.167978089369273, 13.163958780592365, 14.906851048713396, 15.559565662601617, 16.699569336167485, 17.5490788844974, 18.179003697159533, 18.643024889765208, 18.981778935966094, 19.470271914874488, 19.572065818068666, 19.703677327455825, 19.715596705816367, 19.712910457500335, 19.671183030241412, 19.611567577624296, 19.54482523742205, 19.476378376879737, 19.40890943476233, 19.343697332238698, 19.2813045560001, 19.221930269359245, 19.10925304509285, 19.058842215841338, 18.963495692149042, 18.878509676051582, 18.80276341224844, 18.735252491561642, 18.67508154888315, 18.56782357349389, 18.52585597609554, 18.451046452957367, 18.392503935494886, 18.300878532549454, 18.24910022091612, 18.190579472970335, 18.17533863550288 ], "yaxis": "y" }, { "hovertemplate": "Chemical=E
SYSTEM TIME=%{x}
concentration=%{y}", "legendgroup": "E", "line": { "color": "gray", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "E", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 0.005, 0.0075, 0.0125, 0.015000000000000001, 0.02, 0.025, 0.030000000000000002, 0.035, 0.04, 0.05, 0.055, 0.065, 0.075, 0.08499999999999999, 0.09499999999999999, 0.10499999999999998, 0.12499999999999999, 0.13499999999999998, 0.15499999999999997, 0.16499999999999998, 0.18499999999999997, 0.20499999999999996, 0.22499999999999995, 0.24499999999999994, 0.26499999999999996, 0.285, 0.305, 0.325, 0.34500000000000003, 0.385, 0.405, 0.445, 0.485, 0.525, 0.5650000000000001, 0.6050000000000001, 0.685, 0.7250000000000001, 0.805, 0.885, 1.045, 1.2049999999999998, 1.525, 2.165 ], "xaxis": "x", "y": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], "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 concentration for `2 S + E <-> U + E` and `S <-> X`" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 2.165 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ -5.555555555555555, 105.55555555555556 ], "title": { "text": "concentration" }, "type": "linear" } } }, "image/png": "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", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dynamics.plot_history(colors=['green', 'orange', 'blue', 'gray'])" ] }, { "cell_type": "code", "execution_count": 20, "id": "e93b4549-9889-4002-b883-cc2abb06d2a4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Min abs distance found at data row: 28\n" ] }, { "data": { "text/plain": [ "(0.3183157284824908, 60.23261431038145)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.curve_intersection(\"U\", \"X\", t_start=0.3, t_end=0.35)" ] }, { "cell_type": "code", "execution_count": null, "id": "cce31c35-5955-4d33-b4e9-24df6de40003", "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.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }