We have developed multiple tools to work with neuroanatomical data. Here is a quick overview:
Below are brief descriptions and links of the libraries/packages. For details, I defer to their respective (excellent) docs.
In R, the natverse (published in Bates, Manton et al., 2020) is your one-stop-shop for all things neuron: it's a collection of various R packages that are built on top of the neuroanatomy toolbox, nat
. Of particular relevance:
nat
is a general-purpose library for working with neuronanatomical data.
I highly recommend having a look at the "Articles" in nat's doc.neuprintr
andhemibrainr
provide an interface with neuPrint and the Janelia hemibrain dataset (link). The former lets you run queries against neuPrint's neo4j database while the latter contains meta data and various convenience functions to work with the hemibrain dataset.rcatmaid
provides an interface with CATMAID servers such as those the VFB uses to host published from the FAFB or larval fruit fly dataset.rcatmaid
is built on top ofnat
and you can usenat
functions with neurons pulled viarcatmaid
.neuromorphr
lets you search and pull data from neuromorpho.orgfishatlas
provides R client utilities for interacting with the Fish Brain Atlas Project, which has successfully acquired and registered almost 2,000 neurons from the larval zebrafish into a standard, annotated template space.mouselightr
provides an interface with the MouseLight at Janelia Research Campus, which has successfully acquired and registered almost ~1,000 neurons from the mouse into a standard, annotated template space.fafbseg
provides functions to work with both the Google and FlyWire segmentation of the FAFB dataset.nat.flybrains
andnat.jrcbrains
bundle various transforms for use withnat
that let you xform e.g. neurons from one brain template to another
In Python, we find packages analogous to those in R:
navis
isnat
's serpentine sibling: a general purpose neuron library for visualization and analysis of neuroanatomical data. It also features interfaces e.g. with Blender 3D, neuPrint, MICRoNs, neuromorpho, NEURON and InsectBrainDB. Check out the Quickstart article and the various tutorials.pymaid
lets you interface with CATMAID servers. Critically, it's built on top ofnavis
and you can use anynavis
function withpymaid
neurons. Side note: due to a name clash the library is calledpython-catmaid
on PyPI.fafbseg
provides functions to work with both the Google and FlyWire segmentation of the FAFB dataset.flybrains
bundles various transforms for use withnavis
that let you xform e.g. neurons from one brain template to anotherskeletor
implements various skeletonization algorithms for meshes (navis
uses this internally)sparse-cubes
is a library for extracting meshes from sparse voxel data (i.e. x/y/z voxel coordinates instead of a dense 3D matrix)nblast-large
is a WIP implementation of NBLAST designed for very large datasets (>100k neurons)
There are a few more packages/functions that might be of interest:
NBLAST is an algorithm that computes morphological similarity between neurons (Costa et al., 2016. This has proven incredibly useful to find similar neurons across datasets but also to cluster neurons into cell types.
On the R side the algorithm is implemented in nat.nblast
and in Python it is part of navis
(see this tutorial).
Neuroanatomical databases (like e.g. VirtualFlyBrain) typically register neurons to a template space which facilitates e.g. co-visualization of neurons from different
datasets. If you want to transform spatial data between template brains, e.g. from FAFB ("FAFB14") to the Janelia hemibrain ("JRCFIB2018F"), you should look for nat.flybrains
& nat.jrcbrains
in R and navis-flybrains
in Python. These also allow you to define custom transforms e.g. via landmarks.