Skip to content
cccskills
FreePublished on GitHub

denovo-design

De novo molecule generation for drug discovery. Scaffold-based analog enumeration, fragment growing/linking, structure-based design, multi-objective optimization, and drug-likeness filtering.

The English summary is being prepared. Showing the original description.

Run score Not tested

See how to install

Files included (6)

  • SKILL.md7.8 KB
  • scripts/filter.py15.8 KB
  • scripts/generate_analogs.py19.6 KB
  • scripts/generate_fragments.py20.8 KB
  • scripts/generate_sbdd.py27.2 KB
  • scripts/optimize.py23.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

ScenarioScriptStrategy
Have a lead compound, want analogsgenerate_analogs.pyR-group, bioisostere, mutate
Have fragment screening hitsgenerate_fragments.pygrow, link, merge
Have a protein structure / pocketgenerate_sbdd.pyshape, pharmacophore
Have hits, need property optimizationoptimize.pymulti-objective iterative
Have a library, need filteringfilter.pylipinski, 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.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Simplest distributed training API. 4 lines to add distributed support to any PyTorch script. Unified API for DeepSpeed/FSDP/Megatron/DDP. Automatic device placement, mixed precision (FP16/BF16/FP8). Interactive config, single launch command. HuggingFace ecosystem standard.

The English summary is being prepared. Showing the original description.

huang-sh/DeepScience4Updated Jul 15, 2026

ADMET property prediction for drug candidates. Full pharmacokinetic panel (Caco-2, PPB, clearance, CYP), toxicity (hERG, AMES, DILI), drug-likeness (Lipinski, QED), using RDKit descriptors and TDC models.

The English summary is being prepared. Showing the original description.

huang-sh/DeepScience4Updated Jul 15, 2026

Interpretable ADMET analysis with mechanistic reasoning. Maps liabilities to structural causes and biological pathways. Based on CoTox (Park 2025) and DrugR (Liu 2026).

The English summary is being prepared. Showing the original description.

huang-sh/DeepScience4Updated Jul 15, 2026

aeon

Free

This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.

The English summary is being prepared. Showing the original description.

huang-sh/DeepScience4Updated Jul 15, 2026

Infer gene regulatory networks (GRNs) from gene expression data using scalable algorithms (GRNBoost2, GENIE3). Use when analyzing transcriptomics data (bulk RNA-seq, single-cell RNA-seq) to identify transcription factor-target gene relationships and regulatory interactions. Supports distributed computation for large-scale datasets.

The English summary is being prepared. Showing the original description.

huang-sh/DeepScience4Updated Jul 15, 2026

Comprehensive Python library for astronomy and astrophysics. This skill should be used when working with astronomical data including celestial coordinates, physical units, FITS files, cosmological calculations, time systems, tables, world coordinate systems (WCS), and astronomical data analysis. Use when tasks involve coordinate transformations, unit conversions, FITS file manipulation, cosmological distance calculations, time scale conversions, or astronomical data processing.

The English summary is being prepared. Showing the original description.

huang-sh/DeepScience4Updated Jul 15, 2026

See all skills by huang-sh

Report a problem with this skill