GENESIS: Introduction

Related Documentation:

Developing Sources of Software Components

GENESIS contains several software Components useful for neural simulations using models based on experimental data:

Each software component can have implementations in several programming languages: For example, there are Java and C based implementations of the Model Container.

Each software component has several resources: For example, source code, documentation, additional tools, etc. The script neurospaces_tools_propagate is used to propagate updates to source code of shared tools from source to target packages.

Each software component can have experimental features that are not part of an official distribution: We call this a branch of the source code (it is irrelevant if such a branch is present in a version control system or not).

Source Locations

The source code of a software component is normally put in the directory:

   $HOME/neurospaces_project/<package-name>/source/ <programming language>/snapshots/<branch name>/

Each branch of development can have its own TODO.txt in the Emacs major mode to keep track of items that wait implementation and are directly related to the functionality offered by that software component.

   $HOME/neurospaces_project/<package-name>/source/ <programming language>/snapshots/<branch name>/TODO.txt

Other resources are put in other directories: For example, documents that are not part of the distribution can be put under:


Archived patches are located in:

   $HOME/neurospaces_project/<package-name>/source/ <programming language>/patches/

Basic Directory Layout

Create a directory ~/neurospaces_project in your home directory.
Create the directory ~/neurospaces_project/MTN to contain all monotone repositories accessible to the DeveloperPackage.
Every software component has its own subdirectory: For example, the Model Container directory (~/neurospaces_project/model-container):

The DeveloperPackage has built in support to automate the actions required for a developer installation. It also has many more tools for GENESIS software development. For more information, see the DeveloperPackage.


Configuration is located in the /etc/neurospaces/ directory.

Every software component or tool has its own subdirectory. For example, the morphology2ndf convertor, part of the Model Container, has its default configuration in /etc/neurospaces/morphology2ndf. Configuration files are specified in the YAML format, because scripting languages like Perl and Python have built in support to process YAML, and because YAML is more readable than XML.

Configuration is normally processed as follows:

  1. Every tool has built in default configuration: Every tool must be able to work in an intuitive way when no other configuration is found except the default built-in configuration.
  2. Every tool reads its configuration from /etc/neurospaces/<tool-name>/: This is merged with default configuration, possibly overriding default configuration.
  3. Every tool accepts additional configuration from the user: This is via command line options or otherwise, again possibly overwriting configuration settings generated in the previous step.

The merging algorithm is defined in the Data-Utilities package, available from CPAN.

Configuration Profiles

The goal of the configuration files in /etc/neurospaces/ is to provide G-3 with different interface profiles. Examples of such interface profiles are, in increasing order of complexity:

  1. A neural simulation system.
  2. An interface to a model database via the model-container and the tools that connect to it. The neurospaces studio is an proof-of-concept example of this capability.
  3. An interface to a model publication database via the model-container and the documentation system.