nat 1.5.12
==========
* fix bug in updating neuronlistfh objects from remote url
* nlapply now has options for progress bars and parallelisation by using the 
  plyr package under the hood.
* c.neuronlist can now join lists with attached data.frames with different 
  columns (missing values are filled with NAs). This also applies when some
  neuronlists have no attached data.frame at all.
* read.neurons can read neuronlist files from disk
* cmtk.statistics now has a Verbose argument
* warn if resmapling a neuron with multiple subtrees that only the main subtree
  will be kept.

nat 1.5.11
==========
* add cmtk.statistics function
* fix infinite recursion in cmtk.targetvolume

nat 1.5.10
==========
* fix: write.neurons subdir argument can accept a column of the attached
  data.frame (unquoted)
* fix: write.neuron(s) can add an extension to an output filename that does not
  have one
* write.neurons now has an explicit files argument
* cmtk.targetvolume (and therefore cmtk.reformatx) can accept e.g. 
  templatebrains (as contained in nat.flybrains package) to specify target 
  image for registration.

nat 1.5.9
=========
* fix transformation of points using compound CMTK registrations
  (this was broken for CMTK<3.2.2, so a workaround is required).
* Add cmtk.version function.
* xyzmatrix can cope with lower case x,y,z for column names
* doc: fixes in xform

* dev: fix test for winbuilder

nat 1.5.8
=========
* Add boundingbox.list method to find boundingbox for neurons, surfaces etc
* nmapply and nlapply get OmitFailures arguments
* nlapply also gets a subset argument
* both arguments are also added to xform/mirror.neuronlist
* dotprops.neuronlist also gets the OmitFailures argument.
* fix subset.neuronlist handling of numeric indices
* minor bug/doc fixes

nat 1.5.7
=========
* teach plot3d.neuronlist and friends to plot soma locations.
* add npop3d function to remove last plotted neurons 
  (identical to flycircuit::pop3dfc, except that it works with any neurons
  plotted by plot3d.neuronlist, rather than only those plotted by plot3dfc)

nat 1.5.6
=========
* give mirror/xform.neuronlist subset arguments
* add plot3d.boundingbox
* give plot(3d).neuronlist a SUBSTITUTE argument that can be used to control
  non-stadard evaluation. This is useful for people who wish to incoroporate
  these funcitons inside other user-defined functions. See ?subset.neuronlist
  for details.
* fix: write.neurons into subdirs when df=NULL

nat 1.5.5
==========
* fix bug in reading swc files with many decimal places specific to R 3.1.0
* fix bug in header when writing swc files [ajdm]
* read.im3d now adds file as an attribute to output
* read.im3d can now add amiramesh files without the standard file extension
* doc: minor improvements to read.im3d docs and examples

nat 1.5.4
==========
* remove internal is.gzip function and depend on nat.utils >=0.4.2

nat 1.5.3
==========
* new function pointsinside to determine if points (e.g. neuron) are inside a
  closedd surface
* resample.neuron implemented (no support for interpolating widths or multiple
  subtrees)
* dotprops.neuron can resample to a consistent segment length
* consistent return values for as.seglist and seglengths when all subtrees are
  returned
* seglengths can return lengths for each edge as well as the sum for each
  neurite segment (the default)
* suppress remote tests if flybrain unreachable
* zenodo DOI for package

nat 1.5.2
==========
* add seglengths function for neurons
* add segmentgraph function to produced a simplified graph representation of
  neurons with one edge per segment
* add potential_synapses.dotprops method
* add as.seglist.neuron method 
* teach plot3d.hxsurf and subset.hxsurf to accept regexes
* always drop unused vertices in as.mesh3d.hxsurf
* fix bug in write.neurons when subdir not specified
* fix colouring of vectors by plot3d.dotprops
* dev: switch to roxygygen2 v4

nat 1.5.1
==========
* add potential_synapses (from nat.as)
* surfaces: add subset.hxsurf and as.mesh3d
* Teach read.im3d to read Vaa3d raw format
* add plot.neuronlist (for 2d plotting)
* add c.neuronlist function to combine neuronlists
* add db argument to plot3d.character
* make WithNodes=FALSE the default for plot3d.neuronlist
* make asp=1 the default for image.im3d
* write.cmtkreg warns if versions specified by cmtkreg attribute and argument
  differ (to avoid writing old registrations as if they were new or vice versa)
* fix: prune.neuronlist method signature (and therefore dispatch)

nat 1.4.10
==========
* add function to prune objects by removing points close to or far from another
  object
* add nmapply function for neuronlists
* add xyzmatrix method for neuronlists
* add materials function with methods for im3d and hxsurf objects
* enh: read.im3d can read materials from amiramesh files
* enh: download neurnonlistfh objects to session temp directory if no localdir
  is specified
