Related Documentation:

The NDF File Format and Procedural Model Descriptions

The Model Container is used as an abstraction layer on top of a simulator and deals with biological entities and end-user concepts instead of mathematical equations. It provides a solver independent internal storage format for models that allows user independent optimizations of the numerical core. By ‘containing’ the biological model, the Model Container makes the implementation of the numerical core independent of software implementation.

The Model Container API abstracts away all the mathematical and computational details of the simulator. Optimized to store large models in little memory–it stores neuronal models in a fraction of the memory that would be used by conventional simulators–and provides automatic partitioning of the model such that simulations can be run in parallel. From the modeler’s perspective, the Model Container will be able to import and export NeuroML files to facilitate model exchange and ideas.

- Covers models from the network level down to the level of mechanism. A Perl interface converts and imports GENESIS .p and SWC morphology files. These conversions are done on an “as needed just in time” basis. (For example, it can reproduce an exact match with the Purkinje Cell Model).
- Defines models in a purely declarative, extensible language.
- Keeps and maintains a conceptual ‘algorithmic’ representation of a model, as well as an expanded representation of the model.
- Knows about biological entities like cells, populations and projections (note that for some simulators such entities can be commands instead of biological entities).
- Annotates the structures and concepts of the model with biological, physical, and mathematical quantities.
- Supports setup of the most complicated mathematical solvers. In principle, it is capable of supporting the transparent setup of multiscale models and simulations.
- Gives different views of the same network model. These views are visualized in the GUI.
- Knows about specific parameters vs. actual parameters, e.g. specific membrane capacitance vs. scaled membrane capacitance. The biological objects in the model container generally rely on the parent, children, and siblings of the model hierarchy to infer a number of their own properties.
- Provides for arbitrary nesting of network models, including nesting of projections and populations.
- Allows inspection of the connectivity of a network model in an intuitive way.
- Stores very large models in little memory, needed for full model inspection and automated validation (the more complicated the model the more efficient the compression scheme–from the theoretical perspective the compressed image scales logarithmically with the original).
- Can save and reload connections between components. Costly computation of connections required to be done only once.

- Extend the Model Container: Details the steps a developer must go through to extend the Model Container by adding a PulseGen() object.