Multi-comp. CA1 O-LM interneuron model with varying dendritic Ih distributions (Sekulic et al 2015)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:182797
The model presented here was used to investigate possible dendritic distributions of the HCN channel-mediated current (Ih) in models of oriens-lacunosum/moleculare (O-LM) CA1 hippocampal interneurons. Physiological effects of varying the dendritic distributions consisted of examining back-propagating action potential speeds.
Reference:
1 . Sekulic V, Chen TC, Lawrence JJ, Skinner FK (2015) Dendritic distributions of I h channels in experimentally-derived multi-compartment models of oriens-lacunosum/moleculare (O-LM) hippocampal interneurons. Front Synaptic Neurosci 7:2 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism:
Cell Type(s): Hippocampus CA1 stratum oriens lacunosum-moleculare interneuron ;
Channel(s): I Na,t; I A; I K; I K,leak; I M; I h; I K,Ca; I Calcium; I_AHP;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Dendritic Action Potentials; Active Dendrites; Detailed Neuronal Models; Conductance distributions;
Implementer(s):
Search NeuronDB for information about:  I Na,t; I A; I K; I K,leak; I M; I h; I K,Ca; I Calcium; I_AHP;
/
SekulicEtAl2015
04525047--90nA
04610022--90nA
README.html
cad.mod *
ICaL.mod *
ICaT.mod *
Ih.mod
IKa.mod *
IKCa.mod *
Ikdrf.mod *
Ikdrfaxon.mod *
Ikdrs.mod *
Ikdrsaxon.mod *
Ikleakaxon.mod *
Ikleaksd.mod *
IMminret.mod *
IMmintau.mod *
Ipassaxon.mod *
Ipasssd.mod *
Naaxon.mod *
Nadend.mod *
Nasoma.mod *
.initactivesdRichy.hoc.swp
.ipsc-cihr.hoc.swp
active_mods.hoc
celltestt.dat
dendIh_funcs.hoc
frontiers_Fig10.hoc
ihold_funcs.hoc
init_d_lambda_Richy_trunc.hoc
init_d_lambda_Starfish_full.hoc
init_exp.hoc
init_Richy_RN.hoc
initactivesdRichy.hoc
initactivesdStarfish.hoc
initactivesdStarfishfull.hoc
iprotocol.hoc
ipsc.hoc
ipsc-cihr.hoc
mosinit.hoc
nsegfuncs.hoc
param_active_cond.hoc
params.hoc
Richytrunctest2.hoc
rn.hoc
screen.png
screen1.png
Starfishfull.hoc
Starfishtrunc.hoc
startup_R3.sh
startup_R4.sh
startup_S3.sh
startup_S4.sh
                            
/*
 * MANDATORY command-line args:
 *
 * NB: All conductance density arguments must be supplied in pS/um^2 units;
 *     they will be subsequently converted to mho/cm^2 as expected in the O-LM
 *     code. This is for readability purposes and shortening the filenames for
 *     the model outputs.
 * 
 * Nad, Nas, Kdrf, Kdrs, KA, h, CaL, CaT, AHP, M
 * 	Maximal conductance densities for these channels (suffix "d" indicates
 *      dendrite, "s" soma). Axonal compartments get same value as dendrites.
 *	cf. Table A2, Lawrence et al. 2006; NB that axonal conductance density
 *	for gNa is the same as in dendrites; also recall that the axonal initial
 *	segment is attached to dendrites in O-LM cells (Martina et al. 2000).
 *
 * cinj
 *	Injected current into soma. Must be in pA units, which will subsequently
 * 	be converted to nA as used in NEURON.
 * 
 * hD
 *	Specifies whether the value provided by the h argument should be applied
 * 	to the dendrites or not. If 0, h will only be assigned to somatic 
 *	compartments; if 1, it will be assigned uniformly throughout the entire
 *	somato-dendritic domain.
 * 
 * OPTIONAL command-line args:
 *
 * verbose
 *	Enables extra logging to stdout, particularly displaying what gbar
 * 	values are being set for each conductance in each section.
 *
 * Ref for command-line arg processing in NEURON:
 * 	https://www.neuron.yale.edu/phpBB/viewtopic.php?f=28&t=1747
 *
 * Remember that gkhbar has been commented out as it is being set directly in the mod file.
*/

