Related Documentation:

GENESIS: Documentation

1 The TODO and the DONE List

This document contains a list of functions and descriptions that need to be implemented or incorporated in the software or software infrastructure. The level of detail of the descriptions can vary between items. After an item is described, it can be followed by a checklist with information of the level of implementation. For example, subitems in the checklist can be marked with the word ‘DONE’.

This document can grow when people add new functions that await implementation, and it can be consolidated by moving items that have been completed from the TODO list to the top of the DONE list. Items are never removed from the DONE list.

This TODO list was built on December 28, 2015, 8:28.

2 TODO List

2.1 heccer compile

Looks like ’neurospaces_install heccer’ currently fails because the python code tries to link with the model-container archives in the source directories instead of the ones that have been installed.

2.2 replace jodconverter with unoconv

Seems more flexible, regular command line utility, see also and follow.

Needs package unoconv on ubuntu 12.04.

2.3 remove the application_classes entry from SSP configuration files

The entry has always the default value.

2.4 Convert the heccer configuration in an SSP file to a readable format

For use in SSP configuration files and in the gshell.

2.5 testing reconfiguration

Mando, I have no idea what is going on, but it seems autoconf related and related to uninstallation of STARTUP_FILES. You?

I don’t know how this would influence the consistency of the tester output, for instance if it leaves foreign files that contaminate the filesystem. I also don’t know how long this has been happening on my machine because this type of error is not reported by neurospaces_cron when not run from a crontab.

\$ grep -v ’t/died’ /tmp/neurospaces_cron.stdout | grep -v ’t/dont_overwrite_die_handler’ | grep -v ’t/subtest/die’ | grep -v ’t/Tester/tbt_03die’ | grep -B 15 die  
make[2]: Entering directory  
 ( cd ’/usr/local/bin’ && rm -f ns-sli )  
rm -rf /usr/local/ns-sli/  
 ( cd ’/usr/local/ns-sli/’ && rm -f startup/grey startup/xmacros.g startup/xtools.g startup/vclamp.g startup/redhot startup/rainbow2 startup/escapelist.g startup/schedule.g startup/rainbow startup/defaults.g~ startup/nxsimrc-ns-sli startup/minsimrc-ns-sli~ startup/Xdefaults.example startup/simrc-ns-sli.example startup/hot startup/defaults.g startup/Usermake startup/minsimrc-ns-sli startup/schedule.g~ startup/simrc~ startup/simrc-ns-sli~ startup/xstartup.g startup/simrc-ns-sli startup/nxsimrc~ startup/configrc startup/Libmake startup/Makefile startup/minschedule.g startup/minsimrc~ )  
/bin/bash: line 4: cd: /usr/local/ns-sli/: No such file or directory  
make[2]: *** [uninstall-nobase_dist_ns_slistartupDATA] Error 1  
make[2]: Leaving directory  
make[1]: *** [uninstall-recursive] Error 1  
make[1]: Leaving directory  
make: *** [uninstall-recursive] Error 1  
/usr/local/bin/neurospaces_build: *** Error: package ns-sli: 512 at  
/usr/local/bin/neurospaces_build line 4269.  
 at /usr/local/bin/neurospaces_build line 4269  
       main::operation_execute(’ARRAY(0x99b9668)’, ’HASH(0x9a3f360)’,  
’ARRAY(0x9a94e90)’) called at /usr/local/bin/neurospaces_build line  
       main::all_operations_execute() called at  
/usr/local/bin/neurospaces_build line 546  
       main::main() called at /usr/local/bin/neurospaces_build line 4344  
*** die: /usr/local/bin/neurospaces_build: *** Error: package ns-sli:  
512 at /usr/local/bin/neurospaces_build line 4269.  

2.6 testing reconfiguration

neurospaces_clean has a –distclean option, but I don’t think it has ever been tested. We should incorporate it into neurospaces_cron and neurospaces_upgrade.

2.7 ns-sli warning registry

The ns-sli does more soundness checks on a model and the simulation run-time and gives many more warnings than G-2. Typical examples include:

The implementation of a warning registry that registers warnings without displaying them avoids annoying a user. A new SLI command ’show_warnings’ shows all the registered warnings.

2.8 website images

The documentation system uses ht4tex which is the successor of latex2html.

