agentleFS
pradyumnasagarpradyumnasagar/open-research-skills/skills/chemoinformatics/generative-design/SKILL.md

generative-design

Skill8 starsChanged 5 months agoMITView on GitHub

Designs novel molecules using REINVENT 4 (de novo, scaffold decoration, linker design, R-group, molecular optimization), MolMIM, Diffusion-based generators (DiGress, DiffSMol), and JT-VAE with explicit handling of multi-parameter optimization (MPO), goal-directed scoring functions, transfer/reinforcement/curriculum learning, synthetic accessibility scoring, and chemical space exploration vs exploitation. Use when designing new chemical matter against a target, decorating a scaffold, linking fragments, or optimizing a hit for multiple ADMET / activity properties simultaneously.

4 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

11 rules. 0 are common, 10 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 10

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before using code patterns, verify installed versions match.

    line 20
  2. Distinctive:

    If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API …

    line 23
  3. Distinctive:

    No fabricated citations: Every cited work must resolve to a verifiable

    line 29
  4. Distinctive:

    No claim without provenance: Every quantitative or factual claim

    line 30
  5. Distinctive:

    No silent failure: Every script invocation, API call, or tool use must declare its exit status and what to do on non-zero.

    line 31
  6. Very specific:

    Do not load this skill if the question is in a sibling skill's domain (see ## Cross-references), if the user explicitly asks for a …

    line 42
  7. Distinctive:

    Use ensemble of models (5+)

    line 115
  8. Distinctive:

    Trigger: After 1000 REINVENT steps, all generated molecules are near-same scaffold.

    line 173
  9. Distinctive:

    Fix: Add Tanimoto distance to known actives as bonus.

    line 179
  10. Distinctive:

    Fix: Add docking score (Vina or GNINA) to scoring function.

    line 189
  11. Distinctive:

    Fix: Use reward-style scoring instead of property-distance.

    line 199

“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- metadata: category: chemoinformatics oversight: low version: 1.0.0 author: Pradyumna Jayaram tags: [chemoinformatics, research] difficulty: intermediate -->

Version Compatibility

Reference examples tested with: REINVENT 4.0+, RDKit 2024.09+, PyTorch 2.1+, MolMIM (NVIDIA BioNeMo), chemprop 2.0+.

Before using code patterns, verify installed versions match. If versions differ:

  • Python: pip show <package> then help(module.function) to check signatures

If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying.

Generative Molecular Design

Hard rules

  1. No fabricated citations. Every cited work must resolve to a verifiable
  2. No claim without provenance. Every quantitative or factual claim
  3. No silent failure. Every script invocation, API call, or tool use must declare its exit status and what to do on non-zero. A skill that silently swallows errors is a violation.

When to use

Load this skill when the user asks a question that matches its declared trigger conditions (see the frontmatter description for the most common ones). Do not load it for questions outside its scope — defer to the appropriate ORS skill instead.

When NOT to use

Do not load this skill if the question is in a sibling skill's domain (see ## Cross-references), if the user explicitly asks for a different tool, or if the task is outside the skill's declared category.

Generator Mode Taxonomy

ModeInputOutputUse caseFails when
De novoEmpty seed or training setNovel moleculesWide chemical space explorationSynthetic feasibility weak
Scaffold decorationScaffold + attachment pointsDecorated moleculesSeries expansionDiversity limited by scaffold
Linker design2 fragmentsLinker moleculesPROTAC, ternary complexFew linker geometric options
R-group replacementScaffold + existing R-groupsNew R-group setOptimize one positionSingle-position only
Molecular optimizationLead moleculeImproved analogsLead optimizationImprovement window narrow
Constrained generationHard constraints (MW, fragments)Compliant moleculesPatent / IP designConstraints overly restrictive

Learning Algorithm Taxonomy

AlgorithmUseProCon
Transfer learning (TL)Adapt prior model to focused training setStable, simpleLimited optimization power
Reinforcement learning (RL)Reward-driven generationPowerful for MPOReward hacking risk
Curriculum learning (CL)Gradual constraint introductionBetter convergenceSlower; tuning sensitive

Decision Tree by Scenario

ScenarioGeneratorAlgorithmScoring
New target, no SARDe novoRL on docking scoreGlide / Vina + QED
Series expansionScaffold decorationTL on series + RLQSAR ensemble + QED
PROTAC linkerLinker designRL on ternary complexDC50 surrogate
Lead optimization MPOMolecular optimizationCL with staged constraintsMulti-task: activity + ADMET
Diverse hit setDe novo with diversity bonusRL + Tanimoto distance to knownActivity + diversity
Patent space carve-outConstrained de novoRL + structural constraintsActivity + novelty
Hit-to-leadR-group replacementTL on lead + RLActivity + Lipinski
ADMET-aware designDe novo or optimizationRLhERG + CYP + AMES + QED

REINVENT 4 Setup

REINVENT 4 uses a TOML configuration file specifying generator, algorithm, prior model, and scoring functions.

[parameters]"
prior_file = "priors/reinvent.prior"
agent_file = "priors/reinvent.prior"
batch_size = 64
unique_sequences = true

