Skip to content

Stoner 0.12.0a6

Pre-release
Pre-release

Choose a tag to compare

@gb119 gb119 released this 30 Oct 21:21
· 1 commit to devel since this release

Stoner 0.12.0a6 adds ImageFile.plot, the first of the planned image plotting, ROI and fitting accessor alphas.

Changes

  • Display images through image.plot() or .image(), and use named .imshow(), .pcolormesh(), .contour() and .hist() methods. Every drawing method returns its primary Matplotlib Axes and does not show or save automatically.
  • Use the same styles, layout contexts, formatters, explicit Axes targets and live property forwarding as Data.plot: for example, image.plot.title = "Measurement" or image.plot.xlabel("Position"). Shared implementation now supplies these services to both accessors without introducing table-only methods on images.
  • Add Stoner.enums.CoordinateMode for native calibrated coordinates and explicit local pixel indices, retaining the corresponding strings. Coordinate names/units provide labels; crop/frame offsets, axis direction and raw intensity units are preserved. Uniform images use pixel-centre-derived extents, while non-uniform grids use meshes without resampling. Explicit .imshow() requires uniform coordinates.
  • Exclude masked/non-finite pixels from display limits and histograms. Support temporary exact-shape Boolean or aligned xarray selections, optional weighted histograms, and coloured exclusion overlays with matching geometry. Rendering does not modify scientific values, exclusions, calibration or metadata.
  • Add a calibrated image/contour/mesh/histogram guide and executable example, three retained figure assets, 41 image regression tests and image plotting probes in installed-distribution validation.
  • Document the subsequent ImageFile.roi and ImageFile.fit milestones, including plane/quadratic background flattening. These accessors are not implemented in this alpha. The release plan calls for a separate alpha for each accessor, API lock before beta and full API freeze before RC.

Compatibility and requirements

Legacy image.imshow() retains its Figure return and options. The new accessor returns Axes; use ax.figure when a Figure is needed. Existing widgets, numerical image.hist()/profile extraction and bulk image display retain their existing paths. Individual ImageFile regions and stack frames can use the accessor; ImageFolder/ImageStack bulk plotting is not extended by this release.

Python 3.12 or newer and stonerplots 1.9.8 or newer remain required. Runtime dependencies are unchanged from 0.12.0a5. General 2D coordinate maps are not supported by the new grid resolver; choose compatible separable coordinates or explicit pixel mode. There are no new deprecation warnings or legacy wrapper removals.

Validation

Local Windows Python 3.14 validation passed 1,801 tests excluding network/OCR, plus the network fitting/plotting example separately. All 84 offline documentation examples were exercised. The cached Sphinx build passed with 62 warnings and no unexpected warnings, missing dynamic Data methods or removed API objects against the reviewed Windows baseline. The guide, new scientific figure and API link were inspected. New modules/tests passed Ruff checks. Manual live GUI/clipboard behaviour and physical instrument compatibility were not newly validated.

Release source: 3d72b7047994af54307d2234c5e77e79e837fb23.

Hosted release-commit checks:

All required release-commit gates passed; no gate was waived.
Each full-matrix cell passed 1,804 tests.

Publication

  • PyPI wheel and sdist are public. The downloaded wheel passed the repository's installed-package resource/numerical/plotting checks, including the new ImagePlotter/property/context probes, from a temporary installation outside the checkout.
  • PyPI/Conda deployment passed, including Conda's installed import/version test. noarch/stoner-0.12.0a6-py_0.conda is present in the public phygbu main-channel index.
  • Release documentation CI passed. Read the Docs detected the correct tag/SHA but still reports the version inactive/unbuilt; maintainer activation and a versioned build remain necessary.
  • Coverage checks and published Python/dependency/GPLv3/repository metadata checks passed. Zenodo archived the immutable tag as DOI 10.5281/zenodo.23820651.