napari 0.3.7#
We’re happy to announce the release of napari 0.3.7! 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. This release contains two major new experimental features — a standalone bundle and asynchronous rendering, see below. We deeply appreciate any bug reports at napari/napari#choose.
Highlights#
With this release, we are launching an experimental standalone app (#1289). You can find it on our GitHub releases page (scroll down to “Assets” for this release). You can install reader/writer plugins from the app itself, so you can use the napari app to view many different kinds of datasets!
We also have an also-experimental, work-in-progress asynchronous rendering mode (#1565, #1583) to make the viewer interactivity smoother with slow-loading datasets, such as those backed by remote data or by dask computation. To opt into this, set the NAPARI_ASYNC environment variable to anything other than “0”. 3D rendering and multiscale are currently not supported. If you encounter an issue please check the async label on the repository to see if your issue is known.
Scrolling through n-dimensional datasets has become a bit more convenient: scroll to zoom, as always, but hold Ctrl (Cmd on Mac) while scrolling to move up and down a stack. (#1434, #1525)
This is in addition to many bug fixes and usability improvements — see below for the full list! Thank you to everyone who contributed to this release!
New Features#
Add briefcase app bundles to release assets (#1289)
Evented list (#1444)
Async rendering part 1 (#1565)
Async rendering part 2 (#1583)
Add SELECTED color-mode for individual label visibility (#1555)
Improvements#
auto generate view_* methods (#978)
Add world extents for layers (#1360)
Reorganize _qt module (#1431)
Add CTRL+ Mouse Scroll to scroll through last active stack (#1434)
Perfmon System version 2 (#1453)
Add global exception catching in Qt (#1476)
Close napari window when KeyboardInterupt (#1494)
Add error dialog for global error handler (#1511)
Add simple colormap object (#1523)
Better support for multiple translated arrays (#1539)
Improve Shapes layer performance (#1561)
Add support for deprecate signal in EmitterGroup (#1582)
Bug Fixes#
Prevent napari crashing after layer is dragged into trash (#1487)
Fix URL parsing scheme for view_path (#1515)
Fix potentially-confusing typo in comment (#1521)
Fix magic_name and kwargs propagation with view_path (#1522)
Address trackpad support for dim scrolling (#1525)
Changed class evaluation from
type
toisinstance
(#1528)Add test for theme changing (#1534)
Addressed colormap control color with same label color (#1537)
Fix menubar raise on mac by running with framework python (#1554)
Fix typo in perfmon patcher (#1560)
Fix import plugin when opening dialog (#1578)
Longer spinbox (#1580)
Minor updates to custom mouse functionality examples (#1592)
Do not raise viewer in IPython with pre-existing event loop (#1595)
Restore multiple command-line arguments (#1597)
Lock briefcase version (#1599)
Build Tools#
Points slicing benchmark (#1435)
Fix 0.3.6 release notes to indicate reversions (#1498)
format imports with isort (#1505)
Update flake8 from 3.7.9 to 3.8.3 (#1506)
Add plausible to docs (#1526)
Clean up all warnings in tests (#1538)
Filter all nan axis warning on layer extent (#1540)
pin conda in CI tests to 4.8.3 (#1541)
CI cache reset (#1548)
Fix perfmon for qt changes, add counters, cleanup (#1550)
Revert “CI cache reset” (#1551)
Add fingerprint script to pip caching (#1553)
Add Shapes benchmarks for interactions (#1563)
Exclude test_bundle.py from distribution (#1604)
Skip bundle test when setup.cfg is missing (#1608)
12 reviewers added to this release (alphabetical)#
Davis Bennett - @d-v-b
Draga Doncila Pop - @DragaDoncila
Fedor Korotkov - @fkorotkov
Genevieve Buckley - @GenevieveBuckley
Juan Nunez-Iglesias - @jni
Justine Larsen - @justinelarsen
Kevin Yamauchi - @kevinyamauchi
Kira Evans - @kne42
Nicholas Sofroniew - @sofroniewn
Philip Winston - @pwinston
Talley Lambert - @tlambert03
Ziyang Liu - @ziyangczi