Neuronal Morphology Analysis Tool
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
apps morph_stats and morph_checks print their default config url Jan 9, 2019
doc fix read the docs (#687) Apr 17, 2018
examples Removal of cut plane app Sep 26, 2018
ipynb Merge remote-tracking branch 'neurom/master' Sep 25, 2017
neurom Last soma point is no longer first neurite point in ASC Feb 20, 2019
test_data Fix: Section iterator strategies #690 Oct 9, 2018
tutorial Create plotly module Jul 20, 2018
.codecov.yml Coverage fixes May 13, 2016
.coveragerc Switch to Tox (#720) Jan 9, 2019
.gitignore added .DS_Store and .ipynb_checkpoints to the gitignore Nov 25, 2015
.travis.yml Travis run tox -e lint on python3.5 node Feb 1, 2019 Add HBP funding acknowledgment and main authors file. Jun 17, 2016
LICENSE.txt Fix license text; May 7, 2015 morph_stats and morph_checks print their default config url Jan 9, 2019
asv.conf.json added ASV benchmarking (#568) Dec 7, 2016
package.json Updated package.json Sep 22, 2017
requirements_benchmark.txt added ASV benchmarking (#568) Dec 7, 2016
requirements_dev.txt fix documentation (#681) Apr 16, 2018 Bump version Feb 20, 2019
tox.ini `tox -e lint` now defaults to Python 3 Feb 1, 2019


NeuroM is a Python toolkit for the analysis and processing of neuron morphologies.

Build Status Documentation Status DOI


This work has been partially funded by the European Union Seventh Framework Program (FP7/2007­2013) under grant agreement no. 604102 (HBP). For license and authors, see LICENSE.txt and respectively.


NeuroM documentation is built and hosted on readthedocs.


It is recommended that you use pip to install NeuroM into a virtualenv. The following assumes a virtualenv named nrm has been set up and activated. We will see three ways to install NeuroM

1. From the Python Package Index

(nrm)$ pip install neurom

2. From git repository

(nrm)$ pip install git+

3. From source

Clone the repository and install it:

(nrm)$ git clone
(nrm)$ pip install -e ./NeuroM

This installs NeuroM into your virtualenv in "editable" mode. That means changes made to the source code are seen by the installation. To install in read-only mode, omit the -e.


  • Extract morphometrics from one or many morphology files:
$ morph_stats some/path/morph.swc # single file

$ morph_stats some/path # all files in directory
  • Perform checks on neuron morphology files:
(nrm)$ morph_check some/data/path/morph_file.swc # single file
INFO: ========================================
INFO: File: some/data/path/morph_file.swc
INFO:                      Is single tree PASS
INFO:                     Has soma points PASS
INFO:                  Has sequential ids PASS
INFO:                  Has increasing ids PASS
INFO:                      Has valid soma PASS
INFO:                  Has valid neurites PASS
INFO:                  Has basal dendrite PASS
INFO:                            Has axon PASS
INFO:                 Has apical dendrite PASS
INFO:     Has all nonzero segment lengths PASS
INFO:     Has all nonzero section lengths PASS
INFO:       Has all nonzero neurite radii PASS
INFO:             Has nonzero soma radius PASS
INFO:                                 ALL PASS
INFO: ========================================

(nrm)$ morph_check some/data/path # all files in directory
  • Load a neuron and obtain some information from it:
>>> import neurom as nm
>>> nrn = nm.load_neuron('some/data/path/morph_file.swc')
>>> apical_seg_lengths = nm.get('segment_lengths', nrn, neurite_type=nm.APICAL_DENDRITE)
>>> axon_sec_lengths = nm.get('section_lengths', nrn, neurite_type=nm.AXON)
  • Visualize a neuronal morphology:
>>> # Initialize nrn as above
>>> from neurom import viewer
>>> fig, ax = viewer.draw(nrn)
>>> fig, ax = viewer.draw(nrn, mode='3d') # valid modes '2d', '3d', 'dendrogram'


The build-time and runtime dependencies of NeuroM are:

Reporting issues

Issues should be reported to the NeuroM github repository issue tracker. The ability and speed with which issues can be resolved depends on how complete and succinct the report is. For this reason, it is recommended that reports be accompanied with a minimal but self-contained code sample that reproduces the issue, the observed and expected output, and if possible, the commit ID of the version used. If reporting a regression, the commit ID of the change that introduced the problem is also extremely valuable information.