NAVis is a Python 3 (3.7 or later) library for Neuron Analysis and Visualization.
NAVis is on ReadTheDocs.
- works as Jupyter notebook, script or from terminal
- support for various neuron types: skeletons, meshes, dotprops, voxels
- 2D (matplotlib) and 3D (vispy, plotly or k3d) plotting
- neuron surgery: cutting, stitching, pruning, rerooting, intersections, ...
- morphometrics: Strahler analysis, cable length, volume, tortuosity, ...
- compare & cluster by morphology (e.g. NBLAST, persistence, form factor) and connectivity
- transform data between template brains (support for e.g. HDF5, CMTK, Elastix and thin plate spline transforms)
- load neurons directly from neuPrint, neuromorpho.org and others
- simulate neurons and networks using the NEURON simulator
- interface with Blender 3D for high quality renderings
- interface with R neuron libraries (e.g. nat, rcatmaid, elmr)
- import-export from/to SWC, neuroglancer's "precomputed" format and more
- scalable thanks to out-of-the-box support for multiprocessing
- designed to be extensible - see for example pymaid
See the documentation for detailed installation instructions, tutorials and examples. For the impatient:
pip3 install 'navis[all]'
which includes all optional extras providing features and/or performance improvements.
Currently, this is
3D plotting from a python REPL is provided by
vispy, which has a choice of backends.
Different backends work best on different combinations of hardware, OS, python distribution, and REPL, so there may be some trial and error involved.
vispy's backends are listed here, and each can be installed as a navis extra, e.g.
pip3 install 'navis[vispy-pyqt6]'.
A summary of changes can be found here.
NAVis & friends
NAVis comes with batteries included but is also highly extensible. Some libraries built on top of NAVis:
- flybrains provides templates and transforms to use with navis
- pymaid pulls and pushes data from/to CATMAID servers
- fafbseg contains tools to work with autosegmented data for the FAFB EM dataset
This code is under GNU GPL V3
NAVis implements or provides interfaces with algorithms described in:
- Comparison of neurons based on morphology: Neuron. 2016 doi: 10.1016/j.neuron.2016.06.012 NBLAST: Rapid, Sensitive Comparison of Neuronal Structure and Construction of Neuron Family Databases. Costa M, Manton JD, Ostrovsky AD, Prohaska S, Jefferis GSXE. link
- Comparison of neurons based on connectivity: Science. 2012 Jul 27;337(6093):437-44. doi: 10.1126/science.1221762. The connectome of a decision-making neural network. Jarrell TA, Wang Y, Bloniarz AE, Brittin CA, Xu M, Thomson JN, Albertson DG, Hall DH, Emmons SW. link
- Comparison of neurons based on synapse distribution: eLife. doi: 10.7554/eLife.16799 Synaptic transmission parallels neuromodulation in a central food-intake circuit. Schlegel P, Texada MJ, Miroschnikow A, Schoofs A, Hückesfeld S, Peters M, … Pankratz MJ. link
- Synapse flow centrality and segregation index: eLife. doi: 10.7554/eLife.12059 Quantitative neuroanatomy for connectomics in Drosophila. Schneider-Mizell CM, Gerhard S, Longair M, Kazimiers T, Li, Feng L, Zwart M … Cardona A. link
- Fork this repository
git cloneit to your local machine
- Install the full development dependencies with
pip install -r requirements.txt
- Install the package in editable mode with
pip install -e .[all]
git push, and pull request your changes.
Run the tests locally with
Doctests have access to the
tmp_dir: pathlib.Path variable,
which should be used if any files need to be written.