ORB-PU / A-PU Synthesizability Models
Positive-unlabeled (PU) synthesizability scorers for inorganic compositions. Trained
on 109,283 Materials Project entries (49,283 labeled positives, 60,000 unlabeled).
Features: ORB-v3 embeddings reduced by PCA, Magpie composition descriptors, and an
optional ORB-energy stability scalar. The estimator is a Mordelet–Vert PU bagging
classifier with an optional abstention / out-of-distribution layer
(AbstainingPUClassifier).
This private repository holds the Optuna-tuned checkpoints from eight studies: {Magpie, ORB, ORB+Magpie, ORB+Magpie+stability} × {RandomForest, XGBoost}.
Selected model: apu_optuna/orb_mag__xgboost/model.joblib
(held-out MP test split: AUPRC 0.961, AUROC 0.967, ECE 0.024).
Code, results, figures, and the full write-up are in
https://github.com/sheikhahnaf/matinvent-BO under hcap_bo/ (see syn_finding.md).
Contents
apu_optuna/<feature_set>__<base>/model.joblib— eightAbstainingPUClassifiercheckpoints (joblib).cache/bank.npz.pca.pkl— PCA fitted on the training bank; required to map a raw 256-d ORB embedding to theorb_pcablock used at inference.
Loading
import joblib
model = joblib.load("apu_optuna/orb_mag__xgboost/model.joblib")
# X = concat([orb_pca(50), magpie(132)]); see hcap_bo/src/apu_synthesizability
p = model.predict_proba(X) # synthesizability probability in [0, 1]
dec = model.predict(X) # {"predictions": 1/0/-1, "abstain", "ood_scores", ...}
Unpickling requires the apu_synthesizability package
(matinvent-BO/hcap_bo/src) and its dependencies (scikit-learn, xgboost, joblib,
numpy). Each study is reproducible from hcap_bo/slurm/apu_optuna.slurm (seed 42).