## NeuroMLlite: a common framework for reading/writing/generating network specifications based on NeuroML
[![Continuous builds](https://github.com/NeuroML/NeuroMLlite/actions/workflows/ci.yml/badge.svg)](https://github.com/NeuroML/NeuroMLlite/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/NeuroMLlite)](https://pypi.org/project/NeuroMLlite/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/NeuroMLlite)](https://pypi.org/project/NeuroMLlite/)
[![GitHub](https://img.shields.io/github/license/NeuroML/NeuroMLlite)](https://github.com/NeuroML/NeuroMLlite/blob/master/LICENSE.lesser)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/NeuroML/NeuroMLlite)](https://github.com/NeuroML/NeuroMLlite/pulls)
[![GitHub issues](https://img.shields.io/github/issues/NeuroML/NeuroMLlite)](https://github.com/NeuroML/NeuroMLlite/issues)
[![GitHub Org's stars](https://img.shields.io/github/stars/NeuroML?style=social)](https://github.com/NeuroML)
[![Twitter Follow](https://img.shields.io/twitter/follow/NeuroML?style=social)](https://twitter.com/NeuroML)
NeuroMLlite is in active development. This will evolve into a framework for more portable, concise network specifications which will form an important part of [NeuroML v3](https://docs.neuroml.org/NeuroMLOrg/History.html#the-future).
For some more background to this package see here: https://github.com/NeuroML/NetworkShorthand.
![Architecture](images/NetworkShorthand.png)
## Examples
The best way to see the currently proposed structure is to look at the examples
### Ex. 1: Simple network, 2 populations & projection
![Ex1](examples/images/Ex1.png)
[JSON](examples/Example1_TestNetwork.json) | [Python script](examples/Example1.py)
Can be exported to:
- **NeuroML 2** (XML or HDF5 format)
- **Graph** (see above)
### Ex. 2: Simple network, 2 populations, projection & inputs
![Ex2](examples/images/Ex2.png)
[JSON](examples/Example2_TestNetwork.json) | [Python script](examples/Example2.py) | [Generated NeuroML2](examples/Example2_TestNetwork.net.nml)
Can be exported to:
- **NeuroML 2** (XML or HDF5 format)
- **Graph** (see above)
### Ex. 3: As above, with simulation specification
[JSON for network](examples/Example3_Network.json) | [JSON for simulation](examples/SimExample3.json) | [Python script](examples/Example3.py) | [Generated NeuroML2](examples/Example3_Network.net.nml) | [Generated LEMS](examples/LEMS_SimExample3.xml)
Can be exported to:
- **NeuroML 2** (XML or HDF5 format)
- **Graph** (see Ex2)
Can be simulated using:
- **NetPyNE**
- **jNeuroML**
- **NEURON** generated from **jNeuroML**
- **NetPyNE** generated from **jNeuroML**
### Ex. 4: A network with PyNN cells & inputs
<img alt="Ex4" src="examples/images/Ex4.png" height="250"/>
[JSON](examples/Example4_PyNN.json) | [Python script](examples/Example4.py) | [Generated NeuroML2](examples/Example4_PyNN.net.nml)
Can be exported to:
- **NeuroML 2** (XML or HDF5 format)
- **Graph** (see above)
Can be simulated using:
- **NEST** via **PyNN**
- **NEURON** via **PyNN**
- **Brian** via **PyNN**
- **jNeuroML**
- **NEURON** generated from **jNeuroML**
- **NetPyNE** generated from **jNeuroML**
### Ex. 5: A network with the Blue Brain Project connectivity data
<img alt="Ex5" src="examples/images/Ex5_BBP_5percent.png" height="150"/>
<img alt="Ex5_1" src="examples/images/bbp1.png" height="200"/> <img alt="Ex5_2" src="examples/images/bbp2.png" height="200"/> <img alt="Ex5_3" src="examples/images/bbp3.png" height="200"/>
[JSON](examples/BBP_5percent.json) | [Python script](examples/Example5.py)
Can be exported to:
- **NeuroML 2** (XML or HDF5 format)
- **Graph** (see above)
- **Matrix** (see above)
Can be simulated using:
- **NetPyNE**
### Ex. 6: A network based on Potjans and Diesmann 2014 (work in progress)
<img alt="Ex6d" src="examples/images/Ex6.dot.png" height="100"/> <img alt="Ex6f" src="examples/images/Ex6.fdp.png" height="100"/> <img alt="Ex6c" src="examples/images/Ex6.circo.png" height="100"/>
<img alt="Ex6matrix" src="examples/images/Ex6matrix.png" height="300"/>
[JSON](examples/Example6_PyNN.json) | [Python script](examples/Example6.py) | [Generated NeuroML2](examples/Example6_PyNN.net.nml)
Can be exported to:
- **NeuroML 2** (XML or HDF5 format)
- **Graph** (see above)
- **Matrix** (see above)
### Ex. 7: A network based on Brunel 2000 (work in progress)
<img alt="Ex7" src="examples/images/Ex7.png" height="250"/>
[JSON](examples/Example7_Brunel2000.json) | [Python script](examples/Example7.py) | [Generated NeuroML2](examples/Example7_Brunel2000.net.nml)
Can be exported to:
- **NeuroML 2** (XML or HDF5 format)
- **Graph** (see above)
Can be simulated using:
- **jNeuroML**
## Installation & usage
Installation of the basic framework should be fairly straightforward:
```
git clone https://github.com/NeuroML/NeuroMLlite.git
cd NeuroMLlite
sudo python setup.py install
```
Then simple examples can be run:
```
cd examples
python Example1.py # Generates the JSON representation of the network (console & save to file)
```
To generate the NeuroML 2 version of the network, first install pyNeuroML, then use the -nml flag:
```
sudo pip install pyNeuroML
python Example2.py -nml # Saves the network structure to a *net.nml XML file
```
Other options (which will require [Neuron](https://neuron.yale.edu/neuron/), [NetPyNE](http://www.netpyne.org/),
[PyNN](http://neuralensemble.org/PyNN/), [NEST](http://www.nest-simulator.org/), [Brain](http://briansimulator.org/) etc. to be installed) include:
```
python Example4.py -jnml # Generate NeuroML2 & LEMS simulation & run using jNeuroML
python Example4.py -jnmlnrn # Generate NeuroML2 & LEMS simulation, use jNeuroML to generate Neuron code (py/hoc/mod), then run in Neuron
python Example4.py -jnmlnrn # Generate NeuroML2 & LEMS simulation, use jNeuroML to generate NetPyNE code (py/hoc/mod), then run in NetPyNE
python Example4.py -netpyne # Generate network in NetPyNE directly & run simulation
python Example4.py -pynnnrn # Generate network in PyNN, run using simulator Neuron
python Example4.py -pynnnest # Generate network in PyNN, run using simulator NEST
python Example4.py -pynnbrian # Generate network in PyNN, run using simulator Brian
```
Graphs of the network structure can be generated at many levels of detail (1-6) and
laid out using [GraphViz](http://graphviz.org/) engines (d - dot (default); c - circo;
n - neato; f - fdp). See above images for generated examples.
python Example6.py -graph3d
python Example6.py -graph2f
python Example6.py -graph1n
## Other examples
NeuroMLlite is being tested/used in the following repositories on OSB:
- [Wilson & Cowan](https://github.com/OpenSourceBrain/WilsonCowan/blob/master/NeuroML2/GenerateNetworkOverview.py)
- [Mejias et al. 2016](https://github.com/OpenSourceBrain/MejiasEtAl2016/blob/master/NeuroML2/GenerateNeuroMLlite.py)
- [Pospischil et al. 2008](https://github.com/OpenSourceBrain/PospischilEtAl2008/tree/master/NeuroML2/cells/summary)
- [Bezaire et al. 2016](https://github.com/mbezaire/ca1/tree/development/NeuroML2/network/nmllite)
- [PING networks](https://github.com/OpenSourceBrain/PINGnets/tree/master/NeuroML2)
- [PsyNeuLink tests](https://github.com/OpenSourceBrain/PsyNeuLinkShowcase/tree/master/NeuroML2)
- [OpenWorm - c302](https://github.com/openworm/c302/tree/master/examples/parametersweep)
See also:
- [ModECI MDF](https://github.com/ModECI/MDF)
Raw data
{
"_id": null,
"home_page": "https://github.com/NeuroML/NeuroMLlite",
"name": "neuromllite",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "Padraig Gleeson",
"author_email": "p.gleeson@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/6e/d4/c7b5b4e2c24eb63f0f4b9394e8d81b04cec39506c6edafb786de013e90f7/neuromllite-0.6.0.tar.gz",
"platform": null,
"description": "## NeuroMLlite: a common framework for reading/writing/generating network specifications based on NeuroML\n\n[![Continuous builds](https://github.com/NeuroML/NeuroMLlite/actions/workflows/ci.yml/badge.svg)](https://github.com/NeuroML/NeuroMLlite/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/NeuroMLlite)](https://pypi.org/project/NeuroMLlite/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/NeuroMLlite)](https://pypi.org/project/NeuroMLlite/)\n[![GitHub](https://img.shields.io/github/license/NeuroML/NeuroMLlite)](https://github.com/NeuroML/NeuroMLlite/blob/master/LICENSE.lesser)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/NeuroML/NeuroMLlite)](https://github.com/NeuroML/NeuroMLlite/pulls)\n[![GitHub issues](https://img.shields.io/github/issues/NeuroML/NeuroMLlite)](https://github.com/NeuroML/NeuroMLlite/issues)\n[![GitHub Org's stars](https://img.shields.io/github/stars/NeuroML?style=social)](https://github.com/NeuroML)\n[![Twitter Follow](https://img.shields.io/twitter/follow/NeuroML?style=social)](https://twitter.com/NeuroML)\n\n\nNeuroMLlite is in active development. This will evolve into a framework for more portable, concise network specifications which will form an important part of [NeuroML v3](https://docs.neuroml.org/NeuroMLOrg/History.html#the-future).\n\nFor some more background to this package see here: https://github.com/NeuroML/NetworkShorthand.\n\n![Architecture](images/NetworkShorthand.png)\n\n\n## Examples\nThe best way to see the currently proposed structure is to look at the examples\n\n### Ex. 1: Simple network, 2 populations & projection\n![Ex1](examples/images/Ex1.png)\n\n[JSON](examples/Example1_TestNetwork.json) | [Python script](examples/Example1.py)\n\nCan be exported to:\n- **NeuroML 2** (XML or HDF5 format)\n- **Graph** (see above) \n\n### Ex. 2: Simple network, 2 populations, projection & inputs\n![Ex2](examples/images/Ex2.png)\n\n[JSON](examples/Example2_TestNetwork.json) | [Python script](examples/Example2.py) | [Generated NeuroML2](examples/Example2_TestNetwork.net.nml)\n\nCan be exported to:\n- **NeuroML 2** (XML or HDF5 format)\n- **Graph** (see above) \n\n### Ex. 3: As above, with simulation specification\n\n[JSON for network](examples/Example3_Network.json) | [JSON for simulation](examples/SimExample3.json) | [Python script](examples/Example3.py) | [Generated NeuroML2](examples/Example3_Network.net.nml) | [Generated LEMS](examples/LEMS_SimExample3.xml)\n\nCan be exported to:\n- **NeuroML 2** (XML or HDF5 format)\n- **Graph** (see Ex2) \n\nCan be simulated using:\n- **NetPyNE**\n- **jNeuroML**\n- **NEURON** generated from **jNeuroML**\n- **NetPyNE** generated from **jNeuroML**\n\n\n### Ex. 4: A network with PyNN cells & inputs\n<img alt=\"Ex4\" src=\"examples/images/Ex4.png\" height=\"250\"/>\n\n[JSON](examples/Example4_PyNN.json) | [Python script](examples/Example4.py) | [Generated NeuroML2](examples/Example4_PyNN.net.nml) \n\nCan be exported to:\n- **NeuroML 2** (XML or HDF5 format)\n- **Graph** (see above) \n\nCan be simulated using:\n- **NEST** via **PyNN**\n- **NEURON** via **PyNN**\n- **Brian** via **PyNN**\n- **jNeuroML**\n- **NEURON** generated from **jNeuroML**\n- **NetPyNE** generated from **jNeuroML**\n\n\n### Ex. 5: A network with the Blue Brain Project connectivity data\n<img alt=\"Ex5\" src=\"examples/images/Ex5_BBP_5percent.png\" height=\"150\"/> \n\n<img alt=\"Ex5_1\" src=\"examples/images/bbp1.png\" height=\"200\"/> <img alt=\"Ex5_2\" src=\"examples/images/bbp2.png\" height=\"200\"/> <img alt=\"Ex5_3\" src=\"examples/images/bbp3.png\" height=\"200\"/> \n\n[JSON](examples/BBP_5percent.json) | [Python script](examples/Example5.py) \n\nCan be exported to:\n- **NeuroML 2** (XML or HDF5 format)\n- **Graph** (see above) \n- **Matrix** (see above) \n\nCan be simulated using:\n- **NetPyNE**\n\n### Ex. 6: A network based on Potjans and Diesmann 2014 (work in progress)\n<img alt=\"Ex6d\" src=\"examples/images/Ex6.dot.png\" height=\"100\"/> <img alt=\"Ex6f\" src=\"examples/images/Ex6.fdp.png\" height=\"100\"/> <img alt=\"Ex6c\" src=\"examples/images/Ex6.circo.png\" height=\"100\"/> \n<img alt=\"Ex6matrix\" src=\"examples/images/Ex6matrix.png\" height=\"300\"/> \n\n[JSON](examples/Example6_PyNN.json) | [Python script](examples/Example6.py) | [Generated NeuroML2](examples/Example6_PyNN.net.nml) \n\nCan be exported to:\n- **NeuroML 2** (XML or HDF5 format)\n- **Graph** (see above) \n- **Matrix** (see above) \n\n### Ex. 7: A network based on Brunel 2000 (work in progress)\n<img alt=\"Ex7\" src=\"examples/images/Ex7.png\" height=\"250\"/> \n\n[JSON](examples/Example7_Brunel2000.json) | [Python script](examples/Example7.py) | [Generated NeuroML2](examples/Example7_Brunel2000.net.nml) \n\nCan be exported to:\n- **NeuroML 2** (XML or HDF5 format)\n- **Graph** (see above) \n\nCan be simulated using:\n- **jNeuroML**\n\n## Installation & usage\n\nInstallation of the basic framework should be fairly straightforward:\n\n```\ngit clone https://github.com/NeuroML/NeuroMLlite.git\ncd NeuroMLlite\nsudo python setup.py install\n```\n\nThen simple examples can be run:\n\n```\ncd examples\npython Example1.py # Generates the JSON representation of the network (console & save to file)\n```\n\nTo generate the NeuroML 2 version of the network, first install pyNeuroML, then use the -nml flag:\n```\nsudo pip install pyNeuroML\npython Example2.py -nml # Saves the network structure to a *net.nml XML file\n```\n\nOther options (which will require [Neuron](https://neuron.yale.edu/neuron/), [NetPyNE](http://www.netpyne.org/), \n[PyNN](http://neuralensemble.org/PyNN/), [NEST](http://www.nest-simulator.org/), [Brain](http://briansimulator.org/) etc. to be installed) include:\n\n```\npython Example4.py -jnml # Generate NeuroML2 & LEMS simulation & run using jNeuroML\npython Example4.py -jnmlnrn # Generate NeuroML2 & LEMS simulation, use jNeuroML to generate Neuron code (py/hoc/mod), then run in Neuron\npython Example4.py -jnmlnrn # Generate NeuroML2 & LEMS simulation, use jNeuroML to generate NetPyNE code (py/hoc/mod), then run in NetPyNE\npython Example4.py -netpyne # Generate network in NetPyNE directly & run simulation\npython Example4.py -pynnnrn # Generate network in PyNN, run using simulator Neuron\npython Example4.py -pynnnest # Generate network in PyNN, run using simulator NEST\npython Example4.py -pynnbrian # Generate network in PyNN, run using simulator Brian\n```\n\nGraphs of the network structure can be generated at many levels of detail (1-6) and \nlaid out using [GraphViz](http://graphviz.org/) engines (d - dot (default); c - circo;\n n - neato; f - fdp). See above images for generated examples.\n\n python Example6.py -graph3d\n python Example6.py -graph2f\n python Example6.py -graph1n\n\n\n## Other examples\n\nNeuroMLlite is being tested/used in the following repositories on OSB:\n\n- [Wilson & Cowan](https://github.com/OpenSourceBrain/WilsonCowan/blob/master/NeuroML2/GenerateNetworkOverview.py)\n- [Mejias et al. 2016](https://github.com/OpenSourceBrain/MejiasEtAl2016/blob/master/NeuroML2/GenerateNeuroMLlite.py)\n- [Pospischil et al. 2008](https://github.com/OpenSourceBrain/PospischilEtAl2008/tree/master/NeuroML2/cells/summary)\n- [Bezaire et al. 2016](https://github.com/mbezaire/ca1/tree/development/NeuroML2/network/nmllite)\n- [PING networks](https://github.com/OpenSourceBrain/PINGnets/tree/master/NeuroML2) \n- [PsyNeuLink tests](https://github.com/OpenSourceBrain/PsyNeuLinkShowcase/tree/master/NeuroML2)\n- [OpenWorm - c302](https://github.com/openworm/c302/tree/master/examples/parametersweep)\n\nSee also:\n- [ModECI MDF](https://github.com/ModECI/MDF)\n\n\n",
"bugtrack_url": null,
"license": "LICENSE.lesser",
"summary": "A common JSON/YAML based format for compact network specification, closely tied to NeuroML v2",
"version": "0.6.0",
"project_urls": {
"Homepage": "https://github.com/NeuroML/NeuroMLlite"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3b080218b0d5a86458de101c6200d011e549186158a9064efe044a2657ef9590",
"md5": "ded93f00e3b58c881a5cc18fd40d45a4",
"sha256": "69957f04bf8ce14a259fa67f4530df3efd0e3be4381123a9ae79b99bbf5e7247"
},
"downloads": -1,
"filename": "neuromllite-0.6.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ded93f00e3b58c881a5cc18fd40d45a4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 99030,
"upload_time": "2024-08-19T15:24:06",
"upload_time_iso_8601": "2024-08-19T15:24:06.861441Z",
"url": "https://files.pythonhosted.org/packages/3b/08/0218b0d5a86458de101c6200d011e549186158a9064efe044a2657ef9590/neuromllite-0.6.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6ed4c7b5b4e2c24eb63f0f4b9394e8d81b04cec39506c6edafb786de013e90f7",
"md5": "63d58b43ea8ab5289fea125007f74a12",
"sha256": "615a81cf6611cedb206ba5291a61772e4f182d74798f3fdb3d49bbb55019fd79"
},
"downloads": -1,
"filename": "neuromllite-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "63d58b43ea8ab5289fea125007f74a12",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 89307,
"upload_time": "2024-08-19T15:24:07",
"upload_time_iso_8601": "2024-08-19T15:24:07.972333Z",
"url": "https://files.pythonhosted.org/packages/6e/d4/c7b5b4e2c24eb63f0f4b9394e8d81b04cec39506c6edafb786de013e90f7/neuromllite-0.6.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-19 15:24:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "NeuroML",
"github_project": "NeuroMLlite",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "neuromllite"
}