Goldfish Mauthner cell (Medan et al 2017)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:189308
" ...In fish, evasion of a diving bird that breaks the water surface depends on integrating visual and auditory stimuli with very different characteristics. How do neurons process such differential sensory inputs at the dendritic level? For that we studied the Mauthner-cells (M-cells) in the goldfish startle circuit, which receive visual and auditory inputs via two separate dendrites, both accessible for in vivo recordings. We asked if electrophysiological membrane properties and dendrite morphology, studied in vivo, play a role in selective sensory processing in the M-cell. Our results show that anatomical and electrophysiological differences between the dendrites combine to produce stronger attenuation of visually evoked post synaptic potentials (PSPs) than to auditory evoked PSPs. Interestingly, our recordings showed also cross-modal dendritic interaction, as auditory evoked PSPs invade the ventral dendrite (VD) as well as the opposite, visual PSPs invade the lateral dendrite (LD). However, these interactions were asymmetrical with auditory PSPs being more prominent in the VD than visual PSPs in the LD. Modelling experiments imply that this asymmetry is caused by active conductances expressed in the proximal segments of the VD. ..."
Reference:
1 . Medan V, Mäki-Marttunen T, Sztarker J, Preuss T (2018) Differential processing in modality-specific Mauthner cell dendrites. J Physiol 596:667-689 [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: Goldfish;
Cell Type(s): Mauthner cell;
Channel(s): I Sodium; I Potassium;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON; Python;
Model Concept(s): Sensory processing;
Implementer(s): Maki-Marttunen, Tuomo [tuomomm at uio.no];
Search NeuronDB for information about:  I Sodium; I Potassium;
// HOC file for running the Mauthner cell simulation
// Saves the data to .dat files (tab-delimited ascii),
// and to memory (square pulse responses can be retrieved
// from Python as h.timeList and h.vrecList, and the ramp
// response as h.time and h.vrec)
//
// HH formalism according to Buhry et al. 2013: "Global
// parameter estimation of an Hodgkin-Huxley formalism 
// using membrane voltage recordings: Application to
// neuro-mimetic analog integrated circuits", Neurocomputing
// 81 (2012) 75-85
//
// Parameters obtained by hand-fitting and dimension-by-
// dimension local optimization, see an example in runfit.py
//
// Tuomo Maki-Marttunen, 2013-2017 (CC-BY 4.0)
// 

load_file("neurmorph.hoc")

gl=0.008700000039526
g1=20.999999990461987
g2=15.289301400499159
el=-83.400007934423883
e1=55
e2=-90
Cm0=2.5
Ra0=120
glA=0.000300000004592
RaA=120
RaAH=120
VoffaNa=-56.700000003615479
VoffaK=-67.499999903453016
VsloaNa=8.100000020602771
VsloaK=9.570002271582146
tauaNa=0.017999999846640
tauaK=1.399997381068154
VoffiNa=-64.000000481147609
VsloiNa=6.060000000757244
tauiNa=0.209992252219524

t_sim = 15
dt = 0.01
axondiam = 54

soma.cm=Cm0
soma.Ra=Ra0
soma.e_pas=el
soma.g_pas=gl
for i=0,29 {
  dend[i].cm=Cm0
  dend[i].Ra=Ra0
  dend[i].e_pas=el
  dend[i].g_pas=gl
}
axonhillock.cm=Cm0
axonhillock.Ra=RaAH
axonhillock.e_pas=el
axonhillock.g_pas=glA
axonhillock.g_I1=g1
axonhillock.g_I2=g2
axonhillock.E_I1=e1
axonhillock.E_I2=e2
axonhillock.Voffa_I1=VoffaNa
axonhillock.Voffa_I2=VoffaK
axonhillock.Vsloa_I1=VsloaNa
axonhillock.Vsloa_I2=VsloaK
axonhillock.taua_I1=tauaNa
axonhillock.taua_I2=tauaK
axonhillock.Voffi_I1=VoffiNa
axonhillock.Vsloi_I1=VsloiNa
axonhillock.taui_I1=tauiNa
for i = 0,2 {
  axon[i].cm=Cm0
  axon[i].Ra=RaA
  axon[i].diam=axondiam
  axon[i].e_pas=el
  axon[i].g_pas=glA
}

forall nseg=20

objref stims[1]
soma stims[0] = new IClamp(0.5)

v_init = el
tstop = t_sim

cvode_active(1)
cvode.atol(0.00005)
objref time, vrec

time = new Vector()
time.record(&t)
vrec = new Vector()
vrec.record(&dend[1].v(0.5))

double stimAmps[17]
stimAmps[0] = 10
stimAmps[1] = 30
stimAmps[2] = 50
stimAmps[3] = 70
stimAmps[4] = 90
stimAmps[5] = 190
stimAmps[6] = 170
stimAmps[7] = 150
stimAmps[8] = 140
stimAmps[9] = 130
stimAmps[10] = 110
stimAmps[11] = 100
stimAmps[12] = 20
stimAmps[13] = -20
stimAmps[14] = -50
stimAmps[15] = -70
stimAmpR = 200


objref myFile
strdef fileName
objref timeList, vrecList
timeList = new List()
vrecList = new List()

for istim=0,15 {
  stims[0].del = 5.0
  stims[0].dur = 5.0
  stims[0].amp = stimAmps[istim]
  init()
  run()

  myFile = new File()
  sprint(fileName,"run%i.dat",istim)
  myFile.wopen(fileName,istim)
  for i=0,time.size()-1 {
    myFile.printf("%g %g\n", time.x(i), vrec.x(i))
  }
  myFile.close()
  timeList.append(new Vector())
  vrecList.append(new Vector())
  for i=0,time.size()-1 {
    timeList.o[timeList.count()-1].append(time.x[i])
    vrecList.o[vrecList.count()-1].append(vrec.x[i])
  }
}

stims[0].amp = 0
objref stimsR[50]
for i = 0,49 {
  soma stimsR[i] = new IClamp(0.5)
}
for i = 0,49 {
  stimsR[i].del = 52 + 20/50.0*i
  stimsR[i].dur = 20/50.0
  stimsR[i].amp = 200/50.0*i
}
t_sim = 72
tstop = t_sim
init()
run()

myFile = new File()
myFile.wopen("runR.dat")
for i=0,time.size()-1 {
  myFile.printf("%g %g\n", time.x(i), vrec.x(i))
}
myFile.close()

timeList.append(time)
vrecList.append(vrec)