GENESIS Tutorial 5 - Using hsolve; synaptic plasticity

Some other useful GENESIS objects and examples

Documentation is in genesis-2.3/genesis/Doc

efield.txt - An extracellular field potential recording electrode that

uses current sources and their distance from the electrode site to calculate the field

Examples in genesis/Scripts/piriform/field.g and UGTD2/Tutorials/networks/hippo2

asc_file.txt - writes data to a plain text file at clocked intervals,

typically with a time step that is larger than that used by the main simulation clock 0.

Examples (with and without hsolve) in UGTD2/Tutorials/networks VAnet2 and ACnet2-GENESIS

script_out.txt - executes a script command at each clock step

Example:

// spikebeep.g - illustrate the use of the script_out element to beep
// whenever a spike is produced  (assuming your terminal window
// beeps when a ctrl-G is echoed).
// Include this file at the end of Scripts/tutorials/tutorial4.g

// The script_out element checks for a spike at every simulation step
create script_out /catchspike
setfield /catchspike command "checkspike"
useclock /catchspike 0

function checkspike
      if ({getfield /cell/soma/spike state} != 0)
             echo {chr 7} -nonewline
      end
end

Using hsolve for fast efficient calculations

hsolve.txt - the main documentation

BoG Chapter 20 Sec 20.5 and following sections

Single cell example:

int hflag = 1       // use hsolve if hflag = 1
str cellpath = "/cell"

readcell RScell.p  {cellpath}

if (hflag)
  create hsolve {cellpath}/solver
  setfield {cellpath}/solver path "/cell/##[][TYPE=compartment]"
  setmethod 11
  setfield {cellpath}/solver chanmode {hsolve_chanmode}
  call {cellpath}/solver SETUP
  reset
  echo "Using hsolve"
end

UGTD2/Tutorials/advanced-tutorials/hsolve-cornelis/index.html Simulations with GENESIS using hsolve

Section 3 - Networks of cells

Detailed network example: UGTD2/Tutorials/networks/VAnet2/VAnet2-batch.g:

createmap /library/Ex_cell /Ex_layer {Ex_NX} {Ex_NY} \
  -delta {Ex_SEP_X} {Ex_SEP_Y}

/* Step 4: Setting up hsolve for a network requires setting up a
 solver for one cell of each type in the network and then
 duplicating the solvers for the remaining cells.  The procedure is
 described in the advanced tutorial 'Simulations with GENESIS using
 hsolve by Hugo Cornelis' at
 genesis-sim.org/GENESIS/UGTD/Tutorials/advanced-tutorials
*/

if(hflag)
  pushe /Ex_layer/Ex_cell[0]
  create hsolve solver
  setmethod solver 11 // Use Crank-Nicholson
  setfield solver chanmode {hsolve_chanmode} path "../soma"
  call solver SETUP
  int i
  for (i = 1 ; i < {Ex_NX*Ex_NY} ; i = i + 1)
      call solver DUPLICATE \
      /Ex_layer/Ex_cell[{i}]/solver  ../soma
      setfield /Ex_layer/Ex_cell[{i}]/solver \
          x {getfield /Ex_layer/Ex_cell[{i}]/soma x} \
          y {getfield /Ex_layer/Ex_cell[{i}]/soma y} \
          z {getfield /Ex_layer/Ex_cell[{i}]/soma z}
  end
  pope
  pushe /Inh_layer/Inh_cell[0]
  create hsolve solver
  setmethod solver 11
  setfield solver chanmode {hsolve_chanmode} path "../[][TYPE=compartment]"
  call solver SETUP
  int i
  for (i = 1 ; i < {Inh_NX*Inh_NY} ; i = i + 1)
      call solver DUPLICATE \
          /Inh_layer/Inh_cell[{i}]/solver      ../##[][TYPE=compartment]
  setfield /Inh_layer/Inh_cell[{i}]/solver \
      x {getfield /Inh_layer/Inh_cell[{i}]/soma x} \
      y {getfield /Inh_layer/Inh_cell[{i}]/soma y} \
      z {getfield /Inh_layer/Inh_cell[{i}]/soma z}
  end
  pope
end

// Do an overall reset, just to be sure hsolve is properly set up
reset

/* Step 5: Now connect them up with planarconnect */

Modeling Synaptic Plasticity

Built-in GENESIS objects

hebbsynchan.txt -synaptically activated channel with a simple
mechanism for hebbian weight changes as a function of pre- and postsynaptic activities.

Scripts/examples/hebb/hebb.g and Scripts/examples/hebb/pavlov/pavlov.g

facsynchan.txt - synaptically activated channel with synaptic

facilitation and/or synaptic depression.

Example: Scripts/examples/facsynchan/facdemo.g

The plastic synchan variants listed obove are cannot be used in cells that that are taken over by hsolve, and this limits their use in large network models. However Spike Timing Dependent Plasticity (STDP) can be implemented under hsolve in GENESIS 2.4 by using the stdp_rules object. For doucumentation, see the demonstration scripts for the stdp_rules object in genesis/Scripts/stdp_rules, and the documentation on New Plasticity Objects.

A simple exercise: Use the simplecell model with 5 cells

cell[0] the "target cell" dend/Ex_channel receives SPIKE messages from cell[1] - cell[4]

Each of these fires at different random rates (see UGTD2/Tutorials/cells/simplecell2 for an example)

alternatively, use the RSnet model.

A project:

Apply it to the VAnet2 model

Advanced projects: