{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"***Note: this is the Chloroplast.ipynb notebook. The\n",
"PDF version \"The Chloroplast Electron Transport Chain\"\n",
"is available [here](Chloroplast.pdf).***\n",
"\n",
"*This is a work in progress and needs more explanatory notes.*"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"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 bg representation conversion\n",
"import svgBondGraph as sbg\n",
"\n",
"## Modular bond graphs\n",
"import modularBondGraph as mbg\n",
"\n",
"## Display (eg disp.SVG(), disp.\n",
"import IPython.display as disp\n",
"\n",
"## Data\n",
"import phiData\n",
"import redoxData\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Introduction\n",
"Photosynthesis within plant chloroplasts is the basis of life on earth (Blankenship 2014), (Nichols and Ferguson, 2013).\n",
"\n",
"Like the mitochondrion, the chloroplast has a membrane seperating an inner space (lumen) from an outer space (stroma). In the chloroplast, the lumen gains protons and is called the p-space, the stroma looses protons and is called the n-space.\n",
"Thus geometrically, the lumen corresponds to the mitochondrial matrix and the stroma to the mitochondrial intermembrane space; but electrically the p-space is inside and the n-space outside - the reverse of the mitochondrial situation.\n",
"\n",
"The chloroplast electron transport chain has 4 complexes.\n",
"\n",
"1. Photosystem II (PII) which absorbs photons at 680nm and splits water releasing protons into the p-space and passing electrons to the plastoquinone(PQ)/plastoquine(PQH2) couple which absorbs protons from the n-space.\n",
"\n",
"2. Cytochrome bf (Cyt) which passes electrons to the plastoquine/plastoquinone couple which releases two protons into the p-space. Electrons are passed to the plastocyanine couple (PcOx/PcRed). Two protons are pumped across the membrane.\n",
"\n",
"3. Photosystem I (PI) which absorbs photons at 700nm and transports electrons from the plastocyanine (PcRed/PcOx) couple to the ferredoxin (FdOx/FdRed) couple.\n",
"\n",
"4. Feredoxin-NADP reductase which transfers electrons from the ferredoxin (FdRed/FdOx) couple to convert NADP to NADPH absorbing a proton from the n-space.\n",
"\n",
"The following figure is: https://commons.wikimedia.org/wiki/File:Thylakoid_membrane_3.svg\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
""
],
"text/plain": [
""
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# https://commons.wikimedia.org/wiki/File:Thylakoid_membrane_3.svg\n",
"disp.SVG(\"Thylakoid_membrane_3.svg\") "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Photon Energetics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{align}\n",
" \\phi_{photon} &= \\frac{N_{av}hc}{F\\lambda}\\\\\n",
" \\text{where } N_{av} &= \\text{Avogadro's number}\\\\\n",
" h &= \\text{Planck's constant}\\\\\n",
" c &= \\text{velocity of light}\\\\\n",
" F &= \\text{Faraday's constant}\\\\\n",
" \\text{and } \\lambda &= \\text{wavelength}\n",
"\\end{align}\n",
"For example:\n",
"\\begin{equation}\n",
"\\phi_{photon} = \n",
"\\begin{cases}\n",
" 1.82 V & \\lambda = 680 nm\\\\\n",
" 1.77 V & \\lambda = 700 nm\n",
" \\end{cases}\n",
"\\end{equation}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
""
],
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.SVG('V_photon.svg')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Redox reactions"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
""
],
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.SVG('Redox_abg.svg')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Redox reactions can be written as two half-reactions:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{align}\n",
"\\ch{A_{red} &<>[ r1 ] n_1 e_1^- + m_1 H_1^+ + A_{ox}}\\\\\n",
"\\ch{B_{ox} + n_2 e_2^- + m_2 H_2^+ &<>[ r2 ] B_{red}}\n",
"\\end{align}\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Redox potentials\n",
"\n",
"Note that photon energies have been used for V_700 and V_680; this value is too large as the energy conversion is not direct. A model of this needs to be built. See, for example:\n",
"(Blankenship and Prince, 1985)\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.18462115653058278\n",
"V_pH = 184 mV\n",
"V_680 = 1823 mV\n",
"V_700 = 1771 mV\n"
]
}
],
"source": [
"import redoxData\n",
"## pH from BerTymStr 19.3\n",
"pH_p = 4 # pH of p-space\n",
"pH_n = pH_p + 3\n",
"VpH = redoxData.VpH(pH_p - pH_n)\n",
"V680 = redoxData.V_photon(wavelength=680)\n",
"V700 = redoxData.V_photon(wavelength=700)\n",
"print(VpH)\n",
"print('V_pH =',int(1000*VpH),'mV')\n",
"print('V_680 =',int(1000*V680),'mV')\n",
"print('V_700 =',int(1000*V700),'mV')\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"## Convert redox potentials to species phi\n",
"phi_redox = redoxData.phi()\n",
"phi_redox['Hn'] = redoxData.VpH(pH_n)\n",
"phi_redox['Hp'] = redoxData.VpH(pH_p)\n",
"\n",
"## The correct photon potentials need sorting out\n",
"## The raw valyes used here are an overestimate. See BlaPri85\n",
"phi_redox['P680'] = V680\n",
"phi_redox['P700'] = V700\n",
"#phi_redox['P680'] = phi_redox['P680+']\n",
"#phi_redox['P700'] = phi_redox['P700+']\n",
"\n",
"## The membrane potential is said by some to be zero. (check this)\n",
"phi_redox['dV'] = VpH"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Bond graph description\n",
"The four complexes are represented by svg graphics which are automatically converted into BondGraphTools format.\n",
"\n",
"The stoichiometric toolbox is then used to generate the pathway-reduced equation for the complex.\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Complex PII -- Photosystem II "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
""
],
"text/plain": [
""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.SVG('PII_abg.svg')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"sbg.model('PII_abg.svg',convertR=True,convertCe=True,quiet=True)\n",
"import PII_abg"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\begin{align}\n",
"\\ch{E1 + P680 &<>[ r ] E2 }\\\\\n",
"\\ch{2 H2O &<>[ r1 ] 4 E1 + 4 Hp + O2 }\\\\\n",
"\\ch{2 E2 + 2 Hn + PQ &<>[ r2 ] PQH2 }\n",
"\\end{align}\n"
],
"text/plain": [
""
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Stoichiometry\n",
"sPII = st.stoich(PII_abg.model(),quiet=True)\n",
"chemostats = ['H2O','O2','PQ','PQH2','Hn','Hp','P680']\n",
"scPII = st.statify(sPII,chemostats=chemostats)\n",
"spPII = st.path(sPII,scPII)\n",
"## All reactions\n",
"disp.Latex(st.sprintrl(sPII,chemformula=True))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\begin{align}\n",
"\\ch{4 P680 + 2 H2O + 4 Hn + 2 PQ &<>[ pr1 ] 4 Hp + O2 + 2 PQH2 }\n",
"\\end{align}\n"
],
"text/plain": [
""
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Pathway reaction\n",
"disp.Latex(st.sprintrl(spPII,chemformula=True))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0006211565305827\n",
"0.8\n",
"0\n",
"0.0\n",
"RP_PII = 822 mV\n"
]
}
],
"source": [
"## Compute net redox potential\n",
"RP_PII = (\n",
" - redoxData.EpH('O2/2H2O',pH=pH_p)\n",
" + V680\n",
" + redoxData.EpH('PQ/PQH2',pH=pH_n)\n",
" )\n",
"\n",
"print(redoxData.EpH('O2/2H2O',pH=pH_p))\n",
"print(redoxData.E('P680+/P680*'))\n",
"print(redoxData.E7('PQ/PQH2'))\n",
"print(redoxData.EpH('PQ/PQH2',pH=pH_n))\n",
"#print(RP_PII)\n",
"print('RP_PII =',int(1000*RP_PII), 'mV')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Phi_PII = 3290 mV\n",
"Ratio = 4.0\n"
]
}
],
"source": [
"## Compute the reaction potential Phi\n",
"phi = phiData.phi_species(phi_redox,spPII['species'])\n",
"Phi_PII_ = -spPII['N'].T@phi\n",
"Phi_PII = Phi_PII_[0][0]\n",
"print('Phi_PII =',int(1000*Phi_PII), 'mV')\n",
"print('Ratio =',(Phi_PII/RP_PII))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Complex Cyt -- Cytochrome bf"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
""
],
"text/plain": [
""
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.SVG('Cyt_abg.svg')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"sbg.model('Cyt_abg.svg',convertR=True,convertCe=True,quiet=True)\n",
"import Cyt_abg"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\begin{align}\n",
"\\ch{E1 &<>[ r ] E2 + dV }\\\\\n",
"\\ch{PQH2 &<>[ r1 ] 2 E1 + 2 Hp + PQ }\\\\\n",
"\\ch{E2 + PcOx &<>[ r2 ] PcRed }\n",
"\\end{align}\n"
],
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Stoichiometry\n",
"sCyt = st.stoich(Cyt_abg.model(),quiet=True)\n",
"chemostats = ['PQ','PQH2','PcOx','PcRed','Hp','dV']\n",
"scCyt = st.statify(sCyt,chemostats=chemostats)\n",
"spCyt = st.path(sCyt,scCyt)\n",
"disp.Latex(st.sprintrl(sCyt,chemformula=True))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\begin{align}\n",
"\\ch{PQH2 + 2 PcOx &<>[ pr1 ] 2 dV + 2 Hp + PQ + 2 PcRed }\n",
"\\end{align}\n"
],
"text/plain": [
""
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.Latex(st.sprintrl(spCyt,chemformula=True))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.010757686938834443\n",
"RP_Cyt = 11 mV\n"
]
}
],
"source": [
"## Compute net redox potential\n",
"RP_Cyt = (- redoxData.EpH('PQ/PQH2',pH=pH_p)\n",
" - redoxData.VpH(pH_p - pH_n)\n",
" + redoxData.E('PcOx/PcRed')\n",
" )\n",
"\n",
"print(RP_Cyt)\n",
"print('RP_Cyt =',redoxData.mV(RP_Cyt), 'mV')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Phi_Cyt = 22 mV\n",
"Ratio = 2\n"
]
}
],
"source": [
"## Compute the reaction potential Phi\n",
"phi = phiData.phi_species(phi_redox,spCyt['species'])\n",
"Phi_Cyt_ = -spCyt['N'].T@phi\n",
"Phi_Cyt = Phi_Cyt_[0][0]\n",
"print('Phi_Cyt =',redoxData.mV(Phi_Cyt), 'mV')\n",
"print('Ratio =', int(Phi_Cyt/RP_Cyt))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Complex PI -- Photosystem I"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
""
],
"text/plain": [
""
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.SVG('PI_abg.svg')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"sbg.model('PI_abg.svg',convertR=True,convertCe=True,quiet=True)\n",
"import PI_abg"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/latex": [
"\\begin{align}\n",
"\\ch{E1 + P700 &<>[ r ] E2 }\\\\\n",
"\\ch{PcRed &<>[ r1 ] E1 + PcOx }\\\\\n",
"\\ch{E2 + FdOx &<>[ r2 ] FdRed }\n",
"\\end{align}\n"
],
"text/plain": [
""
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Stoichiometry\n",
"sPI = st.stoich(PI_abg.model(),quiet=True)\n",
"chemostats = ['PcOx','PcRed','FdOx','FdRed','P700']\n",
"scPI = st.statify(sPI,chemostats=chemostats)\n",
"spPI = st.path(sPI,scPI)\n",
"disp.Latex(st.sprintrl(sPI,chemformula=True))"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\begin{align}\n",
"\\ch{P700 + FdOx + PcRed &<>[ pr1 ] FdRed + PcOx }\n",
"\\end{align}\n"
],
"text/plain": [
""
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.Latex(st.sprintrl(spPI,chemformula=True))"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"RP_PI = 961 mV\n"
]
}
],
"source": [
"## Compute net redox potential\n",
"RP_PI = (\n",
" - redoxData.E('PcOx/PcRed')\n",
" + V700\n",
" + redoxData.E('FdOx/FdRed')\n",
" )\n",
"\n",
"#print(RP_PI)\n",
"print('RP_PI =',redoxData.mV(RP_PI), 'mV')"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Phi_PI = 961 mV\n",
"Ratio = 1\n"
]
}
],
"source": [
"## Compute the reaction potential Phi\n",
"phi = phiData.phi_species(phi_redox,spPI['species'])\n",
"Phi_PI_ = -spPI['N'].T@phi\n",
"Phi_PI = Phi_PI_[0][0]\n",
"print('Phi_PI =',redoxData.mV(Phi_PI), 'mV')\n",
"print('Ratio =', int(round(Phi_PI/RP_PI)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Complex Fer -- Feredoxin-NADP reductase"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
""
],
"text/plain": [
""
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.SVG('Fer_abg.svg')"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"sbg.model('Fer_abg.svg',convertR=True,convertCe=True,quiet=True)\n",
"import Fer_abg"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Swapping Re:r for two Sf in Fer\n",
"Swapping Re:r1 for two Sf in Fer\n",
"Swapping Re:r2 for two Sf in Fer\n",
"Swapping Re:r for two Sf in Fer\n",
"Swapping Re:r1 for two Sf in Fer\n",
"Swapping Re:r2 for two Sf in Fer\n"
]
},
{
"data": {
"text/latex": [
"\\begin{align}\n",
"\\ch{E1 &<>[ r ] E2 }\\\\\n",
"\\ch{FdRed &<>[ r1 ] E1 + FdOx }\\\\\n",
"\\ch{2 E2 + Hn + NADP &<>[ r2 ] NADPH }\n",
"\\end{align}\n"
],
"text/plain": [
""
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Stoichiometry\n",
"sFer = st.stoich(Fer_abg.model())\n",
"chemostats = ['FdRed','FdOx','NADP','NADPH','Hn']\n",
"scFer = st.stoich(Fer_abg.model(),chemostats=chemostats)\n",
"spFer = st.path(sFer,scFer)\n",
"disp.Latex(st.sprintrl(sFer,chemformula=True))"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\begin{align}\n",
"\\ch{2 FdRed + Hn + NADP &<>[ pr1 ] 2 FdOx + NADPH }\n",
"\\end{align}\n"
],
"text/plain": [
""
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.Latex(st.sprintrl(spFer,chemformula=True))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"RP_Fer = 105 mV\n"
]
}
],
"source": [
"## Compute net redox potential\n",
"RP_Fer = (\n",
" - redoxData.E('FdOx/FdRed')\n",
" + redoxData.EpH('NADP/NADPH',pH_n)\n",
" )\n",
"\n",
"#print(RP_Fer)\n",
"print('RP_Fer =',int(1000*RP_Fer), 'mV')"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Phi_Fer = 212 mV\n",
"Ratio = 2\n"
]
}
],
"source": [
"## Compute the reaction potential Phi\n",
"phi = phiData.phi_species(phi_redox,spFer['species'])\n",
"Phi_Fer_ = -spFer['N'].T@phi\n",
"Phi_Fer = Phi_Fer_[0][0]\n",
"print('Phi_Fer =',int(1000*Phi_Fer), 'mV')\n",
"print('Ratio =', int(Phi_Fer/RP_Fer))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Electron Transport Chain\n",
"The overall model is described a bond graph tools file:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"## File ETC_abg.py\n",
"\n",
"import BondGraphTools as bgt\n",
"import PII_abg\n",
"import Cyt_abg\n",
"import PI_abg\n",
"import Fer_abg\n",
"\n",
"def model():\n",
" \"\"\" \n",
" Model of chloroplast electron transport chain\n",
" \"\"\"\n",
"\n",
" ETC = bgt.new(name='ETC') # Create system\n",
" PII = PII_abg.model()\n",
" Cyt = Cyt_abg.model()\n",
" PI = PI_abg.model()\n",
" Fer = Fer_abg.model()\n",
" bgt.add(ETC,PII,Cyt,PI,Fer)\n",
" \n",
" return ETC\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Unify species in model using mbg.unify()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"import ETC_abg\n",
"model = ETC_abg.model()\n",
"common = ['PQ','PQH2','PcOx','PcRed','FdOx', 'FdRed','Hn','Hp']\n",
"mbg.unify(model,common,quiet=True)\n",
"s = st.stoich(model,quiet=True)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\begin{align}\n",
"\\ch{4 P680 + 2 H2O + 4 P700 + 2 NADP + 6 Hn &<>[ pr1 ] O2 + 4 dV + 2 NADPH + 8 Hp }\n",
"\\end{align}\n"
],
"text/plain": [
""
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"chemostats = ['H2O','O2','NADP','NADPH','Hp','Hn','P680','P700','dV']\n",
"sc = st.statify(s,chemostats=chemostats)\n",
"sp = st.path(s,sc)\n",
"disp.Latex(st.sprintrl(sp,chemformula=True))"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Phi = 7603 mV\n"
]
}
],
"source": [
"## Compute the reaction potential Phi\n",
"phi = phiData.phi_species(phi_redox,sp['species'])\n",
"Phi_ = -sp['N'].T@phi\n",
"Phi= Phi_[0][0]\n",
"print('Phi =',redoxData.mV(Phi), 'mV')\n"
]
},
{
"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.8"
},
"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
}