CovaSyn
All Articles
Use Case8 min readJuly 15, 2026

Generative Molecule Design That Survives ADMET

Generative molecule design is easy; ADMET filtering is the hard part. A real CovaChem GA analog run through CovaTox and docking, with in-domain flags.

OK

Oliver Kraft

CovaSyn

Generative Molecule Design That Survives ADMET

Any generative model will hand you ten thousand molecules by lunchtime. The bottleneck was never generation. It is deciding which three of those ten thousand are worth a chemist's week, and being able to say why - including which of your own predictions you do not trust.

This article walks one designed molecule end to end: generation, druglikeness, ADMET and tox screening, then a binding check. Every number below is a verbatim output from a CovaSyn tool run, and the out-of-domain flags are shown rather than hidden, because those flags are what turn a score into a decision.

Generation is cheap, filtering is expensive

A genetic algorithm over a seed scaffold, a VAE, a diffusion model over 3D pockets - all of them produce valid SMILES at essentially zero marginal cost. What they do not produce is a reason to believe. The cost sits downstream: a synthesis attempt is days of a chemist's time, an in-vitro hERG patch clamp or Ames test is real money per compound, and a false negative that reaches in-vivo is the expensive kind of mistake.

So the useful question about a generative tool is not "can it invent molecules" but "what does it refuse, and on what evidence". A filter stack that passes everything is decoration.

The filter order that matters

Filters should run cheapest-first and most-decisive-first. In practice that means:

StageQuestionCostTool
1. ValidityIs this a real, parseable, standardisable molecule?millisecondscovabasic_validate, covabasic_standardize
2. Property windowMW, logP, QED, synthetic accessibilitymillisecondscovachem_druglikeness, covachem_profile
3. Nuisance substructuresPAINS, Brenk, structural alertsmillisecondscovabasic_filter_check, covatox_structural_alerts
4. Safety and ADMEThERG, Ames, DILI, CYP, permeabilitysecondscovatox_quickscreen, covatox_assess_admet
5. Applicability domainIs the model even entitled to an opinion here?secondscovatox_check_domain
6. Target hypothesisDoes it plausibly bind?minutes to hours, GPUcovadock_dock

Stage 5 is the one most pipelines skip, and it is the one that changes what you do with stages 4 and 6.

Worked example: one GA analog, all the way through

The molecule below was designed, not curated. covachem_design ran a genetic algorithm seeded from the sotorasib scaffold and returned a validated analog after 4 generations, with the internal GA score climbing from 0.26 to 0.37.

What `covachem_design` returned:

  • QED 0.77
  • Synthetic accessibility (SA) 2.44
  • MW 359
  • 6 of 6 druglikeness filters passed
  • RDKit-validated, PAINS 0, Brenk 0

That is a clean sheet on stages 1-3. On most generative-design demos, this is where the slide ends and the word "candidate" appears. It should not.

What `covatox_quickscreen`, `covatox_assess_admet` and `covatox_structural_alerts` returned for the same SMILES, with no edits:

EndpointPredictionDomain statusHow to read it
hERG0.0125, LOW riskin domain, production tierActionable. Deprioritise cardiac liability as a near-term concern.
Ames0.84out of domain, experimental tierNot actionable as a number. Treat as a prompt to test, not a result.
DILI0.90out of domain, experimental tierSame. A high score outside the domain is a flag on the model, not the molecule.
Structural alerts3rule-basedHalogenated aromatic, CYP pyridine / pyrimidine motifs. Known liabilities, not vetoes.

Two of the three model endpoints came back with numbers that look alarming and are, for this molecule, uninterpretable. A tool that had reported "Ames risk 0.84 - HIGH" without the domain flag would have sent a chemist chasing a mutagenicity story the model has no standing to tell.

Then the binding question.

covadock_dock placed the same designed SMILES into KRAS G12C (PDB 6OIM) and returned -9.44 kcal/mol, rated "strong", with 47 interactions logged including a contact at Cys26. That is a real GPU run, and it is a non-covalent ranking score into a deposited structure - not a covalent-binding prediction and not an affinity measurement.

One invented SMILES string travelled machine-to-machine through three engines with no human re-typing, and the -9.44 kcal/mol at the end is traceable to the molecule the GA produced at the start.

Three-stage pipeline for generative molecule design with ADMET filtering: 6 of 6 druglikeness filters passed, 1 of 3 tox endpoints in domain, docking score -9.44 kcal/mol into KRAS G12C.
The analog clears every cheap filter and docks at -9.44 kcal/mol, a ranking score rather than an affinity. Only one of three tox endpoints is in domain, and that is what decides the next experiment. Source: Live covachem_design (genetic algorithm seeded from the sotorasib scaffold, 4 generations), covatox_assess_admet and covadock_dock runs on one designed analog, as described in this article.

What "in domain" actually buys you

The applicability domain is a statement about the training set, not about the molecule. A model is in domain when the query compound sits inside the chemical space it was fitted on. Outside that space the model still emits a number, because that is what models do, but the number is extrapolation.

In the example above: hERG in domain means the CovaTox hERG model has seen chemistry like this, so 0.0125 is a call you can act on. Ames and DILI out of domain means the scaffold is unfamiliar to those models, so 0.84 and 0.90 carry no information you can calibrate.

For generative design this matters more than for library screening, because generative models are specifically good at leaving known chemical space. The better your generator, the more often your ADMET models will be out of domain. Design and filtering pull in opposite directions, and only an explicit domain check surfaces the tension.

