napari: a multi-dimensional image viewer for Python
Bibliographic record
Abstract
napari 0.5.0 ⚠️ Note: these release notes are still in draft while 0.5.0 is in alpha/release candidate testing. ⚠️ We're happy to announce the release of napari 0.5.0! napari is a fast, interactive, multi-dimensional image viewer for Python. It's designed for exploring, annotating, and analyzing multi-dimensional images. It's built on top of Qt (for the GUI), VisPy (for performant GPU-based rendering), and the scientific Python stack (NumPy, SciPy, and friends). For more information, examples, and documentation, please visit our website: https://napari.org/ Highlights napari 0.5.0 is the beginning of an architectural overhaul of napari. The architecture improvements, which are still ongoing, enable more responsive asynchronous loading when slicing layers or panning and zooming in multiscale 2D layers (#5816). Other architectural changes, refactoring napari on top of app-model, have enabled us to (finally 😅) implement NAP-6, which allows plugins to organize their commands in defined menus in the napari menubar and application. Please read NAP-6 for all the juicy details, including how to request more menus if the existing ones don't meet your needs. 📋 (#7011) Another important development for plugins is that we have added fields for axis names and physical units in layers (#6979). If you implement a reader plugin, you can now specify the names of the axes in the data that you are reading in, and the physical units of the scale and other transformations. Currently, napari is not using this information, but we will in upcoming versions, so plugins should start providing this information if they have it. There's plenty of new features, too, including a polygon drawing tool when painting labels (#5806), pinch-to-zoom (#5859), better ways to show/hide individual layers when exploring your data (#5574) (#5618), creating a layer from an image or URL in your clipboard (#6532), copy/pasting spatial metadata (scale, translate, etc) between layers (#6864) and more: Over 20 new features in all and over 100 bug fixes and improvements! Please see below for the full list of changes since 0.4.19. New Features Add layer slicer base class for async slicing (#5170) Feature: add layer contextual menu to hide not-selected layers (#5574) Feature: alt-click visibility eye to toggle show just that layer (hide others) (#5618) Feature: Add action to set current label to background (with keybinding) (#5672) Use Dims margin in layer slicing code (#5697) Changing brush size with mouse movement while holding specified modifiers (#5753) Feature: polygon drawing in the Labels layer (#5806) Replace old async loading with new approach (#5816) Enable pinch-to-zoom with vispy 0.13+ (#5859) Keep shading light for Surface fixed relative to camera (#5893) Use Request/Response pattern for Vectors layer (#5918) Lock dimensions / axes while rolling (#5986) Added support for features in surface layers (#6515) Add creating image from clipboard (#6532) Add viewer keybinds to select & show only next/prev layer and to toggle visibility of unselected (#6590) Show About napari action on macOS application menu (#6666) Add points/shapes highlight color setting to Appereance settings and preference page (#6689) Include features index as key in FormatStringEncoding (#6703) Reset all dims to be rollable (#6797) implement copying spatial information via clipboard (#6864) Add axis_labels and units to layers and transforms (#6979) Alpha implementation of NAP-6 (#7011) Better export of figure-quality renderings from the canvas (#6730) Improvements use app-model for file menu (#4865) Show platform specific shortcut while editing. (#5064) Add secondary keybindings to restore mnemonic (non-numeric) shortcuts in layers (#5155) Add loading layer UI indicator (#5342) Clean up layer slicer before integration with viewer (#5435) Thick Slices (Dims as nD-box instead of nD-point) (#5522) Add font-size to theme (#5607) Feature: Background color swapping for the Label layer (extends #5672) (#5744) Improve error message when user passes nonexistent plugin (#6016) Reduce comparison in evented model (#6075) Expose theme font_size as an Appearance setting (#6113) ENH Adds LayerList context (#6165) Add layer name to QFileDialog when only one layer is selected for saving. (#6360) Use blobs instead of random integers (#6527) Show notification when using shortcut to change current selected label to largest used label plus one (#6546) Keep vertex selection after shape drawing finishes (#6640) Add GL_MAX_3D_TEXTURE_SIZE to napari --info (#6645) [ENH] use imageio.v3 for builtins io imread (#6677) Make new labels dtype configurable (#6695) Add Optional section to napari info with numba and triangle (#6710) [ENH] Add repeatable kwarg to register_viewer_action and use it for slider left/right keybind (#6769) "Shapes to Labels", "(float)Image to Labels": Don't pop layer being converted, append new one (#6859) [enh] Transform mode: shift to snap layer rotation to 45 deg (#6948) [UX/UI] flip the default for the reader plugin dialog to not have the Remember box checked (#7016) Extend "No Qt bindings found" error message with details about conda (#6095) Add convenience input validation for Labels colormaps (#7025) [UI/UX] Updated polygon button icon for Shapes & Labels regular polygon tool (#7019) Performance Do not copy label data when not necessary (#5542) Throttle mouse move event to fix high-polling-rate input (#5710) Speed up symbols validation in points layers (#6277) Making Tracks layers creation and update faster (#6671) Making Points layer creation and update faster (#6727) Remove unnecessary early call to np.asarray before thick slicing (#6735) perf: remove extra highlight calls (#6893) Bug Fixes Quick silo dev version settings in a dev sub-directory (#5322) Fix conda avaliability check (#5496) Bugfix: PR build of docs doesn't use proper napari versioning for substitutions (#5557) fix various keybinding/shortcut bugs (#5604) Bugfix (macOS): Remove PYTHONEXECUTABLE from env for conda installs (#5622) Fix waiting for multiple signals in threading progress bar test (#5637) Update the sliders axis_label widget to be a QElidingLineEdit instance (#5665) Fix usage of closed interval dims and unify extents calculations (#5751) Add aditional guard at the end of test_worker_may_exceed_total (#5781) Return full colormap dict in get_state (#5782) Add test coverage for async slicing of points and fix rounding bug (#5783) Add pydantic<2 constrains to plugin install (#5785) Readd exception to event proxy (#5797) Bugfix: do not allow drawing while adjusting the brush size with the mouse (#5842) Amend pydantic constraints in the plugin manager (#5851) Bugfix: Ensure bgcolor is set in init of VispyCanvas (#5970) Make sure open_sample respects reader_plugin for sample URIs (#5971) Async refresh when experimental setting is on (#6008) Add validation logic for Dims.last_used to prevent slider selection errors when rolling dims (#6024) Update layer's loaded state before vispy and thumbnail (#6026) Fix string list JSON formatting (#6033) Remove 3D multiscale warning (#6070) A few small improvements to async slicing (#6080) Add toggle status view menu items (#6137) Fix PR html stripping workflow (#6139) Add test on top of #6142 (#6167) Bugfix: ensure thumbnail represents canvas when multiscale (#6200) Fix (N>4)D shapes. (#6210) Fix typing checks in PRs (#6230) convert Color to string (#6243) Fix link to artifacts in update dependecies comment (#6270) Fix setting shortcuts with modifier keys and only one modifier key as a shortcut on Windows/Linux (#6330) Pass key event from Main window to our internal mechanism (#6419) Restore old breakpointhook after console import in tests fixture (#6436) FIX: Remove None default from _remove_dock_widget (#6481) Fix crash on python -m napari (#6484) Bugfix: ensure gamma and opacity are floats (#6498) Restore quit shortcut (#6526) Fix contrast limits for single layer numpy case. (#6535) Fix check if plugin is available from conda (#6545) Set default dtype for empty _ImageSliceResponse (#6552) Ensure consistent layer tooltip (#6589) Make Shift-Up/Down in layer list expand and contract selection (#6606) Remove scaling of highlight width, fix showing shapes for uneven coordinates (#6629) Fix decomposition function to properly work with more than 2x2 matrices (#6636) Remove if that prevents from setting gamma in constructor (#6650) [Bugfix] update selection ctx keys before showing LayerList context menu (#6664) Fix offset in rendering of TransformBox of image/labels layers (#6679) Exclude size and symbol pts attributes from linking, because they depend on number of points (#6687) Fix shape layer infinite edge bug (#6706) [Dockerfile] update pip before installing napari (#6728) Fix npe1 samples menu building (#6739) [Maint, CI] Fix upgrade_test_constraints.yml to use pyproject.toml (#6749) Update description of a, shift-a points keybinds to reflect toggle (#6750) [Dockerfile] add missing opengl and x11 packages to the base image (#6754) Keep qtpy in headless tests and fix resulting failure (#6764) Fix sync slicing of not yet visible layers (#6766) Remove compression scheme when saving boolean arrays as tif (#6807) Solving visual glitch when displaying tracks with missing timepoints (#6808) Fix napari.utils.misc.is_iterable function (#6811) Remove redundant _view_actions.py (#6821) refresh when canvas_size_limits are changed (#6834) Fix selection size when canvas limits are set for Points (#6853) Ensure bounding_box lines stay up to date between 2D and 3D (#6855) Fix zarr reading with unrelated files (#6857) Two bug fixes concerning 4D surfaces, ie surfaces with (t, z, y, x) vertices (#6874) [bugfix] Drop if guard on notification_manager to enable show_info from Jupyter (#6882) [bugfix] Warn if float image data being saved to non-ti
Fetched live from OpenAlex and de-inverted. Abstracts are not stored in this database: the inverted indexes are 8.6 GB of the frame’s 9.3 GB of text, and the host has 13 GB free.
How this classification was reachedexpand
Full frame distilled prediction
Teacher imitationNot calibrated prevalence, not ground truth. Human validation pending. Learned from the 10,348 direct Codex labels and 10,348 direct Gemma labels. Candidate is the union of thresholded teacher heads; consensus is their intersection. These outputs are machine_predicted_unvalidated and are not human labels or direct frontier model labels.
Codex and Gemma teacher scores by category
| Category | Codex | Gemma |
|---|---|---|
| Metaresearch | 0.000 | 0.000 |
| Meta-epidemiology (narrow) | 0.000 | 0.000 |
| Meta-epidemiology (broad) | 0.000 | 0.000 |
| Bibliometrics | 0.000 | 0.000 |
| Science and technology studies | 0.000 | 0.000 |
| Scholarly communication | 0.000 | 0.000 |
| Open science | 0.001 | 0.001 |
| Research integrity | 0.000 | 0.000 |
| Insufficient payload (model declined to judge) | 0.011 | 0.011 |
Machine scores (provisional)
The two teacher heads of the student model, read on this work. A score orders the frame for review; it never asserts a category, and the validation status ships verbatim with every row.
Baseline scores from an immature model (maturity gate not passed, 7 training rounds). Scores rank; they never assert a category.
score_only:v0-immature-baseline · verbatim from the scoring run: score_only means the number may rank works, and no category label ships from itClassification
machine, unvalidatedMachine predicted; both teacher heads agree on what is shown here.
How this classification was reached, model by model and score by score, is at the end of the page under "How this classification was reached".