Synaptic integration of an identified nonspiking interneuron in crayfish (Takashima et al 2006)

 Download zip file 
Help downloading and running models
Accession:84599
This GENESIS simulation shows how a single or compound excitatory synaptic potential evoked by mechanosensory stimulation spreads over the dendrites of the LDS interneuron that is one of the identified nonspiking interneurons in the central nervous system of crayfish Procambarus clarkii. The model is based on physiological experiments carried out by Akira Takashima using single-electrode voltage clamp techniques and also 3-D morphometry of the interneuron carried out by Ryou Hikosaka using confocal laser scanning microscopic techniques. The physiological and morphological studies were coordinated by Masakazu Takahata.
Reference:
1 . Takashima A, Hikosaka R, Takahata M (2006) Functional significance of passive and active dendritic properties in the synaptic integration by an identified nonspiking interneuron of crayfish. J Neurophysiol 96:3157-69 [PubMed]
2 . Takahata M, Takashima A, Hikosaka R (2000) Information processing by nonspiking interneurons: passive and active properties of dendritic membrane determine synaptic integration. Biosystems 58:143-9 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Dendrite;
Brain Region(s)/Organism:
Cell Type(s): Crayfish identified nonspiking interneuron;
Channel(s): I A; I K; I Potassium;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: GENESIS;
Model Concept(s): Influence of Dendritic Geometry; Invertebrate; Synaptic Integration;
Implementer(s): Takahata, Masakazu [takahata at sci.hokudai.ac.jp];
Search NeuronDB for information about:  I A; I K; I Potassium;
// genesis - inputs2.g - Modified functions used in the Popup menu
// This file was developed by
//       Akira Takashima.
//       Department of Biological Sciences
//       Faculry of Science
//       Hokkaido University
//       Sapporo Japan
//
//       Last update on 22 Jan. 2007


//=======================================================================
// makeinputs - the main function to set up injection and synaptic inputs
//=======================================================================

function makeinputs
 
   // Default values of parameters - (global variables defined in Cable.g)
    
    float syndelay	=  0	// msec
    float synwidth =  1000  //1000// choose width and interval to give a single spike
    float syninterval	= 100000
      
    create neutral /input

       //==================================================
       // spike for synaptic input - only a single spike 
       //==================================================
       // pulse to gate spike train
    create pulsegen /input/synpulse
    create spikegen /input/synpulse/spike
    setspikes {syndelay} {synwidth} {syninterval}
// setfield /input/synpulse width1 0.001 delay1 0.02 baselevel 0.0 \
//        level1 1.0 trig_mode 0 width2 0.0 delay2 1 output 1 
    setfield /input/synpulse/spike abs_refract 0.01 output_amp 1 thresh 0.5
    addmsg /input/synpulse /input/synpulse/spike INPUT output
     
       // Lastly, make connection to chemically activated dendrite channel
       // using a SPIKE message
//    set_chan_params {gsyn} {tsyn} {Vsyn}
       
  
   
    // initially, make both injection and synaptic input to the soma

end// makeinputs



//=======================================================
//    functions used in the change synaptic input menu
//=======================================================

function syn_toggle// toggles synaptic input ON/OFF

    if ({getfield /output/synapse_menu/syntoggle state} == 1)
        // ON
        setfield /input/synpulse level1 1.0
        echo "Synaptic Input ON!"
    else
        // OFF
        setfield /input/synpulse level1 0.0
        echo " Synaptic Input OFF!"
    end
end



function set_chan_params( comp_no, gsyn, tsyn, Vsyn )
   int comp_no =  ({getfield /output/synapse_menu/comp_no value})
   str gsyn, tsyn, Vsyn
   
/*  if ({exists /cell/solve})
      delete /cell/solve
  end
*/

   if ((comp_no) <= 0)
      setfield /cell/soma/Ex_chan Ek {Vsyn} 
      setfield /cell/soma/Ex_chan tau1 {tsyn} tau2 {tsyn}
      setfield /cell/soma/Ex_chan gmax {gsyn}
      echo "Soma Ex_chan has changed!"
   else
      setfield /cell/dend[{comp_no}]/Ex_chan Ek {Vsyn}
      setfield /cell/dend[{comp_no}]/Ex_chan tau1 {tsyn} tau2 {tsyn}
      setfield /cell/dend[{comp_no}]/Ex_chan gmax {gsyn}
      echo "dend["{comp_no}"] Ex_chan has changed!"
   end
end


// links channel which computes channel current (channelC2) with compartment
function link_channel2(channel, compartment)
    addmsg {channel} {compartment} CHANNEL Gk Ek
    addmsg {compartment} {channel} VOLTAGE Vm
end


function add_syn_input
   // compartment # for input - #0 = Soma
   int comp_no
   int NCableSects = 492

   comp_no = ({getfield /output/synapse_menu/comp_no value})
   if ((comp_no) > ({NCableSects}))
      echo "There are only "{NCableSects}" cable compartments!"
      return
   end

/*   if ({exists /cell/solve})
       delete /cell/solve
   end
*/
   if ((comp_no) <= 0)   // then input to soma
      
      addmsg /input/synpulse/spike /cell/soma/Ex_chan SPIKE
      setfield /cell/soma/Ex_chan synapse[0].weight 1 synapse[0].delay 0
//      link_channel2 /cell/soma/Ex_chan /cell/soma
      echo "Synaptic input is to the soma"
   else
      addmsg /input/synpulse/spike /cell/dend[{comp_no}]/Ex_chan SPIKE
      setfield /cell/dend[{comp_no}]/Ex_chan synapse[0].weight 1 synapse[0].delay 0
