nat v1.8.16


Monthly downloads



NeuroAnatomy Toolbox for Analysis of 3D Image Data

NeuroAnatomy Toolbox (nat) enables analysis and visualisation of 3D biological image data, especially traced neurons. Reads and writes 3D images in NRRD and 'Amira' AmiraMesh formats and reads surfaces in 'Amira' hxsurf format. Traced neurons can be imported from and written to SWC and 'Amira' LineSet and SkeletonGraph formats. These data can then be visualised in 3D via 'rgl', manipulated including applying calculated registrations, e.g. using the 'CMTK' registration suite, and analysed. There is also a simple representation for neurons that have been subjected to 3D skeletonisation but not formally traced; this allows morphological comparison between neurons including searches and clustering (via the 'nat.nblast' extension package).


nat: NeuroAnatomy Toolbox

DOI Release Version CRAN_Status_Badge Build Status Coverage Status Docs

An R package for the (3D) visualisation and analysis of biological image data, especially tracings of single neurons. See nat.examples and frulhns for sample code.

nat is a cleaned up version of code that has been used in a number of papers from our group including:

Cell 2007 Cover CB 2010 Cover Nature 2011 Cell 2013 Abstract

Quick Start

For the impatient ...

# install
# use

# plot some test data (?kcs20 for details)
# Drosophila Kenyon cells processed from raw data at
plot3d(kcs20, col=type)
# get help


A confirmed stable version of nat can be installed from CRAN.


However, nat remains under quite active development, so we generally recommend installing the latest development version directly from github using the devtools package.

# install devtools if required
if (!requireNamespace("devtools")) install.packages("devtools")
# then install nat


If you want some help using nat, then please use the following resources


If you think that you have found a bug

  • Install the development version of nat using devtools (see above)
  • Check the github issues and
    • file a bug report if this seems to be a new problem
    • comment on an existing bug report
  • Write to the nat-user list for help.

Thanks for your interest in nat!

Functions in nat

