GENESIS version 2.1 includes many new features and enhancements to previous versions. The following section describes changes introduced between versions 2.0 and 2.1. The rest of this chapter describes the considerable changes which 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.
The genesis/src/CHANGES file lists the changes introduced in each new release of GENESIS. Likewise, genesis/Doc/README.changes lists the documentation files which have been added or changed. 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 (genesis/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 the GENESIS 2.2 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 which 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.
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 |
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 |
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.
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 |
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 Chapter 20 of ``The Book of GENESIS''.
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 |
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 |
In addition to changes in some command names, there have been some changes to the syntax of statements used by the Script Language Interpreter.
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 (The Book of GENESIS, p. 219) uses:
setfield /cell/soma inject {getfield {dialog} value}
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.
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.
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-9would be replaced by
if (!{exists /cell/soma area}) addfield /cell/soma area end setfield /cell/soma area 1e-9
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.
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.
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.
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, or from the GENESIS anonymous ftp site.
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.