//      link_channel2 /cell/dend[{comp_no}]/Ex_chan /cell/dend[{comp_no }]
      echo "Synaptic input is to dendrite compartment number " {getfield /output/synapse_menu/comp_no value}
   end
      
end




function set_inputs// set parameters for synaptic input from dialog boxes
   float syndelay	=  0	// msec
   float synwidth = 1000// choose width and interval to give a single spike
   float syninterval	= 100000
   int comp_no
   comp_no = ({getfield /output/synapse_menu/comp_no value})
   str dialog = "/output/synapse_menu"

   set_chan_params {comp_no} {getfield {dialog}/gsyn value}  \
        {getfield {dialog}/tsyn value} {getfield {dialog}/vsyn value}
    // after so many changes, we need to reset everything
   reset
  
   echo "Maximum conductance = "{getfield {dialog}/gsyn value}
   echo "Time constant for conductance = "{getfield {dialog}/tsyn value}
   echo "Channel equilibrium potential = "{getfield {dialog}/vsyn value}
end



function remove_synaptic_input 
  int i, n, nmsg
  int NCableSects
  NCableSects = 492
  
 
/*  if ({exists /cell/solve})
      delete /cell/solve
  end
*/

  for (i = 0; i < {NCableSects}; i = i + 1)
     if ( i <= 0 )
      nmsg = {getmsg /cell/soma/Ex_chan -incoming -count}
       for (n = 0; n < nmsg; n = n + 1)
        if ({getmsg /cell/soma/Ex_chan -in -type {n}} == "SPIKE" )
           echo deleting message {n}
           deletemsg /cell/soma/Ex_chan  {n} -incoming
           break         
        end
       end
     else  
      nmsg = {getmsg /cell/dend[{i}]/Ex_chan -incoming -count}
      for (n = 0; n < nmsg; n = n + 1)
       if ({getmsg /cell/dend[{i}]/Ex_chan -in -type {n}} == "SPIKE")
          echo deleting message {n}
          deletemsg /cell/dend[{i}]/Ex_chan  {n} -incoming
          break    
       end      // if
      end     // for n
     end
  end  // for i
  
	if ({exists /LDS/draw/xcell2})
		delete /LDS/draw/xcell2
		
	else 
		echo "/LDS/draw/xcell2 doesn't exist!"
	end

	if ({exists /LDS/draw/xcell3})
		delete /LDS/draw/xcell3
		delete /LDS/draw/xcell4
		delete /LDS/draw/xcell5
		delete /LDS/draw/xcell6
		delete /LDS/draw/xcell7
	else 
		echo "/LDS/draw/xcell3 doesn't exist!"
	end

	if ({exists /LDS/draw/xcell8})
		delete /LDS/draw/xcell8
		delete /LDS/draw/xcell9
		delete /LDS/draw/xcell10
		delete /LDS/draw/xcell11
		delete /LDS/draw/xcell12
	else 
		echo "/LDS/draw/xcell8 doesn't exist!"
	end

	if ({exists /LDS/draw/xcell13})
		delete /LDS/draw/xcell13
		delete /LDS/draw/xcell14
		delete /LDS/draw/xcell15
		delete /LDS/draw/xcell16
		delete /LDS/draw/xcell17
		delete /LDS/draw/xcell18
		delete /LDS/draw/xcell19
		delete /LDS/draw/xcell20
		delete /LDS/draw/xcell21
		delete /LDS/draw/xcell22
		delete /LDS/draw/xcell23
	else
		echo "/LDS/draw/xcell13 dosen't exist!"
	end

	if ({exists /LDS/draw/xcell33})
		delete /LDS/draw/xcell33
		delete /LDS/draw/xcell34
		delete /LDS/draw/xcell35
		delete /LDS/draw/xcell36
		delete /LDS/draw/xcell37
		delete /LDS/draw/xcell38
		delete /LDS/draw/xcell39
		delete /LDS/draw/xcell40
		delete /LDS/draw/xcell41
		delete /LDS/draw/xcell42
		delete /LDS/draw/xcell43
		delete /LDS/draw/xcell44
		delete /LDS/draw/xcell45
		delete /LDS/draw/xcell46
		delete /LDS/draw/xcell47
		delete /LDS/draw/xcell48
		delete /LDS/draw/xcell49
		delete /LDS/draw/xcell50
		delete /LDS/draw/xcell51
		delete /LDS/draw/xcell52
	else
		echo "/LDS/draw/xcell33 dosen't exist!"
	end
  
  echo "Removing all synaptic inputs!"
end  

//=======================================================
//    functions used in the change synaptic input menu
//=======================================================


 
function setspikes(delay, width, interval)

    str pulser = "/input/synpulse"
    str spiker = "/input/synpulse/spike"
    float delay, width, interval, width2
    setfield {pulser} width1 {width} delay1 {delay} baselevel 0.0  \
        trig_mode 0 delay2 100000
    // free run mode with very long delay for 2nd pulse (non-repetitive)
    // level1 is set by the syn_toggle function 
    setfield {spiker} abs_refract {interval} output_amp 1 thresh 0.5
end


function set_input_timing

   str dialog = "/output/synapse_menu"
//   setinjection {getfield {dialog}/delay value}  \
//       {getfield {dialog}/width value}
     setspikes  {getfield {dialog}/delay value}  \
       {getfield {dialog}/width value}  \
       {getfield {dialog}/interval value}

   // set spike amplitudes to 1.0/dt
    echo "Synaptic input delay = "{getfield {dialog}/delay value}
    echo "Synaptic input width = "{getfield {dialog}/width value}
    echo "Synaptic input interval = "{getfield {dialog}/interval value}
end




//EOF