denovo-design

GitHub

用于药物发现中的从头分子设计,支持基于骨架、片段及结构的化合物生成、多目标优化与类药性过滤。

backend/cli/skills/chemistry/denovo-design/SKILL.md synthetic-sciences/openscience

Trigger Scenarios

需要生成新的药物候选分子 对已知先导化合物进行类似物枚举 基于蛋白质结构进行药物设计 优化分子物理化学性质

Install

npx skills add synthetic-sciences/openscience --skill denovo-design -g -y
More Options

Non-standard path

npx skills add https://github.com/synthetic-sciences/openscience/tree/main/backend/cli/skills/chemistry/denovo-design -g -y

Use without installing

npx skills use synthetic-sciences/openscience@denovo-design

指定 Agent (Claude Code)

npx skills add synthetic-sciences/openscience --skill denovo-design -a claude-code -g -y

安装 repo 全部 skill

npx skills add synthetic-sciences/openscience --all -g -y

预览 repo 内 skill

npx skills add synthetic-sciences/openscience --list

SKILL.md

Frontmatter
{
    "name": "denovo-design",
    "license": "MIT",
    "category": "chemistry",
    "metadata": {
        "skill-author": "Synthetic Sciences"
    },
    "description": "De novo molecule generation for drug discovery. Scaffold-based analog enumeration, fragment growing\/linking, structure-based design, multi-objective optimization, and drug-likeness filtering."
}

De Novo Molecule Design

Overview

De novo design is the computational generation of novel molecular structures with desired properties, without starting from known active compounds. This skill provides a complete toolkit for generating drug candidates through multiple complementary strategies: scaffold-based analog enumeration, fragment-based design, structure-based design (SBDD), multi-objective optimization, and drug-likeness filtering.

All generation strategies produce molecules with computed physicochemical properties and similarity metrics, enabling rapid prioritization. The scripts are designed for CPU-first execution using RDKit as the core cheminformatics engine, with optional GPU acceleration noted where applicable.

When to Use This Skill

Use this skill when you need to:

  • Explore chemical space around a known lead compound by generating analogs with R-group enumeration, bioisosteric replacements, or random mutations
  • Design molecules from fragments by growing, linking, or merging fragment hits from screening campaigns
  • Generate molecules for a protein target using pocket shape complementarity or pharmacophore constraints
  • Optimize a set of hits against multiple objectives (QED, LogP, synthetic accessibility, molecular weight) through iterative refinement
  • Filter compound libraries for drug-likeness using Lipinski, Veber, PAINS, Brenk alerts, lead-like, fragment-like, or beyond Rule of Five criteria
  • Enumerate focused libraries for virtual screening or synthesis planning

Installation

pip install rdkit-pypi datamol numpy pandas

Optional (for enhanced fragment design and structure-based approaches):

pip install scipy

For structure-based design with PDB parsing:

pip install biopython

Choosing the Right Strategy

Scenario Script Strategy
Have a lead compound, want analogs generate_analogs.py R-group, bioisostere, mutate
Have fragment screening hits generate_fragments.py grow, link, merge
Have a protein structure / pocket generate_sbdd.py shape, pharmacophore
Have hits, need property optimization optimize.py multi-objective iterative
Have a library, need filtering filter.py lipinski, veber, pains, etc.

Core Workflows

1. Analog Generation

Generate structural analogs of a lead compound using three complementary strategies.

# Generate 50 analogs using all strategies
python scripts/generate_analogs.py --smiles "c1ccc(NC(=O)c2ccccc2)cc1" --output analogs.csv --num 50 --strategy all

# Only bioisosteric replacements
python scripts/generate_analogs.py --smiles "c1ccc(NC(=O)c2ccccc2)cc1" --output analogs.csv --strategy bioisostere

# Only R-group enumeration
python scripts/generate_analogs.py --smiles "c1ccc(NC(=O)c2ccccc2)cc1" --output analogs.csv --strategy rgroup

