- Author:
- aram148 <42922407+aram148@users.noreply.github.com>
- Date:
- 2022-07-22 15:47:05+12:00
- Desc:
- Added documentation for VSM model
- Permanent Source URI:
- https://models.fieldml.org/workspace/6b0/rawfile/a8a92308e217ac5626809237dd90a31240b22834/USMC/Vm_stim_experiment.cellml
<?xml version='1.0' encoding='UTF-8'?>
<model name="Vm_stim_experiment" xmlns="http://www.cellml.org/cellml/1.1#" xmlns:cellml="http://www.cellml.org/cellml/1.1#" xmlns:cmeta="http://www.cellml.org/metadata/1.0#" xmlns:xlink="http://www.w3.org/1999/xlink">
<import xlink:href="units.cellml">
<units name="mV" units_ref="mV"/>
<units name="mM" units_ref="mM"/>
<units name="mM_per_s_mV" units_ref="mM_per_s_mV"/>
<units name="mV_per_s" units_ref="mV_per_s"/>
</import>
<import xlink:href="EC_uSMC.cellml">
<component component_ref="EC_uSMC" name="EC_uSMC"/>
<component component_ref="K_1" name="K_1"/>
</import>
<import xlink:href="time.cellml">
<component component_ref="time_s" name="time_s"/>
</import>
<import xlink:href="default_values.cellml">
<component component_ref="model_para" name="model_para"/>
<component component_ref="initials" name="initials"/>
<component component_ref="constants" name="constants"/>
</import>
<!-- Connect the time source variable to the model and stimulus protocol -->
<!-- def comp Vm as
var time: second {pub: in};
var V: mV {pub: out};
var p1: mV_per_s;
var p2: mV;
var t0: second;
var tss: second {init: 0};-->
<!-- V = -60{mV}*(time < 50{second})+-30{mV}*((time >= 50{second}) and (time <= 400{second}))+-60{mV}*(time > 400{second});-->
<!-- V = -60{mV}*1{dimensionless}/(1{dimensionless}+exp(time-25{mV}))*(time < 50{second})+-60{mV}*1{dimensionless}/(1{dimensionless}+exp(-(time-50{mV})))*(time >= 50{second});-->
<!--+-60{mV}*1{dimensionless}/(1{dimensionless}+exp(time-40{mV}))*(time < 40{second})+-60{mV}*1{dimensionless}/(1{dimensionless}+exp(-(time-80{mV})))*(time >= 80{second});-->
<!-- V = p1*(time-t0-tss)+p2;-->
<!-- p1 = sel
case time-tss < 0.4742{second}:
0{mV_per_s};
case (time-tss >= 0.4742{second}) and (time-tss < 9.7684{second}):
0.6008{mV_per_s};
case (time-tss >= 9.7684{second}) and (time-tss < 10.8076{second}):
-4.2966{mV_per_s};
case (time-tss >= 10.8076{second}) and (time-tss < 12.0313{second}):
3.6283{mV_per_s};
case (time-tss >= 12.0313{second}) and (time-tss < 18.3268{second}):
6.7127{mV_per_s};
case (time-tss >= 18.3268{second}) and (time-tss < 19.7879{second}):
3.6151{mV_per_s};
case (time-tss >= 19.7879{second}) and (time-tss < 21.9031{second}):
-6.8481{mV_per_s};
case (time-tss >= 21.9031{second}) and (time-tss < 55.9040{second}):
-0.0369{mV_per_s};
case (time-tss >= 55.9040{second}) and (time-tss < 56.2152{second}):
-66.1632{mV_per_s};
case (time-tss >= 56.2152{second}) and (time-tss < 62.6048{second}):
-1.456{mV_per_s};
case (time-tss >= 62.6048{second}) and (time-tss < 82.4301{second}):
-0.1557{mV_per_s};
case (time-tss >= 82.4301{second}) and (time-tss < 113.9610{second}):
-0.0623{mV_per_s};
otherwise:
0{mM_per_s};
endsel;-->
<!-- p2 = sel
case time-tss < 0.4742{second}:
-63.0930{mV};
case (time-tss >= 0.4742{second}) and (time-tss < 9.7684{second}):
-63.0930{mV};
case (time-tss >= 9.7684{second}) and (time-tss < 10.8076{second}):
-60.7620{mV};
case (time-tss >= 10.8076{second}) and (time-tss < 12.0313{second}):
-65.2270{mV};
case (time-tss >= 12.0313{second}) and (time-tss < 18.3268{second}):
-60.7870{mV};
case (time-tss >= 18.3268{second}) and (time-tss < 19.7879{second}):
-18.5270{mV};
case (time-tss >= 19.7879{second}) and (time-tss < 21.9031{second}):
-13.600{mV};
case (time-tss >= 21.9031{second}) and (time-tss < 55.9040{second}):
-27.7300{mV};
case (time-tss >= 55.9040{second}) and (time-tss < 56.2152{second}):
-28.9850{mV};
case (time-tss >= 56.2152{second}) and (time-tss < 62.6048{second}):
-49.5750{mV};
case (time-tss >= 62.6048{second}) and (time-tss < 82.4301{second}):
-58.3060{mV};
case (time-tss >= 82.4301{second}) and (time-tss < 113.9610{second}):
-61.4480{mV};
otherwise:
-63.411{mV};
endsel;-->
<!-- t0 = sel
case time-tss < 0.4742{second}:
0{second};
case (time-tss >= 0.4742{second}) and (time-tss < 9.7684{second}):
0.4742{second};
case (time-tss >= 9.7684{second}) and (time-tss < 10.8076{second}):
9.7684{second};
case (time-tss >= 10.8076{second}) and (time-tss < 12.0313{second}):
10.8076{second};
case (time-tss >= 12.0313{second}) and (time-tss < 18.3268{second}):
12.0313{second};
case (time-tss >= 18.3268{second}) and (time-tss < 19.7879{second}):
18.3268{second};
case (time-tss >= 19.7879{second}) and (time-tss < 21.9031{second}):
19.7879{second};
case (time-tss >= 21.9031{second}) and (time-tss < 55.9040{second}):
21.9031{second};
case (time-tss >= 55.9040{second}) and (time-tss < 56.2151{second}):
55.9040{second};
case (time-tss >= 56.2151{second}) and (time-tss < 62.6048{second}):
56.2151{second};
case (time-tss >= 62.6048{second}) and (time-tss < 82.4301{second}):
62.6048{second};
case (time-tss >= 82.4301{second}) and (time-tss < 113.9610{second}):
82.4299{second};
otherwise:
0{second};
endsel;
enddef;-->
<component name="mPulse_protocol_s">
<variable name="time" public_interface="in" units="second"/>
<variable cmeta:id="steady_state_time" name="t_ss" public_interface="in" units="second"/>
<variable cmeta:id="activation_holding_potential" name="V_actHolding" public_interface="in" units="mV"/>
<variable cmeta:id="activation_duration" name="t_act" public_interface="in" units="second"/>
<variable cmeta:id="activation_test_potential" name="V_actTest" public_interface="in" units="mV"/>
<variable cmeta:id="interpulse" name="t_intp" public_interface="in" units="second"/>
<variable cmeta:id="period" name="stimPeriod" units="second"/>
<variable cmeta:id="localTimer" name="t" units="second"/>
<variable cmeta:id="pulse_number" name="np" public_interface="in" units="dimensionless"/>
<variable name="V" public_interface="out" units="mV"/>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>stimPeriod</ci>
<apply>
<plus/>
<ci>t_act</ci>
<ci>t_intp</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>t</ci>
<apply>
<minus/>
<apply>
<minus/>
<ci>time</ci>
<ci>t_ss</ci>
</apply>
<apply>
<times/>
<ci>stimPeriod</ci>
<apply>
<floor/>
<apply>
<divide/>
<apply>
<minus/>
<ci>time</ci>
<ci>t_ss</ci>
</apply>
<ci>stimPeriod</ci>
</apply>
</apply>
</apply>
</apply>
</apply>
<apply id="activation_protocol_clamping">
<eq/>
<ci>V</ci>
<piecewise>
<piece>
<ci>V_actHolding</ci>
<apply>
<leq/>
<ci>time</ci>
<ci>t_ss</ci>
</apply>
</piece>
<piece>
<ci>V_actTest</ci>
<apply>
<and/>
<apply>
<gt/>
<ci>time</ci>
<ci>t_ss</ci>
</apply>
<apply>
<leq/>
<ci>t</ci>
<ci>t_act</ci>
</apply>
<apply>
<leq/>
<ci>time</ci>
<apply>
<plus/>
<ci>t_ss</ci>
<apply>
<times/>
<ci>stimPeriod</ci>
<ci>np</ci>
</apply>
</apply>
</apply>
</apply>
</piece>
<otherwise>
<ci>V_actHolding</ci>
</otherwise>
</piecewise>
</apply>
</math>
</component>
<component name="Vstim_para">
<variable initial_value="0" name="t_ss" public_interface="out" units="second"/>
<variable initial_value="-60" name="V_actHolding" public_interface="out" units="mV"/>
<variable initial_value="0.1" name="t_act" public_interface="out" units="second"/>
<variable initial_value="0" name="V_actTest" public_interface="out" units="mV"/>
<variable initial_value="0.33" name="t_intp" public_interface="out" units="second"/>
<variable initial_value="20" name="np" public_interface="out" units="dimensionless"/>
</component>
<connection>
<map_components component_1="time_s" component_2="mPulse_protocol_s"/>
<map_variables variable_1="time" variable_2="time"/>
</connection>
<connection>
<map_components component_1="time_s" component_2="EC_uSMC"/>
<map_variables variable_1="time" variable_2="time"/>
</connection>
<component name="control_para">
<variable initial_value="2.9836" name="Nai" public_interface="out" units="mM"/>
<variable initial_value="1" name="inhPump" public_interface="out" units="dimensionless"/>
<variable initial_value="11" name="K_Cahalf" public_interface="out" units="mV"/>
</component>
<connection>
<map_components component_1="control_para" component_2="EC_uSMC"/>
<map_variables variable_1="Nai" variable_2="Nai"/>
<map_variables variable_1="inhPump" variable_2="inhPump"/>
<map_variables variable_1="K_Cahalf" variable_2="K_Cahalf"/>
</connection>
<connection>
<map_components component_1="mPulse_protocol_s" component_2="EC_uSMC"/>
<map_variables variable_1="V" variable_2="V"/>
</connection>
<component name="outputs">
<variable name="time" public_interface="in" units="second"/>
<variable name="V" public_interface="in" units="mV"/>
<variable name="Cai" public_interface="in" units="mM"/>
<variable name="J_VOCC" public_interface="in" units="mM_per_s"/>
<variable name="J_CaPump" public_interface="in" units="mM_per_s"/>
<variable name="J_NaCa" public_interface="in" units="mM_per_s"/>
<variable name="K_1" public_interface="in" units="per_s"/>
<!-- var stress: dimensionless {pub: in};
var phosphorylation: dimensionless {pub: in};-->
</component>
<connection>
<map_components component_1="EC_uSMC" component_2="outputs"/>
<map_variables variable_1="Cai" variable_2="Cai"/>
<map_variables variable_1="J_VOCC" variable_2="J_VOCC"/>
<map_variables variable_1="J_CaPump" variable_2="J_CaPump"/>
<map_variables variable_1="J_NaCa" variable_2="J_NaCa"/>
<!-- vars stress and stress;
vars phosphorylation and phosphorylation;-->
</connection>
<connection>
<map_components component_1="outputs" component_2="K_1"/>
<map_variables variable_1="K_1" variable_2="K_1"/>
</connection>
<connection>
<map_components component_1="outputs" component_2="time_s"/>
<map_variables variable_1="time" variable_2="time"/>
</connection>
<connection>
<map_components component_1="mPulse_protocol_s" component_2="outputs"/>
<map_variables variable_1="V" variable_2="V"/>
</connection>
<connection>
<map_components component_1="model_para" component_2="EC_uSMC"/>
<map_variables variable_1="T" variable_2="T"/>
<map_variables variable_1="Nao" variable_2="Nao"/>
<map_variables variable_1="Cao" variable_2="Cao"/>
<map_variables variable_1="V_cell" variable_2="V_cell"/>
<map_variables variable_1="V_Cahalf" variable_2="V_Cahalf"/>
<map_variables variable_1="g_mCa" variable_2="g_mCa"/>
<map_variables variable_1="V_pmax" variable_2="V_pmax"/>
<map_variables variable_1="n" variable_2="n"/>
<map_variables variable_1="K_ph" variable_2="K_ph"/>
<map_variables variable_1="K_NaCa" variable_2="K_NaCa"/>
<map_variables variable_1="G_NaCa" variable_2="G_NaCa"/>
<map_variables variable_1="n_M" variable_2="n_M"/>
<map_variables variable_1="Ca_halfMLCK" variable_2="Ca_halfMLCK"/>
<!-- vars K_7 and K_7;
vars K_2 and K_2;
vars K_3 and K_3;-->
</connection>
<connection>
<map_components component_1="constants" component_2="EC_uSMC"/>
<map_variables variable_1="R" variable_2="R"/>
<map_variables variable_1="F" variable_2="F"/>
</connection>
<!-- We connect the initial conditions through to the model-->
<connection>
<map_components component_1="initials" component_2="EC_uSMC"/>
<!-- vars M_init and M_init;
vars Mp_init and Mp_init;
vars AM_init and AM_init;
vars AMp_init and AMp_init;-->
<map_variables variable_1="Cai_init" variable_2="Cai_init"/>
</connection>
<connection>
<map_components component_1="Vstim_para" component_2="mPulse_protocol_s"/>
<map_variables variable_1="t_ss" variable_2="t_ss"/>
<map_variables variable_1="V_actHolding" variable_2="V_actHolding"/>
<map_variables variable_1="t_act" variable_2="t_act"/>
<map_variables variable_1="V_actTest" variable_2="V_actTest"/>
<map_variables variable_1="t_intp" variable_2="t_intp"/>
<map_variables variable_1="np" variable_2="np"/>
</connection>
</model>