Release Notes#

Changelog entries for the development version are available at

[UNRELEASED] (2024-04-15)#


  • EMD (Velox): Enforce setting identical units for the x and y axes, as convenience to use the scalebar in HyperSpy. (#243)

Bug Fixes#

  • EMD (Velox): Fix conversion of offset units which can sometimes mismatch the scale units. (#243)


  • Use ruff for code formating and linting. (#250)

0.4 (2024-04-02)#


  • Renishaw wdf:

    • return survey image instead of saving it to the metadata and add marker of the mapping area on the survey image.

    • Add support for reading data with invariant axis, for example when the values of the Z axis doesn’t change.

    • Parse calibration of jpg images saved with Renishaw Wire software. (#227)

  • Add support for reading emd Velox version 11. (#232)

  • Add making test data files section to contributing guide, explain characteristics of “good” test data files. (#233)

  • Quantum Detector reader: use timestamps to get navigation shape when the navigation shape is not available - for example, acquisition with pixel trigger or scan shape not in metadata. (#235)

  • Improve setting output size for an image. (#244)

Bug Fixes#

  • Fix saving hspy file with empty array (signal or metadata) and fix closing hspy file when a error occurs during reading or writing. (#206)

  • Fix saving ragged arrays of vectors from/to a chunked hspy and zspy store. Greatly increases the speed of saving and loading ragged arrays from chunked datasets. (#211)

  • Fix saving ragged array of strings in hspy and zspy format. (#217)

  • Fix setting beam energy for XRF maps in bcf files. (#231)

  • Quantum Detector reader: fix setting chunks. (#235)


  • Add POOCH_BASE_URL to specify the base url used by pooch to download test data. This fixes the failure of the package_and_test.yml workflow in pull requests where test data are added or updated. (#200)

  • Fix documentation links following release of hyperspy 2.0. (#210)

  • Run test suite on osx arm64 on GitHub CI and speed running test suite using all available CPUs (3 or 4) instead of only 2. (#222)

  • Fix deprecation warnings introduced with numpy 1.25 (“Conversion of an array with ndim > 0 to a scalar is deprecated, …”). (#230)

  • Fix numpy 2.0 removal (np.product and np.string_). (#238)

  • Fix download test data when using pytest --pyargs rsciio -n. (#245)

0.3 (2023-12-12)#

New features#

  • Add rsciio.set_log_level() to set the logging level of RosettaSciIO (#69)

  • Added the memmap_distributed() function for loading a memmap file from multiple processes.

    • Added the arguments distributed and metadata_file to the .mrc file reader for loading metadata save from DirectElectron detectors.

    • Speed up to the .mrc file reader for large .mrc files by removing the need to reshape and transpose the data. (#162)

  • Add support for saving lazy ragged signals to the zspy format. (#193)

Bug Fixes#

  • Fix error when reading CEOS Panta Rhei (PRZ) file with aperture "Out" (#173)

  • Improvement for installation without numba:

    • Fix tvips reader

    • Allow reading and writing EMD NCEM file

    • Fix running test suite without optional dependencies (#182)

  • Fix getting version on debian/ubuntu in system-wide install. Add support for installing from git archive and improve getting development version using setuptools fallback_version (#187)

  • Fix dwell_time reading in QuantumDetectors reader (.mib file). The dwell_time is stored in milliseconds, not microseconds as the previous code assumed. (#189)


  • Remove usage of deprecated distutils (#152)

  • Fix installing exspy/hyperspy on GitHub CI and test failing without optional dependencies (#186)

  • Unpin pillow now that imageio supports pillow>=10.1.0 (#188)

  • Simplify GitHub CI workflows by using reusable workflow (#190)

0.2 (2023-11-09)#

New features#

Bug Fixes#

  • Fix saving/reading ragged arrays with hspy/zspy plugins (#164)

  • Fixes slow loading of ragged zspy arrays (#168) (#169)

Improved Documentation#

  • Improve docstrings, check API links when building documentation and set GitHub CI to fail when link is broken (#142)

  • Add zenodo doi to documentation (#149)

  • Update intersphinx mapping links of matplotlib/numpy. (#150)


  • Add option to show progress bar when saving lazy signals to hspy/zspy files (#170)

  • Make numba and h5py optional dependencies to support RosettaSciIO on pyodide and PyPy (#180)


  • Remove deprecated record_by attribute in hspy/zspy, (#143)

  • Add sidpy dependency and pin it to <0.12.1 as a workaround to fix pyusid import (#155)

  • Update hspy/zspy plugins to new markers API introduced in HyperSpy 2.0 (#164)

  • Pin pillow<10.1.0 until imageio supports newer pillow version - see imageio/imageio#1044 (#175)

  • Update the test suite and the CI workflows to work with and without exspy installed (#176)

  • Add badges that became available after first release (#177)

0.1 (2023-06-06)#

New features#

  • Add support for reading the .xml-format from Horiba Jobin Yvon’s LabSpec software. (#25)

  • Add support for reading the .tvf-format from TriVista. (#27)

  • Add support for reading the .wdf-format from Renishaw’s WIRE software. (#55)

  • Added subclassing of .sur files in CL signal type and updated metadata parsing (#98)

  • Add optional kwarg to tiff reader multipage_as_list which when set to True uses pages interface and returns list of signal for every page with full metadata. (#104)

  • Add file reader and writer for PRZ files generated by CEOS PantaRhei (HyperSpy #2896)

Bug Fixes#

  • Ensure that the .msa plugin handles SIGNALTYPE values according to the official format specification. (#39)

  • Fix error when reading Velox file containing FFT with an odd number of pixels (#49)

  • Fix error when reading JEOL .pts file with un-ordered frame list or when length of frame_start_index is smaller than the sweep count (#68)

  • Fix exporting scalebar with reciprocal units containing space (#90)

  • Fix array indexing bug when loading a sur file format containing spectra series. (#98)

  • For more robust xml to dict conversion, convert_xml_to_dict is replaced by XmlToDict (introduced by PR #111). (#101)

  • Fix bugs with reading non-FEI and Velox mrc files, improve documentation of mrc and mrcz file format. Closes #71, #91, #93, #96, #130. (#131)

Improved Documentation#

  • Consolidate docstrings and documentation for all plugins (see also #47, #59, #64, #72) (#76)

  • Remove persistent search field in left sidebar since this makes finding the sidebar on narrow screens difficult. Set maximal major version of Sphinx to 5. (#84)


  • Remove deprecated record_by attribute from file readers where remaining (#102)


  • Recognise both byte and string object for NXdata tag in NeXus reader (#112)

API changes#

  • Move, enhance and share xml to dict/list translation and other tools (new api for devs) from Bruker._api to utils: utils.date_time_tools.msfiletime_to_unix function to convert the uint64 MSFILETIME to datetime.datetime object. function to sanitize some MSXML generated xml where comma is used as float decimal separator. Xml to dict/list translator class with rich customization options as kwargs, and main method for translation dictionarize (#111)


  • Initiate GitHub actions for tests and documentation. (#1)

  • Initiate towncrier changelog and create templates for PRs and issues. (#3)

  • Add github CI workflow to check links, build docs and push to the gh-pages branch. Fix links and add EDAX reference file specification (#4)

  • Add azure pipelines CI to run test suite using conda-forge packages. Add pytest and coverage configuration in pyproject.toml (#6)

  • Fix minimum install, add corresponding tests build and tidy up leftover code (#13)

  • Fixes and code consistency improvements based on analysis provided by (#23)

  • Added github action for code scanning using the codeQL engine. (#26)

  • Following the deprecation cycle announced in HyperSpy, the following keywords and attributes have been removed:

  • Unify the format_name scheme of IO plugins using name instead and add name_aliases (list) for backwards compatibility. (#35)

  • Add drone CI to test on arm64/aarch64 platform (#42)

  • Unify naming of folders/submodules to match documented format name (#81)

  • Add black as a development dependency. Add pre-commit configuration file with black code style check, which when installed will require changes to pass a style check before commiting. (#86)

  • Add support for python-box 7 (#100)

  • Migrate to API v3 of imageio.v3 (#106)

  • Add explicit support for python 3.11 and drop support for python 3.6, 3.7 (#109)

  • Remove test data from packaging and download them when necessary (#123)

  • Define packaging in pyproject.toml and keep to handle compilation of C extension (#125)

  • Add release GitHub workflow to automate release process and add corresponding documentation in (#126)

  • Add pre-commit hook to update test data registry and to run from pull request (#129)

  • Tidy up rsciio namespace: privatise docstrings, move and exceptions to tests and utils folder, respectively (#132)

Initiation (2022-07-23)#

  • RosettaSciIO was split out of the HyperSpy repository on July 23, 2022. The IO-plugins and related functions so far developed in HyperSpy were moved to this new repository.