Releases: navis-org/navis
Version 1.9.1
This minor version bump fixes a few smaller issues:
- MICrONS & H01 interfaces:
fetch_neurons
now accepts amaterialization
parameter that determines which materialization version is used for synapse and nucleus queries; defaults to "auto" which meansnavis
will try to find a materialization version matching the queried root IDsfetch_neurons
will now also assign soma positions for H01 neurons (see the.soma_pos
neuron property); previously this only worked for MICrONS neuronsdatastack="cortex65"
now points to the correct MICrONS datastack
CloudVolume.mesh.get_navis
(seenavis.patch_cloudvolume
) now accepts aprocess
(default isFalse
) 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
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
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 tocn_layout
(matching e.g. other parameters such ascn_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 now3.9
(was3.6
) - The
plotly
backend is not part of a minimal install anymore (still installed vianavis[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 todict.get
NeuronLists
now implement the|
(__or__
) operator which can be used to get the union of two [NeuronLists
]navis.NeuronList]Tree/MeshNeurons
,Volumes
andDotprops
now support addition/subtraction (similar to the already existing multiplication and division) to allow offsetting neuronsnavis.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
(defaultTrue
): determines whether legends is shownlegend_orientation
(defaultv
): 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 withmethods
3d
and3d_complex
- the
color_by
andshade_by
parameters now also work when plotting skeletons withradius=True
- new defaults:
radius="auto"
,alpha=1
,figsize=None
(use matplotlib defaults) - new parameters for methods
3d
and3d_complex
:mesh_shade=False
andnon_view_axes3d
- the
scalebar
andsoma
parameters can now also be dictionaries to style (color, width, etc) the scalebar/soma
- the
- 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 manyread_*
functions can now also be a regex pattern or aslice
- New parameter in
navis.resample_skeleton()
usemap_column
to include arbitrary columns in the resampling navis.prune_twigs()
andnavis.cable_length()
now accept amask
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 lengthnavis.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
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 improvedcolor_by
logic (see below)
New
- new method
navis.NeuronList.add_metadata
to quickly add metadata to neurons
Improved
navis.find_soma
andnavis.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 meshesnavis.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 withpykdtree
) navis.interfaces.neuprint.fetch_mesh_neuron
will now ignore thelod
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
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 writesDotprops
New Features
navis.read_parquet
andnavis.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. frompymaid
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
- @stuarteberg made their first contribution in #124
- @floesche made their first contribution in #125
Full Changelog: https://navis.readthedocs.io/en/latest/source/whats_new.html
Commit history: v1.5.0...v1.6.0
Version 1.5.0
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
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
This is a small release containing 2 fixes:
- Fixes a bug with the most recent version of
dill
which impact parallel processing. - 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
- 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
Small fix for split_axon_dendrite
.