v3.23.0
v3.23.0 (2026-05-27)
✨ Features
-
io: allow keyword arguments to be dispatched to
identifyorload_singlebased on their signatures (645fa61)The previous behavior of the
loadfunction was to pass all additional keyword arguments to theidentifymethod of the active loader. Keyword arguments toload_singlehad to be passed through theload_kwargsargument. To provide more flexibility and allow for more intuitive usage,loadnow automatically detects which keyword arguments are accepted byidentifyandload_singleand dispatches them accordingly. If a keyword argument is accepted by both methods, it is passed toidentifyby default, but can still be forced to go toload_singleusing theload_kwargsargument. -
manager: improve general quality of generated code (6db3932)
Cleaned up useless intermediate variables and relay assignments in generated code across multiple tools.
-
io.plugins.hers: add angle conversion and B-field correction (#361) (81d3fbe)
ALS BL10.0.0.1 data is now automatically converted to angles upon loading. The loader also tries to automatically correct warping due to small magnetic fields for maps.
-
manager: add provenance-aware operations in console (#357) (b0b6959)
ImageTool Manager now supports provenance-aware operations between multiple tools from both the console and UI actions. With this addition, users can conduct complex analysis within the GUI and still keep provenance of the exact steps required to reproduce results from raw data.
In the console,
tools[i]now acts similar to a DataArray, so just typing expressions liketools[0] - tools[1]can create ImageTools with preserved parent history. Complex expressions that use xarray and numpy methods are also supported.ImageTools created this way records each input’s history and the code used to create the new tool. One use case would be assigning coordinates from one tool to another, e.g.
tools[0].assign_coords(tools[1].eV), which creates a new tool with the same data but updated coordinates and provenance. These tools are also reloadable, enabling complex real-time data analysis without external scripts.Concatenation also uses the same provenance path as console-derived results, so that where the concatenated data came from is recorded in the provenance of the resulting tool.
Also enables access to child ImageTools from the console using
tools[i].children[j]. Nested children can be accessed by chainingchildren, liketools[i].children[j].children[k]. Typetools[i].childrento see a summary of children. -
imagetool: add leading edge extraction dialog (#355) (a28de00)
ImageTool now includes an
Edit → Leading Edge…dialog for calculating leading-edge positions witherlab.analysis.interpolate.leading_edge. Users can choose the dimension, fraction of the maximum, and search direction. -
analysis.interpolate: support leading edge axis selection (#353) (458c703)
Allows selecting dimension and direction for leading edge extraction.
-
qsel: add min/max/sum aggregation (#351) (3a27026)
The
xarray.DataArray.qselaccessor now supports mean, minimum, maximum, and sum reductions throughqsel.mean/min/max/sumhelpers.qsel.averageremains available as an alias forqsel.mean. They can also be selected with thefuncargument toqsel. -
imagetool: share axis inversion by dimension (#350) (1c915d6)
ImageTool now treats axis inversion as shared state for each data dimension, matching shared manual limits. Inverting an axis from a plot context menu or from
View → Invert Axisupdates every plot showing that dimension. It is now also undo/redoable. -
imagetool: select variables from Datasets and DataTrees (#346) (45cc30e)
When opening data structures containing multiple DataArrays, ImageTool now prompts the user to select which of the data variables to open.
-
imagetool: better history entries (cc7b2b0)
History entries are more descriptive. Also combines multiple operations into one entry if they are performed in quick succession.
-
imagetool: add selection dialog (8f929bf)
Add
Select Data…to the ImageTool Edit menu for building validated xarray selections without writing free-form code. The dialog supports per-dimension qsel, sel, and isel point/range selectors, previews the resulting shape, and can copy executable code.Although it is easier to directly select slices from the right-click context menu of each plot, this is not always possible (e.g. for 4D data) and the dialog provides a more comprehensive interface for building complex selections.
-
imagetool: add a toggle for controls visibility (3f81f9d)
Adds a new menu action to toggle the visibility of the ImageTool controls.
-
manager: add menu item that shows the current workspace properties, including path and file status (46c4055)
-
manager: add right-click menu items to Windows taskbar icon and macOS dock icon for standalone installations (73ec9d2)
-
manager: add "Open Recent" menu with recently used workspace files (1b2e18b)
-
manager: add workspace offload for ImageTool data (70f15ce)
Replace the old Archive/Unarchive workflow with
Offload to Workspacein the ImageTool manager. The new action saves the workspace when needed, frees selected in-memory ImageTool data, and reconnects it as dask-backed data from the.itwsworkspace file. Dask-backed data can be loaded in to memory withLoad Into Memory. Additionally, user-configured chunk size edits are now saved into the workspace file so reloaded data keeps the intended chunk layout.
🐞 Bug Fixes
-
imagetool: ensure filter dialogs generate provenance and copy code (1ae87e2)
-
ftool: properly handle coordinates with spaces (#358) (eff9b96)
-
interactive: preserve exact float spinbox display (#356) (aeae172)
Some spinboxes were rounded to 15 significant digits, which may have reduced precision in some cases.
-
imagetool: handle dropped workspace load failures (#354) (3a0e7ee)
Fixes an issue where drag-and-dropping a
.itwsfile into the manager window would sometimes fail. -
imagetool: preserve full precision in numeric entries (#352) (cd38fa1)
Fixed an issue where coordinate data or selection argument inputs were rounded to the spinbox display precision.
-
imagetool: guard unsafe normalize and display values (#349) (0ae5b24)
ImageTool now treats invalid or rendering-unsafe values as missing. Infinite values and extreme finite display outliers no longer blow up colormap generation or crash rendering.
Normalize now returns NaN where area or range denominators are non-finite or effectively zero, instead of dividing by those values and producing unusably large results.
-
manager: fixes an issue where the manager would sometimes crash after saving (#348) (2ff502b)
-
imagetool: fix all-NaN selections after ImageTool coordinate edits (#344) (d38a398)
Tools and ImageTool windows opened from cursor, bin, or crop selections now refresh using the same selected positions on the current source data. This fixes cases where refreshing or extracting selected data returned all-NaN values after
Edit → Edit Coordinates, even when no crop was applied. -
manager: group watched badges by source (#343) (a320b59)
Fixes a regression where watched variables from the same notebook will appear in different colors.
-
imagetool: properly link multiple cursor drag (0cb8982)
-
imagetool: fix inconsistent history entry creation behavior (92fd122)
-
imagetool: preserve manual manager row names on reload (e947e88)
Manually set row names in ImageTool Manager now remain stable when data is reloaded.
-
manager: preserve and restore links in workspaces (d1f8cb6)
-
imagetool: preserve associated coords with spaces in names on workspace save/load (6fcbd8b)
-
ftool: preserve transpose when updating data and restoring status (42ed880)
-
manager: show message while optimizing workspaces on quit (2853ef1)
-
manager: allow Reload Data from child tools (d41649e)
Reload Data now works from child tools and child ImageTool rows in the manager.
chore: fix bug
-
manager: avoid standalone macOS matplotlib cursor crash (85bfbb7)
Disable Matplotlib QtAgg cursor updates inside the packaged macOS ImageTool Manager before the console imports
matplotlib.pyplot. This avoids the Qt CocoaQImage::toCGImagecrash triggered byPlot with matplotlib. -
imagetool: show dask badges for child ImageTools (c34941a)
-
manager: preserve non-dask data after manager save (63a4d55)
Retains the chunked state of each ImageTool's data when saving a workspace, and ensures that non-dask data remains non-dask after saving and reloading a workspace.
⚡️ Performance
-
manager: improve saving performance on network drives (#360) (fef14e7)
-
imagetool: remove redundant computations for dask-backed data (25e1e4e)
-
manager: greatly speed up saving and loading
.itwsfiles (c4c9914)
♻️ Code Refactor
-
imagetool: simplify Select Data row controls (#345) (ce2b0b0)
-
imagetool: move rotation guidelines to
Viewmenu (b955ee9)Although it was initially added to the
Editmenu, the rotation guidelines are more appropriately categorized under theView. This change movesRotation GuidelinesfromEdittoView. -
interactive: improve menu action labels and icons for clarity and consistency (9ad2def)
-
manager: clarify menu action names (ffb2964)
Rename manager file-menu actions so
.itwsworkspace handling is the primary open flow:Open Workspace...now owns theCtrl + Oshortcut, and data loading is renamed toAdd Data Files....
[main 08d4151] bump: version 3.22.0 → 3.23.0
3 files changed, 19 insertions(+), 3 deletions(-)