Skip to content

Releases: navis-org/navis

Version 1.9.1

24 Oct 10:23
Compare
Choose a tag to compare

This minor version bump fixes a few smaller issues:

  • MICrONS & H01 interfaces:
    • fetch_neurons now accepts a materialization parameter that determines which materialization version is used for synapse and nucleus queries; defaults to "auto" which means navis will try to find a materialization version matching the queried root IDs
    • fetch_neurons will now also assign soma positions for H01 neurons (see the .soma_pos neuron property); previously this only worked for MICrONS neurons
    • datastack="cortex65" now points to the correct MICrONS datastack
  • CloudVolume.mesh.get_navis (see navis.patch_cloudvolume) now accepts a process (default is False) parameter that determines whether the NeuroGlancer mesh is processed (deduplication of vertices, etc.); contribute by @fcollman
  • fixed a bug in navis.subset_neuron that caused branch points to not be re-calculated

Version 1.9.0

17 Oct 20:19
Compare
Choose a tag to compare

This version comes with:

  • a new and shiny interface to pull data from the H01 human cortex dataset (by @jinhan)
  • TreeNeurons can now be initialized from vertices and edges
  • improvements in handling and processing of image data
  • general I/O improvements

See the changelog for details!

Version 1.8.0

22 Sep 16:56
Compare
Choose a tag to compare

This version contains a major internal rework of both navis.plot2d and navis.plot3d to make them more consistent and easier to use.

Breaking

  • Plotting: the synapse_layout parameter was renamed to cn_layout (matching e.g. other parameters such as cn_colors)
  • Negative views in navis.plot2d (e.g. view=("x", "-z")) will now invert axes rather than changing the underlying data
  • Minimum version of matplotlib is now 3.9 (was 3.6)
  • The plotly backend is not part of a minimal install anymore (still installed via navis[all])
  • The Vispy backend is now deprecated and will be removed in a future release
  • Removed navis.screenshot - please use the Octarine/Vispy viewer's .screenshot() method instead
  • navis.tortuosity now calculates tortuosity as-is (i.e. without resampling) by default

Additions

  • Added Octarine as the default backend for plotting from terminal
  • New Function: navis.ivscc_features() computes some basic ICSCC features
  • New function: navis.graph.skeleton_adjacency_matrix() computes the node adjacency for skeletons
  • New function: navis.graph.simplify_graph() simplifies skeleton graphs to only root, branch and leaf nodes while preserving branch length (i.e. weights)
  • New NeuronList method: get_neuron_attributes is analagous to dict.get
  • NeuronLists now implement the | (__or__) operator which can be used to get the union of two [NeuronLists]navis.NeuronList]
  • Tree/MeshNeurons, Volumes and Dotprops now support addition/subtraction (similar to the already existing multiplication and division) to allow offsetting neurons
  • navis.Volume now have an (optional) .units property similar to neurons

