Previous Next Table of Contents

## 2. Changes Introduced in GENESIS 2

GENESIS version 2.3 includes many new features and enhancements to previous versions. The following sections describe changes introduced between versions 2.0 and 2.3. The final part of this chapter describes the considerable changes that were introduced in version 2.0. If you have previously used GENESIS 1 (e.g., version 1.4 or earlier), please read those sections also, in order to understand the differences between GENESIS 2 and GENESIS 1.

## 2.0 Changes Introduced in GENESIS 2.3

The ChangeLog file lists the changes introduced in each new release of GENESIS. Likewise, Doc/README.changes lists the documentation files that have been added or changed. In addition to many bug fixes, these are the most significant new features of GENESIS version 2.3:

The GENESIS 2.3 release supercedes version 2.2.1, which was primarily a bug fix release. It has a number of changes in the simulator source code to allow use on a greater variety of platforms, including Intel and AMD 64 bit processors, MacIntosh with OS/X, and Microsoft Windows with the Cygwin environment. The files src/README.cygwin and src/README.OSX explains more about the use of GENESIS under Windows and OSX. The Scripts/kinetikit simulation for modeling biochemical kinetics has been upgraded to version 11.

The Scripts/purkinje tutorial has been updated to version 2, which includes a cell plugin framework, on-the-fly generation of tabchannels, and the ability to select compartment names for ascii ouput and current injection. It also provides multiple output graphs for simultaneously plotting membrane potential, calcium concentration, and channel conductance, current, and reversal potential.

It has been a long-standing tradition in computing to use the extension ".doc" for plain text documentation files, dating from long before the advent of Microsoft Word. However, we have finally capitulated to current usage and changed the extensions of the on-line help text files in the Doc directory to ".txt", in order to make them viewable with web browsers that normally associate the ".doc" extension with Word files.

There have been changes to the output format of the disk_out, asc_file, and res_ascfile objects. In GENESIS 2.2, these three objects were changed to write data files in double precision format (type double) instead of single (type float). Unfortunately, the resulting files were incompatible with the disk_in and xsimplot objects (which expect floats), and existing utilities that people have written to read the output of disk_out. GENESIS 2.2.1 reverted to the single precision format.

In GENESIS 2.3, the asc_file, res_asc_file, and par_asc_file objects now treat incoming message values as double precision data. However, they now have an added field "float_format" that can specify a format string in the form used by the floatformat command. The default value is "%g", giving the usual single precision result, for backwards compatibility with previous versions of these objects. By setting this to a string with a different value, for example "%0.12g", the data and the simulation time that are written to the file can be given to to a higher precision.

The tabchannel object now has a Z_conc field (default = 1) to indicate that the Z gate is concentration dependent. It may be unset (set to zero) to allow a voltage-dependent Z gate.

### New Objects and Commands in GENESIS 2.3

