# 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).

## Readme

# nat: NeuroAnatomy Toolbox

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:

## Quick Start

For the impatient ...

```
# install
install.packages("nat")
# use
library(nat)
# plot some test data (?kcs20 for details)
# Drosophila Kenyon cells processed from raw data at http://flycircuit.tw
head(kcs20)
open3d()
plot3d(kcs20, col=type)
# get help
?nat
```

## Installation

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

```
install.packages("nat")
`
```

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
devtools::install_github("natverse/nat")
```

## Help

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

- For installation issues, see the Installation vignette
- Start with the overview package documentation (
`?nat`

in R) - Thematically organised function reference documentation
- nat.examples sample code
- nat-user Google group - we normally respond promptly and you will also be helping future users.

## Problems

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 | |

MBL.surf | 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 | |

cmtk.call | 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 | |

as.data.frame.neuronlist | 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

Name | ||

fig/neuronlist-01.png | ||

fig/neuronlist-subsets-01.png | ||

Installation.Rmd | ||

neurons-intro.Rmd | ||

No Results! |

## Last month downloads

## Details

Type | Package |

URL | https://github.com/natverse/nat, http://natverse.org/ |

BugReports | https://github.com/natverse/nat/issues |

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 |

suggests | alphashape3d , httr , knitr , MASS , rmarkdown , Rvcg (>= 0.17) , testthat , XML |

imports | digest , filehash (>= 2.3) , igraph (>= 0.7.1) , methods , nabor , nat.utils (>= 0.4.2) , plyr , yaml |

depends | R (>= 2.15.1) , rgl (>= 0.98.1) |

Contributors | James Manton |

#### Include our badge in your README

```
[![Rdoc](http://www.rdocumentation.org/badges/version/nat)](http://www.rdocumentation.org/packages/nat)
```