GENESIS (simulation environment)
|James M. Bower and David Beeman (2007), Scholarpedia, 2(3):1383.||doi:10.4249/scholarpedia.1383||revision #137151 [link to/cite this article]|
GENESIS (the GEneral NEural SImulation System) is a general purpose software platform that was developed to support the biologically realistic simulation of neural systems, ranging from subcellular components and biochemical reactions to complex models of single neurons, simulations of large networks, and systems-level models. The object-oriented approach taken by GENESIS and its high-level simulation language allows modelers to easily extend the capabilities of the simulator, and to exchange, modify, and reuse models or model components.
Purpose and Modeling Philosophy
GENESIS (the GEneral NEural SImulation System) was designed as an extensible general simulation system for the realistic modeling of neural and biological systems, based on the known anatomical and physiological organization of neurons, circuits and networks (Bower, 1995; Bower and Beeman, 1998). Thus, single cell models in GENESIS usually include dendritic morphology and a variety of ionic conductances, whereas realistic network models attempt to duplicate known efferent and afferent projection patterns. Models of this type at all levels of analysis require that finer scale single components be linked together into larger structures whose emergent behavior is then predicted numerically.
Thus, from the outset, the design of GENESIS has been premised on the assumption that advancement in understanding neural function requires the ability to build computer models based on the actual anatomy and physiology of the nervous system itself (Bower, 1992; 2005). Further, both the software design and support for the GENESIS project has assumed that such a system should
- support the construction of models at many different levels of scale from sub-cellular to systems (Thus GENESIS was the first broad scale modeling system in computational biology);
- be organized in such a way as to allow modelers to continue to develop and share model features and components;
- have minimal dependence on any particular computer (Our commitment to Unix, C and open graphics standards has facilitated very broad-based use of the system);
- include a graphical interface that supported users with a range of computer expertise (thus the success of GENESIS is engaging real neurobiologists in modeling);
- for success, have to foster and support the educational use of the system to build modeling expertise within the neuroscience community (thus, GENESIS has been involved in many international courses in computational neuroscience, and the project has supported use of the system in university courses at both the graduate and undergraduate levels); and
- have to commit considerable time and resources to user support (accordingly, GENESIS was the first computational modeling effort to make extensive use of the World Wide Web).
GENESIS was originally developed in the laboratory of Dr. James M. Bower at Caltech. From the beginning, it was designed for large realistic network simulations, such as the Wilson and Bower (1992) piriform cortex model. The system was first released in June of 1988 in association with the first annual Methods in Computational Neuroscience Course at the Marine Biological Laboratory in Woods Hole, MA and then released to the public in July 1990. Since then, there have been many subsequent releases that reflect the continuing development of the simulator. The current release of GENESIS and PGENESIS (ver. 2.3, March 17, 2006) is available from the GENESIS web site: http://www.genesis-sim.org/GENESIS/.
GENESIS was designed so that it could be easily adapted for use on parallel computers. Parallel GENESIS (PGENESIS) is an extension to GENESIS that runs on almost any parallel cluster, SMP, supercomputer, or network of workstations where MPI and/or PVM is supported, and on which serial GENESIS itself is runnable. It is customarily used for large network simulations involving tens of thousands of realistic cell models, or for parameter searches in which many simulations are run simultaneously with different parameter values.
Overview of GENESIS
GENESIS is an object-orient simulation system in which simulations and their Graphical User Interfaces are based on a "building block" approach. Simulations are constructed from modules that receive inputs, perform calculations on them, and then generate outputs. Model neurons are constructed from these basic components, such as compartments. and variable conductance ion channels. Compartments are linked to their channels and are then linked together to form multi-compartmental neurons of any desired level of complexity. Neurons may be linked together to form neural circuits. This object-oriented approach is central to the generality and flexibility of the system, as it allows modelers to easily exchange and reuse models or model components. In addition, it makes it possible to extend the functionality of GENESIS by adding new commands or simulation components to the simulator, without having to modify the GENESIS base code.
GENESIS uses a high-level simulation language to construct neurons and their networks. Commands may be issued either interactively to a command prompt, by use of simulation scripts, or through the graphical interface. A particular simulation is set up by writing a sequence of commands in the scripting language that creates the network itself and the graphical interface for a particular simulation. The scripting language and the modules are powerful enough that only a few lines of script are needed to specify a sophisticated simulation. The principal components of the simulation system and the various modes of interacting with GENESIS are illustrated below.
The underlying level of the GENESIS user interface is the Script Language Interpreter (SLI). This is a command interpreter similar to a Unix system shell with an extensive set of commands related to building, monitoring and controlling simulations. GENESIS simulation objects and graphical objects are linked together using the scripting language. The interpreter can read SLI commands either interactively from the keyboard (allowing interactive debugging, inspection, and control of the simulation), or from files containing simulation scripts.
The GENESIS Simulation Engine consists of the simulator base code that provides the common control and support routines for the system, including those for input/output and for the numerical solution of the differential equations obeyed by the various neural simulation objects.
In addition to receiving commands from the SLI and the GUI, the simulation engine can construct simulations using information from data files and from the pre-compiled GENESIS object libraries. For example, the GENESIS cell reader allows one to build complex model neurons by reading their specifications from a data file, instead of from a lengthy series of GENESIS commands delivered to the SLI. Similarly, network connection specifications may be read from a data file with the fileconnect command.
The GENESIS object libraries contain the building blocks from which many different simulations can be constructed. These include the spherical and cylindrical compartments from which the physical structure of neurons are constructed, voltage and/or concentration activated channels, dendro-dendritic channels, and synaptically-activated channels with synapses of several types including Hebbian and facilitating synapses. In addition, there are objects for computing intracellular ionic concentrations from channel currents, for modeling the diffusion of ions within cells (e.g., concentration pools, ionic pumps, and buffers), modeling biochemical reactions, and for allowing ligand gating of ion channels (e.g., magnesium blocking for NMDA channels).
There are also a number of device objects that may be interfaced to the simulation to provide various types of input to the simulation (pulse and spike generators, voltage clamp circuitry, etc.) or measurements (peristimulus and interspike interval histograms, spike frequency measurements, auto- and cross-correlation histograms, etc.).
The GENESIS Graphical User Interface
The object-oriented design of GENESIS and its scripting language are among the greatest strengths of the simulator. The ease with which existing simulations can be modified for new purposes also extends to the graphical user interface (GUI) for a GENESIS simulation as well.
A GENESIS GUI is implemented with XODUS, the X-windows Output and Display Utility for Simulations. This provides a higher level and user-friendly means for developing simulations and monitoring their execution. XODUS consists of a set of graphical objects that are the same as the computational modules from the user's point of view, except that they perform graphical functions. As with the computational modules, XODUS modules can be set up in any manner that the user chooses to display or enter data. Furthermore, the graphical modules can call functions from the script language, so the full power of the SLI is available through the graphical interface. This makes it possible to interactively change simulation parameters in real time to directly observe the effects of parameter variations. The mouse may also be used to plant recording or injection electrodes into a graphical representation of the cell. In addition to provisions for plotting the usual quantities of interest (membrane potentials, channel conductances, etc.), XODUS has visualization features that permit such things as using color to display the propagation of action potentials or other variables throughout a multi-compartmental model, and to display connections and cell activity in a network model.
GENESIS also offers general purpose graphical environments for the construction, running, and visualization of single cell models (Neurokit) and biochemical reactions (Kinetikit) with little or no script programming. Nevertheless, most GENESIS modelers prefer the control and flexibility that the scripting language provides for constructing custom GUIs. These are typically based on simple modifications of the many examples provided with GENESIS, or with the GENESIS Modeling Tutorials package (Beeman, 2005).
The figure below shows a customizable GUI that was constructed for network simulations. This simulation is one of the examples provided in the GENESIS Modeling Tutorial, and consists of a grid of simplified neocortical regular spiking pyramidal cells, each one coupled with excitory synaptic connections to its four nearest neighbors. The example simulation script was designed to be easily modified to allow one to use other cell models, implement other patterns of connectivity, or to augment with a population of inhibitory interneurons and the several other types of connections found in a realistic cortical network.
This animated image of the network activity visualization display shows repeating sequences from the view widget that represents the membrane potentials for each of the cells in the network, using a cold to hot color scale. Here, one can see propagating waves of action potentials.
GENESIS as an Educational Tool
The GENESIS project has a particular commitment to the use of simulation technology in education. GENESIS tutorials have been used for education in neuroscience and computational neuroscience in more than 50 universities around the world. "The Book of GENESIS" (Bower and Beeman, 1998) provides an introduction both to GENESIS and to its use in education and modeling, and is now available for free from the GENESIS web site. Several GENESIS-based tutorials are available at the GENESIS website, and several others have recently been published in association with the new on-line journal, Brains, Minds, and Media (http://www.brains-minds-media.org).
Over the last 19 years, the GENESIS project has witnessed and contributed to a major growth in the use of realistic modeling in computational biology. During this time, GENESIS use has grown until it is now one of the two most widely used modeling systems for realistic models (NEURON being the other).
User Support and Documentation
Support for GENESIS is obtained through email to firstname.lastname@example.org, through the Sourceforge GENESIS development site, and the GENESIS Users Group, BABEL.
The Sourceforge GENESIS development site contains the CVS Repository for the latest GENESIS 2 versions, as well as public forums for reporting bugs or compiling problems, and for discussing issues related to GENESIS use.
Members of BABEL are entitled to access the BABEL directories and email newsgroup. These are used as a repository for the latest contributions by GENESIS users and developers. These include new simulations, libraries of cells and channels, additional simulator components, new documentation and tutorials, bug reports and fixes, and the posting of questions and hints for setting up GENESIS simulations. As the results of GENESIS research simulations are published, many of these simulations are being made available through BABEL.
The GENESIS user community comes together in an annual meeting in San Antonio specifically focused on realistic modeling and its application to biology (www.wam-bamm.org).
The GENESIS Neural Modeling Tutorials are an evolving package of HTML tutorials intended to teach the process of constructing biologically realistic neural models with the GENESIS simulator. The GENESIS Neural Modeling Tutorials, and others from WAM-BAMM*05, have been published in article form (both in browseable HTML and downloadable PDF format) in the November 2005 special issue on Realistic Neural Modeling in the electronic journal Brains, Minds, and Media (http://www.brains-minds-media.org/).
As the use of realistic modeling techniques continues to expand, the GENESIS project will continue to adapt and grow and serve the needs of the computational biology community. In this regard, plans are now underway for the design and development of GENESIS 3.0 which will be a major revision and update of the system. The core simulator functionality is being reimplemented in C++, with a more modern modular design. This will not only result in improved performance and portability to MS Windows and non-UNIX platforms, but will also allow the use of alternate script parsers and user interfaces, as well as the ability to communicate with other modeling programs and environments. The GENESIS development team is participating in the NeuroML project (http://www.neuroml.org/), along with the developers of NEURON. GENESIS 3 will export and import model descriptions in a common simulator-independent XML format. More about the plans for GENESIS 3 can be found on the GENESIS web page, with links to the development forums and repositories.
As evidenced by the growing use of realistic modeling techniques, and even their expansion into molecular and cellular biology, GENESIS will continue to play a role in the growth of computational biology as a whole. In a larger context, we believe that the growing use of realistic modeling techniques is essential to efforts to understand and organize the increasingly overwhelming amount of neurobiological data (Bower, 1996; 2005), Realistic models of the sort specifically supported by GENESIS are expected to increasingly provide a means to synthesize new information about the nervous system while also facilitating communication within the field.
Availability and System Requirements
GENESIS and its graphical front-end XODUS are written in C and run under most UNIX-based systems with the X Window System, including Linux, MacIntosh with OS/X, and Microsoft Windows with the Cygwin environment.
The current release of GENESIS and PGENESIS is available from the GENESIS web site: http://www.genesis-sim.org/GENESIS/. The GENESIS source distribution contains full source code and documentation, as well as a large number of tutorial and example simulations. Documentation for these tutorials is included along with online GENESIS help files and the hypertext GENESIS Reference Manual. In addition to the full GENESIS distribution with source code, precompiled binary versions are also available for Linux, Mac OS/X, and Windows with Cygwin. The GENESIS site also contains other information and tutorials on realistic neural modeling in general, and modeling with GENESIS in particular.
The GENESIS project is supported by a grant from the U.S. National Institutes of Health, the Vice Chancellor for Health Affairs of the University of Texas System, and the U.S. NCRR.
- Beeman, D. (2005) GENESIS Modeling Tutorial. Brains, Minds, and Media. 1: bmm220 (urn:nbn:de:0009-3-2206). (http://www.brains-minds-media.org)
- Bower, J. M. (1992). Modeling the nervous system, Trends in Neuroscience 15:411-412.
- Bower, J. M. (1995). Reverse engineering the nervous system: An in vivo, in vitro, and in computo approach to understanding the mammalian olfactory system, in An Introduction to Neural and Electronic Networks (S. F. Zornetzer, J. L. Davis and C. Lau eds.), second edn, New York: Academic Press, pp.~3-28.
- Bower, J.M. (1996) What will save neuroscience? Neuroimaging 4:S29-33.
- Bower, J.M., and Beeman, D. (1998). The Book of GENESIS: Exploring Realistic Neural Models with the GEneral NEural SImulation System} (2nd Ed.). New York: Springer-Verlag.
- Bower, J.M. (2005) Looking for Newton: Realistic Modeling in Modern Biology. Brains, Minds and Media, 1: bmm 217 (urn:nbn:de:0009-3-2375).
- Wilson, M. and Bower, J. M. (1992). Simulating cerebral corticalnetworks: oscillations and temporal interactions in a computer simulation of piriform (olfactory) cortex, J. Neurophysiol., 67:981-995.
Additional information on GENESIS and the overall project can be obtained from: http://www.genesis-sim.org/GENESIS/
- Valentino Braitenberg (2007) Brain. Scholarpedia, 2(11):2918.
- Olaf Sporns (2007) Complexity. Scholarpedia, 2(10):1623.
- Mark Aronoff (2007) Language. Scholarpedia, 2(5):3175.
- Marc-Oliver Gewaltig and Markus Diesmann (2007) NEST (NEural Simulation Tool). Scholarpedia, 2(4):1430.
- Ted Carnevale (2007) Neuron simulation environment. Scholarpedia, 2(6):1378.
- Bard Ermentrout (2007) XPPAUT. Scholarpedia, 2(1):1399.
NEURON Simulation Environment, NEST (Neural Simulation Tool), Neural Simulation Language, XPPAUT