rdkit
- Repo stars 39
- Author repo awesome-omni-skill
RDKit Skill
This skill provides up-to-date RDKit patterns. LLMs often have outdated RDKit syntax — always follow the patterns here.
Installation
uv pip install rdkit
Core Imports
from rdkit import Chem
from rdkit.Chem import AllChem, Descriptors, Draw, rdFingerprintGenerator
from rdkit.Chem import rdDepictor
from rdkit import DataStructs
Molecule I/O
# From SMILES
mol = Chem.MolFromSmiles('CCO')
# From file
mol = Chem.MolFromMolFile('molecule.mol')
mols = [m for m in Chem.SDMolSupplier('molecules.sdf') if m is not None]
# To SMILES
smiles = Chem.MolToSmiles(mol)
Fingerprints — USE THE NEW API
CRITICAL: Use rdFingerprintGenerator module, NOT the old functions like GetMorganFingerprint().
See references/fingerprints.md for complete documentation.
Quick Reference
from rdkit.Chem import rdFingerprintGenerator
# Morgan/ECFP fingerprints (ECFP4 = radius 2)
mfpgen = rdFingerprintGenerator.GetMorganGenerator(radius=2, fpSize=2048)
# RDKit fingerprint
rdkgen = rdFingerprintGenerator.GetRDKitFPGenerator(fpSize=2048)
# Atom pairs
apgen = rdFingerprintGenerator.GetAtomPairGenerator(fpSize=2048)
# Topological torsions
ttgen = rdFingerprintGenerator.GetTopologicalTorsionGenerator(fpSize=2048)
# Generate fingerprints (same API for all types)
fp = mfpgen.GetFingerprint(mol) # bit vector
cfp = mfpgen.GetCountFingerprint(mol) # count vector
np_fp = mfpgen.GetFingerprintAsNumPy(mol) # numpy array
Drawing Molecules
Use MolDraw2DCairo or MolDraw2DSVG with drawOptions() for customization.
See references/drawing.md for complete documentation.
Quick Reference
from rdkit.Chem import Draw, rdDepictor
# Generate 2D coordinates
rdDepictor.Compute2DCoords(mol)
rdDepictor.StraightenDepiction(mol)
# Simple drawing
img = Draw.MolToImage(mol, size=(300, 300))
img.save('molecule.png')
# Customized drawing
d2d = Draw.MolDraw2DCairo(350, 300)
dopts = d2d.drawOptions()
dopts.addAtomIndices = True # show atom indices
d2d.DrawMolecule(mol)
d2d.FinishDrawing()
with open('molecule.png', 'wb') as f:
f.write(d2d.GetDrawingText())
# Grid of molecules
img = Draw.MolsToGridImage(mols, molsPerRow=4, subImgSize=(200, 200))
Molecular Properties
from rdkit.Chem import Descriptors
mw = Descriptors.MolWt(mol)
logp = Descriptors.MolLogP(mol)
hbd = Descriptors.NumHDonors(mol)
hba = Descriptors.NumHAcceptors(mol)
tpsa = Descriptors.TPSA(mol)
rotatable = Descriptors.NumRotatableBonds(mol)
Substructure Search
# SMARTS pattern matching
pattern = Chem.MolFromSmarts('[OH]')
matches = mol.GetSubstructMatches(pattern) # returns tuple of tuples
# Check if has substructure
has_oh = mol.HasSubstructMatch(pattern)
Similarity
Always specify which fingerprint when reporting similarity — different fingerprints give very different values for the same molecule pair (e.g., RDKit FP: 0.79 vs Morgan2: 0.43).
from rdkit import DataStructs
# Tanimoto similarity between two fingerprints
sim = DataStructs.TanimotoSimilarity(fp1, fp2)
# Bulk similarity (one vs many)
sims = DataStructs.BulkTanimotoSimilarity(fp1, [fp2, fp3, fp4])
Molecule Properties
# Get/set/check properties on molecules, atoms, bonds
mol.SetProp('name', 'aspirin')
mol.GetProp('name')
mol.HasProp('name')
mol.ClearProp('name')
# Typed getters/setters
mol.SetDoubleProp('score', 3.14)
mol.GetDoubleProp('score')
mol.SetIntProp('count', 42)
# Get all properties
mol.GetPropsAsDict() # {key: value, ...}
# Private props (start with _) hidden by default
mol.GetPropsAsDict(includePrivate=True)
Pickling Gotcha
Properties are lost by default when pickling/serializing:
from rdkit import Chem
# Enable property preservation
Chem.SetDefaultPickleProperties(Chem.PropertyPickleOptions.AllProps)
# Or per-molecule
binary = mol.ToBinary(Chem.PropertyPickleOptions.AllProps)
Parsing & Sanitization
Control chemistry perception during parsing. See references/parsing.md for details.
# Custom parsing without sanitization
params = Chem.SmilesParserParams()
params.sanitize = False
params.removeHs = False
mol = Chem.MolFromSmiles(smiles, params=params)
# Manual sanitization after preprocessing
Chem.SanitizeMol(mol)
Chem.AssignStereochemistry(mol, cleanIt=True, force=True)- Fluxly category
- Other
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 88 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @diegosouzapw · no license declared
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Plug-and-play
- External API key
- No requirement detected
- Detected OS requirements
- Unspecified
- Runtime requirements
- Python
- Detected file/system behavior
-
- Read-only
- Write / modify
- Detected network behavior
- Local-only
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. Installation
Core Imports
Molecule I/O
CRITICAL: Use rdFingerprintGenerator module, NOT the old functions like GetMorganFingerprint(). See references/fingerprints.md for complete documentation.
Quick Reference
Use MolDraw2DCairo or MolDraw2DSVG with drawOptions() for customization. See references/drawing.md for complete documentation.
# RDKit Skill
This skill provides up-to-date RDKit patterns. **LLMs often have outdated RDKit syntax** — always follow the patterns here.
## Installation
```bash
uv pip install rdkit
```
## Core Imports
```python
from rdkit import Chem
from rdkit.Chem import AllChem, Descriptors, Draw, rdFingerprintGenerator
from rdkit.Chem import rdDepictor
from rdkit import DataStructs
```
## Molecule I/O
```python
# From SMILES
mol = Chem.MolFromSmiles('CCO')
# From file
mol = Chem.MolFromMolFile('molecule.mol')
mols = [m for m in Chem.SDMolSupplier('molecules.sdf') if m is not None]
# To SMILES
smiles = Chem.MolToSmiles(mol)
```
## Fingerprints — USE THE NEW API
**CRITICAL**: Use `rdFingerprintGenerator` module, NOT the old functions like `GetMorganFingerprint()`.
See `references/fingerprints.md` for complete documentation.
### Quick Reference
```python
from rdkit.Chem import rdFingerprintGenerator
# Morgan/ECFP fingerprints (ECFP4 = radius 2)
mfpgen = rdFingerprintGenerator.GetMorganGenerator(radius=2, fpSize=2048)
# RDKit fingerprint
rdkgen = rdFingerprintGenerator.GetRDKitFPGenerator(fpSize=2048)
# Atom pairs
apgen = rdFingerprintGenerator.GetAtomPairGenerator(fpSize=2048)
# Topological torsions
ttgen = rdFingerprintGenerator.GetTopologicalTorsionGenerator(fpSize=2048)
# Generate fingerprints (same API for all types)
fp = mfpgen.GetFingerprint(mol) # bit vector
cfp = mfpgen.GetCountFingerprint(mol) # count vector
np_fp = mfpgen.GetFingerprintAsNumPy(mol) # numpy array
```
## Drawing Molecules
**Use `MolDraw2DCairo` or `MolDraw2DSVG`** with `drawOptions()` for customization.
See `references/drawing.md` for complete documentation.
### Quick Reference
```python
from rdkit.Chem import Draw, rdDepictor
# Generate 2D coordinates
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> Installation → Core Imports → Molecule I/O → Fingerprints — USE THE NEW API → Quick Reference → Drawing Molecules
terms -> LLMs often have outdated RDKit syntax · CRITICAL · Use MolDraw2DCairo or MolDraw2DSVG · Always specify which fingerprint · lost by default
files/cmd -> rdFingerprintGenerator · GetMorganFingerprint() · references/fingerprints.md · MolDraw2DCairo · MolDraw2DSVG · drawOptions() · references/drawing.md · references/parsing.md
body sha256 -> 273d9de2be1e
Decide Fit First
Design Intent
How To Use It
Boundaries And Review