[neurokernel-dev] support for loading/writing Neurokernel emulations in NeuroML2-like XML

Lev Givon lev at columbia.edu
Wed Jul 2 09:58:00 EDT 2014

Owing to the limitations of using GEXF for storing our LPU and connectivity
pattern models that we have discussed in the past, I've added initial support
for storing Neurokernel-based fly brain models in XML using a custom schema
inspired by NeuroML2 to the refactored branch of Neurokernel. The mechanism
employs a parser generated from the schema using a slightly modified version of
the approach used in libNeuroML [1]. The schema introduces components for
representing both the inter-LPU architecture (i.e., LPUs, inter-LPU connectivity
patterns, the ports exposed by both, and information as to how specific LPUs and
patterns are to be connected) and the internal design of LPUs. To expedite
conversion of our existing LPU models, the schema provides the neuron and
synapse models defined as we have used them to date; it also assumes that the
parameters for each model instance in an LPU model specification must be
explicitly defined (rather than defining a neuron/synapse type which is than
used to configure a population/projection as assumed by NeuroML2). The advantage
of the new parser mechanism, of course, is that we can add new components as we
see fit without trying to shoehorn them into some existing schema such as GEXF
or NeuroML2 (the new schema does actually include all of the components defined
in the latest NeuroML2 schema, but they are not currently used).

The parser generated from the new schema (./neurokernel/neuroml/nml.py) has been
checked into the repository so that folks don't need to generate it
themselves. There is a Makefile in ./neurokernel/neuroml to use in the event
that one wishes to tinker with the schema and regenerate the parser; if you wish
to check in changes to the schema, please make sure to validate it before doing

I've added a simple example of how to use the parser to construct and save LPUs,
patterns, and their interfaces (in ./examples/neuroml). I have also provided some
routines (./neurokernel/neuroml/utils.py) for converting LPUs and patterns
between the data structures created by the parser and NetworkX graphs (which can
already be used to populate the classes that Neurokernel uses to instantiate and
run an emulation).

Nikul/Chung-Heng, can you please try modifying your respective model demos to
use the new format? Let me know if you encounter any issues.

[1] https://github.com/NeuralEnsemble/libNeuroML
Lev Givon
Bionet Group | Neurokernel Project

More information about the neurokernel-dev mailing list