<neuroml>

    <ComponentType name="glifRAscATCell"
        extends="baseIafCapCell"
        description="GLIF...">

        <Parameter name="leakConductance" dimension="conductance"/>
        <Parameter name="leakReversal" dimension="voltage"/>
        
        <Parameter name="tau1" dimension="time"/>
        <Parameter name="tau2" dimension="time"/>
        <Parameter name="amp1" dimension="current"/>
        <Parameter name="amp2" dimension="current"/>
        
        <Parameter name="bs" dimension="per_time"/>
        <Parameter  name="deltaThresh" dimension="voltage"/>
        <Parameter  name="deltaV" dimension="voltage"/>
        <Parameter name="fv" dimension="none"/>
        
        <Parameter name="a" dimension="per_time"/>
        <Parameter name="bv" dimension="per_time"/>
        
        <Exposure name="asc1" dimension="current" description="After-spike current 1"/>
        <Exposure name="asc2" dimension="current" description="After-spike current 2"/>
        
        <Exposure  name="threshTotal" dimension="voltage"/>

        <Attachments name="synapses" type="basePointCurrent"/>

        <Dynamics>

            <StateVariable name="v" exposure="v" dimension="voltage"/>
            
            <StateVariable name="asc1" exposure="asc1" dimension="current"/>
            <StateVariable name="asc2" exposure="asc2" dimension="current"/>
            
            <StateVariable name="threshS" dimension="voltage"/>
            <StateVariable name="threshV" dimension="voltage"/>

            <DerivedVariable name="iSyn" dimension="current" exposure="iSyn" select="synapses[*]/i" reduce="add" />
            <DerivedVariable name="iMemb" dimension="current" exposure="iMemb" value="leakConductance * (leakReversal - v) + asc1 + asc2 + iSyn"/>

            <DerivedVariable name="threshTotal" dimension="voltage" exposure="threshTotal" value="threshV + threshS" />
            
            <TimeDerivative variable="v" value="iMemb / C"/>
            <TimeDerivative variable="asc1" value="-1 * asc1 / tau1"/>
            <TimeDerivative variable="asc2" value="-1 * asc2 / tau2"/>
            <TimeDerivative variable="threshS" value="-1 * bs * threshS"/>
            
            <TimeDerivative variable="threshV" value="a * (v - leakReversal) - ( bv * (threshV - thresh))"/>

            <OnStart>
                <StateAssignment variable="v" value="leakReversal"/>
                <StateAssignment variable="threshV" value="thresh"/>
            </OnStart>

            <OnCondition test="v .gt. threshTotal">
                <StateAssignment variable="asc1" value="asc1 + amp1"/>
                <StateAssignment variable="asc2" value="asc2 + amp2"/>
                <StateAssignment variable="v" value="leakReversal + fv * (v - leakReversal) + deltaV"/>
                <StateAssignment variable="threshS" value="threshS + deltaThresh"/>
                <EventOut port="spike"/>
            </OnCondition>

        </Dynamics>

    </ComponentType>

      <glifRAscATCell  id="GLIF_472455459"
            C="7.7806857476e-11 F"
            leakReversal="0.0 V"
            reset="0.0 V"
            thresh="0.0216698452899 V"
            leakConductance="4.6942496176e-09 S"
            tau1="0.0333333333333 s"
            tau2="0.00333333333333 s"
            amp1="-5.32840737219e-11 A"
            amp2="5.97838489802e-11 A"
            bs="35.4365847213 per_s"
            deltaThresh="0.00180161838228 V"
            fv="0.983105247715"
            deltaV="-0.015394347765 V"
            bv="82.4195365203 per_s"
            a="4.0434269749 per_s"/>

    </neuroml>
    