README file for the GENESIS implementation of a network benchmark
=================================================================

1. Introduction
---------------

This directory contains the The GENESIS implementations of the of the
Vogels and Abbott (2005) model using single compartment neurons with
Hodgkin-Huxley dynamics.  This was used as a benchmark for neural
simulators in the review by Destexe et al.  (2006), which gives further
details of the benchmarks.

Two versions of the benchmark are provided here.  The script
dualexpVA-HHnet.g implements a version that uses a dual exponential form of
the synaptic conductances, having a 2 msec rise time, with a 5 msec decay
for excitatory connections and 10 msec for inhibitory connections.  The
script instcondVA-HHnet.g, is nearly the same, but it uses synaptic
conductances with an instantaneous rise time, as specified by the
benchmark.

Both versions are based on simple modifications of the RSnet.g example from
the GENESIS Neural Modeling Tutorials (Beeman, 2005).  The latest versions
are available from http://www.genesis-sim.org/GENESIS/Tutorials/.  The
tutorial "Creating large networks with GENESIS" analyzes this script in
detail, and explains how to modify it for other network models.

These simulations implement a network of 3200 simplified neocortical
neurons providing excitatory connections and 800 interneurons providing
inhibitory connections, randomly interconnected with 2% probability.  As
specified by the benchmark, these are simple one compartment neurons with
Hodgkin-Huxley sodium and potassium channels.  The excitatory and
inhibitory neurons are identical, and fire tonically without spike
frequency adaptation.  Comments in the scripts and the tutorial on RSnet
explain how to modify the scripts to use more biologically realistic neuron
models and how to modify the network connections.  The benchmark specifies
that there be no axonal propagation delays (nor even a location of neurons
in space), but this implementation allows optional delays through the GUI
provided by the graphics.g file.


2. Running the simulations
--------------------------

2.1 Getting and installing GENESIS
----------------------------------

