TITLE Mod file for component: Component(id=StochKv_deterministic type=ionChannelHH)

COMMENT

    This NEURON file has been generated by org.neuroml.export (see https://github.com/NeuroML/org.neuroml.export)
         org.neuroml.export  v1.4.2
         org.neuroml.model   v1.4.2
         jLEMS               v0.9.7.3

ENDCOMMENT

NEURON {
    SUFFIX StochKv_deterministic
    USEION k WRITE ik VALENCE 1 ? Assuming valence = 1; TODO check this!!
    
    RANGE gion                           
    RANGE gmax                              : Will be changed when ion channel mechanism placed on cell!
    RANGE conductance                       : parameter
    
    RANGE g                                 : exposure
    
    RANGE fopen                             : exposure
    RANGE q10ConductanceScaling_q10Factor   : parameter
    RANGE q10ConductanceScaling_experimentalTemp: parameter
    
    RANGE q10ConductanceScaling_factor      : exposure
    RANGE n_instances                       : parameter
    
    RANGE n_alpha                           : exposure
    
    RANGE n_beta                            : exposure
    
    RANGE n_tau                             : exposure
    
    RANGE n_inf                             : exposure
    
    RANGE n_rateScale                       : exposure
    
    RANGE n_fcond                           : exposure
    RANGE n_reverseRate_rate                : parameter
    RANGE n_reverseRate_midpoint            : parameter
    RANGE n_reverseRate_scale               : parameter
    
    RANGE n_reverseRate_r                   : exposure
    RANGE n_forwardRate_rate                : parameter
    RANGE n_forwardRate_midpoint            : parameter
    RANGE n_forwardRate_scale               : parameter
    
    RANGE n_forwardRate_r                   : exposure
    RANGE n_q10Settings_q10Factor           : parameter
    RANGE n_q10Settings_experimentalTemp    : parameter
    RANGE n_q10Settings_TENDEGREES          : parameter
    
    RANGE n_q10Settings_q10                 : exposure
    RANGE n_reverseRate_x                   : derived variable
    RANGE n_forwardRate_x                   : derived variable
    RANGE conductanceScale                  : derived variable
    RANGE fopenHHrates                      : derived variable
    RANGE fopenHHtauInf                     : derived variable
    RANGE fopenHHratesTau                   : derived variable
    RANGE fopenHHratesInf                   : derived variable
    RANGE fopenHHratesTauInf                : derived variable
    
}

UNITS {
    
    (nA) = (nanoamp)
    (uA) = (microamp)
    (mA) = (milliamp)
    (A) = (amp)
    (mV) = (millivolt)
    (mS) = (millisiemens)
    (uS) = (microsiemens)
    (molar) = (1/liter)
    (kHz) = (kilohertz)
    (mM) = (millimolar)
    (um) = (micrometer)
    (umol) = (micromole)
    (S) = (siemens)
    
}

PARAMETER {
    
    gmax = 0  (S/cm2)                       : Will be changed when ion channel mechanism placed on cell!
    
    conductance = 1.0E-5 (uS)
    q10ConductanceScaling_q10Factor = 2.3 
    q10ConductanceScaling_experimentalTemp = 296.15 (K)
    n_instances = 1 
    n_reverseRate_rate = 0.018000001 (kHz)
    n_reverseRate_midpoint = -40 (mV)
    n_reverseRate_scale = -9 (mV)
    n_forwardRate_rate = 0.18 (kHz)
    n_forwardRate_midpoint = -40 (mV)
    n_forwardRate_scale = 9 (mV)
    n_q10Settings_q10Factor = 2.3 
    n_q10Settings_experimentalTemp = 296.15 (K)
    n_q10Settings_TENDEGREES = 10 (K)
}

ASSIGNED {
    
    gion   (S/cm2)                          : Transient conductance density of the channel? Standard Assigned variables with ionChannel
    v (mV)
    celsius (degC)
    temperature (K)
    ek (mV)
    ik (mA/cm2)
    
    
    q10ConductanceScaling_factor           : derived variable
    
    n_reverseRate_x                        : derived variable
    
    n_reverseRate_r (kHz)                  : conditional derived var...
    
    n_forwardRate_x                        : derived variable
    
    n_forwardRate_r (kHz)                  : conditional derived var...
    
    n_q10Settings_q10                      : derived variable
    
    n_rateScale                            : derived variable
    
    n_alpha (kHz)                          : derived variable
    
    n_beta (kHz)                           : derived variable
    
    n_fcond                                : derived variable
    
    n_inf                                  : derived variable
    
    n_tau (ms)                             : derived variable
    
    conductanceScale                       : derived variable
    
    fopenHHrates                           : derived variable
    
    fopenHHtauInf                          : derived variable
    
    fopenHHratesTau                        : derived variable
    
    fopenHHratesInf                        : derived variable
    
    fopenHHratesTauInf                     : derived variable
    
    fopen                                  : derived variable
    
    g (uS)                                 : derived variable
    rate_n_q (/ms)
    
}

STATE {
    n_q 
    
}

INITIAL {
    ek = -85.0
    
    temperature = celsius + 273.15
    
    rates()
    rates() ? To ensure correct initialisation.
    
    n_q = n_inf
    
}

BREAKPOINT {
    
    SOLVE states METHOD cnexp
    
    ? DerivedVariable is based on path: conductanceScaling[*]/factor, on: Component(id=StochKv_deterministic type=ionChannelHH), from conductanceScaling; Component(id=null type=q10ConductanceScaling)
    conductanceScale = q10ConductanceScaling_factor ? multiply applied to all instances of factor in: <conductanceScaling> ([Component(id=null type=q10ConductanceScaling)]) c2 ([Component(id=null type=annotation), Component(id=null type=notes), Component(id=null type=q10ConductanceScaling), Component(id=n type=gateHHrates)]) ? path based
    
    ? DerivedVariable is based on path: gatesHHrates[*]/fcond, on: Component(id=StochKv_deterministic type=ionChannelHH), from gatesHHrates; Component(id=n type=gateHHrates)
    fopenHHrates = n_fcond ? multiply applied to all instances of fcond in: <gatesHHrates> ([Component(id=n type=gateHHrates)]) c2 ([Component(id=null type=annotation), Component(id=null type=notes), Component(id=null type=q10ConductanceScaling), Component(id=n type=gateHHrates)]) ? path based
    
    ? DerivedVariable is based on path: gatesHHtauInf[*]/fcond, on: Component(id=StochKv_deterministic type=ionChannelHH), from gatesHHtauInf; null
    ? Path not present in component, using factor: 1
    
    fopenHHtauInf = 1 
    
    ? DerivedVariable is based on path: gatesHHratesTau[*]/fcond, on: Component(id=StochKv_deterministic type=ionChannelHH), from gatesHHratesTau; null
    ? Path not present in component, using factor: 1
    
    fopenHHratesTau = 1 
    
    ? DerivedVariable is based on path: gatesHHratesInf[*]/fcond, on: Component(id=StochKv_deterministic type=ionChannelHH), from gatesHHratesInf; null
    ? Path not present in component, using factor: 1
    
    fopenHHratesInf = 1 
    
    ? DerivedVariable is based on path: gatesHHratesTauInf[*]/fcond, on: Component(id=StochKv_deterministic type=ionChannelHH), from gatesHHratesTauInf; null
    ? Path not present in component, using factor: 1
    
    fopenHHratesTauInf = 1 
    
    fopen = conductanceScale  *  fopenHHrates  *  fopenHHtauInf  *  fopenHHratesTau  *  fopenHHratesInf  *  fopenHHratesTauInf ? evaluable
    g = conductance  *  fopen ? evaluable
    gion = gmax * fopen 
    
    ik = gion * (v - ek)
    
}

DERIVATIVE states {
    rates()
    n_q' = rate_n_q 
    
}

PROCEDURE rates() {
    
    q10ConductanceScaling_factor = q10ConductanceScaling_q10Factor ^((temperature -  q10ConductanceScaling_experimentalTemp )/10) ? evaluable
    n_reverseRate_x = (v -  n_reverseRate_midpoint ) /  n_reverseRate_scale ? evaluable
    if (n_reverseRate_x  != 0)  { 
        n_reverseRate_r = n_reverseRate_rate  *  n_reverseRate_x  / (1 - exp(0 -  n_reverseRate_x )) ? evaluable cdv
    } else if (n_reverseRate_x  == 0)  { 
        n_reverseRate_r = n_reverseRate_rate ? evaluable cdv
    }
    
    n_forwardRate_x = (v -  n_forwardRate_midpoint ) /  n_forwardRate_scale ? evaluable
    if (n_forwardRate_x  != 0)  { 
        n_forwardRate_r = n_forwardRate_rate  *  n_forwardRate_x  / (1 - exp(0 -  n_forwardRate_x )) ? evaluable cdv
    } else if (n_forwardRate_x  == 0)  { 
        n_forwardRate_r = n_forwardRate_rate ? evaluable cdv
    }
    
    n_q10Settings_q10 = n_q10Settings_q10Factor ^((temperature -  n_q10Settings_experimentalTemp )/ n_q10Settings_TENDEGREES ) ? evaluable
    ? DerivedVariable is based on path: q10Settings[*]/q10, on: Component(id=n type=gateHHrates), from q10Settings; Component(id=null type=q10ExpTemp)
    n_rateScale = n_q10Settings_q10 ? multiply applied to all instances of q10 in: <q10Settings> ([Component(id=null type=q10ExpTemp)]) c2 ([Component(id=null type=HHExpLinearRate), Component(id=null type=HHExpLinearRate), Component(id=null type=q10ExpTemp)]) ? path based
    
    ? DerivedVariable is based on path: forwardRate/r, on: Component(id=n type=gateHHrates), from forwardRate; Component(id=null type=HHExpLinearRate)
    n_alpha = n_forwardRate_r ? path based
    
    ? DerivedVariable is based on path: reverseRate/r, on: Component(id=n type=gateHHrates), from reverseRate; Component(id=null type=HHExpLinearRate)
    n_beta = n_reverseRate_r ? path based
    
    n_fcond = n_q ^ n_instances ? evaluable
    n_inf = n_alpha /( n_alpha + n_beta ) ? evaluable
    n_tau = 1/(( n_alpha + n_beta ) *  n_rateScale ) ? evaluable
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    rate_n_q = ( n_inf  -  n_q ) /  n_tau ? Note units of all quantities used here need to be consistent!
    
     
    
     
    
     
    
     
    
}