Releases: seto77/Temari
Release list
Temari dataset v5.0.0 — F(s, E₀), 525 channels
The record of reference is on Zenodo: 10.5281/zenodo.21872050 — cite that version DOI, which guarantees the files have not changed.
10.5281/zenodo.21872049is version-independent and resolves to whichever version is current.The archive here is a byte-identical mirror. It is built deterministically, so the two copies can be compared rather than merely trusted:
sha256 = ceee8a2351d56a4feda6a3d6d69c943f094f88f30fc136728e7b64ff65518396.
Inner-shell ionization form factors F(s, E₀) for STEM-EDX — 525 channels (K, L1–L3, M1–M5), 14,796 rows, s ≤ 16 Å⁻¹ on 321 nodes.
This is the data only. The software is released separately and carries its own version; the two version lines are independent.
| Dataset version | 5.0.0 |
| Model | DHFS-KS23-DiracB-KDIRAC2C-jsplit-fullrange-sym-v4-DSCF |
| Schema | 2 |
| Generated with | Temari, Julia 1.11.9 (pinned in MANIFEST.md) |
| Archive SHA-256 | ceee8a2351d56a4feda6a3d6d69c943f094f88f30fc136728e7b64ff65518396 |
| Manifest digest | fcd4e2bdd843d1bfe695a6d16bb338d7db6e0cc047c23140475ccb72f05ecbbd |
Licence
The data is CC-BY-4.0; the bundled loader (tools/temari_contract.py) is MIT. LICENSE.md in the archive states the split. Attribution may be given by link, which is what makes it workable when the tables are embedded in a binary resource.
Self-contained
The archive carries the JSON schema, the manifest (per-file SHA-256 plus an order-independent digest), and an executable contract — a reference loader in the Python standard library only, which also checks the seven traps a consumer falls into.
sha256sum -c temari-dataset-v5.0.0.tar.gz.sha256
tar -xzf temari-dataset-v5.0.0.tar.gz && cd temari-dataset-v5.0.0
python tools/temari_contract.py . # exits non-zero on failureReproducible bytes
The archive is built deterministically (tools/make_dataset_release.sh): sorted entries, mtime pinned to the dataset's own date, fixed ownership, no gzip timestamp. Building twice gives identical bytes — which is what will let a copy deposited on Zenodo be compared with this one rather than merely trusted.
Read before use
F is signed. 358 of the 525 channels contain negative values (minimum −0.3194). Any path treating it as non-negative — clip(0), abs, assumed monotonicity — corrupts it silently, and the corruption survives integration over q. This is why F is not published in the GOSH format.
The momentum convention is q = 4πs [Å⁻¹]. Beyond s_cert the values are exactly-zero padding, not calculated. The E₀ axis differs per channel (459 distinct axes). eps is a bound and must not be interpolated. E₀ interpolation runs in ln(u−1). The README states all of it, and temari_contract.py checks it.
Beyond s ≈ 4 Å⁻¹ there is no external yardstick — the most recent published database in the field stops at q = 50 Å⁻¹ = s 3.98 Å⁻¹ in this convention. The range past that is verified against internal identities and analytic limits, not against anyone else's numbers.
Temari v1.0.1
A patch release. Nothing in the shipping prescription or the generated values changed — dataset v5.0.0 is untouched, and the engine's output is bit-identical to what 1.0.0 produced (checked with bitident_snapshot.jl on both prescriptions).
What is in it is verification and contract work.
⚠ If you use tools/temari_contract.py, read this
Two changes affect callers:
f_at()now returns three values,(F, bound, region), where it previously returned two.regionistabulated,unrecordedorimpossible— the last being a request aboves_kin = 1/λ(E₀), where no such beam pair exists on the Ewald sphere and the bound is thereforeNaNrather thaneps.- The golden vector moved at off-node E₀. The loader's E₀ interpolation disagreed with the shipping consumer in three ways: the coordinate (raw E₀ over raw F, instead of
ln(u−1)withlog Fwhere the column is positive), the endpoint slopes (a one-sided difference instead of the three-point formula), and out-of-range behaviour (clamping instead of extrapolating on the end cubic). Over 4.58 M points the worst disagreement was 2.9e-03, and 175 % where the sign flips. Corrected, and cross-checked against the Julia implementation to 4.5e-15.
Fe K at 137 kV, s = 2.50 now reads +3.8749841608e-01 (was +3.8749427661e-01). Values at E₀ nodes are unchanged.
Verification
- The E₀ interpolation error was measured directly, by recomputing rows inside the intervals rather than inferring from leave-one-out. Over a stratified sample of 50 channels and 450 points the worst is 3.0e-03. C6 does not bound it — in the risky stratum it falls below the truth in 20 of 25 channels, because its leave-one-out drops only interior nodes and never examines the interval next to the threshold. Widening it does not help either: the widened figure comes in low in 4 of 50, with the ratio spanning a factor of 48.
check_tablesreports it, and does not gate on it. - The error in F was pushed through to the ALCHEMI observable. Since F enters only through μ and the Bloch solution does not depend on F, two runs differing only in the shape isolate it exactly. The observable responds only below about 2 Å⁻¹ — a perturbation at 4–6 Å⁻¹ moves it by 1.5e-09, above 10 Å⁻¹ by nothing. The interpolation error sits at 6.7–11.6 Å⁻¹, so it does not reach the observable: at most 1.2e-04 on the site ratio.
- The small-component fraction now has an external check, and is gated in CI. All six values, three elements in both spin states, fall inside the interval that rounds to the one-significant-digit figures in the literature.
- Beyond
s_certthe contract now distinguishes two regions rather than treating them alike. No format change:s_kindepends only on E₀, so it is computed rather than stored — putting it in the JSON would create a second source of truth.schema_versionstays at 2.
Other
- Julia 1.12.6 produces bit-identical output (both snapshots differ only in the version header). The long fleet run is still unevaluated.
- The watchdog now treats a frozen CPU with a stalled log as wedged after three minutes, instead of waiting fifteen; if CPU cannot be read it falls back to the old rule rather than risk killing a healthy lane.
- The sample output in the documentation had been showing v2-era numbers and is regenerated from a real run.
The data
Distributed separately, under CC-BY-4.0: dataset-v5.0.0. The software remains MIT.