napari: a multi-dimensional image viewer for Python
Bibliographic record
Abstract
napari 0.6.3 ⚠️ Note: these release notes are still in draft while 0.6.3 is in release candidate testing. ⚠️ Wed, Jul 23, 2025 We're happy to announce the release of napari 0.6.3! 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 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 A Zoom with a View 🔍 Pardon the play on words, but you can now zoom directly to a region of interest in the viewer by holding Alt and dragging with the mouse (#8004). The camera will pan and zoom to fit the selected region, making it much easier to focus on specific areas of your data. This feature works in both 2D and 3D views. Fine Tuning Thick Slicing from the GUI 📏 Thick slicing controls are now available in the GUI (#6146)! This allows you to project multiple slices together using different modes (sum, mean, max, and min) for better visualization of your multidimensional data. You can access the thickness controls by right-clicking on the dimension sliders to open a popup to change the margins either symmetrically or asymmetrical and projection mode settings are now available per layer in the layer controls widget. Windows: Access ~~Denied~~ Fixed 🪟 A critical Windows-specific bug that caused Access Violation errors has been resolved (#8122)! This longstanding issue would cause napari to stop displaying layers due to various events and often occurred at seemingly non-reproducible times, and required a full restart of napari. The fix ensures proper cleanup and syncing of GPU resources, also reducing memory usage on all platforms. If you were an effected user, you may recall it as Access Violation, 0x000000000000001C if triggered without a plugin, or 0x000000000000034C if triggered with a plugin. Improved PySide6 Support 🛠️ Napari now has improved support for PySide6 (#7887), resolving various compatibility issues and segfaults. This update enhances stability across platforms and prepares napari for the future as Qt5 approaches end-of-life. New Features Qt controls for thick slicing (#6146) Add automatic area and perimeter measurement for shapes + action (#7262) Tiling canvas overlays (#7836) Use information about units when calculate scale of layers when render (#7889) Add 'zoom-box' to the viewer (#8004) Add hot-reload for the devs (#8007) Add viewbox coordinates to events and Cursor (#8130) Improvements Allow use functions from PartSegCore-compiled-backend as numba alternative for data to texture mapping (#6617) Enable testing on recent PySide6 (#7887) Implement pasting spatial information into higher dimensions (#7973) Improve performance and memory usage of editing Shapes layer (#8006) [Update] Added remove and remove_selected in Shapes and Points (#8031) Colorblind friendly image sample of kidney and lily (#8090) Add Features using Features Table widget (#8093) Added fixed seed and tested the value. (#8097) Add keybinding (CtrlCmd-up/down) to select layer above/below (#8119) Performance Allow use functions from PartSegCore-compiled-backend as numba alternative for data to texture mapping (#6617) Bug Fixes ensure sync when taking a screenshot (#8064) Set the dimensions of the label equal to the maximum value of the layers world (#8098) Updated code to use current symbol and border width for new points. (#8102) Improve performance and memory usage of editing Shapes layer (#8006 again) (#8109) Prevent Windows Access Violation with GPU resource cleanup on layer removal (#8122) API Changes Add viewbox coordinates to events and Cursor (#8130) Documentation Update docs constraints and pyprojecttoml for npe2 (#8075) Typo ismhow -> imshow (#8084) Replace deprecated view_*() method from examples (#8091) Comment the HEX codes of each color theme and where they're used (#8099) New example for affine transformations in 3D using meshio and stl (#8103) Added a try it out now section to README.md for using uv. (#8107) Update README wording about scikit-image example (#8125) Autogenerate images of parts of the viewer (docs#621) Update instructions on how to update constraints files (docs#672) Updates to NAP-9: Multiple Views (docs#730) Update guides.md to add menu contribution guide (docs#747) Update building your first plugin guide (docs#753) Update version switcher for 0.6.2 (docs#754) Update Release Guide (docs#755) Fix information about site-packages directory (docs#756) Add empty release notes for 0.6.3 (docs#757) Add roadmap to sidebar links (docs#760) Refactor contributing guide landing page (docs#761) Reorganize homepage with grid columns (docs#767) Fix sidebar roadmap link (docs#768) Fix Image Annotation example (docs#777) Add website colors to community resources (docs#779) Update napari.org homepage to remove the imshow "button" (docs#780) Add instructions for headless docs build on Wayland (docs#781) Add module docstrings to scripts (docs#787) Update pre-commit config to add some python checkers (docs#788) Group event docs in order (docs#789) Add 0.6.3 release notes draft for release candidate (docs#792) Add "useful features" page (docs#796) Add introductory paragraph to starting an event loop api doc (docs#797) Other Pull Requests Add codespell support (config, workflow to detect/not fix) and make it fix few typos (#7619) Move export ROI and export figure implementations into QtViewer (#7950) [pre-commit.ci] pre-commit autoupdate (#8062) Block the recent pytest-qt version on python 3.10 to keep PySide2 support in testing. (#8067) Add configurable suffix for test artifacts (#8069) [Update] Added pop for Points and Shapes (#8072) Update coverage, hypothesis, ipython, pillow, psygnal, pytest-qt, tensorstore, xarray (#8073) [pre-commit.ci] pre-commit autoupdate (#8074) Move non-qt file actions from qactions module (#8076) Move more view actions from qaction to actions (#8077) Report benchmark on non skipped status (#8086) Enable SIM117 ruff rule (#8088) Remove dotenv from dev dependencies (#8089) Add deprecation warning for view_ functions (#8092) Revert #8006 Improve performance and memory usage of editing Shapes layer (#8104) Example from SciPy 2025 tutorial; image warping (#8111) Improve stability of tests by ensuring cleaning of QtViewer instances (#8113) Do not crash test with leaked graph if test failed (#8123) [pre-commit.ci] pre-commit autoupdate (#8124) Cleanup of test_qt_utils.py (#8129) Update triggered_target_build.yml regex to ensure we match on hyphen (docs#764) 13 authors added to this release (alphabetical) (+) denotes first-time contributors 🥳 Andrew - @ahuang11 + Carol Willing (docs) - @willingc Filippo Balzaretti (docs) - @FilBalza + Grzegorz Bokota (docs) - @Czaki Ian Coccimiglio - @ian-coccimiglio + Kanai Potts - @8bitbiscuit + Lorenzo Gaifas (docs) - @brisvag Lukasz Migas - @lukasz-migas Melissa Weber Mendonça - @melissawm Peter Sobolewski (docs) - @psobolewskiPhD Rahul Kumar - @rahul713rk rwkozar - @rwkozar Tim Monko (docs) - @TimMonko 19 reviewers added to this release (alphabetical) (+) denotes first-time contributors 🥳 andrew sweet - @andy-sweet Carol Willing (docs) - @willingc Constantin Aronssohn - @cnstt Daniel Althviz Moré - @dalthviz Davis Bennett - @d-v-b Draga Doncila Pop - @DragaDoncila Grzegorz Bokota (docs) - @Czaki Jacopo Abramo - @jacopoabramo jaime rodraguez-guerra - @jaimergp Juan Nunez-Iglesias - @jni Lorenzo Gaifas (docs) - @brisvag Lukasz Migas - @lukasz-migas Melissa Weber Mendonça - @melissawm Peter Sobolewski (docs) - @psobolewskiPhD Rahul Kumar - @rahul713rk rwkozar - @rwkozar Tim Monko (docs) - @TimMonko Wouter-Michiel Vierdag - @melonora Yaroslav Halchenko - @yarikoptic
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 machine prediction
Teacher imitationNot calibrated prevalence, not ground truth. Human validation pending. The Gemma side is a direct model label for every work in the frame, read from the title-only record. The Codex side is a classifier learned from the 10,348 direct Codex labels and calibrated to design-weighted sample rates; fields without enough sample support carry no Codex call. Candidate is the union of the two sides; consensus is their intersection. These outputs are machine_predicted_unvalidated and are not human labels.
Distilled classifier scores by category (both heads)
| Category | Codex | Gemma |
|---|---|---|
| Metaresearch | 0.002 | 0.005 |
| Meta-epidemiology (narrow) | 0.002 | 0.003 |
| Meta-epidemiology (broad) | 0.002 | 0.002 |
| Bibliometrics | 0.002 | 0.001 |
| Science and technology studies | 0.001 | 0.001 |
| Scholarly communication | 0.004 | 0.006 |
| Open science | 0.006 | 0.005 |
| Research integrity | 0.002 | 0.005 |
| Insufficient payload (model declined to judge) | 0.272 | 0.232 |
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; a candidate call from one source (direct Gemma or distilled Codex), not a consensus.
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".