Skip to main content

"Python PipelinEs for 9ML (PyPe9)" to manipulate neuron and neuron network 9ML (http://nineml.net) models and simulate them using well-established simulator backends, NEURON and NEST.

Project description

https://travis-ci.org/NeuralEnsemble/pype9.svg?branch=master https://coveralls.io/repos/github/NeuralEnsemble/pype9/badge.svg?branch=master Documentation Status

Overview

“PYthon PipelinEs for 9ml (Pype9)” is a collection of software Python pipelines to simulate networks of neuron models described in NineML using either Neuron or NEST simulator backends.

For example, given a cell model described in 9ML saved in my_hodgkin_huxley.xml, the simulator pipeline can run from the command line:

$ pype9 simulate my_hodgkin_huxley.xml#hh_props neuron 100.0 0.01 \
  --play isyn isyn.neo.pkl --record v v.neo.pkl --init_value v -65.0 mV

or in a Python script

from pype9.simulator.neuron import cell, Simulation
from nineml import units as un

HodgkinHuxley = cell.MetaClass('my_hodgkin_huxley.xml#hh_class')
with Simulation(dt=0.01 * un.ms, seed=1234) as sim:
   hh = HodgkinHuxley('my_hodgkin_huxley.xml#hh_props', v=-65.0 * un.mV)
   hh.record('v')
   sim.run(100.0 * un.ms)
v = hh.recording('v')

Pype9 also supports network models described in 9ML via integration with PyNN

$ pype9 simulate brunel.xml nest 1000.0 0.01 \
  --record Exc.spike_output Exc-nest.neo.pkl \
  --record Inh.spike_output Inh-nest.neo.pkl \
  --seed 12345

or

from pype9.simulator.neuron import Network, Simulation
from nineml import units as un

with Simulation(dt=0.01 * un.ms, seed=1234) as sim:
   brunel_ai = Network('brunel.xml#AI')
   brunel_ai.component_array('Exc').record('spike_output')
   brunel_ai.component_array('Inh').record('spike_output')
   sim.run(1000.0 * un.ms)
exc_spikes = brunel_ai.component_array('Exc').recording('spike_output')
inh_spikes = brunel_ai.component_array('Inh').recording('spike_output')

See Creating Simulations in Python in the Pype9 docs for more examples and pipelines.

In addition to the simulate command there is also a plot command for conveniently plotting the results of the simulation with [Matplotlib](http://matplotlib.org) and a convert command to convert 9ML files between different serialization formats (XML, YAML, JSON and HDF5) and 9ML versions (1.0 and 2.0dev). See the documentation for details.

Documentation

The full Pype9 documentation can be viewed at http://pype9.readthedocs.io/latest.

Installation

Pype9 works with either or both of the following simulator backends

Note that NEST 2.12 is not currently supported (due to its module build system changing from autotools to cmake). A new Pype9 release will be made to support 2.12.

Detailed instructions on how to install these simulators on different platforms can be found in the docs.

After installing the simulator(s) you plan to use and ensuring that the commands nrnivmodl (for Neuron) and nest-config (for NEST) should be on your system path (https://en.wikipedia.org/wiki/PATH_(variable)), Pype9 and its prerequisite Python packages can be installed with:

cd <pype9-repo-dir>
pip install -r requirements.txt .

Unsupported 9ML

9ML aims to be a comprehensive description language for neural simulation. This means that it allows the expression of some uncommon configurations that are difficult to implement in Neuron and NEST. Work is planned to make the NEURON and NEST pipelines in Pype9 support NineML fully, however until then the following restrictions apply to models that can be used with Pype9.

  • synapses must be linear (to be relaxed in v0.2)

  • synapses can only have one variable that varies over a projection (e.g. weight) (to be relaxed in v0.2)

  • no analog connections between populations (i.e. gap junctions) (gap junctions to be implemented in v0.2)

  • only one event send port per cell (current limitation of Neuron/NEST)

  • names given to 9ML elements are not escaped and therefore can clash with built-in keywords and some PyPe9 method names (e.g. ‘lambda’ is a reserved keyword in Python). Please avoid using names that clash with C++ or Python keywords (all 9ML names will be escaped in PyPe9 v0.2).

Reporting Issues

Please submit bug reports and feature requests to the GitHub issue tracker (http://github.com/NeuralEnsemble/PyPe9/issues).

copyright:

Copyright 20012-2016 by the Pype9 team, see AUTHORS.

license:

MIT, see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pype9-0.1.tar.gz (118.4 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page