<?xml version='1.0' encoding='UTF-8'?>
<!-- Model for Piezo1 based on the 4 state model
  Lewis, A. H., Cui, A. F., McDonald, M. F., & Grandl, J. (2017). Transduction of repetitive mechanical stimuli by Piezo1 and Piezo2 ion channels. Cell reports, 19(12), 2572-2585.
 And the experiments found in
  Wu, J., Young, M., Lewis, A. H., Martfeld, A. N., Kalmeta, B., & Grandl, J. (2017). Inactivation of mechanically activated Piezo1 ion channels is determined by the C-terminal extracellular domain and the inner pore helix. Cell reports, 21(9), 2357-2366.
  Moroni, M., Servin-Vences, M. R., Fleischer, R., Sánchez-Carranza, O., & Lewin, G. R. (2018). Voltage gating of mechanosensitive PIEZO channels. Nature communications, 9(1), 1-15.
  Lewis, A. H., & Grandl, J. (2020). Inactivation kinetics and mechanical gating of Piezo1 ion channels depend on subdomains within the cap. Cell reports, 30(3), 870-880.-->
<model name="ogiermann_2025_piezo1_model" 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="ogiermann_2025_piezo1_params.cellml">
        <component component_ref="parameters" name="myparameters"/>
        <!--comp myequilibrium using comp equilibrium;-->
    </import>
    <!--def map between kinetics and myequilibrium for
    vars P_Open and P_Open;
   vars P_Closed and P_Closed;
   vars P_I1 and P_I1;
   vars P_I2 and P_I2;
enddef;-->
    <connection>
        <map_components component_1="myparameters" component_2="kinetics"/>
        <map_variables variable_1="r1" variable_2="r1"/>
        <map_variables variable_1="r2" variable_2="r2"/>
        <map_variables variable_1="r3" variable_2="r3"/>
        <map_variables variable_1="r4" variable_2="r4"/>
        <map_variables variable_1="r5" variable_2="r5"/>
        <map_variables variable_1="r6" variable_2="r6"/>
        <map_variables variable_1="r7" variable_2="r7"/>
        <map_variables variable_1="r8" variable_2="r8"/>
        <map_variables variable_1="ce1" variable_2="ce1"/>
        <map_variables variable_1="ce2" variable_2="ce2"/>
        <map_variables variable_1="ce3" variable_2="ce3"/>
        <map_variables variable_1="ce4" variable_2="ce4"/>
        <map_variables variable_1="ce5" variable_2="ce5"/>
        <map_variables variable_1="ce6" variable_2="ce6"/>
        <map_variables variable_1="ce7" variable_2="ce7"/>
        <map_variables variable_1="ce8" variable_2="ce8"/>
        <map_variables variable_1="cm2" variable_2="cm2"/>
        <map_variables variable_1="cm4" variable_2="cm4"/>
    </connection>
    <component name="kinetics">
        <variable name="time" public_interface="in" units="ms"/>
        <!-- Inputs-->
        <variable name="pressure" public_interface="in" units="mmHg"/>
        <variable name="gradmu" public_interface="in" units="mV"/>
        <!-- Approximate initial state for 0 pressure and -80 mV-->
        <!--var P_Open: dimensionless {pub: out, priv: in};
var P_Closed: dimensionless {pub: out, priv: in};
var P_I1: dimensionless {pub: out, priv: in};
var P_I2: dimensionless {pub: out, priv: in};-->
        <variable initial_value="0.0" name="P_Open" public_interface="out" units="dimensionless"/>
        <variable initial_value="0.3" name="P_Closed" public_interface="out" units="dimensionless"/>
        <variable initial_value="0.1" name="P_I1" public_interface="out" units="dimensionless"/>
        <variable initial_value="0.6" name="P_I2" public_interface="out" units="dimensionless"/>
        <!-- Parameters-->
        <!--var r1: per_ms {pub: in};
