The NDF File Format
Physical Processes and Model Variables
The NDF File Format and Procedural Model Descriptions
In scientific papers researchers often present a hierarchical top-down description of their models. The NDF File Format supports the integration of model libraries of prototype models and the hierarchical description of models through its namespaces. A namespace is a labeled container of named model components and disambiguates them from model components with the same name contained in a different namespace. Namespaces are indicated with the :: two character sequence.
The :: notation is defined by the model component space of the model-container (note: this notation is neither python nor perl specific). The Gshell, SSP and SSPy transparantly support this notation.
Two examples of a hierarchical model description:
The :: supports the concept of referencing prototypes independent of the level of the model, to facilitate the hierarchical construction of models.
From the syntactical viewpoint the NDF File Format supports hierarchical model construction using file references with the IMPORT command. The IMPORT command references a file and associates a name with it, called the namespace. When used in model component references the name occuring after the :: refers to a namespace that is associated with a file in the IMPORTs section of an NDF file. For instance the snippet:
FILE Purk_spine "segments/spines/purkinje.ndf"
defines ::Purk_spine:: as a namespace. After parsing every model defined as a public model in the file segments/spines/purkinje.ndf can be accessed as ::Purk_spine::<model-name>. The NDF file segments/spines/purkinje.ndf defines the models Purk_spine and Purk_spine2 (both are groups of segments defining two different variants of Purkinje cell spines), thus after parsing these two models become accessible as ::Purk_spine::/Purk_spine and ::Purk_spine::/Purk_spine2
When referencing a model component in the model component space the notation can be understood as follows:
In the gshell, the command
ndf_load_library rscell cells/RScell-nolib2.ndf
defines the namespace ::rscell:: and associates it with the file cells/RScell-nolib2.ndf. All the (public) models in this file are now accessible from this namespace. The statement
insert_alias ::rscell::/cell /two_cells/1
creates the model component /two_cells/1 as a reference to /cell underneath the namespace ::rscell::.