napari: a multi-dimensional image viewer for Python

插件 Python(编程语言) 计算机科学 脚本语言 程序设计语言 万维网 过程(计算) 复制 软件工程 合并(版本控制) 宏 计算机图形学(图像) 工作流程 可视化 功能(生物学)
作者
Nicholas Sofroniew,Talley J. Lambert,Grzegorz Bokota,Juan Nunez-Iglesias,Peter Sobolewski,Andrew Sweet,Lorenzo Gaifas,Kira Evans,A. Yu. Burt,Draga Doncila Pop,Kevin Yamauchi,Melissa Weber Mendonça,Jaime Rodríguez-Guerra,Lucy Liu,Genevieve Buckley,Wouter-Michiel Vierdag,Ashley G. Anderson,Timothy R Monko,Carol Willing,Löıc A. Royer
出处
期刊:CERN European Organization for Nuclear Research - Zenodo [European Organization for Nuclear Research]
被引量:2
标识
DOI:10.5281/zenodo.18374344
摘要

napari 0.7.0 ⚠️ Note: these release notes are still in draft while 0.7.0 is in release candidate testing. ⚠️ Tue, Jan 27, 2026 We're happy to announce the release of napari 0.7.0! napari is a fast, interactive, multi-dimensional image viewer for Python. It's designed for browsing, annotating, and analyzing large 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). For more information, examples, and documentation, please visit our website, https://napari.org. napari follows EffVer (Intended Effort Versioning); this is a Macro release containing awesome new features, but may require dedication of some significant time when upgrading projects to use this version. Highlights More detail coming soon... Transition to npe2 plugin engine 🔌 In 0.6.0 we began the process of deprecating npe1 (napari-plugin-engine). In all 0.6.x releases, npe1 plugins were automatically converted to npe2 by default, and users could turn off the use_npe2_adaptor setting to continue using npe1 plugins without auto-conversion. In 0.7.0 this setting is being removed, and plugins will only continue to function if they can be auto-converted to npe2. Most plugins will be unaffected, but those that rely on import-time behaviour may not work as expected. If a plugin is relying on import-time behaviour, it may be able to replicate this using the new startup scripts functionality added in 0.6.5 (#8188). If you encounter conversion issues in a plugin you rely on, please contact the plugin authors to encourage them to migrate their plugin to the npe2 system. This change has been a long time coming, and it's allowed us to remove thousands of lines of tangled and confusing legacy code. Now that we have, it's unleashed the potential for massive improvements to file opening and saving in napari, and exciting new features for our plugin infrastructure. Stay tuned! For more details on this change and how it affects plugins, see the detailed guide. If you are a plugin author and your plugin is not yet npe2-compatible, please see our npe2 migration guide, and, if you encounter any issues, get in touch in our Plugins Zulip chat channel or by coming to one of our community meetings. Grid mode - bigger, better, faster 📈 If you've been playing with our new grid mode since 0.6.5, you may have stumbled into performance issues when progressively adding new layers to the viewer. Stumble no longer! Our grid mode is now wicked fast and buttery smooth 🧈. We've also fixed some issues with mouse interactions and deleting layers, so you can tile to your heart's content. Try it out: import napari viewer = napari.Viewer() # enable grid with stride 2 to get layers split two-by-two viewer.grid.enabled = True viewer.grid.stride = 2 # set the scale bar to gridded mode so it appears in each grid box viewer.scale_bar.visible = True viewer.scale_bar.gridded = True layers = viewer.open_sample('napari', 'lily') # enable color bars for layer in layers: layer.colorbar.visible = True What's in an angle? The truth! Fixed camera angles 🎥 If you've ever set up the camera to take that perfect publication-worthy photo of your data (and taken the time to query the camera angles), you may have noticed they seemed... off. That's because they were! Very... off. This was due to a long-standing bug in how we calculated our camera angles, fueled in part by some arcane vispy axis-swapping tomfoolery, and in part by napari's starting position of viewer.camera.angles = (0, 0, 90). Good news! With #8281, angles make sense again. The default camera angles are (0, 0, 0), and they move intuitively -- so viewer.camera.angles = (0, 0, 10) actually represents a 10 degree rotation around the 0th dimension. What a time to be alive! Old versions of napari: New and sane: All rotations are now right-handed (counterclockwise when the axis points towards the viewer), with automatic sign-flipping for flipped camera views. We've also removed the unwieldy to type (and confusing to reason about) quaternion2euler_degrees in favour of scipy's Rotation class. Now for the bad news... After many (and we do mean many) attempts, we realized we couldn't provide legacy conversion functions to get you to and from the original camera angles. Therefore, this is a breaking change. If you had scripts or notebooks setting up angles for screenshots, or if you've got workshop materials or tutorials with preset angles, they'll need to be updated. Any existing code using viewer.camera.angles = (z, y, x) will now produce a different view than before. ... Multilayer features table (#8189) Remove numpydoc as a base and testing dependency (#8338) Texture tiling (#8395) Fix overlay initialization and layer addition slowdown (#8443) Remove shim setting and warning dialog (#8448) Remove PySide2 support (#8450) Speed up the deletion of layers by deduplicating the function calls (#8479) Remove npe1 settings and theme loading (#8540) Use negative indexing for viewer dims axis labels (#8565) Add napari-metadata to napari dependencies (#8576) New Features Use information about units when calculate scale of layers when render (#7889) Welcome widget as an overlay (#8117) Multilayer features table (#8189) Better text overlay (and subclasses) (#8236) Allow create Shapes and Points per selected Layer (#8357) Updating selected_label by selected_data for Labels layer toward multiple selection (#8405) Use new logos! (#8457) Add napari-metadata to napari dependencies (#8576) Improvements perf: reallocate instead of clearing and repopulating set of selected points (#6895) Add a seed argument to built-in samples with random seeds (#8317) Enh: clarify Points selection keybinding behavior: select_in_slice not append by default, add new select_append_in_slice (#8339) Enh: Improve zarr reading by builtins (#8355) ENH: Speedup multiple shapes removal by concat'ing and np.deleting as a batch (#8375) Enh: Speed up shapes box selection by using bounding boxes and vectorization (#8378) Reordering default colormap to split channels (#8383) change default blending mode of images on split RGB (#8385) Texture tiling (#8395) Enh: simple speed up of Shapes _extent_data (#8401) Enh: performance optimizations to ShapeList outlines (#8403) Enh: Throttle shapes highlight (#8404) Set viewer dimension based on number of axis labels (#8436) Enh: Add label value to the labels tooltip (#8495) Use 10x10 pixels rect around mouse position to invalidate tooltip (#8500) Bump to vispy 0.16 (#8501) Enable antialiasing on all Lines (#8515) Avoid materializing property views when updating points highlight (#8517) Add caching of outlines to reduce delay on Shapes zoom (#8536) Don't warn user when a Zarr array with channel axis is passed (#8559) Use negative indexing for viewer dims axis labels (#8565) Performance perf: reallocate instead of clearing and repopulating set of selected points (#6895) ENH: Speedup multiple shapes removal by concat'ing and np.deleting as a batch (#8375) Enh: Speed up shapes box selection by using bounding boxes and vectorization (#8378) Enh: simple speed up of Shapes _extent_data (#8401) Enh: performance optimizations to ShapeList outlines (#8403) Enh: Throttle shapes highlight (#8404) Fix unnecessary overlay initialization on scenegraph update (#8423) Fix overlay initialization and layer addition slowdown (#8443) Cap point highlight size (#8504) Add caching of outlines to reduce delay on Shapes zoom (#8536) Fix the Shapes mode setter to use is_creating for _finish_drawing and clear selection when going to ADD* (#8551) Delay scipy imports until needed (#8561) Low hanging Labels painting performance improvement (#8592) Bug Fixes Fix camera angles‽ (#8281) bugfix & refactor: Use events for shape multiselection (#8332) Fix conversion of vector images to coordinates of vectors (#8366) initialize label selection spinbox to a correct value (#8382) Bugfix: fix erratic Shape sorting (#8408) Bugfix: update magicgui layer combobox if a layer is renamed (#8412) bugfix: Ensure that edge_width is accounted for when using polygon lasso (#8414) Fix Shapes thumbnail z ordering (#8417) Fix unnecessary overlay initialization on scenegraph update (#8423) Bugfix: update magicgui layer combobox if a layer is renamed using LayerList.renamed event (#8429) Fix overlay initialization and layer addition slowdown (#8443) Bugfix: ensure triangle colors are updated properly when using polygon lasso (#8469) Speed up the deletion of layers by deduplicating the function calls (#8479) Bump to vispy 0.16 (#8501) Cap point highlight size (#8504) Bugfix: recurse through sub-fields when making connections in EventedSettings Config (#8520) Fix dim order of rendering of 2D rgb data in 3D mode (#8522) Fix numpy warning for pure python edge triangulation (#8523) Do not use keyword argument when creating tooltip (#8528) Fix angle label values in ndim popup widget (#8535) Fix update of shape that lead to wrong rendering (#8543) Close proper window on Ctrl+W (#8548) Fix the Shapes mode setter to use is_creating for _finish_drawing and clear selection when going to ADD* (#8551) Do not expose legacy angle (#8557) Fix test on PySide6 by change mocking of qt methods (#8560) Account for tile2data in the Labels polygon overlay (#8563) ensure overlays are reused properly when gridded mode is enabled (#8569) Stop welcome screen time on hiding of QtWiewer (#8585) Fix Labels layer controls contiguous checkbox to initialize to the layer state (#8594) Build Tools Bump urllib3 from 2.5.0 to 2.6.0 in /resources (#8484) Migrate overlays to psygnal (#8492) Bump urllib3 from 2.6.2 to 2.6.3 in /resources (#8544) Add napari-metadata to napari dependencies (#8576) Plugin dependencies for docs generation (#8581) Documentation Create 3D_vectors_through_time.py (#8461) Fix

