Skip to content
Back to skills

Generative Design

ASecurity

Use when designing or evaluating generative models for de novo drug/molecule design. Covers molecular generation theory and evaluation (MOSES/GuacaMol), SELFIES + language models, RL-based optimization with REINVENT 4, JT-VAE and graph-based generation, and structure-based 3D generation (DiffSBDD, Pocket2Mol, DiffLinker).

  • 6 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 4, 2026
ai-agentspythongogcpgitdatabase

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 6 files and shows the line behind each finding

Scanned June 4, 2026

npx -y skills add Kdevos12/ALKYL --skill generative-design --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Generative Design?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Generative Design
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kdevos12-generative-design/badge)](https://www.skillsdirectory.com/skills/kdevos12-generative-design)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: generative-design
description: Use when designing or evaluating generative models for de novo drug/molecule design. Covers molecular generation theory and evaluation (MOSES/GuacaMol), SELFIES + language models, RL-based optimization with REINVENT 4, JT-VAE and graph-based generation, and structure-based 3D generation (DiffSBDD, Pocket2Mol, DiffLinker).
---

# Generative Molecular Design

De novo design of novel molecules with desired properties using generative models — the core ML capability for lead generation and scaffold hopping in drug discovery.

## When to Use This Skill

- Generate molecules with target properties (QED, LogP, SA, docking score)
- Explore chemical space around a hit/lead (analogue generation, scaffold hopping)
- Design molecules conditioned on a protein pocket (SBDD)
- Optimize multi-property objectives (Pareto front: potency + selectivity + ADMET)
- Benchmark or compare generative models (MOSES / GuacaMol suites)
- Build a RL-based focused library generator (REINVENT 4)
- Design linkers or grow fragments (fragment-based generative design)

## Generation Paradigms

| Paradigm | Method | Strength | Weakness |
|----------|--------|----------|----------|
| Language model | SMILES/SELFIES GPT, LSTM | Fast, scalable, fine-tunable | SMILES can be invalid; needs SELFIES |
| VAE | JT-VAE, MolVAE | Smooth latent space, BO-ready | Mode collapse; slow tree encode |
| GNN flow/GAN | GraphAF, GCPN, JunctionGAN | Graph-native; no linearity | Training instability |
| RL optimization | REINVENT 4, REINFORCE | Property-guided; no new arch needed | Reward hacking; mode collapse |
| 3D diffusion | DiffSBDD, TargetDiff | Pocket-conditioned; 3D geometry | Slow, needs structure |
| Fragment-based | DeLinker, DiffLinker | Fragment growing, FBDD | Limited to provided fragments |

## Evaluation Metrics (Know These)

| Metric | What it measures | Target |
|--------|-----------------|--------|
| Validity | % chemically valid | ~100% (SELFIES) / 85-99% (SMILES LM) |
| Uniqueness | % unique in generated set | >99% |
| Novelty | % not in training set | >99% |
| **FCD** | Fréchet ChemNet Distance (distribution) | Lower = closer to drug-like distribution |
| KL divergence | Property distributions vs. reference | Lower |
| Scaffold diversity | # unique Murcko scaffolds / N | Higher |
| IntDiv | Internal diversity (mean pairwise 1-Tc) | > 0.85 |
| SNN | Similarity to nearest neighbor in training | < 0.6 (novel) |

## Quick Start — SELFIES + GPT sampling

```python
import selfies as sf
from rdkit import Chem

# Encode/decode SELFIES (guaranteed valid)
smiles = "CC(=O)Oc1ccccc1C(=O)O"  # aspirin
selfies_str = sf.encoder(smiles)
decoded_smiles = sf.decoder(selfies_str)
mol = Chem.MolFromSmiles(decoded_smiles)  # always valid

# Get SELFIES alphabet for tokenization
alphabet = sf.get_semantic_robust_alphabet()

# Decode a random generated SELFIES token sequence (always valid):
generated_tokens = ["[C]", "[Branch1]", "[C]", "[=O]", "[N]", "[H]"]
generated_smiles = sf.decoder("".join(generated_tokens))
```

## Quick Start — REINVENT 4 scoring component

```python
# Install: pip install reinvent
# REINVENT 4 uses TOML config for staged learning

import toml

config = {
    "run_type": "reinforcement_learning",
    "device": "cuda",
    "tb_logdir": "tb_logs",
    "json_out_config": "run_config.json",
    "parameters": {
        "use_checkpoint": False,
        "prior_file": "path/to/prior.prior",
        "agent_file": "path/to/prior.prior",
        "batch_size": 128,
        "n_steps": 1000,
    },
    "scoring": {
        "type": "custom_product",
        "parallel": False,
        "components": [
            {"type": "qed", "name": "QED", "weight": 1.0},
            {"type": "sa_score", "name": "SA", "weight": 1.0,
             "transform": {"type": "reverse_sigmoid", "low": 1.0, "high": 6.0, "k": 0.5}},
        ],
        "diversity_filter": {
            "type": "IdenticalMurckoScaffold",
            "minscore": 0.4,
            "bucket_size": 25,
        }
    }
}
with open("rl_config.toml", "w") as f:
    toml.dump(config, f)
# Run: reinvent -l rl_run.log rl_config.toml
```

## Router — What to Read

| Task | Reference |
|------|-----------|
| Theory: molecular space, SMILES/SELFIES/graphs, metrics, MOSES/GuacaMol benchmarks | `references/generation-theory.md` |
| SELFIES grammar, SMILES LM (GPT/LSTM), HuggingFace fine-tuning, sampling strategies | `references/selfies-lm.md` |
| REINVENT 4: RL optimization, multi-component scoring, diversity filters, oracles | `references/rl-reinvent.md` |
| JT-VAE: tree decomposition, latent BO; TorchDrug graph generative models overview | `references/vae-jtvae.md` |
| Structure-based 3D generation: DiffSBDD, TargetDiff, Pocket2Mol, linker design | `references/sbdd-diffusion.md` |

## Software Stack

| Package | Install | Role |
|---------|---------|------|
| `selfies` | `pip install selfies` | Always-valid molecular grammar |
| `reinvent` | `pip install reinvent` | RL de novo design (AZ REINVENT 4) |
| `guacamol` | `pip install guacamol` | Benchmark suite (17 goal-directed + distributional) |
| `moses` | `pip install molsets` | MOSES benchmark (6 metrics) |
| `transformers` | `pip install transformers` | GPT/LSTM LMs (HuggingFace) |
| `torchdrug` | `pip install torchdrug` | GCPN, GraphAF, JT-VAE (graph-native) |
| `DiffSBDD` | GitHub: arneschneuing/DiffSBDD | 3D pocket-conditioned diffusion |
| `DiffLinker` | GitHub: igashov/DiffLinker | Linker design in 3D |

## Key Pitfalls

- **SMILES LMs can generate 10-50% invalid** → use SELFIES; or add validity filter post-hoc
- **Reward hacking in RL**: model learns degenerate structures that maximize score — add diversity filter + SA penalty
- **FCD is not computed from structure**: requires ChemNet embeddings (guacamol includes this)
- **Novelty ≠ synthesizability**: always check SA score ≤ 4, run retrosynthesis (ASKCOS/AiZynthFinder)
- **3D diffusion needs pocket quality**: must use properly prepared protein (see `homology-modeling` → structure-prep)
- **Mode collapse in VAE**: monitor KL weight β; schedule β-VAE warmup

## Related Skills

- `torchdrug` — GCPN, GraphAF, GraphDF, JT-VAE implementation
- `rdkit` — validity checks, property scoring oracles (QED, SA, fingerprints)
- `docking` — docking oracle for RL scoring (Vina/Gnina scoring function)
- `pharmacophore` — pharmacophore constraints for conditional generation
- `homology-modeling` → `structure-prep` — pocket preparation for SBDD
- `scientific-skills:zinc-database` — training/reference sets (ZINC20)
- `mmpa` (upcoming) — matched molecular pair analysis on generated series

Files in this skill

  • SKILL.md6.5 KB
  • references/generation-theory.md7.1 KB
  • references/rl-reinvent.md10.2 KB
  • references/sbdd-diffusion.md11.2 KB
  • references/selfies-lm.md9 KB
  • references/vae-jtvae.md10 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.