5×5 cross validation · two data sets
Trimole-Hybrid1 argues that no single molecular representation suits every ADMET endpoint, so it builds a pool of candidate predictors, fits all of them, and keeps whichever wins on a validation split. Here it is put against four fixed architectures on fifteen endpoints across two unrelated data sets — 22,500 candidate fits to produce 1,425 fold models, every one scored on molecules it never saw. It loses to a single well-initialised graph network on both, for two reasons that only show up when you look at what it picked: nothing in its pool learns a representation, and on one of the two data sets the split it selects on does not resemble the split it is scored on.
The other pre-trained methods benchmarked in this project run their authors' own code against their authors' own checkpoints. Trimole-Hybrid cannot: its public release describes itself as “not a one-command full rerun bundle”, ships filesystem paths as placeholders, includes no trained weights or cached embeddings, is wired throughout to the TDC benchmark's directory layout, and reserves all rights pending a licence decision.
What follows was therefore written from the paper and from that source read as a specification, using checkpoints obtained independently from their original authors4, 5, 6. It reproduces the method — a candidate pool over four molecular views, and selection on validation only — not the paper's numbers. Where a result here disagrees with the published benchmark, this reimplementation is the more likely explanation.
Every other method on this page is an architecture. You hand it molecules, it trains, and the model you get is the model the architecture implies. Trimole-Hybrid is a procedure instead. For each endpoint and each fold it assembles sixty candidate predictors from three ingredients, fits every one on the training molecules, scores them all on the held-out validation fifth, and keeps exactly one.
Five molecular views — the classical chemistry priors alone (Morgan counts, feature-Morgan, MACCS, Avalon, ErG, atom pairs, topological torsions and the RDKit descriptor block7), then those priors joined by a ChemBERTa sequence embedding6, a KPGT graph embedding4, a UniMol 3D embedding5, or all three at once.
Three chemistry blocks — different subsets of those priors, since endpoints differ in how much of them they want.
Four backends — XGBoost, extremely randomised trees, a random forest and ridge regression.
Five times three times four is sixty. The winner predicts the test set; the other fifty-nine are discarded.
The protocol this project already uses fits the method without modification, because every fold here already carries a validation split. Each candidate trains on the same four fifths of the training molecules that every other method trains on, is scored on the held-out fifth, and the winner is applied to the fixed test set. Nothing is refit on train-plus-validation afterwards, which would have handed this arm more training data than the other four and quietly broken the comparison.
Tukey HSD9 across the 25 folds, counted over every endpoint × metric combination. Tied means the method could not be distinguished from the leader at α = 0.05.
The answer to the question in the headline, on this data set, is no. CheMeleon — one fixed architecture, chosen once and applied to every endpoint — is on top of 25 of the 27 combinations. Trimole-Hybrid, having fitted sixty candidates per fold and kept the best of them on evidence it was entitled to use, is on top of 11, and beaten outright on 16.
It is not last. It comfortably beats LightGBM, which is on top of nothing, and it beats both from-scratch ChemProp variants on the tally. The selection is buying something. It is just buying less than a well-initialised message-passing network costs.
| Endpoint | LightGBM | ChemProp ST | ChemProp MT | CheMeleon | Trimole |
|---|---|---|---|---|---|
| LogD | 0.510±0.021 | 0.700±0.026tied | 0.667±0.033tied | 0.671±0.019tied | 0.399±0.252 |
| LogS | 0.335±0.036 | 0.447±0.038tied | 0.454±0.025tied | 0.474±0.029tied | 0.293±0.267 |
| LOG_HLM | 0.139±0.045 | 0.087±0.088 | 0.118±0.104 | 0.221±0.071tied | 0.178±0.032tied |
| LOG_MLM | 0.084±0.064 | -0.007±0.116 | 0.033±0.068 | 0.135±0.141 | 0.247±0.032best |
| LOG_Caco_AB | -0.014±0.129 | -0.307±0.264 | -0.046±0.179 | 0.160±0.191tied | 0.209±0.084tied |
| LOG_Caco_Efflux | -0.135±0.096 | -0.103±0.088 | -0.057±0.105 | 0.110±0.158tied | 0.055±0.095tied |
| LOG_MPPB | 0.229±0.105 | 0.120±0.168 | 0.445±0.072 | 0.541±0.093best | 0.183±0.144 |
| LOG_MBPB | 0.477±0.080 | 0.413±0.103 | 0.642±0.037 | 0.713±0.061best | 0.473±0.108 |
| LOG_MGMB | 0.260±0.148 | 0.279±0.063 | 0.616±0.020tied | 0.642±0.027tied | 0.490±0.069 |
| Endpoint | LightGBM | ChemProp ST | ChemProp MT | CheMeleon | Trimole |
|---|---|---|---|---|---|
| LogD | 0.545±0.012 | 0.408±0.020tied | 0.439±0.020 | 0.427±0.018tied | 0.569±0.066 |
| LogS | 0.454±0.015 | 0.393±0.018 | 0.402±0.013 | 0.358±0.017best | 0.455±0.043 |
| LOG_HLM | 0.332±0.009 | 0.347±0.017 | 0.338±0.020 | 0.314±0.014tied | 0.324±0.007tied |
| LOG_MLM | 0.410±0.014 | 0.433±0.025 | 0.426±0.015 | 0.399±0.030 | 0.370±0.008best |
| LOG_Caco_AB | 0.340±0.022 | 0.378±0.035 | 0.341±0.029 | 0.305±0.033tied | 0.305±0.015tied |
| LOG_Caco_Efflux | 0.432±0.019 | 0.423±0.017 | 0.416±0.022 | 0.375±0.034best | 0.394±0.019 |
| LOG_MPPB | 0.288±0.020 | 0.294±0.030 | 0.234±0.014 | 0.212±0.021best | 0.279±0.017 |
| LOG_MBPB | 0.223±0.018 | 0.232±0.024 | 0.179±0.010 | 0.157±0.018best | 0.220±0.023 |
| LOG_MGMB | 0.302±0.034 | 0.304±0.018 | 0.185±0.009tied | 0.175±0.015tied | 0.228±0.018 |
This is the part no other method has. Because the selection happens before the test set is touched, what it picked is a result rather than a diagnostic — and it is the result that can falsify the method's premise. If the choice never varies between endpoints, the pool is decoration. If it never repeats within an endpoint, the choice is noise.
| Endpoint | Molecular view | Chemistry block | Backend | Mean val R² |
|---|---|---|---|---|
| LogD | + KPGT20/25 | core maccs fcfp11/25 | ridge24/25 | 0.822 |
| LogS | chemistry only16/25 | wide chem24/25 | xgb23/25 | 0.550 |
| LOG_HLM | chemistry only24/25 | core pair torsion11/25 | extratrees15/25 | 0.472 |
| LOG_MLM | chemistry only24/25 | wide chem9/25 | extratrees19/25 | 0.584 |
| LOG_Caco_AB | chemistry only22/25 | wide chem18/25 | xgb23/25 | 0.495 |
| LOG_Caco_Efflux | chemistry only20/25 | wide chem19/25 | xgb23/25 | 0.512 |
| LOG_MPPB | chemistry only16/25 | wide chem14/25 | xgb21/25 | 0.653 |
| LOG_MBPB | + KPGT16/25 | core maccs fcfp10/25 | ridge16/25 | 0.736 |
| LOG_MGMB | + KPGT11/25 | core maccs fcfp13/25 | ridge19/25 | 0.654 |
The choice varies by endpoint and holds within one, which is the pattern the method needs: the modal view accounts for 75% of an endpoint's folds. Both microsomal stability endpoints take the chemistry priors alone on 24 of 25 folds; LogD takes KPGT on 20 of 25. So the pool is doing real work rather than dressing up a fixed answer.
But look at what it declines. Across all 225 folds the classical chemistry priors win alone 140 times, KPGT 66, and the other two encoders together 11. Random forest, one of the four backends, wins twice. Most of the candidate pool exists to be rejected — which is the paper's own ablation finding, arrived at from the other direction.
One fold is worth singling out. LOG_MGMB r1 f0 has six molecules in its validation split, and the candidate that won them scored an R² of −0.090. On the smallest endpoint the selection signal runs out, and what is left is a coin toss between sixty models.
Folds are paired: both methods saw the same molecules in the same split, so the comparison is within-fold rather than between averages.
| Endpoint | Δ R² | Folds won | p | Verdict |
|---|---|---|---|---|
| LogD | -0.272 | 0/25 | 1.5e-05 | loses |
| LogS | -0.181 | 0/25 | 2.0e-03 | loses |
| LOG_HLM | -0.043 | 8/25 | 1.1e-02 | loses |
| LOG_MLM | +0.112 | 21/25 | 5.6e-04 | wins |
| LOG_Caco_AB | +0.049 | 18/25 | 1.8e-01 | no call |
| LOG_Caco_Efflux | -0.055 | 5/25 | 3.2e-02 | loses |
| LOG_MPPB | -0.358 | 0/25 | 3.3e-10 | loses |
| LOG_MBPB | -0.239 | 0/25 | 5.0e-11 | loses |
| LOG_MGMB | -0.152 | 0/25 | 1.7e-10 | loses |
CheMeleon wins seven of the nine endpoints outright, loses one — LOG_MLM — and draws one. The losses are not close: on LogD, LogS, LOG_MPPB, LOG_MBPB and LOG_MGMB the selection procedure fails to take a single fold out of 25.
The reason is structural, and it is visible in the R² table above. On LogD, the endpoint with the most training data, single-task ChemProp reaches 0.700 and Trimole-Hybrid reaches 0.399 — worse than plain LightGBM on Morgan fingerprints, at 0.510. Every one of the sixty candidates is a fixed representation: a frozen encoder or a block of classical descriptors, handed to a tree ensemble or a ridge. Nothing in the pool learns a representation from the endpoint. Where there is enough data to learn one, a network that does so wins, and no amount of choosing between fixed alternatives closes the gap.
Where Trimole-Hybrid does win — LOG_MLM, and on the draw at Caco-2 A→B — is where every method is struggling and no representation is much good.
Everything above is one data set. The Biogen public ADME set8 is 3,521 commercially sourced compounds on six endpoints, far more chemically diverse, and split by holding out whole clusters. Same protocol, same pool, nothing retuned.
| Endpoint | LightGBM | ChemProp ST | ChemProp MT | CheMeleon | Trimole |
|---|---|---|---|---|---|
| LOG_SOL | 0.275±0.024 | 0.339±0.027 | 0.345±0.023 | 0.363±0.021best | 0.330±0.015 |
| LOG_HLM | 0.326±0.015 | 0.381±0.023 | 0.396±0.017 | 0.474±0.019best | 0.435±0.012 |
| LOG_RLM | 0.389±0.011 | 0.459±0.015 | 0.470±0.014 | 0.513±0.012best | 0.479±0.010 |
| LOG_MDR1_ER | 0.449±0.010 | 0.523±0.011tied | 0.523±0.011tied | 0.520±0.009tied | 0.498±0.010 |
| LOG_HPPB | 0.129±0.094 | -0.064±0.059 | 0.166±0.049 | 0.230±0.065tied | 0.258±0.053tied |
| LOG_RPPB | 0.118±0.067 | -0.005±0.044 | 0.112±0.056 | 0.154±0.061 | 0.227±0.056best |
| Endpoint | Molecular view | Chemistry block | Backend | Mean val R² |
|---|---|---|---|---|
| LOG_SOL | + KPGT16/25 | core maccs fcfp11/25 | xgb24/25 | 0.363 |
| LOG_HLM | + KPGT15/25 | wide chem16/25 | xgb25/25 | 0.460 |
| LOG_RLM | chemistry only17/25 | wide chem20/25 | xgb25/25 | 0.509 |
| LOG_MDR1_ER | + KPGT12/25 | wide chem17/25 | xgb25/25 | 0.551 |
| LOG_HPPB | chemistry only9/25 | core pair torsion10/25 | xgb22/25 | 0.506 |
| LOG_RPPB | chemistry only10/25 | core maccs fcfp11/25 | xgb21/25 | 0.458 |
The ranking replicates: CheMeleon is on top of 14 of the 18 combinations, Trimole-Hybrid 6, and the two from-scratch ChemProp variants 2 each. What does not replicate is what the method chose. On ExpansionRx the chemistry priors alone won 62% of folds and KPGT 29%; here KPGT wins most often and the priors drop to a third, while the modal choice within an endpoint falls from 75% of folds to 53%. The same procedure, given different chemistry, reaches for different evidence — and is less sure of itself.
Head to head it takes LOG_RPPB from CheMeleon on 19 of 25 paired folds and draws on LOG_HPPB, its only two results against CheMeleon here that are not defeats. These are the two smallest endpoints in either data set, 109 and 128 training molecules, and they are also precisely where CheMeleon is weakest. The selection procedure is not winning because it is good at small data; it is winning where the strongest fixed architecture happens to fail.
Putting the two data sets side by side explains the whole result. A procedure that picks its model on a validation split is making one assumption: that doing well on that split predicts doing well on the test set. That assumption is checkable, because every selection record stores the score the winning candidate earned on validation, and the fold metrics store what it then achieved.
| Endpoint | Val molecules | Val R² of winner | Test R² it got | Gap |
|---|---|---|---|---|
| LogD | 1007 | 0.822 | 0.399 | +0.423 |
| LogS | 1025 | 0.550 | 0.293 | +0.256 |
| LOG_HLM | 751 | 0.472 | 0.178 | +0.294 |
| LOG_MLM | 904 | 0.584 | 0.247 | +0.337 |
| LOG_Caco_AB | 431 | 0.495 | 0.209 | +0.286 |
| LOG_Caco_Efflux | 432 | 0.512 | 0.055 | +0.457 |
| LOG_MPPB | 260 | 0.653 | 0.183 | +0.470 |
| LOG_MBPB | 195 | 0.736 | 0.473 | +0.263 |
| LOG_MGMB | 44 | 0.654 | 0.490 | +0.164 |
| Endpoint | Val molecules | Val R² of winner | Test R² it got | Gap |
|---|---|---|---|---|
| LOG_SOL | 300 | 0.363 | 0.330 | +0.033 |
| LOG_HLM | 431 | 0.460 | 0.435 | +0.025 |
| LOG_RLM | 426 | 0.509 | 0.479 | +0.030 |
| LOG_MDR1_ER | 367 | 0.551 | 0.498 | +0.053 |
| LOG_HPPB | 25 | 0.506 | 0.258 | +0.248 |
| LOG_RPPB | 21 | 0.458 | 0.227 | +0.230 |
On ExpansionRx the winning candidate is flattered by between 0.16 and 0.47 R². It looks like a model that explains 82% of the variance in LogD and delivers 40%. On Biogen's four well-populated endpoints the same gap is 0.03 to 0.05 — the validation split is telling very nearly the truth. The two endpoints where Biogen's gap opens up, to 0.23 and 0.25, are the two with about two dozen validation molecules, which is small-sample noise rather than a split that misleads.
The difference is in how the test sets were made. Biogen's holdout was built here, by holding out whole BitBIRCH clusters — the same rule that builds the cross-validation folds, so validation and test are the same kind of problem and equally hard. The ExpansionRx split arrived with the challenge and was drawn some other way, so its held-out fifth and its test set are not the same kind of problem at all.
That is the risk a selection framework carries and a fixed architecture does not. CheMeleon does not care whether validation resembles the test set, because it never consults validation to decide what it is. Trimole-Hybrid stakes its entire output on that resemblance, sixty candidates deep. When it holds, the method is competitive. When it does not, the method optimises confidently for the wrong thing — and nothing in the procedure can tell it so.
Two components of the published method are absent. The learned gated-fusion network is replaced by feature-level concatenation plus the selection step, on the strength of the paper's own ablation, which found that a naive learned combiner did worse than task-wise selection on all 22 of its benchmark tasks. And the pool omits the seed-bagging, rank-blending and top-k sweeps of their full prediction zoo, which enlarge the pool without changing what it selects over.
Both omissions make this arm a little weaker than the published method. Neither changes what is being asked, which is whether selecting per endpoint beats committing to an architecture.
Reported the way “Even More Thoughts on ML Method Comparisons” argues comparisons should be: distributions over folds, simultaneous confidence intervals, paired tests, and no bolded maxima.
unimol_tools. ICLR 2023seyonec/ChemBERTa-zinc-base-v1. arXiv:2010.09885