What’s new?

This is a selection of features added, changes made and bugs fixed with each version. For a full list of changes please see the commits on navis’ Github repository.

Version

Date

1.6.0

07/04/24

1.5.0

27/07/23

  • BREAKING: dropped support for Python 3.7

  • new function: navis.pop3d() removes the most recently added object from the vispy 3d viewer

  • new experimental functions for (pairwise) alignment of neurons using the pycpd package: navis.nblast_align(), navis.align.align_deform(), navis.align.align_rigid(), navis.align.align_pca(), navis.align.align_pairwise()

  • navis.xform_brain() now recognizes the target template’s units if available

  • new NeuronList method: navis.NeuronList.set_neuron_attributes()

  • new utility functions: navis.nbl.compress_scores(), navis.nbl.nblast_prime()

  • improved persistence functions: navis.persistence_distances(), navis.persistence_vector(), navis.persistence_diagram()

  • navis.longest_neurite() and navis.cell_body_fiber() now also allow removing the longest neurite and CBF, respectively

  • navis.heal_skeleton() now accepts a mask parameter that allows restricting where fragments are stitched

  • various other bugfixes

1.4.0

21/12/22

1.3.1

10/06/22

  • fixed various bugs

1.3.0

10/05/22

  • as of this version pip install navis won’t install a vispy backend (see install instructions for details)

  • new interface to fetch data from Virtual Fly Brain: navis.interfaces.vfb

  • tools to build custom NBLAST score matrices (big thanks to Chris Barnes!), see the new tutorial

  • Bayesian implementation of the network traversal model: BayesianTraversalModel (big thanks to Andrew Champion!)

  • NBLASTs: new approx_nn parameter (sacrifices precision for speed)

  • example neurons now come with some meta data

  • new morphometrics functions: navis.segment_analysis() & navis.form_factor()

  • new function to write meshes: navis.write_mesh()

  • lots of fixes and improvements in particular for i/o-related functions

1.2.1

25/02/22

1.2.0

24/02/22

1.1.0

18/11/21

  • new function navis.sholl_analysis()

  • plotly is now correctly chosen as default backend in Google colab

  • fixes a critical bug with plotting skeletons with plotly 5.4.0

1.0.0

11/11/21

Breaking changes:

New things & Bugfixes:

  • NeuronList:
    • apply() now allows omitting failures (see omit_failures parameter)

  • VoxelNeuron:
    • new (experimental) class representing neurons as voxels

    • read_nrrd() now returns VoxelNeuron instead of Dotprops by default

    • currently works with only a selection of functions

  • TreeNeuron:
    • can now be initialized directly with skeletor.Skeleton

    • new method: snap()

  • MeshNeuron:
  • Dotprops:
    • new property: .sampling_resolution (used e.g. for scaling vectors for plotting)

    • new method snap()

  • experimental support for non-isometric .units for neurons

  • NBLASTs:
    • new parameter limit_dist allows speeding up NBLASTs with minor precision loss

    • new experimental parameter batch_size to NBLAST neurons in batches

    • overall faster initialization with large lists of neurons

  • SWC I/O (read_swc() & write_swc()):
    • by default we will now deposit neuron meta data (name, id, units) in the SWC header (see write_meta parameter)

    • meta data in SWC header can also be read back (see read_meta parameter)

    • filenames can now be parsed into specific neuron properties (see fmt parameter)

    • node IDs now start with 0 instead of 1 when writing SWC files

  • I/O to/from Google neuroglancer’s precomputed format:
  • plotting:
    • new function navis.plot_flat() plots neurons as dendrograms

    • plot3d() with plotly backend now returns a plotly Figure instead of a figure dictionary

    • new k3d backend for plotting in Jupyter environments: try navis.plot3d(x, backend='k3d')

    • new parameter for plot2d() and plot3d(): use clusters=[0, 0, 0, 1, 1, ...] to assigns clusters and have them automatically coloured accordingly

    • plot2d() now allows radius=True parameter

  • transforms:
  • most functions that work with TreeNeurons now also work with MeshNeurons

  • new high-level wrappers to convert neurons: navis.voxelize(), navis.mesh() and navis.skeletonize()

  • make_dotprops() now accepts parallel=True parameter for parallel processing

  • smooth_skeleton() can now be used to smooth arbitrary numeric columns in the node table

  • new function navis.drop_fluff() removes small disconnected bits and pieces from neurons

  • new function navis.patch_cloudvolume() monkey-patches cloudvolume (see the new tutorial)

  • new function navis.write_nrrd() writes VoxelNeurons to NRRD files

  • new functions to read/write MeshNeurons: read_mesh() and navis.write_mesh()

  • new function navis.read_nmx() reads pyKNOSSOS files

  • new function smooth_mesh() smoothes meshes and MeshNeurons

  • improved/updated the InsectBrain DB interface (see the tutorial)

  • under-the-hood fixes and improvements to: plot2d(), split_axon_dendrite(), tortuosity(), resample_skeleton(), mirror_brain()

  • first pass at a NEURON interface (see the new tutorial)

  • first pass at interface with the Allen’s MICrONS datasets (see the new tutorial)

  • NAVIS_SKIP_LOG_SETUP environment variable prevents default log setup for library use

  • improved cable_overlap()

