Skip to content
#edge computing Open access

toyomacro: X-ray photoelectron spectroscopy analysis toolkit

Sep 2026 · Zenodo (CERN European Organization for Nuclear Research)

Abstract

X-ray photoelectron spectroscopy analysis toolkit: high-throughput Voigt fitting and the analysis foundation around it. v0.2.0 adds two experimental diagnostics — how well a spectrum determines the Voigt widths, and energy-axis calibration on a Fermi edge — three runnable examples, and a set of corrections. No existing solver default and no supported API changes, with one exception marked Breaking below. Added toyomacro.voigtfit.identifiability (experimental). How well a counting spectrum determines the Gaussian and the Lorentzian width of a Voigt peak. It separates the reasons the two are hard to tell apart: a degenerate σ coordinate (removed by working in the variance σ², in which the Fisher matrix is regular at σ = 0), the precision of a small Gaussian component, the boundary at σ² = 0, a finite energy window, and a background that has to be estimated from the same spectrum. Poisson Fisher matrix with an absent, known or estimated background; effective information next to the sub-block that assumes everything else known; labels rank_deficient / weakly_identified / identified plus near_boundary; a scan over measurement conditions. These are bounds computed from a model, not confidence intervals and not statements about a fit. Checked against exact constrained Poisson maximum likelihood on simulated spectra. toyomacro.fitting.fermi_edge (experimental). Fermi–Dirac × (flat / linear / quadratic DOS) ⊗ Gaussian on a binding- or kinetic-energy axis: E_F and the Gaussian FWHM with 1σ errors, and conversion of an axis to E_F = 0. The spread of E_F over DOS models is reported as a sensitivity check; it is not an uncertainty. Examples 05–07: fitting a chemical-state map read from a file (HDF5 or any reader-supported format), Fermi-edge calibration, and the width-identifiability map. All seven examples run on synthetic data from a fresh clone. data.sessa (reader for the interaction parameters a user's own SESSA run writes; no SESSA data bundled), mean escape depth and information depth in data.elastic_scattering, and per-value provenance for the bundled compound table. Fixed FastFitConfig(use_mlx=False) was ignored on the multi-component path and still ran on the GPU. The Voigt FWHM approximation was credited to the wrong paper and described as "accurate to within 0.02 %". It is the simpler of the two fits of Olivero & Longbothum (1977); about 0.02 % is its stated accuracy, and its measured maximum error is 2.37×10⁻⁴. voigtfit.crlb decided identifiability from a quantity that depends on the amplitude unit, and reported a small bound where it should have reported none. background.tougaard no longer calls its two-parameter model "3-parameter"; data.angular_correction documented two different reference axes under one name. compounds.json gave Si3N4 a wrong molecular weight. Breaking: clear_cache() now raises — it deleted shipped reference data that regenerate_cache() could not restore. CI now tests Python 3.11. The jobs named "Python 3.11" had been running 3.12 since the first commit; the first real run on 3.11 passed the whole suite. The complete list, with what each change does and does not claim, is the [0.2.0] section of CHANGELOG.md. That file now also records under [0.1.0] the 41 changes that v0.1.0 shipped while still listing them as "Unreleased". Install this exact version pip install "git+https://github.com/stoyoda0012-cyber/toyomacro@v0.2.0" The package is not on PyPI. Python 3.11 or later; the Apple Silicon GPU backend is the optional mlx extra. Citing All versions: 10.5281/zenodo.22092076 (resolves to the latest release). The DOI of this version is on its Zenodo record and is added to CITATION.cff after archiving. The version cited in J. Vac. Sci. Technol. A 44(5), 053209 (2026) is v0.1.0 (doi:10.5281/zenodo.22092077).

View source

Similar papers

#computer vision Review Sep 2017

Agile Software Development Methods: Review and Analysis

This publication proposes a definition and a classification of agile software development approaches and analyses ten software development methods that can be characterized as being "agile" against the defined criterion.

P. Abrahamsson, O. Salo, Jussi Ronkainen et al. · 727 citations · ⚡54
#computer vision Jun 2008

The impact of agile practices on communication in software development

The study shows that agile practices improve both informal and formal communication, but indicates that, in larger development situations involving multiple external stakeholders, a mismatch of adequate communication mechanisms can sometimes even hinder the communication.

M. Pikkarainen, Jukka Haikara, O. Salo et al. · 401 citations · ⚡48
#machine learning Review Open access Oct 2014

Software development in startup companies: A systematic mapping study

The results indicate that software engineering work practices are chosen opportunistically, adapted and configured to provide value under the constrains imposed by the startup context.

Nicolò Paternoster, Carmine Giardino, M. Unterkalmsteiner et al. · 394 citations · ⚡54

Related blog posts

Microsoft Research Blog Oct 6, 2026

What AI gets wrong and what failure teaches us

Jennifer Neville did not want to go into computer science—but that’s exactly where she landed. Neville discusses the starts and stops that led to her professional sweet spot and her work identifying “surprising failures” making it hard for AI to handle complexity.  The post What AI gets wrong and what failure teaches us appeared first on Microsoft Research.

We use cookies to run the site and, with your consent, for analytics and to show ads. See our Cookie Policy.