Electrotonic transform and EPSCs for WT and Q175+/- spiny projection neurons (Goodliffe et al 2018)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:236310
This model achieves electrotonic transform and computes mean inward and outward attenuation from 0 to 500 Hz input; and randomly activates synapses along dendrites to simulate AMPAR mediated EPSCs. For electrotonic analysis, in Elec folder, the entry file is MSNelec_transform.hoc. For EPSC simulation, in Syn folder, the entry file is randomepsc.hoc. Run read_EPSCsims_mdb_alone.m next with the simulated parameter values specified to compute the mean EPSC.
Reference:
1 . Goodliffe JW, Song H, Rubakovic A, Chang W, Medalla M, Weaver CM, Luebke JI (2018) Differential changes to D1 and D2 medium spiny neurons in the 12-month-old Q175+/- mouse model of Huntington's Disease. PLoS One 13:e0200626 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Synapse;
Brain Region(s)/Organism: Striatum;
Cell Type(s): Neostriatum spiny neuron;
Channel(s):
Gap Junctions:
Receptor(s): AMPA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Detailed Neuronal Models; Membrane Properties; Electrotonus; Synaptic-input statistic;
Implementer(s):
Search NeuronDB for information about:  AMPA;
/
GoodliffeEtAl2018
Syn
tau_tables
bkkca.mod
cadyn.mod *
caL.mod
caL13.mod
caldyn.mod
can.mod
caq.mod *
car.mod
cat.mod
kaf.mod
kas.mod
kdr.mod
kir.mod *
krp.mod *
linearIclamp.mod
naf.mod
nap.mod
skkca.mod
stim.mod *
actionPotentialPlayer.hoc *
all_tau_vecs.hoc
analyticFunctions.hoc *
analyze_EPSC.m
aux_procs.hoc
baseline_values.txt
basic_procs.hoc
createFit_WTD1.m
electro_procs.hoc
fixnseg.hoc *
load_scripts.hoc
msp_template.hoc
PFC-V1_AddSynapses.hoc
PFC-V1_AddSynapses_fix.hoc
PFC-V1_AddSynapses_neg.hoc
PFC-V1_AddSynapses_negexp.hoc
plot_seClamp_i.ses
ran_test.hoc
randomepsc.hoc
ranstream.hoc
read_EPSCsims_mdb_alone.m
readcell.hoc
readNRNbin_Vclamp.m
                            
NSNUM = 5 // how many NetStims to create
MAXSTREAM = 1000 // max # events in a NetStim's stream
  // before it begins to repeat values already generated
  // by a different stream.
  // set to 0 and all NetStims will produce identical streams

ISI = 10 // default NetStim parameters
NUM = 50
START = 1
NOISE = 0

TSTOP = 20 // length of simulation

load_file("nrngui.hoc")
load_file("ranstream.hoc")

///// model setup

objref nslist, rslist
nslist = new List()
rslist = new List()

proc makenetstims() { local i  localobj ns, rs
  nslist = new List()
  rslist = new List()
  random_stream_offset_ = MAXSTREAM
  for i = 0, $1-1 {
    ns = new NetStim()
    nslist.append(ns)
    rs = new RandomStream(i)
    rslist.append(rs)
    ns.noiseFromRandom(rs.r)
    rs.r.negexp(1) // must specify negexp distribution with mean = 1
    rs.start()
  }
}

makenetstims(NSNUM)

proc setparams() { local i
  for i = 0,nslist.count()-1 {
    nslist.o(i).interval = ISI
    nslist.o(i).number = NUM
    nslist.o(i).start = START
    nslist.o(i).noise = NOISE
  }
}

setparams() // default is deterministic spike times (NOISE = 0)

///// instrumentation

objref tvec, idvec, nil
tvec = new Vector()
idvec = new Vector()

proc instrumentation() { local i  localobj nc
  tvec = new Vector()
  idvec = new Vector()
  for i = 0,nslist.count()-1 {
    nc = new NetCon(nslist.o(i), nil)
    nc.record(tvec, idvec, i)
  }
}

instrumentation()

///// simulation control

// spike times will be at 0.5*ISI + sample from negexp that has mean 0.5*ISI
NOISE = 0.5
setparams()

tstop = TSTOP

proc restart() { local i
  for i = 0, rslist.count()-1 rslist.o(i).start()
}

objref g

proc myrun() {
  run()
  // make a raster plot of spike times
  idvec.add(1) // so cell i spikes are marked at y = i+1
  objref g
  g = new Graph(0)
  g.size(0,tstop,0,NSNUM)
  g.view(0, 0, tstop, NSNUM, 47, 109, 300.48, 200.32)
  idvec.mark(g, tvec, "|", 10, 2, 1)
  // print out spike times
  print " time         cell"
  for i=0, tvec.size-1 printf("%7.3f \t%d\n", tvec.x(i), idvec.x(i))
}

/////

print "============================================================"
print "Control:  all have interval 10, number 50, start 10, noise 1"
print "============================================================"

myrun()

print " "
print "Take a good look at the graph.  The marks at y = 1"
print "indicate the spikes generated by NetStim[0]."
print "When ready for next test, type"
print "test()"
print "at the oc> prompt, then press Return"
print " "

proc test() {
  print "============================================================"
  print "Test:  NetStim 0 (i.e. cell 1) interval 1, number 3"
  print "============================================================"

  nslist.o(0).interval = 1
  nslist.o(0).number = 3
  restart() // restore each generator to the start of its stream

  myrun()

  print " "
  print "Note that only the marks at y = 1 changed location in time."
  print "Compare the NetStim spike times in this run"
  print "against the spike times from the control run."
  print "Note that only the spikes from \"cell 1\" (NetStim[0]) are different."
}

Loading data, please wait...