[[stage]]
max_steps = 1000
chkpt_file = "checkpoints/agent.chkpt"

[[stage.scoring.component]]
name = "QED"

[[stage.scoring.component]]
name = "custom_activity"
weight = 1.0

Multi-Parameter Optimization (MPO)

The art of generative design lies in the scoring function. Common components:

ComponentPurposeReference
QEDDrug-likenessBickerton 2012
SAScoreSynthetic accessibilityErtl 2009
Activity QSARTarget bindingchemprop model
hERGCardiotoxADMETlab 3.0
LipinskiRule of 5Lipinski 1997
Tanimoto distanceDiversity from known activesRDKit

Critical pitfall: Reward hacking. If activity model is biased, generator produces structures that exploit the bias. Mitigations:

  • Use ensemble of models (5+)
  • Constrain to chemically reasonable substructures
  • Validate top-100 by orthogonal in silico methods (docking, FEP)

MolMIM (NVIDIA BioNeMo)

MolMIM is a property-guided latent-variable model:

from molmint import MolMIM
from rdkit import Chem

model = MolMIM()
smiles = 'CCO'
optimized = model.optimize(smiles, target_logp=2.5, target_sas=2.0)
mol = Chem.MolFromSmiles(optimized)

Strength: Continuous property optimization in latent space. Weakness: Latent space not always semantically meaningful.

Diffusion-Based Generators (DiffSMol, DiGress)

Diffusion models generate molecules by iteratively denoising:

# DiffSMol / DiGress pseudo-API; verify against current release.
# from diffsmol import generate
# mols = generate(n_samples=1000, scaffold='aryl_sulfonamide')

Strength: State-of-the-art sample quality on MOSES benchmark. Weakness: Slower than RL; harder to condition on multiple objectives.

JT-VAE (Latent-Space Optimization)

Junction Tree VAE optimizes in latent space then decodes:

# Pseudo-API
# from jtvae import optimize
# best_mol = optimize(smiles='CCO', target='activity', iterations=100)

Strength: Smooth latent space for optimization. Weakness: Outdated vs transformers; reconstruction quality lower.

Per-Tool Failure Modes

REINVENT -- reward hacking

Trigger: Generated molecules score high but don't bind target.

Mechanism: Generator exploits QSAR model weaknesses (e.g., simple features that correlate spuriously).

Symptom: Top-100 in silico but 0% hit rate in vitro.

Fix: Ensemble of 5+ scoring models; structural diversity constraint; orthogonal validation (docking).

Scaffold decoration -- diversity loss

Trigger: After 1000 REINVENT steps, all generated molecules are near-same scaffold.

Mechanism: Generator converges to local optimum.

Symptom: Generated SMILES have Tanimoto > 0.9 to scaffold.

Fix: Add Tanimoto distance to known actives as bonus; restart with new seed; increase stochasticity.

Generative vs docking mismatch

Trigger: Generated molecules have high predicted QED but Vina score = 0.

Mechanism: Generator not aware of binding pocket geometry.

Symptom: Synthesizable but non-binders.

Fix: Add docking score (Vina or GNINA) to scoring function; dock top candidates as filter.

MolMIM -- discontinuous objective

Trigger: Optimizing a property with sharp boundaries (e.g., exactly 1 sulfonamide).

Mechanism: Latent-space optimization uses smooth gradient; sharp objectives don't have it.

Symptom: Generator oscillates around target.

Fix: Use reward-style scoring instead of property-distance; post-filter for hard constraints.

Common Errors

SymptomCauseFix
reinvent exits with OOMPrior model too large for GPUUse smaller prior; CPU mode
All generated molecules identicalMode collapseReset agent; add diversity bonus
Generated SMILES invalidTokenizer mismatchUpdate reinvent to latest version; validate SMILES post-gen
MPO components all zeroComponents missing from TOMLRe-check TOML section names
QED 1.0 but no synthesisQED rewards unrealistic featuresAdd SAScore; run retrosynthesis filter

References

  • Loeffler et al., J. Cheminform. -- REINVENT 4.
  • Sanchez-Lengeling et al., ACS Cent. Sci. -- generative chemistry review.
  • Jin et al. -- JT-VAE.

Related Skills

  • chemoinformatics/qsar-modeling - Scoring models
  • chemoinformatics/retrosynthesis - Synthetic feasibility
  • chemoinformatics/reaction-enumeration - Library enumeration alternative
  • chemoinformatics/protac-degraders - Linker design for PROTACs

Cross-references

Other skills in this category:

  • admet-prediction
  • conformer-generation
  • covalent-design
  • docking-rescoring
  • free-energy-calculations
  • molecular-descriptors
  • molecular-io
  • molecular-standardization
  • pharmacophore-modeling
  • pose-validation
  • protac-degraders
  • qsar-modeling
  • retrosynthesis
  • scaffold-analysis
  • shape-similarity
  • similarity-searching
  • substructure-search
  • virtual-screening

Changelog

  • 1.1.0 (migration) — Bulk-migrated to v0.4.0 schema: canonical metadata block, base Hard rules, Cross-references. Body content unchanged; author should review and fill in any domain-specific extensions to the Hard rules.
  • 1.0.0 — Initial release.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.