5×5 cross validation · two data sets
Seven modelling approaches, fifteen ADME and physicochemical endpoints across two unrelated data sets, 25 replicate models each, every one scored on a held-out test set it never saw. Four of the seven are pre-trained foundation models, and only two of those four win anything at all. The model that wins most does no downstream training whatsoever — it freezes its encoder and predicts in context. And the neatest pattern in the first data set does not survive the second.
Tukey HSD across the 25 folds, counted over every endpoint × metric combination. Tied means the method could not be distinguished from the best one at α = 0.05 — a distinction a bolded maximum would hide.
Of the 27 combinations, 19 have a single method at the top and 8 have two or three that cannot be told apart. Monroe is alone at the top on 12 and shares it on 6, CheMeleon alone on 7 and shares on 5. Nothing else is ever at the top, alone or otherwise. The split between those two is not noise and it does not follow data volume — it follows the assay. Monroe leads on LogD, both microsomal stability endpoints and both Caco-2 endpoints. CheMeleon leads on all three tissue-binding endpoints, plus LogS.
The one place a from-scratch model keeps up is LogD, the endpoint with the most measurements, where single-task ChemProp shares the top with Monroe on all three metrics. Given enough data, the model learns a representation as good as the one it would have been handed.
The other end of the table is just as clean. LightGBM, MEGA-CL and Mol-JEPA are best on nothing and tied with the best on nothing, across all 27 combinations. Two of those three are pre-trained foundation models. Pre-training is not by itself worth anything here.
Where two methods cannot be separated, the tables below mark both as tied for best rather than crowning whichever had the higher mean. A leading average that the correction cannot defend is not a winner, and printing it as one is the habit these plots exist to avoid.
Each bar is one method's mean over its 25 folds. The whiskers are a confidence interval widened to cover every pairwise comparison in the panel at once, which is what stops seven methods and three metrics from manufacturing a winner by chance.
Overlapping bars mean what they look like they mean. That is the whole point of correcting the intervals first. R² and Spearman ρ put the best method furthest right. MAE is an error, so its best method sits furthest left. The convention comes from “Even More Thoughts on ML Method Comparisons” and the protocols in Ash et al.4
Mean ± standard deviation over 25 folds.
| Endpoint | LightGBM | ChemProp ST | ChemProp MT | CheMeleon | MEGA-CL | Monroe | Mol-JEPA |
|---|---|---|---|---|---|---|---|
| LogD | 0.510±0.021 | 0.700±0.026tied | 0.667±0.033 | 0.671±0.019 | 0.617±0.029 | 0.718±0.017tied | 0.522±0.018 |
| LogS | 0.335±0.036 | 0.447±0.038tied | 0.454±0.025tied | 0.474±0.029tied | 0.337±0.056 | 0.442±0.028 | 0.297±0.032 |
| LOG_HLM | 0.139±0.045 | 0.087±0.088 | 0.118±0.104 | 0.221±0.071 | -0.068±0.167 | 0.314±0.049best | 0.191±0.036 |
| LOG_MLM | 0.084±0.064 | -0.007±0.116 | 0.033±0.068 | 0.135±0.141 | 0.049±0.108 | 0.290±0.048best | 0.052±0.108 |
| LOG_Caco_AB | -0.014±0.129 | -0.307±0.264 | -0.046±0.179 | 0.160±0.191 | -0.747±0.314 | 0.471±0.041best | 0.135±0.057 |
| LOG_Caco_Efflux | -0.135±0.096 | -0.103±0.088 | -0.057±0.105 | 0.110±0.158 | -0.492±0.150 | 0.275±0.054best | 0.039±0.065 |
| LOG_MPPB | 0.229±0.105 | 0.120±0.168 | 0.445±0.072 | 0.541±0.093best | 0.232±0.114 | 0.300±0.068 | 0.219±0.077 |
| LOG_MBPB | 0.477±0.080 | 0.413±0.103 | 0.642±0.037 | 0.713±0.061best | 0.529±0.062 | 0.590±0.066 | 0.438±0.093 |
| LOG_MGMB | 0.260±0.148 | 0.279±0.063 | 0.616±0.020tied | 0.642±0.027tied | 0.447±0.095 | 0.588±0.098tied | 0.503±0.060 |
CheMeleon2 against the identical multitask D-MPNN1 trained from scratch. Same molecules, same folds, same hyperparameters; the only difference is how the message-passing block was initialised.
| Endpoint | Δ R² | Folds won | p | Verdict |
|---|---|---|---|---|
| LogD | +0.004 | 13/25 | 5.5e-01 | no call |
| LogS | +0.020 | 19/25 | 3.1e-03 | wins |
| LOG_HLM | +0.103 | 22/25 | 1.9e-04 | wins |
| LOG_MLM | +0.103 | 23/25 | 2.8e-04 | wins |
| LOG_Caco_AB | +0.205 | 22/25 | 2.4e-04 | wins |
| LOG_Caco_Efflux | +0.167 | 22/25 | 1.6e-05 | wins |
| LOG_MPPB | +0.096 | 21/25 | 5.0e-06 | wins |
| LOG_MBPB | +0.071 | 22/25 | 5.1e-05 | wins |
| LOG_MGMB | +0.025 | 21/25 | 2.2e-04 | wins |
The same from-scratch architecture, trained one model per assay family versus one model per endpoint. This is the control that separates multi-task transfer from the architecture itself, and it produces the cleanest gradient in the study: sort the endpoints by how much data they have and the benefit falls away almost monotonically. LOG_MGMB, with 222 training molecules, gains 0.34 R² from being trained alongside its assay family. LogD, with 5,039, is actively hurt.
| Endpoint | Training molecules | Δ R² from multi-task | p | Favours |
|---|---|---|---|---|
| LOG_MGMB | 222 | +0.337 | 4.1e-18 | multi-task |
| LOG_MBPB | 975 | +0.229 | 1.6e-10 | multi-task |
| LOG_MPPB | 1,302 | +0.324 | 8.7e-09 | multi-task |
| LOG_Caco_AB | 2,157 | +0.261 | 2.1e-06 | multi-task |
| LOG_Caco_Efflux | 2,161 | +0.047 | 3.2e-02 | multi-task |
| LOG_HLM | 3,759 | +0.030 | 1.4e-01 | no call |
| LOG_MLM | 4,522 | +0.039 | 6.8e-02 | no call |
| LogD | 5,039 | -0.033 | 2.4e-05 | single-task |
| LogS | 5,128 | +0.007 | 3.6e-01 | no call |
LightGBM on Morgan count fingerprints against the single-task D-MPNN — both single-task, so this is the like-for-like comparison, and it is a split decision. The graph network wins on the two endpoints with the most data (LogD, LogS) and loses on five of the remaining seven. Stripped of pretraining and multi-task transfer, a D-MPNN is not a general improvement on fingerprints for this data set.
| Endpoint | Δ R² | Folds won | p | Verdict |
|---|---|---|---|---|
| LogD | +0.190 | 25/25 | 3.3e-20 | wins |
| LogS | +0.112 | 25/25 | 1.0e-10 | wins |
| LOG_HLM | -0.051 | 8/25 | 1.6e-02 | loses |
| LOG_MLM | -0.091 | 6/25 | 2.2e-03 | loses |
| LOG_Caco_AB | -0.293 | 4/25 | 3.0e-05 | loses |
| LOG_Caco_Efflux | +0.031 | 14/25 | 2.6e-01 | no call |
| LOG_MPPB | -0.108 | 8/25 | 2.1e-03 | loses |
| LOG_MBPB | -0.064 | 5/25 | 1.5e-02 | loses |
| LOG_MGMB | +0.020 | 14/25 | 5.2e-01 | no call |
MEGA-CL9 is a graph contrastive-learning model pre-trained on roughly 100 million molecules. It is single-target by construction, so the like-for-like comparison is against single-task ChemProp: same one-model-per-endpoint setup, same folds, pre-trained backbone against random initialisation. It loses that comparison on five endpoints, wins on three and ties on one. Against LightGBM it is a coin flip, three wins, three ties, three losses. Against CheMeleon it loses nine out of nine.
| Endpoint | Δ R² | Folds won | p | Verdict |
|---|---|---|---|---|
| LogD | -0.083 | 0/25 | 3.3e-12 | loses |
| LogS | -0.110 | 1/25 | 3.8e-08 | loses |
| LOG_HLM | -0.156 | 5/25 | 6.5e-04 | loses |
| LOG_MLM | +0.056 | 17/25 | 9.9e-02 | no call |
| LOG_Caco_AB | -0.440 | 3/25 | 1.4e-05 | loses |
| LOG_Caco_Efflux | -0.388 | 0/25 | 1.7e-13 | loses |
| LOG_MPPB | +0.111 | 18/25 | 9.4e-03 | wins |
| LOG_MBPB | +0.116 | 23/25 | 5.1e-06 | wins |
| LOG_MGMB | +0.168 | 22/25 | 1.2e-06 | wins |
Where it does help is where the data runs out. On LOG_MGMB, the smallest endpoint at 222 training molecules, MEGA-CL beats LightGBM by 0.187 R². On the two Caco-2 endpoints it collapses, and not only on R²: its Spearman ρ of 0.225 on LOG_Caco_AB is half of what LightGBM manages. The lesson is not that pre-training fails, since the only two methods that win anything here are both pre-trained. It is that the benefit belongs to a particular pre-trained model, not to pre-training as an idea.
Monroe5 is a 58.5 M-parameter graph transformer pre-trained on 81 million PM6 molecules and 1,089 PCBA assays. What separates it from everything else here is that nothing is trained downstream. The encoder is frozen, each molecule becomes a single 720-dimensional vector, and TabPFN8 predicts the endpoint in context: it is handed the training embeddings together with their labels and returns the test predictions in one forward pass. No weight updates, no epochs, no per-endpoint hyperparameters. Embedding all 7,608 molecules took 32 seconds on one GPU and the 225 fold predictions took 14 minutes. On the same card the CheMeleon arm took about six hours and MEGA-CL took twenty-one.
| Endpoint | Δ R² | Folds won | p | Verdict |
|---|---|---|---|---|
| LogD | +0.047 | 24/25 | 2.5e-09 | wins |
| LogS | -0.032 | 4/25 | 6.2e-05 | loses |
| LOG_HLM | +0.094 | 22/25 | 7.8e-06 | wins |
| LOG_MLM | +0.155 | 23/25 | 1.6e-05 | wins |
| LOG_Caco_AB | +0.311 | 25/25 | 3.4e-09 | wins |
| LOG_Caco_Efflux | +0.165 | 24/25 | 3.1e-06 | wins |
| LOG_MPPB | -0.241 | 0/25 | 4.0e-12 | loses |
| LOG_MBPB | -0.122 | 1/25 | 6.8e-09 | loses |
| LOG_MGMB | -0.054 | 4/25 | 5.1e-03 | loses |
Caco-2 is where the gap is widest. Monroe reaches R² 0.471 on permeability and 0.275 on efflux; nothing else clears 0.16 and four of the other five land below zero on both. Its Spearman ρ on permeability is 0.706 against CheMeleon's 0.564 and LightGBM's 0.469, and it wins all 25 folds on all three metrics. Microsomal stability goes the same way, if less dramatically.
Protein binding reverses it. On LOG_MPPB, CheMeleon wins all 25 folds on both R² and Spearman, 0.541 against 0.300, and it takes LOG_MBPB and LOG_MGMB as well. Whatever the frozen embedding captures about passive permeability and microsomal turnover, it does not capture what fraction of a compound stays unbound in plasma — and there, fine-tuning the representation on the assay still wins.
One more thing separates it. Monroe's fold-to-fold standard deviation is the smallest of the six on all three metrics: 0.052 against CheMeleon's 0.088 on R², averaged over the endpoints. That follows from the design. With no training loop there is no initialisation, no early-stopping epoch and no optimiser trajectory to vary. The only thing that changes between folds is which molecules are in the support set.
It could not. Monroe pre-trains on 1,152 tasks and every one of them is public and named: 62 graph-level semi-empirical quantum properties from PM6, 1,089 binary PubChem bioassay calls from PCBA, and one conformer denoising objective. PM6 is computed chemistry and PCBA is screening activity. Neither carries an ADME measurement, so LogD, microsomal stability, Caco-2 permeability and plasma protein binding have no route into that training signal, on this data set or the Biogen one.
Seeing a molecule is a different matter from seeing its label, and the overlap has now been counted rather than assumed. Blazej Banaszewski, one of Monroe's authors, checked both test sets against the pre-training corpora and found no label overlap at all. Exactly one ExpansionRx test molecule, one carrying LogD and LogS values, is in PM6. On the Biogen side the structural overlap is much larger: about 53% of the test molecules are in PM6 and about 8% in PCBA. PM6 contributes quantum-chemical descriptors that are unrelated to these assays, and the PCBA bioassays that come closest to the Biogen endpoints biologically are still different experiments reporting different labels. Monroe had seen a good many of these molecules. It had never seen what they measure. Overlap figures by personal communication, August 2026.
One thing is still worth stating. Monroe's authors have run their model on this data set, and their repository ships a notebook that predicts the untransformed ExpansionRx measurements against OpenADMET's CheMeleon baseline. The folds, the transform and the test set here are ours, and no Monroe hyperparameter was tuned on them.
Mol-JEPA6 is the same shape of arm as Monroe and a different bet about what a molecule is. Instead of augmenting a structure and asking for matching views, it collects fourteen modalities of the same molecule — graph, ECFP, MOE descriptors, xTB and DFT calculations, embeddings borrowed from five other pre-trained models, and experimental ChEMBL, PCBA and TDC label vectors — masks whole modalities out, and trains a transformer to predict the missing latents from the ones that remain. The idea is that a molecule is defined by the company it keeps, not by a perturbation of its own graph. Only structure is needed at inference. The 45.4 M parameter encoder is frozen here, every molecule becomes one 512-d CLS token, and TabICL7 predicts in context, which is what the authors recommend.
It is best on nothing and tied with the best on nothing. Monroe beats it on all nine endpoints and all three metrics, and on most of them it wins all 25 folds. The mean R² gap is 0.18.
| Endpoint | Δ R² | Folds won | p | Verdict |
|---|---|---|---|---|
| LogD | -0.197 | 0/25 | 1.7e-25 | loses |
| LogS | -0.145 | 0/25 | 1.2e-16 | loses |
| LOG_HLM | -0.124 | 0/25 | 8.7e-12 | loses |
| LOG_MLM | -0.238 | 0/25 | 1.2e-12 | loses |
| LOG_Caco_AB | -0.336 | 0/25 | 4.7e-23 | loses |
| LOG_Caco_Efflux | -0.235 | 0/25 | 7.5e-20 | loses |
| LOG_MPPB | -0.081 | 4/25 | 3.1e-05 | loses |
| LOG_MBPB | -0.153 | 1/25 | 7.8e-08 | loses |
| LOG_MGMB | -0.084 | 2/25 | 3.8e-06 | loses |
The obvious objection is the head, since Monroe uses TabPFN and this arm uses TabICL. So the same embeddings were run through TabPFN at Monroe's settings. Across the 225 folds that moves Mol-JEPA by 0.013 R² and 0.013 Spearman ρ — detectable, at p = 0.003 and 3 × 10⁻¹⁰, and about a fourteenth of the distance to Monroe. The gap is the representation, not the predictor bolted onto it.
None of which makes it a bad model. On Caco-2 permeability it reaches R² 0.135 where LightGBM manages −0.014 and MEGA-CL −0.747, and on LOG_MGMB, the smallest endpoint in the study, it reaches 0.503 against CheMeleon's 0.642. It is a respectable model that happens to be in a study with two better ones.
Mol-JEPA's authors also evaluated on this data set, and here the question of label overlap is a real one. Two of the fourteen modalities are experimental label vectors from ChEMBL, PCBA and TDC, and TDC does carry ADME tasks. It is also the one model where the question can be settled exactly, because the authors released the entire pre-training table, 4,663,780 rows, with an InChIKey for every molecule.
Joining our 7,608 molecules to it gives no exact key matches at all. Two molecules share a connectivity block with one of ours, both from PubChem BioAssay, and neither carries an ADME measurement. The table does have columns named for the nine ExpansionRx endpoints, but every one of them is empty across all 4.66 million rows. Whatever this model saw in pre-training, it was not these molecules and it was not these labels.
The check is 11_check_pretraining_overlap.py in the repository. Monroe's corpus is not published as a table, but its task list is, and it contains no ADME endpoint to leak.
Several endpoints post R² at or below zero while ranking test compounds perfectly respectably. The test set is genuinely shifted from the training set — for LOG_Caco_Efflux the test mean is 0.92 against 0.51 in training — so a model that hedges toward the training mean is punished by R² while its ordering survives. Spearman ρ tells the more useful story for triage.
| Endpoint | LightGBM | ChemProp ST | ChemProp MT | CheMeleon | MEGA-CL | Monroe | Mol-JEPA |
|---|---|---|---|---|---|---|---|
| LogD | 0.713±0.017 | 0.855±0.013tied | 0.829±0.014 | 0.843±0.009 | 0.801±0.016 | 0.858±0.011tied | 0.725±0.011 |
| LogS | 0.478±0.022 | 0.554±0.015 | 0.573±0.013tied | 0.562±0.018tied | 0.510±0.022 | 0.576±0.012tied | 0.481±0.014 |
| LOG_HLM | 0.531±0.020 | 0.497±0.040 | 0.506±0.036 | 0.583±0.023 | 0.466±0.040 | 0.620±0.020best | 0.539±0.017 |
| LOG_MLM | 0.441±0.035 | 0.410±0.046 | 0.414±0.032 | 0.482±0.037 | 0.423±0.056 | 0.530±0.033best | 0.380±0.051 |
| LOG_Caco_AB | 0.469±0.043 | 0.327±0.095 | 0.501±0.059 | 0.564±0.052 | 0.225±0.071 | 0.706±0.020best | 0.434±0.034 |
| LOG_Caco_Efflux | 0.512±0.058 | 0.559±0.038 | 0.539±0.041 | 0.633±0.048 | 0.273±0.112 | 0.710±0.017best | 0.584±0.025 |
| LOG_MPPB | 0.611±0.041 | 0.511±0.061 | 0.701±0.030 | 0.782±0.034best | 0.586±0.055 | 0.634±0.032 | 0.585±0.037 |
| LOG_MBPB | 0.696±0.042 | 0.706±0.042 | 0.813±0.019 | 0.857±0.016best | 0.767±0.031 | 0.826±0.021 | 0.728±0.043 |
| LOG_MGMB | 0.609±0.058 | 0.388±0.069 | 0.773±0.014 | 0.808±0.013tied | 0.709±0.038 | 0.790±0.027tied | 0.694±0.036 |
MAE is the metric a chemist reads closest to directly: it is in log units of the measurement, and it does not depend on how the test set happens to be spread. That makes it the fairest of the three here, because it is unmoved by the label shift that drags R² below zero. The ordering barely changes. Monroe has the lowest error on five of nine endpoints and CheMeleon on the other four, split the same way as before: metabolism and permeability against binding. LightGBM, MEGA-CL and Mol-JEPA are significantly worse than the best on all nine.
The +1 is there because six of the nine endpoints report zeros that plain log10 cannot take: 179 of them in human microsomal stability, 156 in mouse, and fewer than a dozen apiece in the other four.
It also makes the transform nearly linear below x = 1 and only properly logarithmic above about x = 10, and a good deal of this data sits in the flat part: 22% of mouse brain binding values and 17% of Caco-2 Papp values are below 1 in their native units.
So a fixed fold-change is not worth a fixed distance. On plasma protein binding, a five-fold difference in free fraction spans 0.67 units between 10% and 50% unbound, but only 0.14 units between 0.1% and 0.5%. The scale under-weights errors on the most tightly bound compounds, which is the end a chemist usually cares about most.
Every method is fit and scored on the same transformed target, so the comparison below is untouched by this. It is the absolute reading that needs care. An MAE of 0.175 is not a clean 1.5-fold error.
| Endpoint | LightGBM | ChemProp ST | ChemProp MT | CheMeleon | MEGA-CL | Monroe | Mol-JEPA |
|---|---|---|---|---|---|---|---|
| LogD | 0.545±0.012 | 0.408±0.020tied | 0.439±0.020 | 0.427±0.018 | 0.468±0.022 | 0.402±0.015tied | 0.530±0.011 |
| LogS | 0.454±0.015 | 0.393±0.018 | 0.402±0.013 | 0.358±0.017best | 0.424±0.028 | 0.380±0.009 | 0.456±0.013 |
| LOG_HLM | 0.332±0.009 | 0.347±0.017 | 0.338±0.020 | 0.314±0.014 | 0.377±0.030 | 0.293±0.009best | 0.320±0.007 |
| LOG_MLM | 0.410±0.014 | 0.433±0.025 | 0.426±0.015 | 0.399±0.030 | 0.422±0.024 | 0.358±0.011best | 0.411±0.023 |
| LOG_Caco_AB | 0.340±0.022 | 0.378±0.035 | 0.341±0.029 | 0.305±0.033 | 0.441±0.041 | 0.248±0.011best | 0.316±0.010 |
| LOG_Caco_Efflux | 0.432±0.019 | 0.423±0.017 | 0.416±0.022 | 0.375±0.034 | 0.488±0.026 | 0.346±0.012best | 0.383±0.013 |
| LOG_MPPB | 0.288±0.020 | 0.294±0.030 | 0.234±0.014 | 0.212±0.021best | 0.270±0.024 | 0.259±0.013 | 0.285±0.014 |
| LOG_MBPB | 0.223±0.018 | 0.232±0.024 | 0.179±0.010 | 0.157±0.018best | 0.205±0.017 | 0.192±0.016 | 0.234±0.020 |
| LOG_MGMB | 0.302±0.034 | 0.304±0.018 | 0.185±0.009tied | 0.175±0.015tied | 0.234±0.029 | 0.204±0.033 | 0.224±0.018 |
The gaps are worth reading in absolute terms rather than as ranks. On LOG_MGMB CheMeleon is at 0.175 against LightGBM's 0.302, so the fingerprint model is wrong by roughly 73% more per compound. On LOG_HLM the six methods span 0.293 to 0.377, a spread of 0.084 log units, narrow enough that the assay noise probably matters more than the choice.
Everything above is one data set. A comparison run once is a hypothesis, so the same seven methods, the same protocol and the same statistics were run again on Biogen's public ADME set3: 3,521 commercially sourced compounds on six endpoints, unrelated to the first collection in chemistry, in provenance and in who measured it.
The two files are not the same kind of thing. ExpansionRx is a lead optimisation campaign — 7,608 molecules in 651 clusters, 170 of them singletons. The Biogen set is a diverse commercial selection: 3,521 molecules in 1,905 clusters, 1,123 singletons. It carries no train/test split, so one was built by holding out whole clusters to the same 30% the ExpansionRx file uses. That makes the Biogen holdout cluster-pure, which the ExpansionRx one is not: 59 of its 651 clusters straddle the boundary. Biogen is the harder test of the two, so absolute numbers do not transfer between the halves of this page. Rankings within each half do.
Eighteen combinations this time, six endpoints by three metrics. Monroe takes all eighteen. Nothing else is best on one, and nothing else is so much as tied with the best on one. Against CheMeleon it wins every fold of every endpoint on every metric — 450 out of 450.
| Endpoint | LightGBM | ChemProp ST | ChemProp MT | CheMeleon | MEGA-CL | Monroe | Mol-JEPA |
|---|---|---|---|---|---|---|---|
| LOG_SOL | 0.275±0.024 | 0.339±0.027 | 0.345±0.023 | 0.363±0.021 | 0.278±0.042 | 0.504±0.013best | 0.383±0.015 |
| LOG_HLM | 0.326±0.015 | 0.381±0.023 | 0.396±0.017 | 0.474±0.019 | 0.275±0.029 | 0.556±0.009best | 0.429±0.010 |
| LOG_RLM | 0.389±0.011 | 0.459±0.015 | 0.470±0.014 | 0.513±0.012 | 0.372±0.026 | 0.569±0.007best | 0.459±0.005 |
| LOG_MDR1_ER | 0.449±0.010 | 0.523±0.011 | 0.523±0.011 | 0.520±0.009 | 0.311±0.038 | 0.641±0.008best | 0.494±0.009 |
| LOG_HPPB | 0.129±0.094 | -0.064±0.059 | 0.166±0.049 | 0.230±0.065 | -0.292±0.142 | 0.478±0.036best | 0.281±0.085 |
| LOG_RPPB | 0.118±0.067 | -0.005±0.044 | 0.112±0.056 | 0.154±0.061 | -0.426±0.291 | 0.415±0.051best | 0.228±0.123 |
So the headline replicates and the interesting part does not. On ExpansionRx the wins split by assay, with CheMeleon taking the three tissue-binding endpoints. That pattern is gone. Biogen's two plasma protein binding endpoints are precisely where CheMeleon ought to have been strong, and they are where it loses by the widest margin on the page: R² 0.478 against 0.230 on human, 0.415 against 0.154 on rat.
What shows through instead is data volume, and the clearest sight of it is the one comparison where the two frozen-encoder models disagree. Mol-JEPA, best at nothing in the first half, beats CheMeleon here on the three endpoints with the least data — solubility, and the two protein binding assays with 128 and 109 training molecules — and loses to it on the three with the most. In-context prediction from a frozen encoder degrades gently as the labels run out. Fine-tuning falls off a cliff: on those two endpoints single-task ChemProp posts R² of −0.064 and −0.005, worse than predicting the training mean, and MEGA-CL manages −0.292 and −0.426.
| Endpoint | Δ R² | Folds won | p | Verdict |
|---|---|---|---|---|
| LOG_SOL | +0.019 | 20/25 | 6.1e-05 | wins |
| LOG_HLM | -0.045 | 1/25 | 2.3e-11 | loses |
| LOG_RLM | -0.053 | 0/25 | 1.5e-16 | loses |
| LOG_MDR1_ER | -0.026 | 0/25 | 3.2e-10 | loses |
| LOG_HPPB | +0.051 | 20/25 | 3.3e-02 | wins |
| LOG_RPPB | +0.074 | 21/25 | 5.0e-03 | wins |
Three things do carry across. Monroe is the most accurate method on both collections and also the steadiest, with the smallest fold-to-fold standard deviation on all three metrics in both. MEGA-CL is the worst on both. And a from-scratch D-MPNN is still not reliably better than a fingerprint baseline: on Biogen, single-task ChemProp beats LightGBM on the four larger endpoints and loses to it on the two smallest.
MAE says the same thing, which is worth checking rather than assuming: R² is sensitive to how the test set happens to be spread, and a verdict that held on only one metric would be a verdict about the split. Monroe has the lowest error on all six endpoints, by 0.029 log units on rat microsomal stability at the narrowest and 0.091 on rat protein binding at the widest. The runner-up changes with the amount of data, and splits the six endpoints the same way R² did: CheMeleon is second on the three with the most training molecules, Mol-JEPA on the three with the least.
| Endpoint | LightGBM | ChemProp ST | ChemProp MT | CheMeleon | MEGA-CL | Monroe | Mol-JEPA |
|---|---|---|---|---|---|---|---|
| LOG_SOL | 0.413±0.009 | 0.381±0.011 | 0.383±0.007 | 0.370±0.007 | 0.397±0.020 | 0.322±0.004best | 0.360±0.004 |
| LOG_HLM | 0.395±0.005 | 0.364±0.010 | 0.364±0.007 | 0.337±0.007 | 0.396±0.012 | 0.299±0.003best | 0.360±0.003 |
| LOG_RLM | 0.470±0.005 | 0.431±0.006 | 0.428±0.006 | 0.404±0.006 | 0.464±0.009 | 0.375±0.003best | 0.434±0.003 |
| LOG_MDR1_ER | 0.385±0.005 | 0.355±0.005 | 0.355±0.005 | 0.340±0.004 | 0.421±0.013 | 0.294±0.002best | 0.359±0.004 |
| LOG_HPPB | 0.576±0.033 | 0.650±0.018 | 0.583±0.020 | 0.558±0.025 | 0.702±0.043 | 0.438±0.017best | 0.516±0.035 |
| LOG_RPPB | 0.554±0.021 | 0.630±0.010 | 0.571±0.020 | 0.553±0.023 | 0.700±0.067 | 0.445±0.026best | 0.536±0.045 |
31% of the HLM values and 11% of the RLM values sit exactly on the assay floor, stacked on one number because the compound was too stable to measure a rate. A large block of ties is easy to order, so that flatters Spearman ρ, and it makes MAE look better than the assay deserves.
The two protein binding endpoints have 128 and 109 training molecules here. The repository's own splits for them hold about nine times that, drawn from in-house measurements that were never released, so these numbers are not comparable with the ones in the paper.
The Mol-JEPA pre-training check was run again, and it matters more on this side: the Biogen set is public and reaches that pre-training table through Therapeutic Data Commons, which carries a column for each of the six endpoints. 59 of the 3,521 molecules do appear by exact InChIKey, 1.7% of them, through nabla-DFT, PubChem BioAssay and TDC, with 132 more sharing a connectivity block. Not one carries a Biogen measurement, and those six label columns are empty across all 4.66 million rows. Structures overlap slightly. Labels do not.
The measurements are the OpenADMET–ExpansionRx blind challenge set, contributed by Expansion Therapeutics and released by OpenADMET under CC BY 4.0. Every endpoint was put on a log10(x+1) scale except LogD, which is already a log quantity. The +1 is there because six endpoints report zeros, which plain log10 cannot take. LogS and Caco-2 Papp carry a further −6, which moves them from µM and 10⁻⁶ cm/s into molar and cm/s. That shift is a constant, so it cancels in every metric here. The 651 chemical clusters come from BitBIRCH-Lean at its default settings.
The second collection is Biogen's public ADME set, 3,521 compounds on six endpoints, released under MIT with the paper of Fang et al.3 Its values arrive already log transformed, so nothing was done to them. It carries no train/test split, so 00b_prepare_biogen.py builds one: BitBIRCH-Lean clusters the 3,521 molecules into 1,905 groups, and whole clusters are held out in a seeded order until the test set reaches the same 30% the ExpansionRx file uses. Everything downstream of that point is shared between the two collections — the same fold construction, the same seven arms, the same statistics.
The ds column fixes the train/test split (5,326 / 2,282 molecules after dropping unparseable SMILES and rows with no measured endpoint). The 25 replicates come from five repeats of a five-fold GroupKFold over the training molecules, grouped by cluster so no chemotype straddles the train/validation boundary. Each fold fits on four fifths, early-stops on the held-out fifth where there is a training loop to stop, and is scored on the same untouched test set — so every method sees identical training molecules in every fold and a difference in the metrics is a difference in the method.
Every script, the data set and all 2,483,250 predictions are at model-validation-central/studies/expansion-ml-comparison. The figures and tables on this page rebuild from the stored predictions in about a minute, with no retraining.
Statistics follow the approach in “Even More Thoughts on ML Method Comparisons”: distributions of fold-level metrics, Tukey HSD corrected for multiple comparisons, and paired tests using the folds as the pairing. Every individual prediction is retained in predictions_all.parquet.
chemprop ships as --from-foundation CHEMELEON; preprint at arXiv:2506.15792. 10.1021/acs.jcim.6c01546