0.6.0

12/05/21

  • new functions: navis.prune_at_depth(), navis.read_rda(), navis.cell_body_fiber()

  • many spatial parameters (e.g. in navis.resample_skeleton()) can now be passed as unit string, e.g. "5 microns"

  • many functions now accept a parallel=True parameter to use multiple cores (depends on pathos)

  • navis.read_swc() and navis.write_swc() can now read/write directly from/to zip files

  • reworked navis.read_json(), and navis.write_json()

  • nblast functions now let you use your own scoring function (thanks to Ben Pedigo!)

  • added threshold parameter to navis.read_nrrd()

  • fixed NBLAST progress bars in notebook environments

  • navis.nblast_smart(): drop quantile and add score criterion

  • new functions to map units into neuron space: map_units() and navis.to_neuron_space()

  • functions that manipulate neurons will now always return something (even if inplace=True)

  • navis.cut_skeleton() now always returns a single NeuronList

  • navis.mirror_brain() now works with k=0/None Dotprops

  • all reroot_to_soma parameters have been renamed to reroot_soma

  • navis.TreeNeuron now has a soma_pos property that can also be used to set the soma by position

  • fixed a couple bugs with CMTK transforms

  • made transforms more robust against points outside deformation fields

  • better deal if node ID of soma is 0 (e.g. during plotting)

  • navis.neuron2tangents() now drops zero-length vectors

  • fixed navis.guess_radius()

0.5.3

10/04/21

0.5.2

02/02/21

0.5.1

10/01/21

  • a couple under-the-hood improvements and bugfixes

0.5.0

05/01/21

  • new functions for transforming spatial data (locations, neurons, etc) between brain spaces:
  • de-cluttered top level namespace: some more obscure functions are now only available through modules

0.4.3

22/12/20

  • more small bug fixes

0.4.2

22/12/20

  • some small bug fixes

0.4.1

06/12/20

  • hotfix for critical bug in NBLAST

0.4.0

06/12/20

0.3.4

24/11/20

0.3.3

23/11/20

0.3.2

18/10/20

0.3.1

07/10/20

0.3.0

06/10/20

  • started module to manipulate mesh data: see navis.simplify_mesh()

  • improved interfaces with R NBLAST and xform_brain

  • improved attribute caching for neurons

0.2.3

06/09/20

  • new Neuron property .label that if present will be used for plot legends

  • new function for R interface: navis.interfaces.r.load_rda()

  • Blender interface: improved scatter plot generation

0.2.2

15/08/20

  • new plot3d parameter: with plotly backend, use fig to add data to existing plotly figure

  • new plot3d parameter: with vispy backend, use center=False to not re-center camera on adding new data

  • new r.mirror_brain parameter: use e.g. via='FCWB' if source space does not have mirror transform

  • new NeuronList method: append() works like list.append()

  • first implementation of smarter (re-)calculation of temporary Neuron properties using .is_stale property

  • Neurons can now be multiplied/divided by array/list of x/y/z coordinates for non-isometric transforms

  • fix issues with newer rpy2 versions

  • various improvements and bug fixes

0.2.1

20/07/20

  • new plot3d parameter: with plotly backend, use radius=True plots TreeNeurons with radius

  • new plot2d parameter: orthogonal=False sets view to perspective

  • various improvements to e.g. `nx2neuron

0.2.0

29/06/20

  • new neuron class MeshNeuron that consists of vertices and faces

  • new TreeNeuron property .volume

  • we now use ncollpyde for ray casting (intersections)

  • clean-up in neuromorpho interface

  • fix bugs in Volume pickling

  • new example data from the Janelia hemibrain data set

  • breaking changes: :func:~navis.nx2neuron now returns a TreeNeuron instead of a DataFrame

0.1.16

26/05/20

  • many small bugfixes

0.1.15

15/05/20

  • improvements to R and Blender interface

  • improved loading from SWCs (up to 2x faster)

  • TreeNeurons: allow rerooting by setting the .root attribute

0.1.14

05/05/20

  • emergency fixes for 0.1.13

0.1.13

05/05/20

  • new function navis.vary_color()

  • improvements to Blender interface and various other functions

0.1.12

02/04/20

  • Volume is now sublcass of trimesh.Trimesh

0.1.11

28/02/20

  • removed hard-coded swapping and translation of axes in the Blender interface

  • improved navis.stitch_neurons: much faster now if you have iGraph

  • fixed errors when using multiprocessing (e.g. in NeuronList.apply)

  • fixed bugs in navis.downsample_neuron()

0.1.10

24/02/20

  • fixed bugs in Blender interface introduced in 0.1.9

0.1.9

24/02/20

  • removed hard-coded swapping and translation of axes in the Blender interface

  • fixed bugs in stitch_neurons

0.1.8

21/02/20

  • Again lots of fixed bugs

  • Blame myself for not keeping track of changes

0.1.0

23/05/19

  • Made lots of fixes

  • Promised myself to be better at tracking changes

0.0.1

29/01/19

  • First commit, lots to fix.