diff --git a/examples/Controlling-Glucose-Metabolis-in-Yeast.ipynb b/examples/Controlling-Glucose-Metabolis-in-Yeast.ipynb
new file mode 100644
index 0000000..fb08429
--- /dev/null
+++ b/examples/Controlling-Glucose-Metabolis-in-Yeast.ipynb
@@ -0,0 +1,2837 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "cc5f9f08-3ebb-4993-86a7-672e9f5a5af8",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "# Controlling Glucose Metabolism in Yeast\n",
+ "(Based on a final project submitted by Seth Woodbury to BIOEN 599, March, 2024, University of Washington)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0dab0df8-a876-4a8a-ab64-c3a8a7ef962f",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "## Organization & Installs/Imports"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "ec4e009e-7b76-4d97-b637-83b13f6b0c87",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from controlSBML import ControlSBML\n",
+ "\n",
+ "import collections\n",
+ "import control\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import tellurium as te\n",
+ "from sympy import symbols, Poly, fraction"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "2ced36f3-d3c9-4fb2-9153-0cfa2d32253a",
+ "metadata": {
+ "executionInfo": {
+ "elapsed": 3,
+ "status": "ok",
+ "timestamp": 1708556908051,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "ad06c6ba-e955-46d6-9161-17c0b5b7d8e2"
+ },
+ "outputs": [],
+ "source": [
+ "s = control.TransferFunction.s\n",
+ "TIMES = np.linspace(0, 10, 100)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "ddcb6a23-79be-4f68-99a4-222f9399eb73",
+ "metadata": {
+ "executionInfo": {
+ "elapsed": 2,
+ "status": "ok",
+ "timestamp": 1708556908051,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "66ac91d7-3f06-47cd-b874-45f5bb430500"
+ },
+ "outputs": [],
+ "source": [
+ "TEST_MODEL = \"\"\"\n",
+ "$S1 -> S2; k1*S1\n",
+ "S2 -> S3; k2*S2\n",
+ "\n",
+ "S1 = 10\n",
+ "S2 = 0\n",
+ "S3 = 0\n",
+ "k1 = 1\n",
+ "k2 = 2\n",
+ "k3 = 3\n",
+ "kP = 1\n",
+ "kI =1\n",
+ "setpoint = 1\n",
+ "\"\"\"\n",
+ "ctlsb = ControlSBML(TEST_MODEL)\n",
+ "TEST_RR = ctlsb.getRoadrunner()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "f8c4ca1f-8fa8-4f47-9f53-460499c83a20",
+ "metadata": {
+ "executionInfo": {
+ "elapsed": 3,
+ "status": "ok",
+ "timestamp": 1708556908052,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "a6a02206-833c-449a-ae71-4ab8d7f8ef5a",
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "k1 = TEST_RR[\"k1\"]\n",
+ "k2 = TEST_RR[\"k2\"]\n",
+ "tf = k1*k2/(s*(s+k2))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "21bcce19-1767-4b31-8db6-6e9b5898e6e1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define functions\n",
+ "\n",
+ "def evaluateTransferFunction(model, transfer_function, output_name, times=TIMES,\n",
+ " is_plot=True):\n",
+ " \"\"\"\n",
+ " Plots simulations versus predictions.\n",
+ "\n",
+ " Args:\n",
+ " model: (str) antimony\n",
+ " tranfer_function (control.TransferFunction)\n",
+ " output_name: (str) prediction\n",
+ " times: (np.darray)\n",
+ " Returns:\n",
+ " float\n",
+ " \"\"\"\n",
+ " rr = te.loada(model)\n",
+ " data = rr.simulate(times[0], times[-1], len(times))\n",
+ " output_name = \"[\" + output_name + \"]\"\n",
+ " simulations = data[output_name]\n",
+ " _, predictions = control.forced_response(transfer_function, T=times, U=1)\n",
+ " rmse = np.sqrt(np.sum(simulations-predictions)**2)/len(simulations)\n",
+ " if is_plot:\n",
+ " plt.scatter(simulations, predictions)\n",
+ " maxval = max(np.max(predictions), np.max(simulations))\n",
+ " plt.plot([0, maxval], [0, maxval], color=\"red\")\n",
+ " plt.xlabel(\"simulated\")\n",
+ " plt.ylabel(\"predicted\")\n",
+ " return rmse"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "ffd6f573-c8e2-4d28-b46a-b574704cf752",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "executionInfo": {
+ "elapsed": 2,
+ "status": "ok",
+ "timestamp": 1708556908341,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "af9f5cb7-8a03-4491-af49-521024000ffe",
+ "outputId": "db4d35e6-ba95-4b28-f58b-ad201d66a0bd"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "OK!\n"
+ ]
+ }
+ ],
+ "source": [
+ "Parameters = collections.namedtuple(\"Parameters\", \"k1 k2 k3 S1 kP kI, setpoint\")\n",
+ "def getParameters(model, **kwargs):\n",
+ " \"\"\"\n",
+ " Retrieves constants used in the open and closed loop models.\n",
+ "\n",
+ " Args:\n",
+ " model: str/Roadrunner\n",
+ " kwargs: values to assign in the model\n",
+ "\n",
+ " Returns:\n",
+ " Parameters\n",
+ " \"\"\"\n",
+ " def get(name):\n",
+ " if name in rr.keys():\n",
+ " return rr[name]\n",
+ " return 0\n",
+ " #\n",
+ " if isinstance(model, str):\n",
+ " rr = te.loada(model)\n",
+ " else:\n",
+ " rr = model\n",
+ " for key, value in kwargs.items():\n",
+ " rr[key] = float(value)\n",
+ " #\n",
+ " parameters = Parameters(\n",
+ " k1=get(\"k1\"),\n",
+ " k2=get(\"k2\"),\n",
+ " k3=get(\"k3\"),\n",
+ " setpoint=get(\"setpoint\"),\n",
+ " kP=get(\"kP\"),\n",
+ " kI=get(\"kI\"),\n",
+ " S1=get(\"S1\"),\n",
+ " )\n",
+ " return parameters\n",
+ "\n",
+ "# Tests\n",
+ "parameters = getParameters(model=TEST_MODEL, k1=4)\n",
+ "assert(isinstance(parameters, Parameters))\n",
+ "print(\"OK!\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "596cf125-b0d3-4b1c-8952-8f05b062b10b",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "executionInfo": {
+ "elapsed": 1,
+ "status": "ok",
+ "timestamp": 1708556908341,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "bd4dcf59-3bf0-42fd-ba18-7d12d203f7f9",
+ "outputId": "28f9db87-64ba-45ed-8c77-f57970f59a6c"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "OK!\n"
+ ]
+ }
+ ],
+ "source": [
+ "def makeTransferFunctions(model, **kwargs):\n",
+ " \"\"\"\n",
+ " Constructs the open loop and closed loop transfer functions for MODEL1.\n",
+ "\n",
+ " Args:\n",
+ " model: roadrunner or antimony\n",
+ " kwargs: values to use in transfer function that differ from the model.\n",
+ " \"\"\"\n",
+ " p = getParameters(model, **kwargs)\n",
+ " ol_tf = p.k1*p.k2/((s + p.k2)*(s+ p.k3))\n",
+ " controller_tf = p.kP + p.kI/s\n",
+ " cl_tf = control.feedback(ol_tf*controller_tf)\n",
+ " return ol_tf, cl_tf\n",
+ "\n",
+ "# TESTS\n",
+ "ol_tf, cl_tf = makeTransferFunctions(TEST_MODEL, k3=2)\n",
+ "assert(isinstance(ol_tf, control.TransferFunction))\n",
+ "assert(isinstance(cl_tf, control.TransferFunction))\n",
+ "print(\"OK!\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "ae9253bb-5520-43f5-bf7d-79a629dd06f9",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "executionInfo": {
+ "elapsed": 182,
+ "status": "ok",
+ "timestamp": 1708556908522,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "f563dc09-2df9-4863-8537-482f8f260a74",
+ "outputId": "3bafc930-0bad-4e13-e06e-2171633c3d71"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "OK!\n"
+ ]
+ }
+ ],
+ "source": [
+ "def plotPoles(model, kPs=0, kIs=0, xlim=None, is_plot=True):\n",
+ " \"\"\"\n",
+ " Plots the open loop poles and zeroes and closed loop poles for the model.\n",
+ "\n",
+ " Args:\n",
+ " model: antimony or roadrunner\n",
+ " kPs: list/float\n",
+ " kIs: list/float\n",
+ " xlim: tuple (limits of x-axis on plot)\n",
+ "\n",
+ " Returns:\n",
+ " control.TransferFunction (open loop)\n",
+ " control.TransferFunction (closed loop)\n",
+ " \"\"\"\n",
+ " p = getParameters(model)\n",
+ " if isinstance(kPs, int) or isinstance(kPs, float):\n",
+ " kPs = [kPs]\n",
+ " if isinstance(kIs, int) or isinstance(kIs, float):\n",
+ " kIs = [kIs]\n",
+ " if len(kPs) == 1:\n",
+ " kPs = np.repeat(kPs[0], len(kIs))\n",
+ " if len(kIs) == 1:\n",
+ " kIs = np.repeat(kIs[0], len(kPs))\n",
+ " #\n",
+ " annotations = []\n",
+ " cl_poles = []\n",
+ " for kI in kIs:\n",
+ " for kP in kPs:\n",
+ " ol_tf, cl_tf = makeTransferFunctions(model, kP=kP, kI=kI)\n",
+ " for pole in cl_tf.poles():\n",
+ " annotations.append(\"%2.2f, %2.2f\" % (kP, kI))\n",
+ " cl_poles.append(pole)\n",
+ " annotations.extend(annotations)\n",
+ " cl_poles = np.array(cl_poles)\n",
+ " if is_plot:\n",
+ " _, ax = plt.subplots(1)\n",
+ " ol_poles = ol_tf.poles()\n",
+ " ax.scatter(ol_poles.real, ol_poles.imag, marker=\"o\", c=\"red\")\n",
+ " ax.scatter(cl_poles.real, cl_poles.imag, marker=\"*\", c=\"blue\")\n",
+ " _ = [ax.annotate(t, (p.real, p.imag), fontsize=8) for t, p in zip(annotations, cl_poles)]\n",
+ " ax.set_xlabel(\"Real\")\n",
+ " ax.set_ylabel(\"Imaginary\")\n",
+ " _ = ax.set_title(\"Open and closed loop poles for kP, kI.\")\n",
+ " if xlim is not None:\n",
+ " ax.set_xlim(xlim)\n",
+ "\n",
+ "# Tests\n",
+ "plotPoles(TEST_MODEL, kPs=[0.01, 0.1, 10, 100], is_plot=False)\n",
+ "print(\"OK!\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "31a6fd2a-eb00-4d29-b098-fbc22001afcf",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "OK!\n"
+ ]
+ }
+ ],
+ "source": [
+ "def plotModel(model, times=TIMES, is_plot=True, title=\"\", selections=None,\n",
+ " figsize=(5,5), ylim=None, **kwargs):\n",
+ " \"\"\"\n",
+ " Plots a model.\n",
+ "\n",
+ " Args:\n",
+ " times: np.array\n",
+ " kwargs: values of parameters\n",
+ " Returns:\n",
+ " NamedArray\n",
+ " \"\"\"\n",
+ " rr = te.loada(model)\n",
+ " for key, value in kwargs.items():\n",
+ " rr[key] = value\n",
+ " if selections is None:\n",
+ " data = rr.simulate(times[0], times[-1], len(times))\n",
+ " else:\n",
+ " if not \"time\" in selections:\n",
+ " selections.insert(0, \"time\")\n",
+ " data = rr.simulate(times[0], times[-1], len(times), selections=selections)\n",
+ " if is_plot:\n",
+ " if ylim is None:\n",
+ " rr.plot(title=title, figsize=figsize)\n",
+ " else:\n",
+ " rr.plot(title=title, figsize=figsize, ylim=ylim)\n",
+ " return data\n",
+ "\n",
+ "# TESTS\n",
+ "data = plotModel(TEST_MODEL, k1=0.1, is_plot=False, selections=[\"S2\"], ylim=[0, 10])\n",
+ "assert(len(data) > 0)\n",
+ "print(\"OK!\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "900c1cd1-c6d7-4216-aa38-78fd07737dc2",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "OK!\n"
+ ]
+ }
+ ],
+ "source": [
+ "def buildPITestbed(model, input_name, output_name, sign=1):\n",
+ " \"\"\"\n",
+ " Creates an Antimony model of a PI controller using model as the open loop system.\n",
+ " The resulting model as Antimony parameters for the setpoint, kP, kI. Assumes that\n",
+ " this is a modular model (has an \"end\" statement).\n",
+ "\n",
+ " Args:\n",
+ " model: str (Antimony model of OLS)\n",
+ " input_name: str (name of a species in the OLS)\n",
+ " output_name: str (name of a species in the OLS)\n",
+ " sign: int (directional effect of input on output)\n",
+ "\n",
+ " Returns:\n",
+ " str (Antimony model)\n",
+ " \"\"\"\n",
+ " # Control codes\n",
+ " control_logic = \"\"\"\n",
+ " // Parameters in CLS\n",
+ " setpoint = 1\n",
+ " kP = 1\n",
+ " kI = 0\n",
+ " sign = {sign}\n",
+ "\n",
+ " // Controller\n",
+ " control_error := sign*(setpoint - {output_name})\n",
+ " integral_control_error = 0\n",
+ " integral_control_error' = control_error\n",
+ " ${input_name} := kP*control_error + kI*integral_control_error\n",
+ " \"\"\"\n",
+ " # Partition the model\n",
+ " try:\n",
+ " end_pos = model.index(\"end\")\n",
+ " except:\n",
+ " end_pos = len(model) - 1\n",
+ " model_front = model[:end_pos]\n",
+ " model_back = model[end_pos:]\n",
+ " return model_front + control_logic.format(input_name=input_name, output_name=output_name, sign=sign) + model_back\n",
+ "\n",
+ "# TESTS\n",
+ "is_plot = False\n",
+ "cl_model = buildPITestbed(TEST_MODEL, \"S1\", \"S3\")\n",
+ "rr = te.loada(cl_model)\n",
+ "rr[\"kP\"] = 10\n",
+ "rr[\"kI\"] = 5\n",
+ "rr[\"setpoint\"] = 8\n",
+ "rr.simulate(0, 10, 100, selections=[\"time\", \"setpoint\", \"S3\"])\n",
+ "if is_plot:\n",
+ " rr.plot()\n",
+ "print(\"OK!\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d5237a5c-1e88-492f-90fc-bc56458696de",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "## Section 1: Problem Description & System Definition "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3e7257cc-4523-4f78-97ab-a41a39022271",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "### Problem Description & Control Objectives"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9d4dc675-0d07-42f3-b65f-17a45f4feae4",
+ "metadata": {
+ "id": "c0fb6205-fd27-49f0-bd8e-d9f7439df0e8"
+ },
+ "source": [
+ "**IMPORTANT LINKS:**\n",
+ "\n",
+ "Selected Biomodel: Nishio2008 - Design of the phosphotransferase system for enhanced glucose uptake in E. coli\n",
+ "\n",
+ "Biomodel URL: https://www.ebi.ac.uk/biomodels/BIOMD0000000571\n",
+ "\n",
+ "Publication URL: https://www.embopress.org/doi/full/10.1038/msb4100201\n",
+ "\n",
+ "**PROBLEM DESCRIPTION:**\n",
+ "\n",
+ "Industrial bioreactors culturing engineered microbes present a cost-effective, highly efficient, minimal-resource cost, and eco-friendly method of producing large quantities of desirable proteins and complex organic compounds for societal use (e.g., academia, therapeutics, industrial chemistry, biotechnology sectors). The biological problem I am addressing regards controlling Escherichia coli (E. coli) glucose uptake for such industrial microbe engineering purposes since they are the most well-studied and commonly used microbe. From a bioreactor production standpoint, it is desirable to have E. coli uptake as much glucose as possible for the ultimate production of ATP and the desired plasmid product(s) they were engineered to produce (i.e., protein products or protein machinery to make small organic molecules). However, E. coli have evolved to highly regulate their glucose uptake for the optimal cooperative survival and proliferation of their colonies; if they sense low glucose in the environment, they will try to use other carbon sources and metabolites for energy and they will shift toward conservative/catabolic metabolic processes rather than the anabolic ones we want them to perform. Ideally, we want E. coli in a bioreactor to initially divide to a certain concentration, then we want to induce them to grow as fat as possible (taking in the maximal possible glucose as fuel) to become full of our intended product before we lyse them all to harvest our product.\n",
+ "\n",
+ "E. coli have evolved a complex phosphotransferase system that acts in a biological circuit to control the transfer of glucose into the cell while simultaneously phosphorylating it. The specific biological problem that I will be engineering in this system is how to control and enhance the concentration of ``phosphorylated EI`` or ``EI_P`` from the gene ptsI. The phosphotransfer of the phosphate on phosphoenolpyruvate to EI making EI_P is the first step in the phosphotransferase cascade system that ultimately phosphorylates glucose and transports it into the cell. This reaction is also thought to be the rate-limiting step in glucose intake so aiming to control and upregulate EI_P concentration will push equilibrium towards a higher glucose intake.\n",
+ "\n",
+ "**CONTROL OBJECTIVES:**\n",
+ "\n",
+ "In the given model, the extracellular glucose concentration is held constant which could mimic a bioreactor that is continuously feeding E. coli glucose while they divide and grow before their plasmid expression is induced. At t = 500 minutes in the model the glucose levels drop instantaneously by several orders of magnitude to cause a perturbation (see below). As a reminder, we want to resist ``EI_P`` decrease at all costs and ideally minimize its increase from the reverse of the phosphotransferase cascade since the last step depends partially on glucose concentration and each phosphate transfer is reversible. **Thus, our control objectives are:**\n",
+ "* Keep the ``EI_P`` concentration in the range above 2.4e-7M at all costs but ideally [2.4e-7 M, 4.0e-7 M] for at least 720 minutes (12 hours).\n",
+ "* Minimize any potential concentration oscillations and keep the oscillations within the concentration range above.\n",
+ "* Converge to a stable, steady-state system after the glucose decrease at t = 500 minutes within 120 minutes (t = 620 minutes).\n",
+ "* With each additional step this setting time should also be within t = 30 minutes & the final ``EI_P`` should steady out.\n",
+ "\n",
+ "Achieving these control objectives will allow our engineered E. coli to keep maximally uptaking glucose even after we shut down its continuous flow into the bioreactor. Keeping the ``EI_P`` range above 2.4e-7 M is significant because this is its steady-state concentration at glucose concentrations that are magnitudes higher at t < 500 minutes, so maintaining an ``EI_P`` this high after t = 500 minutes will mean the E. coli are still uptaking glucose at a similar rate as before. Keeping it below 3.4e-7 M is a good sign that the rest of the phosphotransferase cascade is not backing up or slowing down significantly. Cells enjoy homeostasis and consistency, so minimizing ``EI_P`` oscillations will be important to not throw off other equilibriums that are not necessarily modeled here with respect to glucose uptake, we want a continuous flux of glucose coming in that keeps our E. coli busy at making proteins. Finally, 30 minutes is a pretty short time for E. coli so it would be desirable if the system could converge within 30 minutes so the E. coli are not thrown out of homeostasis."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c70f4bc8-d0cb-4d04-811f-d9772c7f56f8",
+ "metadata": {},
+ "source": [
+ "#### Antimony Model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "id": "e70316d2-d603-4be5-9f7c-66ad5c5e2f9f",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "// Created by libAntimony v2.13.2\n",
+ "model *MODEL1501300000()\n",
+ "\n",
+ " // Compartments and Species:\n",
+ " compartment cyt;\n",
+ " species CRP in cyt, CRPsiteI_crp in cyt, CRPsiteII_crp in cyt, CRPsite_cyaA in cyt;\n",
+ " species CRPsite_genome in cyt, CRPsite_ptsGp1 in cyt, CRPsite_ptsGp2 in cyt;\n",
+ " species CRPsite_ptsHp0 in cyt, CRPsite_ptsHp1 in cyt, CRPsite_ptsIp0 in cyt;\n",
+ " species CRPsite_ptsIp1 in cyt, CRPsite_mlcp1 in cyt, CRPsite_mlcp2 in cyt;\n",
+ " species Mlc in cyt, Mlcsite_mlcp1 in cyt, Mlcsite_mlcp2 in cyt, Mlcsite_ptsGp1 in cyt;\n",
+ " species Mlcsite_ptsGp2 in cyt, Mlcsite_ptsHp0 in cyt, Mlcsite_ptsIp0 in cyt;\n",
+ " species CRP_cAMP in cyt, CRP_cAMP_CRPsiteI_crp in cyt, CRP_cAMP_CRPsiteII_crp in cyt;\n",
+ " species CRP_cAMP_CRPsite_cyaA in cyt, CRP_cAMP_CRPsite_genome in cyt, CRP_cAMP_CRPsite_ptsGp1 in cyt;\n",
+ " species CRP_cAMP_CRPsite_ptsGp2 in cyt, CRP_cAMP_CRPsite_ptsHp0 in cyt;\n",
+ " species CRP_cAMP_CRPsite_ptsHp1 in cyt, CRP_cAMP_CRPsite_ptsIp0 in cyt;\n",
+ " species CRP_cAMP_CRPsite_ptsIp1 in cyt, CRP_cAMP_CRPsite_mlcp1 in cyt, CRP_cAMP_CRPsite_mlcp2 in cyt;\n",
+ " species Mlc_Mlcsite_ptsGp1 in cyt, Mlc_Mlcsite_ptsGp2 in cyt, Mlc_Mlcsite_ptsIp0 in cyt;\n",
+ " species Mlc_Mlcsite_ptsHp0 in cyt, Mlc_Mlcsite_mlcp1 in cyt, Mlc_Mlcsite_mlcp2 in cyt;\n",
+ " species IICB in cyt, IICB_Mlc in cyt, CYA in cyt, IIA_P in cyt, IIA_P_CYA in cyt;\n",
+ " species mRNA_cyaA in cyt, mRNA_crp in cyt, mRNA_ptsG in cyt, mRNA_ptsH in cyt;\n",
+ " species mRNA_ptsI in cyt, mRNA_crr in cyt, mRNA_mlc in cyt, IICB_P in cyt;\n",
+ " species IIA in cyt, HPr_P in cyt, HPr in cyt, EI_P in cyt, EI in cyt, cAMP in cyt;\n",
+ " species $cyaA in cyt, $cyaA_basal in cyt, $crp in cyt, $crp_basal in cyt;\n",
+ " species $ptsGp1 in cyt, $ptsGp2 in cyt, $ptsHp0 in cyt, $ptsHp1 in cyt;\n",
+ " species $ptsIp0 in cyt, $ptsIp1 in cyt, $crr in cyt, $mlcp1 in cyt, $mlcp2 in cyt;\n",
+ " species $Pyr in cyt, $PEP in cyt, $Glc6P in cyt, $Glucose in cyt, $ATP in cyt;\n",
+ "\n",
+ " // Assignment Rules:\n",
+ " TCRPsite_cyaA := CRPsite_cyaA + CRP_cAMP_CRPsite_cyaA;\n",
+ " TCRPsiteI_crp := CRPsiteI_crp + CRP_cAMP_CRPsiteI_crp;\n",
+ " TCRPsiteII_crp := CRPsiteII_crp + CRP_cAMP_CRPsiteII_crp;\n",
+ " TCRPsite_ptsGp1 := CRPsite_ptsGp1 + CRP_cAMP_CRPsite_ptsGp1;\n",
+ " TMlcsite_ptsGp1 := Mlcsite_ptsGp1 + Mlc_Mlcsite_ptsGp1;\n",
+ " TCRPsite_ptsGp2 := CRPsite_ptsGp2 + CRP_cAMP_CRPsite_ptsGp2;\n",
+ " TMlcsite_ptsGp2 := Mlcsite_ptsGp2 + Mlc_Mlcsite_ptsGp2;\n",
+ " TCRPsite_ptsHp0 := CRPsite_ptsHp0 + CRP_cAMP_CRPsite_ptsHp0;\n",
+ " TMlcsite_ptsHp0 := Mlcsite_ptsHp0 + Mlc_Mlcsite_ptsHp0;\n",
+ " TCRPsite_ptsHp1 := CRPsite_ptsHp1 + CRP_cAMP_CRPsite_ptsHp1;\n",
+ " TCRPsite_ptsIp0 := CRPsite_ptsIp0 + CRP_cAMP_CRPsite_ptsIp0;\n",
+ " TMlcsite_ptsIp0 := Mlcsite_ptsIp0 + Mlc_Mlcsite_ptsIp0;\n",
+ " TCRPsite_ptsIp1 := CRPsite_ptsIp1 + CRP_cAMP_CRPsite_ptsIp1;\n",
+ " TCRPsite_mlcp1 := CRPsite_mlcp1 + CRP_cAMP_CRPsite_mlcp1;\n",
+ " TMlcsite_mlcp1 := Mlcsite_mlcp1 + Mlc_Mlcsite_mlcp1;\n",
+ " TCRPsite_mlcp2 := CRPsite_mlcp2 + CRP_cAMP_CRPsite_mlcp2;\n",
+ " TMlcsite_mlcp2 := Mlcsite_mlcp2 + Mlc_Mlcsite_mlcp2;\n",
+ "\n",
+ " // Reactions:\n",
+ " binding_CRP_cAMP: CRP + cAMP -> CRP_cAMP; cyt*fast*binding_CRP_cAMP_one_per_M*(binding_CRP_cAMP_Kb^2*(CRP*cAMP)^2 - CRP_cAMP^2);\n",
+ " binding_CRP_cAMP_CRPsite_cyaA: CRP_cAMP + CRPsite_cyaA -> CRP_cAMP_CRPsite_cyaA; cyt*fast*(binding_CRP_cAMP_CRPsite_cyaA_Kb*CRP_cAMP*CRPsite_cyaA - CRP_cAMP_CRPsite_cyaA);\n",
+ " binding_CRP_cAMP_CRPsiteI_crp: CRP_cAMP + CRPsiteI_crp -> CRP_cAMP_CRPsiteI_crp; cyt*fast*(binding_CRP_cAMP_CRPsiteI_crp_Kb*CRP_cAMP*CRPsiteI_crp - CRP_cAMP_CRPsiteI_crp);\n",
+ " binding_CRP_cAMP_CRPsiteII_crp: CRP_cAMP + CRPsiteII_crp -> CRP_cAMP_CRPsiteII_crp; cyt*fast*(binding_CRP_cAMP_CRPsiteII_crp_Kb*CRP_cAMP*CRPsiteII_crp - CRP_cAMP_CRPsiteII_crp);\n",
+ " binding_CRP_cAMP_CRPsite_ptsGp1: CRP_cAMP + CRPsite_ptsGp1 -> CRP_cAMP_CRPsite_ptsGp1; cyt*fast*(binding_CRP_cAMP_CRPsite_ptsGp1_Kb*CRP_cAMP*CRPsite_ptsGp1 - CRP_cAMP_CRPsite_ptsGp1);\n",
+ " binding_CRP_cAMP_CRPsite_ptsGp2: CRP_cAMP + CRPsite_ptsGp2 -> CRP_cAMP_CRPsite_ptsGp2; cyt*fast*(binding_CRP_cAMP_CRPsite_ptsGp2_Kb*CRP_cAMP*CRPsite_ptsGp2 - CRP_cAMP_CRPsite_ptsGp2);\n",
+ " binding_CRP_cAMP_CRPsite_ptsHp0: CRP_cAMP + CRPsite_ptsHp0 -> CRP_cAMP_CRPsite_ptsHp0; cyt*fast*(binding_CRP_cAMP_CRPsite_ptsHp0_Kb*CRP_cAMP*CRPsite_ptsHp0 - CRP_cAMP_CRPsite_ptsHp0);\n",
+ " binding_CRP_cAMP_CRPsite_ptsHp1: CRP_cAMP + CRPsite_ptsHp1 -> CRP_cAMP_CRPsite_ptsHp1; cyt*fast*(binding_CRP_cAMP_CRPsite_ptsHp1_Kb*CRP_cAMP*CRPsite_ptsHp1 - CRP_cAMP_CRPsite_ptsHp1);\n",
+ " binding_CRP_cAMP_CRPsite_ptsIp0: CRP_cAMP + CRPsite_ptsIp0 -> CRP_cAMP_CRPsite_ptsIp0; cyt*fast*(binding_CRP_cAMP_CRPsite_ptsIp0_Kb*CRP_cAMP*CRPsite_ptsIp0 - CRP_cAMP_CRPsite_ptsIp0);\n",
+ " binding_CRP_cAMP_CRPsite_ptsIp1: CRP_cAMP + CRPsite_ptsIp1 -> CRP_cAMP_CRPsite_ptsIp1; cyt*fast*(binding_CRP_cAMP_CRPsite_ptsIp1_Kb*CRP_cAMP*CRPsite_ptsIp1 - CRP_cAMP_CRPsite_ptsIp1);\n",
+ " binding_CRP_cAMP_CRPsite_mlcp1: CRP_cAMP + CRPsite_mlcp1 -> CRP_cAMP_CRPsite_mlcp1; cyt*fast*(binding_CRP_cAMP_CRPsite_mlcp1_Kb*CRP_cAMP*CRPsite_mlcp1 - CRP_cAMP_CRPsite_mlcp1);\n",
+ " binding_CRP_cAMP_CRPsite_mlcp2: CRP_cAMP + CRPsite_mlcp2 -> CRP_cAMP_CRPsite_mlcp2; cyt*fast*(binding_CRP_cAMP_CRPsite_mlcp2_Kb*CRP_cAMP*CRPsite_mlcp2 - CRP_cAMP_CRPsite_mlcp2);\n",
+ " binding_CRP_cAMP_CRPsite_genome: CRP_cAMP + CRPsite_genome -> CRP_cAMP_CRPsite_genome; cyt*fast*(binding_CRP_cAMP_CRPsite_genome_Kb*CRP_cAMP*CRPsite_genome - CRP_cAMP_CRPsite_genome);\n",
+ " binding_Mlc_Mlcsite_ptsGp1: Mlc + Mlcsite_ptsGp1 -> Mlc_Mlcsite_ptsGp1; cyt*fast*(binding_Mlc_Mlcsite_ptsGp1_Kb*Mlc*Mlcsite_ptsGp1 - Mlc_Mlcsite_ptsGp1);\n",
+ " binding_Mlc_Mlcsite_ptsGp2: Mlc + Mlcsite_ptsGp2 -> Mlc_Mlcsite_ptsGp2; cyt*fast*(binding_Mlc_Mlcsite_ptsGp2_Kb*Mlc*Mlcsite_ptsGp2 - Mlc_Mlcsite_ptsGp2);\n",
+ " binding_Mlc_Mlcsite_ptsHp0: Mlc + Mlcsite_ptsHp0 -> Mlc_Mlcsite_ptsHp0; cyt*fast*(binding_Mlc_Mlcsite_ptsHp0_Kb*Mlc*Mlcsite_ptsHp0 - Mlc_Mlcsite_ptsHp0);\n",
+ " binding_Mlc_Mlcsite_ptsIp0: Mlc + Mlcsite_ptsIp0 -> Mlc_Mlcsite_ptsIp0; cyt*fast*(binding_Mlc_Mlcsite_ptsIp0_Kb*Mlc*Mlcsite_ptsIp0 - Mlc_Mlcsite_ptsIp0);\n",
+ " binding_Mlc_Mlcsite_mlcp1: Mlc + Mlcsite_mlcp1 -> Mlc_Mlcsite_mlcp1; cyt*fast*(binding_Mlc_Mlcsite_mlcp1_Kb*Mlc*Mlcsite_mlcp1 - Mlc_Mlcsite_mlcp1);\n",
+ " binding_Mlc_Mlcsite_mlcp2: Mlc + Mlcsite_mlcp2 -> Mlc_Mlcsite_mlcp2; cyt*fast*(binding_Mlc_Mlcsite_mlcp2_Kb*Mlc*Mlcsite_mlcp2 - Mlc_Mlcsite_mlcp2);\n",
+ " binding_IICB_Mlc: IICB + Mlc -> IICB_Mlc; cyt*fast*(binding_IICB_Mlc_Kb*IICB*Mlc - IICB_Mlc);\n",
+ " binding_IIA_P_CYA: CYA + IIA_P -> IIA_P_CYA; cyt*fast*(binding_IIA_P_CYA_Kb*CYA*IIA_P^2 - IIA_P_CYA);\n",
+ " transcription_CRP_cAMP_CRPsite_cyaA_cyaA: -> mRNA_cyaA; cyt*transcription_CRP_cAMP_CRPsite_cyaA_cyaA_km*(1 - CRP_cAMP_CRPsite_cyaA/TCRPsite_cyaA)*cyaA;\n",
+ " transcription_cyaA_basal: -> mRNA_cyaA; cyt*transcription_cyaA_basal_km*cyaA_basal;\n",
+ " transcription_CRP_cAMP_CRPsiteI_crp_CRP_cAMP_CRPsiteII_crp_crp: -> mRNA_crp; cyt*transcription_CRP_cAMP_CRPsiteI_crp_CRP_cAMP_CRPsiteII_crp_crp_km*(1 + transcription_CRP_cAMP_CRPsiteI_crp_CRP_cAMP_CRPsiteII_crp_crp_RelativeactivityatTCRPsiteII_crp*CRP_cAMP_CRPsiteII_crp/TCRPsiteII_crp - CRP_cAMP_CRPsiteI_crp/TCRPsiteI_crp)*crp;\n",
+ " transcription_crp_basal: -> mRNA_crp; cyt*transcription_crp_basal_km*crp_basal;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsGp1_Mlc_Mlcsite_ptsGp1_ptsGp1: -> mRNA_ptsG; cyt*transcription_CRP_cAMP_CRPsite_ptsGp1_Mlc_Mlcsite_ptsGp1_ptsGp1_km*(CRP_cAMP_CRPsite_ptsGp1/TCRPsite_ptsGp1)*(1 - Mlc_Mlcsite_ptsGp1/TMlcsite_ptsGp1)*ptsGp1;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsGp2_Mlc_Mlcsite_ptsGp2_ptsGp2: -> mRNA_ptsG; cyt*transcription_CRP_cAMP_CRPsite_ptsGp2_Mlc_Mlcsite_ptsGp2_ptsGp2_km*(CRP_cAMP_CRPsite_ptsGp2/TCRPsite_ptsGp2)*(1 - Mlc_Mlcsite_ptsGp2/TMlcsite_ptsGp2)*ptsGp2;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsHp0_Mlc_Mlcsite_ptsHp0_ptsHp0: -> mRNA_ptsH; cyt*transcription_CRP_cAMP_CRPsite_ptsHp0_Mlc_Mlcsite_ptsHp0_ptsHp0_km*(CRP_cAMP_CRPsite_ptsHp0/TCRPsite_ptsHp0)*(1 - Mlc_Mlcsite_ptsHp0/TMlcsite_ptsHp0)*ptsHp0;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsHp1_ptsHp1: -> mRNA_ptsH; cyt*transcription_CRP_cAMP_CRPsite_ptsHp1_ptsHp1_km*(CRP_cAMP_CRPsite_ptsHp1/TCRPsite_ptsHp1)*ptsHp1;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsIp0_Mlc_Mlcsite_ptsIp0_ptsIp0: -> mRNA_ptsI; cyt*transcription_CRP_cAMP_CRPsite_ptsIp0_Mlc_Mlcsite_ptsIp0_ptsIp0_km*(CRP_cAMP_CRPsite_ptsIp0/TCRPsite_ptsIp0)*(1 - Mlc_Mlcsite_ptsIp0/TMlcsite_ptsIp0)*ptsIp0;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsIp1_ptsIp1: -> mRNA_ptsI; cyt*transcription_CRP_cAMP_CRPsite_ptsIp1_ptsIp1_km*(CRP_cAMP_CRPsite_ptsIp1/TCRPsite_ptsIp1)*ptsIp1;\n",
+ " transcription_crr: -> mRNA_crr; cyt*transcription_crr_km*crr;\n",
+ " transcription_CRP_cAMP_CRPsite_mlcp1_Mlc_Mlcsite_mlcp1_mlcp1: -> mRNA_mlc; cyt*transcription_CRP_cAMP_CRPsite_mlcp1_Mlc_Mlcsite_mlcp1_mlcp1_km*(1 - CRP_cAMP_CRPsite_mlcp1/TCRPsite_mlcp1)*(1 - Mlc_Mlcsite_mlcp1/TMlcsite_mlcp1)*mlcp1;\n",
+ " transcription_CRP_cAMP_CRPsite_mlcp2_Mlc_Mlcsite_mlcp2_mlcp2: -> mRNA_mlc; cyt*transcription_CRP_cAMP_CRPsite_mlcp2_Mlc_Mlcsite_mlcp2_mlcp2_km*(CRP_cAMP_CRPsite_mlcp2/TCRPsite_mlcp2)*(1 - Mlc_Mlcsite_mlcp2/TMlcsite_mlcp2)*mlcp2;\n",
+ " decomposition_mRNA_cyaA: mRNA_cyaA -> ; cyt*decomposition_mRNA_cyaA_kmd*mRNA_cyaA;\n",
+ " decomposition_mRNA_crp: mRNA_crp -> ; cyt*decomposition_mRNA_crp_kmd*mRNA_crp;\n",
+ " decomposition_mRNA_ptsG: mRNA_ptsG -> ; cyt*decomposition_mRNA_ptsG_kmd*mRNA_ptsG;\n",
+ " decomposition_mRNA_ptsH: mRNA_ptsH -> ; cyt*decomposition_mRNA_ptsH_kmd*mRNA_ptsH;\n",
+ " decomposition_mRNA_ptsI: mRNA_ptsI -> ; cyt*decomposition_mRNA_ptsI_kmd*mRNA_ptsI;\n",
+ " decomposition_mRNA_crr: mRNA_crr -> ; cyt*decomposition_mRNA_crr_kmd*mRNA_crr;\n",
+ " decomposition_mRNA_mlc: mRNA_mlc -> ; cyt*decomposition_mRNA_mlc_kmd*mRNA_mlc;\n",
+ " translation_mRNA_cyaA: -> CYA; cyt*translation_mRNA_cyaA_kp*mRNA_cyaA;\n",
+ " translation_mRNA_crp: -> CRP; cyt*translation_mRNA_crp_kp*mRNA_crp;\n",
+ " translation_mRNA_ptsG: -> IICB; cyt*translation_mRNA_ptsG_kp*mRNA_ptsG;\n",
+ " translation_mRNA_ptsH: -> HPr; cyt*translation_mRNA_ptsH_kp*mRNA_ptsH;\n",
+ " translation_mRNA_ptsI: -> EI; cyt*translation_mRNA_ptsI_kp*mRNA_ptsI;\n",
+ " translation_mRNA_crr: -> IIA; cyt*translation_mRNA_crr_kp*mRNA_crr;\n",
+ " translation_mlc: -> Mlc; cyt*translation_mlc_kp*mRNA_mlc;\n",
+ " decomposition_CYA: CYA -> ; cyt*decomposition_CYA_kpd*CYA;\n",
+ " decomposition_CRP: CRP -> ; cyt*decomposition_CRP_kpd*CRP;\n",
+ " decomposition_Mlc: Mlc -> ; cyt*decomposition_Mlc_kpd*Mlc;\n",
+ " decomposition_cAMP: cAMP -> ; cyt*decomposition_cAMP_kpd*cAMP;\n",
+ " decomposition_CRP_cAMP: CRP_cAMP -> ; cyt*decomposition_CRP_cAMP_kpd*CRP_cAMP;\n",
+ " decomposition_CRP_cAMP_CRPsite_cyaA: CRP_cAMP_CRPsite_cyaA -> CRPsite_cyaA; cyt*decomposition_CRP_cAMP_CRPsite_cyaA_kpd*CRP_cAMP_CRPsite_cyaA;\n",
+ " decomposition_CRP_cAMP_CRPsiteI_crp: CRP_cAMP_CRPsiteI_crp -> CRPsiteI_crp; cyt*decomposition_CRP_cAMP_CRPsiteI_crp_kpd*CRP_cAMP_CRPsiteI_crp;\n",
+ " decomposition_CRP_cAMP_CRPsiteII_crp: CRP_cAMP_CRPsiteII_crp -> CRPsiteII_crp; cyt*decomposition_CRP_cAMP_CRPsiteII_crp_kpd*CRP_cAMP_CRPsiteII_crp;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsGp1: CRP_cAMP_CRPsite_ptsGp1 -> CRPsite_ptsGp1; cyt*decomposition_CRP_cAMP_CRPsite_ptsGp1_kpd*CRP_cAMP_CRPsite_ptsGp1;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsGp2: CRP_cAMP_CRPsite_ptsGp2 -> CRPsite_ptsGp2; cyt*decomposition_CRP_cAMP_CRPsite_ptsGp2_kpd*CRP_cAMP_CRPsite_ptsGp2;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsHp0: CRP_cAMP_CRPsite_ptsHp0 -> CRPsite_ptsHp0; cyt*decomposition_CRP_cAMP_CRPsite_ptsHp0_kpd*CRP_cAMP_CRPsite_ptsHp0;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsHp1: CRP_cAMP_CRPsite_ptsHp1 -> CRPsite_ptsHp1; cyt*decomposition_CRP_cAMP_CRPsite_ptsHp1_kpd*CRP_cAMP_CRPsite_ptsHp1;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsIp0: CRP_cAMP_CRPsite_ptsIp0 -> CRPsite_ptsIp0; cyt*decomposition_CRP_cAMP_CRPsite_ptsIp0_kpd*CRP_cAMP_CRPsite_ptsIp0;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsIp1: CRP_cAMP_CRPsite_ptsIp1 -> CRPsite_ptsIp1; cyt*decomposition_CRP_cAMP_CRPsite_ptsIp1_kpd*CRP_cAMP_CRPsite_ptsIp1;\n",
+ " decomposition_CRP_cAMP_CRPsite_mlcp1: CRP_cAMP_CRPsite_mlcp1 -> CRPsite_mlcp1; cyt*decomposition_CRP_cAMP_CRPsite_mlcp1_kpd*CRP_cAMP_CRPsite_mlcp1;\n",
+ " decomposition_CRP_cAMP_CRPsite_mlcp2: CRP_cAMP_CRPsite_mlcp2 -> CRPsite_mlcp2; cyt*decomposition_CRP_cAMP_CRPsite_mlcp2_kpd*CRP_cAMP_CRPsite_mlcp2;\n",
+ " decomposition_CRP_cAMP_CRPsite_genome: CRP_cAMP_CRPsite_genome -> CRPsite_genome; cyt*decomposition_CRP_cAMP_CRPsite_genome_kpd*CRP_cAMP_CRPsite_genome;\n",
+ " decomposition_Mlc_Mlcsite_ptsGp1: Mlc_Mlcsite_ptsGp1 -> Mlcsite_ptsGp1; cyt*decomposition_Mlc_Mlcsite_ptsGp1_kpd*Mlc_Mlcsite_ptsGp1;\n",
+ " decomposition_Mlc_Mlcsite_ptsGp2: Mlc_Mlcsite_ptsGp2 -> Mlcsite_ptsGp2; cyt*decomposition_Mlc_Mlcsite_ptsGp2_kpd*Mlc_Mlcsite_ptsGp2;\n",
+ " decomposition_Mlc_Mlcsite_ptsHp0: Mlc_Mlcsite_ptsHp0 -> Mlcsite_ptsHp0; cyt*decomposition_Mlc_Mlcsite_ptsHp0_kpd*Mlc_Mlcsite_ptsHp0;\n",
+ " decomposition_Mlc_Mlcsite_ptsIp0: Mlc_Mlcsite_ptsIp0 -> Mlcsite_ptsIp0; cyt*decomposition_Mlc_Mlcsite_ptsIp0_kpd*Mlc_Mlcsite_ptsIp0;\n",
+ " decomposition_Mlc_Mlcsite_mlcp1: Mlc_Mlcsite_mlcp1 -> Mlcsite_mlcp1; cyt*decomposition_Mlc_Mlcsite_mlcp1_kpd*Mlc_Mlcsite_mlcp1;\n",
+ " decomposition_Mlc_Mlcsite_mlcp2: Mlc_Mlcsite_mlcp2 -> Mlcsite_mlcp2; cyt*decomposition_Mlc_Mlcsite_mlcp2_kpd*Mlc_Mlcsite_mlcp2;\n",
+ " decomposition_IICB_Mlc: IICB_Mlc -> ; cyt*decomposition_IICB_Mlc_kpd*IICB_Mlc;\n",
+ " decomposition_EI_P: EI_P -> ; cyt*decomposition_EI_P_kpd*EI_P;\n",
+ " decomposition_EI: EI -> ; cyt*decomposition_EI_kpd*EI;\n",
+ " decomposition_HPr_P: HPr_P -> ; cyt*decomposition_HPr_P_kpd*HPr_P;\n",
+ " decomposition_HPr: HPr -> ; cyt*decomposition_HPr_kpd*HPr;\n",
+ " decomposition_IIA_P: IIA_P -> ; cyt*decomposition_IIA_P_kpd*IIA_P;\n",
+ " decomposition_IIA: IIA -> ; cyt*decomposition_IIA_kpd*IIA;\n",
+ " decomposition_IICB_P: IICB_P -> ; cyt*decomposition_IICB_P_kpd*IICB_P;\n",
+ " decomposition_IICB: IICB -> ; cyt*decomposition_IICB_kpd*IICB;\n",
+ " PTS2for: HPr + EI_P -> HPr_P + EI; cyt*PTS2for_kx*HPr*EI_P;\n",
+ " PTS2rev: HPr_P + EI -> HPr + EI_P; cyt*PTS2rev_kx*EI*HPr_P;\n",
+ " PTS3for: IIA + HPr_P -> IIA_P + HPr; cyt*PTS3for_kx*IIA*HPr_P;\n",
+ " PTS3rev: IIA_P + HPr -> IIA + HPr_P; cyt*PTS3rev_kx*HPr*IIA_P;\n",
+ " PTS4for: IICB + IIA_P -> IICB_P + IIA; cyt*PTS4for_kx*IICB*IIA_P;\n",
+ " PTS4rev: IICB_P + IIA -> IICB + IIA_P; cyt*PTS4rev_kx*IIA*IICB_P;\n",
+ " reaction_CYA_ATP: $ATP -> cAMP; cyt*(reaction_CYA_ATP_Q*CYA*ATP/(reaction_CYA_ATP_Kmich + ATP));\n",
+ " reaction_IIA_P_CYA_ATP: $ATP -> cAMP; cyt*(reaction_IIA_P_CYA_ATP_Q*IIA_P_CYA*ATP/(reaction_IIA_P_CYA_ATP_Kmich + ATP));\n",
+ " reaction_EI_PEP: EI + $PEP -> EI_P + $Pyr; cyt*(2*reaction_EI_PEP_Q*EI*PEP^2/(reaction_EI_PEP_Kmich^2 + PEP^2));\n",
+ " reaction_EIP_Pyr: EI_P + $Pyr -> EI + $PEP; cyt*(2*reaction_EIP_Pyr_Q*EI_P*Pyr^2/(reaction_EIP_Pyr_Kmich^2 + Pyr^2));\n",
+ " reaction_IICB_P_Glucose: IICB_P + $Glucose -> IICB + $Glc6P; cyt*(reaction_IICB_P_Glucose_Q*IICB_P*Glucose/(reaction_IICB_P_Glucose_Kmich + Glucose));\n",
+ " reaction_IICB_Glc6P: IICB + $Glc6P -> IICB_P + $Glucose; cyt*(reaction_IICB_Glc6P_Q*IICB*Glc6P/(reaction_IICB_Glc6P_Kmich + Glc6P));\n",
+ "\n",
+ " // Events:\n",
+ " _E0: at time >= 500: Glucose = 2e-9;\n",
+ "\n",
+ " // Species initializations:\n",
+ " CRP = 5.4207e-06;\n",
+ " CRPsiteI_crp = 7.4368e-11;\n",
+ " CRPsiteII_crp = 1.9047e-10;\n",
+ " CRPsite_cyaA = 3.1103e-11;\n",
+ " CRPsite_genome = 3.6756e-09;\n",
+ " CRPsite_ptsGp1 = 1.2021e-10;\n",
+ " CRPsite_ptsGp2 = 1.2021e-10;\n",
+ " CRPsite_ptsHp0 = 1.2021e-10;\n",
+ " CRPsite_ptsHp1 = 1.2021e-10;\n",
+ " CRPsite_ptsIp0 = 1.2021e-10;\n",
+ " CRPsite_ptsIp1 = 1.2021e-10;\n",
+ " CRPsite_mlcp1 = 1.2021e-10;\n",
+ " CRPsite_mlcp2 = 1.2021e-10;\n",
+ " Mlc = 5.5172e-10;\n",
+ " Mlcsite_mlcp1 = 2.4267e-10;\n",
+ " Mlcsite_mlcp2 = 2.4282e-10;\n",
+ " Mlcsite_ptsGp1 = 2.1885e-10;\n",
+ " Mlcsite_ptsGp2 = 2.1885e-10;\n",
+ " Mlcsite_ptsHp0 = 2.1885e-10;\n",
+ " Mlcsite_ptsIp0 = 2.1885e-10;\n",
+ " CRP_cAMP = 1.0214e-07;\n",
+ " CRP_cAMP_CRPsiteI_crp = 1.6863e-10;\n",
+ " CRP_cAMP_CRPsiteII_crp = 5.2529e-11;\n",
+ " CRP_cAMP_CRPsite_cyaA = 2.119e-10;\n",
+ " CRP_cAMP_CRPsite_genome = 3.7544e-09;\n",
+ " CRP_cAMP_CRPsite_ptsGp1 = 1.2279e-10;\n",
+ " CRP_cAMP_CRPsite_ptsGp2 = 1.2279e-10;\n",
+ " CRP_cAMP_CRPsite_ptsHp0 = 1.2279e-10;\n",
+ " CRP_cAMP_CRPsite_ptsHp1 = 1.2279e-10;\n",
+ " CRP_cAMP_CRPsite_ptsIp0 = 1.2279e-10;\n",
+ " CRP_cAMP_CRPsite_ptsIp1 = 1.2279e-10;\n",
+ " CRP_cAMP_CRPsite_mlcp1 = 1.2279e-10;\n",
+ " CRP_cAMP_CRPsite_mlcp2 = 1.2279e-10;\n",
+ " Mlc_Mlcsite_ptsGp1 = 2.4149e-11;\n",
+ " Mlc_Mlcsite_ptsGp2 = 2.4149e-11;\n",
+ " Mlc_Mlcsite_ptsIp0 = 2.4149e-11;\n",
+ " Mlc_Mlcsite_ptsHp0 = 2.4149e-11;\n",
+ " Mlc_Mlcsite_mlcp1 = 3.2535e-13;\n",
+ " Mlc_Mlcsite_mlcp2 = 1.8086e-13;\n",
+ " IICB = 4.2844e-05;\n",
+ " IICB_Mlc = 1.6546e-07;\n",
+ " CYA = 1.4934e-06;\n",
+ " IIA_P = 7.0094e-06;\n",
+ " IIA_P_CYA = 7.3371e-09;\n",
+ " mRNA_cyaA = 1.3643e-08;\n",
+ " mRNA_crp = 5.0254e-08;\n",
+ " mRNA_ptsG = 4.5559e-07;\n",
+ " mRNA_ptsH = 1.1411e-07;\n",
+ " mRNA_ptsI = 1.0038e-08;\n",
+ " mRNA_crr = 9.3861e-07;\n",
+ " mRNA_mlc = 1.5101e-09;\n",
+ " IICB_P = 7.1055e-06;\n",
+ " IIA = 9.623e-05;\n",
+ " HPr_P = 7.5867e-07;\n",
+ " HPr = 1.1793e-05;\n",
+ " EI_P = 2.4319e-07;\n",
+ " EI = 8.6098e-07;\n",
+ " cAMP = 4.7107e-07;\n",
+ " cyaA = 2.43e-10;\n",
+ " cyaA_basal = 2.43e-10;\n",
+ " crp = 2.43e-10;\n",
+ " crp_basal = 2.43e-10;\n",
+ " ptsGp1 = 2.43e-10;\n",
+ " ptsGp2 = 2.43e-10;\n",
+ " ptsHp0 = 2.43e-10;\n",
+ " ptsHp1 = 2.43e-10;\n",
+ " ptsIp0 = 2.43e-10;\n",
+ " ptsIp1 = 2.43e-10;\n",
+ " crr = 2.43e-10;\n",
+ " mlcp1 = 2.43e-10;\n",
+ " mlcp2 = 2.43e-10;\n",
+ " Pyr = 0.00267;\n",
+ " PEP = 0.00267;\n",
+ " Glc6P = 0.00148;\n",
+ " Glucose = 0.2;\n",
+ " ATP = 0.0069942;\n",
+ "\n",
+ " // Compartment initializations:\n",
+ " cyt = 1;\n",
+ "\n",
+ " // Variable initializations:\n",
+ " fast = 1000000000;\n",
+ " fast has per_min;\n",
+ " TCRPsite_cyaA has M;\n",
+ " TCRPsiteI_crp has M;\n",
+ " TCRPsiteII_crp has M;\n",
+ " TCRPsite_ptsGp1 has M;\n",
+ " TMlcsite_ptsGp1 has M;\n",
+ " TCRPsite_ptsGp2 has M;\n",
+ " TMlcsite_ptsGp2 has M;\n",
+ " TCRPsite_ptsHp0 has M;\n",
+ " TMlcsite_ptsHp0 has M;\n",
+ " TCRPsite_ptsHp1 has M;\n",
+ " TCRPsite_ptsIp0 has M;\n",
+ " TMlcsite_ptsIp0 has M;\n",
+ " TCRPsite_ptsIp1 has M;\n",
+ " TCRPsite_mlcp1 has M;\n",
+ " TMlcsite_mlcp1 has M;\n",
+ " TCRPsite_mlcp2 has M;\n",
+ " TMlcsite_mlcp2 has M;\n",
+ " binding_CRP_cAMP_Kb = 40000;\n",
+ " binding_CRP_cAMP_Kb has per_M;\n",
+ " binding_CRP_cAMP_one_per_M = 1;\n",
+ " binding_CRP_cAMP_one_per_M has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_cyaA_Kb = 66700000;\n",
+ " binding_CRP_cAMP_CRPsite_cyaA_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsiteI_crp_Kb = 22200000;\n",
+ " binding_CRP_cAMP_CRPsiteI_crp_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsiteII_crp_Kb = 2700000;\n",
+ " binding_CRP_cAMP_CRPsiteII_crp_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_ptsGp1_Kb = 10000000;\n",
+ " binding_CRP_cAMP_CRPsite_ptsGp1_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_ptsGp2_Kb = 10000000;\n",
+ " binding_CRP_cAMP_CRPsite_ptsGp2_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_ptsHp0_Kb = 10000000;\n",
+ " binding_CRP_cAMP_CRPsite_ptsHp0_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_ptsHp1_Kb = 10000000;\n",
+ " binding_CRP_cAMP_CRPsite_ptsHp1_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_ptsIp0_Kb = 10000000;\n",
+ " binding_CRP_cAMP_CRPsite_ptsIp0_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_ptsIp1_Kb = 10000000;\n",
+ " binding_CRP_cAMP_CRPsite_ptsIp1_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_mlcp1_Kb = 10000000;\n",
+ " binding_CRP_cAMP_CRPsite_mlcp1_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_mlcp2_Kb = 10000000;\n",
+ " binding_CRP_cAMP_CRPsite_mlcp2_Kb has per_M;\n",
+ " binding_CRP_cAMP_CRPsite_genome_Kb = 10000000;\n",
+ " binding_CRP_cAMP_CRPsite_genome_Kb has per_M;\n",
+ " binding_Mlc_Mlcsite_ptsGp1_Kb = 200000000;\n",
+ " binding_Mlc_Mlcsite_ptsGp1_Kb has per_M;\n",
+ " binding_Mlc_Mlcsite_ptsGp2_Kb = 200000000;\n",
+ " binding_Mlc_Mlcsite_ptsGp2_Kb has per_M;\n",
+ " binding_Mlc_Mlcsite_ptsHp0_Kb = 200000000;\n",
+ " binding_Mlc_Mlcsite_ptsHp0_Kb has per_M;\n",
+ " binding_Mlc_Mlcsite_ptsIp0_Kb = 200000000;\n",
+ " binding_Mlc_Mlcsite_ptsIp0_Kb has per_M;\n",
+ " binding_Mlc_Mlcsite_mlcp1_Kb = 2430000;\n",
+ " binding_Mlc_Mlcsite_mlcp1_Kb has per_M;\n",
+ " binding_Mlc_Mlcsite_mlcp2_Kb = 1350000;\n",
+ " binding_Mlc_Mlcsite_mlcp2_Kb has per_M;\n",
+ " binding_IICB_Mlc_Kb = 7000000;\n",
+ " binding_IICB_Mlc_Kb has per_M;\n",
+ " binding_IIA_P_CYA_Kb = 100000000;\n",
+ " binding_IIA_P_CYA_Kb has per_M_squared;\n",
+ " transcription_CRP_cAMP_CRPsite_cyaA_cyaA_km = 45.26;\n",
+ " transcription_CRP_cAMP_CRPsite_cyaA_cyaA_km has per_min;\n",
+ " transcription_cyaA_basal_km = 1.281;\n",
+ " transcription_cyaA_basal_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsiteI_crp_CRP_cAMP_CRPsiteII_crp_crp_km = 20;\n",
+ " transcription_CRP_cAMP_CRPsiteI_crp_CRP_cAMP_CRPsiteII_crp_crp_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsiteI_crp_CRP_cAMP_CRPsiteII_crp_crp_RelativeactivityatTCRPsiteII_crp = 5;\n",
+ " transcription_CRP_cAMP_CRPsiteI_crp_CRP_cAMP_CRPsiteII_crp_crp_RelativeactivityatTCRPsiteII_crp has dimensionless;\n",
+ " transcription_crp_basal_km = 1.00886;\n",
+ " transcription_crp_basal_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsGp1_Mlc_Mlcsite_ptsGp1_ptsGp1_km = 892;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsGp1_Mlc_Mlcsite_ptsGp1_ptsGp1_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsGp2_Mlc_Mlcsite_ptsGp2_ptsGp2_km = 2;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsGp2_Mlc_Mlcsite_ptsGp2_ptsGp2_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsHp0_Mlc_Mlcsite_ptsHp0_ptsHp0_km = 71.8;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsHp0_Mlc_Mlcsite_ptsHp0_ptsHp0_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsHp1_ptsHp1_km = 17.95;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsHp1_ptsHp1_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsIp0_Mlc_Mlcsite_ptsIp0_ptsIp0_km = 6.244;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsIp0_Mlc_Mlcsite_ptsIp0_ptsIp0_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsIp1_ptsIp1_km = 0.892;\n",
+ " transcription_CRP_cAMP_CRPsite_ptsIp1_ptsIp1_km has per_min;\n",
+ " transcription_crr_km = 334.5;\n",
+ " transcription_crr_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsite_mlcp1_Mlc_Mlcsite_mlcp1_mlcp1_km = 1.875;\n",
+ " transcription_CRP_cAMP_CRPsite_mlcp1_Mlc_Mlcsite_mlcp1_mlcp1_km has per_min;\n",
+ " transcription_CRP_cAMP_CRPsite_mlcp2_Mlc_Mlcsite_mlcp2_mlcp2_km = 1.875;\n",
+ " transcription_CRP_cAMP_CRPsite_mlcp2_Mlc_Mlcsite_mlcp2_mlcp2_km has per_min;\n",
+ " decomposition_mRNA_cyaA_kmd = 0.126;\n",
+ " decomposition_mRNA_cyaA_kmd has per_min;\n",
+ " decomposition_mRNA_crp_kmd = 0.139;\n",
+ " decomposition_mRNA_crp_kmd has per_min;\n",
+ " decomposition_mRNA_ptsG_kmd = 0.217;\n",
+ " decomposition_mRNA_ptsG_kmd has per_min;\n",
+ " decomposition_mRNA_ptsH_kmd = 0.0889;\n",
+ " decomposition_mRNA_ptsH_kmd has per_min;\n",
+ " decomposition_mRNA_ptsI_kmd = 0.0797;\n",
+ " decomposition_mRNA_ptsI_kmd has per_min;\n",
+ " decomposition_mRNA_crr_kmd = 0.0866;\n",
+ " decomposition_mRNA_crr_kmd has per_min;\n",
+ " decomposition_mRNA_mlc_kmd = 0.3014;\n",
+ " decomposition_mRNA_mlc_kmd has per_min;\n",
+ " translation_mRNA_cyaA_kp = 11;\n",
+ " translation_mRNA_cyaA_kp has per_min;\n",
+ " translation_mRNA_crp_kp = 11;\n",
+ " translation_mRNA_crp_kp has per_min;\n",
+ " translation_mRNA_ptsG_kp = 11;\n",
+ " translation_mRNA_ptsG_kp has per_min;\n",
+ " translation_mRNA_ptsH_kp = 11;\n",
+ " translation_mRNA_ptsH_kp has per_min;\n",
+ " translation_mRNA_ptsI_kp = 11;\n",
+ " translation_mRNA_ptsI_kp has per_min;\n",
+ " translation_mRNA_crr_kp = 11;\n",
+ " translation_mRNA_crr_kp has per_min;\n",
+ " translation_mlc_kp = 11;\n",
+ " translation_mlc_kp has per_min;\n",
+ " decomposition_CYA_kpd = 0.1;\n",
+ " decomposition_CYA_kpd has per_min;\n",
+ " decomposition_CRP_kpd = 0.1;\n",
+ " decomposition_CRP_kpd has per_min;\n",
+ " decomposition_Mlc_kpd = 0.1;\n",
+ " decomposition_Mlc_kpd has per_min;\n",
+ " decomposition_cAMP_kpd = 400;\n",
+ " decomposition_cAMP_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_cyaA_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_cyaA_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsiteI_crp_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsiteI_crp_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsiteII_crp_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsiteII_crp_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsGp1_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsGp1_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsGp2_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsGp2_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsHp0_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsHp0_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsHp1_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsHp1_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsIp0_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsIp0_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsIp1_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_ptsIp1_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_mlcp1_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_mlcp1_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_mlcp2_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_mlcp2_kpd has per_min;\n",
+ " decomposition_CRP_cAMP_CRPsite_genome_kpd = 0.1;\n",
+ " decomposition_CRP_cAMP_CRPsite_genome_kpd has per_min;\n",
+ " decomposition_Mlc_Mlcsite_ptsGp1_kpd = 0.1;\n",
+ " decomposition_Mlc_Mlcsite_ptsGp1_kpd has per_min;\n",
+ " decomposition_Mlc_Mlcsite_ptsGp2_kpd = 0.1;\n",
+ " decomposition_Mlc_Mlcsite_ptsGp2_kpd has per_min;\n",
+ " decomposition_Mlc_Mlcsite_ptsHp0_kpd = 0.1;\n",
+ " decomposition_Mlc_Mlcsite_ptsHp0_kpd has per_min;\n",
+ " decomposition_Mlc_Mlcsite_ptsIp0_kpd = 0.1;\n",
+ " decomposition_Mlc_Mlcsite_ptsIp0_kpd has per_min;\n",
+ " decomposition_Mlc_Mlcsite_mlcp1_kpd = 0.1;\n",
+ " decomposition_Mlc_Mlcsite_mlcp1_kpd has per_min;\n",
+ " decomposition_Mlc_Mlcsite_mlcp2_kpd = 0.1;\n",
+ " decomposition_Mlc_Mlcsite_mlcp2_kpd has per_min;\n",
+ " decomposition_IICB_Mlc_kpd = 0.1;\n",
+ " decomposition_IICB_Mlc_kpd has per_min;\n",
+ " decomposition_EI_P_kpd = 0.1;\n",
+ " decomposition_EI_P_kpd has per_min;\n",
+ " decomposition_EI_kpd = 0.1;\n",
+ " decomposition_EI_kpd has per_min;\n",
+ " decomposition_HPr_P_kpd = 0.1;\n",
+ " decomposition_HPr_P_kpd has per_min;\n",
+ " decomposition_HPr_kpd = 0.1;\n",
+ " decomposition_HPr_kpd has per_min;\n",
+ " decomposition_IIA_P_kpd = 0.1;\n",
+ " decomposition_IIA_P_kpd has per_min;\n",
+ " decomposition_IIA_kpd = 0.1;\n",
+ " decomposition_IIA_kpd has per_min;\n",
+ " decomposition_IICB_P_kpd = 0.1;\n",
+ " decomposition_IICB_P_kpd has per_min;\n",
+ " decomposition_IICB_kpd = 0.1;\n",
+ " decomposition_IICB_kpd has per_min;\n",
+ " PTS2for_kx = 12000000000;\n",
+ " PTS2for_kx has per_M_per_min;\n",
+ " PTS2rev_kx = 480000000;\n",
+ " PTS2rev_kx has per_M_per_min;\n",
+ " PTS3for_kx = 3660000000;\n",
+ " PTS3for_kx has per_M_per_min;\n",
+ " PTS3rev_kx = 2820000000;\n",
+ " PTS3rev_kx has per_M_per_min;\n",
+ " PTS4for_kx = 660000000;\n",
+ " PTS4for_kx has per_M_per_min;\n",
+ " PTS4rev_kx = 240000000;\n",
+ " PTS4rev_kx has per_M_per_min;\n",
+ " reaction_CYA_ATP_Kmich = 0.001;\n",
+ " reaction_CYA_ATP_Kmich has M;\n",
+ " reaction_CYA_ATP_Q = 100;\n",
+ " reaction_CYA_ATP_Q has per_min;\n",
+ " reaction_IIA_P_CYA_ATP_Kmich = 0.001;\n",
+ " reaction_IIA_P_CYA_ATP_Kmich has M;\n",
+ " reaction_IIA_P_CYA_ATP_Q = 9000;\n",
+ " reaction_IIA_P_CYA_ATP_Q has per_min;\n",
+ " reaction_EI_PEP_Kmich = 0.0003;\n",
+ " reaction_EI_PEP_Kmich has M;\n",
+ " reaction_EI_PEP_Q = 108000;\n",
+ " reaction_EI_PEP_Q has per_min;\n",
+ " reaction_EIP_Pyr_Kmich = 0.002;\n",
+ " reaction_EIP_Pyr_Kmich has M;\n",
+ " reaction_EIP_Pyr_Q = 480000;\n",
+ " reaction_EIP_Pyr_Q has per_min;\n",
+ " reaction_IICB_P_Glucose_Kmich = 2e-05;\n",
+ " reaction_IICB_P_Glucose_Kmich has M;\n",
+ " reaction_IICB_P_Glucose_Q = 4800;\n",
+ " reaction_IICB_P_Glucose_Q has per_min;\n",
+ " reaction_IICB_Glc6P_Kmich = 9.61;\n",
+ " reaction_IICB_Glc6P_Kmich has M;\n",
+ " reaction_IICB_Glc6P_Q = 389;\n",
+ " reaction_IICB_Glc6P_Q has per_min;\n",
+ "\n",
+ " // Other declarations:\n",
+ " var TCRPsite_cyaA, TCRPsiteI_crp, TCRPsiteII_crp, TCRPsite_ptsGp1, TMlcsite_ptsGp1;\n",
+ " var TCRPsite_ptsGp2, TMlcsite_ptsGp2, TCRPsite_ptsHp0, TMlcsite_ptsHp0;\n",
+ " var TCRPsite_ptsHp1, TCRPsite_ptsIp0, TMlcsite_ptsIp0, TCRPsite_ptsIp1;\n",
+ " var TCRPsite_mlcp1, TMlcsite_mlcp1, TCRPsite_mlcp2, TMlcsite_mlcp2;\n",
+ " const cyt, fast;\n",
+ "\n",
+ " // Unit definitions:\n",
+ " unit substance = mole;\n",
+ " unit time_unit = 60 second;\n",
+ " unit volume = litre;\n",
+ " unit M = mole / litre;\n",
+ " unit per_min = 1 / 60 second;\n",
+ " unit per_M = litre / mole;\n",
+ " unit per_M_per_min = litre / (mole * 60 second);\n",
+ " unit per_M_squared = litre^2 / mole^2;\n",
+ "\n",
+ " // CV terms:\n",
+ " cyt identity \"http://identifiers.org/go/GO:0005737\"\n",
+ " CRP identity \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsiteI_crp hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsiteII_crp hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_cyaA hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_cyaA parthood \"http://identifiers.org/uniprot/P00936\"\n",
+ " CRPsite_genome hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_ptsGp1 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_ptsGp1 part \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " CRPsite_ptsGp2 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_ptsGp2 part \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " CRPsite_ptsHp0 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_ptsHp0 part \"http://identifiers.org/uniprot/P0AA04\"\n",
+ " CRPsite_ptsHp1 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_ptsHp1 part \"http://identifiers.org/uniprot/P0AA04\"\n",
+ " CRPsite_ptsIp0 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_ptsIp0 part \"http://identifiers.org/uniprot/P08839\"\n",
+ " CRPsite_ptsIp1 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_ptsIp1 part \"http://identifiers.org/uniprot/P08839\"\n",
+ " CRPsite_mlcp1 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_mlcp1 part \"http://identifiers.org/uniprot/P50456\"\n",
+ " CRPsite_mlcp2 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRPsite_mlcp2 part \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc identity \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlcsite_mlcp1 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlcsite_mlcp2 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlcsite_ptsGp1 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlcsite_ptsGp1 part \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " Mlcsite_ptsGp2 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlcsite_ptsGp2 part \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " Mlcsite_ptsHp0 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlcsite_ptsHp0 part \"http://identifiers.org/uniprot/P0AA04\"\n",
+ " Mlcsite_ptsIp0 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlcsite_ptsIp0 part \"http://identifiers.org/uniprot/P08839\"\n",
+ " CRP_cAMP hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsiteI_crp hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsiteI_crp part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsiteII_crp hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsiteII_crp part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_cyaA hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_cyaA part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_genome hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_genome part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_ptsGp1 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_ptsGp1 part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_ptsGp2 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_ptsGp2 part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_ptsHp0 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_ptsHp0 part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_ptsHp1 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_ptsHp1 part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_ptsIp0 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_ptsIp0 part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_ptsIp1 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_ptsIp1 part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_mlcp1 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_mlcp1 part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " CRP_cAMP_CRPsite_mlcp2 hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " CRP_cAMP_CRPsite_mlcp2 part \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " Mlc_Mlcsite_ptsGp1 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_ptsGp1 part \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_ptsGp2 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_ptsGp2 part \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_ptsIp0 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_ptsIp0 part \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_ptsHp0 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_ptsHp0 part \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_mlcp1 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_mlcp1 part \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_mlcp2 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Mlc_Mlcsite_mlcp2 part \"http://identifiers.org/uniprot/P50456\"\n",
+ " IICB identity \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " IICB_Mlc hypernym \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " IICB_Mlc part \"http://identifiers.org/uniprot/P50456\"\n",
+ " CYA identity \"http://identifiers.org/uniprot/P00936\"\n",
+ " IIA_P identity \"http://identifiers.org/uniprot/P69783\"\n",
+ " IIA_P_CYA hypernym \"http://identifiers.org/uniprot/P69783\"\n",
+ " IIA_P_CYA part \"http://identifiers.org/uniprot/P00936\"\n",
+ " mRNA_cyaA hypernym \"http://identifiers.org/chebi/CHEBI:33699\"\n",
+ " mRNA_crp hypernym \"http://identifiers.org/chebi/CHEBI:33699\"\n",
+ " mRNA_ptsG hypernym \"http://identifiers.org/chebi/CHEBI:33699\"\n",
+ " mRNA_ptsH hypernym \"http://identifiers.org/chebi/CHEBI:33699\"\n",
+ " mRNA_ptsI hypernym \"http://identifiers.org/chebi/CHEBI:33699\"\n",
+ " mRNA_crr hypernym \"http://identifiers.org/chebi/CHEBI:33699\"\n",
+ " mRNA_mlc hypernym \"http://identifiers.org/chebi/CHEBI:33699\"\n",
+ " IICB_P hypernym \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " IIA hypernym \"http://identifiers.org/uniprot/P69783\"\n",
+ " HPr_P hypernym \"http://identifiers.org/uniprot/P0AA04\"\n",
+ " HPr identity \"http://identifiers.org/uniprot/P0AA04\"\n",
+ " EI_P hypernym \"http://identifiers.org/uniprot/P08839\"\n",
+ " EI identity \"http://identifiers.org/uniprot/P08839\"\n",
+ " cAMP identity \"http://identifiers.org/chebi/CHEBI:17489\"\n",
+ " cyaA identity \"http://identifiers.org/uniprot/P00936\"\n",
+ " cyaA_basal hypernym \"http://identifiers.org/uniprot/P00936\"\n",
+ " crp hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " crp_basal hypernym \"http://identifiers.org/uniprot/P0ACJ8\"\n",
+ " ptsGp1 hypernym \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " ptsGp2 hypernym \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " ptsHp0 hypernym \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " ptsHp1 hypernym \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " ptsIp0 hypernym \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " ptsIp1 hypernym \"http://identifiers.org/uniprot/C3TDU2\"\n",
+ " crr identity \"http://identifiers.org/uniprot/P69783\"\n",
+ " mlcp1 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " mlcp2 hypernym \"http://identifiers.org/uniprot/P50456\"\n",
+ " Pyr identity \"http://identifiers.org/chebi/CHEBI:32816\"\n",
+ " PEP identity \"http://identifiers.org/chebi/CHEBI:44897\"\n",
+ " Glc6P identity \"http://identifiers.org/chebi/CHEBI:4170\"\n",
+ " Glucose identity \"http://identifiers.org/chebi/CHEBI:4167\"\n",
+ " ATP identity \"http://identifiers.org/chebi/CHEBI:15422\"\n",
+ "end\n",
+ "\n",
+ "MODEL1501300000 is \"Nishio2008 - Design of the phosphotransferase system for enhanced glucose uptake in E. coli.\"\n",
+ "\n",
+ "MODEL1501300000 model_entity_is \"http://identifiers.org/biomodels.db/MODEL1501300000\"\n",
+ "MODEL1501300000 model_entity_is \"http://identifiers.org/biomodels.db/BIOMD0000000571\"\n",
+ "MODEL1501300000 description \"http://identifiers.org/pubmed/18197177\"\n",
+ "MODEL1501300000 origin \"http://identifiers.org/biomodels.db/BIOMD0000000051\"\n",
+ "MODEL1501300000 taxon \"http://identifiers.org/taxonomy/83333\"\n",
+ "MODEL1501300000 hypernym \"http://identifiers.org/go/GO:0008982\"\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "###############################################################################\n",
+ "### OBTAIN SOURCE FILE FROM URL & LOAD TELLURIUM SBML MODEL + VIEW ANTIMONY ###\n",
+ "###############################################################################\n",
+ "\n",
+ "# Assign file URL to a variable\n",
+ "TIMES = np.linspace(000, 1500, 5000)\n",
+ "BIOMODEL_SOURCE_FILE_URL = \"https://www.ebi.ac.uk/biomodels/services/download/get-files/MODEL1501300000/3/BIOMD0000000571_url.xml\"\n",
+ "\n",
+ "# Create tellurium SBML model & print the antimony\n",
+ "CTLSB = ControlSBML(BIOMODEL_SOURCE_FILE_URL, xlabel=\"time (min)\", times=TIMES)\n",
+ "ANTIMONY_MODEL_EI_P = CTLSB.getAntimony()\n",
+ "print(ANTIMONY_MODEL_EI_P)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a72fe46e-a3cf-4eb5-be03-c762fd89454e",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "#### Preliminary Investigation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "c5bdfefa-bfcd-43b4-9305-a2742fc53618",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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FsyYMYMJEybwxhtvoNHcWg5labQlEkmNIoSosuyECRMYPnw46enpTJgwgTFjxhAbG1tGrmHDhgghKCwspHXr1qxatarSHvmePXto2LChagDcsWTJEoYOHaq+Hzp0KF27duX9998vs69569atiYuL44svvuD777/nscceQ6dz/xO6YMECPvroI6xWK1qtlueff56nn366Qn2heteue/fuLFy4kIKCAubMmYNOp2PgwIFl5B599FG0Wi1FRUUEBwezePFi4uPj8ff3Z+7cucTExNCnTx/69u3LgAEDyj0nd+zdu5ctW7a49GjtdjvFxcUUFhZWa0y8KvfLYDAQHx9fJr100l4pHTp0ID8/n5MnT1bqfahrSKMtkdQR9GY9k/Mn11rbVSUuLg5FUfjtt98qlQ0KCiI2NpbY2Fg+//xzWrVqxe23307z5s1d5DZv3oyPjw8hISFVDhJS6gouj6SkJLZt28aOHTuYOHGimm6321m5ciWjRo0qU2bkyJHMnz+fpKQkduzYUW7dQ4YM4dVXX8VkMlGvXr0q9/YaN25cpesG4OnpqT7gLFmyhNatW7N48WKeeOIJF7k5c+bQs2dPfH191R4zOCfXJScns2HDBhISEhgzZgzvvPMOP/zwQ5WjpOXn5zN9+nQefPDBMnkeHh5VqqOUyu5XqUxVh2luVW4tv4FEcgujKAoGT0OtHNX5oQwICKB3797Mnz+fgoKCMvnZ2dluy4WHh/Pwww8zeXLZB5Po6GgaNWpUrahe8fHxnDp1isOHD7vNX7x4MV26dGHv3r3s2bNHPV544QUWL17stszgwYPZv38/LVu2LPNgcTm+vr7ExsbSoEGDarlnBw8ezIYNG/j111/L5NlsNrfXE0Cj0fDKK6/w2muvUVRU5JIXFhZGbGysi8EuxWQyMWDAAObNm0diYiJbt25l//79btvQ6/VlZuzfdtttJCcnqw9elx/VdUtXdr8qYu/evS7nvW3bNry8vAgPD692XTc70mhLJJIaZ/78+djtdu68805WrVrFkSNHOHToEPPmzaNDhw7llhs/fjzffPMNu3btumYdunbtSpcuXRg4cCAJCQmkpKSwbt061q9fj81m49///jePPvooLVu2dDmefPJJtm/f7rK8qhR/f3/S09PVteY1zXPPPUenTp3o0aMH8+fPZ+/evRw/fpzPPvuM9u3bc+TI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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "_ = CTLSB.plotModel(times=TIMES, legend=True, title=\"All Species\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "bd483269-8864-4829-9a76-031ca0885195",
+ "metadata": {
+ "id": "c0fb6205-fd27-49f0-bd8e-d9f7439df0e8"
+ },
+ "source": [
+ "We can see that at t = 500 the sudden change in glucose quickly perturbes the system but it seems to quickly return to homeostasis. There are a ton of things being modeled here so let's take a look at ``EI_P``:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "55fe1398-1dd4-4559-b2c3-09666980f439",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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03tmztz2raG85rZvtb755hsxPDxcdHBwEPv27St+8skneq9rNBrxr3/9q+jj4yM6ODiIY8aMEdPT0/WWuXXrljh9+nTRxcVFdHNzE//4xz+K5eXlnZ63qqpKHDdunOjt7S3a2dmJgYGB4jPPPKP3eEVn5/3+++9FAI32mShK+/vLj9kiIiIygNcoiYiIDGBREhERGcCiJCIiMoBFSUREZACLkoiIyAAWJRERkQEsSiIiIgNYlERERAawKIkklpiYCEEQGg343Fn279+Pfv36NTnIe1sIgoCdO3e2evm9e/firrvugkajadf7EnU0FiVRJxo9ejQWLVqkN2/48OEoKCiAu7u7JJlefvllvP76600O8t4WBQUFeh+d1ZIJEybAzs4OmzZtatf7EnU0FiWRxOzt7eHr6wtBEDr9vQ8fPozMzEw8/vjj7d6Wr68vHBwc2rTOrFmz8MEHH7T7vYk6EouSqJPMmjULSUlJeP/99yEIAgRBQE5OTqNTr+vXr4eHhwd2796NsLAwODs744knnkBVVRW++OILBAUFoWvXrliwYIHe6VKVSoXFixeje/fu6NKlC4YNG4bExESDmRISEvDggw/qfTD1G2+8gbvuugtr165Fz5494eLignnz5kGtVmP16tXw9fWFUqnEW2+9pbetO0+95uTkQBAEbN++Hffffz+cnZ0xaNAgHDt2TG+dyZMnIzk5GZmZmcbvWKIOppA6AJGteP/993H58mWEh4djxYoVAABvb2/k5OQ0WraqqgoffPABEhISUF5ejsceewyPPvooPDw8sGfPHmRlZeHxxx/HiBEjMG3aNADA/PnzkZaWhoSEBPj7+2PHjh2YMGECzp07hz59+jSZ6aeffsKMGTMazc/MzMR3332HvXv3IjMzE0888QSysrIQGhqKpKQkHD16FLNnz8bYsWMNfi7ha6+9hnfeeQd9+vTBa6+9hunTpyMjIwMKRcM/PT179oSPjw9++uknhISEtHWXEnUKFiVRJ3F3d4e9vT2cnZ1b/MT1uro6rFmzRlceTzzxBP773//i+vXrcHFxQf/+/XH//ffj4MGDmDZtGnJzc7Fu3Trk5ubC398fALB48WLs3bsX69atw8qVK5t8n6tXr+qWv5NGo8HatWvh6uqqe6/09HTs2bMHMpkMYWFhWLVqFQ4ePGiwKBcvXqz7AN7ly5djwIAByMjIQN++fXXL+Pv74+rVq4Z3HpGEWJREZsjZ2VnvCMvHxwdBQUFwcXHRm6f9NPdz585BrVYjNDRUbzsqlQrdunVr9n2qq6v1TrtqBQUFwdXVVe+95HI5ZDKZ3rw7P02+KREREbqv/fz8AABFRUV6Renk5ISqqiqD2yGSEouSyAzZ2dnpfS8IQpPztI9WVFRUQC6XIyUlpdHdq3eW6295eXnh9u3b7X7/1vwc2puVfrtOcXExvL29DW6HSEosSqJOZG9v3+7nFZsSGRkJtVqNoqIijBw5sk3rpaWlmTxPa9XU1CAzMxORkZGSZSBqCe96JepEQUFBOHHiBHJycnDz5k2TPWwfGhqKmTNnIiYmBtu3b0d2djZOnjyJ+Ph4fPvtt82uN378eBw+fNgkGYxx/PhxODg4IDo6WrIMRC1hURJ1osWLF0Mul6N///7w9vZGbm6uyba9bt06xMTE4MUXX0RYWBimTJmCU6dOoWfPns2uM3PmTFy4cAHp6ekmy9EWW7ZswcyZM+Hs7CzJ+xO1hiCKoih1CCKSzksvvYSysjJ8/PHHnfq+N2/eRFhYGJKTkxEcHNyp703UFjyiJLJxr732GgIDAzt9zNWcnBz85z//YUmS2eMRJRERkQE8oiQiIjKARUlERGQAi5KIiMgAFiUREZEBLEoiIiIDWJREREQGsCiJiIgMYFESEREZwKIkIiIy4P8AXy/RlFVvOVIAAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "_ = CTLSB.plotModel(times=TIMES, selections=[\"EI_P\"], legend=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "10b10afe-ff37-4c57-b70d-9899c434b33a",
+ "metadata": {
+ "id": "c0fb6205-fd27-49f0-bd8e-d9f7439df0e8"
+ },
+ "source": [
+ "There it is, the glucose drop at t = 500 minutes causes a rapid backup in the phosphotransferase cascade due to the last species not being able to recruit glucose so quickly due to mass action and therefore ``EI_P`` accumulates before the genetic circuit catches up and calls for less EI protein production."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dcd90c48-8c11-4d09-8429-f0c0a5e839b5",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "### System Definition"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "036ac449-add7-4a54-9fb0-be0d4f9dbf8d",
+ "metadata": {
+ "id": "7a5284a3-f0e6-4579-9a70-f91ebd634c58"
+ },
+ "source": [
+ "Remember that a system is defined by the following:\n",
+ "1. SBML model\n",
+ "1. Output\n",
+ "1. Input\n",
+ "1. Directional effect of the input on the output - agonist vs antagonist\n",
+ "1. Operating region for the input - range of input that gives output that makes sense\n",
+ "1. Range of outputs that can be achieved\n",
+ "\n",
+ "We have already specified the SBML model and the ``EI_P`` output in our problem statement. Thus, we now seek to find an input that controls ``EI_P``."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e605147c-cfd6-4d89-a9ae-a9f571b89e9d",
+ "metadata": {
+ "id": "r3YyEFTekSYq",
+ "tags": []
+ },
+ "source": [
+ "#### Antimony Model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "fc974cf8-c92d-4b61-8e9c-c2d1ac6b31ef",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "boundary_species:\tcyaA, cyaA_basal, crp, crp_basal, ptsGp1, ptsGp2, ptsHp0, ptsHp1, ptsIp0, ptsIp1, crr, mlcp1, mlcp2, Pyr, PEP, Glc6P, Glucose, ATP\n",
+ "\n",
+ "floating_species:\tCRP, CRPsiteI_crp, CRPsiteII_crp, CRPsite_cyaA, CRPsite_genome, CRPsite_ptsGp1, CRPsite_ptsGp2, CRPsite_ptsHp0, CRPsite_ptsHp1, CRPsite_ptsIp0, CRPsite_ptsIp1, CRPsite_mlcp1, CRPsite_mlcp2, Mlc, Mlcsite_mlcp1, Mlcsite_mlcp2, Mlcsite_ptsGp1, Mlcsite_ptsGp2, Mlcsite_ptsHp0, Mlcsite_ptsIp0, CRP_cAMP, CRP_cAMP_CRPsiteI_crp, CRP_cAMP_CRPsiteII_crp, CRP_cAMP_CRPsite_cyaA, CRP_cAMP_CRPsite_genome, CRP_cAMP_CRPsite_ptsGp1, CRP_cAMP_CRPsite_ptsGp2, CRP_cAMP_CRPsite_ptsHp0, CRP_cAMP_CRPsite_ptsHp1, CRP_cAMP_CRPsite_ptsIp0, CRP_cAMP_CRPsite_ptsIp1, CRP_cAMP_CRPsite_mlcp1, CRP_cAMP_CRPsite_mlcp2, Mlc_Mlcsite_ptsGp1, Mlc_Mlcsite_ptsGp2, Mlc_Mlcsite_ptsIp0, Mlc_Mlcsite_ptsHp0, Mlc_Mlcsite_mlcp1, Mlc_Mlcsite_mlcp2, IICB, IICB_Mlc, CYA, IIA_P, IIA_P_CYA, mRNA_cyaA, mRNA_crp, mRNA_ptsG, mRNA_ptsH, mRNA_ptsI, mRNA_crr, mRNA_mlc, IICB_P, IIA, HPr_P, HPr, EI_P, EI, cAMP\n",
+ "\n",
+ "parameter:\tfast, binding_CRP_cAMP_one_per_M, binding_CRP_cAMP_Kb, binding_CRP_cAMP_CRPsite_cyaA_Kb, binding_CRP_cAMP_CRPsiteI_crp_Kb, binding_CRP_cAMP_CRPsiteII_crp_Kb, binding_CRP_cAMP_CRPsite_ptsGp1_Kb, binding_CRP_cAMP_CRPsite_ptsGp2_Kb, binding_CRP_cAMP_CRPsite_ptsHp0_Kb, binding_CRP_cAMP_CRPsite_ptsHp1_Kb, binding_CRP_cAMP_CRPsite_ptsIp0_Kb, binding_CRP_cAMP_CRPsite_ptsIp1_Kb, binding_CRP_cAMP_CRPsite_mlcp1_Kb, binding_CRP_cAMP_CRPsite_mlcp2_Kb, binding_CRP_cAMP_CRPsite_genome_Kb, binding_Mlc_Mlcsite_ptsGp1_Kb, binding_Mlc_Mlcsite_ptsGp2_Kb, binding_Mlc_Mlcsite_ptsHp0_Kb, binding_Mlc_Mlcsite_ptsIp0_Kb, binding_Mlc_Mlcsite_mlcp1_Kb, binding_Mlc_Mlcsite_mlcp2_Kb, binding_IICB_Mlc_Kb, binding_IIA_P_CYA_Kb, transcription_CRP_cAMP_CRPsite_cyaA_cyaA_km, transcription_cyaA_basal_km, transcription_CRP_cAMP_CRPsiteI_crp_CRP_cAMP_CRPsiteII_crp_crp_km, transcription_CRP_cAMP_CRPsiteI_crp_CRP_cAMP_CRPsiteII_crp_crp_RelativeactivityatTCRPsiteII_crp, transcription_crp_basal_km, transcription_CRP_cAMP_CRPsite_ptsGp1_Mlc_Mlcsite_ptsGp1_ptsGp1_km, transcription_CRP_cAMP_CRPsite_ptsGp2_Mlc_Mlcsite_ptsGp2_ptsGp2_km, transcription_CRP_cAMP_CRPsite_ptsHp0_Mlc_Mlcsite_ptsHp0_ptsHp0_km, transcription_CRP_cAMP_CRPsite_ptsHp1_ptsHp1_km, transcription_CRP_cAMP_CRPsite_ptsIp0_Mlc_Mlcsite_ptsIp0_ptsIp0_km, transcription_CRP_cAMP_CRPsite_ptsIp1_ptsIp1_km, transcription_crr_km, transcription_CRP_cAMP_CRPsite_mlcp1_Mlc_Mlcsite_mlcp1_mlcp1_km, transcription_CRP_cAMP_CRPsite_mlcp2_Mlc_Mlcsite_mlcp2_mlcp2_km, decomposition_mRNA_cyaA_kmd, decomposition_mRNA_crp_kmd, decomposition_mRNA_ptsG_kmd, decomposition_mRNA_ptsH_kmd, decomposition_mRNA_ptsI_kmd, decomposition_mRNA_crr_kmd, decomposition_mRNA_mlc_kmd, translation_mRNA_cyaA_kp, translation_mRNA_crp_kp, translation_mRNA_ptsG_kp, translation_mRNA_ptsH_kp, translation_mRNA_ptsI_kp, translation_mRNA_crr_kp, translation_mlc_kp, decomposition_CYA_kpd, decomposition_CRP_kpd, decomposition_Mlc_kpd, decomposition_cAMP_kpd, decomposition_CRP_cAMP_kpd, decomposition_CRP_cAMP_CRPsite_cyaA_kpd, decomposition_CRP_cAMP_CRPsiteI_crp_kpd, decomposition_CRP_cAMP_CRPsiteII_crp_kpd, decomposition_CRP_cAMP_CRPsite_ptsGp1_kpd, decomposition_CRP_cAMP_CRPsite_ptsGp2_kpd, decomposition_CRP_cAMP_CRPsite_ptsHp0_kpd, decomposition_CRP_cAMP_CRPsite_ptsHp1_kpd, decomposition_CRP_cAMP_CRPsite_ptsIp0_kpd, decomposition_CRP_cAMP_CRPsite_ptsIp1_kpd, decomposition_CRP_cAMP_CRPsite_mlcp1_kpd, decomposition_CRP_cAMP_CRPsite_mlcp2_kpd, decomposition_CRP_cAMP_CRPsite_genome_kpd, decomposition_Mlc_Mlcsite_ptsGp1_kpd, decomposition_Mlc_Mlcsite_ptsGp2_kpd, decomposition_Mlc_Mlcsite_ptsHp0_kpd, decomposition_Mlc_Mlcsite_ptsIp0_kpd, decomposition_Mlc_Mlcsite_mlcp1_kpd, decomposition_Mlc_Mlcsite_mlcp2_kpd, decomposition_IICB_Mlc_kpd, decomposition_EI_P_kpd, decomposition_EI_kpd, decomposition_HPr_P_kpd, decomposition_HPr_kpd, decomposition_IIA_P_kpd, decomposition_IIA_kpd, decomposition_IICB_P_kpd, decomposition_IICB_kpd, PTS2for_kx, PTS2rev_kx, PTS3for_kx, PTS3rev_kx, PTS4for_kx, PTS4rev_kx, reaction_CYA_ATP_Q, reaction_CYA_ATP_Kmich, reaction_IIA_P_CYA_ATP_Q, reaction_IIA_P_CYA_ATP_Kmich, reaction_EI_PEP_Q, reaction_EI_PEP_Kmich, reaction_EIP_Pyr_Q, reaction_EIP_Pyr_Kmich, reaction_IICB_P_Glucose_Q, reaction_IICB_P_Glucose_Kmich, reaction_IICB_Glc6P_Q, reaction_IICB_Glc6P_Kmich\n",
+ "\n",
+ "assignment:\tTCRPsite_cyaA, TCRPsiteI_crp, TCRPsiteII_crp, TCRPsite_ptsGp1, TMlcsite_ptsGp1, TCRPsite_ptsGp2, TMlcsite_ptsGp2, TCRPsite_ptsHp0, TMlcsite_ptsHp0, TCRPsite_ptsHp1, TCRPsite_ptsIp0, TMlcsite_ptsIp0, TCRPsite_ptsIp1, TCRPsite_mlcp1, TMlcsite_mlcp1, TCRPsite_mlcp2, TMlcsite_mlcp2\n"
+ ]
+ }
+ ],
+ "source": [
+ "#######################################\n",
+ "### IDENTIFY INPUT FLOATING SPECIES ###\n",
+ "#######################################\n",
+ "\n",
+ "# Create a controllable SMBL variable\n",
+ "control_sbml_for_input_species = ControlSBML(ANTIMONY_MODEL_EI_P)\n",
+ "\n",
+ "# Print the possible inputs\n",
+ "print(control_sbml_for_input_species.getPossibleInputs())"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "de3ddb7c-0ed6-4a76-9dae-88da265dc5cb",
+ "metadata": {
+ "id": "7a5284a3-f0e6-4579-9a70-f91ebd634c58"
+ },
+ "source": [
+ "As mentioned, there are many outputs and boundaries in this model system. Some genetic or protein controls might be helpful. This evolved system already has 'accelerator' and 'decelerator' controls built into it, we are attempting to hijack those controls and essentially 'control the controls.' In practice, this could be something like amplifying certain genes in the E. coli DNA, adding new genes to their DNA, or deleting genes from their DNA. Based on the publication, here are some possible 'controls to control:'\n",
+ "* CRPsite_ptsIp1 or CRPsite_ptsIp0 (promoters or enhancer sites for EI gene)\n",
+ "* CRPsiteII_crp or CRPsiteI_crp (promoters or enhancer sites for sensor genes that upregulate 'acceleration')\n",
+ "* mRNA_ptsI (directly produces EI protein)\n",
+ "* mRNA_crp (directly produces sensor protein)\n",
+ "* Mlc or mRNA_mlc (downregulates phosphotransferase cascade & EI protein production)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "id": "ece2f374-2043-4a65-8d60-7847520c95c7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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kJycbHz99dfG2rVrjU6dOtX76SFjxowx2rRpYz89ZMGCBUZkZKQxefJkj8t+/PhxY/PmzcbmzZsNScYrr7xibN682X5kqDtyFhYWGtHR0cZdd91lbN++3UhPTzdCQkLqfJqCs+ylpaXGzTffbLRt29bIyspy+N2teBSoJ2avyoVHvZqZ3Z0oShe8+eabRnx8vBEQEGD06dPHWL9+vdmRDElVTrNnz7Yvc/r0aeOhhx4ymjdvboSEhBjDhw83cnNzHdZz4MABY8iQIUZwcLARGRlpTJo0yTh79myDfi8XFqWn5/7Pf/5j9OjRwwgMDDS6du1qvPPOOw6vW61W449//KMRHR1tBAYGGoMGDTJ2797tsMyRI0eMkSNHGs2aNTPCwsKMe+65xzh+/Hi95i4uLjbGjx9vxMfHG0FBQcall15qPPHEEw5/oD0l+8qVK6v8+R4zZoxbc27ZssW46qqrjMDAQKNNmzbGCy+8UK/Z9+/fX+3v7sqVKz06e1WqKkqzsrsTt9kCAMAJ9lECAOAERQkAgBMUJQAATlCUAAA4QVECAOAERQkAgBMUJQAATlCUAAA4QVECJlu1apUsFkulC783lIyMDF122WUqKyur03osFosWLVpU4+WXLl2qnj172q8tC3gqihJoQNdcc40mTJjgMK9///7Kzc1VeHi4KZkmT56sJ598Ur6+vnVaT25urv2mzzVxww03yN/fXx9++GGdPheobxQlYLKAgADFxMSYck+/tWvXau/evbrtttvqvK6YmBgFBgbW6j1333233njjjTp/NlCfKEqggdx9991avXq1Xn/9dVksFlksFh04cKDSptc5c+YoIiJCS5YsUZcuXRQSEqLbb79dp06d0nvvvaf27durefPmevjhhx02l5aUlOjRRx9VmzZtdMkll6hv375atWqV00zp6en65S9/6XDT7D/96U/q2bOnZs2apfj4eDVr1kwPPfSQysrK9NJLLykmJkZRUVH6y1/+4rCuipteDxw4IIvFogULFujaa69VSEiIkpKSlJmZ6fCem266SRs3btTevXtd/4cF6pmf2QEAb/H666/ru+++U48ePfTss89Kklq1aqUDBw5UWvbUqVN64403lJ6eruPHj+vWW2/V8OHDFRERoU8//VT79u3TbbfdpiuvvFIjRoyQZLtp986dO5Wenq7Y2FgtXLhQN9xwg7Zt26ZOnTpVmenLL7/Ub37zm0rz9+7dq88++0xLly7V3r17dfvtt2vfvn3q3LmzVq9erXXr1unee+9Vamqq0/tOPvHEE/rrX/+qTp066YknntDIkSO1Z88e+fnZ/vTEx8crOjpaX375pTp06FDbf1KgQVCUQAMJDw9XQECAQkJCLnrn9rNnz2rGjBn28rj99tv1z3/+U/n5+WrWrJm6deuma6+9VitXrtSIESOUk5Oj2bNnKycnR7GxsZKkRx99VEuXLtXs2bP1/PPPV/k52dnZ9uUrslqtmjVrlkJDQ+2ftXv3bn366afy8fFRly5d9OKLL2rlypVOi/LRRx/V0KFDJUnPPPOMunfvrj179qhr1672ZWJjY5Wdne38Hw8wEUUJeKCQkBCHEVZ0dLTat2+vZs2aOcwrKCiQJG3btk1lZWXq3Lmzw3pKSkrUsmXLaj/n9OnTDptdy7Vv316hoaEOn+Xr6ysfHx+HeeWfX53LL7/c/rx169aSpIKCAoeiDA4O1qlTp5yuBzATRQl4IH9/f4evLRZLlfPKT604ceKEfH19tWnTpkpHr1Ys1wtFRkbq2LFjdf78mnwf5QcrXfieo0ePqlWrVk7XA5iJogQaUEBAQJ3PV6xKcnKyysrKVFBQoAEDBtTqfTt37nR7npo6c+aM9u7dq+TkZNMyABfDUa9AA2rfvr2+/vprHThwQIcPH3bbyfadO3fWqFGjNHr0aC1YsED79+/Xhg0blJaWpv/+97/Vvm/w4MFau3atWzK4Yv369QoMDFRKSoppGYCLoSiBBvToo4/K19dX3bp1U6tWrZSTk+O2dc+ePVujR4/WpEmT1KVLFw0bNkzffPON4uPjq33PqFGjtGPHDu3evdttOWrjo48+0qhRoxQSEmLK5wM1YTEMwzA7BADzPPbYYyouLtbbb7/doJ97+PBhdenSRRs3blRCQkKDfjZQG4woAS/3xBNPqF27dg1+zdUDBw7ob3/7GyUJj8eIEgAAJxhRAgDgBEUJAIATFCUAAE5QlAAAOEFRAgDgBEUJAIATFCUAAE5QlAAAOEFRAgDgxP8H9WOwU8z4myYAAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "###################################################\n",
+ "### VISUALIZE IF ANYTHING HAS CONTROL OVER EI_P ###\n",
+ "###################################################\n",
+ "INPUT_NAME = \"Mlc\"\n",
+ "OUTPUT_NAME = \"EI_P\"\n",
+ "CTLSB.setSystem(input_name=INPUT_NAME, output_name=OUTPUT_NAME)\n",
+ "_ = CTLSB.plotModel(selections=[INPUT_NAME, OUTPUT_NAME])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "51f19a5a-208a-4169-88db-89f974e9a53e",
+ "metadata": {
+ "id": "7a5284a3-f0e6-4579-9a70-f91ebd634c58"
+ },
+ "source": [
+ "Mlc seems like it could be an antagonist to the concentration of ``EI_P``. Note that I tried many different values for the time series to convert it to the right units, I tried across multiple orders of magnitude but nothing worked to detect the fluctuation at t = 500 minutes. For whatever reason it is giving a perturbation at t = 0 minutes so I thought that would be sufficient to view the relationships between different inputs and the output, like we see here. Now let us try a staircase: "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "id": "bc771ea4-b02a-42b0-8a8d-e28d29259345",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#######################################################################\n",
+ "### PLOT STAIRCASE FUNCTION & OBSERVE FOR GLUCOSE CHANGE AT 500 MIN ###\n",
+ "#######################################################################\n",
+ "STAIRCASE_TIMES = np.linspace(450, 3000, 20000)\n",
+ "_ = CTLSB.plotStaircaseResponse(initial_value=7.5*1e-9, final_value=9.5*1e-9, num_step=8,\n",
+ " times=STAIRCASE_TIMES,\n",
+ " ylim=[2.5*1e-7, 3*1e-7],\n",
+ " xlim=[600, 3000])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dde10b68-ced1-445b-be71-173d5f7c8d4b",
+ "metadata": {
+ "id": "1aa4c64f-058a-421e-b57c-f2b7647c05c7"
+ },
+ "source": [
+ "We are way overshooting, remember we want to keep EL_P below 4.0e-7 M. This means our control is working, lowering Mlc does increase El_P, but it is increasing it too much. We do not want a spike that is going to throw our E. coli into a panic. Also remember that we do not care about time points before 500 minutes because it is a steady-state, stable system with no interesting behavior because the glucose concentration is fixed. It is more interesting to see a rapid perturbation and the recovery to equilibrium, as this is most likely what E. coli will more realistically experience in a bioreactor - a shutoff of glucose supplement and the rapid decline of any glucose left in the solution with the E. coli."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "d5c7b8ab-176e-46bd-b8d9-077cc38fa9cf",
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "ValueError",
+ "evalue": "Invalid keyword arguments: {'output_names', 'input_names'}",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[17], line 6\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m###########################################################################################\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m### PLOT A STAIRCASE FUNCTION & ATTEMPT TO FIND THE OPERATING REGION WITH (-)-STAIRCASE ###\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m###########################################################################################\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \n\u001b[1;32m 5\u001b[0m \u001b[38;5;66;03m# Create permanenent control sbml\u001b[39;00m\n\u001b[0;32m----> 6\u001b[0m CONTROL_SBML \u001b[38;5;241m=\u001b[39m \u001b[43mControlSBML\u001b[49m\u001b[43m(\u001b[49m\u001b[43mANTIMONY_MODEL_EI_P\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfigsize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimes\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlinspace\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1000\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m100000\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmarkers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43minput_names\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43mINPUT_NAME\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moutput_names\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43mOUTPUT_NAME\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Plot staircase\u001b[39;00m\n\u001b[1;32m 11\u001b[0m _ \u001b[38;5;241m=\u001b[39m CONTROL_SBML\u001b[38;5;241m.\u001b[39mplotStaircaseResponse(initial_value\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.00000002\u001b[39m, final_value\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.000000007\u001b[39m, times\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mlinspace(\u001b[38;5;241m450\u001b[39m, \u001b[38;5;241m800\u001b[39m, \u001b[38;5;241m20000\u001b[39m),\n\u001b[1;32m 12\u001b[0m )\u001b[38;5;66;03m#ylim=[0.0000002, 0.0000003])\u001b[39;00m\n",
+ "File \u001b[0;32m~/home/Technical/repos/controlSBML/src/controlSBML/control_sbml.py:197\u001b[0m, in \u001b[0;36mControlSBML.__init__\u001b[0;34m(self, model_reference, roadrunner, input_name, output_name, is_fixed_input_species, is_steady_state, fitter_method, setpoint, sign, times, save_path, **kwargs)\u001b[0m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, model_reference:\u001b[38;5;28mstr\u001b[39m, \n\u001b[1;32m 143\u001b[0m roadrunner\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 144\u001b[0m input_name:Optional[\u001b[38;5;28mstr\u001b[39m]\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 152\u001b[0m save_path:Optional[\u001b[38;5;28mstr\u001b[39m]\u001b[38;5;241m=\u001b[39mSAVE_PATH,\n\u001b[1;32m 153\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 154\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 155\u001b[0m \u001b[38;5;124;03m model_reference: str\u001b[39;00m\n\u001b[1;32m 156\u001b[0m \u001b[38;5;124;03m string, SBML file or Roadrunner object\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 195\u001b[0m \n\u001b[1;32m 196\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 197\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_checkKwargs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mOPTION_KEYS\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 198\u001b[0m \u001b[38;5;66;03m# Set initial values of all options\u001b[39;00m\n\u001b[1;32m 199\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, value \u001b[38;5;129;01min\u001b[39;00m OPTION_DCT\u001b[38;5;241m.\u001b[39mitems(): \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n",
+ "File \u001b[0;32m~/home/Technical/repos/controlSBML/src/controlSBML/control_sbml.py:248\u001b[0m, in \u001b[0;36mControlSBML._checkKwargs\u001b[0;34m(self, valids, invalids, **kwargs)\u001b[0m\n\u001b[1;32m 246\u001b[0m not_valids \u001b[38;5;241m=\u001b[39m keys\u001b[38;5;241m.\u001b[39mdifference(\u001b[38;5;28mset\u001b[39m(valids)) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 247\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(not_valids) \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m--> 248\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid keyword arguments: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m \u001b[38;5;28mstr\u001b[39m(not_valids))\n\u001b[1;32m 249\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m invalids \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 250\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n",
+ "\u001b[0;31mValueError\u001b[0m: Invalid keyword arguments: {'output_names', 'input_names'}"
+ ]
+ }
+ ],
+ "source": [
+ "###########################################################################################\n",
+ "### PLOT A STAIRCASE FUNCTION & ATTEMPT TO FIND THE OPERATING REGION WITH (-)-STAIRCASE ###\n",
+ "###########################################################################################\n",
+ "\n",
+ "# Create permanenent control sbml\n",
+ "CONTROL_SBML = ControlSBML(ANTIMONY_MODEL_EI_P, figsize=(10, 5), times=np.linspace(0, 1000, 100000), markers=False, \n",
+ " input_names=[INPUT_NAME], output_names=[OUTPUT_NAME])\n",
+ "\n",
+ "\n",
+ "# Plot staircase\n",
+ "_ = CONTROL_SBML.plotStaircaseResponse(initial_value=0.00000002, final_value=0.000000007, times=np.linspace(450, 800, 20000),\n",
+ " )#ylim=[0.0000002, 0.0000003])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "48cf132a-9f02-400b-a351-9bbcf02e561e",
+ "metadata": {
+ "id": "1aa4c64f-058a-421e-b57c-f2b7647c05c7"
+ },
+ "source": [
+ "Getting close! Let's increase our the end time to our goal, and while we're at it let's shoot for ~1220 minutes (12 hours after t = 500 min) the usual time E. coli will incubate after inducing plasmid expression (i.e., production of the desired product)!"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "25a6ef86-97ad-43c4-8e46-5445dfccb0ee",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "############################################################################################\n",
+ "### PLOT A STAIRCASE FUNCTION & ATTEMPT TO FIND THE OPERATING REGION WITH (-)-STAIRCASE ###\n",
+ "############################################################################################\n",
+ "\n",
+ "# Create permanenent control sbml\n",
+ "CONTROL_SBML = ControlSBML(ANTIMONY_MODEL_EI_P, figsize=(10, 5), times=np.linspace(0, 1000, 100000), markers=False, \n",
+ " input_names=[INPUT_NAME], output_names=[OUTPUT_NAME])\n",
+ "\n",
+ "\n",
+ "# Plot staircase\n",
+ "_ = CONTROL_SBML.plotStaircaseResponse(initial_value=0.00000001, final_value=0.000000008, times=np.linspace(450, 1250, 20000),\n",
+ " )#ylim=[0.0000002, 0.0000003])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6dc7f35b-a140-4b72-a700-a23c668f7ab5",
+ "metadata": {
+ "id": "1aa4c64f-058a-421e-b57c-f2b7647c05c7"
+ },
+ "source": [
+ "This plot achieves all of our control objectives except the initial perturbation goes slightly higher than we'd like. We can fix this later with PI control! For now, let us focus on improving the time resolution where our control objectives are currently met; thus, we can ignore the initial perturbation (for now)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "d67b3afb-5d82-4205-8f28-5be419404c8d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "###################################################################################################\n",
+ "### REFINE THE SYSTEM IN TIME TO IGNORE THE INITIAL PERTURBATION FOR NOW & ADD TIME RESOLUTEION ###\n",
+ "###################################################################################################\n",
+ "\n",
+ "# Important note: this was Prof. Hellerstein's suggestion from HW1\n",
+ "\n",
+ "_ = CONTROL_SBML.plotStaircaseResponse(initial_value=0.000000009, final_value=0.0000000075, times=np.linspace(440, 1400, 20000),\n",
+ " ylim=[0.00000026, 0.0000003], xlim=[700, 1420])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8832d662-3be6-46b1-8799-a7531112a864",
+ "metadata": {
+ "id": "1aa4c64f-058a-421e-b57c-f2b7647c05c7"
+ },
+ "source": [
+ "This system with additional time resolution has successfully achieved reasonable control over the EIP output with the Mlc input. Furthermore, we successfully achieved the **following control objectives:**\n",
+ "\n",
+ "* Kept the ``EI_P`` concentration in the range above 2.4e-7 M for over 720 minutes (12 hours) past t = 500 minutes. \n",
+ "* Eliminated/minimized any potential concentration oscillations, although none were expected. \n",
+ "* Converged to a stable, steady-state system after the glucose decreased within ~120 minutes before the staircase shift.\n",
+ "* With each additional step this setting time was drastically reduced to about ~30 minutes.\n",
+ "\n",
+ "Ultimately, the final plot above achieves the control objectives by stabilizing as a nearly horizontal line within the desired setpoints after the initial glucose perturbation at t = 500 minutes. After the glucose perturbation, each step decrease in Mlc protein concentration increases the concentration of ``EI_P`` as expected since Mlc inhibits the production of EI protein. Thus, they are antagonistic. There are no oscillations about a setting point observed at any time which demonstrates that the second control objective was achieved. The third control objective can be noted at the time t = 575 minutes where the post-perturbation ``EI_P`` concentration stops growing and begins to drastically flatten out before the staircase decreases (plot above this one). Finally, the final control objective was achieved because the right tail is nearly horizontal and each step down on the staircase only increases the tail line for about 30 minutes before it becomes horizontal again.\n",
+ "\n",
+ "Below, we provide the complete **revised system definition:**\n",
+ "\n",
+ "1. SBML model: Nishio2008 - Design of the phosphotransferase system for enhanced glucose uptake in E. coli from Biomodels\n",
+ "1. Output: ``EI_P``\n",
+ "1. Input: ``Mlc``\n",
+ "1. Directional effect of the input on the output: Monotone ``EI_P`` decreases for stepwise ``Mlc`` increases\n",
+ "1. Operating region for the input: [7.6e-9 M, 8.4e-9 M]\n",
+ "1. Range of outputs that can be achieved [2.65e-7 M, 2.85e-7 M]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4046a740-55cc-4b42-b99e-ab19a5157d41",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "## Section 2: System Identification"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c10aba3d-facd-474f-af49-939bfb5b8e21",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "### System Identification"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "58d1ebf7-4418-412b-a59c-2c6f5f13b321",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "System identification describes the system as a transfer function for the operating point specified in system definition. In our system, the input is ``Mlc`` and the output is ``EI_P``. ``Mlc`` is varied over the operating region of [7.6e-9, 8.0e-9]. The method ``plotTransferFunctionFit`` estimates to transfer function and plots the fit. It returns a Timeseries (a dataframe with the data plotted) and an AntimonyBuilder (the Antimony code run to produce the fitting data)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "id": "8e6f2d08-8ee2-483d-8944-1dfa424c8b68",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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CgoK0v/+9z9dc8012r9/v4KDg/Xpp59q/Pjxeuutt9SzZ0/NmTNHb775pho1alScr9ayCIEAAABAJRIREaGpU6fKZrOpefPm2rVrl6ZOnZodAvv06aN//OMf2fX333+/7rzzTo0ZM0aS1LRpU7355pu66qqrNHPmTB0+fFhfffWVNm3apM6dO0uS3nvvPbVs2dJuG+bNm6eTJ09q8+bNCg4OliQ1adIk+3V/f395eXnlGUL6448/atOmTTpx4oR8fHwkmYH1888/16JFi/Tggw9q2rRpuu+++3TfffdJkiZNmqRvvvmG3kAnEQIBAACAQvj5mT1y7vpsZ3Tr1k02my37uHv37nr99deVkZEhSerUqVOe+h07dmjnzp15hngahqHMzEzFxsZq//798vLyUseOHbNfb9GihapXr263Ddu3b1d0dHR2ACyKHTt2KDk5WSEhIXnOp6Sk6LfffpMk7d27V6NGjcrzevfu3fXdd98V+XNACAQAAAAKZbM5NySzPKt22Y0kJyfroYce0mOPPZavtn79+tq/f7/Tn+Hr6+v0e5KTk1W3bl19//33+V5zFDjhPEIgAAAAUIls3Lgxz/HPP/+spk2bytPTs8D6Dh06aM+ePXmGa+bWokULpaena+vWrdnDQX/99VedPXvWbhvatm2rd999V2fOnCmwN9Db2zu7ZzJ3O44dOyYvLy9FRkYWeN2WLVtq48aNGjFiRJ77g3OYHRQAAACoRA4fPqwnn3xSv/76q+bPn6/p06fr8ccft1v/zDPPaP369XrkkUe0fft2HThwQF988YUeeeQRSVLz5s3Vr18/PfTQQ9q4caO2bt2q+++/32Fv3x133KE6deropptu0k8//aTff/9dixcv1oYNGySZs5TGxsZq+/btOnXqlFJTU9W3b191795dN910k77++msdOnRI69ev13PPPactW7ZIkh5//HG9//77+uCDD7R//369+OKLiomJKcVvzxoIgQAAAEAlMmLECKWkpKhLly4aPXq0Hn/88eylIArStm1brV27Vvv371evXr0UHR2tF154QWFhYdk1H3zwgcLCwnTVVVfplltu0YMPPqjQ0FC71/T29tbXX3+t0NBQDRgwQG3atNG//vWv7N7IW2+9Vf369dPVV1+tWrVqaf78+bLZbFqxYoWuvPJKjRw5Us2aNdOwYcP0xx9/qHbt2pKkoUOH6vnnn9fTTz+tjh076o8//tDf//73UvrmrMNmGM6sPFLxnT56VDXDw3UqPl4huf5gAwAAAJJ08eJFxcbGqmHDhqpataq7m+OU3r17q3379po2bZq7m1JuOPrnmRgXp8CICCUeOaLAevXc1MKyR08gAAAAAFgIIRAAAAAALITZQQEAAIBKoqDlFYDL0RMIAAAAABZCCAQAAAAKYLH5Eyst/jnmRwgEAAAAcqlSpYok6cKFC25uCUpDWlqaJGUvTwGeCQQAAADy8PT0VPXq1XXixAlJkp+fn2w2m5tbheLIzMzUyZMn5efnJy8vok8WvgkAAADgMnXq1JGk7CCIisvDw0P169cnyOdCCAQAAAAuY7PZVLduXYWGhurSpUvubg5KwNvbWx4ePAWXGyEQAAAAsMPT05NnyVDpEIkBAAAAwEIIgQAAAABgIYRAAAAAALAQQiAAAAAAWAghEAAAAAAshBAIAAAAABZCCAQAAAAACyEEAgAAAICFEAIBAAAAwEIIgQAAAABgIYRAAAAAALAQQiAAAAAAWAghEAAAAAAshBAIAAAAABZCCAQAAAAACyEEAgAAAICFEAIBAAAAwEIIgQAAAABgIYRAAAAAACiqpCRpzBipQQPJ11fq0UPavLlo7/3pJ8nLS2rf3pUtLBQhEAAAAACK6v77pdWrpTlzpF27pOuuk/r2leLjHb/v7FlpxAjpmmvKpJmOEAIBAAAAoChSUqTFi6VXX5WuvFJq0kQaP978OXOm4/eOGiUNHy51714mTXWEEAgAAADA0pKSkpSYmJi9paamFlyYni5lZEhVq+Y97+sr/fij/Q/44APp99+lF18svUaXACEQAAAAgKW1bNVKQUFB2duUKVMKLgwIMHvyJk6Ujh41A+HcudKGDVJCQsHvOXBAevZZs87Ly3U34YTy0QoAAAAAcJO9e/YoIDw8+9jHx8d+8Zw50r33SuHhkqen1KGDdMcd0tat+WszMswhoBMmSM2auaDlxUMIBAAAAGBpAQEBCgwMLFpx48bS2rXS+fNSYqJUt640dKjUqFH+2qQkacsWads26ZFHzHOZmZJhmL2CX38t9elTejdSRIRAAAAAAHBWtWrm9uef0qpV5mQxlwsMNGcQze3tt6Vvv5UWLZIaNiybtl6GEAgAAAAARbVqldmT17y5dPCgNHas1KKFNHKk+fq4ceZyER99JHl4SK1b531/aKg5sczl58sQE8MAAAAAQFGdOyeNHm0GvxEjpJ49zWBYpYr5ekKCdPiwe9tYCJthGIa7G1GWTh89qprh4ToVH6+QsDB3NwcAAACAmyTGxSkwIkKJR44osF49dzenzNATCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAW4uXOD4+ZNUtHVq9WYmysPKtWVa327dX+yScV2LChw/ft++gjHViwQBcSEuRTo4Yirr1W7Z94Qp4+PmXUcgAAAAComNwaAk9s3qxmd9yh4DZtZKSna8cbb+jbBx7QDUuXysvPr8D3HFq+XNunTlW3iRNVMzpaSYcO6efnnpNsNnV85pkyvgMAAAAAqFjcGgKvfuedPMfdJk/Wkl69dGbPHoV26lTge05u365a0dGKvOEGSZJ/eLgaDBig0zt3ury9AAAAAFDRlatnAi8lJUmSvIOC7NbUat9eZ/bs0am/Ql/ykSM6um6dwq68ssD61NRUJSYmZm9Jycml33AAAAAAqCDc2hOYm5GZqa2vvKJa0dGq3rSp3brIG25Q6tmz+uZvf5MhyUhPV5OhQxX14IMF1k+ZMkUTJkzIPq5qs5V20wEAAACgwig3PYGbJ03SuQMHdMVrrzmsO75pk2LeeUednn9e/RcuVK833tDRtWu1a+bMAuvHjRunc+fOZW979+1zRfMBAAAAoEIoFz2BmydN0tG1a9X3ww/lV6eOw9qd06er4Y03qsltt0mSqjdrpvSUFG0aP16tH3pINo+8udbHx0c+uWYNvcRwUAAAAAAW5tYQaBiGtkyerLg1a3TN7Nnyr1ev0PekX7woXTakMyv4GYYhBnsCAAAAgH1uDYFbJk7UoRUrdOX06ari56eUkyclSVUCAuRVtaokaf24cfILDVX7J56QJIX37q19H36oGi1bqmbbtko6fFg7p09XeO/e8vD0dNu9AAAAAEBF4NYQeGDBAknSmnvuyXO+26RJanTzzZKkCwkJsuXq+Wv90EOy2Wza+eabSjlxQj41aii8d2+1e/zxMms3AAAAAFRUNsMwDHc3oiydPnpUNcPDdSo+XiFhYe5uDgAAAAA3SYyLU2BEhBKPHFFgER5NqyzKzeygAAAAAADXIwQCAAAAQFElJUljxkgNGki+vlKPHtLmzfbrlyyRrr1WqlVLCgyUuneXVq0qs+YWhBAIAAAAAEV1//3S6tXSnDnSrl3SdddJfftK8fEF1//wgxkCV6yQtm6Vrr5aGjRI2ratbNudC88EAgAAALAkp58JTEmRAgKkL76QBg7MOd+xo9S/vzRpUtE+OCpKGjpUeuGF4jW8hMrFYvEAAAAA4C5JSUlSYmL2sY+Pj3x8fPIXpqdLGRnSX8vZZfP1lX78sWgflplpDikNDi5Bi0uG4aAAAAAALK1lq1YKCgrK3qZMmVJwYUCA+UzfxInS0aNmIJw7V9qwQUpIKNqHvfaalJwsDRlSejfgJHoCAQAAAFja3j17FBAenn1cYC9gljlzpHvvlcLDJU9PqUMH6Y47zOf9CjNvnjRhgjmcNDS0FFpePIRAAAAAAJYWEBCgwMDAohU3biytXSudP28OIa1b13y+r1Ejx+/75BNzUpmFC82JZNyI4aAAAAAA4Kxq1cwA+Oef5pIPgwfbr50/Xxo50vyZe0IZN6EnEAAAAACKatUqyTCk5s2lgwelsWOlFi3MkCdJ48aZy0V89JF5PG+edPfd0htvSF27SseOmed9faWgILfcAj2BAAAAAFBU585Jo0ebwW/ECKlnTzMYVqlivp6QIB0+nFP/zjvmrKKjR5s9h1nb44+7p/1inUB3NwcAAACAmzi9TmAlQU8gAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAWQggEAAAAAAshBAIAAACAhRACAQAAAMBCCIEAAAAAYCGEQAAAAACwEEIgAAAAAFgIIRAAAAAALIQQCAAAAAAW4uXuBgAAAMCCTp2S1q2TDCP/a23bSk2amPunT0tr19q/TqtWUosW5v7Zs9K339qvbd5ciooy95OSpNWr7dc2biy1a2fup6RIX31lvzYyUurQwdxPS5OWL7dfGxEhde5s7mdmSp9/br+2bl2pe/ec488+K/j7kqTQUKlnz5zjZcukS5cKrg0Olnr3zjlesUK6eLHg2qAg6Zprco5XrZLOny+41t9fuu66nOM1a6Rz5wqurVpVGjAg5/j776UzZwqurVJFGjQo5/jHH6UTJwqutdmkm2/OOd6wQUpIKLhWkjp1sv9aZWZYzKn4eEOScSo+3t1NAQAAsK4ePQzDjDT5t6lTc+p+/NF+nWQYkyfn1G7b5rj2n//Mqf31V8e1jz+eUxsX57j2gQdyav/803Ht8OE5tampjmsHD877nXl52a+99tq8tUFB9mt79MhbW7eu/dp27fLWNmliv7Zp07y17drZrw0Ly1vbvbv92qCgvLV9+9qvrVIlb+3gwQ6/43OxsebPI0cMK6EnEAAAAGUvPt786e2d0zOWJSwsZz8gQLriCvvXqVcvZ79aNce1DRrk7Fet6ri2YcOcfW9vx7VZvZaS5OnpuLZZs5x9m81xbcuWeY979JAyMgquzerhzNKtm5ScXHBtmzZ5jzt3NntcC5L73iSpY0epdu2CayMi8h63b2/2DhakZs28x23bSh52nlS7/BpRUWbvbEG8Los3LVuavc7Iw2YY9vqUK6fTR4+qZni4TsXHKyT3f2AAAABQdg4eNIcrRkZKvr7ubg0sKjEuToEREUo8ckSBuX+hUMnREwgAAICyd3kPE4Ayw+ygAAAAAGAh9AQCAACg7L32mpSYKI0alfcZQAAuZ9kQ+FmfPvLz9Cz6G2w21e7WTT2nTZOPvQdcAQAAUDTTppmTw9x0EyEQKGOWDYF/XgrRxUzvQutsylR1r1OyydDxDRu0uGtXycNDg1evVrU6dcqgpQAAAJWQteYmBMoVy4bAF2IX6qJRtN86XRn0mR4K/7+cE5mZ+uKvRTNv3biRnkEAAABnZYVAm8297QAsyLITw3jokjwL2Wwy12E5kNLe7nUWd+2qL266qWwaDQAAUNkQAoEyZ9mewDeaXV/oM4G/pbTRC7GfKN2o4rDu/IEDmhcVpeExMaXZRAAAgMqL4aCA21i2J7AoPG2XJKnQEJhlXlSU0tPSXNkkAACAyoHhoIDbEAId8JJzIVCSPo2O1paXX3ZVkwAAACoXQiBQ5giBDng52ROYZf/HH2tJ376uaBIAAEDlsHKltHmz1KSJu1sCWA4h0IGs4aAZhvOPTl5MSNC86OjSbhIAAEDl0L691KmT5Ofn7pYAlkMIdKC4PYHZ0tI0LyqqFFsEAAAAACVDCHQgKwRmykuZRvG/KiaMAQAAuMybb0qvvCKdPOnulgCWYzMMa83Pe/roUdUMD9ep+HiFhDleLD4pSQoMNPc/aBEtb4+SBbkmQ4eqywsvlOgaAAAAlUKtWtKpU9Lu3RIjp+AmiXFxCoyIUOKRIwqsV8/dzSkz9AQ64OOTsz9w7RZ5VK1aousdXLBA89q2LWGrAAAAKgFr9UMA5Qoh0AFvb6lOHXP/j8OeGrZ1q5oOH16yi2ZkaF5UlC6eO1fyBgIAAFRUrBMIuA0hsBBZsxYfPGj+7PzccxqybVuJr7ukRw/N79yZZwUBAIC1EQKBMkcILMTlIVCSvLy9NTwmpsTXNi5c0KfR0VozapQyMzJKfD0AAIAKg+GggNsQAgvRtKn5c8+e/K+VRhCUpOPr1umTtm21f8GCUrkeAABAucdwUMBtCIGF6NjR/Ll5c8GvD4+JKfGEMVm2vPSS5kVFaf2zzyotJaVUrgkAAFCuEQKBMkcILETnzubPgwfNWYwLMmzrVtXt1avUPvPQsmVa1KmT5rVurUMrVjBUFAAAVD5ffil9/70UEeHulgCWwzqBRdC6tRQTI82dK915p/26tJQULerUqZRaml+NVq109bvvqmpQkMs+AwAAALAK1gmEXYMHmz/nz3dc5+3raz4n6KJhDX/u2aMlPXpoXlSU5kVF6ZOOHZV0+LBLPgsAAABA5URPYBH8+qvUsqX5/PKmTTlDRB1ZceutOrtvXwlbW3w2Hx91nzRJ9a+/Xh6enm5rBwAAQIHeeUdKS5P+9jeJUU5wE6v2BBICi+jOO6V586TwcPO/WddeK1Wp4vg9qcnJWty1awlb7EYeHoocOFCdXnxR3r6+7m4NAACoTAIDpaQkc+KFxo3d3RpYlFVDoJe7G1BRzJgh/fKLtG+fNHCg5ONjPsccFCRVrWqOAPXwyNlsNslm85fCYnRqx3alX7jg7lsonhmSZmxzdytQjtXxPqy760yWhy1TklS7Wzf1fOMN+fj7u7llAIByzVr9EEC5Qggsoho1pI0bpRdflD78UPrzz7wLyDvW3oUtA9xr9/keurL652rsu0uSdPznn7W4a1d5hYTolm++kZe3t5tbCAAol1gnEHAbQqATAgOlqVOl11+XYmOlY8fMMJiWZv53LDPT3LL2C5KamKgtkyaVbcMBF5l//B/6M722UjPzr5WZfvq0Po2OVuPbb1fX8ePLvnEAgIqBEAiUOUJgMXh4mEPXizd8PVAjR72q5Ph4Lb3uutJuGlCmlp+6T3+m11a6Yf8B2d8WLtRvCxeaM+cCAJCF4aCA27BEhJv4h4dreEyMbvz6a3c3BSg2L9slSVKGUfjvk+ZFRSk9Lc3VTQIAVBQMBwXchhDoZllh8OZ161QlPNzdzQGc4vlXCHTUE5jbp9HR2sxwaABAboRAoMwxHLSc8A0O1u1/9QqeP3ZMXwwaJFXUGUVhGV5OhkBJOjB/vn5bvlzDfv7ZVc0CAFQEn31mTqIQGurulgCWQwgsh6rVqaPhmzdLMtca/G7MGJ3ZsMHNrQLyK04IlKTMpCTNi4riOUEAsLLrr3d3CwDLIgSWcz7+/ur37rt5ziXHx2vpwIHSpUtuahVgynkm0LkQmGVeVJSGbNvGMhIAAABliBBYAfmHh2v49u0FvsZQUpSl4vYE5vZpdLSaDB2qLi+8UFrNAgBUBLNnm8NBhw6VqlVzd2sASyEEVjK5h5IWV8qZM1o+bJguxceXUqtQWWWFwEtGyXryDi5YoIOLF2v4jh2l0SwAQEXw0EPmYsvXXUcIBMoYIRD55J6kBnDk58ekDdOl0GFPSKvnlOxi6ekMDwUAK2GdQFRUSUnS88+bkxudOCFFR0tvvCF17mz/Pd9/Lz35pBQTI0VESP/3f9I995RVi/NhiQgAxdakifnz0BEfDY+JUZ0rrijxNT+NjtYGhoYCQOXHOoGoqO6/X1q9WpozR9q1y+zN7ttXsjeKLjZWGjhQuvpqaft2acwY8xqrVpVlq/OwGYa1fg1z+uhR1QwP16n4eIWEhbm7OUCFtmKF+d+0tm2lrJGcaSkpWtSpU6lc/5b161U1KKhUrgUAKGeqVJHS082/OPN3MrhJYlycAiMilHjkiALr1Sv8DSkpUkCA9MUX5l+CsnTsKPXvLxW0HvIzz0hffint3p1zbtgw6exZaeXKEt9DcdATCKDYmjY1fx48aD7bL0nevr6ltvTDkh49NK99e6UmJ5fK9QAA5Yi1+iFQziUlJSkxMTF7S01NLbgwPV3KyJCqVs173tdX+vHHgt+zYYPZU5jb9deb592EEAig2Bo2lPz8zMlof/0172vDY2Jk8/Ep+YdcuqTFXbtqXocOunjuXMmvBwAoHxgOinKkZatWCgoKyt6mTJlScGFAgNS9uzRxonT0qBkI5841A11CQsHvOXZMql0777nataXERLNn0Q0IgQCKzcvLHP0gSZs25X/9jl9+UfWWLUvnw1JTzZ7BqCglM3MtAFQehECUA3v37NG5c+eyt3HjxtkvnjPH/CVGeLjk4yO9+aZ0xx2SR8WJVhWnpQDKpa5dzZ/ff1/w6wMWLVL3V18t1c9cet11mhcVpSVXX60LJ0+W6rUBAGVkwQJp4UKpenV3twRQQECAAgMDszcfR6OZGjeW1q6VkpOlI0fM34RfuiQ1alRwfZ060vHjec8dPy4FBprDSN2AEAigRAYMMH8uW2b+968gDQcO1LCdO0v9sy+eOKHPe/fWvKgozWvdWmvuv5/nBwGgorjtNnO7/NkqoKKoVk2qW1f6809zps/Bgwuu695dWrMm77nVq83zbsLsoABKJD1dqlfP/IXW++9LI0c6rl/Uq5fSzpwpm8bZbKrdrZt6TpsmH3//svlMAABQYTg9O6hkBj7DkJo3N2fHGzvW/GXGunXmrLfjxpmz3n70kVkfGyu1bi2NHi3de6/07bfSY4+ZM4Zef73rbs4BFosHUCJeXtI//iE9/bS5de0qtWplv/62deu0ZcoU7Z871/WNMwwd37BBi7PGrF7Ow0ORAweq04svyttNwzEAwLIWLDB/Dh5MbyAqlnPnzKAXFycFB0u33ipNnmwGQMmcIObw4Zz6hg3NwPfEE+ai8vXqSe++67YAKNET6O7mAJVCSorUs6f0yy/mf//69ZPatJFCQiR/f8nT03xW2mYzf3p4SJkZ6dr4/PNSZoa7m+8mNgU1aaJmf/ubqvCXn0rL19f898HPz90tAcqhrAlhTpyQatVyb1tgWcXqCawE6AkEUGK+vtJXX0kjRpgjJJYtMzfHvCTZmX7ZKuIlrXV3I+BqN9X8r24PnW4eMEQZMFmrDwIodwiBAEpFaKi0cqW0fbs5U+iBA9LZs+bEWYZhLiafe8vNMAyd3PaLMi5edEPLAdc4dSlcx9IideZSrrWhcg1R9g4L0y0rV8rD09N9jQTcJXcIZIkIoMwRAgGUqvbtzc05NkkdlZqcrM969VJmWlqptwsoa1+d/pvmHn9W6UaVAl9PO3pUn7Rtq24vv6xG9maUA6yAEAiUOZaIAFBu+Pj7a9i2bbpl/XrZeE4OFZyXzVwzxV4IzPLzP/+peV26lEWTgPKD4aCAWxECAZQ7VYOCdMfWrbp140YFu3ENHaAkihoCJUnnz2teVJSLWwSUIwwHBdyKEAig3PLx91e/d9/V8JgY3fj11/xFARWKpy1dUhFD4F/mRUUpneHQsBr+2w6UOUIggArBPzxcw3fv1pBt29TygQfc3RygUFk9gRlOhEBJ+jQ6WpteeskVTQLKDw8P6cMPpdmzWUMFcANCIIAKxcvbW9Fjxmh4TIyGx8TolvXrVa1FC3c3C8jHqeGglzm4YIHmOT/DElBxeHiY6wrdfbfk4+Pu1gCWw+ygACq0qkFBGrx4cZ5zF8+d06p779X5ffvc1CqgZCFQknTpkuZFRWnYzp0sIwEAKFWEQACVTkHBMLeUM2e0fNgwXYqPL8NWwWqyQ6CKGQL/wjISqJQyM6UVK8z966+XqpTs3xMAziEEArAc3+Bg3f711275bHoprcPH44Ik6UJGQImv9fM//6mfJ03S8M2bS3wtoFy4dEkaNMjcP3eOEAiUMZthWGuhltNHj6pmeLhOxccrJCzM3c0BAFRSx45Jdeuajz79eeyclvfuUSrXvWX9elUNCiqVawFuc/Gi5Otr7p87JwUGurc9sKzEuDgFRkQo8cgRBdar5+7mlBkmhgEAwAVq15aqVTNHvR37M0jDY2LkVwq/fFzSo4fmdeigtJSUUmgl4CasEwi4FSEQAAAXsNmkxo3N/QMHzJ83rV6tbv/6V8kvnpqqRZ06aelttykzI6Pk1wPciRAIlDlCIAAALpK1esmuXTnnGg0apGE7d5bK9ZP37tUnbdtqyyuvEAZRsVjraSSg3CEEAgDgIp07mz8vn8/Fw9NTw2NiSu1z9n/0kT5p21afX3+9Lp47V2rXBVyG4aCAWxECAQBwkS5dzJ8bNhTc8TE8JkbewcGl9nkX4uLMZwajorTm/vuVmpxcatcGXIYQCJQ5QiAAAC7SpYs5OUxCgvTLLwXX3LZunZrddVepf/bxDRu0uGtXzYuK0sKePXX+2LFS/wyg2Ly9pbffNjeWhwDKHEtEAADgQrffLi1aJI0eLc2YYb8uPS1Nn0ZHl1m7arRqpavffZflJgBYmlWXiCAEAgDgQt99J/XpI/n4SFu3SlFRjuu/vOUWnfv117JpnB1VatTQgEWLVK1OHbe2AwBcjRBoEYRAAEBZMgypf39p1SopJER67jnpyiulsDCpenVzJJzNZi4qn/VoVGpyshZ37erWdpemqqGh6vfpp/KrVcvdTUF5kZ4u/fCD+Yf+qqvMfwEAN7BqCPRydwMAAKjMbDZp7lzp+uvN5wKffLLwepvNXzZbjIzMjMoxlf4eSaGSlO7mhqC8CFCizuoaSdInLVoo86/fgtTu1k09p02Tj7+/m1sIVG6EQAAAXKxmTWn9eun9983nA3ftkk6dKjjfGUbu855l2UygzBi5/mxn/3k3jOwJjbxCQnTLN9/Iy9vbPQ0EKjlCIAAAZcDHR/r7381NkjIzpeRkKSPD3M+9FRQOU/78UytvvrlsGw24SOYlH+mQuZ9h85KHMvO8nn76tD6Njlaj225TtwkTyr6BQCVHCAQAwA08PKTAQCfeEFZDo/d/r/PHjumLa65xWbuAsmDk+ivoJcNbPrpYYN3vixbp90WLNGznTnl40jMOlBaewgUAoAKpVqeOhsfEaPCaNSyyjQrLy5bzfGiGUXifxCdt2yp22TJXNgmwFEIgAAAVULU6dTR8927dunGjgrt3d3dzAKd4KCN7P90o2nN/G559VguvvtpVTQIshRAIAEAF5uPvr37vvqvhMTG6Zf16VWvRwt1NAgqVuxM73ahS5PddOnFC8wpbbBNAoXgmEACASqJqUJAGL14sScrMyNDh1au1/h//cHOrgPwybDaNs03SJcNH4cZqp98/LypKt23ZIm9fXxe0Dqj8CIEAAFRCHp6eiuzXT5H9+mWfS01O1ndjxujMhg1ubBkgZXh4aIbHw0rOqKF/6/tiXWNRp06q2aOHrps1q3QbB1gAIRAAAIvIGjpaEHoOUda8bJckOTcc9HKn1q/XvKgoZg8FnEQIBAAABfYclkR6Wpp2vf229tJLgwLYDENdjI06q1ClZviU+HqftG2rrpMmqTFraQJFYjOMgpakrbxOHz2qmuHhOhUfr5CwMHc3BwAAwHpOnpRCQyVJc94/L8/XOpfOdW02DfnlF3l5F23GUSAxLk6BERFKPHJEgfXqubs5ZYbZQQEAAFC2cvVBHD7qp+ExMWoybFipXPfT6Gitf/75kl8LqMQIgQAAAChbuULgwYPmzy7PP68h27aVyuUPLVmieVFRSo6PL5XrAZUNIRAAAABukSmb9u3LOfby9tbwmBh5VatWKtdfet11mhcVpR3Tpys9La1UrglUBjwTCACAK6SkSMOGSbGxBb8+aJA0ebK5f/Gi1KWL/Wv17Sv95z85x+3a5elJyeOKK6SZM3OOu3WTLlwouLZDB2n27Jzj3r2lM2cKrm3ZUlqwIOe4f3/JXi9Lw4bSF1/kHN9yS053z+Xq1JG+/jrn+M47pV27Cq4NCpLWrcs5vv9+adOmgmt9fKTNm3OOH31UWru24FpJ2r5d8vjrd+Njx0qrVtmv3bBBygopL7wgff65/drvvpNCQsz9KVOk+fPt165YIWU9kzR1qvTBB/ZrFy+WmjY19//7X+ntt+3Xzp0rtW1r7n/4ofT66/ZrZ82SunY19xcsyPkzWpA33zT/zEjS0qXS//2f/dpXX5WyJh1avVp67DFp3z5lyEP+VTOUmChVuWyS0M2TJ+vAvHn2r1kMHlWr6saVK+VXq1apXhcVl1WfCWR2UAAAXGHjRvMvxva0b5+zbxj2g4+U85f9LLt22Q+B4eF5j2NipOTkgmurV897vHevdOJEwbWX/w3911/tB9xLl/IeHzgg7d5dcO3Zs3mPDx60/10EB+c9/v13+7VVq+Y9PnTI8Xec2+HDjmszM3P24+Ic16an5+wfPeq4NndP1bFjjmsvXszZP3HCcW1KSs7+qVOOa8+fz9k/c8ZxbVJSzv7Zs45rz53L2U9MVFb332GPSF28aL61Q4e8b+n83HOKHjtWn0ZH27+ukzIvXtTnfwXXqrVrq9+CBQRCWBI9gQAAuEJamjkD4k8/5Q8vktkD1rq1uZ+RYfYY2RMamtOTI0nffGO/NiREyv2X5u++M69fkOrVpU6dco5/+CFvEMktICCnh0gy7yt3uMjNz0/q0SPneMOGvOEiNx8fqVevnONNm8yQUJAqVaSrrso53rpV+vPPgms9PKQ+fXKOt283A5A911wj2Wzm/q5d0vHj9mt795a8/vo9+p49Zrizp1cv8x4lM/jExdmv7dHD/O4kMzj/8Yf92m7dJH9/c//3383Nns6dzV5UybzmgQP2azt0yPnzGhenPGM1L9eunZQVoBISzF842NO6tflnXjK/278C49B/RevTNSGaMkV69ln7b5/frp2M3IHaBQiF1mTVnkBCIAAAANziv/+V/v538/cWW7fm5PCCfPvQQzr2449l1zhJstlUu1s39Zw2TT5ZoRuVCiHQIgiBAAAA5cPJk1L9+ubo1q++ynls0J60lBQtyt17XV54eChy4EB1evFFefv6urs1cAIh0CIIgQCAMrF3rzR9ujnRxz//6e7WAOXWE09I06ZJtWtLn3xijvh11CMoSWseeEDH168vk/ahcruUlqa7Dx4kBFZ2hEAAQJlYtcrs1mjXznweDUCBkpPNSW137jSPw8KkZs2kGjUkX1/z8U6bzfyZtW+zSZnp6YpdulQyMh1/AOCAd+ZprUocZbkQyOygAAC4UmFdGoDF+fubcxKNHSt99JE5z46juXZyeEm6xcWtQ2UXIAeTNVVibg2BMbNm6cjq1UqMjZVn1aqq1b692j/5pAIbNnT4vrTERO144w0d+eYbpZ07p2phYerw7LMKv/LKMmo5AACFsNZAG6BEgoKkd94xl8PcsUM6csSc+PXiRfNfpcxMc8vaL0hq4jntff/9sm04KjyvS+ckO5MMV2ZuDYEnNm9WszvuUHCbNjLS07XjjTf07QMP6IalS+WVNUXyZTLS0vTt/ferakiIek2dKt/atXX+6FF5BwSUcesBACgCegKBIvP3N4eGFk+QNOUJJcfHa+l115Vms1CJXUpLIwSWtavfeSfPcbfJk7WkVy+d2bNHoXZmfvr9s8+Ulpio6z7+WB5/LVzrf/nCuAAAuBs9gYBb+IeHa3hMjC6cPKnPr79eSk11d5OAcqdcPRN4KSlJkuSdtaBpAeK++04127XT5kmTFP/dd/KpUUORAweq5X33ycPTM199amqqUnP9y5+UnFz6DQcA4HJZIZCeQMAt/GrV0vBfflF6Wpp2zpihfe+95+4mAeWGh7sbkMXIzNTWV15RrehoVW/a1G7d+bg4Hf76axmZmeo9c6ZajxqlvbNnK+Z//yuwfsqUKQoKCsreWrZo4apbAAAgP0Ig4FZe3t7q8OSTGh4ToyHbtqnlAw+4u0mA25WbJSI2vfSSEtat07Vz5sivTh27dcsGDFBGaqpu/Prr7J6/vbNna+8HH+iWtWvz1V/eE3jm2DE1bN6cJSIAAK6VkiKdOCFVqWLOeQ+g3ElPS9Out9/W3lmz3N0UuIlV1wksF8NBN0+apKNr16rvhx86DICS5FurlmxeXnmGfgY1bqyLp04pIy1Nnt7eeep9fHzk4+OTfXyJ4aAAgLLg6ys1aODuVgBwwMvbW9Fjxih6zJg85y+eO6dV996r8/v2uadhgIu5NQQahqEtkycrbs0aXTN7tvyLkL5rRkfrjy+/lJGZKZuHOZo18dAh+daqlS8AAgAAAM6qGhSkwYsXF1qXcuaMlg8bpkvx8WXQKqD0uDUEbpk4UYdWrNCV06erip+fUk6elCRVCQiQV9WqkqT148bJLzRU7Z94QpLUdOhQ7Z83T1unTFGzO+9U0h9/aM+sWWp2551uuw8AAPLZs0d6/32pfn3pscfc3RoALuAbHKzbv/7a3c1ACSTGxUkREe5uRplzawg8sGCBJGnNPffkOd9t0iQ1uvlmSdKFhATZcj1UX61uXV39zjv65ZVXtOLmm+VXu7aa33WXWt53X5m1GwCAQh08KL3+utSlCyEQAFCuuDUEDo+JKbSm7+zZ+c7Vat9e18+f74IWAQAAAEDlVm6WiAAAoFJhnUAAQDlFCAQAwJUIgQCAcoYQCACAK5SPZXgBAMiHEAgAgCswHBQAUE4RAgEAcCVCIACgnHHr7KAAAFRa11wjxcRIvr7ubgkAAHkQAgEAcIXAQKlVK3e3AgCAfBgOCgAAAAAWQk8gAACuEBMjffqp1KCBdO+97m4NAADZ6AkEAMAV9u6VXnpJmj3b3S0BACAPQiAAAK7AOoEAgHKKEAgAgCuwTiAAoJwiBAIA4EqEQABAOUMIBADAFRgOCgAopwiBAAC4AsNBAQDlFCEQAABXIgQCAMoZ1gkEAMAVrrtO2rRJCghwd0sAAMiDEAgAgCsEB5sbAADlDMNBAQAAAMBC6AkEAMAV9uyRli+XIiOlIUPc3RoAALLREwgAgCts2yY984z07rvubgkAAHkQAgEAcAXWCQQAlFOEQAAAXIF1AgGg8snIkJ5/XmrYUPL1lRo3liZOLPwXfx9/LLVrJ/n5SXXrSvfeK50+XTZtLgAhEAAAVyIEAkDl8cor0syZ0owZ0t695vGrr0rTp9t/z08/SSNGSPfdJ8XESAsXmksIPfBA2bX7MkwMAwCAKzAcFAAqn/XrpcGDpYEDzePISGn+fDPU2bNhg1n32GPmccOG0kMPmQHSTegJBADAFRgOCgAVRlJSkhITE7O31NTUggt79JDWrJH27zePd+yQfvxR6t/f/sW7d5eOHJFWrDD/33D8uLRokTRgQOnfSBERAgEAcCVCIACUey1btVJQUFD2NmXKlIILn31WGjZMatFCqlJFio6WxoyR7rzT/sWvuMJ8JnDoUMnbW6pTRwoKkt56yyX3UhQMBwUAwBWuv176/nupRg13twQAUIi9e/YoIDw8+9jHx6fgwk8/NQPdvHlSVJS0fbsZAsPCpLvvLvg9e/ZIjz8uvfCC+f+GhARp7Fhp1Cjpvfeca+jBg9Jvv0lXXmlOTGMYxfplo80wrPXQwumjR1UzPFyn4uMVEhbm7uYAAAAAcJPEuDgFRkQo8cgRBdarV/gbIiLM3sDRo3POTZokzZ0r7dtX8Hv+9jfp4kVzQpgsP/4o9eolHT1qzhZamNOnzZ7Eb781Q9+BA1KjRuYsozVqSK+/Xvg1cmE4KAAAAAAUxYULksdlEcrTU8rMdP49UtEnEXviCcnLSzp82FxmIsvQodLKlUW7Ri4MBwUAwBX27DF/Y9uwYc4scgCAim3QIGnyZKl+fXM46LZt0n/+Y/bIZRk3ToqPlz76KOc9DzxgLi2RNRx0zBipSxdzGGlRfP21tGqVdHlvZdOm0h9/OH0bhEAAAFzh55+lRx+VbriBEAgAlcX06eZi8Q8/LJ04YYa4hx4yn/fLkpBg9thlueceKSnJXFvwH/+QqleX+vRxbomI8+fz9gBmOXNGsvf8ogOEQAAAXMFaj9wDgDUEBEjTppmbPbNn5z/36KPmVly9epk9ixMnmsc2mzkE9dVXpauvdvpyhEAAAFyBdQIBAKXl1Vela66RtmyR0tKkp5+WYmLMnsCffnL6ckwMAwCAKxECAQAl1bq1uUB9z57S4MHm8NBbbjGfSWzc2OnL0RMIAIArMBwUAFCagoKk554rlUvREwgAgCswHBQAUFpWrjTXFszy1ltS+/bS8OHSn386fTlCIAAArkQIBACU1NixUmKiub9rl/Tkk9KAAVJsrLnvJIaDAgDgCv36SV9+KdWu7e6WAAAquthYqVUrc3/xYnPtwZdfln75xQyDTiIEAgDgCvXrmxsAACXl7S1duGDuf/ONNGKEuR8cnNND6ARCIAAAAACUZz17msM+r7hC2rRJWrDAPL9/v1SvntOX45lAAABcYd8+6YMPpG+/dXdLAAAV3YwZkpeXtGiRNHOmFB5unv/qK/PxAyfREwgAgCt895308MPSrbdKffq4uzUAgIqsfn1p+fL856dOLdblCIEAALgC6wQCAFzh4kUpLS3vucBApy7BcFAAAFyBdQIBAKXl/HnpkUek0FCpWjWpRo28m5MIgQAAuBIhEABQUk8/bT5jPnOm5OMjvfuuNGGCFBYmffSR05djOCgAAK7AcFAAQGlZtswMe717SyNHSr16SU2aSA0aSB9/LN15p1OXoycQAABXYDgoAKC0nDkjNWpk7gcGmseSuXTEDz84fTlCIAAArkQIBACUVKNGUmysud+ihfTpp+b+smVS9epOX47hoAAAuEL//ub/pIuxiC8AAHmMHCnt2CFddZX07LPSoEHm2oGXLkn/+Y/TlyMEAgDgCk2amBsAACX1xBM5+337Svv2SVu3mv+fadvW6csRAgEAAACgImnQwNyKiWcCAQBwhf37zeGgP//s7pYAACq6xx6T3nwz//kZM6QxY5y+HCEQAABXWLFCGjpUmj7d3S0BAFR0ixdLV1yR/3yPHtKiRU5fjhAIAIArsE4gAKC0nD4tBQXlPx8YKJ065fTlCIEAALgC6wQCAEpLkybSypX5z3/1Vc76gU5gYhgAAFyJEAgAKKknn5QeeUQ6eVLq08c8t2aN9Prr0rRpTl+OEAgAgCswHBQAUFruvVdKTZUmT5YmTjTPRUZKM2dKI0Y4fTlCIAAArsBwUABAaUhPl+bNk265Rfr7383eQF9fyd+/2Jd0OgSe2rFD8d9/r8xLl1S7a1eF9epV7A8HAKDSIwQCAErCy0saNUrau9c8rlWr5Jd0pvjwqlX66amn5OnjI1uVKtr34Ydq/+STajlyZIkbAgBApdKvn/k/6mI8sA8AQB5dukjbtpVogfjcnAqBMe++q8a33aZO//d/8vD0VMysWYp55x1CIAAAl2vd2twAACiphx+W/vEPKS5O6thRqlYt7+tt2zp1OadCYFJsrHq+9po8PD0lSS3uvls7Z8zQxdOnVTUkxKkPBgAAAAAUwbBh5s/HHss5Z7OZz5/bbFJGhlOXcyoEpl+8qCq5HkD09PaWp7e30i9ckAiBAADkOHhQ2rdPioiQ2rVzd2sAABVZbGypXs7piWF+W7xYXn5+2cdGRoZ+//xz+dSokX2u+V13lU7rAACoqBYtksaNk0aOlN5/392tAQBUZKX0LGAWp0Jgtbp1dXDRojznqtasqdhly3JO2GyEQAAAAAAoiaVLpf79pSpVzH1HbrzRqUs7FQIHr17t1MUBALAs1gkEAJTETTdJx45JoaHmvj3FeCbQo0QNK8SXN92k8wkJrvwIAADKJ0IgAKAkMjPNAJi1b29zMgBKxXgm0Bnn4+NlpKe78iMAuNPFi9K335o/CxIYKPXtm3O8erWUlFRwrZ+fua5alm+/lc6eLbjWx0caODDn+IcfpFOnCq719JQGD845/ukn6fjxgmsl6ZZbcvZ//lk6etR+7Y03mgu4StKWLdLhw/ZrBw402y2Z6/w4esC7Xz/z+5CkXbukAwfs1/bta37PkrRnjzkRiT1XXy1lPb+9f7+0e7f92l69chaj/e03accO+7U9ekh16pj7hw5Jv/xiv7ZrVyk83NyPi5M2bbJf27FjzjMQCQnShg32a9u3z1mP7+RJad06+7WtW0vNmpn7Z85I339vv7ZlS3OTpHPnpDVr7Nc2bSq1aWPunz8vxcTYrwUAwJ0MF1rQqZORdPiwKz/Caafi4w1Jxqn4eHc3Baj4nn7aMMz+joK3qKi89S1b2q+NjMxb27Gj/dpatfLWXnml/dpq1fLW9u/vuM253Xqr49rz53NqR4xwXHvyZE7t3//uuPbQoZzaf/zDcW1MTE7tCy84rt28Oaf2lVcc137/fU7t9OmOa7/8Mqf2/fcd1y5cmFO7YIHj2tmzc2qXLXNc+9ZbObXffuu49t//zqnduNFx7fjxObW7djmuHTs2p/b333POjxplAADKp3NHjhiGZP4s75KTzf/nzpxpGG+8kXdzkkt7AgFUcq+8It15p/ToowUPRWjYMO9xhw5ScHDB16pbN+9xu3ZS1aoF11avnve4TRv7QyF8ffMet2olJSYWXHu5Fi2kK66w/7pHrhH1TZs6rvXK9Z/bxo0d12b1GEpSZKTj2tz3V7++49pcS/woPNxxbVbvomT+s3FUm2t2aIWGOq7NvZxQzZqOa7OGwGR9hqParJ5ISQoKclyb1RMpmd+Jo9qIiJx9Pz/HtZGROfs+Pmatn59033323wMAQFFs2yYNGCBduGCONgkONkdB+fmZ/7/MvX5gEdgMI+uhhdL3aefOGrBkifxz/0/UzU4fPaqa4eE6FR+vkLAwdzcHAAAAgJskxsUpMCJCiUeOKLBePXc3x77evc1HGf77X/OXnTt2mLOG3nWX9PjjeR9nKQKXTgwDAAAAACih7dulf/zDHIXk6SmlppqjVV59VfrnP52+HCEQQPFNmybdfru0YoW7WwIAAFB5VamS8xhKaGjOZHRBQdKRI05fzqXPBHZ58UVVzf38B4DK5eefpUWLzJkkAQAA4BrR0dLmzeYcBFddJb3wgvlM4Jw55qzXTnIqBP46d26R6prfdZckKfKGG5xuEIAKiHXQAAAAXOfll3OW2Zo8WRoxQvr7381Q+N57Tl/OqRC476OPCi+y2bJDIIBKznXzSgEAACBLp045+6Gh0sqVJbqcUyFw8Ndfl+jDAFQyWSGQnkAAAADX6dNHWrIk/zJZiYnSTTdJ337r1OWcmhjmu1GjlJbVDSkpZtYspeVabyv17FktHzTIqQYAqAQIgQAAAK7z/fdSWlr+8xcvSuvWOX05p3oCE378UZm5Pjxm1iw16NdP3n8tKpyZnq6kQ4ecbgSACorhoAAAAK6zc2fO/p490rFjOccZGeaw0PBwpy9bstlB+QsgAImeQAAAAFdo3978e5bNZg4JvZyvrzR9utOXdekSEQAqublzpdmzJW9vd7cEAACg8omNNTveGjWSNm2SatXKec3b25wkxtPT6cs6FQJtWSk070mnPxRAJeHjY24AAAAofQ0amD8zM0v1sk6FQMMw9PNzz8njr9/6Z6SladOECfLy8zPbVtDDigAAAACA4vvwQ6lmTWngQPP46aeld96RWrWS5s/PCYtF5NTsoI0GD1bV4GB5+/vL299fDW+4QX6hodnHVYOD1fDGG51qAIAK7M03pXvukb77zt0tAQAAqLxeftl8/k+SNmyQZsyQXn3VDIZPPOH05ZzqCew2ebLTHwCgEvv2W+mLL6Tu3aWrr3Z3awAAACqnI0ekJk3M/c8/l267TXrwQemKK6TevZ2+nFM9gQBQIJ4NBgAAcB1/f+n0aXP/66+la68196tWlVJSnL4cs4MCKD6WiQEAAHC9a6+V7r9fio6W9u+XBgwwz8fESJGRTl+OnkAAxZcVAukJBAAAcJ233jIfvzl5Ulq8WAoJMc9v3SrdcYfTl6MnEAAAAADKs+rVzclgLjdhQt7jhx+WXnrJnDDGAXoCARQfPYEAAADlx9y5UmJioWWEQAAlRwgEAABwvyLO18BwUADFN3eulJZmzlgFAACACoEQCKD4goLc3QIAAAA4ieGgAAAAAGAhhEAAxffWW+YsVD//7O6WAAAAoIgIgQCKb/lyaeZMad8+d7cEAAAAd90lBQYWWkYIBFByzA4KAADgOh98IC1cmP/8woXShx/mHM+cWegagRIhEEBJFHEaYgAAAJTAlCkFh7vQUOnll52+HCEQQMnREwgAAOA6hw9LDRvmP9+ggfmakwiBAIqPnkAAAADXCw2Vdu7Mf37HDikkxOnLEQIBFF9WCKQnEAAAwHXuuEN67DHpu++kjAxz+/Zb6fHHpWHDnL4ci8UDKDlCIAAAgOtMnCgdOiRdc43k9VeEy8yURowo1jOBhEAAxffRR9LFi0WahQoAAADF5O0tLVhghsEdOyRfX6lNG/OZwGIgBAIovjp13N0CAAAA62jWzNxKiBAIAAAAAOXNk08WvfY//3Hq0oRAAMX3v/9JBw9Kd94ptW/v7tYAAABUHtu2uezShEAAxbdggTlLVceOhEAAAIDS9N13Lrs0IRAAAAAAyqN77y28xmaT3nvPqcuyTiCA4mOdQAAAYCUZGdLzz0sNG5ozdDZubM7YmfV3IntSU6XnnjNn8/TxkSIjpfffL/zzZs82ewTPnpX+/LPg7cwZp2+DnkAAAAAAKIpXXpFmzpQ+/FCKipK2bJFGjpSCgszF3O0ZMkQ6ftzssWvSREpIMNf5K8zf/y7Nny/Fxpqfc9ddUnBwiW+DEAig+OgJBAAAVrJ+vTR4sDRwoHkcGWmGtE2b7L9n5Upp7Vrp999zAlxkZNE+7623zJk/lywxew7HjTM/+777pOuuK/bfwRgOCqD4Chv6AAAAUAEkJSUpMTExe0tNTS24sEcPac0aaf9+83jHDunHH6X+/e1ffOlSqVMn6dVXpfBwc52/p56SUlKK1jgfH+mOO6TVq6U9e8weyIcfNoNkcrJT95mFnkAAJUdPIAAAqMBatmqlpFzHL774osaPH5+/8NlnpcREqUULydPTfEZw8mRzuSx7fv/dDIpVq0qffSadOmWGuNOnpQ8+cK6hHh7m37sMw/zsYiIEAii+Dz+Uzp+X6tVzd0sAAACKbe+ePQoID88+9vHxKbjw00+ljz+W5s0ze+S2b5fGjJHCwqS77y74PZmZZnD7+GPz2UHJHOJ5223S22+bE8w4kpqaMxz0xx+lG26QZsyQ+vUzQ2ExEAIBFF9Rx7MDAACUYwEBAQoMDCy8cOxYszdw2DDzuE0b6Y8/pClT7IfAunXNYaBZAVCSWrY0e/Pi4qSmTe1/3sMPS598IkVEmMtFzJ8v1axZ9BuzgxAIAAAAAEVx4UL+3jdPT8czfV5xhbRwofn8nr+/eW7/fvM6hY2m+u9/pfr1pUaNzMll1q4tuG7JkqLfgwiBAEri/felw4eloUPN32gBAABUZoMGmc8A1q9vDgfdts0c2pl7Ufdx46T4eOmjj8zj4cPNtQRHjpQmTDCfCRw71nxPYUNBR4xwydwLhEAAxff++9JPP0nt2hECAQBA5Td9urlY/MMPSydOmM8CPvSQ9MILOTUJCeYvybP4+5szez76qDlLaEiIuW7gpEmFf97s2aV+CxIhEEBJsEQEAACwkoAAado0c7OnoODWooUZBMsJ1gkEUHwsFg8AAFDhEAIBlBwhEAAAoMIgBAIoPoaDAgAAVDiEQADFx3BQAACACocQCKDkCIEAAAAVBrODAii+99+Xzp+XmjRxd0sAAABQRIRAAMXXqpW7WwAAAAAnMRwUAAAAACyEnkAAxffRR9KxY9Jtt0mNGrm7NQAAACgCQiCA4ps+XdqyRWrdmhAIAABQQTAcFEDxsU4gAABAhUMIBFB8rBMIAABQ4RACAZQcIRAAAKDCIAQCKD6GgwIAAFQ4hEAAxcdwUAAAgAqHEAig5AiBAAAAFQZLRAAovlmzpORkqW1bd7cEAAAARUQIBFB8nTq5uwUAAABwEsNBAQAAAMBC6AkEUHyffCKdPi3deKMUEeHu1gAAAKAICIEAiu/ll6Vdu6QWLQiBAAAAFQTDQQEUH+sEAgAAVDiEQADFxzqBAAAAFY5bQ2DMrFlaOWSIPu3cWYt79dIPjz6qxNjYIr//0IoVmhcVpR8efdSFrQRQKEIgAABAheHWEHhi82Y1u+MOXTd/vvrMmqXM9HR9+8ADSr9wodD3JsfHa9trr6lWx45l0FIABWI4KAAAQIXj1olhrn7nnTzH3SZP1pJevXRmzx6FOlh/LDMjQ+ufflptR4/Wia1bdSkpydVNBVAQhoMCAABUOOXqmcCsMOcdFOSwbvfMmaoaEqLGt95a6DVTU1OVmJiYvSUlJ5dKWwHkQggEAACoMMrNEhFGZqa2vvKKakVHq3rTpnbrTmzdqt+WLFH/xYuLdN0pU6ZowoQJ2cdV+csqUHr++18pKUlq3drdLQEAAEARlZuewM2TJuncgQO64rXX7NZcOn9eG8aNU9cJE1S1Ro0iXXfcuHE6d+5c9rZ3377SajKAK6+UBg6UQkLc3RIAAAAUUbnoCdw8aZKOrl2rvh9+KL86dezWJR8+rPPx8Vo7enT2OSMzU5I0v21b3bB8uQLq18/zHh8fH/n4+GQfX2I4KAAAAAALc2sINAxDWyZPVtyaNbpm9mz516vnsD6wUSMN+PzzPOd2vvmmLp0/r47jxjkMkABcYMkSKTFR6t9fql3b3a0BAABAEbg1BG6ZOFGHVqzQldOnq4qfn1JOnpQkVQkIkFfVqpKk9ePGyS80VO2feEKePj75nhesEhAgSQ6fIwTgIs8+Kx04IK1bRwgEAACoINwaAg8sWCBJWnPPPXnOd5s0SY1uvlmSdCEhQTYmcwEAAACAUuHWEDg8JqbQmr6zZzt8vfvLL5dSawA4jXUCAQAAKpxyMzsogAqIEAgAAFDhEAIBFF9WCAQAAECFUS6WiCj3xoyRvv3W/utbtkje3ub+uHHSl1/ar/3xRykw0Nx/6SVp0SL7tatX50y28eqr0ty59muXLpUiI8396dOlWbPs1y5YILVsae6/+6705pv2a2fPljp0MPfnzjXbYc/MmdIVV5j7ixdLEybYr506VbrmGnN/xQpzghF7Xn5ZuuEGc/+776THH7df+/zz0u23m/s//yw9+KD92rFjpb/9zdzfsSNnvyCPPJJzrV9/zfmMgtx3X04bDx/OaXtB7rxTeuYZc//kyZzvpCC33CKNH2/uJyXlfNcF6d9feuUVcz89PeefYUF69877Z6BjR+nSpYJru3bN+2fr99/Nn/QEAgAAVBiEwKL44w9p1y77r+fuDTlyxHFtRkbOfny849rcfxFPSHBcm5qas3/8uOPaixdz9k+edFx74ULO/unTjmtzr8H455+OaxMTc/bPnXNce/Zs3vc5qj1zJm97HNWeOpWzf+GC49oTJ3L2L150XHvsWM5+Wprj2qNHc/bT0x3XdumSs5+Z6bg2KirvsaPahg3zHu/ebba7IKGheY99fc0/exER9q8PAACAcsVmGNYaz3X66FHVDA/Xqfh4hYSFFe1NO3aYYcmePn0kj79G1u7enTcEXO6qq6QqVcz9vXvNIGhPz57SX0tlaP9+s1fJnu7dpWrVzP2DB6VDh+zXdumS0xsZGyv99pv92k6dpOrVzf3Dh8122BMdLYWEmPvx8eb92dO2bU6gOHbM/N7siYqS6tY190+eNP952NOihZS13uTp09K2bfZrmzaVGjQw98+eNXt07WncOCcsJSVJGzfar42MlJo0MfcvXJDWr7dfGxEhNW9u7qemmkst2BMWJrVqZe6np0vff2+/tnZtqU0bcz8z03FPds2aUvv2Ocdr1tgf5hkcnLdX8fvvpfr1pUaN7F8fAACgnEqMi1NgRIQSjxxRYCFrllcmhEAAAAAAlmTVEMjEMI6kpprPS/XunXdYJAAAAABUUDwT6EhGhrR2rbmfmenetgAAAABAKaAnsKiY/RAAAABAJUAIdMRaj0sCAAAAsABCoCO5QyA9gQAAAAAqAUJgURECAQAAAFQChEBHGA4KAAAAoJJhdtDC+PqaP+kJBAAAAFAJEAIdCQhgfUAAAAAAlQrDQQEAAADAQgiBAAAAAGAhhEBHkpOlgQPNLT3d3a0BAAAAgBLjmUBH0tKkFSvMfWYKBQAAAFAJ0BNYVMwOCgAAAKASIAQ6Qu8fAAAAgEqGEOhI7hBITyAAAACASoAQWFSEQAAAAACVACHQEYaDAgAAAKhkCIFFRU8gAAAAgEqAJSIcqVVLysx0dysAAAAAoNQQAgtDDyAAAACASoThoAAAAABgIYRAR86elYYMkYYOdXdLAAAAAKBUEAIdSUmRFi40NwAAAACoBAiBRcFzgQAAAAAqCUKgI6wTCAAAAKCSIQQ6khUC6QkEAAAAUEkQAouCEAgAAACgkiAEOsJwUAAAAACVDCGwKOgJBAAAAFBJeLm7AeVaWJiUnEyPIAAAAIBKgxDoiIeHVK2au1sBAAAAAKWG4aAAAAAAYCGEQEdOnZLuuUd68EF3twQAAAAASgUh0JHkZOnDD6U5c9zdEgAAAAAoFYTAomB2UAAAAACVBCHQEWYFBQAAAFDJEAKLgp5AAAAqrSVLlujaa69VcHCwbDabDh06lK9m6tSpioqKkr+/v6pXr64+ffpo48aNdq+ZlJSkUaNGKSwsTNWqVVN0dLQWLVrkdI2rTZkyRZ06dVJAQIBq166tIUOG5Ll/Z+9bKtr3OX78eNlstjxbp06dSvnuABfIyJCef15q2FDy9ZUaN5YmTix659FPP0leXlL79i5tZmEIgY7QEwgAQKV3/vx5XXnllXrppZfs1jRo0ED/+c9/tGPHDq1fv15NmjTR9ddfr9OnTxdY/8QTT+j777/Xp59+ql27dmnIkCEaNmyYdu7c6VSNq61du1aPPvqoNm7cqJUrV+rMmTPq37+/0tPTJTl/31LRvk9JateunRISErK3VatWleq9AS7xyivSzJnSjBnS3r3m8auvStOnF/7es2elESOka65xeTMLYzMMayWd00ePqmZ4uE7FxyskLMxx8W+/SU2amGsFJieXTQMBAIBb7N69W23atFFsbKwiIyMd1iYmJiooKEjff/+9rrrqqnyvt27dWnfddZeeffbZ7HMhISF6/fXXdc899xS5Jj09XZMmTdKcOXMUHx+vkJAQ3X333Xr55ZdLfL8FiY2NVaNGjbRjxw61bds23+uF3Xdujr7P8ePHa/ny5dqyZUtpNh9wWmJcnAIjIpR45IgC69Ur/A033CDVri29917OuVtvNXsF5851/N5hw6SmTSVPT+nzz6Xt20vS9BKhJ7AoGA4KAAD+kpaWpnfeeUc1atRQmzZtCqzp0aOHvvjiCx07dkyGYWjhwoVKTU3NE5yKUjNx4kQtX75cs2fP1q+//qq5c+eqvQuHkZ07d06SFBwcnO+1oty3M/bu3au6deuqSZMmGjlypI4dO1biawLFlZSUpMTExOwtNTW14MIePaQ1a6T9+83jHTukH3+U+vd3/AEffCD9/rv04oul2/Bi8nJ3A8q1Bg2k48fd3QoAAFAOrFu3Tv3791dKSorq1Kmj1atXFxiWJOnNN9/Uvffeq7p168rLy0t+fn5asmSJGjZs6FTN6tWrddNNN6lXr16SzOGZrpKRkaGnnnpKAwYMUL1cPSLO3HdRde3aVbNnz1aLFi0UHx+vF154QX369NG2bdvk4+NT0lsBnNayVSsl5Tp+8cUXNX78+PyFzz4rJSZKLVqYPXoZGdLkydKdd9q/+IED5vvWrTOfBywH6Al0xMtLCg01NwAAUGE8++yz+SYeuXxzVqdOnbR9+3atX79e/fv315AhQ3Tq1KkCa9944w3t2LFDX331lbZs2aKxY8dq6NCh2rNnj1M1AwcO1IsvvqhBgwZpzpw5Si7g8ZTSuFfDMDRq1CgdPnxYs2fPLvZ9F1X//v11++23q02bNurXr5++/PJLxcbGavny5SW6LlBce/fs0blz57K3cePGFVz46afSxx9L8+ZJv/xirin+2mvmz4JkZEjDh0sTJkjNmrnuBpzEM4EAAKDSOXnypMPJSySpRYsWeY6deSZQkpo2baoHH3xQY8eOzXM+JSVFQUFBWrZsma6//vrs89dee62aN2+uGTNmFKkmy549e/TZZ5/p/fff16VLl7Rr1y4FBQWV6F5zMwxDDz/8sFauXKkffvhBERERxbrvyzn7fbZs2VL33XefnnrqqUJrgdLi9DOBERFmr97o0TnnJk0ynwfcty9//dmzUo0aZq9hlsxMcwJKT0/p66+lPn1KfB/OKh/9keXViRNmavfzk/79b3e3BgAAFFGtWrVUq1Ytl36GYRgFPjd06dIlXbp0SZ65/9InydPTU5mZmUWuydKqVSu1atVKI0eOVHh4uOLi4vKEwJLcq2EYGj16tL788kutXbu20ACY9R67z0sV059//qk//vijSGERcKsLFySPywZTenqawa4ggYHSrl15z739tvTtt9KiReZSE25ACHTkzz/Nf0jVqxMCAQCopM6cOaPDhw/rt99+k2T2vJ09e1b169fPfvbtmWee0Y033qh69erpzJkzevvttxUXF6dbb71VkjRjxgx99tlnWrNmjQIDA9WrVy899dRTmjFjhsLCwrR06VKtXr1aK1askKQi1bzyyisKDw9Xp06dlJmZqddff10tWrRw2KvnrNGjR2v+/PlatmyZfH19sydnCQ4Olre3d6H3ffm9F/X7HDt2rAYNGqT69esrLi5O//znPxUeHq4B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0aJFsmPHDhkeHp7Jy5h1amtrBcCErEREbty4Ia+++qpERUWJXq+XvLw8nw8rIiK9vb2Sk5MjCxculOjoaCkuLha32z1Tw5+VhoaG5I033hCz2SyhoaGSlJQk7777rs8HEs7X6fnqq68kKSlJdDqdGAwGee2118TpdCrtzHVqTp8+LQAmvAoLC0XEfzmePXtWnnzySQkJCRGTyST79++fqUsMiLvlWllZOWn7+++/r5yD6+5Ed8p1/Os2JnuNf+etCOfrZO6U640bNyQvL0+MRqPodDqJj4+XDRs2iM1m8zkHc53obuvA7SYrApnrRHfKdXR0VNauXSsxMTESHBwsCQkJ8vLLL/t8lY6I+nLViIj4/fYiERERERERzUrz4v8EEhERERER0dSwCCQiIiIiIlIRFoFEREREREQqwiKQiIiIiIhIRVgEEhERERERqQiLQCIiIiIiIhVhEUhERERERKQiLAKJiGheaWxshEajgdPpDPRQiIiIZiV+WTwREc1pzzzzDB599FF8+umnAACXy4WrV68iLi4OGo0msIMjIiKahbSBHgAREZE/6XQ6GAyGQA+DiIho1uLjoERENGdt374dTU1NKCsrg0ajgUajweHDh30eBz18+DAiIyNx4sQJpKamQq/XY+PGjRgdHcWRI0eQmJiIqKgoFBUVwePxKOceGxtDSUkJTCYTwsLCkJ2djcbGxsBcKBERkR/xTiAREc1ZZWVl6OrqwrJly/DBBx8AAM6fPz+h3+joKD777DNUV1djeHgYzz//PPLy8hAZGYkff/wR3d3deOGFF7By5Ups3rwZAPD666/jjz/+QHV1NYxGI7755husX78e7e3tSElJmdHrJCIi8icWgURENGdFRERAp9NBr9crj4D++eefE/q53W6Ul5cjOTkZALBx40YcPXoUly9fRnh4ONLT07Fq1SqcPn0amzdvhsPhQGVlJRwOB4xGIwCgpKQENTU1qKysxN69e2fuIomIiPyMRSAREc17er1eKQABIC4uDomJiQgPD/c5NjAwAABob2+Hx+PBkiVLfM4zNjaGxYsXz8ygiYiI/p+wCCQionkvODjY52eNRjPpMa/XCwAYGRlBUFAQWltbERQU5NPvvwtHIiKiuYhFIBERzWk6nc5nQxd/yMzMhMfjwcDAAJ566im/npuIiCjQuDsoERHNaYmJiWhpaUFvby+uXLmi3M27F0uWLMHWrVuxbds2HD9+HD09PbDZbNi3bx9Onjzph1ETEREFDotAIiKa00pKShAUFIT09HTExMTA4XD45byVlZXYtm0biouLkZqaiueeew6//fYbzGazX85PREQUKBoRkUAPgoiIiIiIiGYG7wQSERERERGpCItAIiIiIiIiFWERSEREREREpCIsAomIiIiIiFSERSAREREREZGKsAgkIiIiIiJSERaBREREREREKsIikIiIiIiISEVYBBIREREREakIi0AiIiIiIiIVYRFIRERERESkIiwCiYiIiIiIVOQ/XQU7QLhbQwgAAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/latex": [
+ "$$\\frac{-13.88 s - 23.15}{2.648 s + 1.668}$$"
+ ],
+ "text/plain": [
+ "TransferFunction(array([-13.87916085, -23.15183568]), array([2.64794455, 1.66810054]))"
+ ]
+ },
+ "execution_count": 61,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "###################################\n",
+ "### INITIAL GUESS & OBSERVATION ###\n",
+ "###################################\n",
+ "_ = CTLSB.plotTransferFunctionFit(num_zero=1, num_pole=1, \n",
+ " initial_value=7.5*1e-9, final_value=9.5*1e-9, num_step=10,\n",
+ " times=STAIRCASE_TIMES,\n",
+ " ylim=[2*1e-7, 3*1e-7],\n",
+ " fit_start_time=1000,\n",
+ " xlim=[600, 1500],\n",
+ " fitter_method=\"gpz\")\n",
+ "\n",
+ "# Get the transfer function \n",
+ "TRANSFER_FUNCTION = CTLSB.getOpenLoopTransferFunction()\n",
+ "TRANSFER_FUNCTION"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6933e0a1-59db-4cb9-8d1e-fd3e8f111417",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "This looks like an awful fit and similar tries with different num_numerators and num_denominators yielded similar graphs. This is because it is still trying to fit the perturbation behavior that happens at t = 500 min. I cannot start the np.linspace at t = 700 because the function does not converge and I get an error. Thus, I need to see if I can change where the fitting of the transfer function starts. To do this, I need to go find what is happening in the background of this function, so the cell below helps us identify where the ``plotTransferFunctionFit`` is on GitHub."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "439890d6-d2be-4a52-b7fe-eab478864b0f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#########################################################\n",
+ "### INITIAL GUESS USING FIT_START_TIME + FIT_END_TIME ###\n",
+ "#########################################################\n",
+ "\n",
+ "# Plot\n",
+ "_ = CONTROL_SBML.plotTransferFunctionFit(num_numerator=2, num_denominator=2, \n",
+ " initial_value=0.000000009, final_value=0.0000000075,\n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " ylim=[0.00000026, 0.0000003], xlim=[700, 1420],\n",
+ " fit_start_time=700, fit_end_time=1420) # ADDED PARAMETERS\n",
+ "\n",
+ "# Get the transfer function \n",
+ "TRANSFER_FUNCTION = CONTROL_SBML.getOpenLoopTransferFunction()\n",
+ "TRANSFER_FUNCTION"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "a5d1078a-1b70-48fc-9186-5a79ee0ee71e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#############################################################################################\n",
+ "### ATTEMPTING TO FIT USING FIT_START_TIME + FIT_END_TIME & DIFFERENT CONSTRAINED FITTING ###\n",
+ "#############################################################################################\n",
+ "\n",
+ "# Plot\n",
+ "_ = CONTROL_SBML.plotTransferFunctionFit(num_numerator=1, num_denominator=3, \n",
+ " initial_value=0.000000009, final_value=0.0000000075,\n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " ylim=[0.00000026, 0.0000003], xlim=[700, 1420],\n",
+ " fit_start_time=650) # ADDED PARAMETERS\n",
+ "\n",
+ "# Get the transfer function \n",
+ "TRANSFER_FUNCTION = CONTROL_SBML.getOpenLoopTransferFunction()\n",
+ "TRANSFER_FUNCTION"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "01bcd9c7-0f85-4699-89ce-3fd4ced02249",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "##############################################\n",
+ "### PLOT THE POLES TO SEE WHAT IS GOING ON ###\n",
+ "##############################################\n",
+ "\n",
+ "TRANSFER_FUNCTION.poles(), TRANSFER_FUNCTION.zeros()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ec8f591b-7e86-430a-8cf1-2cf4f35424d9",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "This is so strange, the transfer function does not want to fit in the positive direction that EI_P is going when Mlc is decreasing. However, the shape looks nice with 2 terms in the numerator and 3 terms in the denominator for the window we care about, 700 minutes to 1420 minutes; additionally, both poles are currently real and negative indicating that the system converges. One pole is very close to zero indicating a long setting time, but this is okay."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "d940b251-1fb0-45a0-8765-57950ce70a03",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "################################################################################################################\n",
+ "### ATTEMPTING TO FIT USING FIT_START_TIME + FIT_END_TIME & DIFFERENT CONSTRAINED FITTING & CHANGED NUM_STEP ###\n",
+ "################################################################################################################\n",
+ "\n",
+ "# Plot\n",
+ "_ = CONTROL_SBML.plotTransferFunctionFit(num_numerator=2, num_denominator=3, \n",
+ " #initial_value=0.000000009, final_value=0.0000000075,\n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " #ylim=[0.00000026, 0.0000003], xlim=[700, 1420],\n",
+ " fit_start_time=650, num_step = 10, \n",
+ " is_steady_state = False) # ADDED PARAMETERS\n",
+ "\n",
+ "# Get the transfer function \n",
+ "TRANSFER_FUNCTION = CONTROL_SBML.getOpenLoopTransferFunction()\n",
+ "TRANSFER_FUNCTION"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4122f3e6-cfb1-487c-9d80-a6ce72741403",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "We got the correct direction finally! However, this identified system is subpar at best and we must proceed with extreme caution using this transfer function. This was the best transfer function that I was able to find and the only one with the correct direction, but ultimately I would say our system identification was inadequate. We will use this transfer function in Section 3."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e25df9c8-e1d9-4048-8d69-0edf25466376",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "### System Identification Inadequacy "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "49fcf19a-70ae-4221-b211-437c8497dfd1",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "**INITIAL THOUGHTS:**\n",
+ "\n",
+ "I tried doing everything that I could to think of to change the transfer function behavior and spent a solid few hours looking through the GitHub trying to understand what was going on under the hood of this function, trying different arguments, etc. It looks like it has a great shape and will fit very nicely if the plotTransferFunctionFit knew to look at possible fits that negatively correlate with the input variable. I suspect a few things could be going on: \n",
+ "\n",
+ "1.) The threshold in the function isDone (siso_transfer_function_builder.py) might be too high since my inputs and outputs are so small the residuals probably are very tiny and seem highly accurate/pass the threshold with relative ease. This maybe truncates the search for a global minimum and settles for a local minimum with the rmse for the residuals.\n",
+ "\n",
+ "2.) Perhaps the function is too highly dependent on a random initial guess for each coefficient, as I see that it is a random integer between -10 and 10. Perhaps there is an error executing this logic that biases it to be positive and not negative, like we would expect to see in our transfer function.\n",
+ "\n",
+ "3.) Perhaps the logic was being flipped somewhere for having an opposite initial value and opposite final value.\n",
+ "\n",
+ "Let us zoom out and take a more global view of the plot to give us insight into what is going on."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "79f1b52d-394d-4869-8d30-ffcb04f26911",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "################################################################################\n",
+ "### ZOOMED OUT PLOT OF A TRANSFER FUNCTION THAT HAS INCORRECT DIRECTIONALITY ###\n",
+ "################################################################################\n",
+ "\n",
+ "# Plot\n",
+ "_ = CONTROL_SBML.plotTransferFunctionFit(num_numerator=2, num_denominator=3, \n",
+ " initial_value=0.000000009, final_value=0.0000000075,\n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " #ylim=[0.00000026, 0.0000003], xlim=[700, 1420],\n",
+ " fit_start_time=650, num_step = 10, \n",
+ " is_steady_state = False) # ADDED PARAMETERS\n",
+ "\n",
+ "# Get the transfer function \n",
+ "TRANSFER_FUNCTION = CONTROL_SBML.getOpenLoopTransferFunction()\n",
+ "TRANSFER_FUNCTION"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d5a7ccbc-745f-4b34-8294-40c299c32c37",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "**FINAL THOUGHTS:**\n",
+ "\n",
+ "Looking at the above plot it is clear that the transfer function does map the predicted inputs relatively well to the EI_P output for staircase control. The ``plotTransferFunctionFit`` on GitHub works by making a transfer function of the input num_numerators & num_demoninators with initial random coefficients. It then iteratively modifies the coefficients of the transfer function based on the outcome of the RMSD between the predicted EI_P output and actual EI_P output; specifically, changes made to the coefficients are accepted when the RMSD is minimized from the previous RMSD and this process repeats by changing the new coefficients until a threshold minimized RMSD is achieved. Once this threshold is achieved, the function stops the minimization. I believe this threshold was around 1e-5 or 1e-6 which is a low RMSD in most cases. However, observe the scales in our case: we are on a scale of 1e-7! Thus, it is super easy to achieve an RMSD below this threshold in this case because of the small scale of our inputs and outputs, a threshold RMSD here should be closer to 1e-8. \n",
+ "\n",
+ "Ultimately, I suspect that the ``plotTransferFunctionFit`` function is getting stuck at a local minimum in its search for a transfer function that yields a global minimum RMSD because it stops searching early due to the poor RMSD threshold for this specific case. This high RMSD threshold yields poor resolution for fitting at our minute scales, and therefore a transfer function is not able to be constructed with great attention to detail at the scales of which these reactions are happening in E. coli. Thus, this problem could possibly be solved by allowing the RMSD threshold to be toggled by the user for each specific case."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fa84fe09-7b45-4daa-b072-0986ddc5d529",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "## Section 3: Testbed Construction & Control Design"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2f2e61df-2eba-403b-8241-8eb728e18b9c",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "### Testbed Construction"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c67a03e0-d4d1-4c7e-a9c6-2b74f0ad8629",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "I will perform initial testbed construction with the ``plotClosedLoop`` function from the analysis of mTor since Professor Hellerstein had trouble loading my raw antimony file in HW1. This allows us to keep using CONTROL_SBML rather than loading in the antimony and pasting kP & kI in by hand."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2ed32e42-b59b-4c7b-919a-ec793e6d53d8",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "#### kP, kI, & kP-kI Initial Guesses"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0ba86925-8a5b-4716-a813-4cde08b6dcce",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "############################################################\n",
+ "### CREATE TESTBED WITH SIMPLE kP CONTROL | RANDOM GUESS ###\n",
+ "############################################################\n",
+ "\n",
+ "_, builder = CONTROL_SBML.plotClosedLoop(setpoint=0.0000003, kP=1, kI=None, kF=None, \n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " #ylim=[0.00000020, 0.0000004], xlim=[700, 1420],\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a75e29bc-bab6-4b69-8ac8-37032c30d8c0",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "We see that proportional control achieves a stable system as seen by the horizontal line that settles quickly after the perturbation, but we are way off our set point here with a simple guess for kP. Let us try I control:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "9e3b7fc5-55b0-442c-814a-dfcbadf35eb2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "############################################################\n",
+ "### CREATE TESTBED WITH SIMPLE kI CONTROL | RANDOM GUESS ###\n",
+ "############################################################\n",
+ "\n",
+ "_, builder = CONTROL_SBML.plotClosedLoop(setpoint=0.0000003, kP=None, kI=1, kF=None, \n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " #ylim=[0.00000020, 0.0000004], xlim=[700, 1420],\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d6e7e6c5-54f2-44f2-a4d9-78a32e9a3eb3",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "With a simple guess for I control only, we see our system output blow up after the perturbation and the Mlc concentration does not seem to change. Let us now try a simple PI controller:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f7d963ac-0096-4eb2-9d4a-e3f37b537eca",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#################################################################\n",
+ "### CREATE TESTBED WITH SIMPLE kI & kP CONTROL | RANDOM GUESS ###\n",
+ "#################################################################\n",
+ "\n",
+ "_, builder = CONTROL_SBML.plotClosedLoop(setpoint=0.0000003, kP=1, kI=1, kF=None, \n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " #ylim=[0.00000020, 0.0000004], xlim=[700, 1420],\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "34520390-4181-4fe0-ab13-38c1899ae9b3",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "This behavior seems similar to the P control potentially indicating that the kP is too dominant here. Now let us begin exploring PI controls by changing kP and kI."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "328b65bb-9da4-4080-b7e2-97883071db69",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "#### Iterative Exploration to Converge Toward a Satisfactory Control with PI Controller"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f6badff0-d88c-49b6-8d30-c8422a668040",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#################################################################################\n",
+ "### CREATE TESTBED WITH SIMPLE kI & kP CONTROL | 1ST ITERATION OF EXPLORATION ###\n",
+ "#################################################################################\n",
+ "\n",
+ "_, builder = CONTROL_SBML.plotClosedLoop(setpoint=0.0000003, kP=.01, kI=.001, kF=None, \n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " ylim=[0.0000001, 0.0000005], xlim=[450, 1420],\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "16954347-112f-4170-bc3b-915b86421f8f",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "Scaling down the PI control by inputting a smaller kP and kI in this closed system is now giving some more interesting behavior! We are closer to our setpoint and the perturbation at t = 500 min is not as influential now."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "08ef0698-35fc-4f3b-90bf-46cbfaf316be",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#################################################################################\n",
+ "### CREATE TESTBED WITH SIMPLE kI & kP CONTROL | 2ND ITERATION OF EXPLORATION ###\n",
+ "#################################################################################\n",
+ "\n",
+ "_, builder = CONTROL_SBML.plotClosedLoop(setpoint=0.0000003, kP=.001, kI=-.001, kF=None, \n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " ylim=[0.0000001, 0.0000005], xlim=[450, 1420],\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2c1f5160-e482-4f01-9581-abe173aaf5ac",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "We are beginning to hit the set point now! Wow, this is looking fantastic the perturbation at t = 500 minutes is still not ideal, but we converge to a steady state pretty quick. Making kI negative helped to achieve our setting point goal. Let us keep exploring:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "56338a84-b2b0-45ea-849e-2a1e83682647",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#################################################################################\n",
+ "### CREATE TESTBED WITH SIMPLE kI & kP CONTROL | 3RD ITERATION OF EXPLORATION ###\n",
+ "#################################################################################\n",
+ "\n",
+ "_, builder = CONTROL_SBML.plotClosedLoop(setpoint=0.0000003, kP=0.0000006, kI=-.005, kF=None, \n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " ylim=[0.0000001, 0.0000005], xlim=[450, 1420],\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "632c25a7-21c3-4c81-b5f4-76e32d093195",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "Very interesting! Our system now has a drastically reduced perturbation and EI_P always stays within our desired concentration range. Interestingly, we introduced a lot of oscillation into our system, which is not ideal since one control objective sought to minimize this, let us try one iteration to minimize oscillation:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "bfb44926-5123-4cee-88db-ee03ce557a38",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#################################################################################\n",
+ "### CREATE TESTBED WITH SIMPLE kI & kP CONTROL | 4TH ITERATION OF EXPLORATION ###\n",
+ "#################################################################################\n",
+ "\n",
+ "_, builder = CONTROL_SBML.plotClosedLoop(setpoint=0.0000003, kP=0.0000006, kI=-.0035, kF=None, \n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " ylim=[0.0000001, 0.0000005], xlim=[450, 1420],\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "42489f67-7d77-4fc9-84e4-fa21ee7581d5",
+ "metadata": {
+ "id": "edd3f772-e8fe-4738-ad3c-7c707dc2c86e"
+ },
+ "source": [
+ "This PI controller works beautifully for our system!! This achieves all of our control objectives, surprisingly, but we will further optimize this in the grid search part.\n",
+ "\n",
+ "**OBSERVATIONS OF THE EFFECT OF kP & kI:**\n",
+ "\n",
+ "A positive kI was causing our system to way overcompensate when the perturbation hit at t = 500 minutes because of the building error between EI_P and the setpoint before hitting this perturbation time point at t = 500 min. I think making kI negative helped so much because that built up error could help counteract the huge perturbation at t = 500 min which causes EI_P to spike temporarily. Interestingly, the I control adds oscillation to the system, which seemed to be especially prevalent at the 3rd iteration. The root locus plot will tell us more about this behavior from I control. Ultimately, making kI negative helped to reach the setpoint by counteracting the overcompensation at the perturbation at t = 500 min and decreasing the magnitude of kI below -0.005 helped to fix the oscillatory behavior that arose.\n",
+ "\n",
+ "I had convergence errors trying to make kP negative, which makes sense because that would have the error work against bringing the EI_P concentration to the setpoint. Making kP extremely small really helped to minimize the spike of EI_P at t = 500 min when the gluocse concentration drops significantly, likely due to it minimizing overcompensation. Specifically, making kP have the same order of magnitude as the setpoint really made a difference.\n",
+ "\n",
+ "Overall, I am extremely satisfied with these designs and they beautifully achieve our initial control objects by keeping EIP in the desired concentration range, minimizing the oscillations, and allowing for a quick settling time and steady-state convergence. We will further optimize kP and kI in the grid search in the last part!"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "304cdda0-b1b8-420a-b567-c0c628520fed",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "### Root Locus Analysis"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e4169e15-a311-4351-a4a1-f20c6ff24c59",
+ "metadata": {
+ "id": "tAZvhZBt8o6f"
+ },
+ "source": [
+ "#### Grab Best Transfer Function from the System Identification in HW2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "2e5c1831-63d2-4653-9163-abc44270375f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "###########################################\n",
+ "### REPLOT TRANSFER FUNCTION FROM ABOVE ###\n",
+ "###########################################\n",
+ "\n",
+ "# Plot\n",
+ "_ = CONTROL_SBML.plotTransferFunctionFit(num_numerator=2, num_denominator=3, \n",
+ " #initial_value=0.000000009, final_value=0.0000000075,\n",
+ " times=np.linspace(440, 1420, 10000),\n",
+ " #ylim=[0.00000026, 0.0000003], xlim=[700, 1420],\n",
+ " fit_start_time=650, num_step = 10, \n",
+ " is_steady_state = False) # ADDED PARAMETERS\n",
+ "\n",
+ "# Get the transfer function \n",
+ "TRANSFER_FUNCTION = CONTROL_SBML.getOpenLoopTransferFunction()\n",
+ "TRANSFER_FUNCTION"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ac35db29-6f42-4cc0-adf7-e6048cac0dd6",
+ "metadata": {
+ "id": "04e75fe1-33b2-49cf-b8cf-82bf0db4d3e3"
+ },
+ "source": [
+ "This was the best transfer function from HW2 because it was the only transfer function that had the same directionality of the EI_P decrease. Let us look at the zeros & poles:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5398189d-7bd0-4138-a669-3637e32802df",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "executionInfo": {
+ "elapsed": 3,
+ "status": "ok",
+ "timestamp": 1706135721480,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "94592315-9f99-4fa1-8ca7-960f3e34a5fe",
+ "outputId": "727f6204-2ad0-48d4-963a-c034c30ea1c4"
+ },
+ "outputs": [],
+ "source": [
+ "#######################################################\n",
+ "### FIND THE ZEROS & POLES OF THE TRANSFER FUNCTION ###\n",
+ "#######################################################\n",
+ "\n",
+ "TRANSFER_FUNCTION.zeros(), TRANSFER_FUNCTION.poles()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c9676347-961e-40ba-8c9b-3e0f13203c63",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "We see that we have a zero at s = 0 and that we have two negative, real poles indicating that our system is stable. These poles are located at s = -2.3439 and s = -0.0084, which are both pretty close to zero."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "385a90ef-c30f-481a-9942-8f6051a99b6f",
+ "metadata": {
+ "id": "tAZvhZBt8o6f"
+ },
+ "source": [
+ "#### P control Root Locus Analysis"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a2b7d72e-c916-4ea8-9932-0228547d5e72",
+ "metadata": {
+ "id": "906a0aa3-30b1-428b-908d-e6e9c9ac9647"
+ },
+ "source": [
+ "\\begin{eqnarray}\n",
+ "H(s)\n",
+ "& = & \\frac{k_P Z(s)}{P(s) + k_P Z(s)} \\\\\n",
+ "\\end{eqnarray}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "91172063-6301-474f-99a8-552bd4739c03",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "Note that we do not multiply our transfer function by anything else for P control."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f7364715-ae9c-464e-958c-5b749405f788",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "##############################################\n",
+ "### DEFINE THE P CONTROL TRANSFER FUNCTION ###\n",
+ "##############################################\n",
+ "\n",
+ "P_CONTROL_TRANSFER_FUNCTION = (9.51*s + 0)/(0.1723*(s**2) + 0.4053*s + 0.003403)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "1d5486fe-eeda-4f12-8c53-ab31e717390f",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "executionInfo": {
+ "elapsed": 577,
+ "status": "ok",
+ "timestamp": 1706135722055,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "05154ae4-e453-43fe-80f5-27525d296da4",
+ "outputId": "c6fd38ae-ec79-4148-b027-ca292bd967ea"
+ },
+ "outputs": [],
+ "source": [
+ "#########################################\n",
+ "### PLOT THE ROOT LOCUS FOR P CONTROL ###\n",
+ "#########################################\n",
+ "\n",
+ "_ = control.root_locus(P_CONTROL_TRANSFER_FUNCTION, grid=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "a2e6b8f9-4c3e-41f3-b665-906f2d3d2a9c",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "executionInfo": {
+ "elapsed": 577,
+ "status": "ok",
+ "timestamp": 1706135722055,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "05154ae4-e453-43fe-80f5-27525d296da4",
+ "outputId": "c6fd38ae-ec79-4148-b027-ca292bd967ea"
+ },
+ "outputs": [],
+ "source": [
+ "#####################################################################\n",
+ "### PLOT THE ROOT LOCUS FOR P CONTROL & ZOOM IN ON THE RIGHT POLE ###\n",
+ "#####################################################################\n",
+ "\n",
+ "_ = control.root_locus(P_CONTROL_TRANSFER_FUNCTION, xlim=[-.01, 0], grid=False) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f1dfd9d7-a6a9-4dc6-b915-bd417f5d580b",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "**P CONTROL ROOT LOCUS ANALYSIS**\n",
+ "\n",
+ "The above root locus plots show a couple of things. First, we can see that our poles are real and negative since they are on the real numbers line in the s-plane with no imaginary component. The negative real component of our roots indicates that our system is stable because exponential functions converge with negative exponents, indicating the exponential component of the Laplace will converge. The non-imaginary (i.e. real) part of our poles indicates that there is no oscillation in the P control system because Euler's Formula for exponentials, which introduces oscillation with cosine and sine for complex numbers, is not applicable. Thus, the exponential function of the Laplace is not transformed into a trigonometric function to introduce oscillation, but rather it stays exponential, which does not have oscillating behavior in mathematics in isolation.\n",
+ "\n",
+ "These poles always stay on the real numbers line in the s-plane, but on separate trajectories. As kP increases, the leftmost pole keeps becoming more negative but the rightmost pole becomes less negative until it approaches zero (bottom graph). Once the rightmost pole hits zero, kP cannot continually increase or else the system will become unstable. Thus, the rightmost pole of -0.008 is the dominant pole and it will limit the values we can achieve for kP. Thus, a grid search strategy will employ very little increase in kP. This also restricts the movement of the leftmost pole to the left. Furthermore, because our poles cannot change in the vertical direction (i.e., have oscillation and imaginary component), the kP is unable to change the damping of the perturbation (damping coefficient) much. However, moving the rightmost pole to become zero by increasing kP and moving the leftmost pole left during this process could decrease the settling time!"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d5a133f4-2053-4973-b521-73be7cf3eab1",
+ "metadata": {
+ "id": "tAZvhZBt8o6f"
+ },
+ "source": [
+ "#### I control Root Locus Analysis"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2ce86b3c-b821-4b13-b312-21d3aae71594",
+ "metadata": {
+ "id": "5620ca1b-5510-4d8c-94a1-a0b3c5c04173"
+ },
+ "source": [
+ "\\begin{eqnarray}\n",
+ "H(s)\n",
+ "& = & \\frac{k_I Z(s)}{s P(s) + k_I Z(s)} \\\\\n",
+ "\\end{eqnarray}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "12a92c28-d2b9-4f55-b485-2f12ca149e10",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "Note that we multiply our transfer function by 1/s for I control."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5537f339-5f64-4265-aab0-f65ce0090f5b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "##############################################\n",
+ "### DEFINE THE I CONTROL TRANSFER FUNCTION ###\n",
+ "##############################################\n",
+ "\n",
+ "I_CONTROL_TRANSFER_FUNCTION = ((9.51*s + 0)/(0.1723*(s**2) + 0.4053*s + 0.003403))*(1/s) #TF * (1/s)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "fa26bfee-f123-42ab-b20d-b0a691b02f4a",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "executionInfo": {
+ "elapsed": 577,
+ "status": "ok",
+ "timestamp": 1706135722055,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "05154ae4-e453-43fe-80f5-27525d296da4",
+ "outputId": "c6fd38ae-ec79-4148-b027-ca292bd967ea"
+ },
+ "outputs": [],
+ "source": [
+ "#########################################\n",
+ "### PLOT THE ROOT LOCUS FOR I CONTROL ###\n",
+ "#########################################\n",
+ "\n",
+ "_ = control.root_locus(I_CONTROL_TRANSFER_FUNCTION, xlim=[-4, 1], grid=False) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "71034a5a-0430-4e2d-8be1-0efec9d1ab99",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "executionInfo": {
+ "elapsed": 577,
+ "status": "ok",
+ "timestamp": 1706135722055,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "05154ae4-e453-43fe-80f5-27525d296da4",
+ "outputId": "c6fd38ae-ec79-4148-b027-ca292bd967ea"
+ },
+ "outputs": [],
+ "source": [
+ "#####################################################################\n",
+ "### PLOT THE ROOT LOCUS FOR I CONTROL & ZOOM IN ON THE RIGHT POLE ###\n",
+ "#####################################################################\n",
+ "\n",
+ "_ = control.root_locus(I_CONTROL_TRANSFER_FUNCTION, xlim=[-.01, 0.005], grid=False) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "359e8c60-af0e-42ec-b782-571ede8eb6f7",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "**I CONTROL ROOT LOCUS ANALYSIS**\n",
+ "\n",
+ "The above root locus plots show a couple of things. Again, we can see that our poles are intially real and negative since they are on the real numbers line in the s-plane with no imaginary component. The negative real component of our roots indicates that our system is stable because exponential functions converge with negative exponents, indicating the exponential component of the Laplace will converge. The non-imaginary (i.e. real) part of our poles indicates that there is no intial oscillation in the I control system.\n",
+ "\n",
+ "However, as kI increases we see the poles move closer toward the midpoint between them until they diverge vertically into the imaginary s-plane, making the poles become complex numbers with a negative real component. The negative real component of the complex number means that this system stays stable for increasing kI, which is ideal. However, the increase in imaginary number magnitude for the poles with increasing kI indicates that oscillations are introduced into our system since the exponential function takes the form of Euler's formula with trigonometric functions in the Laplace Transform. \n",
+ "\n",
+ "The trajectories of these poles converging to a negative real number and then diverging in the imaginary s-plane indicates that there is not one dominant pole since the system never becomes unstable (ie, tends toward a positive real number). However, one of our control objectives was to minimize any oscillations so we have much greater room to modify kI here than kP for shifting our poles but we have to be cautious of introducing too many oscillations. Because these poles do change their imaginary-component magnitude at a certain point with increasing kI, we do have a method of controlling the damping coefficient with kI to make any oscillations have less magnitude. Thus, we need to find a value of kI that minimizes oscillations but also minimizes the frequency of any present oscillations. We are not concerned with stability with I control as mentioned previously."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0e921593-6f1b-4f67-857a-89879680f457",
+ "metadata": {
+ "id": "tAZvhZBt8o6f"
+ },
+ "source": [
+ "#### Grid Search Strategy Based on P & I Control"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dccf2bac-04a3-483b-8e6f-5cf93aceff8e",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "Based on the results and analysis above, it would be wise to grid search very narrow values of kP due to that dominant pole being very close to zero, which destabilizes this system beyond zero. It would be wise to search a broader range of kI values since there is no point of instability in the I control root locus plot; we should optimize kI on finding the smallest setting time with the least introduced oscillation. At the very least, the oscillation should stay centered around the setpoint and not have values of EIP outside of our control objective limits 2.4e-7 to 4.0e-7. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dfe53c65-06d1-4e32-b221-4bb8958755ab",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "### Grid Search for PI Controller"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "abe1e28e-5687-4dae-a745-c7b3b994f397",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "#### Testbed Construction from Different Method for Easier Grid Search "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e9f71bd5-ff26-422f-85c8-06502d7c0985",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#################################################################\n",
+ "### USE CUSTOM BUILDPITESTBED FUNCTION FOR EASIER GRID SEARCH ###\n",
+ "#################################################################\n",
+ "\n",
+ "antimony = CONTROL_SBML.getAntimony()\n",
+ "PI_CONTROLLER_TESTBED = buildPITestbed(antimony, INPUT_NAME, OUTPUT_NAME, sign=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "dded1cf8-952d-48c6-91fb-fa5858850a0a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "######################################\n",
+ "### PLOT THE PI CONTROLLER TESTBED ###\n",
+ "######################################\n",
+ "\n",
+ "_ = plotModel(PI_CONTROLLER_TESTBED, title=\"PI Control of EI_P Output from Mlc Input (EI_P Concentration Scale)\",\n",
+ " selections=[\"setpoint\", \"EI_P\", \"Mlc\"],\n",
+ " setpoint=0.0000003, kP=0.0000006, kI=-.0035, ylim=[0.0000001, 0.0000005], \n",
+ " times=np.linspace(440, 1420, 10000), figsize=(4,4))\n",
+ "\n",
+ "_ = plotModel(PI_CONTROLLER_TESTBED, title=\"PI Control of EI_P Output from Mlc Input (Mlc Concentration Scale)\", \n",
+ " selections=[\"setpoint\", \"EI_P\", \"Mlc\"],\n",
+ " setpoint=0.0000003, kP=0.0000006, kI=-.0035, ylim=[0.000000001, 0.00000001], \n",
+ " times=np.linspace(440, 1420, 10000), figsize=(4,4))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4568390b-de4b-4118-9fa7-387566ca108a",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "This is redundant from part one, but I am modeling this section off of the workflow_for_closed_loop design & strategies we discussed in class. I will be optimizing the kP & kI found in the initial testbed construction. The root locus plots provide some helpful general information but I am taking those results with caution since by system identification was subpar."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d943d530-8742-4851-a3c8-b76ce4a29415",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "#### kP & kI Grid Search"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a113455c-f493-4470-b77a-07c219a64897",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "Utilizing the workflow_for_closed_loop notebook, we will first optimize via rmse of the setpoint. Achieving a low rmse with this will correlate with our design objectives of keeping the system stable, reducing oscillations, and magnitude of oscillations, keeping EIP in the desired range, and settling quickly. The code was modified slightly for a more accurate rmse calculation by its true definition. Additionally, print statements help the user see the trajectory."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "144ef9e1-a40a-4958-a417-5f31db0f0ddf",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 468
+ },
+ "executionInfo": {
+ "elapsed": 18934,
+ "status": "ok",
+ "timestamp": 1709162165282,
+ "user": {
+ "displayName": "Joseph Hellerstein",
+ "userId": "07301174361489660166"
+ },
+ "user_tz": 480
+ },
+ "id": "ea9ad50e-0d1d-494b-9a06-8feae9ef3796",
+ "outputId": "0463bbed-f2f4-4ffe-e905-3ab2a7704ff5"
+ },
+ "outputs": [],
+ "source": [
+ "####################################################################################\n",
+ "### PERFORM THE GRID SEARCH FOR kP & kI | OPTIMIZE FOR LOW RMSE TO SETPOINT ONLY ###\n",
+ "####################################################################################\n",
+ "\n",
+ "# Previous kP & kI for reference\n",
+ "kP = 0.0000006 \n",
+ "kI = -.0035\n",
+ "\n",
+ "# Initialize the search parameters\n",
+ "setpoint = 0.0000003\n",
+ "best_rmse = 1.3857e-8 # Determined after running this multiple times and changing values\n",
+ "best_ks = []\n",
+ "kPs = [0.0000002 + 0.0000001*n for n in range(20)]\n",
+ "kIs = [-.004 + .0001*n for n in range(20)]\n",
+ "\n",
+ "# Perform the grid search\n",
+ "for kI in kIs:\n",
+ " for kP in kPs:\n",
+ " try:\n",
+ " data = plotModel(PI_CONTROLLER_TESTBED, title=\"\", \n",
+ " selections=[\"setpoint\", \"EI_P\", \"Mlc\"], \n",
+ " is_plot=False, setpoint=setpoint, \n",
+ " kP=kP, kI=kI, ylim=[0.0000001, 0.0000005], \n",
+ " times=np.linspace(440, 1420, 10000))\n",
+ " except:\n",
+ " continue\n",
+ " outputs = data[OUTPUT_NAME]\n",
+ " rmse = np.sqrt(np.mean((setpoint - outputs) ** 2)) \n",
+ " if rmse < best_rmse:\n",
+ " best_rmse = rmse\n",
+ " print(\"rmse =\", best_rmse, \"kP =\", kP, \"kI =\", kI)\n",
+ " best_ks = [kP, kI]\n",
+ "\n",
+ "# Report the results\n",
+ "if len(best_ks) == 0:\n",
+ " print(\"\\n***No design found.\")\n",
+ "else:\n",
+ " kP = best_ks[0]\n",
+ " kI = best_ks[1]\n",
+ " title = \"kP={kP}, kI={kI}\".format(kP=kP, kI=kI)\n",
+ " _ = plotModel(PI_CONTROLLER_TESTBED, selections=[\"setpoint\", \"EI_P\", \"Mlc\"], \n",
+ " is_plot=True,\n",
+ " setpoint=setpoint, kP=kP, kI=kI, ylim=[0.0000001, 0.0000005],\n",
+ " times=np.linspace(440, 1420, 10000), \n",
+ " title=title+\" (EI_P Conc. Scale)\")\n",
+ " \n",
+ " _ = plotModel(PI_CONTROLLER_TESTBED, selections=[\"setpoint\", \"EI_P\", \"Mlc\"], \n",
+ " is_plot=True,\n",
+ " setpoint=setpoint, kP=kP, kI=kI, ylim=[0.000000001, 0.00000001],\n",
+ " times=np.linspace(440, 1420, 10000), \n",
+ " title=title+\" (Mlc Conc. Scale)\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a90d3976-b66e-4694-a322-c80ff0af946d",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "This PI controller is excellent! We are already achieving our design objectives. However, in the spirit of the assignment, I think that we can do better. Let us now optimize based on a weighted score split equally between minimizing rmse and minimizing the number of oscillations, two of our core design objectives. This just requires a few extra lines of code:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "076afe7e-5638-4f51-9f1f-b6794e9f7fbc",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#########################################################################################\n",
+ "### PERFORM THE GRID SEARCH FOR kP & kI | OPTIMIZE FOR LOW RMSE & NUM OF OSCILLATIONS ###\n",
+ "#########################################################################################\n",
+ "\n",
+ "# Previous kP & kI for reference\n",
+ "kP = 0.0000006 \n",
+ "kI = -.0035\n",
+ "\n",
+ "# Initialize the search parameters\n",
+ "setpoint = 0.0000003\n",
+ "best_score = float('inf') # Initialize best score to a high value for minimization\n",
+ "best_ks = []\n",
+ "kPs = [0.0000001 + 0.0000001*n for n in range(20)]\n",
+ "kIs = [-.004 + .0001*n for n in range(20)]\n",
+ "\n",
+ "# We will create a weighted scoring system that prioritizes low rmse & low number of oscillations\n",
+ "rmse_weights = 0.5\n",
+ "oscillation_weights = 0.5\n",
+ "\n",
+ "# Dummy max values for normalization\n",
+ "max_rmse = 1.3857e-8 # Based on empirical data\n",
+ "max_oscillations = 50 # Based on empirical data\n",
+ "\n",
+ "# Perform the grid search\n",
+ "for kI_candidate in kIs:\n",
+ " for kP_candidate in kPs:\n",
+ " try:\n",
+ " data = plotModel(PI_CONTROLLER_TESTBED, title=\"\", \n",
+ " selections=[\"setpoint\", \"EI_P\", \"Mlc\"], \n",
+ " is_plot=False, setpoint=setpoint, \n",
+ " kP=kP_candidate, kI=kI_candidate, ylim=[0.0000001, 0.0000005], \n",
+ " times=np.linspace(440, 1420, 10000))\n",
+ " except:\n",
+ " continue\n",
+ " outputs = data[OUTPUT_NAME]\n",
+ " rmse = np.sqrt(np.mean((setpoint - outputs) ** 2))\n",
+ "\n",
+ " # Calculate oscillations\n",
+ " output_changes = np.diff(outputs)\n",
+ " oscillations = np.sum(np.diff(np.sign(output_changes)) != 0)\n",
+ " \n",
+ " # Normalize metrics\n",
+ " normalized_rmse = rmse / max_rmse\n",
+ " normalized_oscillations = oscillations / max_oscillations\n",
+ " \n",
+ " # Compute weighted score (LOWER = BETTER)\n",
+ " score = rmse_weights * normalized_rmse + oscillation_weights * normalized_oscillations\n",
+ " \n",
+ " # Update best parameters based on score (LOWER = BETTER)\n",
+ " if score < best_score:\n",
+ " best_score = score\n",
+ " best_ks = [kP_candidate, kI_candidate]\n",
+ " print(\"New Best Found: Score =\", best_score, \"RMSE =\", rmse, \"Oscillations =\", oscillations, \"kP =\", kP_candidate, \"kI =\", kI_candidate)\n",
+ "\n",
+ "# Report the results\n",
+ "if len(best_ks) == 0:\n",
+ " print(\"\\n***No design found.\")\n",
+ "else:\n",
+ " kP, kI = best_ks\n",
+ " title = f\"kP={kP}, kI={kI}, Score={best_score}\"\n",
+ " _ = plotModel(PI_CONTROLLER_TESTBED, selections=[\"setpoint\", \"EI_P\", \"Mlc\"], \n",
+ " is_plot=True,\n",
+ " setpoint=setpoint, kP=kP, kI=kI, ylim=[0.0000001, 0.0000005],\n",
+ " times=np.linspace(440, 1420, 10000), \n",
+ " title=title+\" (EI_P Conc. Scale)\")\n",
+ " \n",
+ " _ = plotModel(PI_CONTROLLER_TESTBED, selections=[\"setpoint\", \"EI_P\", \"Mlc\"], \n",
+ " is_plot=True,\n",
+ " setpoint=setpoint, kP=kP, kI=kI, ylim=[0.000000001, 0.00000001],\n",
+ " times=np.linspace(440, 1420, 10000), \n",
+ " title=title+\" (Mlc Conc. Scale)\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4c671af3-b739-49c8-a397-76c02d1598ee",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "It worked! There is not much of a change between this PI controller and the previous one, but it was satisfying to get this code running and to watch it work. Now, let's try to get super fancy by also modifying this scoring function to account for the maximum oscillation magnitude and the maximum value away from the setpoint (which might be nearly the same). Nonetheless, it is a valuable exercise."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "45dd21e7-a72a-46de-9c7c-246b31248d7c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "####################################################################\n",
+ "### PERFORM THE GRID SEARCH FOR kP & kI | OPTIMIZE FOR LOW RMSD, ###\n",
+ "### LOW MAGNITUDE OF OSCILLATIONS, LOW NUM OF OSCILLATIONS, AND ###\n",
+ "### LOW MAXIMAL DEVIATION FROM SETPOINT ###\n",
+ "####################################################################\n",
+ "\n",
+ "# Previous kP & kI for reference\n",
+ "kP = 0.0000006 \n",
+ "kI = -.0035\n",
+ "\n",
+ "# Initialize the search parameters\n",
+ "setpoint = 0.0000003\n",
+ "best_score = float('inf') # Initialize best score to a high value for minimization\n",
+ "best_ks = []\n",
+ "kPs = [0.0000001 + 0.0000001*n for n in range(20)]\n",
+ "kIs = [-.004 + .0001*n for n in range(20)]\n",
+ "\n",
+ "# We will create a weighted scoring system that prioritizes equally\n",
+ "rmse_weight = 0.25\n",
+ "oscillation_weight = 0.25\n",
+ "magnitude_weight = 0.25\n",
+ "max_deviation_weight = 0.25\n",
+ "\n",
+ "# Dummy max values for normalization \n",
+ "max_rmse = 1.3857e-8 # Based on empirical data \n",
+ "max_oscillations = 25 # Based on empirical data\n",
+ "max_magnitude = 5.0e-8 # Based on empirical data\n",
+ "max_deviation = 8.0e-8 # Based on empirical data \n",
+ "\n",
+ "# Perform the grid search\n",
+ "for kI_candidate in kIs:\n",
+ " for kP_candidate in kPs:\n",
+ " try:\n",
+ " data = plotModel(PI_CONTROLLER_TESTBED, title=\"\", selections=[\"setpoint\", \"EI_P\", \"Mlc\"], \n",
+ " is_plot=False, setpoint=setpoint, kP=kP_candidate, kI=kI_candidate, ylim=[0.0000001, 0.0000005], \n",
+ " times=np.linspace(440, 1420, 10000))\n",
+ " except:\n",
+ " continue\n",
+ " outputs = data[OUTPUT_NAME]\n",
+ " rmse = np.sqrt(np.mean((setpoint - outputs) ** 2))\n",
+ "\n",
+ " # Calculate oscillations and their magnitude\n",
+ " output_changes = np.diff(outputs)\n",
+ " sign_changes_indices = np.where(np.diff(np.sign(output_changes)))[0]\n",
+ " oscillations = len(sign_changes_indices)\n",
+ " magnitude_of_oscillations = np.mean(np.abs(np.diff(outputs[sign_changes_indices])))\n",
+ "\n",
+ " # Calculate maximum deviation from setpoint\n",
+ " max_deviation = np.max(np.abs(outputs - setpoint))\n",
+ "\n",
+ " # Normalize metrics\n",
+ " normalized_rmse = rmse / max_rmse\n",
+ " normalized_oscillations = oscillations / max_oscillations\n",
+ " normalized_magnitude = magnitude_of_oscillations / max_magnitude\n",
+ " normalized_deviation = max_deviation / max_deviation\n",
+ "\n",
+ " # Compute weighted score (LOWER = BETTER)\n",
+ " score = (rmse_weight * normalized_rmse +\n",
+ " oscillation_weight * normalized_oscillations +\n",
+ " magnitude_weight * normalized_magnitude +\n",
+ " max_deviation_weight * normalized_deviation\n",
+ " )\n",
+ " \n",
+ " # Update best parameters based on score (LOWER = BETTER)\n",
+ " if score < best_score:\n",
+ " best_score = score\n",
+ " best_ks = [kP_candidate, kI_candidate]\n",
+ " print(\"New Best Found: Score =\", best_score, \n",
+ " \"RMSE =\", rmse, \n",
+ " \"Oscillations =\", oscillations, \n",
+ " \"Magnitude =\", magnitude_of_oscillations, \n",
+ " \"Max Deviation =\", max_deviation, \n",
+ " \"kP =\", kP_candidate, \"kI =\", kI_candidate)\n",
+ "\n",
+ "# Report the results\n",
+ "if len(best_ks) == 0:\n",
+ " print(\"\\n***No design found.\")\n",
+ "else:\n",
+ " kP, kI = best_ks\n",
+ " title = f\"kP={kP}, kI={kI}, Score={best_score}\"\n",
+ " _ = plotModel(PI_CONTROLLER_TESTBED, selections=[\"setpoint\", \"EI_P\", \"Mlc\"], \n",
+ " is_plot=True,\n",
+ " setpoint=setpoint, kP=kP, kI=kI, ylim=[0.0000001, 0.0000005],\n",
+ " times=np.linspace(440, 1420, 10000), \n",
+ " title=title+\" (EI_P Conc. Scale)\")\n",
+ " \n",
+ " _ = plotModel(PI_CONTROLLER_TESTBED, selections=[\"setpoint\", \"EI_P\", \"Mlc\"], \n",
+ " is_plot=True,\n",
+ " setpoint=setpoint, kP=kP, kI=kI, ylim=[0.000000001, 0.00000001],\n",
+ " times=np.linspace(440, 1420, 10000), \n",
+ " title=title+\" (Mlc Conc. Scale)\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "000ea106-5b30-4548-866f-c4c68b63fc32",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "Success! Again, this output does not differ much from the previous two because my initial input was already so close to the PI controller that I was looking for, I did not need to search much space and thus it does not look drastically different.\n",
+ "\n",
+ "**EVALUATION OF CANDIDATE DESIGNS:**\n",
+ "\n",
+ "Ultimately, the candidate designs were a massive success based on our control objectives. To review our priority control objectives were:\n",
+ "\n",
+ "* Keep the ``EI_P`` concentration in the range above 2.4e-7M at all costs but ideally [2.4e-7 M, 4.0e-7 M] for at least 720 minutes (12 hours).\n",
+ "* Minimize any potential concentration oscillations and keep the oscillations within the concentration range above.\n",
+ "* Converge to a stable, steady-state system after the glucose decreases at t = 500 minutes within 120 minutes (t = 620 minutes).\n",
+ "\n",
+ "We were very successful in the first and most important control objective with our PI controller design as the EIP output set to 3.0e-7 M kept the EIP levels between 2.4e-7M and 4.0e-7M for the entire time even, including through the perturbation (glucose decrease at t = 500 min) and after. This was by far the most important control objective because it shows that this PI controller for our E. coli can ensure they are intaking as much glucose as possible even after the bioreactor stops providing fresh glucose and the concentration in their environment spikes down. Additionally, we did a successful job of minimizing the number of oscillations and the magnitude of oscillations in the 2nd and 3rd iterations of the PI controller. Surprisingly, this meant keeping kI the same but increasing kP very subtly which probably had more of an effect of decreasing the oscillation magnitudes and therefore what my logic would also consider an oscillation. This means that hopefully, our E. coli would stay at a relatively stable equilibrium even during the glucose decrease, which would allow them to maintain their anabolic processes to express the desired plasmid product. As a final bonus, we can see that all of our designs are down to very small oscillations roughly around t = 620, about 120 minutes after the large glucose perturbation. It would have been ideal to be fully converged/stable by this time, but this is an extremely difficult task given the magnitude of the perturbation and the complex system we are dealing with. I am highly satisfied with how this PI controller performed overall.\n",
+ "\n",
+ "We defined our operating region for the Mlc protein input to be 7.6e-9M to 8.4e-9M on the resolved time scale past t = 700 minutes. In these plotted PI control designs, we are about 1-1.5e-9M below this operating region. This means our step response in the PI control designs is not within the operating region, which is not ideal, but we are still quite close to it and well within a magnitude. Staying in the operating region in this biological instance is not as important as achieving the control objectives, especially with a relatively small margin of error.\n",
+ "\n",
+ "In conclusion, we achieved our main control objectives with remarkable success using a PI controller that was further optimized with a grid search for kI and kP. Our Mlc antagonist input was slightly below the operating region, but the EI_P output still achieved a successful step response to the setpoint which is what is most important here."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "592a56a9-f7ac-49f7-bb38-eababc30fba9",
+ "metadata": {
+ "id": "r3YyEFTekSYq"
+ },
+ "source": [
+ "### Discussion"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e4e01495-d8bd-4688-9463-8361aca29dbc",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "One of the most initially confusing parts of control design to me was interpreting the root locus plots and trying to figure out why they were important/what information I could gather from them. I found it very helpful to rewatch some lectures/go through old notebooks that we did in the class, especially the root locus notebook. Additionally, I found it valuable to watch YouTube summaries about the root locus plots. In particular, this was an AMAZING video: https://www.youtube.com/watch?v=CRvVDoQJjYI\n",
+ "\n",
+ "I found that the root locus plots contain a lot of extremely valuable information besides just stating if a system was stable and/or oscillating. Listening to the advice in the video about damping coefficients, settling times, and natural frequency was interesting and made me appreciate the power of a root locus plot.\n",
+ "\n",
+ "An additional trouble that I had with control design was how to quantify the settling time. This is something that I could approximate by eye, but I could not figure out how to execute this in code. Perhaps it could be when the data is +/- 5% of the setpoing, but for how long? One oscillation? However, for everything else I found the workflow for closed loop design notebook to have an extremely logical and elegant grid searching algorithm/design pipeline that I decided to employ. It was very easy to manipulate its logic to add my score function, and it is a general method that I could keep adding more metrics for scoring. \n",
+ "\n",
+ "The notebooks in this class were very helpful for navigating this project in general, the analysis of mTor was a huge influence for me, and likewise so was the workflow for closed-loop design (+ everything else we did in class)! One thing in the future that would be excellent would be to have a compilation of all the functions, their inputs, and their outputs. I always would forget what inputs were possible for some of these functions, especially ones we do not see often so maybe we would only see the inputs once. It would be nice to know what the kwargs were and such so that I could manipulate my plots more and be better with how I use the data! Overall though, the notebooks were incredibly helpful.\n",
+ "\n",
+ "Regarding this whole design pipeline, I think the most difficult step for me was the system identification because I couldn't find a directionally functional one. Thank you for being flexible with the final project and adapting it to accommodate it not being able to find an adequate transfer function for negative control. It was a really helpful and fun exercise for me to look through the ControlSBML github to find out a little bit more about how the fitting works and what the convergence logic looks like! This is where it would be slightly more helpful in the future to have some list of all the functions and their possible inputs because I would have loved to try messing around with more inputs to find out if I could change something that would have made it work better!\n",
+ "\n",
+ "One of the biggest challenges in this project was finding a biomodel that was interesting/relevant to me but also had interesting behavior. This took a surprisingly long amount of time to find and many had poor variable names, strange behaviors, and other irregular features. In retrospect, I wish that I had picked a system that was a little simpler than this one because I could barely even make sense of the antimony here containing compartments and many other complex features that made it hard to physically understand what was being done to the system. However, I am glad that I stuck with it and ultimately I believe that I show a similar result to what was published: removing/minimizing Mlc protein (which was done by removing its gene) does result in more glucose intake! It is pretty satisfying to arrive at that conclusion and this has given me a brand new perspective and respect for systems biology, control engineering, and biomodeling. This is a powerful tool that makes me appreciate that adding or subtracting one thing from a system doesn't just change it proportionally, it perturbs a very complex equilibrium in ways that are hard to rationally predict sometimes because of the interconnectedness, interdependency, and redundancy in biology.\n",
+ "\n",
+ "**In conclusion,** this was an eye-opening and very interesting class that is unlike anything I've taken before. I sincerely apologize for not being able to attend class in-person during some of the final weeks and for getting HW2 in late; I have had a lot of family issues happening this quarter and I had to fly home for the weekend HW2 was due when I missed your email. It's just been a stressful quarter with 4 classes and starting/trying to perform well in my new lab. I found this class to be very valuable and it has motivated me to take some classes in systems biology and more classes in biomodeling/biostatistics/computational biology. I hope there comes a time when I can apply this to my own research during graduate school, especially now that I've got a great pipeline to design & test simple controls. Thank you so much, Professor Hellerstein, I hope to see you around. Best of luck with your research & other classes!"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "bf9d5e39-4e93-4cfb-ba13-476d0d084b35",
+ "metadata": {
+ "id": "3001497a-1a07-47c5-9a0a-c6ad0da88035"
+ },
+ "source": [
+ "P.S. I restarted my kernel on JupyterHub & ran all cells and verified that each one worked before submission per your advice from HW1. Please let me know if there is anything that doesn't work for you."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "4761b897-f221-44b2-8dc4-c25a566e0506",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.9.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/src/controlSBML/control_sbml.py b/src/controlSBML/control_sbml.py
index 49e0c16..6b0fe30 100644
--- a/src/controlSBML/control_sbml.py
+++ b/src/controlSBML/control_sbml.py
@@ -452,12 +452,12 @@ def plotModel(self,
ModelResult
timeseries: Timeseries
"""
- self._checkKwargs(**kwargs)
+ self._checkKwargs(valids=PLOT_KEYS, **kwargs)
dct = self.getOptions(times=times, selections=selections, **kwargs)
plot_dct = util.subsetDct(dct, PLOT_KEYS)
times = dct[cn.O_TIMES]
#
- self._roadrunner.reset()
+ self._roadrunner.resetAll()
self._roadrunner.resetSelectionLists()
if selections is not None:
selections.extend([cn.TIME]) # type: ignore
@@ -490,7 +490,7 @@ def plotStaircaseResponse(self,
timeseries: Timeseries
antimony_builder: AntimonyBuilder
"""
- self._checkKwargs(**kwargs, valids=PLOT_KEYS)
+ self._checkKwargs(valids=PLOT_KEYS, **kwargs)
dct = self.getOptions(initial_value=initial_value, final_value=final_value,
num_step=num_step, times=times, **kwargs)
times = dct[cn.O_TIMES]
@@ -540,28 +540,39 @@ def plotTransferFunctionFit(self,
# Check the options
self._checkKwargs(valids=PLOT_KEYS, **kwargs)
# Setup values
- times = self.times if times is None else times
- fitter_method = self.fitter_method if fitter_method is None else fitter_method
+ dct = self.getOptions(
+ num_zero=num_zero,
+ num_pole=num_pole,
+ fit_start_time=fit_start_time,
+ fit_end_time=fit_end_time,
+ initial_value=initial_value,
+ final_value=final_value,
+ num_step=num_step,
+ fitter_method=fitter_method,
+ times=times,
+ **kwargs)
+ plot_dct = util.subsetDct(dct, PLOT_KEYS)
+ times = dct[cn.O_TIMES]
+ fitter_method = dct[cn.O_FITTER_METHOD]
#
if (self.input_name is None) or (self.output_name is None):
raise ValueError("Must specify the input and output species to use this method.")
if fit_start_time is None:
- fit_start_time = times[0]
+ fit_start_time = times[0] # type: ignore
if fit_end_time is None:
- fit_end_time = times[-1]
+ fit_end_time = times[-1] # type: ignore
# Construct the staircase
- initial_value, final_value, num_step = self._initializeStaircaseOptions(initial_value=initial_value,
- final_value=final_value,
- num_step=num_step)
staircase = self._getStaircase(initial_value=initial_value, final_value=final_value, num_step=num_step)
- new_kwargs = dict(kwargs)
# Do the fit
- new_kwargs.update({cn.FITTER_METHOD: fitter_method,
- cn.O_TIMES: times,})
- self._fitter_result = self._transfer_function_builder.plotTransferFunctionFit(num_zero=num_zero,
- num_pole=num_pole, staircase=staircase,
- fit_start_time=fit_start_time, fit_end_time=fit_end_time,
- **new_kwargs)
+ self._fitter_result = self._transfer_function_builder.plotTransferFunctionFit(
+ num_zero=num_zero,
+ num_pole=num_pole,
+ staircase=staircase,
+ fit_start_time=fit_start_time,
+ fit_end_time=fit_end_time,
+ fitter_method=fitter_method,
+ times=times,
+ **plot_dct)
return TransferFunctionFitResult(
timeseries=self._fitter_result.time_series,
antimony_builder=self._fitter_result.antimony_builder,
@@ -745,23 +756,26 @@ def setValue(val):
return 0.0
#
self._checkKwargs(PLOT_KEYS, **kwargs)
- option_dct = self.getOptions(kP_spec=kP_spec, kI_spec=kI_spec, kF_spec=kF_spec,
- setpoint=setpoint, sign=sign,
+ option_dct = self.getOptions(kP_spec=kP_spec,
+ kI_spec=kI_spec,
+ kF_spec=kF_spec,
+ setpoint=setpoint,
+ sign=sign,
is_report=is_report,
num_process=num_process,
- times=times,
selections=selections,
+ times=times,
**kwargs)
- times = option_dct[cn.O_TIMES]
- setpoint = option_dct[cn.O_SETPOINT]
- sign = option_dct[cn.O_SIGN]
- is_greedy = option_dct[cn.O_IS_GREEDY]
- sign=option_dct[cn.O_SIGN]
kP_spec = option_dct[cn.O_KP_SPEC]
kI_spec = option_dct[cn.O_KI_SPEC]
kF_spec = option_dct[cn.O_KF_SPEC]
+ setpoint = option_dct[cn.O_SETPOINT]
+ sign = option_dct[cn.O_SIGN]
num_process = option_dct[cn.O_NUM_PROCESS]
selections = option_dct[cn.O_SELECTIONS]
+ times = option_dct[cn.O_TIMES]
+ #
+ is_greedy = option_dct[cn.O_IS_GREEDY]
plot_dct = util.subsetDct(option_dct, PLOT_KEYS)
#
designer = SISOClosedLoopDesigner(self._sbml_system, self.getOpenLoopTransferFunction(),
@@ -773,7 +787,7 @@ def setValue(val):
output_name=self.output_name,
save_path=self.save_path)
designs = designer.design(kP_spec=kP_spec, kI_spec=kI_spec, kF_spec=kF_spec,
- num_restart=num_restart, min_value=min_parameter_value, max_value=max_parameter_value,
+ num_restart=num_restart, min_value=min_parameter_value, max_value=max_parameter_value,
num_coordinate=num_coordinate, is_greedy=is_greedy, is_report=is_report, num_process=num_process)
if designer.residual_mse is None:
msgs.warn("No design found!")
diff --git a/src/controlSBML/sbml_system.py b/src/controlSBML/sbml_system.py
index b6bbf4d..4fbfafe 100644
--- a/src/controlSBML/sbml_system.py
+++ b/src/controlSBML/sbml_system.py
@@ -365,6 +365,7 @@ def _simulate(self, start_time:float, end_time:float, num_point:int,
data = self.roadrunner.simulate(float(start_time), float(end_time), num_point, selections=selections)
ts = Timeseries(data)
except Exception as exp:
+ print(exp)
ts = None
return ts
diff --git a/src/controlSBML/siso_transfer_function_builder.py b/src/controlSBML/siso_transfer_function_builder.py
index 4dda277..727fe47 100644
--- a/src/controlSBML/siso_transfer_function_builder.py
+++ b/src/controlSBML/siso_transfer_function_builder.py
@@ -102,6 +102,8 @@ def makeStaircaseResponse(self, staircase=Staircase(), mgr=None, times=None,
initial_value=staircase.initial_value, num_step=staircase.num_step,
final_value=staircase.final_value, is_steady_state=is_steady_state,
inplace=False)
+ if result_ts is None:
+ raise ValueError("Unable to simulate staircase response")
staircase.setNumPoint(len(result_ts))
staircase_name = "%s_%s" % (self.input_name, STAIRCASE)
staircase_arr= staircase.staircase_arr