Skip to content
#edge computing Open access

toyomacro: X-ray photoelectron spectroscopy analysis toolkit

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

Abstract

Can a Fermi edge tell the instrumental resolution from the temperature at all? Usually not, and this release makes that answerable before the fit rather than arguable after it. fitting.fermi_edge_identifiability (experimental) The instrumental variance v and the thermal scale tau = (kT)^2 enter the edge width as kappa_2 = v + (pi^2/3) tau, which every count measures. They are separated only by the fourth cumulant, whose information vanishes as tau^2. So the module reports two different things: the total width, and the share of it that is instrumental. The headline number: freeing the temperature multiplies sd(sigma)/sigma by 1.3 to 78 across the conditions scanned, worst where the thermal tail is shortest. On most real edges the temperature is not something the spectrum can measure, and fitting it anyway spends the resolution's precision on it. It gives a Poisson Fisher matrix with the temperature free, fixed or carrying a normal prior; effective rather than conditional information; the labels separable / not_separable / assumed / undersampled, whose thresholds are stated as conventions and not as results; dsigma/dT, for when a thermocouple reading stands in for the electron temperature; and a scan over seven measurement conditions. Two standard deviations are reported for the resolution, each naming its estimator — the Cramér–Rao bound, and the sandwich covariance of the weighted least-squares estimator fit_fermi_edge actually is. They are not interchangeable: over the conditions measured the second is 1.25 to 2.55 times the first. Two additions to fitting.fermi_edge poisson_err carries that sandwich for the fitter itself. The *_err fields are the covariance scaled by the reduced chi-squared, which assumes one variance for every channel; on an edge the Poisson mean spans a factor of 53, and ef_err comes out 9 to 20% smaller than the actual scatter of E_F. Offered only when the intensities are raw counts. dos_form and compare_dos_forms. The fitted density of states is flat below E_F and polynomial above it, so its slope changes there. That kink is an assumption about the sample, and on simulated edges whose DOS runs smoothly through E_F it costs the fitted resolution 0.19 to 1.55 of its own error bar once kT is comparable with it — and nothing at all when kT is ten times smaller. Whether the assumption matters is itself set by the measurement. The new argument is not there to be chosen from the data. The two forms differ only within a few kT of E_F, so the region where a fit can tell them apart is the region where the choice moves the estimates. compare_dos_forms fits both and returns the spread as a guide to the systematic — never averaging, selecting, or ranking by fit quality. Defaults are unchanged and no existing number moves. What is behind the numbers Everything here is a model bound or a seeded simulation, never a measurement. The Monte Carlo spread matches the bound to 0.96–1.03 at an interior point; at a boundary and where the width cannot be split, the estimator's distribution is recorded rather than judged. A nested bootstrap checks whether an interval a user would quote holds the truth: 94.3–96.5% over 600 trials per kind. Sixteen deliberate defects were introduced; fifteen were caught, and the one survivor is now pinned. Two independent audits ran on this branch. The first raised three Major findings — a "95%" interval that was nominally 94.05% because of a quantile convention, a recovery range quoted from six cells that skipped the worst corner, and a docstring describing a test that could not exist. All three were reproduced before being acted on, and the re-audit found no new Blocker or Major. The reasoning, the conventions, and what is still open are in docs/design/fermi-edge-identifiability.md; examples/09_fermi_edge_identifiability.py runs the argument in four panels. Known issue Where the width split is not_separable, report.sd_tau is withheld but report.parameters still carries the same bound under a status computed on the width scale. Making the two agree needs a new status value, so it waits for a release that is changing labels. Also in this release A defect fixed in the released fitting.fermi_edge: the model sampled the Fermi–Dirac occupation before the Gaussian convolution, so below about half a channel it stopped following E_F within a channel, and stopped following T. On 20 meV channels at 10 K a fitted E_F came out 4.6 meV low with a pull width of 6.8. Where the channels are already finer than kT and sigma, nothing changes. The full list is in CHANGELOG.md. Install: pip install "toyomacro[mlx] @ git+https://github.com/stoyoda0012-cyber/toyomacro@v0.3.0" (drop [mlx] off Apple Silicon).

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.