Strategies:

  • R-group enumeration: Identifies aromatic and sp3 carbon positions, enumerates common substituents (methyl, ethyl, halides, CF3, OMe, NH2, OH, CN, etc.)
  • Bioisosteric replacement: Swaps functional groups using a curated dictionary (COOH to tetrazole, phenyl to thienyl, amide to sulfonamide, ester to oxadiazole, etc.)
  • Random mutation: Fragment-based random modifications to the molecular graph

Output CSV includes: id, smiles, mw, logp, qed, tanimoto_to_parent, strategy.

2. Fragment-Based Design

Build drug-like molecules from fragment hits.

# Grow a fragment by adding substituents
python scripts/generate_fragments.py --fragments "c1cc[nH]c1" --mode grow --output grown.csv --num 50

# Link two fragments
python scripts/generate_fragments.py --fragments "c1cc[nH]c1,c1ccccc1O" --mode link --output linked.csv --num 50

# Merge fragment pharmacophores
python scripts/generate_fragments.py --fragments "c1cc[nH]c1,c1ccccc1O" --mode merge --output merged.csv --num 50

Modes:

  • Grow: Adds substituents at attachment points on a single fragment
  • Link: Connects two fragments with linkers (alkyl chains, amides, ethers, piperazines, etc.)
  • Merge: Combines pharmacophoric features of two fragments into hybrid molecules

3. Structure-Based Design (SBDD)

Generate molecules complementary to a protein binding pocket.

# Shape-based design from a PDB file
python scripts/generate_sbdd.py --protein target.pdb --pocket-residues "ASP189,SER195,HIS57" --method shape --output sbdd_hits.csv --num 100

# Pharmacophore-based design
python scripts/generate_sbdd.py --protein target.pdb --pocket-residues auto --method pharmacophore --output sbdd_hits.csv --num 100

Methods:

  • Shape-based (CPU): Generates molecules complementing the pocket shape using fragment assembly
  • Pharmacophore (CPU): Defines pharmacophore features from pocket residues and generates matching molecules

Note: For production SBDD, consider GPU-accelerated methods like DiffSBDD or Pocket2Mol. This script provides a CPU-based starting point.

4. Multi-Objective Optimization

Iteratively optimize a set of compounds against multiple property objectives.

# Optimize for QED and LogP with constraints
python scripts/optimize.py --input hits.csv --objectives qed,logp,sa --constraints "mw<500,logp<5,qed>0.5" --output optimized.csv --num-iterations 3

The optimizer runs iterative cycles: generate analogs, compute properties, filter by constraints, rank by multi-objective score, select top compounds for the next round.

5. Drug-Likeness Filtering

Apply standard medicinal chemistry filters to compound libraries.

# Apply Lipinski and PAINS filters
python scripts/filter.py --input library.csv --output filtered.csv --filters lipinski,pains

# Apply all available filters
python scripts/filter.py --input library.csv --output filtered.csv --filters lipinski,veber,qed,pains,brenk,leadlike,fragmentlike,bro5

# Custom thresholds
python scripts/filter.py --input library.csv --output filtered.csv --filters qed,pains --qed-threshold 0.6 --sa-threshold 5.0

Available filters:

  • Lipinski Ro5: MW <= 500, LogP <= 5, HBD <= 5, HBA <= 10
  • Veber: RotBonds <= 10, TPSA <= 140
  • QED: Quantitative drug-likeness score above threshold
  • PAINS: Pan-assay interference compounds (RDKit FilterCatalog)
  • Brenk: Structural alerts for reactive/toxic groups
  • Lead-like: MW 200-350, LogP -1 to 3
  • Fragment-like (Ro3): MW <= 300, LogP <= 3, HBD <= 3, HBA <= 3
  • bRo5: Beyond Rule of Five for natural product-like space (MW 500-1000, LogP -2 to 10)
  • SA score: Synthetic accessibility (1 = easy, 10 = hard)

