Skip to content

Foundation Models

What the numbers say — and how to get a model

Every figure on this page is the README's own. The caveats below are kept as visible as the headline numbers on purpose: a result that hides its own limits is not more trustworthy for it.

Headline numbers

R², ext2chg
0.9976 R², ext2chg held-out structures
R², chg2tau
0.9953 R², chg2tau held-out structures
gold supercells
17 gold supercells ten 27-atom, seven 32-atom
grid shapes
4 grid shapes one model serves all of them

Against the analytic kinetic functionals

Relative L² error of τ on the same held-out gold structures, no exceptions and no cherry-picking — the learned functional against the two closed-form ones it has to beat to be worth anything.

Functional Relative L² vs. chg2tau
chg2tau (learned) 0.0511 ± 0.0031 —
von Weizsäcker (analytic) 0.738 14× worse
Thomas–Fermi (analytic) 1.347 26× worse

What this split can and cannot tell you

Read these before the numbers above, not after.

What this split can and cannot tell you

With valid_fraction = 0.2 and 17 structures, the held-out set is three structures — and at seed=42 all three happen to be 32-atom cells. The headline numbers describe the harder subset only: there is no held-out 27-atom measurement at all, and three structures is too thin a base for a meaningful error bar. Earlier 5-fold cross-validation on a 12-structure dataset put 32-atom cells at roughly twice the error of 27-atom ones. Use --kfold for a figure that covers every structure.

Still one element

These numbers measure interpolation between geometries of gold, and now, weakly, extrapolation across cell size. They say nothing about transfer to other chemistry. Growing the dataset beyond one element is the main open item.

Energies are not there yet

The total energy is a sum of terms of order 10⁴ eV whose physically relevant variation is a fraction of an eV per atom — a relative ~10⁻⁴ — and a field-level error of 2×10⁻² cannot survive that cancellation. The last full measurement put the true spread at 0.27 eV/atom against a predicted-difference error of 0.29 eV/atom: a ratio of 1.06 with correlation r ≈ −0.1. An error equal to the signal and no correlation means the predicted energy ordering currently carries no information — even though the energy module itself is separately validated (see below). It is the fields that are not yet accurate enough, not the physics that integrates them.

The energy module, checked independently

The caveat above is about the predicted fields. The physics that integrates them into a total energy is validated on its own, against results that have nothing to do with a trained model:

  • Exact Madelung constants
  • Uniform-electron-gas limits
  • Analytic Hartree integral
  • Finite-difference functional derivatives
  • Thomas–Fermi exact limit
  • 5×10⁻⁵ vs VASP’s Vext

Download a trained model

No checkpoint is published from this site yet — every number above comes from a model trained locally, the same way the README describes. A trained pair is not one file: ext2chg and chg2tau are saved together into a single .pfno bundle, alongside the held-out metrics, the training report and the exact resolved config that produced it, all under one models/<name>/ directory — so a published checkpoint, when there is one, will carry its own evidence with it.

Train your own
Roadmap

The direction, not a release yet

Every number on this page measures one element: interpolation between geometries of gold, and now, weakly, extrapolation across cell size. A foundation model — trained across elements and chemistries rather than refit for each one — is the stated direction, not a shipped artifact; growing the dataset beyond one element is the main open item the README itself names. Nothing here is a timeline.

Keep reading

The Hohenberg–Kohn map, the missing kinetic functional, and the physics constraints layered on top.

One Fourier layer for every grid shape, device- and precision-explicit, spectral resampling that preserves the electron count.

Ingest, cache, train, predict, evaluate — and the committee/active-learning loop around it.

Try it on your own structure

Install it, or read the manual first.