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 *
                            
int msgcount
int msgindex
int total_number_axial_msgs = 0
int diffamp_index = 0
str sender

// count how many diffamps are needed

   foreach name ({el /L5P/##[][TYPE=compartment]})
     msgcount = {getmsg {name} -incoming -count}
//     echo {msgcount}
     for (msgindex = 0; msgindex < {msgcount}; msgindex = {msgindex} + 1)
         if (! {strcmp {getmsg {name}  -in -type {msgindex}} "AXIAL"})
//            echo {name} {msgindex} AXIAL
            total_number_axial_msgs = {total_number_axial_msgs} + 1
         elif (! {strcmp {getmsg {name}  -in -type {msgindex}} "RAXIAL"})
//            echo {name} {msgindex} RAXIAL
            total_number_axial_msgs = {total_number_axial_msgs} + 1
         end
//           echo {getmsg {name} -in -type {msgindex}}
     end
   end

     echo total number of AXIAL and RAXIAL msgs is {total_number_axial_msgs}
          
// create the diffamp array

    create diffamp /diffamp
    createmap /diffamp /diffamp_array {total_number_axial_msgs} 1


// position each diffamp element to the corresponding compartment, and make msgs
    
   foreach name ({el /L5P/##[][TYPE=compartment]})
     msgcount = {getmsg {name} -incoming -count}
//     echo {msgcount}
     for (msgindex = 0; msgindex < {msgcount}; msgindex = {msgindex} + 1)

         if (! {strcmp {getmsg {name}  -in -type {msgindex}} "AXIAL"})
//            echo {name} {msgindex} AXIAL {diffamp_index}
            setfield /diffamp_array/diffamp[{diffamp_index}] x {getfield {name} x} \
                                                  y {getfield {name} y} \
                                                  z {getfield {name} z}
            addmsg {name} /diffamp_array/diffamp[{diffamp_index}] PLUS Vm
            sender = {getmsg {name}  -in -source {msgindex}}
            addmsg {sender} /diffamp_array/diffamp[{diffamp_index}] MINUS Vm
            setfield /diffamp_array/diffamp[{diffamp_index}] gain {1.0 / {getfield {name} Ra}} \
                                                             saturation 10e10

            diffamp_index = {diffamp_index} + 1
            
         elif (! {strcmp {getmsg {name}  -in -type {msgindex}} "RAXIAL"})
//            echo {name} {msgindex} RAXIAL {diffamp_index}
            setfield /diffamp_array/diffamp[{diffamp_index}] x {getfield {name} x} \
                                                  y {getfield {name} y} \
                                                  z {getfield {name} z}
            addmsg {name} /diffamp_array/diffamp[{diffamp_index}] PLUS Vm
            sender = {getmsg {name}  -in -source {msgindex}}
            addmsg {sender} /diffamp_array/diffamp[{diffamp_index}] MINUS Vm
            setfield /diffamp_array/diffamp[{diffamp_index}] gain {1.0 / {getfield {sender} Ra}} \
                                                             saturation 10e10

            diffamp_index = {diffamp_index} + 1
            
         end
//           echo {getmsg {name} -in -type {msgindex}}
     end
   end


//      echo {name}


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

          echo making msgs to electrode {name2}

          el_x = {getfield {name2} x}
          el_y = {getfield {name2} y}
          el_z = {getfield {name2} z}

          foreach name ({el /diffamp_array/##[][TYPE=diffamp]})
 
          cp_x = {getfield {name} x}
          cp_y = {getfield {name} y}
          cp_z = {getfield {name} z}

          distance = {sqrt {{pow {{cp_x} - {el_x}} 2.0} + \
                           {pow {{cp_y} - {el_y}} 2.0} + \
                           {pow {{cp_z} - {el_z}} 2.0}}}
//          echo {distance}

//          elem = ({findsolvefield {name}/../solve {name} Im})

//          echo {elem}

//          addmsg {name}/../solve  /electrode[{index}] CURRENT {elem} {distance}
 
          addmsg {name} {name2} CURRENT output {distance}
 
      end
      end


//   end


















Loading data, please wait...