Tips

  • Start broad, then narrow: Use generate_analogs.py with --strategy all first, then filter with filter.py, then optimize survivors with optimize.py.
  • Fragment merging is powerful: If you have multiple fragment hits from an FBDD campaign, merging can produce leads that retain key interactions from both fragments.
  • Combine SBDD with filtering: Structure-based hits often need medicinal chemistry optimization. Pipe SBDD output through filter.py and optimize.py.
  • Check synthetic accessibility: Always include SA score in your analysis. A beautiful molecule is useless if it cannot be synthesized. Use --sa-threshold 5.0 or lower for practical compounds.
  • Deduplicate early: All generation scripts deduplicate by canonical SMILES, but if you combine outputs from multiple runs, deduplicate again before downstream analysis.
  • Property distributions matter: Look at the property distribution summaries printed by each script. Bimodal distributions or outliers can indicate issues with the generation strategy.

Version History

  • e9844a4 Current 2026-07-11 17:21

Same Skill Collection

.openscience/skill/bun-file-io/SKILL.md
backend/cli/skills/biology/anndata/SKILL.md
backend/cli/skills/biology/benchling-integration/SKILL.md
backend/cli/skills/biology/bioimage-analysis/SKILL.md
backend/cli/skills/biology/bioservices/SKILL.md
backend/cli/skills/biology/cancer-genomics-analysis/SKILL.md
backend/cli/skills/biology/clinical-imaging/SKILL.md
backend/cli/skills/biology/clinical-reports/SKILL.md
backend/cli/skills/biology/cobrapy/SKILL.md
backend/cli/skills/biology/curated-bio-datasets/SKILL.md
backend/cli/skills/biology/deeptools/SKILL.md
backend/cli/skills/biology/dnanexus-integration/SKILL.md
backend/cli/skills/biology/etetoolkit/SKILL.md
backend/cli/skills/biology/flow-cytometry-analysis/SKILL.md
backend/cli/skills/biology/flowio/SKILL.md
backend/cli/skills/biology/gget/SKILL.md
backend/cli/skills/biology/glycobiology/SKILL.md
backend/cli/skills/biology/histolab/SKILL.md
backend/cli/skills/biology/immunology-assays/SKILL.md
backend/cli/skills/biology/latchbio-integration/SKILL.md
backend/cli/skills/biology/microbial-dynamics/SKILL.md
backend/cli/skills/biology/molecular-cloning/SKILL.md
backend/cli/skills/biology/neurokit2/SKILL.md
backend/cli/skills/biology/neuropixels-analysis/SKILL.md
backend/cli/skills/biology/omero-integration/SKILL.md
backend/cli/skills/biology/opentrons-integration/SKILL.md
backend/cli/skills/biology/pathml/SKILL.md
backend/cli/skills/biology/pharmacology-wetlab/SKILL.md
backend/cli/skills/biology/protocolsio-integration/SKILL.md
backend/cli/skills/biology/pydeseq2/SKILL.md
backend/cli/skills/biology/pyhealth/SKILL.md
backend/cli/skills/biology/pylabrobot/SKILL.md
backend/cli/skills/biology/pysam/SKILL.md
backend/cli/skills/biology/scanpy/SKILL.md
backend/cli/skills/biology/scikit-bio/SKILL.md
backend/cli/skills/biology/scikit-survival/SKILL.md
backend/cli/skills/biology/scvi-tools/SKILL.md
backend/cli/skills/biology/synthetic-biology/SKILL.md
backend/cli/skills/biology/treatment-plans/SKILL.md
backend/cli/skills/chemistry/admet-prediction/SKILL.md
backend/cli/skills/chemistry/admet-reasoning/SKILL.md
backend/cli/skills/chemistry/binding-affinity/SKILL.md
backend/cli/skills/chemistry/datamol/SKILL.md
backend/cli/skills/chemistry/deepchem/SKILL.md
backend/cli/skills/chemistry/diffdock/SKILL.md
backend/cli/skills/chemistry/drug-design/SKILL.md
backend/cli/skills/chemistry/hypogenic/SKILL.md
backend/cli/skills/chemistry/matchms/SKILL.md
backend/cli/skills/chemistry/medchem/SKILL.md

Metadata

Files
0
Version
5c574e6
Hash
5ad3722c
Indexed
2026-07-11 17:21

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-04 07:12
浙ICP备14020137号-1 $Map of visitor$