5-neuron-model of neocortex for producing realistic extracellular AP shapes (Van Dijck et al. 2012)

 Download zip file 
Help downloading and running models
Accession:226812
This is a 5-neuron model of neocortex, containing one tufted layer-5 pyramidal cell, two non-tufted pyramidal cells, and two inhibitory interneurons. It was used to reproduce extracellular spike shapes in a study comparing algorithms for spike sorting and electrode selection. The neuron models are adapted from Dyhrfjeld-Johnsen et al. (2005).
Reference:
1 . Van Dijck G, Seidl K, Paul O, Ruther P, Van Hulle MM, Maex R (2012) Enhancing the yield of high-density electrode arrays through automated electrode selection. Int J Neural Syst 22:1-19 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Extracellular; Neuron or other electrically excitable cell; Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Neocortex U1 L5B pyramidal pyramidal tract GLU cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: GENESIS;
Model Concept(s):
Implementer(s): Maex, Reinoud [reinoud at bbf.uia.ac.be];
Search NeuronDB for information about:  Neocortex U1 L5B pyramidal pyramidal tract GLU cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell;
/
Five-neuron-neocortex
L5P37C-onlybasal
channels
README
Axon_chans.g *
Axon_chans_tab.g
Axon_comps.g
DiffRm.g *
DS1_141099_rot2_sc_defmesh_axon_onlybasal.p
electrodes_fixbug.g
electrodes_try.g *
Excitatory_fibres.g
Fibres.g *
Firing_rate_modulation.g *
Firing_rate_profile.g *
Golgi_grc_multicomp_ax.g
Gran_chan_tab.g *
Gran_comp_soma_dend_axon.g
Gran_const.g *
Gran_synchan.g *
Harsch-Robinson_modulation.g *
Hgradient.g *
Inhibitory_fibres.g *
L5P_ascout.g
L5P_ascout_exp.g *
L5P_chans.g *
L5P_chans_tab.g
L5P_chans_tab_Temp.g *
L5P_chans_Temp.g *
L5P_comps.g *
L5P_comps+axon+syn.g
L5P_const.g *
L5P_const+axon+syn.g *
L5P_graph.g
L5P_history.g
L5P_onlybasal_make.g
L5P_synchan.g
L5P37C_onlybasal.g
nsynapses.g *
                            
// genesis (R.M. 12/12/95)

// Copied from Parallel_fiber.g on 29/12//2001
// Intended to model a 2D array of electrodes

// IMPORTANT
// Because the efield object is not yet supported by the hines solver,
// the elctrodes must be made, and connected, after the hines solver 
// has been installed for the compartments to which the electrodes 
// are to be connected.
// For this reason, the constants, makearray and setup of messages are
// collapsed in this single script.


// according to Hugo Cornelis, now supported by hines solver (9/12/2006)


//include defaults
//include Gran_layer_const.g

echo making electrodes

// the constants

   int nx = 2 // 8 // 1 // 10 // 9 // 3 // 1   // number of electrodes along X-axis
   int ny = 2 // 8 // 1 // 10 // 9 // 3 // 1   // number of electrodes along Y-axis
   int number_electrodes = {nx * ny}
   float dx = 20e-6 // 40e-6 // 50e-6 // 0  // interelectrode spacing
   float dy = 20e-6 // 40e-6 // 50e-6 // 0 
   float ox = -10e-6 // -140e-6 // 20e-6 // 0 // -225e-6 // -50e-6 // 20e-6 // 0 
   float oy = -10e-6 // -140e-6 // 20e-6 // 0 // -225e-6 // -50e-6 // 20e-6 // 0

   int number_contact_points = 2 // 8 // 11 // 1 // 11
   float contact_separation = 20e-6 // 0.1e-3 // 0.15e-3 // 0.6e-3
   float depth = -10e-6 // -0.15e-3 // -0.5e-3 // 0 // -0.5e-3 // -1e-3 // vertical position electrode tip (on z-axis)

   int i //  j, index

// the make function


// make 1 prototype electrode

function make_electrode_shaft (number_contact_points, contact_separation, depth)

   int number_contacts_points, i
   float contact_separation, depth

   create efield /library/contact
   setfield ^ scale -1e-3

//   possibility to low-pass-filter the electrode signal, so that it
//   can be sampled at a lower clock rate

   create RC /library/contact/RC 
   setfield ^ V0 0 R 1 C 0.005  // should give same amplitude as input,
                                //  but low-pass-filtered with tau 1 ms

   addmsg /library/contact /library/contact/RC INJECT field

   if(!{exists /library/electrode})
          create neutral /library/electrode 
   end

   createmap /library/contact  /library/electrode 1 {number_contact_points} \ 
                        -delta 0 {contact_separation} -origin 0 {depth}

   for (i = 0; {i < number_contact_points}; i = i + 1)
       setfield /library/electrode/contact[{i}] z {getfield /library/electrode/contact[{i}] y}
       setfield /library/electrode/contact[{i}] y 0
   end
 
end



// make array of electrodes

function make_electrode_array  (number_contact_points, contact_separation, depth, nx, ny, dx, dy, ox, oy)

   int   length, number_contact_points
   float depth, contact_separation 

   int   nx, ny // n = number
   float dx, dy, ox, oy // d = delta, o = origin

   if(!{exists /library})
          create neutral /library 
          disable /library
   end

   make_electrode_shaft {number_contact_points} {contact_separation} {depth}

   createmap /library/electrode /electrode_array  {nx} {ny} -delta {dx} {dy} -origin {ox} {oy}

end


// make the array

   create neutral /electrode_array
   make_electrode_array {number_contact_points} {contact_separation} {depth} {nx} {ny} {dx} {dy} {ox} {oy}


// connect all electrodes to all compartments of the PC

echo making msgs to electrodes

   float el_x, el_y, el_z  // (x,y,z) coordinates of electrode
   float cp_x, cp_y, cp_z  // (x,y,z) coordinates of compartment
   float distance          // distance between electrode and compartment
   str name, name2, elem

// this makes the msgs using diffamps to fix the hinessolver bug
   include electrodes_try.g



// connect the electrodes to an asc_file element

   str electrodes_ascii_filename   // =  "electrodes" @ "label" & ".ascii"
   str name2, pathname

   for (i = 0; i < {number_electrodes}; i = i + 1)
 
      pathname = "/output/electrode" @ {i}
      electrodes_ascii_filename   =  {filename} @ "electrode" @ {i} @ ".ascii"

      if (!({exists {pathname}}))
            create asc_file {pathname}
      end
//   setclock 7 20e-5
      useclock {pathname} 1
      enable /output
      enable {pathname}
      setfield {pathname} filename {electrodes_ascii_filename} \ 
               initialize 1 leave_open 1  flush 1
      echo Output to {electrodes_ascii_filename}

      foreach name2 ({el /electrode_array/electrode[{i}]/##[][TYPE=efield]})

          addmsg {name2} {pathname} SAVE field
//          addmsg {name2}/RC  /output/electrodes SAVE state
      end

end


// this reset is needed to activate the connections to the asc_file object ? 

//   reset
















Loading data, please wait...