Skip to content

v3.23.0

Choose a tag to compare

@github-actions github-actions released this 27 May 23:31
· 68 commits to main since this release

v3.23.0 (2026-05-27)

✨ Features

  • io: allow keyword arguments to be dispatched to identify or load_single based on their signatures (645fa61)

    The previous behavior of the load function was to pass all additional keyword arguments to the identify method of the active loader. Keyword arguments to load_single had to be passed through the load_kwargs argument. To provide more flexibility and allow for more intuitive usage, load now automatically detects which keyword arguments are accepted by identify and load_single and dispatches them accordingly. If a keyword argument is accepted by both methods, it is passed to identify by default, but can still be forced to go to load_single using the load_kwargs argument.

  • 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 like tools[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 chaining children, like tools[i].children[j].children[k]. Type tools[i].children to 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 with erlab.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.qsel accessor now supports mean, minimum, maximum, and sum reductions through qsel.mean/min/max/sum helpers. qsel.average remains available as an alias for qsel.mean. They can also be selected with the func argument to qsel.

  • 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 Axis updates 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 Workspace in 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 .itws workspace file. Dask-backed data can be loaded in to memory with Load 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 .itws file 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)

  • ftool: update plots when using fit × 20 (#341) (4538b2d)

  • 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 Cocoa QImage::toCGImage crash triggered by Plot 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 .itws files (c4c9914)

♻️ Code Refactor

  • imagetool: simplify Select Data row controls (#345) (ce2b0b0)

  • imagetool: move rotation guidelines to View menu (b955ee9)

    Although it was initially added to the Edit menu, the rotation guidelines are more appropriately categorized under the View. This change moves Rotation Guidelines from Edit to View.

  • interactive: improve menu action labels and icons for clarity and consistency (9ad2def)

  • manager: clarify menu action names (ffb2964)

    Rename manager file-menu actions so .itws workspace handling is the primary open flow: Open Workspace... now owns the Ctrl + O shortcut, and data loading is renamed to Add Data Files....

[main 08d4151] bump: version 3.22.0 → 3.23.0
3 files changed, 19 insertions(+), 3 deletions(-)