* fix: find CMTK in its new default location on macosx
* fix: plot3d should skip redrawing if par3d() skipRedraw is set
* fix: failure to export ngraph constructor function
* fix: set NeuronName when no InputFile argument is passed to neuron
  constructor
* fix: im3d axis labels
* doc: numerous small documentation improvements

nat 1.4.9
=========
* add spine() function to find longest path (aka backbone) of a neuron
* give ngraph (and therefore as.ngraph methods) a weights argument so that 
  resultant ngraph objects have edge weights defined by segment lengths.
* add as.im3d generic and as.im3d.im3d method
* fix bug in setting graph attributes in ngraph

nat 1.4.8
=========
* bugfix: ensure ind2coords.im3d is exported

nat 1.4.7
=========
* add ability to make a dotprops object directly from an image file on disk or
  an im3d object in memory.
* port ind2coord, coord2ind and sub2ind functions from AnalysisSuite
* fix clampmax function so that it removes Infinite values
* fix reading of gzip encoded amiramesh files
* fix mirror so that dotprops are recalculated for a simple flip
* make plot(3d).neuron colour settings more consistent
* simplify axis handling in plot.neuron
* dev: build nat.flybrains (as well as nat) after flycircuit build

nat 1.4.6
=========
* fix bug in handling vertexData argument in as.neuron.ngraph
* fix test error on Solaris (thanks to Brian Ripley)
* dev: fix remaining warnings in tests

nat 1.4.5
=========
* add plot.neuron for 2d plots (ajdm, from code in AnalysisSuite)
* add nopen3d() which opens an rgl viewer that allows panning. See ?nopen3d for
  details of how to use this.
* teach read.neurons to report files that have problems as they are read
* fix temp file left behind by xform.cmtkreg
* fix dangerous looking warning when amira binary files have empty sections
* fix ability of read.neurons to set InputFileName and therefore retain
  status information for the file along with its MD5 hash
* fix bug exporting xform.default (so that xform(matrix()) works)
* docs: improve coverage of BoundingBox vs bounds
* tests: simple tests for plot(3d).neuron
* tests: clear up temp files and suppress most warnings
* dev: restart travis build of flycircuit package when nat is pushed to github

nat 1.4.4
=========
* fix handling of logical expressions including NAs by subset.neuronlist
* add soma argument to plot3d.neuron
* fix: boundingbox.im3d() returns NULL when bounding box is not defined
* give remotesync.neuronlistfh an indices argument to allow download/update
  from the web of a selected population of neurons
* add ndigest.neuron method
* fix: export ndigest.dotprops method
* give image.im3d a useRaster option, which defaults to TRUE when possible.

nat 1.4.3
=========
* new ndigest (normalised digest) function to compute hash values. Methods for
  neuronlistfh and dotprops objects. Can be used e.g. to compute a hash value
  for a standard dps object to determine if a data.
* new threshold function with a method for im3d objects. Can be used to make
  masks.
* more flexible im3d constructor can use an existing im3d object to supply
  spatial attributes.

nat 1.4.2
=========
* fix bug in read.neuronlistfh resulting in error if a remote file was
  downloaded and then read back in (using cached copy) before any neurons were
  downloaded.

nat 1.4.1
=========
* fix bug in write.nrrd - was failing to write essential space dimensions field.
* make gzip the default encoding for nrrd images - this is pretty much always
  what one wants.

nat 1.4.0
=========
* add cmtk.reformatx command for reformatting images using CMTK registrations
* new function remotesync to synchronise a neuronlistfh object with its remote
  source.
* add write.neuronlistfh and improve consistency/docs of path handling in 
  read.neuronlistfh
* option to write missing (or no) neurons when using as.neuronlistfh.neuronlist
  this makes it _much_ faster to re-export these objects or prepare neuronlistfh
  for subsets of an existing group of neurons
* fix hashmap functionality of neuronlistfh (speeds up access to single neurons)

