PXR Induction Ensemble โ€” trained weights

Fine-tuned model weights for an ensemble predicting human PXR (pregnane X receptor) activation potency (pEC50) from SMILES, built for the OpenADMET PXR Induction Challenge.

These are the large trained weights only. Full method, the lightweight base models (LightGBM / Ridge), the ensemble + calibration pipeline, and reproduction instructions live in the code repo: https://github.com/ASinanSaglam/OpenADMET_PXR_challenge (see WRITEUP.md).

What's in this repo

Path Model Family Files
unimol/fold{0..4}/ Uni-Mol 3D transformer, end-to-end fine-tuned 25 ร— .pth (5 outer folds ร— 5 internal CV models)
M07_ac/ Chemprop (M07_ac) 2D message-passing GNN, CheMeleon backbone 7 ร— .ckpt (5 folds + 2 alt checkpoints)

Each unimol/foldN/ also carries its config.yaml, target_scaler.ss, conformer cache, and CV data needed by unimol_tools to load the model.

Not hosted here (small โ€” retrain from the code repo's scripts): M10 (LightGBM) and M05 (Ridge/ECFP4). The unimol_p1eval/ Phase-1 evaluation artifacts are intentionally omitted.

The full ensemble

Four diverse base learners blended with Set 1-calibrated weights, then a linear-stretch tail calibration. Diversity across model families is deliberate so errors decorrelate.

Model Family Blend weight Blind (Set 1) RAE
M10 LightGBM 0.416 0.6254
M07_ac Chemprop 2D GNN 0.221 0.7310
M05 Ridge / ECFP4 0.187 0.7288
Uni-Mol 3D transformer 0.176 0.6224

Final blind (Analog Set 1) RAE: 0.5945 (4-model fixed weights + linear-stretch calibration), vs 0.6033 v1 baseline. Scored by Relative Absolute Error = ฮฃ|pred โˆ’ true| / ฮฃ|true โˆ’ mean(true)|.

Training setup

  • Task: pEC50 regression from SMILES.
  • Data: challenge train + unblinded Analog Set 1 (4392 compounds, 10ร— SMILES augmentation), not redistributed here.
  • Leakage-free weights: ensemble weights are fit on the unblinded Set 1 holdout only, then all models are retrained on the full 4392 for the blind Set 2 submission.
  • Uni-Mol: unimol_tools.MolTrain, regression, 20 epochs, lr 1e-4, batch 16, remove_hs=False, per-fold for clean OOF; inference averages 10 SMILES augmentations.
  • Chemprop: Lightning, CheMeleon backbone, MAE loss + activity-cliff triplet term, early stopping (patience 15) on val_loss with best-checkpoint selection.

Loading

Uni-Mol (per fold):

from huggingface_hub import snapshot_download
from unimol_tools import MolPredict

local = snapshot_download("ASinanSaglam/pxr-induction-ensemble", allow_patterns="unimol/fold0/*")
pred = MolPredict(load_model=f"{local}/unimol/fold0")
y = pred.predict({"SMILES": ["CCO"]})

Chemprop checkpoints load via the standard chemprop/Lightning load_from_checkpoint path; see scripts/01_train_chemprop_gnn.py in the code repo for the matching model definition.

License

MIT (see the code repository). Challenge data is not included and is governed by the OpenADMET challenge terms.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support