func set_gbars() {

  quitflag = 0
  if (name_declared("Nad")!=5) { printf("ERROR: no Nad!\n") quitflag=1 }
  if (name_declared("Nas")!=5) { printf("ERROR: no Nas!\n") quitflag=1 }
  if (name_declared("Kdrf")!=5) { printf("ERROR: no Kdrf!\n") quitflag=1 }
  if (name_declared("Kdrs")!=5) { printf("ERROR: no Kdrs!\n") quitflag=1 }
  if (name_declared("KA")!=5) { printf("ERROR: no KA!\n") quitflag=1 }
  if (name_declared("h")!=5) { printf("ERROR: no h!\n") quitflag=1 }
  if (name_declared("hD")!=5) { printf("ERROR: no hD!\n") quitflag=1 }
  if (name_declared("CaL")!=5) { printf("ERROR: no CaL!\n") quitflag=1 }
  if (name_declared("CaT")!=5) { printf("ERROR: no CaT!\n") quitflag=1 }
  if (name_declared("AHP")!=5) { printf("ERROR: no AHP!\n") quitflag=1 }
  if (name_declared("M")!=5) { printf("ERROR: no M!\n") quitflag=1 }

  if (quitflag) {
    return quitflag
  }

  // Convert from pS/um^2 given on command-line to mho/cm^2 expected by the model code.
  Nad = Nad * 10^-4
  Nas = Nas * 10^-4
  Kdrf = Kdrf * 10^-4
  Kdrs = Kdrs * 10^-4
  KA = KA * 10^-4
  h = h * 10^-4
  CaL = CaL * 10^-4
  CaT = CaT * 10^-4
  AHP = AHP * 10^-4
  M = M * 10^-4

  if (VERBOSE) { printf("*** I have Nad |%g| Nas |%g| Kdrf |%g| Kdrs |%g| KA |%g| h |%g| hD |%g| CaL |%g| CaT |%g| AHP |%g| M |%g| ***\n", Nad, Nas, Kdrf, Kdrs, KA, h, hD, CaL, CaT, AHP, M) }

  soma[0] distance() //sets soma[0](0) as origin

  forsec all {
  
    // Somatic compartments
    if (issection("soma.*")) {
      gbar_Ikdrf = Kdrf
      gbar_Ikdrs = Kdrs
      gbar_Ika = KA
      gna_Nasoma = Nas
      gkhbar_Ih = h
      gbar_IM = M

      if (VERBOSE) {
        printf("** %s :\n", secname())
        printf("\tgna_Nasoma = %g\n", gna_Nasoma)
        printf("\tgbar_Ikdrf = %g\n", gbar_Ikdrf)
        printf("\tgbar_Ikdrs = %g\n", gbar_Ikdrs)
	printf("\tgbar_Ika = %g\n", gbar_Ika)
	printf("\tgkhbar_Ih = %g\n", gkhbar_Ih)
        printf("\tgbar_IM = %g\n", gbar_IM)
      }
    }

    // Dendritic compartments
    if (issection("dend.*")) {
      gbar_Ikdrf = Kdrf
      gbar_Ikdrs = Kdrs
      gbar_Ika = KA
      gna_Nadend = Nad
      gcalbar_cal = CaL
      gbar_cat = CaT
      gkbar_kca = AHP 
      gbar_IM = M

      if (hD == 1) {
	gkhbar_Ih = h
	//for (x, 0) gkhbar_Ih = 0.000005
      }
      if (VERBOSE) {
        printf("** %s :\n", secname())
        printf("\tgna_Nadend = %g\n", gna_Nadend)
        printf("\tgbar_Ikdrf = %g\n", gbar_Ikdrf)
        printf("\tgbar_Ikdrs = %g\n", gbar_Ikdrs)
        printf("\tgbar_Ika = %g\n", gbar_Ika)
        if (hD == 1) {
          //printf("\tgkhbar_Ih = %g\n", gkhbar_Ih)
        }
        printf("\tgcalbar_cal = %g\n", gcalbar_cal)
        printf("\tgbar_cat = %g\n", gbar_cat)
        printf("\tgkbar_kca = %g\n", gkbar_kca)
        printf("\tgbar_IM = %g\n", gbar_IM)
      }
    }

    // Axonal compartments
    if (issection("axon.*")) {
      gbar_Ikdrfaxon = Kdrf
      gbar_Ikdrsaxon = Kdrs
      if (cell == 1) {
        gna_Naaxon = Nad	// for some reason Richy uses Naaxon...
      } else {
        gna_Nadend = Nad	// ...but Starfish uses Nadend. Historical reasons from Lawrence et al (2006)?
      }

      if (VERBOSE) {
        printf("** %s :\n", secname())
        if (cell == 1) {
          printf("\tgna_Naaxon = %g\n", gna_Naaxon)
        } else {
          printf("\tgna_Nadend = %g\n", gna_Nadend)
        }
        printf("\tgbar_Ikdrfaxon = %g\n", gbar_Ikdrfaxon)
        printf("\tgbar_Ikdrsaxon = %g\n", gbar_Ikdrsaxon)
      }
    }

  }
  return 0 // success
}

/*
 * NB: the "iprotocol.hoc" file must have been included first to call this.
 */
func set_cinj() {
  if (name_declared("cinj")!=5) { printf("ERROR: no cinj!\n") return 1 }
  injclamp.amp = cinj/1000
  if (VERBOSE) { printf("*** injclamp.amp set to %g nA from arg of %g pA\n", injclamp.amp, cinj) }
  return 0
}


Loading data, please wait...