It looks like a set of configuration files of dvipng determine the quality of the generated images. Each linux distro puts these files in different locations.

So far it is not clear how exactly to modifiy the configuration to improve the quality of the images, neither to the choice of distribution we would like to support.

Proposal to support at least one user-oriented operating system for generating higher quality images, and I still think we should do this. Then we can understand how well this works.

The genesis website runs on CentOS, not user-oriented. The best candidate is maybe ubuntu.

2.9 gshell output_resolution and output_interval

The problem comes when I want to set an output interval (i.e. a time step for a G2 clock) that is not related to the integration time step. Presently one can give a gshell command, such as:

genesis > output\_resolution 5

to output every fifth integration step, but the resolution has to be an integer multiplier of simulation time step. I had a case where I wanted to compare to a G2 result where the simulation clock was 20 microsec and the output clock was 50 microsec, and it was not posssible. Furthermore, it is only possible to set the output resolution if the output generator is running in ’steps’ output_mode, which means that the file output will list step number instead of simulation time. Perhaps that should be an option, but one usually cares about the simulation time, not the step number, nor the relation between the output interval and the simulation time step. In fact, if we at some point incorporate variable time step solver methods, it wouldn’t be possible to relate the ”output resolution” to the time step.

So, my suggestion is to replace ’output_resolution’ with ’output_interval’, and that this should be an option within g-tube also.

Another slightly related issue that came up in the benchmarking is that the rallpack axon model produces two output files, one for each end of the axon. Alternatively, it could have used asc_file to produce a single file with three columns for time, axon0, axonx values. But neither option is presently possible with G3. (I have not yet implemented the G3plot capability to plot multiple columns yet, but it is on the list.) These options should be part of the gshell/g-tube output model.

2.10 tester cron job mail reporting

The email reporting facility of the tester needs to be refactored and cleaned up. It currently is highly sensitive to small misconfiguration errors, see also the entry of 29th of August in system-administration-log.

It is likely that the best way forward is to refactor things across the different scripts by creating a couple of perl packages.

2.11 tester framework and compilation errors

The script neurospaces_build does not detect compilation errors. Maybe because the option keep-going is set, needs further investigation. The priority of this problem is very low. Compilation errors are assumed to be detected on the machine of checkin rather than the automated tester.

2.12 when adding a new software component

See also the document that describes how to add a new software component.

2.13 ns-sli installation

The ns-sli module install files under /usr/local/ns-sli rather than /usr/local/neurospaces/ns-sli. This installation needs to be ligned up with the installation of other modules such as gshell.

2.14 morphology_summarize

To characterize a cell morphology it would be good to extend the morphology_summarize command to include the average (+/- SD, SE ?) number of branch point from the soma to each tip and the number of primary, secondary, tertiary . . . etc, branch points.

2.15 GShell – Endogeneous Activation

Define GShell tests for endogeneous activation.

2.16 building documentation

Correct build of the documentation depends on a working G-3 installation. It looks as if userdocs_cron should be integrated into neurospaces_cron. Both the build of the documenation and the execution of the tests should be configurable from the neurospaces_cron options. The userdocs_cron script should call the neurospaces_docs script.

See also chat between Mando and me date 23th of August 2010.

2.17 ns-sli: follow-up after the October developers meeting 1

Add monotone version information identifiers to the gshell command ’list components’.

2.18 ns-sli: follow-up after the October developers meeting 1

Implement the following SLI commands and objects:

2.19 ns-sli: follow-up after the October developers meeting 2

Others that need implementation:

2.20 Model container and readline library

The model-container does not use the readline library for its querymachine. This function was present in the past and should be restored because it helps in querying models via the querymachine interface.

There is logic to detect readline in the filesystem present in the configure script, but somehow this part of the configuration does not propagate through to the compilation phase of the model-container.


Time Estimate1 days

Assigned to Mando

2.21 File permission errors

Certain tests output to a hardcoded filename, such as /tmp/output. When one user runs the tests this file is given permissions for their user id. If a second user tries to run the same test, it writes to the same filename, the test will fail and the test will bail out with an error (as was displayed by the regression tester machine). This bottlenecks the number of users that can reliably install a developer installation on the same machine.


Time Estimate???

Assigned to ???

2.22 Mercurial

