{
"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": [
""
],
"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": [
""
],
"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": [
""
],
"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": [
""
],
"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": [
""
],
"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
}