Superior paraolivary nucleus neuron (Kopp-Scheinpflug et al. 2011)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:139657
This is a model of neurons in the brainstem superior paraolivary nucleus (SPN), which produce very salient offset firing during sound stimulation. Rebound offset firing is triggered by IPSPs coming from the medial nucleus of the trapezoid body (MNTB). This model shows that AP firing can emerge from inhibition through integration of large IPSPs, driven by an extremely negative chloride reversal potential, combined with a large hyperpolarization- activated non-specific cationic current (IH), with a secondary contribution from a T-type calcium conductance (ITCa). As a result, tiny gaps in sound stimuli of just 3-4ms can elicit reliable APs that signal such brief offsets.
Reference:
1 . Kopp-Scheinpflug C, Tozer AJ, Robinson SW, Tempel BL, Hennig MH, Forsythe ID (2011) The sound of silence: ionic mechanisms encoding sound termination. Neuron 71:911-25 [PubMed]
Citations  Citation Browser
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): Superior paraolivary nucleus neuron;
Channel(s): I T low threshold; I h;
Gap Junctions:
Receptor(s): Glycine;
Gene(s): HCN Cnga1;
Transmitter(s): Glycine;
Simulation Environment: NEURON;
Model Concept(s): Action Potential Initiation; Action Potentials; Rebound firing;
Implementer(s): Hennig, Matthias H [mhhennig at gmail.com];
Search NeuronDB for information about:  Glycine; I T low threshold; I h; Glycine;
/
Kopp-Scheinpflug2011
index.html
readme.txt
ht.mod *
lt.mod *
lva.mod
mhh_Gfluct.mod
netstims.mod *
sjg_ih.mod
sjg_na.mod
trigstim.mod *
allgraphs.hoc
conductance_noise.hoc
current_inj.hoc
mosinit.hoc
run_spn_model.hoc
simcontrols.hoc
spn_neuron.hoc
spnmodel1.png
synapses.hoc
                            
// SPN neuron model
// ---------------------------------------------
//
// This model simulates rebound action potential firing in SPN neurons
// following prolonged inhibition from the MNTB.
//
// Reference:
// The Sound of Silence: ionic mechanisms encoding sound termination.
// Cornelia Kopp-Scheinpflug, Adam JB Tozer, Susan W Robinson
// Bruce L Tempel, Matthias H Hennig and Ian D Forsythe
// Neuron, in press (2011)
//
// Contact:
// Matthias H. Hennig, University of Edinburgh, 2011
// m.hennig@ed.ac.uk
// mhhennig@gmail.com
//
// with contributions from:
// Sarah J. Griffin, MRC Toxicology Unit, Leicester


load_file("nrngui.hoc")
load_file("pointman.hoc")

objectvar input, plotwin
objectvar windows[5]
objref ns
objref fl
objref syn[21], synstim[21], synstim2[21]
objref netsynstim[21], netsynstim2[21]

// definitions for spike counting
objref spiketimes
spiketimes = new Vector(100)
objref aps
objref spikestmp

// default synapse parameters
syninterval = 10  // stimulus interval (ms)
synnum = 10       // number of stimuli
synnoise = 0      // could be used to introduce some spike jitter
synconductance = 4e-3 // umho

// default gap between the two stimulus trains
gap = 10

// how many inhibitory synapses does our neuron have?
nsyns = 14

// set up the model neurons (defaut parameters)
// ---------------------------------------------

load_file("spn_neuron.hoc")


// Stimuli + Inputs
// ---------------------------------------------

// current injection
// this is not used by default, but can be used to simulate voltage
// clamp conditions when Ih is blocked
load_file("current_inj.hoc")

// synapses
load_file("synapses.hoc")

// noise source (simulates excitatory synaptic noise)
load_file("conductance_noise.hoc")

// set up the spike detector
// ---------------------------------------------

proc foundspike() {
    print "called handle() at time ", t, " when soma.v(.5) = ", soma.v(.5)
    spiketimes.x[nspikes] = t
    nspikes = nspikes+1
}

aps = new NetCon(&v(0.5),spikestmp)
aps.threshold = -10
aps.record("foundspike()")

// add the second stimulus (after the gap
// ---------------------------------------------

for i=0, nsyns {
    synstim2[i] = new NetStims(0.5)
    synstim2[i].start = 300+gap
    synstim2[i].interval = syninterval
    synstim2[i].number = synnum
    synstim2[i].noise = synnoise
    netsynstim2[i] = new NetCon(synstim2[i],syn[i])
}

// wrapper function to run a simulation
// ---------------------------------------------

proc myrun() {
    tstop = 750 // duration of the simulation
    nspikes = 0  // reset spike counter

    // noise
    fl.std_e = 0.0005
    fl.tau_e = 2

    syninterval = NetStim[0].interval	
    
    // set synapse parameters
    for i=0, nsyns {
	synstim[i].start = 300-syninterval*synnum
	synstim[i].interval = syninterval
	synstim[i].number = synnum
	synstim[i].noise = synnoise
	
        synstim2[i].start = 300+gap
	synstim2[i].interval = syninterval

	netsynstim[i].weight = synconductance
	netsynstim2[i].weight = synconductance
    }

    // run a simulation
    finitialize(-60)
    run()

    // print out results summary
    printf("time of 2 stimults: %g\n",200+syninterval*synnum+gap)
    printf("number of spikes: %g\n",nspikes)
    
}


// Simulation controls
// ---------------------------------------------
load_file("simcontrols.hoc")


// plot windows
// ---------------------------------------------
load_file("allgraphs.hoc")