Name Description
Cell07PNs Cell07PNs: 40 Sample Projection Neurons from Jefferis, Potter et al 2007 Surface object (hxsurf) for the left mushroom body in FCWB template space
read.amiramesh Read AmiraMesh data in binary or ascii format
amiratype Return the type of an amiramesh file on disk or a parsed header
as.im3d Convert a suitable object to an im3d object.
as.hxsurf Convert an object to a nat hxsurf object
all.equal.neuron Check equality on key fields of neuron object
all.equal.im3d Check equality on data and key attributes of im3d objects
all.equal.dotprops all.equal method tailored to dotprops objects
affmat2cmtkparams Decompose homogeneous affine matrix to CMTK registration parameters
as.mesh3d Convert an object to an rgl mesh3d
as.neuronlist Make a list of neurons that can be used for coordinate plotting/analysis
cmtkreg Create and test cmtkreg objects that specify path to a CMTK registration
as.neuronlist.neuronlistfh convert neuronlistfh to a regular (in memory) neuronlist
cmtkreglist Make in-memory CMTK registration list from affine matrix or CMTK parameters
boundingbox Get the bounding box of an im3d volume or other compatible object
cmtk.dof2mat Convert CMTK registration to homogeneous affine matrix with dof2mat
cmtk.extract_affine Extract affine registration from CMTK registration file or in-memory list
cmtk.mat2dof Use CMTK mat2dof to convert homogeneous affine matrix into CMTK registration
cmtk.reformatx Reformat an image with a CMTK registration using the reformatx tool
c.neuronlist Combine multiple neuronlists into a single list
cmtk.statistics Calculate image statistics for a nrrd or other CMTK compatible file Utility function to create and run calls to CMTK commandline tools
cmtk.bindir Return path to directory containing CMTK binaries
clampmax Return function that finds maximum of its inputs within a clamping range
im3d-io Read/Write calibrated 3D blocks of image data
graph.nodes Return root, end, or branchpoints of an igraph object
im3d-coords Interconvert pixel and physical coordinates
cmtkparams2affmat Compose homogeneous affine matrix from CMTK registration parameters
cmtk.version Return cmtk version or test for presence of at least a specific version
imscalebar Make a scalebar to accompany an image.im3d plot
coord2ind Find 1D indices into a 3D image given spatial coordinates
flip Flip an array, matrix or vector about an axis
*.dotprops Arithmetic for dotprops objects
imslice Slice out a 3D subarray (or 2d matrix) from a 3D image array
im3d Construct an im3d object representing 3D image data, densities etc Get or set the attached data.frame of a neuronlist
is.neuroml Check whether a file is in NeuroML format
nat-package Analyse 3D biological image data especially neurons
is.im3d Test if an object is of class im3d
ndigest Calculated normalised digest value for an object
is.neuronlist Test objects of neuronlist class to store multiple neurons
imexpand.grid Convert locations of im3d voxel grid into XYZ coordinates
mask Mask an object, typically to produce a copy with some values zeroed out
image.im3d Method to plot spatially calibrated image arrays
kcs20 List of 20 Kenyon Cells from Chiang et al 2011 converted to dotprops objects
*.neuronlist Arithmetic for neuron coordinates applied to neuronlists
find.neuron Find neurons within a 3D selection box (usually drawn in rgl window)
plot.neuronlist 2D plots of the elements in a neuronlist, optionally using a subset expression
neuronlist-dataframe-methods Methods for working with the dataframe attached to a neuronlist
find.soma Find neurons with soma inside 3D selection box (usually drawn in rgl window)
cmtk.targetvolume Defines a target volume for a CMTK reformatx operation
is.nrrd Check if a file is a NRRD file
neuronlist Create a neuronlist from zero or more neurons
neuronlistfh neuronlistfh - List of neurons loaded on demand from disk or remote website
nrrd.voxdims Return voxel dimensions (by default absolute voxel dimensions)
ngraph ngraph: a graph to encode a neuron's connectivity
nlapply lapply and mapply for neuronlists (with optional parallelisation)
plot3d plot3d methods for different nat objects
plot3d.dotprops 3D plots of dotprops objects using rgl package
normalise_swc Normalise an SWC format block of neuron morphology data
npop3d Remove plotted neurons or other 3D objects
fileformats Set or return list of registered file formats that we can read
dotprops dotprops: Neurons as point clouds with tangent vectors (but no connectivity)
nvertices Find the number of vertices in an object (or each element of a neuronlist)
is.amiramesh Check if file is amiramesh format
is.vaa3draw Check if a file is in the raw image format used by Hanchuan Peng's Vaa3D
ind2coord Find XYZ coords corresponding to 1D indices into a 3D image
is.swc Test if a file is an SWC format neuron
is.fijitraces Check whether a file is in Fiji's simple neurite tracer format
pointsinside Find which points of an object are inside a surface
plot3d.hxsurf Plot amira surface objects in 3D using rgl
intersect Find the intersection of two collections of objects
materials Extract or set the materials for an object
nlscan Scan through a set of neurons, individually plotting each one in 3D
mirror Mirror 3D object about a given axis, optionally using a warping registration
*.neuron Arithmetic for neuron coordinates
pan3d Some useful extensions / changes to rgl defaults
neuron neuron: class to represent traced neurons
plot.neuron Plot a 2D projection of a neuron
plot3d.neuronlist 3D plots of the elements in a neuronlist, optionally using a subset expression
plot3d.neuron Plot neurons in 3D using rgl library
nopen3d Open customised rgl window
prune prune an object by removing points near (or far) from a target object
projection Make 2D (orthogonal) projection of 3D image data
prune_strahler Prune a neuron by removing segments with a given Strahler order
potential_synapses Calculate number of potential synapses between two neurons
read.cmtk Read CMTK TypedStream file to a list in memory
prune_vertices Prune selected vertices or edges from a neuron
read.neuron.fiji Read a neuron saved by Fiji's Simple Neurite Tracer Plugin
nview3d Set the 3D viewpoint of an RGL window using anatomical terms
read.neuron Read a single neuron from a file
read.neuronlistfh Read a local, or remote, neuronlistfh object saved to a file.
read.morphml Return parsed XML or R list versions of a NeuroML file
read.neuron.swc Read a neuron in swc file format
setdiff Find the (asymmetric) difference between two collections of objects
simplify_reglist Simplify a registration list
union Find the union of two collections of objects
origin Return the space origin of a 3D image object
unmask Make im3d image array containing values at locations defined by a mask
read.cmtkreg Read a CMTK format registration
plot3d.boundingbox Plot a bounding box in 3D
read.neurons Read one or more neurons from file to a neuronlist in memory
write.hxsurf Write Amira surface (aka HxSurface or HyperSurface) into .surf file.
write.neuron Write out a neuron in any of the file formats we know about
read.neuron.neuroml Read one or more neurons from a NeuroML v1 file
rootpoints Return the root or branch points of a neuron or graph
read.nrrd Read nrrd file into an array in memory
seglist2swc Recalculate Neurons's SWCData using SegList and point information
scale.neuron Scale and centre neuron 3D coordinates
segmentgraph Return a simplified segment graph for a neuron
xformimage Transform image files using a registration or affine matrix
xform Transform the 3D location of objects such as neurons
remotesync Synchronise a remote object
smooth_neuron Smooth the 3D coordinates of a neuron skeleton
spine Compute the longest path (aka spine or backbone) of a neuron
sub2ind Find 1D index given n-dimensional indices
resample Resample an object with a new spacing
plot3d.cmtkreg Plot the domain of a CMTK registration
subset.dotprops Subset points in dotprops object that match given conditions
subset.hxsurf Subset hxsurf object to specified regions
write.neurons Write neurons from a neuronlist object to individual files, or a zip archive
write.neuronlistfh Write out a neuronlistfh object to an RDS file
subset.neuron Subset neuron by keeping only vertices that match given conditions
seglist Make/convert neuron connectivity information into a seglist object
subset.neuronlist Subset neuronlist returning either new neuronlist or names of chosen neurons
seglengths Calculate length of all segments in neuron
voxdims Return voxel dimensions of an object
read.hxsurf Read Amira surface (aka HxSurface or HyperSurface) files into hxsurf object
subset Subset methods for different nat objects
write.amiramesh Write a 3D data object to an amiramesh format file
write.nrrd Write data and metadata to NRRD file or create a detached NRRD (nhdr) file.
read.vaa3draw Read Vaa3d format image data
reglist A simple wrapper class for multiple transformations
[.neuronlistfh Extract from neuronlistfh object or its attached data.frame
strahler_order Find the Strahler order of each point in a neuron
read.landmarks Generic functions to read/write landmarks in any supported format
summary.neuronlist Summary statistics for neurons (e.g. cable length, number of nodes)
write.vtk Write object to VTK file
threshold Threshold an object, typically to produce a mask
write.cmtk Write a suitable list to a CMTK TypedStream file on disk
write.cmtkreg Write out CMTK registration list to folder
xformpoints Transform 3D points using a registration, affine matrix or function
xyzmatrix Get and assign coordinates for classes containing 3D vertex data
No Results!

Vignettes of nat

No Results!

Last month downloads


Type Package
License GPL-3
LazyData yes
Collate 'alphashape3d.R' 'amiralandmarks-io.R' 'amiramesh-io.R' 'cmtk-reformat.R' 'cmtk.R' 'cmtk_geometry.R' 'cmtk_io.R' 'cmtkreg.R' 'coordinates.R' 'dist3D_Segment_to_Segment.R' 'neuron.R' 'dotprops.R' 'graph-nodes.R' 'hxsurf.R' 'im3d.R' 'nat-data.R' 'nat-package.R' 'ndigest.R' 'neuron-io-amira.R' 'neuron-io-fiji.R' 'neuron-io-neuroml.R' 'neuron-io.R' 'neuron-plot.R' 'neuronlist.R' 'neuronlist_interactive_3d.R' 'neuronlist_sets.R' 'neuronlistfh.R' 'ngraph.R' 'nrrd-io.R' 'pop3d.R' 'potential_synapses.R' 'reglist.R' 'seglist.R' 'summary.R' 'utils.R' 'vaa3draw-io.R' 'vtk-io.R' 'xform.R' 'xformimage.R' 'xformpoints.R' 'zzz.R'
RoxygenNote 7.1.1
Encoding UTF-8
VignetteBuilder knitr
NeedsCompilation no
Packaged 2020-09-22 15:52:43 UTC; jefferis
Repository CRAN
Date/Publication 2020-09-22 16:40:02 UTC

Include our badge in your README