Metadata-Version: 2.4
Name: PyLEMS
Version: 0.6.8
Summary: A Python library for working with the Low Entropy Model Specification language (LEMS)
Home-page: https://github.com/LEMS/pylems
Author: PyLEMS authors and contributors
Author-email: gautham@lisphacker.org, p.gleeson@gmail.com
Maintainer-email: p.gleeson@gmail.com
License: LGPL-3.0-only
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Description-Content-Type: text/markdown
License-File: LICENSE.lesser
Requires-Dist: lxml
Requires-Dist: typing; python_version < "3.5"
Requires-Dist: matplotlib
Provides-Extra: doc
Requires-Dist: sphinxcontrib-bibtex; extra == "doc"
Provides-Extra: dev
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Dynamic: license-file

## PyLEMS

[![Build](https://github.com/LEMS/pylems/actions/workflows/ci.yml/badge.svg)](https://github.com/LEMS/pylems/actions/workflows/ci.yml)
[![Check LEMS examples](https://github.com/LEMS/pylems/actions/workflows/examples.yml/badge.svg)](https://github.com/LEMS/pylems/actions/workflows/examples.yml)
[![Documentation Status](https://readthedocs.org/projects/pylems/badge/?version=latest)](https://pylems.readthedocs.io/en/latest/?badge=latest)
[![PyPI](https://img.shields.io/pypi/v/pylems)](https://pypi.org/project/pylems/)

A [LEMS](http://lems.github.io/LEMS) simulator written in Python which can be used to run NeuroML2  models (see [here](https://docs.neuroml.org/Userdocs/Software/pyLEMS.html)).

For more about PyLEMS see:

Michael Vella, Robert C. Cannon, Sharon Crook, Andrew P. Davison, Gautham Ganapathy, Hugh P. C. Robinson, R. Angus Silver and Padraig Gleeson,
**libNeuroML and PyLEMS: using Python to combine procedural and declarative modeling approaches in computational neuroscience**
[Frontiers in Neuroinformatics 2014](http://journal.frontiersin.org/Journal/10.3389/fninf.2014.00038/abstract), doi: 10.3389/fninf.2014.00038

_**PLEASE CITE THE PAPER ABOVE IF YOU USE PYLEMS!**_

For more details on LEMS see:

Robert C. Cannon, Padraig Gleeson, Sharon Crook, Gautham Ganapathy, Boris Marin, Eugenio Piasini and R. Angus Silver,
**LEMS: A language for expressing complex biological models in concise and hierarchical form and its use in underpinning NeuroML 2**,
[Frontiers in Neuroinformatics 2014](http://journal.frontiersin.org/Journal/10.3389/fninf.2014.00079/abstract), doi: 10.3389/fninf.2014.00079

### Installation

A stable version of PyLEMS is [available on PyPI](https://pypi.python.org/pypi/PyLEMS) using [pip](https://pip.pypa.io/en/latest/installing.html):

```
pip install pylems
```

Alternatively, you can obtain the latest version with

```
git clone https://github.com/LEMS/pylems.git
cd pylems
git checkout development   # optional
pip install .
```

### Usage as a LEMS model simulator

```
pylems [options] LEMS_file
```

**Options**

- -I/-include path - Adds a directory to the model file include search path

### Examples

**NeuroML examples (from https://github.com/NeuroML/NeuroML2/tree/development/NeuroML2CoreTypes)**

- Example 0 --  Working
- Example 1 --  Working
- Example 2 --  Working
- Example 3 --  Working
- Example 4 --  Not working (Unsupported in PyLEMS: KSChannel)
- Example 5 --  Working
- Example 6 --  Working
- Example 7 --  Working
- Example 8 --  Working
- Example 9 --  Working
- Example 10 -- Working
- Example 11 -- Working
- Example 12 -- Not working (Unsupported in PyLEMS: Property)
- Example 13 -- Working
- Example 14 -- Not working (Unsupported in PyLEMS: Property)
- Example 15 -- Working
- Example 16 -- Working (apart from spikeArray)
- Example 17 -- Working
- Example 18 -- Working

**LEMS examples (in directory examples)**

- example1.xml --  Working
- example2.xml --  Working
- example3.xml --  Working
- example4.xml --  Not working (Unsupported in PyLEMS: KSChannel)
- example5.xml --  Not working (Unsupported in PyLEMS: KSChannel)
- example6.xml --  Working

TODO: Rest of examples require an update to the `<Simulation>` element, i.e. use `<Simulation...>` not `<SimulationSet...>`, to work in PyLEMS

**LEMS elements that do not work**

- KSChannel
- Property
- XPath based parameters - PathParameter
- Assertions

**Tasks TODO**

- Implement flattening
- Decouple events from runnables
- Improve dimension-checking on expressions.

This code is distributed under the terms of the GNU Lesser General Public License.
