Best for
- Predict how tightly a ligand binds to a protein (after docking)
- Rank docked poses by estimated binding affinity
- Rescore poses using physics-based MM/GBSA energy decomposition
synthetic-sciences/openscience/backend/cli/skills/chemistry/binding-affinity/SKILL.md
Hybrid ML + physics binding affinity prediction. Empirical scoring, MM/GBSA rescoring, multi-method consensus, and batch virtual screening for protein-ligand complexes.
Decision brief
Hybrid ML + physics binding affinity prediction. Empirical scoring, MM/GBSA rescoring, multi-method consensus, and batch virtual screening for protein-ligand complexes.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/synthetic-sciences/openscience --skill "backend/cli/skills/chemistry/binding-affinity"Inspect the Agent Skill "binding-affinity" from https://github.com/synthetic-sciences/openscience/blob/d7129109cc959e2bbbfee84bba019e4e722221da/backend/cli/skills/chemistry/binding-affinity/SKILL.md at commit d7129109cc959e2bbbfee84bba019e4e722221da. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Review the “Quick Verification” section in the pinned source before continuing.
Score docked poses using the empirical descriptor-based model.
Physics-based rescoring for more accurate relative ranking.
Combine multiple scoring methods for robust ranking.
Screen a compound library against a target.
Permission review
The documentation asks the agent to run terminal commands or scripts.
python -c "from rdkit import Chem; print('RDKit OK')"The documentation asks the agent to run terminal commands or scripts.
python -c "from Bio.PDB import PDBParser; print('BioPython OK')"Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 3,337 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
This skill predicts protein-ligand binding affinity from docked poses — converting structural information into estimated ΔG (kcal/mol), pKd, and Kd (nM). It complements the molecular-docking skill's interaction analysis (score.py) which counts contacts but does NOT predict binding strength in energy units.
Key capabilities:
All predictions from this skill are computational estimates, NOT experimentally validated measurements.
The scripts include uncertainty ranges and confidence flags to help calibrate expectations.
Script outputs are RAW computational estimates. The agent MUST NOT:
The raw output IS the prediction. Report it exactly as produced.
All script invocations are automatically logged to _script_manifest.jsonl. The critique
agent uses this manifest to verify that every number in the final report traces to a real
script output.
Use the binding-affinity skill when you need to:
Trigger phrases: "predict binding affinity", "estimate Kd", "score binding strength", "rescore with MM/GBSA", "rank compounds by affinity", "virtual screening"
Do NOT use this skill for:
pocket-detection)molecular-docking)admet-prediction)# Core (required for all modes)
pip install rdkit-pypi biopython numpy scipy
# MM/GBSA rescoring (full physics-based path)
pip install openmm openmmforcefields openff-toolkit
# If OpenMM is not available, rescore.py falls back to RDKit MMFF
python -c "from rdkit import Chem; print('RDKit OK')"
python -c "from Bio.PDB import PDBParser; print('BioPython OK')"
python -c "import numpy; print('NumPy OK')"
python -c "import openmm; print('OpenMM OK')" # optional
Score docked poses using the empirical descriptor-based model.
python scripts/predict.py \
--protein prepared_protein.pdb \
--poses docking_results/poses.sdf \
--output affinity.json
Physics-based rescoring for more accurate relative ranking.
# Full MM/GBSA (requires OpenMM)
python scripts/rescore.py \
--protein prepared_protein.pdb \
--poses poses.sdf \
--output mmgbsa.json \
--minimize-steps 100
# RDKit fallback (no OpenMM needed)
python scripts/rescore.py \
--protein prepared_protein.pdb \
--poses poses.sdf \
--output mmgbsa.json
Combine multiple scoring methods for robust ranking.
python scripts/consensus.py \
--scores affinity.json mmgbsa.json \
--docking-scores docking_results/scores.csv \
--interactions interactions.json \
--output consensus.json \
--top-n 10
Screen a compound library against a target.
python scripts/batch.py \
--protein prepared_protein.pdb \
--library compounds.sdf \
--output screening_hits.csv \
--top-n 50 \
--threshold 6.0
# 1. Detect pockets
python ../pocket-detection/scripts/detect.py \
--input protein.pdb --output pockets.json
# 2. Dock ligand
python ../molecular-docking/scripts/dock.py \
--protein protein.pdb --ligand ligand.sdf \
--output-dir dock_results/ --method vina \
--center_x 10 --center_y 20 --center_z 15
# 3. Interaction analysis
python ../molecular-docking/scripts/score.py \
--protein protein.pdb --poses dock_results/poses.sdf \
--output interactions.json
# 4. Predict affinity
python scripts/predict.py \
--protein protein.pdb --poses dock_results/poses.sdf \
--output affinity.json
# 5. MM/GBSA rescore
python scripts/rescore.py \
--protein protein.pdb --poses dock_results/poses.sdf \
--output mmgbsa.json
# 6. Consensus
python scripts/consensus.py \
--scores affinity.json mmgbsa.json \
--docking-scores dock_results/scores.csv \
--interactions interactions.json \
--output final_ranking.json --top-n 5
| Script | Purpose | Key Inputs | Key Outputs |
|---|---|---|---|
scripts/predict.py | Empirical affinity prediction | Protein PDB + Poses SDF | Affinity JSON |
scripts/rescore.py | MM/GBSA rescoring | Protein PDB + Poses SDF | Energy JSON |
scripts/consensus.py | Multi-method consensus | Multiple score JSONs | Consensus JSON |
scripts/batch.py | Batch virtual screening | Protein PDB + Library SDF | Hits CSV |
{
"protein": "protein.pdb",
"method": "descriptor",
"n_poses": 5,
"note": "Empirical estimate. Typical error: 1-2 log units pKd (~10-100x in Kd). Use for relative ranking only.",
"predictions": [
{
"pose_id": 1,
"pose_name": "ligand_pose_1",
"predicted_pKd": 7.2,
"pKd_uncertainty": 1.5,
"pKd_range": [5.7, 8.7],
"predicted_dG_kcal": -9.8,
"predicted_Kd_nM": 60,
"confidence": "moderate",
"features": {
"mw": 342.4,
"logp": 2.1,
"n_hbonds": 4,
"n_hydrophobic": 12,
"burial_fraction": 0.65
}
}
]
}
{
"n_poses": 5,
"sources": ["predict.py", "rescore.py", "dock.py", "score.py"],
"agreement_tau": 0.72,
"agreement_class": "high",
"rankings": [
{
"pose_id": 1,
"pose_name": "ligand_pose_1",
"consensus_score": 0.85,
"consensus_rank": 1,
"individual_ranks": {"predict": 1, "rescore": 2, "docking": 1, "interactions": 3}
}
]
}
| pKd | Kd (approx) | Interpretation |
|---|---|---|
| > 9 | < 1 nM | Very potent (clinical candidate range) |
| 7-9 | 1-100 nM | Potent (lead compound range) |
| 5-7 | 100 nM - 10 uM | Moderate (hit range) |
| 3-5 | 10 uM - 10 mM | Weak (fragment range) |
| < 3 | > 10 mM | Very weak / non-binder |
Critical: These are computational estimates with ~1-2 log unit uncertainty. A predicted pKd of 7.2 means the true value is likely somewhere between 5.7 and 8.7 (Kd between ~2 nM and 2 uM).
| Level | Criteria | Meaning |
|---|---|---|
| High | MW 200-600, LogP -1 to 5, >30 contacts | Within training domain, estimate more reliable |
| Moderate | Partially within domain | Use with caution |
| Low | MW <200 or >600, extreme LogP, few contacts | Outside training domain, estimate unreliable |
--threshold to filter early.Frequently asked questions
Hybrid ML + physics binding affinity prediction. Empirical scoring, MM/GBSA rescoring, multi-method consensus, and batch virtual screening for protein-ligand complexes.
The source record exposes this install command: npx skills add https://github.com/synthetic-sciences/openscience --skill "backend/cli/skills/chemistry/binding-affinity". Inspect the command and pinned source before running it.
Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
wanshuiyin/Auto-claude-code-research-in-sleep
Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance
brucesongs/kali-claw
Insecure Design (OWASP A06:2025) focuses on security flaws in system architecture and design phases, rather than code implementation-level bugs.