Improvements

  • Plotting:
    • navis.plot3d:
      • legendgroup parameter (plotly backend) now also sets the legend group's title
      • new parameters for the plotly backend:
        • legend (default True): determines whether legends is shown
        • legend_orientation (default v): determines whether legend is aranged vertically (v) or horizontally (h)
        • linestyle (default -): determines line style for skeletons
      • default for radius is now "auto"
    • navis.plot2d:
      • the view parameter now also works with methods 3d and 3d_complex
      • the color_by and shade_by parameters now also work when plotting skeletons with radius=True
      • new defaults: radius="auto", alpha=1, figsize=None (use matplotlib defaults)
      • new parameters for methods 3d and 3d_complex: mesh_shade=False and non_view_axes3d
      • the scalebar and soma parameters can now also be dictionaries to style (color, width, etc) the scalebar/soma
    • the connectors parameter can now be used to show specific connector types (e.g. connectors="pre")
  • I/O:
    • read_* functions are now able to read from FTP servers (ftp://...)
    • the limit parameter used in many read_* functions can now also be a regex pattern or a slice
  • New parameter in navis.resample_skeleton() use map_column to include arbitrary columns in the resampling
  • navis.prune_twigs() and navis.cable_length() now accept a mask parameter
  • General improvements to docs and tutorials

Fixes

  • Memory usage of Neuron/Lists is now correctly re-calculated when the neuron is modified
  • Various fixes and improvements for the MICrONS interface (navis.interfaces.microns)
  • navis.graph.node_label_sorting() now correctly prioritizes total branch length
  • navis.TreeNeuron.simple now correctly drops soma nodes if they aren't root, branch or leaf points themselves

Full Changelog: v1.7.0...v1.8.0

Version 1.7.0

18 Aug 14:50
Compare
Choose a tag to compare

With this release we integrate navis-fastcore into navis which contains a number of core functions re-implemented in Rust 🎉

For now this is a soft dependency but if you pip install navis-fastcore, navis will automatically use these improved functions under the hood, which can speed things up by up to 20x 🚀

In other news:

Breaking

  • plotting functions: dropped the cluster parameter in favour of an improved color_by logic (see below)

New

  • new method navis.NeuronList.add_metadata to quickly add metadata to neurons

Improved

  • navis.find_soma and navis.graph.neuron2nx (used under the hood) are now much faster
  • all I/O functions, such as navis.read_swc, now show which file caused an error (if any); original filenames are tracked as .file property
  • navis.NeuronList will only search the first 100 neurons for autocompletion to avoid freezing with very large lists
  • plotting functions: color_by now accepts either a list of labels (one per neuron) or the name of a neuron property
  • navis.subset_neuron is now faster and more memory efficient when subsetting meshes
  • navis.TreeNeuron.cable_length is now faster

Fixed

  • all I/O functions such as navis.read_swc now ignore hidden files (filename starts with ._) instead of breaking
  • navis.read_swc now actually uses the soma label (if present) to set the soma node
  • fixed a bug in plotting when using vertex colors
  • fixed the progress bar in navis.interfaces.neuprint.fetch_mesh_neuron
  • fixed a bug in navis.synblast that caused multiprocessing to fail (pickling issue with pykdtree)
  • navis.interfaces.neuprint.fetch_mesh_neuron will now ignore the lod parameter if the data source does not
    support it instead of breaking
  • fixed a number of depcrecation warnings in the codebase

Version 1.6.0

07 Apr 15:46
Compare
Choose a tag to compare

It has been a long time (7 months, to be precise) since the last release but we've not been idle!

Version 1.6.0 is chock-full with new features, improvements and fixes. Here are some of the highlights:

Breaking

  • with this release we've dropped support for Python 3.8 as per NEP 29
  • navis.write_swc no longer writes Dotprops

New Features

  • navis.read_parquet and navis.write_parquet let you read/write large set of skeletons or dotprops; note: these are experimental and the format specs might still change but feel free to take it for a spin
  • new navis.NeuronConnector class for creating connectivity graphs from groups of neurons with consistent connector IDs (e.g. from pymaid neurons)

Improvements

  • improved logic for splitting NBLASTs across multiple cores
  • i/o functions can now read directly from .tar or .tar.gz files (.zip was already supported)

Fixes

  • fixes to the neuPrint interface by @stuarteberg
  • plotting empty TreeNeurons no longer breaks things thanks to @floesche
  • reading large files (i.e. mostly meshes) directly from a URL should not break anymore

New Contributors

Full Changelog: https://navis.readthedocs.io/en/latest/source/whats_new.html
Commit history: v1.5.0...v1.6.0

Version 1.5.0

28 Jul 08:22
Compare
Choose a tag to compare

Changes:

  • 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

Version 1.4.0

21 Dec 11:43
Compare
Choose a tag to compare

This is release contains various improvements and fixes. Importantly, it fixes a couple incompatibilities with numpy 1.24.0.

Even though this is not a new major version there is one breaking change:

navis.flow_centrality was renamed to navis.synapse_flow_centrality and a new non-synaptic navis.flow_centrality function was added. This also impacts the method parameter in navis.split_axon_dendrite!

Please see the change log for other changes.

Version 1.3.1

06 Jun 16:58
Compare
Choose a tag to compare

This is a small release containing 2 fixes:

  1. Fixes a bug with the most recent version of dill which impact parallel processing.
  2. In Jupyter, NBLAST now uses classic progress bars. This is not ideal and all progress bars are printed on top of another but the widgets seem to be entirely broken with the most recent version of tqdm.

Version 1.3.0

10 May 16:30
Compare
Choose a tag to compare
  • 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 @clbarnes): see the new tutorial
  • Bayesian implementation of the network traversal model: navis.models.network_models.BayesianTraversalModel (big thanks to @aschampion)
  • 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

Version 1.2.1

25 Feb 16:16
Compare
Choose a tag to compare

Small fix for split_axon_dendrite.