GENESIS 2.3 implements three objects used in the GENESIS simulation of an 8-cell network model of the leech heart interneuron beat timing circuit. (See http://calabreselx.biology.emory.edu/software.html) The SynE_object, SynG_object, and SynS_object provide electrical synaptic transmission, graded synaptic inhibition, and voltage-dependent modulation of spike-mediated synaptic transmission in the leech neuron models. These are documented only in the GENESIS plain text format documentation in the genesis/Doc directory, or via the GENESIS "help" command. See SynE_object.txt, SynG_object.txt, and SynS_object.txt.

The izcell object has been added to implement the Izhikevich simple spiking neuron model. This uses only four parameters to produce a wide variety of action potential shapes and firing patterns in a simplified "point neuron" model. The documentation is in Doc/izcell.txt, or via the GENESIS "help" command. Scripts/examples/izcell provides commented example scripts and further documentation.

Two new debugging commands gctrace (for tracing GENESIS commands) and gftrace (for tracing script language functions) have been added, starting with GENESIS 2.2.1. The usage of these is:

         gctrace <level>
         if <level> is 1, command tracing is enabled.
         if <level> is 0, command tracing disabled.

         gftrace <level>
         if <level> is 1, function tracing is enabled.
         if <level> is 0, function tracing disabled.

gftrace is particularly useful for finding out which script functions are called from the script field of Xodus widgets without having to locate the widget in the GENESIS element hierarchy.

## 2.1 Changes Introduced in GENESIS 2.2

In addition to many bug fixes and improvements to allow compilation on new platforms, these are the most significant new features of GENESIS version 2.2:

In order to make parameter searching easier, we have developed a library of parameter search objects and functions that automate the search process. A description of parameter searching with GENESIS can be found in The GENESIS Parameter Search Library, with demonstration scripts in Scripts/param.

As of GENESIS version 2.2, symcompartment elements may be used with the hsolve method, allowing the use of fast implicit numerical integration methods with cell models constructed with symmetric compartments. There have also been a number of changes and bug fixes for the hsolve object. The documentation for hsolve has been updated to reflect the behavior in GENESIS 2.2.

There have been improvements in the library of objects for modeling the effects of ion diffusion, and a new Michaelis Menten store pump object, the hillpump. These are now documented, and the Scripts/examples/spinedemo directory has a demonstration of the use of the difshell, fixbuffer, and taupump objects to model the diffusion of intracellular calcium ions in dendritic spines, with the effect of buffering and ionic pumps.

Several tools have been added for spike train generation, recording, and analysis. There are improved versions of the freq_monitor and peristim objects, and the new autocorr and crosscorr objects for calculating histograms of auto-correlations and cross-correlations in spike trains. The timetable object allows controlled sequences of synaptic input at times specified in a table. The event_tofile object creates an ascii file containing simulation times at which an input crosses a specified threshold value.

The new facsynchan is a synaptically activated channel with synaptic facilitation and/or synaptic depression.

The tabchannel and tab2Dchannel now have an ``instant'' field that may be used to specify that a particular gate should instantaneously reach the steady state activation value. This allows the channel conductance to have a multiplicative factor. This is often used to model a Ca-dependent conductance, or to implement Morris-Lecar models having zero time constant for activation. For an example, see the improved implementation of the Ca-dependent K channel in Scripts/traub91.

The diskio object is used to to read and write data in the portable binary NETCDF format. As of GENESIS 2.2, diskio also supports files in the older GENESIS binary FMT1 format, which is used by the existing disk_in and disk_out objects.

SPRNG (the scalable portable random number generator) has been incorporated into GENESIS to provide faster and higher quality random numbers, which will be the same across all hardware platforms. We continue to support use of the Numerical Recipes generator, which is used by default. A new command, setrand, is used to select between the NR or SPRNG generators.

In addition to the demonstration scripts mentioned above, there have been several other additions and updates to the Scripts directory. These include a tutorial based on the detailed De Schutter and Bower Purkinje cell model, an updated version of kinetikit, and added channel models in the Scripts/neurokit/prototypes directory. The Scripts/examples directory has several new or updated GENESIS programming examples, including the use of the facilitating synchan, a new demonstration of Hebbian learning, and the use of the pore objects for modeling stochastic ion channels.

### New Commands in GENESIS 2.2

The following commands are new in GENESIS 2.2.

Routine | Description
addglobal | Declares a global variable; name may be a variable
countelementlist | Returns the number of elements in element list
fileconnect | Makes synaptic connections using a weight matrix file
gen2spk | Creates file with spike times from file of Vm vs. time
getglobal | Returns global variable value; name may be a variable
getparamGA | Gets parameters from the paramtableGA object
getsolvechildname | Finds hsolve child element names
initparamBF | Initializes parameters for the paramtableBF object
initparamCG | Initializes parameters for the paramtableCG object
initparamGA | Initializes parameters for the paramtableGA object
initparamSA | Initializes parameters for the paramtableSA object
initparamSS | Initializes parameters for the paramtableSS object
msgsubstitute | Allows undump of saved simulation with new message names
objsubstitute | Allows undump of saved simulation with new object names
resetfastmsg | Variation of reset command for use with kinetics library
setglobal | Sets value of global variable; name may be a variable
setparamGA | Sets parameters for the paramtableGA object
setrand | Select Numerical Recipes or SPRNG random number generator
setsearch | Specifies which parameters will be varied in a search
shapematch | Returns goodness of match between two waveform files
spkcmp | Returns goodness of match between two spike time files
substituteinfo | Lists substitutions from msgsubstitute/objsubstitute
volumedelay2 | Faster version of volumedelay; requires destination
volumeweight2 | Faster version of volumeweight; requires destination
xsimplot | Performs 2D plotting of data sets from binary file

### New Objects in GENESIS 2.2

The following objects are new in GENESIS 2.2.

Object | Description
autocorr | Calculates histograms of auto-correlations
calculator | Adds, subtracts, multiplies, and divides using messages
crosscorr | Calculates histograms of cross-correlations
event_tofile | Records event times; e.g spikes or threshold crossings
facsynchan | Like synchan, with synaptic facilitation and/or depression
hillpump | Michaelis-Menten store pump to be coupled to a difshell
paramtableBF | Implements "brute-force" parametersearch
paramtableCG | Implements conjugate-gradient descent parameter search
paramtableGA | Implements genetic algorithm parameter search
paramtableSA | Implements simulated annealing parameter search
paramtableSS | Implements stochastic parameter search
timetable | A table of time values for change of synaptic activation
xfastplot | High-speed graphic display similar to an oscilloscope

## 2.2 Changes Introduced in GENESIS 2.1

In addition to many bug fixes, these are the most significant new features of GENESIS version 2.1:

There are now two-dimensional versions of the tabchannel and table objects (tab2Dchannel and table2D) which will be useful for modeling voltage and concentration dependent channels. The tabcurrent object, along with the setupNaCa and setupghk commands, may be used to model non-ohmic currents, and can also be used to compute the solution to the Goldman-Hodgkin-Katz equation.

The diskio, variable, and metadata objects may be used to provide the features of the existing disk_in and disk_out objects to read and write data in the portable binary NETCDF format. This will ease the interfacing of GENESIS simulations with popular analysis and signal-processing tools such as MATLAB, and make it possible to use binary files produced by GENESIS on multiple platforms.

There is a new version of the library (src/concen) of objects which are used to model the effects of the diffusion of ions (e.g., calcium). (These are largely undocumented at present. Please see the short summaries below, the source code, and the results of the showobject command. Full documentation will be provided in a future GENESIS release.)

There have been substantial improvements in the hsolve object, which is used to maximize the speed and accuracy of computations for compartmental models. The default mode of use (chanmode 0) has been revised so that it is possible to easily add and delete outgoing messages to other elements, and to use it with any elements whether or not they are handled by hsolve. There is a new mode (chanmode 4), and some changes in the restrictions of the other modes. These are explained in detail in the revised documentation for hsolve. A new command findsolvefield has been provided to make it easy to accesss fields of the hsolve element when using these faster chanmodes, thus avoiding their restrictions on input and output of field values. The useconcen and usenernst fields of the hsolve object have been removed, as they are no longer needed. A new restriction is that, for chanmodes 2-4, the element tree of your cell (or other element tree to be taken over by hsolve) must not contain any non-hsolvable elements other than neutral elements. For existing simulations that violate this restriction, it will be easiest to switch to chanmode 0 or 1.

The readcell command and the hsolve object recognize the new concentration and channel objects. Both readcell and hsolve may be used to create an hsolve element instead of a neutral element at the root of the cell hierarchy.

Compartments now have both start and end coordinates.

XODUS forms can now be nested, allowing for grouping of widgets within a form using a nested form.

The latest version of the library of objects for biochemical kinetics modeling and its graphical interface (Kinetikit) are now part of the GENESIS distribution.

Several changes have been made to allow parallel GENESIS (PGENESIS) to be built on top of GENESIS.

### New Commands in GENESIS 2.1

The following commands are new in GENESIS 2.1. Most of these are described in the GENESIS Command Reference.

Routine | Description
findsolvefield | Used with hsolve for input/output of values
getsolvecompname | Used with hsolve to find compartment names
planardelay2 | Faster version of planardelay; requires destination
planarweight2 | Faster version of planarweight; requires destination
setupNaCa | Sets up a tabcurrent to model the Na-Ca exchanger current
setupghk | Sets up a tabcurrent to solve the GHK equation

### New Objects in GENESIS 2.1

The following objects are new in GENESIS 2.1. Most of these are described in the GENESIS Object Reference.

Object | Description
concchan | Handles 1-D diffusion of molecules across a membrane
concpool | Concentration pool without diffusion
difbuffer | First order diffusable buffer; constant total concentration
dif2buffer | First order diffusable buffer; variable total concentration
difshell | Concentration shell with one-dimensional diffusion
diskio | Similar to disk_in/disk_out with portable binary NETCDF format
enz | Handles Michaelis-Menten enzyme kinetics with pool object
fixbuffer | First order fixed buffer
fura2 | Computes fura2 fluorescence in a single difshell
ghk | Calculates the Goldman-Hodgkin-Katz (constant field) equation
metadata | Used with diskio to read/write descriptive content
mmpump | Models a Ca-ATPase pump obeying Michaelis-Menten kinetics
pool | A concentration pool used in kinetic reactions
reac | Handles standard kinetic reaction schemes with pool object
res_asc_file | Like asc_file, for changes outside a given range
spikehistory | Outputs neuron ID and spike times to an ascii file
tab2Dchannel | Channel with 2-D tables, e.g. for dependence on Vm and [Ca]
tabcurrent | Tabulated non-ohmic ion current; also solves GHK equation
table2D | Has an internal 2-D table, with interpolation
variable | Used with diskio to read/write binary data

## 2.3 Changes Introduced in GENESIS 2.0

With the release of GENESIS version 2.0, many parts of the system have been redesigned and reimplemented to provide a more portable, stable and consistent system. The GENESIS command set has been revised subtantially in order to provide more consistent command names and command options. Likewise, the scripting language has also been revised to make it more consistent and to address various idiosyncracies in the syntax. There has also been a complete reimplementation of the XODUS graphical user interface objects. This was done in order to provide an improved appearance of the graphics, correction of design problems including memory allocation, improved portability and elimination of dependency on the Athena widget set.

Although these changes extend the capabilities of GENESIS and make it more flexible and easier to use, this is at the cost of some loss of backwards compatibility with previous versions of GENESIS. The convert utility described below, and in Script Conversion should make the conversion of existing GENESIS scripts relatively painless. This section of the manual gives an overview of some of the more significant changes that will affect present users of GENESIS 1.

## 2.4 Command Names

Some of the names of GENESIS commands have been changed in GENESIS 2, in order to provide a more consistent and intuitive naming scheme. For example, underscores have been eliminated in command names, unless they are obsolete commands related to ``old-style connections'' that are being preserved for backwards-compatibility. In some cases, names of command options have been changed and new options have been added. In order to find the names of allowed options, give the name of the command followed by the ```-usage`'' option. Note that in GENESIS 2, options follow any command arguments. Options may be abbreviated to the shortest unambiguous character string.

The following table lists the old and new names of commands which have changed.

GENESIS 1 | GENESIS 2
EL, element_list | el, getelementlist
Error | error
INPUT | input
VERSION | version
addschedule | addtask
alias | addalias
calc_Cm | calcCm
calc_Rm | calcRm
cell_sheet | cellsheet
clean | deleteall
clear_buffer | clearbuffer
clearschedule | deletetasks
clocks | showclocks
commands | listcommands
date | getdate
dd_3d_msg | dd3dmsg
duplicate_table | duplicatetable
float_format | floatformat
gen_3d_msg | gen3dmsg
get | getfield
get_input | getinput
getfields | getfieldnames
jobs | showjobs
killjob | deletejob
paste_channel | pastechannel
pathname | getpath
pop | pope
priority | setpriority
prompt | setprompt
push | pushe
rall_calc_Rm | rallcalcRm
rancoord | randcoord
rand_comp | randcomp
randomfield | setrandfield
randomseed | randseed
read_cell | readcell
rel_position | relposition
reschedule | resched
scale_parms | scaleparms
scale_tabchan | scaletabchan
sched | showsched
sendmsg | addmsg
set | setfield
setup_alpha | setupalpha
setup_gate | setupgate
setup_tau | setuptau
show | showfield
showbinding | showcommand
spatialfield | setspatialfield
status | getstat (function returns value)
status | showstat (prints to screen)
tweak_alpha | tweakalpha
tweak_tau | tweaktau
write_cell | writecell
xshow_on_top | xshowontop

The following obsolete GENESIS 1 commands have been removed from GENESIS 2, either because they are no longer needed, or because have been replaced by a more general command or better way of accomplishing the same result.

Old command | Reason for removal
addfunc | used only when compiling libraries
autoshell | of no known use
bgstep | replaced by ``step -background''
click1, click2 | see XODUS Mouse Clicks
delete_output_data | removed with print_out object
dropwhen | see XODUS Mouse Clicks
endscript | use return statement to return from a script
getinfo | never implemented
getobjenv | see Extended Objects
graphpts | call ADDPTS action of xplot
library | obsolete
listwhen | see XODUS Mouse Clicks
object | used only when compiling libraries
newclass | used only when compiling libraries
read | not needed
restoreimage | replaced by simundump
saveimage | replaced by simdump
setobjenv | see Extended Objects
simplot | same as xsimplot
source | not needed
statusline | obsolete and terminal-dependent
when | see XODUS Mouse Clicks
xaddpts | call ADDPTS action of xplot
xcreate | obsolete XODUS alias for create
xevent | see XODUS Mouse Clicks
xget | subsumed by getfield
xgraphfile | now an ASCII option of xsimplot
xkill | subsumed by delete command for widgets
xsendevent | see XODUS Mouse Clicks
xset | subsumed by setfield
xshowall | use ``xshow /##[ISA=xform]''
xshowconn | replaced by xtree actions
xtreetrunc | use xtree TRUNCATE action
xupdatepix | subsumed by xupdate, PROCESS or RESET actions

The following commands are new in GENESIS 2. These are described in the GENESIS Command Reference.

addclass | addfield | addforwmsg | addmsgdef
addobject | callfunc | enddump | deleteforwmsg
deletemsgdef | file2tab | getdefault | getelementlist
getsyncount | getsyndest | getsynindex | getsynsrc
initdump | isa | listactions | loadtab
normalizeweights | pixflags | planarconnect | planardelay
planarweight | resetsynchanbuffers | rmsmatch | setdefault
setfieldprot | setspatialfield | simdump | simobjdump
simundump | strsub | swapdump | syndelay
tab2file | volumeconnect | volumedelay | volumeweight
warning | xflushevents | xgetstat | xinit
xmap | xpixflags | xps | xtextload

## 2.5 Objects

The names of GENESIS objects have not changed in version 2. However, some new objects have been added, new fields and actions have been added to some, and a few have been removed. Most of the XODUS draw widgets have undergone considerable change, although there is a high degree of backwards compatibility for the simple widgets. For detailed descriptions of the XODUS objects, see the individual object reference summaries and the chapter on ``Advanced XODUS Techniques'' in ``The Book of GENESIS''.

### New GENESIS Objects

Object | Description
hebbsynchan | Like synchan, with Hebbian modification of weights
randomspike | Generates random spike events, replacing random
spikegen | Performs threshold spike discrimination, replacing spike
synchan | Synaptically activated channel, replacing channelC2
synchan2 | Alias for synchan
xaxis | Makes axis for plots - is created by xgraph
xcoredraw | Foundation object class for displaying pixes.
xdumbdraw | Demonstration object class for displaying pixes.
xgif | Draws gif images as a pix inside a draw widget
xpix | Base object for all pix widgets
xplot | Draws graphical plots - is created by xgraph
xsphere | Example pix which draws a filled circle
xtree | Displays/manipulates relationships between elements and objects
xvar | Displays numerical values graphically with shape and color

### Removed from GENESIS 2

Old object | Reason for removal
xconn | Now incorporated into xview
xelmtree | Now incorporated into xtree
xfileview | Implemented by sending messages from disk_in to xview

## 2.6 SLI Syntax Changes

In addition to changes in some command names, there have been some changes to the syntax of statements used by the Script Language Interpreter.

### Function Arguments

GENESIS 1 used both the ``command form'' and the ``function call form'' of specifying function arguments. In addition, it required that the function call form be used when a function is expected to return a value, as with ``get'' (now ``getfield''). GENESIS 2 uses only the command form. Thus, you can no longer type a command as ``commandname(arg1,arg2...)''. The new syntax for command invocation in expressions is to delimit the command and its arguments with curly braces.

For example, the GENESIS 1.4 version of Scripts/tutorials/tutorial3.g used:

        set /cell/soma inject {get({dialog}, value)}

GENESIS 2 uses:

        setfield /cell/soma inject {getfield {dialog} value}

### Operands in Expressions

The other change is in how operands in expressions are handled. For arithmetic operators, any string arguments are cast to floating point. For logical and bitwise operators, all operands are cast to integers. Comparison operators are unchanged. The string concatenation operation, which was previously provided using the + operator when both operands were strings, has been replaced by the @ operator which casts both operands to strings and concatenates them. The precedence for @ is the same as for +, -, etc. This is described in further detail under Operators.

## 2.7 Synaptic Connections

Synaptic connections are handled much differently under GENESIS 2 than in GENESIS 1. With version 1, a spike generating object sends a message to an axon object and the ``connect'' command is used to link the axon with a channelC2 object. With version 2, messages are used from a spike generating object to a synchan object, which incorporates the features of both the axon and the synaptically activated channelC2. This replaces the idiosyncratic ``axonal connection'' with standard GENESIS elements and messages, allowing easier access to synaptic data at both the script and C levels. The relevant GENESIS commands are summarized in Synaptic Connections. An example of this new method of implementing connections may be found in Scripts/tutorials/tutorial4.g.

In order to provide backwards compatibility with GENESIS 1 and to ease the process of converting existing simulations, the old-style connection objects and commands have been preserved in a connection compatability library. This library (oldconn) may be compiled as an optional part of the GENESIS 2.0 release. Setting and getting axon connection fields is provided via the new setconn and getconn commands (which are only available in the compatability library). The convert utility converts set and get commands on connections to use setconn and getconn.

## 2.8 Extended Fields

Environment variables of objects and their elements have now been replaced with extended fields. The addfield and deletefield commands are used to add and delete extended fields. The setfield, getfield, showfield, setdefault, and getdefault commands work the same for extended fields as for predefined fields. For example, the GENESIS 1 command

        set -env /cell/soma area 1e-9

would be replaced by

        if (!{exists /cell/soma area})
            addfield /cell/soma area
        end
        setfield /cell/soma area 1e-9

## 2.9 Extended Objects

GENESIS now has an an extended object facility for the creation of new objects at the script level. This allows for prototyping new objects, creating higher level or model specific objects built from other GENESIS objects, without the need for writing C code to be compiled into GENESIS. The extended field facility described above may be used to create additional fields for these new objects. When a new object is defined, the user can specify script functions to be called when an associated action is called on these types of elements. Once an extended object is defined, it may be used in the same manner as any built-in object and elements created from the object behave just as elements of built-in objects. The construction and use of extended objects is described in Extended Objects.

## 2.10 Saving Simulations

The save command file format has changed to include the number of saved values for each element. Old save files are not compatible with the new format and cannot be read in by restore. Three new commands (simdump, simundump, and simobjdump) have been provided for saving the state of a simulation. These replace the old saveimage and restoreimage commands, but are not equivalent.

## 2.11 Script Conversion

Because of these major changes in command names, options, and script language syntax, GENESIS 1 scripts will generally not run under GENESIS 2. The convert program converts GENESIS 1 compatible scripts to use GENESIS 2 syntax, commands and features. Some features have changed dramatically enough that an automatic conversion to the new features is not feasible. In these cases, convert generates script code for compatibility libraries which support the GENESIS 1 features. Although some scripts can be converted and run successfully without any manual changes to the converted scripts, it will often be necessary to make additional changes. The use of convert and a discussion of conversion issues is given in Converting GENESIS 1 Scripts to GENESIS 2 and in the man page for convert.

## 2.12 The Parallel Library

GENESIS 2 included the first release of a parallel processing capability, which allows a model to be partitioned and run on workstation clusters and on parallel supercomputers. Single simulations can be parallelized and automated searches of parameter space can be performed in parallel. This is described in a separate manual. As the parallel library is under continual development, and may not be of interest to all GENESIS users, it is not included in the GENESIS distribution file, but is available separately. You may download the latest version of the parallel library and its documentation from the GENESIS WWW site.

## 2.13 Rallpacks Benchmarks

Rallpacks are a set of benchmarks for evaluating neuronal simulators for both speed and accuracy. As both of these criteria are important when choosing a simulator, we are now including Rallpacks within the GENESIS distribution, in the directory genesis/rallpack.

Previous Next Table of Contents