翻訳準備中
このページはまだ翻訳されていないため、英語版を表示しています。
Data¶
The inner-shell ionization form factors are published as a dataset in their own right, with their own version and their own DOI. You do not need to run anything, and you do not need Julia.
Read this page before using the numbers
F is signed, the momentum convention is q = 4πs, values past s_cert are
padding rather than physics, and the E₀ axis differs from channel to
channel. Each of these has been observed to break a consumer. They are set
out under The contract below, and checked by an executable
reference loader shipped inside the archive.
Where to get it¶
| Record of reference | Zenodo, 10.5281/zenodo.21872050 — the version DOI |
| Mirror | GitHub release dataset-v5.0.0 |
| Size | 45 MB compressed, 112 MB expanded |
| Licence | data CC-BY-4.0, bundled loader MIT |
The two copies are byte-identical. The archive is built deterministically — sorted entries, mtime pinned to the dataset's own date, fixed ownership, no gzip timestamp — so the copy on Zenodo and the copy on GitHub can be compared rather than merely trusted.
sha256sum -c temari-dataset-v5.0.0.tar.gz.sha256 # the archive
tar -xzf temari-dataset-v5.0.0.tar.gz && cd temari-dataset-v5.0.0
python tools/temari_contract.py . # the contents; non-zero on failure
temari_contract.py needs nothing but the Python standard library.
Browsing before downloading: the channel index is committed to the
repository as
tables/channels.csv
— 525 rows, rendered by GitHub as a searchable table. It answers "is my element
and edge in here?" without a 45 MB download.
What is in it¶
Version 5.0.0, schema 2, generated with Temari on Julia 1.11.9.
| Channels | 525 — K, L1–L3, M1–M5 |
| Rows (channel × E₀) | 14,796 |
| Momentum grid | s = 0 … 16 Å⁻¹, 321 uniform nodes |
| Model | DHFS-KS23-DiracB-KDIRAC2C-jsplit-fullrange-sym-v4-DSCF |
Coverage by shell:
| Shell | Z range | Channels |
|---|---|---|
| K | 6 – 50 | 45 |
| L1, L2, L3 | 20 – 86 | 67 each |
| M1, M2, M3 | 30 – 86 | 57 each |
| M4, M5 | 33 – 86 | 54 each |
Each channel is one JSON file, F_<shell>_Z<z>.json, holding a row per beam
energy. A row carries F (321 values), s_cert_A_inv, tail.eps,
sigma_bote_nm2, sigma_own_nm2, the overvoltage u, and solver diagnostics.
What F is¶
\(F(s, E_0)\) is the shape of the inner-shell ionization form factor, normalized so that \(F(0) = 1\). It is the quantity STEM-EDX and ALCHEMI need: the mixed dynamic form factor evaluated for the difference vector between two Bloch waves, which is what makes an EDX map depend on the crystal orientation.
- s is \(\sin\theta/\lambda\) in Å⁻¹, the crystallographic convention. The momentum transfer is q = 4πs, so K = 4πs·a₀ in atomic units.
- F is not a GOS and must not be substituted for one.
- F is not a cross section. The absolute scale is supplied separately by
sigma_bote_nm2, from the Bote–Salvat coefficients.
The contract¶
These are not stylistic preferences. Each has been observed to break a
consumer, and each is checked by temari_contract.py.
- F is signed. 358 of the 525 channels contain negative values, the
smallest being −0.3194. Any path that treats F as non-negative —
clip(0),abs, an assumption of monotonicity — corrupts it silently, and the corruption survives integration over q. This is why F is not published in the GOSH format, whose consumers clip. - q = 4πs. Using s directly as a momentum is wrong by 4π.
- Beyond
s_certthe values are exactly-zero padding, not calculated. Every row declares how far it reaches. 1,598 rows (10.8 %) stop short of 16 Å⁻¹. Feeding the padding into an interpolation basis drags the result toward zero. - The E₀ axis differs from channel to channel — 459 distinct axes across 525 channels, 22 to 40 rows each. There is no dense [channel, E₀, s] cube over the union axis. (The 22 absolute nodes, 30 keV to 400 keV, are present in every channel; the per-channel overvoltage nodes are what differ.)
epsis an upper bound and must not be interpolated in E₀. Take the maximum of the two bracketing rows — an interpolated bound is not a bound.- E₀ interpolation runs in x = ln(u−1), with y = log F where the column is positive. Interpolating in raw E₀ over raw F gives different answers from the shipping consumer — up to 2.9×10⁻³, with the sign reversed in places.
- Past
s_certthere are two distinct regions. Betweens_certands_kin= 1/λ(E₀) the value is unrecorded and carries the boundeps. Aboves_kinno such beam pair exists on the Ewald sphere at all, so the request itself does not stand — attaching a bound there would be guaranteeing something about a configuration that cannot occur.
s_cert = min(16, 0.98·s_kin) rounded to a grid node. It is not an accuracy
limit: it is the geometric impossibility of finding two beams whose
difference vector has that length.
How far the numbers are trusted¶
- QC: 525 / 525 channels pass, zero generation-gate failures. The leave-one-out check on the E₀ axis worst-cases at 1.16×10⁻³ against a gate of 5×10⁻³.
- ⚠ That leave-one-out figure is not an error bound on E₀ interpolation. It omits the two nodes at each end of the axis, so the region just above threshold and the 400 keV side are structurally blind to it. Direct measurement inside the intervals exceeds it in part of the range.
- ⚠ Past s ≈ 4 Å⁻¹ there is no external yardstick. The most recent published database in the field stops at q = 50 Å⁻¹, which is s = 3.98 Å⁻¹ in this convention. From there to 16 Å⁻¹ the numbers are verified against internal identities and analytic limits, not against anyone else's.
- The absolute cross sections are Bote–Salvat, not this calculation.
Bote–Salvat's own RMS deviation from experiment is 10 % (K), 15 % (L) and
24 % (M).
sigma_own_nm2is reported alongside as an internal consistency indicator — it is a diagnostic, not a validation score, and Bote–Salvat is not ground truth either.
See Verification for what is checked and how.
Versioning¶
The dataset and the software carry independent version lines. A dataset
release is tagged dataset-vX.Y.Z; a software release is tagged vX.Y.Z. They
are never mixed in the same release.
A new dataset generation is what the reproducibility
discipline calls a declarable event: the model ID, the s
grid, the schema and the Julia version are all pinned in MANIFEST.md inside
the archive.
Citing¶
Cite the software through CITATION.cff in the repository, and the dataset by
its own DOI:
Seto, Y. (2026). Inner-shell ionization form factors F(s, E0) for STEM-EDX: 525 channels (K, L1-L3, M1-M5) computed with Temari (Version 5.0.0) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.21872050
⚠ Cite the version DOI, 10.5281/zenodo.21872050 — it guarantees the files
have not changed since. 10.5281/zenodo.21872049 is version-independent and
resolves to whichever version is current, which is what you want only when
referring to the dataset in general rather than to the numbers you used.
The data is CC-BY-4.0; the bundled loader is MIT. Attribution may be given by link, which is what makes it workable when the tables are embedded in a binary resource rather than shipped as files. The F values are self-generated and contain no third-party ionization parameters; the absolute cross sections come from the Bote–Salvat coefficients, which are in the public domain.
If you publish cross sections obtained through this dataset, cite Bote & Salvat, Phys. Rev. A 77 (2008) 042701 and Bote et al., At. Data Nucl. Data Tables 95 (2009) 871 as well.