Medicinal chemistry filters for compound triage. Drug-likeness rules (Lipinski Ro5, Veber, Oprea, CNS, leadlike, REOS, Golden Triangle, Ro3), structural alerts (PAINS, NIBR, Lilly Demerits), chemical group detectors, complexity metrics, and filter composition query language. Built on RDKit/datamol. For hit-to-lead filtering, library design, ADMET pre-screening. For molecular I/O use rdkit-cheminformatics or datamol.
SkillScore88Maintained
Automatic
◆Research pack
Last verified 8/23/2026
What it changes
Passed 21 of 24 test cases with the skill, and 4 of 24 without it.
Without skill17%
With skill88%
Checks it passed that the model alone missed
The code sets tpsa_max=140.
The code sets logp_range=(-2, 5).
The code sets aromatic_rings_max=3.
and 17 more in the full report
17 fixed4 passed either way3 still failing0 broke
Pass-rate lift
+71 pp
Tokens
+158%
Agent turns
0%
Response time
-53%
Model gemini-3.6-flashMeasured 8/23/2026v121 of 24 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 17 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 17
Prompt
I want to detect whether molecules contain kinase hinge binding motifs using medchem's chemical group detector. What predefined group name string should be passed to ChemicalGroup?
What was checked, without and with the skill
Checked
Without skill
With skill
The groups list in mc.groups.ChemicalGroup includes "hinge_binders".
Missed
Passed
case-22 · gemini-3.6-flash · 8/23/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md455 lines2 files
Medchem
Overview
Medchem is a Python library for molecular filtering and prioritization in drug discovery. It provides hundreds of established medicinal chemistry rules, structural alerts, and chemical group detectors to triage compound libraries at scale. All filters support parallel execution and return structured results.
Composing complex multi-rule filter queries with Boolean logic
For SMILES/SDF parsing, descriptors, and fingerprints use rdkit-cheminformatics
For high-level molecular manipulation use datamol-cheminformatics
Prerequisites
pip install medchem datamol
Medchem depends on RDKit and datamol. All molecule inputs are RDKit Chem.Mol objects; use datamol.to_mol() to convert from SMILES.
Quick Start
import datamol as dm
import medchem as mc
# Convert SMILES to molecules
smiles_list = ["CC(=O)OC1=CC=CC=C1C(=O)O", "c1ccccc1N", "O=C(O)c1ccccc1"]
mols = [dm.to_mol(s) for s in smiles_list]
# Apply Rule of Five + structural alerts in one pass
rule_filter = mc.rules.RuleFilters(rule_list=["rule_of_five"])
alert_filter = mc.structural.CommonAlertsFilters()
rule_results = rule_filter(mols=mols, n_jobs=-1)