{ "cells": [ { "cell_type": "markdown", "id": "aed30502", "metadata": {}, "source": [ "Create repressilator with antimony.\n", "\n", "http://antimony.sourceforge.net/\n", "https://tellurium.readthedocs.io/en/latest/antimony.html" ] }, { "cell_type": "code", "execution_count": 1, "id": "7efbe4ba", "metadata": { "execution": { "iopub.execute_input": "2023-04-17T14:01:56.305452Z", "iopub.status.busy": "2023-04-17T14:01:56.305173Z", "iopub.status.idle": "2023-04-17T14:01:56.510355Z", "shell.execute_reply": "2023-04-17T14:01:56.510876Z" } }, "outputs": [], "source": [ "import os\n", "from pathlib import Path\n", "\n", "import antimony\n", "import libsbml\n", "\n", "from combine_notebooks.validation.validation_sbml import validate_sbml" ] }, { "cell_type": "code", "execution_count": 2, "id": "d37f6e44", "metadata": { "execution": { "iopub.execute_input": "2023-04-17T14:01:56.513225Z", "iopub.status.busy": "2023-04-17T14:01:56.512514Z", "iopub.status.idle": "2023-04-17T14:01:56.521231Z", "shell.execute_reply": "2023-04-17T14:01:56.521450Z" } }, "outputs": [], "source": [ "def create_repressilator(sbml_path: Path) -> libsbml.SBMLDocument:\n", " \"\"\"Create repressilator with antimony.\"\"\"\n", " model: str = \"\"\"\n", " model antimony_repressilator\n", " # compartment\n", " compartment cell = 1\n", " # species\n", " species PX = 0\n", " species PY = 0\n", " species PZ = 0\n", " species X = 0\n", " species Y = 20\n", " species Z = 0\n", " # parameters\n", " beta = 0.2\n", " alpha0 = 0.2164\n", " alpha = 216.404\n", " eff = 20\n", " n = 2\n", " KM = 40\n", " tau_mRNA = 2\n", " tau_prot = 10\n", " ps_a = 0.5\n", " ps_0 = 0.0005\n", " # assignment rules\n", " t_ave := tau_mRNA/ln(2);\n", " beta := tau_mRNA/tau_prot;\n", " k_tl := eff/t_ave;\n", " a_tr := (ps_a - ps_0)*60;\n", " a0_tr := ps_0*60;\n", " kd_prot := ln(2)/tau_prot;\n", " kd_mRNA := ln(2)/tau_mRNA;\n", " alpha := a_tr*eff*tau_prot/(ln(2)*KM);\n", " alpha0 := (a0_tr*eff*tau_prot)/(ln(2)*KM);\n", "\n", " # reactions\n", " X ->; kd_mRNA*X;\n", " Y ->; kd_mRNA*Y;\n", " Z ->; kd_mRNA*Z;\n", " -> PX; k_tl*X;\n", " -> PY; k_tl*Y;\n", " -> PZ; k_tl*Z;\n", " PX ->; kd_prot*PX;\n", " PY ->; kd_prot*PY;\n", " PZ ->; kd_prot*PZ;\n", " -> X; a0_tr +a_tr *KM^n/(KM^n +PZ ^n);\n", " -> Y; a0_tr +a_tr *KM^n/(KM^n +PX ^n);\n", " -> Z; a0_tr +a_tr *KM^n/(KM^n +PY ^n);\n", "\n", " # annotations\n", " cell identity \"http://identifiers.org/SBO:0000290\"\n", " cell identity \"http://identifiers.org/GO:0005623\"\n", " PX identity \"http://identifiers.org/SBO:0000252\"\n", " PX identity \"http://identifiers.org/uniprot/P03023\"\n", " PY identity \"http://identifiers.org/SBO:0000252\"\n", " PY identity \"http://identifiers.org/uniprot/P04483\"\n", " PZ identity \"http://identifiers.org/SBO:0000252\"\n", " PZ identity \"http://identifiers.org/uniprot/P03034\"\n", " X identity \"http://identifiers.org/SBO:0000250\"\n", " X identity \"http://identifiers.org/CHEBI:33699\"\n", " X identity \"http://identifiers.org/kegg.compound/C00046\"\n", " X identity \"http://identifiers.org/uniprot/P03023\"\n", " Y identity \"http://identifiers.org/SBO:0000250\"\n", " Y identity \"http://identifiers.org/CHEBI:33699\"\n", " Y identity \"http://identifiers.org/kegg.compound/C00046\"\n", " Y identity \"http://identifiers.org/uniprot/P04483\"\n", " Z identity \"http://identifiers.org/SBO:0000250\"\n", " Z identity \"http://identifiers.org/CHEBI:33699\"\n", " Z identity \"http://identifiers.org/kegg.compound/C00046\"\n", " Z identity \"http://identifiers.org/uniprot/P03034\"\n", " tau_mRNA identity \"http://identifiers.org/SBO:0000356\"\n", " k_tl identity \"http://identifiers.org/SBO:0000016\"\n", " t_ave identity \"http://identifiers.org/SBO:0000348\"\n", " kd_prot identity \"http://identifiers.org/SBO:0000356\"\n", " a0_tr identity \"http://identifiers.org/SBO:0000485\"\n", " a_tr identity \"http://identifiers.org/SBO:0000186\"\n", " _J0 identity \"http://identifiers.org/SBO:0000179\"\n", " _J0 identity \"http://identifiers.org/GO:0006402\"\n", " _J1 identity \"http://identifiers.org/SBO:0000179\"\n", " _J1 identity \"http://identifiers.org/GO:0006402\"\n", " _J2 identity \"http://identifiers.org/SBO:0000179\"\n", " _J2 identity \"http://identifiers.org/GO:0006402\"\n", " _J3 identity \"http://identifiers.org/SBO:0000184\"\n", " _J3 identity \"http://identifiers.org/GO:0006412\"\n", " _J4 identity \"http://identifiers.org/SBO:0000184\"\n", " _J4 identity \"http://identifiers.org/GO:0006412\"\n", " _J5 identity \"http://identifiers.org/SBO:0000184\"\n", " _J5 identity \"http://identifiers.org/GO:0006412\"\n", " _J6 identity \"http://identifiers.org/SBO:0000179\"\n", " _J6 identity \"http://identifiers.org/GO:0030163\"\n", " _J7 identity \"http://identifiers.org/SBO:0000179\"\n", " _J7 identity \"http://identifiers.org/GO:0030163\"\n", " _J8 identity \"http://identifiers.org/SBO:0000179\"\n", " _J8 identity \"http://identifiers.org/GO:0030163\"\n", " _J9 identity \"http://identifiers.org/SBO:0000183\"\n", " _J9 identity \"http://identifiers.org/GO:0006351\"\n", " _J10 identity \"http://identifiers.org/SBO:0000183\"\n", " _J10 identity \"http://identifiers.org/GO:0006351\"\n", " _J11 identity \"http://identifiers.org/SBO:0000184\"\n", " _J11 identity \"http://identifiers.org/GO:0006351\"\n", "\n", " end\n", " \"\"\"\n", " print(model)\n", "\n", " status = antimony.loadAntimonyString(model)\n", " print(f\"Antimony status: {status}\")\n", " print(antimony.getLastError())\n", " sbml_str = antimony.getSBMLString()\n", " print(sbml_str)\n", " print(antimony.getSBMLWarnings())\n", "\n", " # validation\n", " doc = libsbml.readSBMLFromString(sbml_str)\n", " validate_sbml(doc)\n", "\n", " # write SBML\n", " os.makedirs(os.path.dirname(str(sbml_path)), exist_ok=True)\n", " libsbml.writeSBMLToFile(doc, str(sbml_path))\n", "\n", " return doc" ] }, { "cell_type": "code", "execution_count": 3, "id": "186bfc11", "metadata": { "execution": { "iopub.execute_input": "2023-04-17T14:01:56.524852Z", "iopub.status.busy": "2023-04-17T14:01:56.524551Z", "iopub.status.idle": "2023-04-17T14:01:56.587221Z", "shell.execute_reply": "2023-04-17T14:01:56.587742Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " model antimony_repressilator\n", " # compartment\n", " compartment cell = 1\n", " # species\n", " species PX = 0\n", " species PY = 0\n", " species PZ = 0\n", " species X = 0\n", " species Y = 20\n", " species Z = 0\n", " # parameters\n", " beta = 0.2\n", " alpha0 = 0.2164\n", " alpha = 216.404\n", " eff = 20\n", " n = 2\n", " KM = 40\n", " tau_mRNA = 2\n", " tau_prot = 10\n", " ps_a = 0.5\n", " ps_0 = 0.0005\n", " # assignment rules\n", " t_ave := tau_mRNA/ln(2);\n", " beta := tau_mRNA/tau_prot;\n", " k_tl := eff/t_ave;\n", " a_tr := (ps_a - ps_0)*60;\n", " a0_tr := ps_0*60;\n", " kd_prot := ln(2)/tau_prot;\n", " kd_mRNA := ln(2)/tau_mRNA;\n", " alpha := a_tr*eff*tau_prot/(ln(2)*KM);\n", " alpha0 := (a0_tr*eff*tau_prot)/(ln(2)*KM);\n", "\n", " # reactions\n", " X ->; kd_mRNA*X;\n", " Y ->; kd_mRNA*Y;\n", " Z ->; kd_mRNA*Z;\n", " -> PX; k_tl*X;\n", " -> PY; k_tl*Y;\n", " -> PZ; k_tl*Z;\n", " PX ->; kd_prot*PX;\n", " PY ->; kd_prot*PY;\n", " PZ ->; kd_prot*PZ;\n", " -> X; a0_tr +a_tr *KM^n/(KM^n +PZ ^n);\n", " -> Y; a0_tr +a_tr *KM^n/(KM^n +PX ^n);\n", " -> Z; a0_tr +a_tr *KM^n/(KM^n +PY ^n);\n", "\n", " # annotations\n", " cell identity \"http://identifiers.org/SBO:0000290\"\n", " cell identity \"http://identifiers.org/GO:0005623\"\n", " PX identity \"http://identifiers.org/SBO:0000252\"\n", " PX identity \"http://identifiers.org/uniprot/P03023\"\n", " PY identity \"http://identifiers.org/SBO:0000252\"\n", " PY identity \"http://identifiers.org/uniprot/P04483\"\n", " PZ identity \"http://identifiers.org/SBO:0000252\"\n", " PZ identity \"http://identifiers.org/uniprot/P03034\"\n", " X identity \"http://identifiers.org/SBO:0000250\"\n", " X identity \"http://identifiers.org/CHEBI:33699\"\n", " X identity \"http://identifiers.org/kegg.compound/C00046\"\n", " X identity \"http://identifiers.org/uniprot/P03023\"\n", " Y identity \"http://identifiers.org/SBO:0000250\"\n", " Y identity \"http://identifiers.org/CHEBI:33699\"\n", " Y identity \"http://identifiers.org/kegg.compound/C00046\"\n", " Y identity \"http://identifiers.org/uniprot/P04483\"\n", " Z identity \"http://identifiers.org/SBO:0000250\"\n", " Z identity \"http://identifiers.org/CHEBI:33699\"\n", " Z identity \"http://identifiers.org/kegg.compound/C00046\"\n", " Z identity \"http://identifiers.org/uniprot/P03034\"\n", " tau_mRNA identity \"http://identifiers.org/SBO:0000356\"\n", " k_tl identity \"http://identifiers.org/SBO:0000016\"\n", " t_ave identity \"http://identifiers.org/SBO:0000348\"\n", " kd_prot identity \"http://identifiers.org/SBO:0000356\"\n", " a0_tr identity \"http://identifiers.org/SBO:0000485\"\n", " a_tr identity \"http://identifiers.org/SBO:0000186\"\n", " _J0 identity \"http://identifiers.org/SBO:0000179\"\n", " _J0 identity \"http://identifiers.org/GO:0006402\"\n", " _J1 identity \"http://identifiers.org/SBO:0000179\"\n", " _J1 identity \"http://identifiers.org/GO:0006402\"\n", " _J2 identity \"http://identifiers.org/SBO:0000179\"\n", " _J2 identity \"http://identifiers.org/GO:0006402\"\n", " _J3 identity \"http://identifiers.org/SBO:0000184\"\n", " _J3 identity \"http://identifiers.org/GO:0006412\"\n", " _J4 identity \"http://identifiers.org/SBO:0000184\"\n", " _J4 identity \"http://identifiers.org/GO:0006412\"\n", " _J5 identity \"http://identifiers.org/SBO:0000184\"\n", " _J5 identity \"http://identifiers.org/GO:0006412\"\n", " _J6 identity \"http://identifiers.org/SBO:0000179\"\n", " _J6 identity \"http://identifiers.org/GO:0030163\"\n", " _J7 identity \"http://identifiers.org/SBO:0000179\"\n", " _J7 identity \"http://identifiers.org/GO:0030163\"\n", " _J8 identity \"http://identifiers.org/SBO:0000179\"\n", " _J8 identity \"http://identifiers.org/GO:0030163\"\n", " _J9 identity \"http://identifiers.org/SBO:0000183\"\n", " _J9 identity \"http://identifiers.org/GO:0006351\"\n", " _J10 identity \"http://identifiers.org/SBO:0000183\"\n", " _J10 identity \"http://identifiers.org/GO:0006351\"\n", " _J11 identity \"http://identifiers.org/SBO:0000184\"\n", " _J11 identity \"http://identifiers.org/GO:0006351\"\n", "\n", " end\n", " \n", "Antimony status: 1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " tau_mRNA \n", " tau_prot \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " a0_tr \n", " eff \n", " tau_prot \n", " \n", " \n", " \n", " \n", " \n", " 2 \n", " \n", " KM \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " a_tr \n", " eff \n", " tau_prot \n", " \n", " \n", " \n", " \n", " \n", " 2 \n", " \n", " KM \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " tau_mRNA \n", " \n", " \n", " 2 \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " eff \n", " t_ave \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " ps_a \n", " ps_0 \n", " \n", " 60 \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " ps_0 \n", " 60 \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 2 \n", " \n", " tau_prot \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 2 \n", " \n", " tau_mRNA \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " kd_mRNA \n", " X \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " kd_mRNA \n", " Y \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " kd_mRNA \n", " Z \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " k_tl \n", " X \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " k_tl \n", " Y \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " k_tl \n", " Z \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " kd_prot \n", " PX \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " kd_prot \n", " PY \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " kd_prot \n", " PZ \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " a0_tr \n", " \n", " \n", " \n", " \n", " a_tr \n", " \n", " \n", " KM \n", " n \n", " \n", " \n", " \n", " \n", " \n", " \n", " KM \n", " n \n", " \n", " \n", " \n", " PZ \n", " n \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " a0_tr \n", " \n", " \n", " \n", " \n", " a_tr \n", " \n", " \n", " KM \n", " n \n", " \n", " \n", " \n", " \n", " \n", " \n", " KM \n", " n \n", " \n", " \n", " \n", " PX \n", " n \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " a0_tr \n", " \n", " \n", " \n", " \n", " a_tr \n", " \n", " \n", " KM \n", " n \n", " \n", " \n", " \n", " \n", " \n", " \n", " KM \n", " n \n", " \n", " \n", " \n", " PY \n", " n \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "--------------------------------------------------------------------------------\n", "validation error(s) : 0\n", "validation warning(s) : 0\n", "--------------------------------------------------------------------------------\n" ] } ], "source": [ "if __name__ == \"__main__\":\n", " from combine_notebooks import RESULTS_DIR\n", "\n", " create_repressilator(sbml_path=RESULTS_DIR / \"repressilator_sbml_antimony.xml\")" ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "-all", "main_language": "python", "notebook_metadata_filter": "-all" }, "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.10.6" } }, "nbformat": 4, "nbformat_minor": 5 }