nat 1.3.2
=========
* fix bug in find.neuron for neuronlistfh objects
* fix bug in neuronlistfh constructor (wasn't adding hashmap) and 
  [[.neuronlistfh (was not searching properly for objects when using hashmap).

nat 1.3.1
=========
* add find.neuron for interactive selection of neurons in 3d.

nat 1.3
=======
* implementation of new im3d image manipulations functions including image.im3d,
  projection, unmask, imslice, imscalebar, imexpand.grid, flip, origin,
  boundingbox<-, xyzpos, ijkpos
* see ?im3d, ?boundingbox, ?image3d.im3d, ?imscalebar and ?flip for details
* fix reading of gzipped nrrds on windows
* dev: fix nocran tests

nat 1.2
=======
* Basic implementation of reading/writing NRRD format image data.
  See read.nrrd and write.nrrd for details.
* Basic implementation of reading/writing Amira format image data.
  See read.amiramesh and write.amiramesh for details.
* Basic implementation of a class for 3d images, im3d
* see read.im3d and write.im3d for I/O
* and voxdims and boundingbox methods for physical dimensions
* switch to more flexible neuronlistfh structure in which objects on disk are
  named by the md5 hash of their contents.
* workaround for connection leak in filehashRDS objects that stopped downloads
  of more than 124 new objects by a neuronlistfh (ajdm).
  (see https://github.com/rdpeng/filehash/pull/3 for details)
* dev: approach allowing some tests (e.g. those using the web) to be ignored on
  CRAN (ajdm)
* dev: travis continuous integration support (ajdm)

nat 1.1
=======
* Implemented reading and writing of groups of neurons from/to neuronlists.
  See read.neurons and write.neurons.
* Implemented writing of single neurons in swc format, Amira's HxLineSet and 
  SkeletonGraph formats, and R's rds format.
* Can now read Amira HxLineSet format neurons (see read.neuron)
* Give read.neuronlistfh an update argument (default:FALSE) so that it does not
  re-download remote data.
* dev: speed and flexibility improvements in fileformats ioregistry.
  see ?fileformats for details of new functions.

nat 1.0.1
=========
* fix bug in cmtk.bindir() on Solaris (thanks to Brian Ripley)

nat 1.0
=======
* implement reading of amiramesh data
* including amira SkeletonGraph format tracings
* switch to filehashRDS format for repositories of remote neurons
* retire stashR backend for neuronlistfh remote repositories (too slow)

nat 0.9
=======
* support for automatic download of neurons from stashR remote repositories on
  the web. ?neuronlistfh for details and an example. 
* Relies on stashR package
* dev: small doc fixes to make package CRAN compatible.

nat 0.8
=======
* important new feature: neuronlistfh objects backed by an on disk filehash
  allow single neurons to be loaded from disk on demand
* this allows 1) fast startup suitable for knitr documents and 2) working with
  more neurons than fit in main memory
* of course this is slower than working with an in-memory list but for plotting
  etc this should not be problem
* furthermore neuronlistfh objects can be subsetted/converted to give in memory
  neuronlist objects.

nat 0.7
=======
* implement read.neuron and read.neurons
* so far only works for rda, rds and swc files
* reading of additional file types will be implemented by registering functions =
  to test, read and write for the format using a package regsistry controlled by
  nat::neuronformats.
* developer: seglists in neurons now have class 'seglist'

nat 0.6
=======
* major new functionality - bidirectional interconversion of graph and regular
  neuron representation
* see as.neuron.* methods and as.ngraph.* methods
* plan is to use graph representation as the common intermediate with reading 
  different neuron file formats
* depends on igraph package

nat 0.5.2
=========
* add subset.neuronlist
* add methods for working with dataframe attached to neuronlist 
  (see e.g. ?with.neuronlist)
* TODO harmonise plot3d.neuronlist subset expressions with subset.neuronlist

nat 0.5.1
=========
* Switch license to GPL-3
* xform (transformation) of hxsurf objects
* fix xform of neuronlist objects
* switch from CMTK gregxform to streamxform (gregxform is deprecated; streamxform can concatenate registrations)
* teach mirror function to accept numeric axis specification
* Fix bug in checking extra directories in cmtk.bindir
* Add dotprops.neuronlist and include all dotprops methods in documentation
* Fix longstanding bug in parsing cmtk warping registrations (only relevant for
  reading these into R lists - no effect on transformations).
* fix bug in class of cmtkreg objects
* Remove call to .Internal(La_rs) by calling eigen directly
* doc: some notes on CMTK installation

nat 0.5
=======
* fix broken handling of cmtk affine transformations
* implement mirroring of neurons and other objects
* teach xformpoints (and therefore xform) to handle "~/" in paths
* bugfix in visibility of S3method xformpoints.character
* (developer) Switch to roxygen2 v3.0 for documentation

nat 0.4
=======
* read.hxsurf and plot3d.hxsurf for reading/plotting Amira surfaces
* better handling of location of cmtk command line tools see ?cmtk for details
* add neuronlist and associated methods (including plot)
* plot3d for neurons and dotprops

nat 0.3
=======
* basic and self-contained implementation of neuron class
* basic and self-contained implementation of dotprops
* new xform generic + methods for clean transformation of objects including
  neurons and dotprops objects
* this includes improved interaction between dotprops and xform so that xform
  can use the previously value of k when recalculating a dotprops object post
  transformation
* sample data (40 PNs from Jefferis, Potter et al. '07 and 20 KCs from Chiang 
  et al. 2011)
* 1 use of .Internal and missing nlapply remain to be fixed.

nat 0.2.1
=========
* fix install error due to missing neuron(*).R files that contain docs only so far

nat 0.2
=======
* Fairly complete implementation of CMTK registration I/O and geometry
* All functionality is self-contained (i.e. independent of nat.as/AnalysisSuite)
* passes check()
* can be augmented by nat.as (0.6)
