5×5 cross validation · two data sets
Nine 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 nine are pre-trained molecular foundation models, and only one of those four wins anything at all. The method that wins most does no downstream training whatsoever — it freezes its encoder and predicts in context. It appears three times, under three different tabular models, which is what lets the page separate what the frozen representation is worth from what the predictor bolted onto it is worth. The answer is about ten to one.
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, CheMeleon is alone at the top on 5 and shares it on 6. The three Monroe arms are never alone, because almost everywhere one of them is at the top the others are there with it: Monroe with TabPFN 3.5 shares the top on 21 combinations, and Monroe with TabPFN 3 and Monroe with TabICL on 18 each. Nothing else is ever at the top, alone or otherwise. The split between Monroe and CheMeleon 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.
On the seven-method version of this page, when Monroe appeared once, it was alone at the top of 12 of these 27 combinations. It has not got worse. Two more arms were added that differ from it only in which tabular model reads its embeddings, and the tally counts alone and tied symmetrically, so arms that cannot be told apart take each other out of the alone column wherever they are both on top. That is the count behaving correctly. It is also a warning about reading these tallies as a league table: adding a near duplicate of a method moves that method's numbers without changing a single prediction it makes.
The question the two arms exist to answer is asked directly further down, and it is a paired question, not a tally.
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 nine 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/PFN3 | Monroe/PFN3.5 | Monroe/ICL | Mol-JEPA |
|---|---|---|---|---|---|---|---|---|---|
| LogD | 0.510±0.021 | 0.700±0.026 | 0.667±0.033 | 0.671±0.019 | 0.617±0.029 | 0.718±0.017tied | 0.720±0.012tied | 0.725±0.014tied | 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.471±0.024tied | 0.464±0.029tied | 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.049tied | 0.354±0.050tied | 0.329±0.034tied | 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.048tied | 0.267±0.041tied | 0.242±0.051tied | 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.041tied | 0.445±0.068tied | 0.371±0.067tied | 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.054tied | 0.294±0.059tied | 0.285±0.080tied | 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.344±0.075 | 0.315±0.080 | 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.600±0.054 | 0.622±0.063 | 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.598±0.117tied | 0.605±0.093tied | 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-CL10 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.
Which TabPFN matters, and the page carries two arms because of it. This section is the one the Monroe paper was written against, TabPFN 3. The next section is the same encoder, the same embeddings and the same folds with TabPFN 3.5, released while this study was already built.
| 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 on the page on R² and on Spearman ρ, and within 0.0001 of Mol-JEPA's on MAE: 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.
TabPFN 3.59 was released on 15 September 2026, after everything above had been run. It reads the same frozen embeddings out of the same cache, on the same folds, through the same wrapper at the same ensemble settings. The checkpoint that does the in-context prediction is the only thing that differs between this arm and the last one, which makes it the cleanest question on the page: what does a year of tabular foundation model buy a molecular one?
Less than the release notes would suggest, and more than nothing. Across the 45 endpoint × metric combinations on both collections, the newer head never costs Monroe a place in the top group and gains it four: Spearman ρ on mouse brain binding and R² and MAE on solubility in the ExpansionRx set, and MAE on MDR1 efflux in the Biogen set, which is the one combination anywhere on this page where a Monroe arm stands alone at the top. Everywhere else the two heads are statistically indistinguishable.
| Endpoint | Δ R² | Folds won | p | Verdict |
|---|---|---|---|---|
| LogD | +0.002 | 13/25 | 2.8e-01 | no call |
| LogS | +0.029 | 23/25 | 8.3e-08 | wins |
| LOG_HLM | +0.040 | 24/25 | 5.2e-09 | wins |
| LOG_MLM | -0.024 | 7/25 | 8.0e-03 | loses |
| LOG_Caco_AB | -0.026 | 5/25 | 5.5e-03 | loses |
| LOG_Caco_Efflux | +0.020 | 20/25 | 1.3e-02 | wins |
| LOG_MPPB | +0.044 | 20/25 | 2.3e-05 | wins |
| LOG_MBPB | +0.009 | 14/25 | 2.6e-01 | no call |
| LOG_MGMB | +0.011 | 20/25 | 8.3e-02 | no call |
The per-fold pairing is sharper than the Tukey correction, and it shows a real but small effect with a direction rather than a uniform lift. On ExpansionRx the newer head raises mean R² on seven of the nine endpoints and lowers it on two; four of those gains and both of the losses survive a paired test over the folds. The largest gains are on mouse plasma protein binding (+0.044) and human microsomal stability (+0.040), the largest loss on Caco-2 permeability (−0.026), and mouse microsomal stability is the one endpoint it loses on all three metrics. On Biogen it improves three of six — human microsomal stability, human plasma protein binding and MDR1 efflux — and the other three do not move enough to separate from zero. Median movement across both collections is about a hundredth of an R², which is detectable over 25 folds and invisible next to the gap between Monroe and anything that is not Monroe.
It is not free. The 225 ExpansionRx folds took 63 minutes against TabPFN 3's 14, and the 150 Biogen folds 23 minutes more, so the newer head costs about four and a half times the inference for a hundredth of an R². That is still the cheapest arm on the page by a wide margin — CheMeleon takes six hours on the same card and MEGA-CL twenty-one — but it is the one place in this study where a clear accuracy gain and a clear cost sit next to each other, and the gain is the smaller of the two.
From tabpfn 9.0.0 a checkpoint can declare the softmax temperature it was trained for, and the TabPFN 3.5 regression checkpoint declares 1.0. Monroe's wrapper passes 0.9 to every model, which is what TabPFN applied before checkpoints could ask for one. Both arms here run at that 0.9, so that they differ in the checkpoint and nothing else — which leaves the newer one a shade off its own default, and that is worth measuring rather than waving at.
So the same 375 folds were run again at the temperature the checkpoint asks for. It is a coin flip: of the 45 combinations, 22 come out better at 1.0 and 23 at 0.9. The movements are an order of magnitude smaller than the change of head — the largest is 0.013 on LogS MAE and the median is 0.0007, against R² gains up to 0.044 for the checkpoint itself. Holding the temperature at Monroe's 0.9 neither flatters the newer head nor handicaps it.
That run is a control, not an arm. It never enters the figures, and it is results/<dataset>/sensitivity/monroe35_temperature.csv in the repository.
The conclusion the rest of the page reaches is untouched by which head is used. Every statement below about Monroe against CheMeleon, against Mol-JEPA, against LightGBM or against MEGA-CL holds for both arms, with the same sign and very nearly the same margin.
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. That objection can be answered from both sides, because both crossings have been run. Mol-JEPA's embeddings through TabPFN at Monroe's settings move it 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. And Monroe's embeddings through TabICL are an arm of this comparison in their own right.
Two frozen representations and two in-context heads make four combinations, and all four are on this page. Reading down a column changes the head and holds the representation; reading across a row does the opposite. It is the cleanest decomposition the study can offer, because nothing is trained in any of the four and the folds are identical throughout.
| Frozen representation | TabPFN 3 | TabICL |
|---|---|---|
| Monroe, 720-d | 0.477 | 0.471 |
| Mol-JEPA, 512-d | control only | 0.311 |
Mean R² over all fifteen endpoints and both data sets. The Mol-JEPA row's TabPFN cell is the control described above rather than an arm, so it is not scored here; its effect is quoted in the text.
Changing the head moves R² by a median of 0.016 across the fifteen endpoints, and it does not even do that in a consistent direction — TabICL is the better head on eight of the fifteen and the worse one on seven, and which it is depends on the data set rather than the endpoint: it wins on eight of the nine ExpansionRx endpoints and loses on five of the six Biogen ones. Changing the representation moves R² by a median of 0.168, in the same direction, on fifteen endpoints out of fifteen. The representation is worth about ten times the head.
The one place the head is not cheap is Caco-2 permeability, where dropping TabPFN costs Monroe 0.100 R², and mouse microsomal stability, where it costs 0.048. Both are ExpansionRx endpoints, and both are places where Monroe's lead over everything else is widest. Where a representation has the most to say, it matters more which model is listening.
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/PFN3 | Monroe/PFN3.5 | Monroe/ICL | 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.858±0.008tied | 0.861±0.009tied | 0.725±0.011 |
| LogS | 0.478±0.022 | 0.554±0.015 | 0.573±0.013tied | 0.562±0.018 | 0.510±0.022 | 0.576±0.012tied | 0.587±0.010tied | 0.577±0.013tied | 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.020tied | 0.625±0.025tied | 0.613±0.019tied | 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.033tied | 0.499±0.035tied | 0.479±0.039 | 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.020tied | 0.715±0.023tied | 0.666±0.029 | 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.017tied | 0.733±0.019tied | 0.732±0.024tied | 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.655±0.034 | 0.633±0.038 | 0.585±0.037 |
| LOG_MBPB | 0.696±0.042 | 0.706±0.042 | 0.813±0.019 | 0.857±0.016tied | 0.767±0.031 | 0.826±0.021 | 0.831±0.018tied | 0.832±0.021tied | 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.797±0.029tied | 0.794±0.031tied | 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. A Monroe arm 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/PFN3 | Monroe/PFN3.5 | Monroe/ICL | 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.400±0.011tied | 0.397±0.011tied | 0.530±0.011 |
| LogS | 0.454±0.015 | 0.393±0.018 | 0.402±0.013 | 0.358±0.017tied | 0.424±0.028 | 0.380±0.009 | 0.369±0.009tied | 0.382±0.013 | 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.009tied | 0.285±0.010tied | 0.289±0.008tied | 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.011tied | 0.366±0.011tied | 0.371±0.012tied | 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.011tied | 0.251±0.016tied | 0.273±0.014 | 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.012tied | 0.340±0.013tied | 0.340±0.018tied | 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.252±0.015 | 0.258±0.015 | 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.191±0.014 | 0.184±0.017 | 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.200±0.036 | 0.198±0.031tied | 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 eight methods span 0.285 to 0.377, a spread of 0.093 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 nine 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 that is not Monroe is best on one, and nothing that is not Monroe is so much as tied with the best on one. Against CheMeleon a Monroe arm wins every fold of every endpoint on every metric — 450 out of 450.
Which Monroe matters more here than it did on ExpansionRx. The two TabPFN arms are on top together on 17 of the 18, the exception being MAE on MDR1 efflux, where TabPFN 3.5 separates from TabPFN 3 and stands alone. The TabICL arm reaches the top on only 9. Its R² is never far off — it trails TabPFN 3 by between 0.002 and 0.025 on five of the six endpoints — but the folds are tightly enough paired that a deficit that small still separates. This is the one place in the study where the choice of head is worth arguing about, and it is the half that the ExpansionRx result would not have predicted.
| Endpoint | LightGBM | ChemProp ST | ChemProp MT | CheMeleon | MEGA-CL | Monroe/PFN3 | Monroe/PFN3.5 | Monroe/ICL | 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.013tied | 0.503±0.011tied | 0.488±0.013tied | 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.009tied | 0.563±0.008tied | 0.531±0.009 | 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.007tied | 0.568±0.005tied | 0.556±0.005 | 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.008tied | 0.651±0.005tied | 0.626±0.007 | 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.036tied | 0.510±0.040tied | 0.494±0.061tied | 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.051tied | 0.407±0.057tied | 0.412±0.072tied | 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, and its two heads are indistinguishable on that too. 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, on either head, 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/PFN3 | Monroe/PFN3.5 | Monroe/ICL | 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.004tied | 0.321±0.004tied | 0.326±0.004tied | 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.003tied | 0.294±0.003tied | 0.313±0.003 | 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.003tied | 0.372±0.002tied | 0.383±0.003 | 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.002 | 0.288±0.002best | 0.300±0.002 | 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.017tied | 0.420±0.018tied | 0.433±0.031tied | 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.026tied | 0.449±0.024tied | 0.456±0.032tied | 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 3,192,750 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.6c01546tabpfn 9.0.0, and the head of the second Monroe arm here. priorlabs.ai/technical-reports/tabpfn-3-5