Skip to content

Temari dataset-factors v1.0.0 — atomic scattering factors f_x(s), f_e(s), Z = 1–86

Choose a tag to compare

@seto77 seto77 released this 17 Aug 06:40
· 1 commit to main since this release

First release of the dataset-factors family — atomic scattering factors, independent of the F(s, E₀) dataset (dataset-v5.0.0) and of the software version.
No DOI has been minted yet. Cite this versioned release tag and identify the archive by its SHA-256: b1ab343072873810b39c63c23ee4074d12f251c2df29c4800037b1ddf56bb9cc. A Zenodo record, if created later, will be added to CITATION.cff and the Data page; the archive here will not be rebuilt for it.

X-ray atomic scattering factors f_x(s) [electrons] and first-Born electron scattering factors f_e(s) [Å] for the 86 neutral atoms Z = 1–86, on 7681 nodes s_i = 6·i/7680 (0 ≤ s ≤ 6 Å⁻¹), from a fully relativistic (Dirac) self-consistent field with exact exchange in the KLI approximation.

This is the data only. The software is released separately (v1.1.0 was tagged with it) and carries its own version.

Dataset version 1.0.0
Model DHFS-KLI-DTM1-dt16-neutral-v1 (full-Dirac SCF + KLI, dirac_true_midpoint_v1 numerics, radial grid dt/16 = 6.25e-5, n_r = 323,400)
Schema 1 (schema/temari_factors_v1.schema.json)
Generated with Temari src/gen_factors.jl @ 0612e0caa6d4edfd6dcefc4ca68cdb450d004531 (source fingerprint ad39233717ee8e2c4922bd0752b8cfe6654db7db49ba53eb92de2b937a777905), Julia 1.12.6 (pinned in MANIFEST.md)
Archive SHA-256 b1ab343072873810b39c63c23ee4074d12f251c2df29c4800037b1ddf56bb9cc
Manifest digest 5aa766ce94f5dcdb58d815f436dd4fbfe852b8cc5c026e11b097d1e0ff391d1e
Licence data CC-BY-4.0, bundled loader MIT (LICENSE.md states the split)

Read before use — the five things that bite

Each is checked by the executable contract shipped in the archive, and each has a negative mutant showing the check detects it (18 mutants in total; run with --negative).

  1. The s grid is not stored. Reconstruct s_i = 6·i/7680 in binary64 (6.0*i/7680; in C# write 6.0 * i / 7680.0, not integer division) and check the SHA-256 of the float64 little-endian byte stream: 1476113c622ccb9e62d4b56973277b7e550fef44357cf42d7923a9dde84f32fb.
  2. f_x is interpolated in s with a clamped left end (f_x′(0) = 0) and a not-a-knot right end. Natural or NAK/NAK splines are wrong (up to 10× the representation budget for Cs/Ba).
  3. f_e is interpolated in t = s², not in s, not-a-knot at both ends. The t nodes are non-uniform.
  4. Domain [0, 6] Å⁻¹ inclusive; nothing else. No extrapolation, no clamping. s = sinθ/λ in Å⁻¹ (q = 4πs). γ (the incident-electron relativistic factor) is not included in f_e — multiply downstream.
  5. Values are 11-significant-digit decimals stored as JSON numbers. Parse as binary64; do not re-round.

Golden vectors (C, Fe, Cs, Au at 16 off-knot points, tolerance 1e-12 relative) pin the convention; the Python contract, a Julia reference loader and SciPy's CubicSpline agree to 4×10⁻¹⁶.

sha256sum -c temari-factors-v1.0.0.tar.gz.sha256
tar -xzf temari-factors-v1.0.0.tar.gz && cd temari-factors-v1.0.0
python tools/temari_factors_contract.py . --negative     # exits non-zero on failure

What the numbers are worth — and what is not claimed

  • T_comp = 1e-7 electrons (f_x) and T_comp,e = 1e-7 Å (f_e) are release acceptance budgets, split 10 : 1 between numerical error (grid + SCF stopping) and representation error (interpolation + rounding). They are supported by measured differences and conservative triangle allocations, not by an a-priori error theorem: the radial grid was certified element by element (density L¹ bound, worst 0.58 × B_grid); the SCF stopping error of every shipped solve was measured against a τ/10 reference (worst 0.39 × B_scf for f_x, 0.59 × of the f_e allowance, with an assumed 0.10 allowance for the reference's own residual); the interpolation-plus-rounding error was measured on sealed midpoints for all 86 elements (worst 0.16 × B_repr, 0.34 × B_repr,e).
  • Endpoint truncation of the radial grid: sensitivity to the tested extensions (r₀/10, r₀/100, r_max×1.5, r_max×2) was ≤ 0.9 % of B_grid — an observed sensitivity, not a bound on the unknown infinite-domain truncation error.
  • Model validation: f_x was compared with the DHF values of OFFV1 on eight elements; the tables are KLI, not DHF, and no claim of superiority over DHF or Xα tables is made. No independent external validation of f_e was performed.
  • Reproducibility: the archive is built deterministically (built twice, same SHA) and the JSON carries no volatile information — but exact regeneration of the table bytes is not guaranteed: the SCF can stop at a different iterate from one process to the next (observed sporadically — 6 of 85 elements differed between two full runs, all within the stopping tolerance and inside the gates above). The released archive bytes and their SHA-256 are canonical.
  • Full QC (F1–F10) was run before packaging and again on the extracted archive with external references (certification copies and τ/10 solutions) on the generating machine; the archive-local check (check_factor_tables.jl in the repository) reruns F1–F7 and F9 without those references.
  • Two pre-release runs were superseded and are not part of this release: run 1 (generator 3c9d691) rejected Cs on a series-truncation sub-gate that was a threshold design error; run 2 (f27ed05) carried a per-file provenance note that overstated byte reproducibility. Only the gate and the note text changed; the released files all come from one generator commit and one source fingerprint (details and the run-to-run comparisons — 79/85 and 81/86 elements byte-identical — in MANIFEST.md).
  • Neutral atoms only; ions are not derivable from these tables.

MANIFEST.md inside the archive (in Japanese) is the record of the generating run: prescription, certification pointers, QC numbers, timeline. manifest.json carries the SHA-256 and byte count of each data file and an order-independent digest.