Role of afferent-hair cell connectivity in determining spike train regularity (Holmes et al 2017)

 Download zip file 
Help downloading and running models
Accession:241240
"Vestibular bouton afferent terminals in turtle utricle can be categorized into four types depending on their location and terminal arbor structure: lateral extrastriolar (LES), striolar, juxtastriolar, and medial extrastriolar (MES). The terminal arbors of these afferents differ in surface area, total length, collecting area, number of boutons, number of bouton contacts per hair cell, and axon diameter (Huwe JA, Logan CJ, Williams B, Rowe MH, Peterson EH. J Neurophysiol 113: 2420 –2433, 2015). To understand how differences in terminal morphology and the resulting hair cell inputs might affect afferent response properties, we modeled representative afferents from each region, using reconstructed bouton afferents. ..."
Reference:
1 . Holmes WR, Huwe JA, Williams B, Rowe MH, Peterson EH (2017) Models of utricular bouton afferents: role of afferent-hair cell connectivity in determining spike train regularity. J Neurophysiol 117:1969-1986 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Axon;
Brain Region(s)/Organism: Turtle vestibular system;
Cell Type(s): Vestibular neuron; Turtle vestibular neuron;
Channel(s): I A; I h; I K; I K,Ca; I L high threshold; I M; I Na,t; I_KD;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Action Potentials; Activity Patterns;
Implementer(s): Holmes, William [holmes at ohio.edu];
Search NeuronDB for information about:  I Na,t; I L high threshold; I A; I K; I M; I h; I K,Ca; I_KD;
TITLE H channel
: From Liu et al. JARO 2014               
NEURON {
  SUFFIX 	H_HCNl
  NONSPECIFIC_CURRENT i
  RANGE		gbar, g, eh

  GLOBAL 	inf_n, tau_n, inf_ns, tau_ns
}

PARAMETER {
  eh		= -32	(mV)
  gbar		= 30 	(pS/um2)

  : inf_n parameters
  gates_n	= 2
  vhalf_n	= -98	(mV)
  slope_n	= 9	(mV)
  needAdj = 1
  vhalfA_n 	= 0 (mV)		: adjusted for ngate power; Set in ngate_adjust()
  slopeA_n	= 0 (mV)
  v5_adj	= 0 (mV)		: for return values in ngate_adjust
  slp_adj	= 0 (mV)
: vhat_n	= -88 (mV)
: shat_n	= 10.72  (mV)

  : inf_ns parameters
  gates_ns	= 1
  vhalf_ns	= -98	(mV)
  slope_ns	= 9	(mV)
:  vhalfA_ns 	= 0 (mV)		: adjusted for ngate power; Set in ngate_adjust()
:  slopeA_ns	= 0 (mV)
:  v5_adj	= 0 (mV)		: for return values in ngate_adjust
:  slp_adj	= 0 (mV)
: vhat_ns	= -98 (mV)
: shat_ns	= 9  (mV)

  : tau_n parameters
  tauA_n	= 107	(ms)
  tauDv_n	= 0	(mV)	: Delta to vhalf_n
  tauG_n	= 0.37		: Left-right bias. range is (0,1)
  tauF_n	= 0		: Up-Down bias. range is ~ -3.5(cup-shape), -3(flat), 0(from k), 1(sharper)
  tau0_n	= 14.7 	(ms)	: minimum tau

  : tau_n parameters
  tauA_ns	= 367	(ms)
  tauDv_ns	= 0	(mV)	: Delta to vhalf_n
  tauG_ns	= 0.3975	: Left-right bias. range is (0,1)
  tauF_ns	= 0		: Up-Down bias. range is ~ -3.5(cup-shape), -3(flat), 0(from k), 1(sharper)
  tau0_ns	= 161.3	 (ms)	: minimum tau

}

STATE {
  n
  ns
}

ASSIGNED {
  v		(mV)
  celsius	(degC)
  ik 		(mA/cm2)
  g		(pS/um2)
  i		(mA/cm2)
  inf_n
  tau_n		(ms)
  inf_ns
  tau_ns	(ms)
}

BREAKPOINT {
  SOLVE states METHOD cnexp
  g = 0
  if( n >=0 ){	: make sure no domain error for pow. Cvode may test it
    g 	= gbar * (0.434*n^gates_n+(1-0.434)*ns^gates_ns)
  }
  i	= g * ( v - eh ) * (1e-4)
}

INITIAL {
  needAdj = 1
  rates( v )
  n = inf_n
  ns = inf_ns
}

UNITS {
  (mA)	= (milliamp)
  (mV)	= (millivolt)
  (pS)	= (picosiemens)
  (um)	= (micrometer)
}

DERIVATIVE states {     : exact when v held constant; integrates over dt step
  rates( v )
  n' = ( inf_n - n )/ tau_n
  ns' = ( inf_ns - ns )/ tau_ns
}

PROCEDURE rates( v (mV)){
  if( needAdj > 0 ){  : gives given values when gates_n=1
    needAdj = 0
    ngate_adjust( gates_n, vhalf_n, slope_n )
    vhalfA_n = v5_adj
    slopeA_n = slp_adj
  }
  inf_n = Boltzmann( v, vhalfA_n, slopeA_n )
  tau_n = BorgMod_tau( v, vhalfA_n, slopeA_n, tau0_n, tauA_n, tauG_n, tauF_n, tauDv_n )
  inf_ns = Boltzmann( v, vhalf_ns, slope_ns )
  tau_ns = BorgMod_tau( v, vhalf_ns, slope_ns, tau0_ns, tauA_ns, tauG_ns, tauF_ns, tauDv_ns )
  
}

FUNCTION Boltzmann( v (mV), v5 (mV), s (mV) ){
  Boltzmann = 1 / (1 + exp( (v - v5) / s ))
}

FUNCTION BorgMod_tau( v (mV), v5 (mV), s (mV), tau0 (ms), tauA (ms), tauG, tauF, tauDv (mV) ) (ms) {
  LOCAL kc, kr, Dv, wr, kf

:  kr = 1000
:  wr = 1000
  Dv = (v - ( v5 + tauDv )) 
:  kc = kr * 10^tauF / s * 1(mV)
  kf =  10^tauF

  BorgMod_tau = tau0 + tauA * 4 * sqrt( tauG * (1-tauG))
 	        / ( exp( - Dv *(1-tauG)*kf/s ) + exp( Dv *tauG*kf/s ))
}

: Boltzmann's inverse
FUNCTION Boltz_m1( x, v5 (mV), s (mV) ) (mV) {
  Boltz_m1 = s * log( 1/x - 1 ) + v5
}

: Find parameters for a Boltzmann eq that when taken to the ngate power matches one with a single power
: return result in v5_adj and slp_adj
: We solve for exact match on two points
PROCEDURE ngate_adjust( ng, vh (mV), slp (mV) ) {
  LOCAL x1, x2, v1, v2
  x1 = 0.3
  x2 = 0.7
  v1 = Boltz_m1( x1, vh, slp )
  v2 = Boltz_m1( x2, vh, slp )
  slp_adj = (v2 - v1)/( log( (1/x2)^(1/ng) - 1 ) - log( (1/x1)^(1/ng) - 1 ) )
  v5_adj = v1 - slp_adj * log( 1 / x1^(1/ng) - 1 )
}







Loading data, please wait...