科研通智能强力驱动
Strongly Powered by AbleSci AI
科研通是完全免费的文献互助平台,具备全网最快的应助速度,最高的求助完成率。 对每一个文献求助,科研通都将尽心尽力,给求助人一个满意的交代。
实时播报
Bewater关注了科研通微信公众号
2秒前
科研通AI6.4的应助被城南采纳,获得10
3秒前
shell完成签到,获得积分10
3秒前
5秒前
木木木木完成签到,获得积分10
6秒前
芋圆发布了新的文献求助10
6秒前
科研通AI6.2的应助被Xxsxb采纳,获得10
7秒前
7秒前
大熊完成签到 ,获得积分10
8秒前
8秒前
熊猫海发布了新的文献求助10
9秒前
酷波er的应助被Lris_Gao采纳,获得10
9秒前
殷勤的菀发布了新的文献求助20
9秒前
自由滑大王完成签到 ,获得积分10
11秒前
11秒前
12秒前
好奇发布了新的文献求助10
12秒前
zxcvb发布了新的文献求助10
13秒前
今后的应助被zhouqianqian采纳,获得10
14秒前
syi完成签到 ,获得积分10
14秒前
风中面包发布了新的文献求助10
15秒前
SameOld完成签到,获得积分10
15秒前
16秒前
乡乡发布了新的文献求助10
18秒前
18秒前
20秒前
七七完成签到 ,获得积分20
20秒前
SameOld发布了新的文献求助10
21秒前
美好的向雁完成签到 ,获得积分10
22秒前
充电宝的应助被Mingjie123采纳,获得10
22秒前
xl完成签到 ,获得积分10
22秒前
科目三的应助被乡乡采纳,获得10
23秒前
23秒前
好奇完成签到,获得积分10
23秒前
科研通AI6.2的应助被马也采纳,获得10
23秒前
小mol仙完成签到,获得积分10
23秒前
洁净雨发布了新的文献求助30
24秒前
阿满完成签到,获得积分10
24秒前
Jasper发布了新的文献求助10
25秒前
科研通AI6.4的应助被愉快飞风采纳,获得10
25秒前
高分求助中
(应助此贴封号)【重要!!请各用户(尤其是新用户)详细阅读】【科研通的精品贴汇总】 10000
Essentials of Carbohydrate Chemistry and Biochemistry, 4th Edition 1000
Электротехническая система магнитожидкостной герметизации валов регулируемых электродвигателей 800
Guidelines for fracture-safe and fatigue-reliable design of steel structures 600
The Basics of Practical Optimization, Second Edition 600
Problems and Solutions for Integer and Combinatorial Optimization: Building Skills in Discrete Optimization 600
Organizational Behavior 510
热门求助领域 (近24小时)
化学 材料科学 医学 生物 纳米技术 计算机科学 工程类 有机化学 化学工程 生物化学 物理 复合材料 内科学 催化作用 光电子学 人工智能 细胞生物学 无机化学 物理化学 数学
热门帖子
关注 科研通微信公众号,转发送积分 7984037
求助须知:如何正确求助?哪些是违规求助? 9443913
关于积分的说明 21088683
捐赠科研通 7558601
什么是DOI,文献DOI怎么找? 3376732
关于科研通互助平台的介绍 2510760
邀请新用户注册赠送积分活动 2409926