<?xml version="1.0" encoding="UTF-8"?>

<neuroml xmlns="http://www.neuroml.org/schema/neuroml2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.neuroml.org/schema/neuroml2  ../Schemas/NeuroML2/NeuroML_v2beta4.xsd"
    id="pinskyRinzelCA3Cell">


    <pinskyRinzelCA3CellNmlDB id="pr2A" iSoma="0.75 uA_per_cm2" iDend="0 uA_per_cm2" gc="2.1 mS_per_cm2" qd0="0"
                         gLs="0.1 mS_per_cm2" gLd="0.1 mS_per_cm2" gNa="30 mS_per_cm2" gKdr="15 mS_per_cm2"
                         gCa="10 mS_per_cm2" gKahp="0.8 mS_per_cm2" gKC="15 mS_per_cm2" eNa="60 mV" eCa="80 mV" eK="-75 mV" eL="-60 mV"
                         pp="0.5" cm="3 uF_per_cm2" alphac="2" betac="0.1"
                         gNmda="0 mS_per_cm2" gAmpa="0 mS_per_cm2" />

    <ComponentType name="pinskyRinzelCA3CellNmlDB"
                   extends="baseCellMembPot"
                   description="Reduced CA3 cell model from Pinsky and Rinzel 1994. See https://github.com/OpenSourceBrain/PinskyRinzelModel">

            <Parameter name="iSoma" dimension="currentDensity"/>
            <Parameter name="iDend" dimension="currentDensity"/>
            
            <Parameter name="gLs" dimension="conductanceDensity"/>
            <Parameter name="gLd" dimension="conductanceDensity"/>
            <Parameter name="gNa" dimension="conductanceDensity"/>
            <Parameter name="gKdr" dimension="conductanceDensity"/>
            <Parameter name="gCa" dimension="conductanceDensity"/>
            <Parameter name="gKahp" dimension="conductanceDensity"/>
            <Parameter name="gKC" dimension="conductanceDensity"/>
            <Parameter name="gc" dimension="conductanceDensity"/>
            
            <Parameter name="eNa" dimension="voltage"/>
            <Parameter name="eCa" dimension="voltage"/>
            <Parameter name="eK" dimension="voltage"/>
            <Parameter name="eL" dimension="voltage"/>
            
            <Parameter name="pp" dimension="none"/>
            <Parameter name="cm" dimension="specificCapacitance"/>
            <Parameter name="alphac" dimension="none"/>
            <Parameter name="betac" dimension="none"/>

            <Parameter name="gNmda" dimension="conductanceDensity"/>
            <Parameter name="gAmpa" dimension="conductanceDensity"/>
            <Parameter name="qd0" dimension="none"/>
        
            <!-- Normalizing Constants -->
            <Constant name="MSEC" dimension="time" value="1 ms"/>
            <Constant name="MVOLT" dimension="voltage" value="1 mV"/>
            <Constant name="UAMP_PER_CM2" dimension="currentDensity" value="1 uA_per_cm2"/>
        
            <!-- Model Constants -->
            <Constant name="Smax" dimension="none" value="125.0"/>
            <Constant name="Vsyn" dimension="voltage" value="60.0 mV"/>
            <Constant name="betaqd" dimension="none" value="0.001"/>
            
            <Exposure name="Vs" dimension="voltage"/>
            <Exposure name="Vd" dimension="voltage"/>
            <Exposure name="ICad" dimension="currentDensity"/>
            <Exposure name="Cad" dimension="none"/>
            <Exposure name="hs" dimension="none"/>
            <Exposure name="ns" dimension="none"/>
            <Exposure name="sd" dimension="none"/>
            <Exposure name="cd" dimension="none"/>
            <Exposure name="qd" dimension="none"/>
            <Exposure name="Si" dimension="none"/>
            <Exposure name="Wi" dimension="none"/>
        
        
            <Dynamics>
            
                <StateVariable name="Vs" dimension="voltage" exposure="Vs"/>
                <StateVariable name="Vd" dimension="voltage" exposure="Vd"/>
                <StateVariable name="Cad" dimension="none" exposure="Cad"/>
                <StateVariable name="hs" dimension="none" exposure="hs"/>
                <StateVariable name="ns" dimension="none" exposure="ns"/>
                <StateVariable name="sd" dimension="none" exposure="sd"/>
                <StateVariable name="cd" dimension="none" exposure="cd"/>
                <StateVariable name="qd" dimension="none" exposure="qd"/>


                <!-- Synaptic Dynamics -->
                <StateVariable name="Si" dimension="none" exposure="Si"/>
                <StateVariable name="Wi" dimension="none" exposure="Wi"/>

                <!-- baseCellMembPot compatibility -->
                <DerivedVariable name="v" dimension="voltage" value="Vs" exposure="v"/>
                <DerivedVariable name="ICad" dimension="currentDensity" exposure="ICad" value="gCa*sd*sd*(Vd-eCa)"/>



                <DerivedVariable name="alphams_Vs" dimension="none" value="0.32*(-46.9-Vs/MVOLT)/(exp((-46.9-Vs/MVOLT)/4.0)-1.0)"/>
                <DerivedVariable name="betams_Vs" dimension="none" value="0.28*(Vs/MVOLT+19.9)/(exp((Vs/MVOLT+19.9)/5.0)-1.0)"/>
                <DerivedVariable name="Minfs_Vs" dimension="none" value="alphams_Vs/(alphams_Vs+betams_Vs)"/>

                <DerivedVariable name="alphans_Vs" dimension="none" value="0.016*(-24.9-Vs/MVOLT)/(exp((-24.9-Vs/MVOLT)/5.0)-1.0)"/>
                <DerivedVariable name="betans_Vs" dimension="none" value="0.25*exp(-1.0-0.025*Vs/MVOLT)"/>

                <DerivedVariable name="alphahs_Vs" dimension="none" value="0.128*exp((-43.0-Vs/MVOLT)/18.0)"/>
                <DerivedVariable name="betahs_Vs" dimension="none" value="4.0/(1.0+exp((-20.0-Vs/MVOLT)/5.0))"/>

                <DerivedVariable name="alphasd_Vd" dimension="none" value="1.6/(1.0+exp(-0.072*(Vd/MVOLT-5.0)))"/>
                <DerivedVariable name="betasd_Vd" dimension="none" value="0.02*(Vd/MVOLT+8.9)/(exp((Vd/MVOLT+8.9)/5.0)-1.0)"/>


                <DerivedVariable name="Iampa" dimension="currentDensity" value="gAmpa*Wi*(Vd-Vsyn)"/>


                <ConditionalDerivedVariable name="alphaqd" dimension="none">
                    <Case condition="0.00002*Cad .gt. 0.01" value="0.01"/>
                    <Case value="0.00002*Cad"/>
                </ConditionalDerivedVariable>

                <ConditionalDerivedVariable name="chid" dimension="none">
                    <Case condition="Cad/250 .gt. 1" value="1"/>
                    <Case value="Cad/250"/>
                </ConditionalDerivedVariable>

                <ConditionalDerivedVariable name="alphacd_Vd" dimension="none">
                    <Case condition="Vd .lt. -10*MVOLT" value="exp((Vd/MVOLT+50.0)/11-(Vd/MVOLT+53.5)/27)/18.975"/>
                    <Case value="2.0*exp((-53.5-Vd/MVOLT)/27.0)"/>
                </ConditionalDerivedVariable>

                <ConditionalDerivedVariable name="betacd_Vd" dimension="none">
                    <Case condition="Vd .lt. -10*MVOLT" value="(2.0*exp((-53.5-Vd/MVOLT)/27.0)-alphacd_Vd)"/>
                    <Case value="0"/>
                </ConditionalDerivedVariable>


                <ConditionalDerivedVariable name="Sisat" dimension="none">
                    <Case condition="Si .gt. Smax" value="Smax"/>
                    <Case value="Si"/>
                </ConditionalDerivedVariable>

                <ConditionalDerivedVariable name="Inmda" dimension="currentDensity">
                    <Case condition="1 .eq. 1" value="gNmda*Sisat*(Vd-Vsyn)/(1.0+0.28*exp(-0.062*(Vd/MVOLT-60.0)))"/>
                </ConditionalDerivedVariable>

                <ConditionalDerivedVariable name="Isyn" dimension="currentDensity">
                    <Case condition="1 .eq. 1" value="Iampa+Inmda"/>
                </ConditionalDerivedVariable>

                <TimeDerivative variable="Vs" value="(-gLs*(Vs-eL)-gNa*(Minfs_Vs^2)*hs*(Vs-eNa)-gKdr*ns*(Vs-eK)+(gc/pp)*(Vd-Vs)+iSoma/pp) / cm"/>
                <TimeDerivative variable="Vd" value="(iDend/(1.0-pp)-Isyn/(1.0-pp)-gLd*(Vd-eL)-ICad-gKahp*qd*(Vd-eK)-gKC*cd*chid*(Vd-eK)+(gc*(Vs-Vd))/(1.0-pp)) / cm"/>
                <TimeDerivative variable="Cad" value="(-0.13*ICad/UAMP_PER_CM2-0.075*Cad) / MSEC"/>
                <TimeDerivative variable="hs" value="(alphahs_Vs-(alphahs_Vs+betahs_Vs)*hs) / MSEC"/>
                <TimeDerivative variable="ns" value="(alphans_Vs-(alphans_Vs+betans_Vs)*ns) / MSEC"/>
                <TimeDerivative variable="sd" value="(alphasd_Vd-(alphasd_Vd+betasd_Vd)*sd) / MSEC"/>
                <TimeDerivative variable="cd" value="(alphacd_Vd-(alphacd_Vd+betacd_Vd)*cd) / MSEC"/>
                <TimeDerivative variable="qd" value="(alphaqd-(alphaqd+betaqd)*qd) / MSEC"/>

                <!-- Synaptic Dynamics -->
                <TimeDerivative variable="Si" value="-Si/150.0" />
                <TimeDerivative variable="Wi" value="-Wi/2.0" />
	

                <OnStart>
                    <StateAssignment variable="Vs" value="eL"/>
                    <StateAssignment variable="Vd" value="eL"/>
                    <StateAssignment variable="qd" value="qd0" />
                </OnStart>

            </Dynamics>
        
        </ComponentType>


</neuroml>
