SuperAPI AI Directory

cheminformatics

General & other

View repository

Updated 10-15 17:23

About this skill

Cheminformatics (RDKit) — Pipeline Skill (Thin Scaffold)

Overview

Adds fingerprint selection logic, filter cascade ordering, and version-specific gotchas for RDKit workflows. The agent already knows RDKit syntax — this skill prevents parameter mismatches and deprecated API usage.

Usage

  • Activate when filtering compound libraries (Lipinski/Veber/PAINS)
  • Activate for fingerprint similarity search or clustering
  • Activate for matched molecular pair (MMP) analysis with mmpdb

Core Concepts

Filter cascade order: Lipinski → Veber → PAINS → similarity (cheapest first, most expensive last).

Fingerprint API: Use rdFingerprintGenerator module exclusively (since RDKit 2024.03). The AllChem.GetMorganFingerprintAsBitVect() path is deprecated and will be removed.

SMILES validation: Always parse with sanitize=False then explicit SanitizeMol() in try/except. Default MolFromSmiles silently returns None on partial failures.

Decision Logic

Fingerprint Selection

Goal Fingerprint Parameters Tanimoto threshold
General similarity Morgan (ECFP4) radius=2, fpSize=2048 ≥ 0.7
High-specificity matching Morgan (ECFP6) radius=3, fpSize=4096 ≥ 0.6
Substructure screening MACCS 166 keys — ≥ 0.8
Pharmacophore similarity FCFP radius=2, GetMorganFeatureAtomInvGen() ≥ 0.6
Large-scale clustering Morgan radius=2, fpSize=1024 Speed over precision

Filter Thresholds

Filter Rule Threshold Notes
Lipinski MW ≤ 500 Da Allow ≤1 violation total Not binary pass/fail
Lipinski LogP ≤ 5 — —
Lipinski HBD ≤ 5 — —
Lipinski HBA ≤ 10 — —
Veber TPSA ≤ 140 Ų Hard cutoff —
Veber RotBonds ≤ 10 Hard cutoff —
PAINS A+B+C catalogs HTS triage only Don't apply to advanced compounds

MMP Analysis Decision

Scenario Tool Key parameter
SAR from compound pairs mmpdb fragment → index → transform --min-pairs 3
Property prediction mmpdb predict Requires indexed DB with property data
Core identification rdFMCS.FindMCS() ringMatchesRingOnly=True, completeRingsOnly=True
Large libraries (>10K) mmpdb CLI --max-variable-size 10 to limit fragmentation

Critical Parameters

Parameter Value When to change
Morgan radius 2 (ECFP4) 3 for higher specificity
fpSize 2048 1024 for speed; 4096 for precision
includeChirality False True for stereo-sensitive applications
Lipinski max_violations 1 0 for strict; exempt biologics entirely
mmpdb --min-pairs 3 Lower for sparse datasets
mmpdb --max-variable-size 10 Increase for macrocycle transformations
PAINS catalogs A+B+C (all three) Never use partial sets

Common Mistakes

  • Wrong: AllChem.GetMorganFingerprintAsBitVect() → Right: rdFingerprintGenerator.GetMorganGenerator(radius=2, fpSize=2048).GetFingerprint(mol) → Why: AllChem FP functions deprecated since RDKit 2024.03, will be removed

  • Wrong: Default MolFromSmiles(smi) without error handling → Right: MolFromSmiles(smi, sanitize=False) + SanitizeMol() in try/except → Why: Default silently returns None; explicit sanitize catches partial failures

  • Wrong: Lipinski as hard binary filter → Right: Allow ≤1 violation → Why: Many approved drugs violate one rule; binary filtering rejects valid candidates

  • Wrong: PAINS on clinical candidates → Right: PAINS only for HTS library triage → Why: Designed for screening artifacts; flags valid advanced compounds

  • Wrong: Morgan radius=1 → Right: radius=2 minimum (ECFP4) → Why: Radius 1 loses structural information; too many false-positive similarities

  • Wrong: Comparing FPs with different radius or nBits → Right: Identical parameters for both FPs → Why: Tanimoto only meaningful in same parameter space

  • Wrong: Ignoring stereochemistry for chiral compounds → Right: includeChirality=True in generator → Why: Default treats enantiomers as identical

  • Wrong: Fixed 0.7 threshold for all FP types → Right: Validate threshold per fingerprint type and chemical series → Why: 0.7 convention is ECFP4-specific; other types need different cutoffs

  • Wrong: Raw SMILES into mmpdb → Right: Pre-canonicalize with MolToSmiles(MolFromSmiles(smi)) → Why: mmpdb expects canonical SMILES; non-canonical causes fragmentation errors

  • Wrong: Confusing LogP with LogD → Right: Use LogD at pH 7.4 for ionizable compounds; RDKit computes LogP only → Why: LogP overestimates lipophilicity for ionizable molecules at physiological pH

Response Format

  • Lead with the command or code the user needs — explain after
  • Structure as: confirm inputs → working code → key parameters explained → gotchas
  • One complete working example per task; do not show every alternative
  • Keep code comments minimal and functional
  • Target: 50-100 lines of code with brief surrounding explanation