- Author:
- smeans <s.means@auckland.ac.nz>
- Date:
- 2025-11-05 15:56:07+13:00
- Desc:
- added cellml dependencies
- Permanent Source URI:
- https://staging.physiomeproject.org/workspace/d7e/rawfile/b8a595ae6aec59de8bee1394ede307a7b478b7dc/higgins2006_serca_wphosphate.cellml
<?xml version='1.0' encoding='UTF-8'?>
<!-- SERCA model from the Higgins, 2006 version here - https://www.cell.com/biophysj/fulltext/S0006-3495(06)71715-5
we abuse the BG_SERCA cellML code for building this mess, including the 'units' and 'constants' external files (make sure they in paths etc)-->
<model name="Higgins_SERCA" xmlns="http://www.cellml.org/cellml/1.1#" xmlns:cellml="http://www.cellml.org/cellml/1.1#" xmlns:xlink="http://www.w3.org/1999/xlink">
<import xlink:href="units_and_constants/units_BG_Higgins.cellml">
<units name="mM" units_ref="mM"/>
<units name="uM" units_ref="uM"/>
<units name="fmol" units_ref="fmol"/>
<units name="per_fmol" units_ref="per_fmol"/>
<units name="J_per_mol" units_ref="J_per_mol"/>
<units name="J_per_K_per_mol" units_ref="J_per_K_per_mol"/>
<units name="fmol_per_sec" units_ref="fmol_per_sec"/>
<units name="C_per_mol" units_ref="C_per_mol"/>
<units name="pL" units_ref="pL"/>
</import>
<import xlink:href="units_and_constants/constants_BG.cellml">
<component component_ref="constants" name="constants"/>
</import>
<component name="environment">
<variable name="t" public_interface="out" units="second"/>
<!-- init-->
<!--this corresponds to 0.036 uM (ss for higgins model), using 38 pL for cyt vol
var q_Ca_i: fmol {init: 1.368e-3, pub: out};-->
<!--this corresponds to 0.041 uM -- should be equilibrium value here
var q_Ca_i: fmol {init: 0.00155984941463554, pub: out};-->
<!--this corresponds to an elevated Ca_i of 200 nM-->
<variable initial_value="0.0076" name="q_Ca_i" public_interface="out" units="fmol"/>
<!--var q_Ca_i: fmol {init: 0.05, pub: out};-->
<!--var q_Ca_i: fmol {init: 0.38, pub: out};-->
<!--this corresponds to ca_er_ss (calculated) for higgins model using 3.8 pL for er vol
var q_Ca_SR: fmol {init: 0.7058, pub: out};-->
<!--this corresponds to ca_er of ~212 uM -- should be equilibrium value here
var q_Ca_SR: fmol {init: 0.804833017834165, pub: out};-->
<!--this corresponds to depleted ca_er of 50 uM-->
<variable initial_value="0.19" name="q_Ca_SR" public_interface="out" units="fmol"/>
<!--var q_Ca_SR: fmol {init: 0.038, pub: out};-->
<!--this corresponds to ~200 uM given er_vol of 0.1*34pL -- roughly comparable to Higgins value(s)
Higgins uses fixed amounts of ADP, ATP, P set those below
var q_ADP: fmol {init: 1.3794, pub: out};
var q_ATP: fmol {init: 3.8, pub: out};
altered to 1/4th each state-->
<variable initial_value="0.0993144901748217" name="q_P1_SERCA" public_interface="out" units="fmol"/>
<variable initial_value="0.000239063202392527" name="q_P2_SERCA" public_interface="out" units="fmol"/>
<variable initial_value="0.000148503160194406" name="q_P3_SERCA" public_interface="out" units="fmol"/>
<variable initial_value="0.000297943470524466" name="q_P4_SERCA" public_interface="out" units="fmol"/>
<!--var q_P_tot: amol {init: 1.0, pub: out};-->
</component>
<component name="SERCA_parameters">
<!--affinities
below with setting Kc=[K_MgATP 1]; and Nc with two rows, one for phosphates and one for Ca
Nc' = 0 0 0 0 0 0 -1 1 1 <-- phosphates
0 0 0 0 -1 1 0 0 0 <-- Ca2+-->
<variable initial_value="928.252218160594" name="K_P1_SERCA" public_interface="out" units="per_fmol"/>
<variable initial_value="298.670804907197" name="K_P2_SERCA" public_interface="out" units="per_fmol"/>
<variable initial_value="22360.1890715303" name="K_P3_SERCA" public_interface="out" units="per_fmol"/>
<variable initial_value="0.540510558457622" name="K_P4_SERCA" public_interface="out" units="per_fmol"/>
<variable initial_value="17.8414756556271" name="K_Ca_i" public_interface="out" units="per_fmol"/>
<variable initial_value="178.414756556269" name="K_Ca_SR" public_interface="out" units="per_fmol"/>
<!--need K's for phosphates-->
<variable initial_value="0.407944244873665" name="K_ATP" public_interface="out" units="per_fmol"/>
<variable initial_value="0.000200810074157257" name="K_ADP" public_interface="out" units="per_fmol"/>
<variable initial_value="0.000200810074157257" name="K_Pi" public_interface="out" units="per_fmol"/>
<!--reaction rates-->
<variable initial_value="2343717.52611542" name="kappa_SERCA_R1_2" public_interface="out" units="fmol_per_sec"/>
<variable initial_value="4.31969233737789e-05" name="kappa_SERCA_R2_3" public_interface="out" units="fmol_per_sec"/>
<variable initial_value="44722340.978469" name="kappa_SERCA_R3_4" public_interface="out" units="fmol_per_sec"/>
<variable initial_value="0.740041047748306" name="kappa_SERCA_R4_1" public_interface="out" units="fmol_per_sec"/>
<!--set q's for phosphates-->
<variable initial_value="114" name="q_ATP" public_interface="out" units="fmol"/>
<variable initial_value="0.38" name="q_ADP" public_interface="out" units="fmol"/>
<variable initial_value="114" name="q_Pi" public_interface="out" units="fmol"/>
</component>
<component name="SERCA">
<!-- Physical parameters-->
<variable name="t" public_interface="in" units="second"/>
<variable name="R" public_interface="in" units="J_per_K_per_mol"/>
<variable name="T" public_interface="in" units="kelvin"/>
<variable name="F" public_interface="in" units="C_per_mol"/>
<!-- Bond graph parameters -->
<variable name="K_P1_SERCA" public_interface="in" units="per_fmol"/>
<variable name="K_P2_SERCA" public_interface="in" units="per_fmol"/>
<variable name="K_P3_SERCA" public_interface="in" units="per_fmol"/>
<variable name="K_P4_SERCA" public_interface="in" units="per_fmol"/>
<variable name="K_Ca_i" public_interface="in" units="per_fmol"/>
<variable name="K_Ca_SR" public_interface="in" units="per_fmol"/>
<!--need K's for phosphates-->
<variable name="K_ATP" public_interface="in" units="per_fmol"/>
<variable name="K_ADP" public_interface="in" units="per_fmol"/>
<variable name="K_Pi" public_interface="in" units="per_fmol"/>
<!--get q's for phosphates here since fixed-->
<variable name="q_ATP" public_interface="in" units="fmol"/>
<variable name="q_ADP" public_interface="in" units="fmol"/>
<variable name="q_Pi" public_interface="in" units="fmol"/>
<variable name="kappa_SERCA_R1_2" public_interface="in" units="fmol_per_sec"/>
<variable name="kappa_SERCA_R2_3" public_interface="in" units="fmol_per_sec"/>
<variable name="kappa_SERCA_R3_4" public_interface="in" units="fmol_per_sec"/>
<variable name="kappa_SERCA_R4_1" public_interface="in" units="fmol_per_sec"/>
<variable initial_value="2" name="n_Ca_i" units="dimensionless"/>
<variable initial_value="2" name="n_Ca_SR" units="dimensionless"/>
<!-- Input from global environment-->
<variable name="q_Ca_i" public_interface="in" units="fmol"/>
<variable name="q_Ca_SR" public_interface="in" units="fmol"/>
<!-- gate -->
<variable name="q_P1_SERCA" public_interface="in" units="fmol"/>
<variable name="q_P2_SERCA" public_interface="in" units="fmol"/>
<variable name="q_P3_SERCA" public_interface="in" units="fmol"/>
<variable name="q_P4_SERCA" public_interface="in" units="fmol"/>
<!--ratios q_Ca-->
<variable name="q_Ca_ratio" units="dimensionless"/>
<!-- Concentrations
note: Higgins gives umol / L; we likely need to check all dimensions in this thing...-->
<variable name="c_Ca_i" units="uM"/>
<variable name="c_Ca_SR" units="uM"/>
<variable initial_value="38" name="vol_i" units="pL"/>
<variable name="vol_sr" units="pL"/>
<!--var vol_isr: pL;-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>vol_sr</ci>
<apply>
<times/>
<ci>vol_i</ci>
<cn cellml:units="dimensionless">0.1</cn>
</apply>
</apply>
<!--vol_isr = vol_i+vol_sr;-->
<apply>
<eq/>
<ci>c_Ca_i</ci>
<apply>
<divide/>
<apply>
<times/>
<cn cellml:units="dimensionless">1000</cn>
<ci>q_Ca_i</ci>
</apply>
<ci>vol_i</ci>
</apply>
</apply>
<!--convert mM -> uM-->
<apply>
<eq/>
<ci>c_Ca_SR</ci>
<apply>
<divide/>
<apply>
<times/>
<cn cellml:units="dimensionless">1000</cn>
<ci>q_Ca_SR</ci>
</apply>
<ci>vol_sr</ci>
</apply>
</apply>
<!--ca ratio-->
<apply>
<eq/>
<ci>q_Ca_ratio</ci>
<apply>
<divide/>
<ci>q_Ca_i</ci>
<ci>q_Ca_SR</ci>
</apply>
</apply>
</math>
<!-- Constitutive equations-->
<variable name="mu_Ca_i" units="J_per_mol"/>
<variable name="v_Ca_i_SERCA" public_interface="out" units="fmol_per_sec"/>
<variable name="mu_Ca_SR" units="J_per_mol"/>
<variable name="v_Ca_SR_SERCA" public_interface="out" units="fmol_per_sec"/>
<!--mu's for phosphates-->
<variable name="mu_ATP" units="J_per_mol"/>
<variable name="mu_ADP" units="J_per_mol"/>
<variable name="mu_Pi" units="J_per_mol"/>
<variable name="mu_P1" units="J_per_mol"/>
<variable name="v_P1" units="fmol_per_sec"/>
<variable name="mu_P2" units="J_per_mol"/>
<variable name="v_P2" units="fmol_per_sec"/>
<variable name="mu_P3" units="J_per_mol"/>
<variable name="v_P3" units="fmol_per_sec"/>
<variable name="mu_P4" units="J_per_mol"/>
<variable name="v_P4" units="fmol_per_sec"/>
<variable name="Af_R1_2" units="J_per_mol"/>
<variable name="Ar_R1_2" units="J_per_mol"/>
<variable name="Af_R2_3" units="J_per_mol"/>
<variable name="Ar_R2_3" units="J_per_mol"/>
<variable name="Af_R3_4" units="J_per_mol"/>
<variable name="Ar_R3_4" units="J_per_mol"/>
<variable name="Af_R4_1" units="J_per_mol"/>
<variable name="Ar_R4_1" units="J_per_mol"/>
<variable name="v_SERCA_R1_2" units="fmol_per_sec"/>
<variable name="v_SERCA_R2_3" units="fmol_per_sec"/>
<variable name="v_SERCA_R3_4" units="fmol_per_sec"/>
<variable name="v_SERCA_R4_1" units="fmol_per_sec"/>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>mu_Ca_i</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K_Ca_i</ci>
<ci>q_Ca_i</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>mu_Ca_SR</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K_Ca_SR</ci>
<ci>q_Ca_SR</ci>
</apply>
</apply>
</apply>
</apply>
<!--define mu's for phosphates-->
<apply>
<eq/>
<ci>mu_ATP</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K_ATP</ci>
<ci>q_ATP</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>mu_ADP</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K_ADP</ci>
<ci>q_ADP</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>mu_Pi</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K_Pi</ci>
<ci>q_Pi</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>mu_P1</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K_P1_SERCA</ci>
<ci>q_P1_SERCA</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>mu_P2</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K_P2_SERCA</ci>
<ci>q_P2_SERCA</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>mu_P3</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K_P3_SERCA</ci>
<ci>q_P3_SERCA</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>mu_P4</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K_P4_SERCA</ci>
<ci>q_P4_SERCA</ci>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>Af_R1_2</ci>
<apply>
<plus/>
<ci>mu_P1</ci>
<apply>
<times/>
<ci>n_Ca_i</ci>
<ci>mu_Ca_i</ci>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>Ar_R1_2</ci>
<ci>mu_P2</ci>
</apply>
<!--Af_R2_3 = mu_P2;
Af for +ATP-->
<apply>
<eq/>
<ci>Af_R2_3</ci>
<apply>
<plus/>
<ci>mu_P2</ci>
<ci>mu_ATP</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>Ar_R2_3</ci>
<ci>mu_P3</ci>
</apply>
<apply>
<eq/>
<ci>Af_R3_4</ci>
<ci>mu_P3</ci>
</apply>
<apply>
<eq/>
<ci>Ar_R3_4</ci>
<apply>
<plus/>
<ci>mu_P4</ci>
<apply>
<times/>
<ci>n_Ca_SR</ci>
<ci>mu_Ca_SR</ci>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>Af_R4_1</ci>
<ci>mu_P4</ci>
</apply>
<!--Ar_R4_1 = mu_P1;
Ar for +ADP + Pi-->
<apply>
<eq/>
<ci>Ar_R4_1</ci>
<apply>
<plus/>
<ci>mu_P1</ci>
<ci>mu_ADP</ci>
<ci>mu_Pi</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>v_SERCA_R1_2</ci>
<apply>
<times/>
<cn cellml:units="dimensionless">1</cn>
<ci>kappa_SERCA_R1_2</ci>
<apply>
<minus/>
<apply>
<exp/>
<apply>
<divide/>
<ci>Af_R1_2</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
</apply>
</apply>
</apply>
<apply>
<exp/>
<apply>
<divide/>
<ci>Ar_R1_2</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
</apply>
</apply>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>v_SERCA_R2_3</ci>
<apply>
<times/>
<cn cellml:units="dimensionless">1</cn>
<ci>kappa_SERCA_R2_3</ci>
<apply>
<minus/>
<apply>
<exp/>
<apply>
<divide/>
<ci>Af_R2_3</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
</apply>
</apply>
</apply>
<apply>
<exp/>
<apply>
<divide/>
<ci>Ar_R2_3</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
</apply>
</apply>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>v_SERCA_R3_4</ci>
<apply>
<times/>
<cn cellml:units="dimensionless">1</cn>
<ci>kappa_SERCA_R3_4</ci>
<apply>
<minus/>
<apply>
<exp/>
<apply>
<divide/>
<ci>Af_R3_4</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
</apply>
</apply>
</apply>
<apply>
<exp/>
<apply>
<divide/>
<ci>Ar_R3_4</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
</apply>
</apply>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>v_SERCA_R4_1</ci>
<apply>
<times/>
<cn cellml:units="dimensionless">1</cn>
<ci>kappa_SERCA_R4_1</ci>
<apply>
<minus/>
<apply>
<exp/>
<apply>
<divide/>
<ci>Af_R4_1</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
</apply>
</apply>
</apply>
<apply>
<exp/>
<apply>
<divide/>
<ci>Ar_R4_1</ci>
<apply>
<times/>
<ci>R</ci>
<ci>T</ci>
</apply>
</apply>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>v_Ca_i_SERCA</ci>
<apply>
<times/>
<apply>
<minus/>
<ci>n_Ca_i</ci>
</apply>
<ci>v_SERCA_R1_2</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>v_Ca_SR_SERCA</ci>
<apply>
<times/>
<ci>n_Ca_SR</ci>
<ci>v_SERCA_R3_4</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>v_P1</ci>
<apply>
<minus/>
<ci>v_SERCA_R4_1</ci>
<ci>v_SERCA_R1_2</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>v_P2</ci>
<apply>
<minus/>
<ci>v_SERCA_R1_2</ci>
<ci>v_SERCA_R2_3</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>v_P3</ci>
<apply>
<minus/>
<ci>v_SERCA_R2_3</ci>
<ci>v_SERCA_R3_4</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>v_P4</ci>
<apply>
<minus/>
<ci>v_SERCA_R3_4</ci>
<ci>v_SERCA_R4_1</ci>
</apply>
</apply>
<!--state odes defined here-->
<apply>
<eq/>
<apply>
<diff/>
<bvar>
<ci>t</ci>
</bvar>
<ci>q_P1_SERCA</ci>
</apply>
<ci>v_P1</ci>
</apply>
<apply>
<eq/>
<apply>
<diff/>
<bvar>
<ci>t</ci>
</bvar>
<ci>q_P2_SERCA</ci>
</apply>
<ci>v_P2</ci>
</apply>
<apply>
<eq/>
<apply>
<diff/>
<bvar>
<ci>t</ci>
</bvar>
<ci>q_P3_SERCA</ci>
</apply>
<ci>v_P3</ci>
</apply>
<apply>
<eq/>
<apply>
<diff/>
<bvar>
<ci>t</ci>
</bvar>
<ci>q_P4_SERCA</ci>
</apply>
<ci>v_P4</ci>
</apply>
<!--calcium odes-->
<apply>
<eq/>
<apply>
<diff/>
<bvar>
<ci>t</ci>
</bvar>
<ci>q_Ca_i</ci>
</apply>
<ci>v_Ca_i_SERCA</ci>
</apply>
<apply>
<eq/>
<apply>
<diff/>
<bvar>
<ci>t</ci>
</bvar>
<ci>q_Ca_SR</ci>
</apply>
<ci>v_Ca_SR_SERCA</ci>
</apply>
</math>
</component>
<connection>
<map_components component_1="constants" component_2="SERCA"/>
<map_variables variable_1="R" variable_2="R"/>
<map_variables variable_1="T" variable_2="T"/>
<map_variables variable_1="F" variable_2="F"/>
</connection>
<connection>
<map_components component_1="environment" component_2="SERCA"/>
<map_variables variable_1="t" variable_2="t"/>
<map_variables variable_1="q_Ca_i" variable_2="q_Ca_i"/>
<map_variables variable_1="q_Ca_SR" variable_2="q_Ca_SR"/>
<map_variables variable_1="q_P1_SERCA" variable_2="q_P1_SERCA"/>
<map_variables variable_1="q_P2_SERCA" variable_2="q_P2_SERCA"/>
<map_variables variable_1="q_P3_SERCA" variable_2="q_P3_SERCA"/>
<map_variables variable_1="q_P4_SERCA" variable_2="q_P4_SERCA"/>
</connection>
<connection>
<map_components component_1="SERCA_parameters" component_2="SERCA"/>
<map_variables variable_1="kappa_SERCA_R1_2" variable_2="kappa_SERCA_R1_2"/>
<map_variables variable_1="kappa_SERCA_R2_3" variable_2="kappa_SERCA_R2_3"/>
<map_variables variable_1="kappa_SERCA_R3_4" variable_2="kappa_SERCA_R3_4"/>
<map_variables variable_1="kappa_SERCA_R4_1" variable_2="kappa_SERCA_R4_1"/>
<map_variables variable_1="K_P1_SERCA" variable_2="K_P1_SERCA"/>
<map_variables variable_1="K_P2_SERCA" variable_2="K_P2_SERCA"/>
<map_variables variable_1="K_P3_SERCA" variable_2="K_P3_SERCA"/>
<map_variables variable_1="K_P4_SERCA" variable_2="K_P4_SERCA"/>
<map_variables variable_1="K_Ca_i" variable_2="K_Ca_i"/>
<map_variables variable_1="K_Ca_SR" variable_2="K_Ca_SR"/>
<!--add K's and q's for phosph-->
<map_variables variable_1="K_ATP" variable_2="K_ATP"/>
<map_variables variable_1="K_ADP" variable_2="K_ADP"/>
<map_variables variable_1="K_Pi" variable_2="K_Pi"/>
<map_variables variable_1="q_ATP" variable_2="q_ATP"/>
<map_variables variable_1="q_ADP" variable_2="q_ADP"/>
<map_variables variable_1="q_Pi" variable_2="q_Pi"/>
</connection>
</model>