Location: 12 L Platform 1 model codes @ a8a92308e217 / USMC / Vm_stim_experiment.cellml

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.physiomeproject.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>