var r2: per_ms {pub: in};
var r3: per_ms {pub: in};
var r4: per_ms {pub: in};
var r5: per_ms {pub: in};
var r6: per_ms {pub: in};
var r7: per_ms {pub: in};
var r8: per_ms {pub: in};
var ce1: dimensionless {pub: in};
var ce2: dimensionless {pub: in};
var ce3: dimensionless {pub: in};
var ce4: dimensionless {pub: in};
var ce5: dimensionless {pub: in};
var ce6: dimensionless {pub: in};
var ce7: dimensionless {pub: in};
var ce8: dimensionless {pub: in};
var cm2: dimensionless {pub: in};
var cm4: dimensionless {pub: in};-->
        <variable initial_value="0.02634342" name="r1" public_interface="out" units="per_ms"/>
        <variable initial_value="0.0008000712" name="r3" public_interface="out" units="per_ms"/>
        <variable initial_value="0.008945307" name="r4" public_interface="out" units="per_ms"/>
        <variable initial_value="1.3529515e-5" name="r5" public_interface="out" units="per_ms"/>
        <variable initial_value="6.206403e-5" name="r6" public_interface="out" units="per_ms"/>
        <variable initial_value="6.603723e-6" name="r7" public_interface="out" units="per_ms"/>
        <variable initial_value="0.00079357607" name="r8" public_interface="out" units="per_ms"/>
        <variable initial_value="-2.3753126" name="ce1" public_interface="out" units="dimensionless"/>
        <variable initial_value="-5.6010337" name="ce3" public_interface="out" units="dimensionless"/>
        <variable initial_value="0.70629007" name="ce4" public_interface="out" units="dimensionless"/>
        <variable initial_value="-12.101605" name="cm4" public_interface="out" units="dimensionless"/>
        <variable initial_value="6.46389" name="ce5" public_interface="out" units="dimensionless"/>
        <variable initial_value="-1.2173947" name="ce6" public_interface="out" units="dimensionless"/>
        <variable initial_value="8.739162" name="ce7" public_interface="out" units="dimensionless"/>
        <variable initial_value="-3.364573" name="ce8" public_interface="out" units="dimensionless"/>
        <variable name="r2" public_interface="out" units="per_ms"/>
        <variable name="ce2" public_interface="out" units="dimensionless"/>
        <variable name="cm2" public_interface="out" units="dimensionless"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>r2</ci>
                <apply>
                    <divide/>
                    <apply>
                        <times/>
                        <ci>r1</ci>
                        <ci>r3</ci>
                        <ci>r5</ci>
                    </apply>
                    <apply>
                        <times/>
                        <ci>r4</ci>
                        <ci>r6</ci>
                    </apply>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>ce2</ci>
                <apply>
                    <minus/>
                    <apply>
                        <minus/>
                        <apply>
                            <plus/>
                            <ci>ce1</ci>
                            <ci>ce3</ci>
                            <ci>ce5</ci>
                        </apply>
                        <ci>ce4</ci>
                    </apply>
                    <ci>ce6</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>cm2</ci>
                <apply>
                    <minus/>
                    <ci>cm4</ci>
                </apply>
            </apply>
        </math>
        <!-- The probability flow along edges for the Markov chain-->
        <variable name="p_O_I1" units="per_ms"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>p_O_I1</ci>
                <apply>
                    <times/>
                    <ci>r1</ci>
                    <apply>
                        <exp/>
                        <apply>
                            <divide/>
                            <apply>
                                <times/>
                                <ci>ce1</ci>
                                <ci>gradmu</ci>
                            </apply>
                            <cn cellml:units="mV">140</cn>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="p_I1_O" units="per_ms"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>p_I1_O</ci>
                <apply>
                    <times/>
                    <ci>r2</ci>
                    <apply>
                        <exp/>
                        <apply>
                            <plus/>
                            <apply>
                                <divide/>
                                <apply>
                                    <times/>
                                    <ci>ce2</ci>
                                    <ci>gradmu</ci>
                                </apply>
                                <cn cellml:units="mV">140</cn>
                            </apply>
                            <apply>
                                <divide/>
                                <apply>
                                    <times/>
                                    <ci>cm2</ci>
                                    <ci>pressure</ci>
                                </apply>
                                <cn cellml:units="mmHg">70</cn>
                            </apply>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="p_I1_C" units="per_ms"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>p_I1_C</ci>
                <apply>
                    <times/>
                    <ci>r3</ci>
                    <apply>
                        <exp/>
                        <apply>
                            <divide/>
                            <apply>
                                <times/>
                                <ci>ce3</ci>
                                <ci>gradmu</ci>
                            </apply>
                            <cn cellml:units="mV">140</cn>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="p_C_I1" units="per_ms"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>p_C_I1</ci>
                <apply>
                    <times/>
                    <ci>r4</ci>
                    <apply>
                        <exp/>
                        <apply>
                            <plus/>
                            <apply>
                                <divide/>
                                <apply>
                                    <times/>
                                    <ci>ce4</ci>
                                    <ci>gradmu</ci>
                                </apply>
                                <cn cellml:units="mV">140</cn>
                            </apply>
                            <apply>
                                <divide/>
                                <apply>
                                    <times/>
                                    <ci>cm4</ci>
                                    <ci>pressure</ci>
                                </apply>
                                <cn cellml:units="mmHg">70</cn>
                            </apply>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="p_C_O" units="per_ms"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>p_C_O</ci>
                <apply>
                    <times/>
                    <ci>r5</ci>
                    <apply>
                        <exp/>
                        <apply>
                            <divide/>
                            <apply>
                                <times/>
                                <ci>ce5</ci>
                                <ci>gradmu</ci>
                            </apply>
                            <cn cellml:units="mV">140</cn>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="p_O_C" units="per_ms"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>p_O_C</ci>
                <apply>
                    <times/>
                    <ci>r6</ci>
                    <apply>
                        <exp/>
                        <apply>
                            <divide/>
                            <apply>
                                <times/>
                                <ci>ce6</ci>
                                <ci>gradmu</ci>
                            </apply>
                            <cn cellml:units="mV">140</cn>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="p_I2_O" units="per_ms"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>p_I2_O</ci>
                <apply>
                    <times/>
                    <ci>r7</ci>
                    <apply>
                        <exp/>
                        <apply>
                            <divide/>
                            <apply>
                                <times/>
                                <apply>
                                    <divide/>
                                    <apply>
                                        <times/>
                                        <ci>ce7</ci>
                                        <ci>gradmu</ci>
                                    </apply>
                                    <cn cellml:units="mV">140</cn>
                                </apply>
                                <ci>pressure</ci>
                            </apply>
                            <cn cellml:units="mmHg">70</cn>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="p_O_I2" units="per_ms"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>p_O_I2</ci>
                <apply>
                    <times/>
                    <ci>r8</ci>
                    <apply>
                        <exp/>
                        <apply>
                            <divide/>
                            <apply>
                                <times/>
                                <ci>ce8</ci>
                                <ci>gradmu</ci>
                            </apply>
                            <cn cellml:units="mV">140</cn>
                        </apply>
                    </apply>
                </apply>
            </apply>
            <!-- Evolution law-->
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>time</ci>
                    </bvar>
                    <ci>P_Open</ci>
                </apply>
                <apply>
                    <plus/>
                    <apply>
                        <times/>
                        <apply>
                            <minus/>
                            <apply>
                                <plus/>
                                <ci>p_O_I1</ci>
                                <ci>p_O_I2</ci>
                                <ci>p_O_C</ci>
                            </apply>
                        </apply>
                        <ci>P_Open</ci>
                    </apply>
                    <apply>
                        <times/>
                        <ci>p_C_O</ci>
                        <ci>P_Closed</ci>
                    </apply>
                    <apply>
                        <times/>
                        <ci>p_I1_O</ci>
                        <ci>P_I1</ci>
                    </apply>
                    <apply>
                        <times/>
                        <ci>p_I2_O</ci>
                        <ci>P_I2</ci>
                    </apply>
                </apply>
            </apply>
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>time</ci>
                    </bvar>
                    <ci>P_Closed</ci>
                </apply>
                <apply>
                    <plus/>
                    <apply>
                        <times/>
                        <apply>
                            <minus/>
                            <apply>
                                <plus/>
                                <ci>p_C_I1</ci>
                                <ci>p_C_O</ci>
                            </apply>
                        </apply>
                        <ci>P_Closed</ci>
                    </apply>
                    <apply>
                        <times/>
                        <ci>p_O_C</ci>
                        <ci>P_Open</ci>
                    </apply>
                    <apply>
                        <times/>
                        <ci>p_I1_C</ci>
                        <ci>P_I1</ci>
                    </apply>
                </apply>
            </apply>
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>time</ci>
                    </bvar>
                    <ci>P_I1</ci>
                </apply>
                <apply>
                    <plus/>
                    <apply>
                        <times/>
                        <apply>
                            <minus/>
                            <apply>
                                <plus/>
                                <ci>p_I1_O</ci>
                                <ci>p_I1_C</ci>
                            </apply>
                        </apply>
                        <ci>P_I1</ci>
                    </apply>
                    <apply>
                        <times/>
                        <ci>p_C_I1</ci>
                        <ci>P_Closed</ci>
                    </apply>
                    <apply>
                        <times/>
                        <ci>p_O_I1</ci>
                        <ci>P_Open</ci>
                    </apply>
                </apply>
            </apply>
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>time</ci>
                    </bvar>
                    <ci>P_I2</ci>
                </apply>
                <apply>
                    <plus/>
                    <apply>
                        <times/>
                        <apply>
                            <minus/>
                            <ci>p_I2_O</ci>
                        </apply>
                        <ci>P_I2</ci>
                    </apply>
                    <apply>
                        <times/>
                        <ci>p_O_I2</ci>
                        <ci>P_Open</ci>
                    </apply>
                </apply>
            </apply>
        </math>
    </component>
</model>
