YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

MolE-RTD-15pct-S2

MolE-RTD-15% encoder + ChEMBL supervised pretraining (Step 2) — the full MolE two-stage protocol. Step 1: RTD-15% on 415M ZINC molecules. Step 2: frozen encoder + multi-task binary classification on 641 ChEMBL assays (512k molecules). Best all-round encoder for TDC ADMET benchmarks.

Based on MolE by Recursion Pharmaceuticals and DeBERTa-v3.


Two-stage pre-training

Stage Objective Data Steps Batch
Step 1 RTD (replaced token detection) ZINC-Curated 415M molecules 1,000,000 512
Step 2 Sparse multi-task BCE ChEMBL 36: 512k mols × 641 assays 80,000 512

Step 2 teaches biological context: the encoder learns to predict 641 bioactivity readouts from [CLS] embeddings. This injects pharmacological signal that pure SSL (Step 1 only) lacks.

Step 2 details

Setting Value
Assays 641 (ChEMBL 36, ≥500 molecules/assay)
Molecules 511,898
TDC test molecules removed 12,834
Label sparsity 94.0%
Head Linear(768, 641)
Loss BCE with logits
Optimizer AdamW (lr=5e-6, weight_decay=0.01)
LR schedule Cosine with warmup
Hardware 1 × NVIDIA A100-SXM4-40GB
Wall time ~6-8 hours

Architecture

Component Config
Layers 12
Hidden size 768
Intermediate size 3072
Attention heads 12 × 64
Vocabulary 211 atom environments (radius-0 Morgan)
Relative attention Yes (p2c + c2p)
Position embeddings No (bond-graph relative positions)

Results

Full TDC 22-task benchmark (frozen encoder + 2-layer MLP head, 3 seeds, scaffold split):

5 tasks beat MolE paper, 1 matches, 16 trail. Best on: bioavailability_ma (+0.040 AUROC), cyp2d6_veith (+0.012 AUPRC), dili (+0.016 AUROC), ld50_zhu (−0.058 MAE), ppbr_az (−0.057 MAE).

Task Metric Ours MolE Paper
bbb_martins AUROC 0.878 0.903
bioavailability_ma AUROC 0.680 0.640
dili AUROC 0.868 0.852
herg AUROC 0.818 0.835
hia_hou AUROC 0.973 0.984
ames AUROC 0.799 0.834
lipophilicity MAE↓ 0.459 0.406

Recommendation: use caithmac/MolE-RTD-25pct-S2 for hard PK tasks (half_life, vdss, CYP substrates); use this model for saturated tasks (herg, bioavailability, hia_hou).


How to use

This is a clean encoder state dict (no generator/discriminator wrappers). Load directly:

import torch
from huggingface_hub import hf_hub_download
from DeBERTa.deberta.config import ModelConfig
from mole.training.models.mole import AtomEnvEmbeddings

DISC_CFG = dict(
    embedding_size=768, hidden_size=768, intermediate_size=3072,
    num_hidden_layers=12, num_attention_heads=12, attention_head_size=64,
    attention_probs_dropout_prob=0.1, hidden_dropout_prob=0.1,
    hidden_act="gelu", layer_norm_eps=1e-7, max_position_embeddings=0,
    max_relative_positions=512, position_buckets=0, norm_rel_ebd="layer_norm",
    pos_att_type="p2c|c2p", position_biased_input=False, relative_attention=True,
    share_att_key=True, type_vocab_size=0, vocab_size=211,
)

ckpt = hf_hub_download("caithmac/MolE-RTD-15pct-S2", "encoder_weights_rtd15_s2.pt")
encoder = AtomEnvEmbeddings(ModelConfig.from_dict(DISC_CFG))
encoder.load_state_dict(torch.load(ckpt, map_location="cpu", weights_only=False), strict=False)
encoder.eval()

See FINETUNE_AND_REPRESENT.md for complete fine-tuning + embedding extraction guide.


Citation

@misc{mole-rtd-15pct-s2,
  author = {caithmac},
  title  = {MolE-RTD-15pct-S2: Two-stage molecular encoder (RTD + ChEMBL supervised pretraining)},
  year   = {2026},
  url    = {https://huggingface.co/caithmac/MolE-RTD-15pct-S2}
}
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

Paper for caithmac/MolE-RTD-15pct-S2