Suggested NeuroML tool
Please cite Vella et al. ([VCC+14]) if you use pyNeuroML.
pyNeuroML is a Python package that allows you to work with NeuroML models using the Python programming language. It includes all the API functions provided by libNeuroML and pyLEMS, and also wraps all the functions that jNeuroML provides, which can therefore be used from within Python itself.
With pyNeuroML you can:
Create NeuroML models and simulations
Validate NeuroML v1.8.1 and v2.x files
Simulate NeuroML 2 models
Export NeuroML 2 and LEMS files to many formats such as Neuron, Brian, Matlab, etc.
Import other languages into LEMS (e.g. SBML)
Visualise NeuroML models and simulations
Install Python and the Java Runtime Environment¶
Python is generally pre-installed on all computers nowadays. However, if you do not have Python installed on your system, please follow the official installation instructions to install Python on your computer. A number of Free/Open source Integrated Development Environments (IDEs) are also available that make working with Python (even) easier. An example list is here.
Since pyNeuroML wraps around jNeuroML which is written in Java, you will need a Java Runtime Environment (JRE) installed on your system. On most Linux systems Free/Open source OpenJDK runtime environment is already pre-installed. You can also install Oracle’s proprietary Java platform from their download page if you prefer. Please refer to your operating system’s documentation to install a JRE.
Install pyNeuroML with pip¶
Tip: Use a virtual environment
While using Python packages, it is suggested to use a virtual environment to isolate the software you install from each other. Learn more about using virtual environments in Python here.
The easiest way to install the latest version of pyNeuroML is using the default Python package manager,
pip install pyneuroml
pyNeuroML provides a set of command line utilities along with an API to use from within Python scripts:
Check that all of these have usage documentation that is viewable using the
Issue filed: https://github.com/NeuroML/pyNeuroML/issues/87
These utilities are self-documented.
So, to learn how these utilities are to be used, run them with the
pynml -h usage: pynml [-h|--help] [<shared options>] <one of the mutually-exclusive options> pyNeuroML v0.5.9: Python utilities for NeuroML2 libNeuroML v0.2.54 jNeuroML v0.10.2 optional arguments: -h, --help show this help message and exit Shared options: These options can be added to any of the mutually-exclusive options -verbose Verbose output -java_max_memory MAX Java memory for jNeuroML, e.g. 400M, 2G (used in -Xmx argument to java) -nogui Suppress GUI, i.e. show no plots, just save results <LEMS/NeuroML 2 file> LEMS/NeuroML 2 file to process ...
Generate and publish API documentation for pyNeuroML. Issue filed: https://github.com/NeuroML/pyNeuroML/issues/86
The pyNeuroML API is also self documented.
You can use Python’s in-built documentation viewer
pydoc to view the documentation for any of the package’s modules and their functions:
pydoc pyneuroml Help on package pyneuroml: NAME pyneuroml PACKAGE CONTENTS analysis (package) lems (package) neuron (package) plot (package) povray (package) pynml swc (package) tune (package) DATA JNEUROML_VERSION = '0.10.2' VERSION 0.5.9 FILE /usr/lib/python3.9/site-packages/pyneuroml/__init__.py
pydoc pyneuroml.analysis Help on package pyneuroml.analysis in pyneuroml: NAME pyneuroml.analysis PACKAGE CONTENTS ChannelDensityPlot ChannelHelper NML2ChannelAnalysis FUNCTIONS analyse_spiketime_vs_dt(nml2_file, target, duration, simulator, cell_v_path, dts, verbose=False, spike_threshold_mV=0, show_plot_already=True, save_figure_to=None, num_of_last_spikes=None) generate_current_vs_frequency_curve(nml2_file, cell_id, start_amp_nA=-0.1, end_amp_nA=0.1, step_nA=0.01, custom_amps_nA=, analysis_duration=1000, analysis_delay=0, pre_zero_pulse=0, post_zero_pulse=0, dt=0.05, temperature='32degC', spike_threshold_mV=0.0, plot_voltage_traces=False, plot_if=True, plot_iv=False, xlim_if=None, ylim_if=None, xlim_iv=None, ylim_iv=None, label_xaxis=True, label_yaxis=True, show_volts_label=True, grid=True, font_size=12, if_iv_color='k', linewidth=1, bottom_left_spines_only=False, show_plot_already=True, save_voltage_traces_to=None, save_if_figure_to=None, save_iv_figure_to=None, save_if_data_to=None, save_iv_data_to=None, simulator='jNeuroML', num_processors=1, include_included=True, title_above_plot=False, return_axes=False, verbose=False) FILE /usr/lib/python3.9/site-packages/pyneuroml/analysis/__init__.py
Most IDEs are able to show you this information as you use them in your Python scripts.
For any questions regarding pyNeuroML, please open an issue on the GitHub issue tracker here. Any bugs and feature requests can also be filed there.
You can also use any of the communication channels of the NeuroML community.