//
// "Inferring connection proximity in networks of electrically coupled cells
// by subthreshold frequency response analysis "
//
// by C. Cali', ...., & M. Giugliano (2007)
//
// C. Cali' & M. Giugliano, Brain Mind Institute, EPFL, Apr 2006
//
//
//
// THIS SIMULATIONS CREATES A LINEAR CHAIN OF nsoma (single/multi)COMPARTMENTAL NEURONS,
// EACH CONNECTED ONLY TO ITS 2 NEAREST NEIGHBORS..
//
//
nsoma = 5 // How many neurons do we want to simulate ?
stim = 0
// Out of nsoma cells, which one does need to be stimulated (just one at the time) ?
// Careful: stim can goes from 0, 1, 2..., nsoma-1 !!
sc = 0 // Set it to 1 for single-compartmental models, 0, otherwise..
ggap = 40 // [nS] Strength of individual gap junctions between cells.
ChirpDuration = 2000 // [ms] duration of the chirp stimulation
Vrest = -65 //
celsius = 35 // temperature in degrees celsius
//cvode_active(0) // fixed integration time step
dt = 0.00250 // integration time step to 2.5 ns
print "Dec 2006 - Michele Giugliano and Corrado Cali'"
print "Brain Mind Institute, EPFL of Lausanne"
print "Initializing and starting a simulation with ", nsoma, " neurons"
print "coupled by gap junction of conductance ", ggap, " nS"
load_file("nrngui.hoc") // Loading of the standard GUI controls...
load_file("mylibs/graphs.hoc") // Loading some ad-hoc proc for displaying live traces...
load_file("mylibs/nsinglecompneuron.hoc") // Loading the model cell template..
load_file("mylibs/gap.hoc") // Loading the model template for gap junctions by Migliore et al., 2005
load_file("mylibs/ncellsgj.hoc") // Loading model neuron (morphology, biophysics, etc)...
load_file("mylibs/Izap_proc.hoc") // Loading che procedure for a zap current injection...
load_file("mylibs/filemanagement.hoc") // Loading che procedure for file management...
//-----------------------------------------------------------------------------------
//
// Let's now (randomly) define the passive properties of cellular membranes
//
// e.g. cm = 1 uF/cm^2, g_pas = 0.04 mS/cm^2 --> tau = 25 ms
// e.g. cm = 1 uF/cm^2, g_pas = 0.1 mS/cm^2 --> tau = 10 ms
objref r
r = new Random()
r.uniform(0.04e-3, 0.1e-3)
for i = 0,nsoma-1{ // For each neuron, defined and created..
// SOMA
soma[i].cm = 1 // [uF]
soma[i].g_pas = r.repick // [S] avoids constructor/destructor overhead..
Rin = 1e-6 / (surf2 * soma[i].g_pas) // MOhm
tau = 1e-3 * soma[i].cm / soma[i].g_pas // ms
print "Cell #", i, "Input resistance:", Rin, "MOhm"
print "Cell #", i, "Time constant:", tau, "ms"
if (sc == 0) { // In case it is a multicompartmental model..
// PRIDEN // let's take care of dendrite parameters..
priden[i].cm = 1 // [uF]
priden[0].g_pas = r.repick() // [S] avoids constructor/destructor overhead..
} // end if (sc == 0)
} //-----------------------------------------------------------------------------------
//
// ACCESSING THE CELL THAT IS GOING TO RECEIVE THE STIMULATION
//
access soma[stim]
timeref.record(&t)
InjectChirp(10, 400, .75, .75, -0.3, ChirpDuration, .5) // Chirp current injection (Point process)
i_inputref = new Vector() // Input (injected) current is assigned to a vector
i_inputref.record(&fl.i) // and written, to be later recovered from file..
//
//f1 = 10 Hz initial frequency of the chirp
//f2 = 200 Hz final frequency of the chirp
//Astart = 500 pA initial amplitude of the chirp
//Astop = 500 pA final amplitude of the chirp
//Offset = -0.1 nA offset level [CHECK THIS]
//ChirpDuration = 1000 ms duration of the chirp stimulation
//Location = 0.5 location within the neuronal morphology
//
//
// SIMULATION CONTROL
//
tstart = 0 // [ms]
tstop = 200. + ChirpDuration + 100.
addgraph("soma[0].v(0.5)",-68.2, -63.7)
addgraph("soma[1].v(0.5)",-65.43, -64.86)
t = 0.
tstart = 0. // [ms]
tstop = 200 // [ms]
finitialize(Vrest) //
proc execute_simulation() {
run()
tstop = t + ChirpDuration + 100 // [ms]
continuerun(tstop)
}
proc write_results() {
load_file("mylibs/write_on_disk.hoc") // Loading che procedure for file management...
print "Simulation done! Find the raw data in the <output> directory!"
}
xpanel("Cali et al. 2007")
xlabel("Simulation has been initialized")
xbutton("run","execute_simulation()")
xbutton("write results to output dir","write_results()")
xbutton("quit","quit()")
xpanel()