The source code of most GENESIS 3 software components are maintained using the Monotone version control system. The installer scripts integrate with Monotone to provide for automated building and testing.

The G-Tube is maintained using the Mercurial version control system. We must continue and finish the integration of the Mercurial version control system and the DeveloperScript neurospaces_build.

2.23 Gating Variables with Coupled Equations

There is currently no way to solve coupled equations of gating variables.

dm/dt = A * m + B * n dn/dt = C * m + D * n

In GENESIS 2, this is possible using forward integration methods only.

2.24 Level 4 Documentation: Technical Specifications

For each software component a set of (html) documents must be generated that specify the capabilities of the component. For Unix shell scripts, technical specifications can be generated from the usage messages generated by a “--help” argument.

2.25 Level 3-7 Documentation: Creation Guide

Documentation from Levels 3–7 are ”automatically” generated. What is required is a description for developers of how to create these levels of documentation and how to add them to the appropriate places where they can be accessed by the GENESIS Documentation System. These are level 2 documents.

2.26 Documentation Browsing

Tag all the documentation with keywords to define flows through the documentation and ease browsing and reading of related documents.

Should be provided via a browser-based framework to give ‘professional’ look to documentation. See Documentation Framing (following).

3 DONE List

3.1 userdocs-sync error messages

Does not happen anymore, likely due to the recent rewrites of some of the userdocs scripts.

The userdocs-sync command in the g-tube source directory gives error messages about the descriptor.yml files part of the g-tube source code. This is a bug because userdocs-sync is supposed to only run in the userdocs source directory.

3.2 Populate the Model Library

Dave has been working on this, and populated the library with useful models. See the CNS 2011 report

Build up a library of cells that can be used with G2 or G3.

3.3 Progress Reports to the Supplement

The supplement funding period has past

Every three months a report about progress on the work of the administrative supplement must be submitted to NIH.

This can be done by picking items from the DONE list related to the work proposed in the administrative supplement.

First move conceptualized items from the supplement to this TODO list.

3.4 gshell help components

Diagnosis of problem and documented procedure for troubleshooting the Inline::Python module is found in GENESIS dependencies document, in the Note about Inline::Python section. (Working)

Fails on Mac OSX after reinstallation of GENESIS developer package for Python module:

