Dense-mesh screen
Submitted to PSDI, awaiting review
Draft aerf8-wa448 holds the artifact and its model card and is under
review. A draft has no public identifier, so nothing downloads it yet.
The numbers below are from the training run that produced it.
Ranks structures you have not computed yet by how likely they are to need a dense k-point mesh, so a compute campaign spends its time where the labels are scarce.
This model serves goldilocks-data, not Core. It advises no calculation
setting. Its consumer is the campaign that decides which structures to compute
next, and the answer it gives — "this one is worth measuring" — is not a
statement about how to run anything. Core never reads it: the target contract
declares the kind dataset_selection rather than dft_parameter, so a
consumer looking for advice about a calculation cannot pick it up by mistake.
| Predicts | whether a structure needs rung 12 or above |
| Trained on | PSDI 52713-55d86, 17757 structures |
| Needs | a structure, nothing else |
| Record | PSDI, submitted for review |
Use it
from goldilocks_ml.inference import load_model
screen = load_model("path/to/the/record")
predictions = screen.predict_batch(structures)
ranked = sorted(predictions, key=lambda p: -p.details["score"])
Sort by details["score"] and take as many as your budget allows. The
True/False value comes from a plain 0.5 cut and is the lesser half of the
output — no single operating point was tuned, because the budget decides where
the line falls.
What a budget buys
Measured on held-out data, taking the top fraction of a ranked pool:
| Take | Precision | Recall | Versus random |
|---|---|---|---|
| top 1% | 0.944 | 0.101 | 9.9x |
| top 5% | 0.753 | 0.396 | 7.9x |
| top 15% | 0.511 | 0.805 | 5.4x |
| top 25% | 0.356 | 0.935 | 3.7x |
Fractions, not counts: ranking 13175 candidates and taking 2000 is taking the top 15%, so that is the row that applies.
Overall it scores 0.951 ROC-AUC and 0.717 PR-AUC on test, against a 0.050 base rate.
When not to use it
- It does not recommend a mesh. For that use the k-index forest.
- The scores are not probabilities. They order structures well; nothing shows that 0.7 means a 70% chance.
- MC3D bulk crystals only. Surfaces, molecules and other codes are untested.
- The rung is 1-based. Rung 1 is the Gamma-only mesh. On the 0-based ladder this dataset previously used, the same cut was rung 11.
Train it again
uv run goldilocks-ml train run protocols/k_points/k_index/screen/52713_55d86.v1.toml \
--dataset local_data/snapshots/kindex-52713-55d86 \
--output local_runs/kindex-screen
About two minutes on a laptop, no GPU. The protocol derives its two classes from the k-index snapshot's recorded rung, so one dataset serves both models and the classes cannot drift from the numbers they came from.