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-notuft
channels
README
Axon_chans.g *
Axon_chans_tab.g
Axon_comps.g
DiffRm.g *
DS1_141099_rot2_sc_defmesh_axon_notuft.p
electrodes_fixbug.g *
electrodes_try.g *
Excitatory_fibres.g *
Fibres.g *
Firing_rate_modulation.g *
Firing_rate_profile.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.g
L5P_comps+axon+syn.g
L5P_const.g *
L5P_const+axon+syn.g *
L5P_graph.g
L5P_history.g *
L5P_notuft_make.g
L5P_synchan.g
L5P37C_notuft.g
nsynapses.g *
test_position.g *
                            
// genesis

// Function make_fibres (pathname).
// Creates in {pathname} three populations of fibres: feedforward, feedback intracolumn,
// feedback intercolumn.

// Each population consists of randomspike elements with associated diffamps.
// The diffamps send RATE msgs to their respective randomspikes. 
// In other scripts, the diffamps will get PLUS messages, e.g.feedforward fibres 
// will get input from Harsch-Robinson_input.g, whereas the randsomspikes will be 
// connected (in Excitatory_fibers.g and Inhibitory_fibres.g) to synapses on the L5P cell.

// Actually, for each compartment on L5P, one fibre is generated, (almost) randomly
// assigned to one of the three classes and put at the same position as the compartment.


 
int  index



function make_fibres (pathname)

str pathname


// Make library protoptypes *****

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

   if ({!{exists /library/FF_fibre}})
         //   create randomspike2 /library/FF_fibre  // randomspike 2 does not exist in official release
   		create randomspike /library/FF_fibre
		//   setfield ^ rate {E_fibre_rate} 
		//              abs_refract 0.001 
		//              rate_type RS_EFFECTIVE

	   create randomspike /library/FBintra_fibre
	   create randomspike /library/FBinter_fibre

	   create diffamp /library/FF_diffamp
	   setfield ^ plus 0 minus 0 saturation 10e10
	   create diffamp /library/FBintra_diffamp
	   setfield ^ plus 0 minus 0 saturation 10e10
	   create diffamp /library/FBinter_diffamp
	   setfield ^ plus 0 minus 0 saturation 10e10
   end



// Make subpopulations *****

	echo Making {pathname} and subpopulations

	if(!{exists {pathname}}) 
          create neutral {pathname}
	end
	create neutral {pathname}/FF
	create neutral {pathname}/FBintra
	create neutral {pathname}/FBinter
   
	echo The fibres
	createmap /library/FF_fibre {pathname}/FF \
             686 1 -delta 0 0 -origin 0 0 
	createmap /library/FBintra_fibre {pathname}/FBintra \
             686 1 -delta 0 0 -origin 0 0 
	createmap /library/FBinter_fibre {pathname}/FBinter \
             686 1 -delta 0 0 -origin 0 0 

	echo The diffamps
	createmap /library/FF_diffamp {pathname}/FF \
             686 1 -delta 0 0 -origin 0 0 
	createmap /library/FBintra_diffamp {pathname}/FBintra \
             686 1 -delta 0 0 -origin 0 0 
	createmap /library/FBinter_diffamp {pathname}/FBinter \
             686 1 -delta 0 0 -origin 0 0 


// works only for randomspike2; not sure this exists in Genesis2.3
//   setfield {pathname}/E_fibre[] seed1 0 -increment 9 100
//   setfield {pathname}/E_fibre[] seed2 0 -increment 9e-2 100



// Position fibres at corresponding L5P compartments *****

	echo Calculating positions of {pathname} 

	str subpath
	ce {pathname}
	index = 0
   
	foreach name ({el /L5P/p#[][TYPE=compartment]})
   
//   echo {name}
      if ({{index % 3} == 0})
           subpath = "FF/FF_fibre"
      elif ({{index % 3} == 1})
           subpath = "FBintra/FBintra_fibre"
      else subpath = "FBinter/FBinter_fibre"
      end
      
	 setfield {subpath}[{index / 3}] \
                x {getfield {name} x} \
                y {getfield {name} y} \
                z {getfield {name} z} 

//        echo {name} {index}  {subpath} {index / 3}  // OK works
        index = {index + 1}
//        echo index = {index}   // OK 2058 dendritic compartments
   end



// Connect diffamps to fibres *****

	echo Sending RATE msgs from diffmaps to fibres 

	for (index = 0; index < 686; index = {index} + 1)
	   setfield FF/FF_diffamp[{index}]              x {getfield FF/FF_fibre[{index}] x} \
	                                                y {getfield FF/FF_fibre[{index}] y} \
	                                                z {getfield FF/FF_fibre[{index}] z}
	   setfield FBintra/FBintra_diffamp[{index}]    x {getfield FBintra/FBintra_fibre[{index}] x} \
	                                                y {getfield FBintra/FBintra_fibre[{index}] y} \
	                                                z {getfield FBintra/FBintra_fibre[{index}] z}
	   setfield FBinter/FBinter_diffamp[{index}]    x {getfield FBinter/FBinter_fibre[{index}] x} \
	                                                y {getfield FBinter/FBinter_fibre[{index}] y} \
	                                                z {getfield FBinter/FBinter_fibre[{index}] z}
	   
       addmsg FF/FF_diffamp[{index}]            FF/FF_fibre[{index}]              RATE    output
       addmsg FBintra/FBintra_diffamp[{index}]  FBintra/FBintra_fibre[{index}]    RATE    output
       addmsg FBinter/FBinter_diffamp[{index}]  FBinter/FBinter_fibre[{index}]    RATE    output
	end
   
   
end



Loading data, please wait...