Bar chart of ADMET filter quality for generative molecule design: scaffold-split AUC 0.932 BBB, 0.911 CYP2C9, 0.902 CYP1A2, 0.856 hERG, and Ames balanced accuracy 0.736.
Scaffold splits remove the training cores, so these are the honest numbers behind the filter stack. Read the test-set size with the score - BBB at 305 compounds is thin support next to hERG at 7500. Source: CovaTox scaffold-split holdout metrics as reported in this article, with n_test per endpoint. Scaffold split means the test compounds' molecular cores are absent from training.

How good are the filters themselves

Domain flags only help if the in-domain predictions are worth something. CovaTox reports scaffold-split holdout metrics - test compounds whose molecular cores are absent from training, which is the harder and more honest split.

EndpointMetric (scaffold split)n_test
hERG (cardiotox)AUC 0.8567500
CYP2C9 inhibitionAUC 0.9112419
CYP1A2 inhibitionAUC 0.9022516
Ames mutagenicitybalanced accuracy 0.7361089
BBB penetrationAUC 0.932305

Separately, on the TDC ADMET Benchmark Group official split (retrained on the official train split only, 5 seeds, scored by TDC's own evaluator), CovaTox's standard pipeline scored AUROC 0.847 +/- 0.013 on Ames with n_test 1457. Reference: Huang et al., Nat Chem Biol 18, 1033 (2022) plus the live leaderboard at tdcommons.ai.

Two caveats worth stating plainly. First, the deployed models and the TDC-split retrain are different fits, so the two tables are not directly comparable. Second, several published ADMET endpoints have very small official test sets - DILI at n_test 96 and HIA at n_test 117 on the TDC split - and a headline AUC on fewer than 150 compounds should not drive a portfolio decision.

What this does not tell you

  • Docking scores are not affinities. -9.44 kcal/mol ranks poses within one campaign against one structure. It does not predict Ki, and it says nothing about covalent bond formation even when the pose contacts a cysteine.
  • A LOW hERG prediction is not a clean patch clamp. It is a prior that lets you sequence your assays, nothing more.
  • Out-of-domain scores are not "probably fine". They are unknown in both directions. A 0.90 DILI out of domain is not evidence of safety either.
  • SA 2.44 is a heuristic, not a route. Whether the molecule is actually makeable is a retrosynthesis and a chemist's judgement.
  • 6 of 6 druglikeness filters is a floor, not a signal. Passing Lipinski-type rules is common among molecules that fail for other reasons.
  • None of this is a regulatory position. These are triage outputs for prioritising experiments.

Practical setup for a design campaign

1. Generate wide, then apply stages 1-3 as a hard gate. They are free and they remove obvious junk. 2. Run covatox_quickscreen on the survivors, and keep the domain flag as a first-class column next to the score. 3. Split into three buckets: in-domain-clean, in-domain-flagged, out-of-domain. Only the first is a shortlist. The third is your assay list. 4. Spend GPU docking time only on the shortlist.

The scarce resource is not compute. It is the number of molecules a chemist will actually make.

Frequently asked questions

Does generative molecular design produce synthesizable molecules?

Not automatically. Generative models optimise the objective you give them, and validity is not tractability. A synthetic accessibility score is the cheap first check - the GA analog above scored SA 2.44 from covachem_design, which is in the tractable range. That is a heuristic based on fragment frequency, not a route. Confirm anything you intend to make with retrosynthesis planning and a chemist's review before committing bench time.

What ADMET endpoints should filter a generative design run?

At minimum hERG, Ames mutagenicity, CYP inhibition and a permeability or BBB endpoint, depending on the target compartment. On CovaTox scaffold-split holdouts these are the better-supported endpoints: hERG AUC 0.856 (n_test 7500), CYP2C9 AUC 0.911 (n_test 2419), Ames balanced accuracy 0.736 (n_test 1089). Endpoints with test sets under roughly 150 compounds should inform triage but not gate a programme.

What does "out of applicability domain" mean for a predicted tox score?

It means the query molecule sits outside the chemical space the model was trained on, so the number is extrapolation rather than prediction. In the worked example, covatox_assess_admet returned Ames 0.84 and DILI 0.90 but flagged both out of domain, while hERG 0.0125 was in domain. The correct response to an out-of-domain flag is to schedule an assay, not to trust or dismiss the score.

Why do generative models trigger out-of-domain flags so often?

Because that is what they are for. A generator that only produces molecules resembling the training set of your ADMET models is not adding much. The more novel the chemistry, the further it sits from the QSAR training distributions, and the more often the domain check fires. This is a structural tension in de novo design, not a tool defect - which is why the domain flag has to travel with the score.

Can a docking score confirm a generatively designed molecule?

It can support a binding hypothesis and rank candidates against each other. covadock_dock returned -9.44 kcal/mol with 47 interactions and a Cys26 contact for the designed analog against KRAS G12C (PDB 6OIM). That is a non-covalent ranking score into a deposited structure. It is not an affinity, not a covalent-binding prediction, and it does not replace a biochemical assay.

How many generated molecules typically survive a full filter stack?

There is no universal number - it depends entirely on the generator, the seed scaffold and how strictly you set the domain gate. The useful metric to track is not the survival rate but the composition of the survivors: how many are in-domain-clean versus out-of-domain. If almost everything is out of domain, your ADMET models and your generator are exploring different chemical spaces, and you need experimental data before the filter stack means anything.

Related reading

Run the same chain on your own scaffold - covachem_design, covatox_quickscreen and the domain check are all available on the CovaSyn free tier.

Tools for this topic

Use these in your AI agent right away.

  • CovachemADME profiles, druglikeness, molecule design.
  • CovatoxICH M7, Tox21, CYP450, structural alerts, ADMET triage.
Generative Molecule Design That Survives ADMET | CovaSyn