Other components:  
    description: interface to python scripting  
    module: GENESIS3::Python  
    status: |  
      Error. You have specified ’Python’ as an Inline programming language.  
      I currently only know about the following languages:  
          C, Foo, foo  
      If you have installed a support module for this language, try deleting the  
      config file from the following Inline DIRECTORY, and run again:  
       at /usr/local/glue/swig/perl/GENESIS3/ line 25  
       at /usr/local/bin/genesis-g3 line 52  
       main::__ANON__(’Error. You have specified \’Python\’ as an Inline programming...’) called at /System/Library/Perl/5.8.8/ line 269  
       Carp::croak(’Error. You have specified \’Python\’ as an Inline programming...’) called at blib/lib/ (autosplit into blib/lib/auto/Inline/ line 711  
       Inline::check_config_file(’Inline=HASH(0xa3043c)’) called at /Library/Perl/5.8.8/ line 244  
       Inline::glue(’Inline=HASH(0xa3043c)’) called at /Library/Perl/5.8.8/ line 146  
       Inline::import(’Inline’, ’Python’, ’import sys\x{a}sys.path.append(\’/usr/local/glue/swig/python\’)\x{a}i...’) called at /usr/local/glue/swig/perl/GENESIS3/ line 25  
       GENESIS3::Python::BEGIN() called at /usr/local/glue/swig/perl/GENESIS3/ line 52  
       eval {...} called at /usr/local/glue/swig/perl/GENESIS3/ line 52  
       require GENESIS3/ called at (eval 41) line 3  
       eval ’require GENESIS3::Python  
      ;’ called at /usr/local/glue/swig/perl/ line 3611  
       GENESIS3::profile_environment() called at /usr/local/glue/swig/perl/ line 3635  
       require called at /usr/local/bin/genesis-g3 line 256  
       main::main() called at /usr/local/bin/genesis-g3 line 354  
      BEGIN failed--compilation aborted at /usr/local/glue/swig/perl/GENESIS3/ line 52.  
       at /usr/local/bin/genesis-g3 line 52  
       main::__ANON__(’Error. You have specified \’Python\’ as an Inline programming...’) called at /usr/local/glue/swig/perl/GENESIS3/ line 52  
       require GENESIS3/ called at (eval 41) line 3  
       eval ’require GENESIS3::Python  
      ;’ called at /usr/local/glue/swig/perl/ line 3611  
       GENESIS3::profile_environment() called at /usr/local/glue/swig/perl/ line 3635  
       require called at /usr/local/bin/genesis-g3 line 256  
       main::main() called at /usr/local/bin/genesis-g3 line 354  
      Compilation failed in require at (eval 41) line 3.  
       at /usr/local/bin/genesis-g3 line 52  
       main::__ANON__(’Error. You have specified \’Python\’ as an Inline programming...’) called at (eval 41) line 3  
       eval ’require GENESIS3::Python  
      ;’ called at /usr/local/glue/swig/perl/ line 3611  
       GENESIS3::profile_environment() called at /usr/local/glue/swig/perl/ line 3635  
       require called at /usr/local/bin/genesis-g3 line 256  
       main::main() called at /usr/local/bin/genesis-g3 line 354  
      description: scriptable user interface  
      layer: 2

3.5 Incorrect path to NDF model file corrupts G-Shell

dhcp-129-111-247-96:0 adcmobile$ genesis-g3  
Welcome to the GENESIS 3 shell  
genesis > ndf_load cells/edsjb1994_partitioned.ndf  
Could not find file (number 1, 1), path name (cells/edsjb1994_partitioned.ndf)  
Set one of the environment variables NEUROSPACES_NMC_USER_MODELS,  
to point to a library where the required model is located,  
or use the -m switch to configure where neurospaces looks for models.  
genesis > ndf_load cells/purkinje/edsjb1994_partitioned.ndf  
genesis-g3: Parse of cells/purkinje/edsjb1994_partitioned.ndf failed with 1 (cumulative) error.  
genesis > list_elements  
- /Purkinje  
genesis > delete /Purkinje  
genesis > list_elements  
genesis > ndf_load cells/purkinje/edsjb1994_partitioned.ndf  
genesis-g3: Parse of cells/purkinje/edsjb1994_partitioned.ndf failed with 1 (cumulative) error.  
genesis > exit  
dhcp-129-111-247-96:0 adcmobile$ genesis-g3  
Welcome to the GENESIS 3 shell  
genesis > ndf_load cells/purkinje/edsjb1994_partitioned.ndf  
genesis >

3.6 gshell list_elements

The gshell command ’list_elements’ sometimes loses part of the output. In the following snippet parts of the ’km’ and ’kh’ channels have disappeared:

> genesis-g3 --execute "ndf_load cells/purkinje/edsjb1994.ndf"  
Welcome to the GENESIS 3 shell  
genesis > list_elements /Purkinje/segments/soma/**  
- /Purkinje/segments/soma/km/km  
- /Purkinje/segments/soma/kdr/kdr_steadystate  
- /Purkinje/segments/soma/kdr/kdr_tau  
- /Purkinje/segments/soma/ka/ka_gate_activation  
- /Purkinje/segments/soma/ka/ka_gate_inactivation  
- /Purkinje/segments/soma/kh/kh  
- /Purkinje/segments/soma/nap/nap  
- /Purkinje/segments/soma/naf/naf_gate_activation  
- /Purkinje/segments/soma/naf/naf_gate_inactivation  
- /Purkinje/segments/soma/cat/cat_gate_activation  
- /Purkinje/segments/soma/cat/cat_gate_inactivation

This is obviously wrong behavior. The querymachine command ’expand’ can be used to compare with the correct output.

genesis > querymachine expand /Purkinje/segments/soma/**

3.7 documentation synchronization

When the internet is down, the userdocs-sync script continues its execution after a synchronization failure.

3.8 userdocs-check

Integrate userdocs-check with userdocs-sync.

3.9 Split I/O Objects from the Heccer package

The Heccer package currently contains the Heccer software component and various Input and Output Simulation objects. It is better to have an I/O package separate from the Heccer package.

3.10 Perl Inline code directory

Create a consolidated directory for inline perl code so that Perl does not constantly create ”_Inline” directories in every working directory that ssp and the gshell are called in.

3.11 Descriptor file tags recognized by neurospaces_cron (2)

The following tag should be recognized by the documentation build system (cf. draft, published):

The local tag is currently implemented by invoking the following command from a UNIX shell:

  $ userdocs-build --tags local

This command builds a local website of all the documents that have the tag ’local’.

  $ userdocs-build --tags local --tags published

This command builds a local website with all the published and the local documents.

3.12 Implement more consistent G-Shell command names

Assigned to Hugo (G-Shell) and Mando (G-Tube).

   runtime_parameter_add <name>  
   runtime_parameter_show <name>  
   runtime_parameter_delete <name>  
   input_add <name>  
   input_show <name>  
   input_delete <name>  
   inputclass_add <name>  
   inputclass_show <name>  
   inputclass_delete <name>

Also doing similar commands for inputclass_templates.

3.13 Bibliographies

Publication documentation does not currently support bibtex references. e.g.

Ka channel.

References appear as [?] in text and the References section is missing.

This probably requires the following sequence to be implemented in userdocs-build:

   latex bibtex latex latex

3.14 bibliographies

Documentation that use citations are currently not supported by the documentation system. Such documents are built differently on different machines.

Seems at present nobody knows what the original problem was, but this description being in the done list means that the problem has been solved.

3.15 Fix trash cleanup in automated tester.


The automated tester (neurospaces_cron) currently has a problem with not deleting all of the files it generates in /tmp. Over time the “files” grow and consume large amounts of disk space. The trash file removal must be fixed so that it keeps from contaminating the file system further. It must also be improved by making the trash list an configurable input file that can be passed as an argument to the neurospaces_cron script.

Notes Won’t take wildcards for file deleting.

Time Estimate 1 day

Assigned to Mando

3.16 ns-sli .simrc

The backward-compatibility module expects the .simrc file in the users home directory. The default place of this file should be a place in /usr/local. (DONE)

This file may also be renamed to .ns-sli.

Notes Required for alpha1 Release 3.0

Time Estimate 1 day

Assigned to Hugo

3.17 Descriptor file tags recognized by neurospaces_cron (1)

Extend the number of file formats for documentation that are recognized by the documentation build system when a document is placed in a document folder, as for example, currently happens for PDF formated documents. The following tags should be recognized for the alpha release.

This means that tags given above, should also be placed in the descriptor.yml file and recognized.

3.18 Unify the Methods of Handling of Inputs to a Model

There are several fundamentally different ways to specify inputs to a simulated model from the G-Shell. For example, a voltage clamp protocol is specified by creating input objects (pclamp object). A current injection and endogeneous stimulation is specified by setting parameters.

3.19 GUI: Other

Notes Required for alpha1 Release 3.0

Time Estimate 1 week

Assigned to Mando

3.20 GUI: Output

Notes Required for alpha1 Release 3.0

Time Estimate 1 - 2 weeks

Assigned to Mando

3.21 GUI: Run Simulation (1)

3.22 GUI: Design Experiment

Notes Required for alpha1 Release 3.0

Time Estimate 1 - 2 days for integration

Assigned to Mando

3.23 Find out about Dependencies

Write a document that briefly describes the dependencies. These dependencies are known:

Compile other dependencies from the NS wiki.

Notes Required for alpha1 Release 3.0

Time Estimate 1 day

Assigned to Mando and Hugo

3.24 G-Shell enhancements/bugs on Mac

  1.       genesis > help ndf_save  
          *** Error: no help for topic ndf_save yet  
          genesis > ndf_save mypc.ndf  
          Bus error  
          dhcp-129-111-247-96:0 adcmobile$ genesis-g3  
          cat: neurospaces/config.h: No such file or directory  
          Welcome to the GENESIS 3 shell  
          genesis > ndf_load cells/purkinje/edsjb1994.ndf  
          genesis > ndf_save  
          Bus error  
          dhcp-129-111-247-96:0 adcmobile$  

  2. After a ce command there should be no requirement for the absolute path argument for commands such as set_model_parameter and show_parameter, etc.
    genesis > ndf_load cells/purkinje/edsjb1994.ndf  
    genesis > pwe  
    genesis > show_parameter /Purkinje/segments/b3s45[10] RM  
    value = 3  
    genesis > ce /Purkinje/segments/b3s45[10]  
    genesis > show_parameter RM  
    symbol not found  
    genesis > show_parameter /Purkinje/segments/b3s45[10] RM  
    value = 3

    The use of the command show_parameter above is invalid. Use of the current element as the default element for the GENESIS 2 setfield command interferes with future extensibility of this command and will not be implemented.

    This can be easily worked around using the ’.’ to refer to the current working element. The following snippet illustrates this use:

    genesis > ndf_load cells/purkinje/edsjb1994.ndf  
    genesis > ce /Purkinje/segments/  
    genesis > pwe  
    genesis > ce b3s45[10]  
    genesis > pwe  
    genesis > show_parameter . RM  
    value = 3  
    genesis > ce ../  
    genesis > pwe  
    genesis > show_parameter b3s45[10] RM  
    value = 3

3.25 Allow use of token names for model components

This requires component names to be stringified in the NDF file format. E.g. cell, neuron, channel, etc.


Time Estimate2 days

Assigned to Hugo

3.26 Current Clamp Protocol

Make a current clamp protocol available to the gshell. Based on the voltage clamp protocol, add an inputclass, set the clamp value and connect it to a variable.

3.27 Documentation Summary Tag

Add support for a summary descriptor attribute that will append some text to end of a link in the documentation conents page. (DONE)

3.28 Use neurospaces_build to serve the source code

Right now custom scripts are used to serve the GENESIS 3 source code to the internet. This leads to duplication of configuration data such as filenames. The installer script neurospaces_build has dedicated function to serve the source code without configuration data duplication. Rather than using custom scripts, the neurospaces_build script should be used to serve the source code to the outside world. (DONE)

Notes Required for alpha1 Release 3.0

Time Estimate 1 day

Assigned to Mando

3.29 gshell studio

Disable the studio in the gshell, it should only be loaded on explicit request (DONE).

Notes Required for alpha1 Release 3.0

Time Estimate 4 hours

Assigned to Hugo

3.30 make dist for ns-sli

Building a tarball of the backward compatibility modules is broken. This needs to be fixed before a debian package can be built. (DONE)

Notes Required for alpha1 Release 3.0

Time Estimate 1 day

Assigned to Mando

3.31 Repository Server

Monotone sometimes hangs on the repository server. Upgrade the repository server (DONE).

Time Estimate 1 day

Assigned to Mando

3.32 Automated Regression Tester

After an update of the model-container, monotone reports that there are files missing from the local model-container workspace. This inhibits further updates such that the tester starts testing old software. An example monotone checkin that produces this problem is the model-container checkin of version d4cbeb603334d009ba2797976db15f53db5046fe. This version contains a white-space only change but corrupts the model-container workspace on the tester machine.


Time Estimate2 days

Assigned to Mando

3.33 ns-sli showfield

Implement ns-sli showfield. (DONE)

Notes Required for alpha1 Release 3.0

Time Estimate 1 days

Assigned to Mando

3.34 G-Shell

Notes Required for alpha1 Release 3.0

Time Estimate 2 days

Assigned to Hugo

3.35 and neurospaces.h

The configure script of Heccer and NS-SLI does not find a valid neurospaces.h header even when one is installed in a standard location.


Time Estimate0.5 days

Assigned to Hugo

3.36 asc_file object

The asc_file object test in ns-sli needs to be completed.


Time Estimate1 day

Assigned to Hugo

3.37 Installation documentation

Consolidate and correct the installation documentation for software developers.

Notes Required for alpha1 Release 3.0

Time Estimate3 days, includes installation and uninstall of the software on a laptop

Assigned to Allan

3.38 Repository Upgrade

Upgrade the source code repository (also test machine) to the latest stable Debian version. This was a duplicate of 3.31.

3.39 Monotone Clone Operation Integration with the Installer Scripts

Integrate ‘mtn clone’ into the installer scripts (DONE).

3.40 Convert Developer Documentation to Doxygen

3.41 Backwards Compatibility for Single Neurons

3.42 Webcheck Output

Correct the errors reported by webcheck. (DONE)

Notes Required for alpha1 Release 3.0

Time Estimate

Assigned to Allan

3.43 Webcheck

Go through the Webcheck output and identify critical and easy to fix problems. (DONE)

Notes Required for alpha1 Release 3.0

Time Estimate 1 day

Assigned to Allan