To run the simulations, you must have the GENESIS simulator installed, and
in your search path.  You can download the latest GENESIS distribution from
the GENESIS Web site (http://www.genesis-sim.org/GENESIS), with
documentation and installation instructions. If you are using Linux, Mac
OS/X, or Microsoft Windows with Cygwin (a UNIX-like environment for
Windows), you may download the appropriate GENESIS binary distribution that
includes a precompiled "genesis" executable file. This will save you the
trouble of compiling GENESIS from the source code that is included with the
GENESIS source distribution.

2.2 Running the Dual Exponential VA HH Model script
---------------------------------------------------

Open a console window in this directory, and type

     genesis dualexpVA-HHnet.g

The CONTROL PANEL that appears has a toggle button to turn current
injection pulses on and off, and text fields to set parameters such as
maximal synaptic conductances, synaptic weight scaling, and propagation
delays, injection pulse characteristics, and the frequency of random
Poisson-distributed synaptic activation.

The plots in the middle will show the membrane potentials of three
excitatory neurons (0, 1536, and 1567), and inhibitory neuron 0.  The
netview displays at the right show the membrane potentials of the
excitatory neurons (top) and inhibitory neurons (bottom).  With no
propagation delays, the positions of the neurons on the grid are
irrelevant.  Nevertheless, this two-dimensional representation of the
network layers makes it easy to visualize the number of cells firing at any
time during the simulation.

The first figure in the GENESIS section of the paper shows the results of
running this simulation for 0.05 msec with a random background synaptic
activation applied to all excitatory cells at a mean frequency of 70 Hz.,
removing the activation, and then running for another 4.95 seconds.  This
figure is included here as FigG1-dualexpVA-HH.gif.  In order to produce the
results shown in the figure:

1. Use the mouse to place the cursor in the text field to the right of
   "runtime (sec)", click to the right of the number displayed there, use
   the backspace key to delete the value, and enter "0.05".  NOTE: With
   GENESIS/XODUS, you then have to hit "Enter" to cause the new value to be
   recognized.
2. In a similar manner, change the value of "Frequency (Hz)" from "0"
   to "70".
3. Click on "RESET".
4. Click on "RUN".
5. When the simulation stops plotting, change the runtime to 4.95 and
   the Frequency back to 0.
6. Click on "RUN" - do NOT click on "RESET".
7. In order to see the plots for the full 5 seconds, instead of the
   default setting of 2 seconds, click on the "scale" button on each graph
   and use the menu that appears to increase the value of "xmax" to 5.0.

2.3 Running the Instantaneous VA HH Model script
------------------------------------------------

The instantaneous rise in the synaptic conductance that is used in the
Vogels-Abbott model and benchmark is a very efficient model to implement
with a simulator specialized for IF networks, but such a non-biological
conductance is not normally provided by GENESIS.

Fortunately, GENESIS has a simple procedure for adding user-contributed
objects and commands to extend it.  The user-contributed code for the
"isynchan" object in the isynchan directory adds a new GENESIS object
type called the "isynchan", which is used by the instcondVA-HHnet.g
script and its associated scripts.

If you are using Linux, you may be able to run the executable binary
"isynchan/igenesis", without compiling the isynchan code.  If you have
problems with libraries not being found, or are using another operating
system, you will have to follow the directions in isynchan/README to create
the igenesis executable.

Once you have a usable "igenesis" you can run the instcondVA-HHnet.g
with the command,

     isynchan/igenesis instcondVA-HHnet.g

and proceed as before to get the second figure (FigG2-instVA-HH.gif), which
displays the Instantaneous VA HH Model simulation results, generated under
the same conditions as the first figure.

3. Some other experiments with this network
-------------------------------------------

Introducing propagation delays:

Turn on current injection by clicking on the the "Current Injection OFF"
toggle so that it reads "Current Injection ON".  With the default settings
of the injection fields, this will apply a 50 msec pulse of 1 nA injection
to the soma of the center cell of the excitatory cell grid.

The field labeled "Prop delay (sec/m)" is used to hold the reciprocal of
the axonal conduction velocity.  In the benchmark simulation, there is
an infinite conduction velocity with no delays, so this delay field is set
to zero.  In this case, the propagation delays of all synapic connections
are set to zero.  For a non-zero delay, the the conduction velocity will be
used to calculate delays based on radial distances to the target synapses.

Experiment with the effect of using different propagation delays, with
short injection pulses to the center cell.

Using synapse_info to inspect connections:

You can explore the connections that are made by invoking the
'synapse_info' function at the genesis prompt. This function is defined,
with further explanation, in the file synapseinfo.g, which is included by
the main simulation script.  For example, to see a list of all the synaptic
connections to both the excitatory and inhibitory channels of the three
excitatory neurons for which the membrane potential was plotted, give the
commands to the genesis prompt:

    synapse_info  /Ex_layer/Ex_cell[1536]/soma/Ex_channel
    synapse_info  /Ex_layer/Ex_cell[1536]/soma/Inh_channel
    synapse_info  /Ex_layer/Ex_cell[1567]/soma/Ex_channel
    synapse_info  /Ex_layer/Ex_cell[1536]/soma/Inh_channel
    synapse_info  /Ex_layer/Ex_cell[0]/soma/Ex_channel
    synapse_info  /Ex_layer/Ex_cell[0]/soma/Inh_channel

How do these results relate to the relative amount of spiking produced
by these three cells?

You may alter the set of random numbers used (and therefore the connections
produced) by starting GENESIS first, giving the "randseed" command to
change the random number seed (to the system clock time, if no argument
is given), and then load the simulation script, e.g.

    % genesis
        (some startup messages)
    genesis #0 > randseed
    genesis #1 > dualexpVA-HHnet.g

4. Modifying the scripts to create other networks
-------------------------------------------------

The tutorial "Creating large networks with GENESIS" from the GENESIS Neural
Modeling Tutorials explains how to modify scripts based on RSnet.g for
other network models.  Simple changes to the scripts can substitute
different neuron models for the ones specified in the Ex_cellfile and
Inh_cellfile strings.  The arguments of the planarconnect and planardelay
commands can be changed to provide probabilities of connections or
propagation delays, that either depend on distance, or are assigned
according to various probability distributions.

Here is a suggested project:

Bush and Sejnowski (1996) constructed a realistic model of a single column
in layer V of the visual cortex.  The model used 80 9-compartment pyramidal
cells and 20 7-compartment fast spiking inhibitory basket cells, with
random 10% probablility all-to-all connections.  In spite of introduced
random variations in cells, it fires synchronously when the pyramidal cells
are given uncorrelated spike train inputs, with results similar to those
observed by Gray et al. (1992).

Question:  To what extent do these results depend on the details
of the cell models and the network connections?

Modify the dualexpVA-HHnet.g script to produce a network similar to the
one used by Bush and Sejnowski and try using the "VA_HHcell" used in this
script, or more realistic cell models that are available with the GENESIS
Modeling Tutorial.  Experiment with different ways to specify the
propagation delays, and with the GENESIS commands for introducing random
variations in neuron passive parameters and positions.

5. GENESIS tools for analyzing spiking networks
-----------------------------------------------

The GENESIS Reference Manual section on Objects describes several
"Device Objects" that can be used for spike train analysis:

  autocorr        Calculates histograms of auto-correlations
  crosscorr       Calculates histograms of cross-correlations
  interspike      Generates an interspike interval histogram
  peristim        Generates a peristimulus spike histogram
  event_tofile    Records event times; e.g spikes or threshold crossings


These objects can be used to generate histograms for analysis of spike
trains produced by the network, similar to those in Fig. 2 of the Vogels
and Abbott paper.

References
----------

Beeman D (2005) GENESIS Modeling Tutorial. Brains, Minds, and Media. 
1: bmm220 (urn:nbn:de:0009-3-2206).  (http://www.brains-minds-media.org)

Bush P, Sejnowski T (1996) Inhibition synchronizes sparsely connected
cortical neurons within and between columns in realistic network models.
J. Comput. Neurosci. 3: 91-110.

Destexe et al. (2006) Simulation of networks of spiking neurons: A review
of tools and strategies.  Submitted to J. Comput. Neurosci.

Gray CM, Engel AK, Konig P, Singer W (1992) Synchronization of
oscillatory neuronal responses in cat striate cortex: Temporal properties.
Vis. Neurosci. 8: 337-347.

Vogels TP, Abbott LF. (2005) Signal propagation and logic gating in
networks of integrate-and-fire neurons. J. Neurosci. 25: 10786--10795.