{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "***Note: The example is discussed in detail by (Gawthrop and Pan, 2020) available [here](https://arxiv.org/abs/2009.02217) and should be read in conjunction.***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***Note: this is the Redox.ipynb notebook. The\n", "PDF version \"Redox Reactions and Proton Pumps\"\n", "is available [here](Redox.pdf).***\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction\n", "Redox reactions and proton pumps play a fundamental role in Biology. This note illustrates this using a bond graph model of complex I of the mitochondrial electron transport chain.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "In /home/peterg/.local/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The text.latex.unicode rcparam was deprecated in Matplotlib 3.0 and will be removed in 3.2.\n", "In /home/peterg/.local/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The savefig.frameon rcparam was deprecated in Matplotlib 3.1 and will be removed in 3.3.\n", "In /home/peterg/.local/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The pgf.debug rcparam was deprecated in Matplotlib 3.0 and will be removed in 3.2.\n", "In /home/peterg/.local/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The verbose.level rcparam was deprecated in Matplotlib 3.1 and will be removed in 3.3.\n", "In /home/peterg/.local/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The verbose.fileo rcparam was deprecated in Matplotlib 3.1 and will be removed in 3.3.\n" ] } ], "source": [ "## Some useful imports\n", "import BondGraphTools as bgt\n", "import numpy as np\n", "import sympy as sp\n", "import matplotlib.pyplot as plt\n", "\n", "## Stoichiometric analysis\n", "import stoich as st\n", "\n", "## SVG\n", "import svgBondGraph as sbg\n", "\n", "## Display (eg disp.SVG(), disp.\n", "import IPython.display as disp\n", "\n", "## Potential data\n", "import phiData\n", "\n", "quiet = True\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Redox reaction\n", "A key energy-generating redox reaction that within the mitochondrial respiratory chain is\n", "\\begin{equation}\\label{eq:NAD}\n", "\\ch{NADH + Q + H+ <>[ r ] NAD+ + QH2 }\n", "\\end{equation}\n", "This reaction can be divided into the half reactions:\n", "\\begin{align}\n", "\\ch{NADH &<>[ r1 ] 2 e1- + H+ + NAD+ }\\label{eq:NAD_1}\\\\\n", "\\ch{2 e2- + 2 H+ + Q &<>[ r2 ] QH2}\\label{eq:NAD_2}\n", "\\end{align}\n", "A bond graph representation of this decomposition is given below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bond graph\n", "C:E1 and C:E2 represent the electron potentials and the other The C components represent the species; the two Re components the two half reactions. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Re:r1\n", "\n", "1\n", "\n", "1\n", "\n", "0\n", "\n", "0\n", "\n", "C:H\n", "\n", "0\n", "\n", "1\n", "\n", "Re:r2\n", "\n", "1\n", "\n", "0\n", "\n", "C:NADH\n", "\n", "C:NAD\n", "\n", "C:E1\n", "\n", "C:E2\n", "\n", "C:Q\n", "\n", "C:QH2\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Redox reaction\n", "sbg.model('Redox_abg.svg')\n", "import Redox_abg\n", "disp.SVG('Redox_abg.svg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stoichiometry" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "## Stoichiometry\n", "linear = ['E1','E2']\n", "s = st.stoich(Redox_abg.model(),linear=linear,quiet=quiet)\n", "chemostats = ['NADH','NAD','Q','QH2','H']\n", "sc = st.statify(s,chemostats=chemostats)\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "N &=\n", "\\left(\\begin{matrix}2 & 0\\\\0 & -2\\\\1 & -2\\\\1 & 0\\\\-1 & 0\\\\0 & -1\\\\0 & 1\\end{matrix}\\right)\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Stoichiometric matrix\n", "disp.Latex(st.sprintl(s,'N'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reactions\n", "These are automatically generated from the bond graph" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "\\ch{NADH &<>[ r1 ] 2 E1 + H + NAD }\\\\\n", "\\ch{2 E2 + 2 H + Q &<>[ r2 ] QH2 }\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Reactions\n", "disp.Latex(st.sprintrl(s,chemformula=True,all=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Potentials\n", "The reaction (Faraday Equivalent) potentials are computed from tables gleaned from the literature" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "%% Table\n", "\\ch{NAD} & 188 & 5.02e-04 & -15\\\\\n", "\\ch{NADH} & 407 & 7.50e-05 & 154\\\\\n", "\\ch{Q} & 675 & 1.00e-02 & 552\\\\\n", "\\ch{QH2} & -241 & 1.00e-02 & -365\\\\\n", "\\ch{H} & 0 & 1.00e-07 & -431\\\\\n", "\n", "%% Equations\n", "E1 = 0.5(154 - -15 - -431) = 300 mV\n", "E2 = 0.5(-365 - 552 - 2x-431) = -28 mV\n", "E1-E2 = 328 mV\n", "PMF = 164 mV\n" ] } ], "source": [ "## Standard potetials\n", "phi_Std = phiData.phi_Std()\n", "\n", "## Typical concentrations\n", "conc = phiData.ParRubXu16_conc()\n", "\n", "## From BazBeaVin16\n", "conc['Q'] = conc['QH2'] = 1e-2\n", "\n", "## pH 7\n", "conc['H'] = 1e-7\n", "\n", "## Table for paper and put values in to phi_NADH etc.\n", "print('%% Table')\n", "ch='\\ch'\n", "l='{'\n", "r='}'\n", "eol = r'\\\\'\n", "phi_std = {}\n", "for spec in ['NAD','NADH','Q','QH2','H']:\n", " phi0 = phi_Std[spec]\n", " con = conc[spec]\n", " phi_std_spec = phi0 + st.V_N()*np.log(con)\n", " phi_std[spec] = phi_std_spec\n", " #print(f'phi_Std_{spec} = {1000*phi0:0.0f}, phi_{spec} = {1000*phi_std[spec]:.0f}, conc_{spec}={conc[spec]}')\n", " print(f'{ch}{l}{spec}{r} & {1000*phi0:.0f} & {con:1.2e} & {1000*phi_std_spec:.0f}{eol}')\n", " exec(f'phi_{spec} = {phi_std_spec}')\n", " \n", "\n", "## Print the worked example for the paper.\n", "print('\\n%% Equations')\n", "E1 = 0.5*(phi_NADH - phi_NAD - phi_H)\n", "E2 = 0.5*(phi_QH2 - phi_Q - 2*phi_H)\n", "print(f'E1 = 0.5({1000*phi_NADH:.0f} - {1000*phi_NAD:.0f} - {1000*phi_H:.0f}) = {1000*E1:.0f} mV')\n", "print(f'E2 = 0.5({1000*phi_QH2:.0f} - {1000*phi_Q:.0f} - 2x{1000*phi_H:.0f}) = {1000*E2:.0f} mV')\n", "print(f'E1-E2 = {1000*(E1-E2):.0f} mV')\n", "print(f'PMF = {1000*(E1-E2)/2:.0f} mV')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "# Proton pump\n", "The redox reaction of complex I drives a proton pump." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bond graph\n", "C:E1 and C:E2 correspond to the redox reaction and provide the potential to drive protons in the interior $H^+_i$ to the exterior $H^+_e$ of the mitochondrial membrane. The protons have both electrical and chemoical potential." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "Chemical\n", "\n", "Electrical\n", "\n", "External\n", "\n", "Internal\n", "\n", "Re:rp\n", "\n", "1\n", "\n", "0\n", "\n", "0\n", "\n", "1\n", "\n", "0\n", "\n", "0\n", "\n", "0\n", "\n", "C:E1\n", "\n", "0\n", "\n", "C:E2\n", "\n", "C:He\n", "\n", "C:Hi\n", "\n", "C:Ei\n", "\n", "C:Ee\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Proton pump\n", "sbg.model('ProtonPump_abg.svg')\n", "import ProtonPump_abg\n", "disp.SVG('ProtonPump_abg.svg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stoichiometry" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "## Stoichiometry\n", "linear = ['E1','E2','Ei','Ee']\n", "s = st.stoich(ProtonPump_abg.model(),linear=linear,quiet=quiet)\n", "chemostats = ['E1','E2','Ei','Ee','Hi','He']\n", "sc = st.statify(s,chemostats=chemostats)\n", "#print(s['species'])\n", "#disp.Latex(st.sprint(s0,'K'))\n", "#print(st.sprints(s))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reactions\n", "These are automatically generated from the bond graph" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "\\ch{E1 + 2 Ei + 2 Hi &<>[ rp ] E2 + 2 Ee + 2 He }\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Reactions\n", "disp.Latex(st.sprintrl(s,chemformula=True,all=True))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "v_{rp} &= \\kappa_{rp} \\left(- K_{He}^{2} x_{He}^{2} e^{\\frac{K_{E2} x_{E2} + 2 K_{Ee} x_{Ee}}{V_{N}}} + K_{Hi}^{2} x_{Hi}^{2} e^{\\frac{K_{E1} x_{E1} + 2 K_{Ei} x_{Ei}}{V_{N}}}\\right)\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Flows\n", "disp.Latex(st.sprintvl(s))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Complex I\n", "The model of mitochondrial complex I comprides tow modules: the redox reaction and the proton pump. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Creating subsystem: ProtonPump:pp\n", "Creating subsystem: Redox:rr\n" ] }, { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "C:E2\n", "\n", "0\n", "\n", "0\n", "\n", "C:E1\n", "\n", "[E1]\n", "\n", "[E2]\n", "\n", "Redox:rr\n", "\n", "ProtonPump:pp\n", "\n", "[E2]\n", "\n", "[E1]\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Complex I\n", "sbg.model('ComplexI_abg.svg')\n", "import ComplexI_abg\n", "disp.SVG('ComplexI_abg.svg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stoichiometry" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['E1', 'E2', 'pp_Ee', 'pp_Ei', 'pp_He', 'pp_Hi', 'rr_H', 'rr_NAD', 'rr_NADH', 'rr_Q', 'rr_QH2']\n" ] } ], "source": [ "## Stoichiometry\n", "linear = ['E1','E2','pp_Ei','pp_Ee']\n", "s = st.stoich(ComplexI_abg.model(),linear=linear,quiet=quiet)\n", "print(s['species'])\n", "chemostats = ['pp_Ee', 'pp_Ei', 'pp_He', 'pp_Hi', 'rr_H', 'rr_NAD', 'rr_NADH', 'rr_Q', 'rr_QH2']\n", "sc = st.statify(s,chemostats=chemostats)\n", "#print(s['species'])\n", "#disp.Latex(st.sprint(s0,'K'))\n", "#print(st.sprints(s))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reactions\n", "These are automatically generated from the bond graph" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "\\ch{E1 + 2 pp_Ei + 2 pp_Hi &<>[ pp_rp ] E2 + 2 pp_Ee + 2 pp_He }\\\\\n", "\\ch{rr_NADH &<>[ rr ] 2 E1 + rr_H + rr_NAD }\\\\\n", "\\ch{2 E2 + 2 rr_H + rr_Q &<>[ rr ] rr_QH2 }\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Reactions\n", "disp.Latex(st.sprintrl(s,chemformula=True,all=True))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "v_{pp rp} &= \\kappa_{pp rp} \\left(- K_{pp He}^{2} x_{pp He}^{2} e^{\\frac{K_{E2} x_{E2} + 2 K_{pp Ee} x_{pp Ee}}{V_{N}}} + K_{pp Hi}^{2} x_{pp Hi}^{2} e^{\\frac{K_{E1} x_{E1} + 2 K_{pp Ei} x_{pp Ei}}{V_{N}}}\\right)\\\\\n", "v_{rr} &= \\kappa_{rr} \\left(- K_{rr H} K_{rr NAD} x_{rr H} x_{rr NAD} e^{\\frac{2 K_{E1} x_{E1}}{V_{N}}} + K_{rr NADH} x_{rr NADH}\\right)\\\\\n", "v_{rr} &= \\kappa_{rr} \\left(K_{rr H}^{2} K_{rr Q} x_{rr H}^{2} x_{rr Q} e^{\\frac{2 K_{E2} x_{E2}}{V_{N}}} - K_{rr QH2} x_{rr QH2}\\right)\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Flows\n", "disp.Latex(st.sprintvl(s))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "\\ch{4 pp_Ei + 4 pp_Hi + 2 rr_H + rr_NADH + rr_Q &<>[ pr1 ] 4 pp_Ee + 4 pp_He + rr_H + rr_NAD + rr_QH2 }\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Path\n", "sp = st.path(s,sc)\n", "## Reactions\n", "disp.Latex(st.sprintrl(sp,chemformula=True,all=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Superoxide generation and removal (additional material)\n", "Superoxide is generated from the electron potential of the redox reaction and free oxygen by the reaction:\n", "\\ch{ e- + O2 <> O2^{.-} }\n", "It is removed by superoxide dismutase in conjunction with glutathione peroxidase. THe bond graph representation of these mechanisms are given below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Superoxide dismutase (MnSOD)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "Re:r2\n", "\n", "C:H2O2\n", "\n", "C:O2\n", "\n", "1\n", "\n", "Re:r1\n", "\n", "1\n", "\n", "0\n", "\n", "C:Mn3\n", "\n", "1\n", "\n", "0\n", "\n", "C:sO2\n", "\n", "0\n", "\n", "1\n", "\n", "0\n", "\n", "C:Hx\n", "\n", "C:Mn2\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Complex I\n", "sbg.model('MnSOD_abg.svg')\n", "import MnSOD_abg\n", "disp.SVG('MnSOD_abg.svg')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "## Stoichiometry\n", "s = st.stoich(MnSOD_abg.model(),quiet=quiet)\n", "chemostats = ['H2O2', 'Hx', 'O2', 'sO2']\n", "sc = st.statify(s,chemostats=chemostats)\n", "#disp.Latex(st.sprint(s0,'K'))\n", "#print(st.sprints(s))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "\\ch{Mn3 + sO2 &<>[ r1 ] Mn2 + O2 }\\\\\n", "\\ch{2 Hx + Mn2 + sO2 &<>[ r2 ] H2O2 + Mn3 }\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Reactions\n", "disp.Latex(st.sprintrl(s,chemformula=True,all=True))" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "v_{r1} &= \\kappa_{r1} \\left(- K_{Mn2} K_{O2} x_{Mn2} x_{O2} + K_{Mn3} K_{sO2} x_{Mn3} x_{sO2}\\right)\\\\\n", "v_{r2} &= \\kappa_{r2} \\left(- K_{H2O2} K_{Mn3} x_{H2O2} x_{Mn3} + K_{Hx}^{2} K_{Mn2} K_{sO2} x_{Hx}^{2} x_{Mn2} x_{sO2}\\right)\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Flows\n", "disp.Latex(st.sprintvl(s))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "\\ch{2 Hx + 2 sO2 &<>[ pr1 ] H2O2 + O2 }\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sp = st.path(s,sc)\n", "## Reactions\n", "disp.Latex(st.sprintrl(sp,chemformula=True,all=False))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Glutathione peroxidase (GPx1)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Converting one-port r1 to two-port\n", "Converting one-port r4 to two-port\n", "Converting one-port r2 to two-port\n", "Converting one-port r3 to two-port\n" ] }, { "data": { "image/svg+xml": [ "\n", "\n", "\n", "1\n", "\n", "1\n", "\n", "1\n", "\n", "0\n", "\n", "0\n", "\n", "0\n", "\n", "Ce:GSSeR\n", "\n", "Re:r1\n", "\n", "Re:r4\n", "\n", "1\n", "\n", "Ce:GSH\n", "\n", "Ce:NADPH\n", "\n", "Ce:H\n", "\n", "Ce:NADP\n", "\n", "0\n", "\n", "0\n", "\n", "0\n", "\n", "Ce:RSeH\n", "\n", "Ce:H2O2\n", "\n", "Ce:RSeOH\n", "\n", "Re:r2\n", "\n", "Ce:GSSG\n", "\n", "Re:r3\n", "\n", "Ce:H2O\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Complex I\n", "sbg.model('GPx1_abg.svg')\n", "import GPx1_abg\n", "disp.SVG('GPx1_abg.svg')" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "## Stoichiometry\n", "s = st.stoich(GPx1_abg.model(),quiet=quiet)\n", "#print(s['species'])\n", "chemostats = ['GSH', 'GSSG', 'H', 'H2O', 'H2O2','NADP','NADPH']\n", "sc = st.statify(s,chemostats=chemostats)\n", "#disp.Latex(st.sprint(s0,'K'))\n", "#print(st.sprints(s))" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "\\ch{H2O2 + RSeH &<>[ r1 ] H2O + RSeOH }\\\\\n", "\\ch{GSH + RSeOH &<>[ r2 ] GSSeR + H2O }\\\\\n", "\\ch{GSH + GSSeR &<>[ r3 ] GSSG + RSeH }\\\\\n", "\\ch{GSSG + H + NADPH &<>[ r4 ] 2 GSH + NADP }\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Reactions\n", "disp.Latex(st.sprintrl(s,chemformula=True,all=True))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "v_{r1} &= \\kappa_{r1} \\left(- K_{H2O} K_{RSeOH} x_{H2O} x_{RSeOH} + K_{H2O2} K_{RSeH} x_{H2O2} x_{RSeH}\\right)\\\\\n", "v_{r2} &= \\kappa_{r2} \\left(K_{GSH} K_{RSeOH} x_{GSH} x_{RSeOH} - K_{GSSeR} K_{H2O} x_{GSSeR} x_{H2O}\\right)\\\\\n", "v_{r3} &= \\kappa_{r3} \\left(K_{GSH} K_{GSSeR} x_{GSH} x_{GSSeR} - K_{GSSG} K_{RSeH} x_{GSSG} x_{RSeH}\\right)\\\\\n", "v_{r4} &= \\kappa_{r4} \\left(- K_{GSH}^{2} K_{NADP} x_{GSH}^{2} x_{NADP} + K_{GSSG} K_{H} K_{NADPH} x_{GSSG} x_{H} x_{NADPH}\\right)\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Flows\n", "disp.Latex(st.sprintvl(s))" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/latex": [ "\\begin{align}\n", "\\ch{2 GSH + H2O2 + RSeOH &<>[ pr1 ] GSSG + 2 H2O + RSeOH }\n", "\\end{align}\n" ], "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sp = st.path(s,sc)\n", "## Reactions\n", "disp.Latex(st.sprintrl(sp,chemformula=True,all=True))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.9" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }