# NeuroML

NeuroML is an XML (Extensible Markup Language) based model description language that aims to provide a common data format for defining and exchanging models in computational neuroscience. The focus of NeuroML is on models which are based on the biophysical and anatomical properties of real neurons.

## History

The idea of creating NeuroML as a language for describing neuroscience models was first introduced by Goddard et al. (2001)
following meetings in Edinburgh where initial templates for the language structures were discussed. This initial proposal was based on general purpose structures proposed by Gardner et al. (2001).
At that time, the concept of NeuroML was closely linked with the idea of developing a software architecture in which a base application loads a range of plug-in components to handle different aspects of a simulation problem. Neosim (2003) was developed based on this goal, and early NeuroML development was closely aligned to this approach. Along with creating Neosim, Howell and Cannon developed a software library, the NeuroML Development Kit (NDK), to simplify the process of serializing models in XML. The NeuroML Development Kit implemented a particular dialect of XML, including the "listOfXXX" structure, which also found its way into SBML (Systems Biology Markup Language), but did not define any particular structures at the model description level. Instead, developers of plug-ins for Neosim were free to invent their own structures and serialize them via the NDK, in the hope that some consensus would emerge around the most useful ones. In practice, few developers beyond the Edinburgh group developed or used such structures and the resulting XML was too application specific to gain wider adoption. The Neosim project ended in 2005.
Based on the ideas in Goddard et al. (2001) and discussions with the Edinburgh group, Sharon Crook began a collaborative effort to develop a language for describing neuronal morphologies in XML called MorphML. From the beginning, the idea behind MorphML was to develop a format for describing morphological structures that would include all of the necessary components to serve as a common data format with the added advantages of XML. At the same time, Padraig Gleeson and Angus Silver were developing neuroConstruct for generating neuronal simulations for the NEURON and GENESIS simulators. At that time, neuroConstruct utilized an internal simulator-independent representation for morphologies, channel and networks. It was agreed that these efforts should be merged under the banner of NeuroML, and the current structure of NeuroML was created. The schema was divided into levels (e.g. MorphML, ChannelML, and NetworkML) to allow different applications to support different part of the language.
Since 2006 the XML Schema files for this version of the standard have been available from the NeuroML development site.

## The language
### Aims

The main aims of the NeuroML initiative are to:
* To create specifications for a language (in XML) to describe the biophysics, anatomy and network architecture of neuronal systems at multiple scales
* To facilitate the exchange of complex neuronal network models between researchers, allowing for greater transparency and accessibility of models
* To promote software tools supporting NeuroML and to support the development of new software and databases
* To encourage researchers who create models within the scope of NeuroML to exchange and publish their models in this format.

### Structure

NeuroML is focused on biophysical and anatomical detailed models, i.e. incorporating real neuronal morphologies and membrane conductances (conductance based models), and network models based on known anatomical connectivity. The NeuroML structure is composed of Levels, where each Level deals with a particular biophysical scale. The modular nature of the specifications makes them easier to develop, understand, and use since one can focus on one module at a time; however, the modules are designed to fit together seamlessly. There are currently three Levels of NeuroML defined:
* Level 1 focuses on the anatomical aspects of cells and consists of a schema for Metadata and the main MorphML schema. Tools which model the detailed neuronal morphologies (such as NeuronLand) can use the informations contained in this Level.
* Level 2 describes the biophysical properties of cells and also the properties of channel and synaptic mechanisms using ChannelML. Software which simulate neuronal spiking behaviour (such as NEURON and MOOSE) can use this Level of model description.
* Level 3 describes the positions of cell in space and the network connectivity. This kind of information in NetworkML can be used by software (such as CX3D and PCSIM) to exchange details on network architecture. Level 3 files containing cell morphology and connectivity can also be used by applications such as neuroConstruct for reproducing and analysing networks of conductance based cell models.
Current schemas in readable form are available on the NeuroML specifications page.

### Application support for NeuroML

A list of software packages which support all or part of NeuroML is available on the NeuroML website.

## Community

NeuroML is an international, free and open community effort.
The NeuroML Team implements the NeuroML specifications, maintains the website and the validator, organizes annual workshops and other events, and manages specific funding for coordinating the further development of NeuroML. Version 2.0 of the NeuroML language is being developed by the Specification Committees. NeuroML also participates in the International Neuroinformatics Coordinating Facility Program on Multiscale Modeling.