[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XFFSBC3KDVA67E6K8SR913":3,"skill-same:01M6XFFSBC3KDVA67E6K8SR913":105},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":14,"repositoryHtmlUrl":60,"repositoryHomepageUrl":6,"ownerHtmlUrl":61,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":62,"install":63,"resources":76},"01M6XFFSBC3KDVA67E6K8SR913","binding-affinity",null,"Hybrid ML + physics binding affinity prediction. Empirical scoring, MM\u002FGBSA rescoring, multi-method consensus, and batch virtual screening for protein-ligand complexes.","fadrienne\u002FMyGitHub","fadrienne","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F197874571?v=4","01M6X64V8VWCRSMFZ4EPS2BWXG","Francesca Adrienne","01M6X64VD5MW4F9PHDWQKS7ZAF",0,"MIT","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fbinding-affinity\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"Binding Affinity","binding","synthetic","Protein","prediction","hybrid","for","screening","mm","virtual screening","batch","physics","scoring","scipy","consensus","virtual","discovery","rdkit","biopython","pypi","2026-11-10 10:12:30",false,"---\nname: binding-affinity\ndescription: Hybrid ML + physics binding affinity prediction. Empirical scoring, MM\u002FGBSA rescoring, multi-method consensus, and batch virtual screening for protein-ligand complexes.\ncategory: chemistry\nlicense: MIT\nmetadata:\n    skill-author: Synthetic Sciences\nversion: 1.0.0\nauthor: Synthetic Sciences\ntags: [Binding Affinity, Drug Discovery, Scoring, MM\u002FGBSA, Virtual Screening]\ndependencies: [\"rdkit-pypi\", \"biopython>=1.84\", \"numpy\", \"scipy\"]\n---\n\n# Binding Affinity Prediction\n\n## Overview\n\nThis skill predicts protein-ligand binding affinity from docked poses — converting structural information into estimated ΔG (kcal\u002Fmol), 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.\n\n**Key capabilities:**\n- **Empirical scoring**: descriptor + contact-based affinity prediction using RDKit and BioPython\n- **MM\u002FGBSA rescoring**: physics-based energy decomposition with OpenMM (or RDKit fallback)\n- **Consensus scoring**: combine multiple scoring methods with rank-based normalization\n- **Batch virtual screening**: efficiently score large compound libraries\n\n## Validation Warning\n\n**All predictions from this skill are computational estimates, NOT experimentally validated measurements.**\n\n- Empirical scoring (predict.py): typical error is 1-2 log units pKd (~10-100x in Kd)\n- MM\u002FGBSA rescoring: useful for relative ranking, not absolute binding energies\n- Use for **prioritizing compounds for experimental testing**, not for making clinical claims\n\nThe scripts include uncertainty ranges and confidence flags to help calibrate expectations.\n\n### Output Integrity\n\nScript outputs are RAW computational estimates. The agent MUST NOT:\n- Apply \"calibration\" or scaling to raw pKd\u002FKd values\n- Adjust values to match known experimental data\n- Add fields like \"calibrated_pKd\" not produced by the script\n- Present approximate methods (simplified MM\u002FGBSA) as full implementations\n\nThe raw output IS the prediction. Report it exactly as produced.\n\nAll script invocations are automatically logged to `_script_manifest.jsonl`. The critique\nagent uses this manifest to verify that every number in the final report traces to a real\nscript output.\n\n## When to Use This Skill\n\nUse the `binding-affinity` skill when you need to:\n\n- **Predict how tightly a ligand binds** to a protein (after docking)\n- **Rank docked poses** by estimated binding affinity\n- **Rescore poses** using physics-based MM\u002FGBSA energy decomposition\n- **Screen compound libraries** for binding potential\n- **Combine multiple scoring methods** into a consensus ranking\n\nTrigger phrases: \"predict binding affinity\", \"estimate Kd\", \"score binding strength\", \"rescore with MM\u002FGBSA\", \"rank compounds by affinity\", \"virtual screening\"\n\n**Do NOT use this skill for:**\n- Finding binding pockets (use `pocket-detection`)\n- Generating docked poses (use `molecular-docking`)\n- Predicting ADMET properties (use `admet-prediction`)\n- Free energy perturbation (requires specialized MD simulations)\n\n### Related Skills\n- **molecular-docking**: Generate docked poses first. This skill scores them.\n- **pocket-detection**: Find binding pockets before docking.\n- **admet-prediction**: Filter affinity hits by drug-likeness and safety.\n\n## Installation\n\n### Required Dependencies\n\n```bash\n# Core (required for all modes)\npip install rdkit-pypi biopython numpy scipy\n```\n\n### Optional Dependencies\n\n```bash\n# MM\u002FGBSA rescoring (full physics-based path)\npip install openmm openmmforcefields openff-toolkit\n\n# If OpenMM is not available, rescore.py falls back to RDKit MMFF\n```\n\n### Quick Verification\n\n```bash\npython -c \"from rdkit import Chem; print('RDKit OK')\"\npython -c \"from Bio.PDB import PDBParser; print('BioPython OK')\"\npython -c \"import numpy; print('NumPy OK')\"\npython -c \"import openmm; print('OpenMM OK')\"  # optional\n```\n\n## Core Workflows\n\n### Workflow 1: Predict Binding Affinity\n\nScore docked poses using the empirical descriptor-based model.\n\n```bash\npython scripts\u002Fpredict.py \\\n    --protein prepared_protein.pdb \\\n    --poses docking_results\u002Fposes.sdf \\\n    --output affinity.json\n```\n\n### Workflow 2: MM\u002FGBSA Rescoring\n\nPhysics-based rescoring for more accurate relative ranking.\n\n```bash\n# Full MM\u002FGBSA (requires OpenMM)\npython scripts\u002Frescore.py \\\n    --protein prepared_protein.pdb \\\n    --poses poses.sdf \\\n    --output mmgbsa.json \\\n    --minimize-steps 100\n\n# RDKit fallback (no OpenMM needed)\npython scripts\u002Frescore.py \\\n    --protein prepared_protein.pdb \\\n    --poses poses.sdf \\\n    --output mmgbsa.json\n```\n\n### Workflow 3: Consensus Scoring\n\nCombine multiple scoring methods for robust ranking.\n\n```bash\npython scripts\u002Fconsensus.py \\\n    --scores affinity.json mmgbsa.json \\\n    --docking-scores docking_results\u002Fscores.csv \\\n    --interactions interactions.json \\\n    --output consensus.json \\\n    --top-n 10\n```\n\n### Workflow 4: Batch Virtual Screening\n\nScreen a compound library against a target.\n\n```bash\npython scripts\u002Fbatch.py \\\n    --protein prepared_protein.pdb \\\n    --library compounds.sdf \\\n    --output screening_hits.csv \\\n    --top-n 50 \\\n    --threshold 6.0\n```\n\n### Workflow 5: Full Pipeline\n\n```bash\n# 1. Detect pockets\npython ..\u002Fpocket-detection\u002Fscripts\u002Fdetect.py \\\n    --input protein.pdb --output pockets.json\n\n# 2. Dock ligand\npython ..\u002Fmolecular-docking\u002Fscripts\u002Fdock.py \\\n    --protein protein.pdb --ligand ligand.sdf \\\n    --output-dir dock_results\u002F --method vina \\\n    --center_x 10 --center_y 20 --center_z 15\n\n# 3. Interaction analysis\npython ..\u002Fmolecular-docking\u002Fscripts\u002Fscore.py \\\n    --protein protein.pdb --poses dock_results\u002Fposes.sdf \\\n    --output interactions.json\n\n# 4. Predict affinity\npython scripts\u002Fpredict.py \\\n    --protein protein.pdb --poses dock_results\u002Fposes.sdf \\\n    --output affinity.json\n\n# 5. MM\u002FGBSA rescore\npython scripts\u002Frescore.py \\\n    --protein protein.pdb --poses dock_results\u002Fposes.sdf \\\n    --output mmgbsa.json\n\n# 6. Consensus\npython scripts\u002Fconsensus.py \\\n    --scores affinity.json mmgbsa.json \\\n    --docking-scores dock_results\u002Fscores.csv \\\n    --interactions interactions.json \\\n    --output final_ranking.json --top-n 5\n```\n\n## Script Reference\n\n| Script | Purpose | Key Inputs | Key Outputs |\n|--------|---------|------------|-------------|\n| `scripts\u002Fpredict.py` | Empirical affinity prediction | Protein PDB + Poses SDF | Affinity JSON |\n| `scripts\u002Frescore.py` | MM\u002FGBSA rescoring | Protein PDB + Poses SDF | Energy JSON |\n| `scripts\u002Fconsensus.py` | Multi-method consensus | Multiple score JSONs | Consensus JSON |\n| `scripts\u002Fbatch.py` | Batch virtual screening | Protein PDB + Library SDF | Hits CSV |\n\n## Output Format\n\n### Affinity JSON (from predict.py)\n\n```json\n{\n  \"protein\": \"protein.pdb\",\n  \"method\": \"descriptor\",\n  \"n_poses\": 5,\n  \"note\": \"Empirical estimate. Typical error: 1-2 log units pKd (~10-100x in Kd). Use for relative ranking only.\",\n  \"predictions\": [\n    {\n      \"pose_id\": 1,\n      \"pose_name\": \"ligand_pose_1\",\n      \"predicted_pKd\": 7.2,\n      \"pKd_uncertainty\": 1.5,\n      \"pKd_range\": [5.7, 8.7],\n      \"predicted_dG_kcal\": -9.8,\n      \"predicted_Kd_nM\": 60,\n      \"confidence\": \"moderate\",\n      \"features\": {\n        \"mw\": 342.4,\n        \"logp\": 2.1,\n        \"n_hbonds\": 4,\n        \"n_hydrophobic\": 12,\n        \"burial_fraction\": 0.65\n      }\n    }\n  ]\n}\n```\n\n### Consensus JSON (from consensus.py)\n\n```json\n{\n  \"n_poses\": 5,\n  \"sources\": [\"predict.py\", \"rescore.py\", \"dock.py\", \"score.py\"],\n  \"agreement_tau\": 0.72,\n  \"agreement_class\": \"high\",\n  \"rankings\": [\n    {\n      \"pose_id\": 1,\n      \"pose_name\": \"ligand_pose_1\",\n      \"consensus_score\": 0.85,\n      \"consensus_rank\": 1,\n      \"individual_ranks\": {\"predict\": 1, \"rescore\": 2, \"docking\": 1, \"interactions\": 3}\n    }\n  ]\n}\n```\n\n## Output Interpretation\n\n### pKd Values\n\n| pKd | Kd (approx) | Interpretation |\n|-----|-------------|----------------|\n| > 9 | \u003C 1 nM | Very potent (clinical candidate range) |\n| 7-9 | 1-100 nM | Potent (lead compound range) |\n| 5-7 | 100 nM - 10 uM | Moderate (hit range) |\n| 3-5 | 10 uM - 10 mM | Weak (fragment range) |\n| \u003C 3 | > 10 mM | Very weak \u002F non-binder |\n\n**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).\n\n### Confidence Levels\n\n| Level | Criteria | Meaning |\n|-------|----------|---------|\n| High | MW 200-600, LogP -1 to 5, >30 contacts | Within training domain, estimate more reliable |\n| Moderate | Partially within domain | Use with caution |\n| Low | MW \u003C200 or >600, extreme LogP, few contacts | Outside training domain, estimate unreliable |\n\n### MM\u002FGBSA Energies\n\n- More negative = stronger predicted binding\n- Useful for relative ranking within a series, not absolute binding energies\n- ΔG_MMGBSA does NOT equal experimental ΔG_binding (missing entropy, sampling)\n\n## Troubleshooting\n\n- **All poses get similar scores**: The ligands may be too similar, or the scoring function may not discriminate well for this target class.\n- **Negative confidence**: Check if molecules are drug-like (MW 200-600, LogP -1 to 5). Non-drug-like molecules get unreliable scores.\n- **OpenMM not available**: rescore.py falls back to RDKit MMFF energies. Install OpenMM for better physics-based scoring.\n- **Very large library (>10K molecules)**: Use batch.py with `--threshold` to filter early.\n\n## References\n\n- Wang, R. et al. \"The PDBbind database.\" J. Med. Chem. 47, 2977-2980 (2004).\n- Ballester, P.J. & Mitchell, J.B.O. \"A machine learning approach to predicting protein-ligand binding affinity.\" Bioinformatics 26, 1169-1175 (2010).\n- Hou, T. et al. \"Assessing the performance of the MM\u002FPBSA and MM\u002FGBSA methods.\" J. Chem. Inf. Model. 51, 69-82 (2011).\n- Li, H. et al. \"Improving AutoDock Vina Using Random Forest.\" J. Chem. Inf. Model. 55, 1291-1299 (2015).\n","# Binding Affinity Prediction\n\n## Overview\n\nThis skill predicts protein-ligand binding affinity from docked poses — converting structural information into estimated ΔG (kcal\u002Fmol), 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.\n\n**Key capabilities:**\n- **Empirical scoring**: descriptor + contact-based affinity prediction using RDKit and BioPython\n- **MM\u002FGBSA rescoring**: physics-based energy decomposition with OpenMM (or RDKit fallback)\n- **Consensus scoring**: combine multiple scoring methods with rank-based normalization\n- **Batch virtual screening**: efficiently score large compound libraries\n\n## Validation Warning\n\n**All predictions from this skill are computational estimates, NOT experimentally validated measurements.**\n\n- Empirical scoring (predict.py): typical error is 1-2 log units pKd (~10-100x in Kd)\n- MM\u002FGBSA rescoring: useful for relative ranking, not absolute binding energies\n- Use for **prioritizing compounds for experimental testing**, not for making clinical claims\n\nThe scripts include uncertainty ranges and confidence flags to help calibrate expectations.\n\n### Output Integrity\n\nScript outputs are RAW computational estimates. The agent MUST NOT:\n- Apply \"calibration\" or scaling to raw pKd\u002FKd values\n- Adjust values to match known experimental data\n- Add fields like \"calibrated_pKd\" not produced by the script\n- Present approximate methods (simplified MM\u002FGBSA) as full implementations\n\nThe raw output IS the prediction. Report it exactly as produced.\n\nAll script invocations are automatically logged to `_script_manifest.jsonl`. The critique\nagent uses this manifest to verify that every number in the final report traces to a real\nscript output.\n\n## When to Use This Skill\n\nUse the `binding-affinity` skill when you need to:\n\n- **Predict how tightly a ligand binds** to a protein (after docking)\n- **Rank docked poses** by estimated binding affinity\n- **Rescore poses** using physics-based MM\u002FGBSA energy decomposition\n- **Screen compound libraries** for binding potential\n- **Combine multiple scoring methods** into a consensus ranking\n\nTrigger phrases: \"predict binding affinity\", \"estimate Kd\", \"score binding strength\", \"rescore with MM\u002FGBSA\", \"rank compounds by affinity\", \"virtual screening\"\n\n**Do NOT use this skill for:**\n- Finding binding pockets (use `pocket-detection`)\n- Generating docked poses (use `molecular-docking`)\n- Predicting ADMET properties (use `admet-prediction`)\n- Free energy perturbation (requires specialized MD simulations)\n\n### Related Skills\n- **molecular-docking**: Generate docked poses first. This skill scores them.\n- **pocket-detection**: Find binding pockets before docking.\n- **admet-prediction**: Filter affinity hits by drug-likeness and safety.\n\n## Installation\n\n### Required Dependencies\n\n```bash\n# Core (required for all modes)\npip install rdkit-pypi biopython numpy scipy\n```\n\n### Optional Dependencies\n\n```bash\n# MM\u002FGBSA rescoring (full physics-based path)\npip install openmm openmmforcefields openff-toolkit\n\n# If OpenMM is not available, rescore.py falls back to RDKit MMFF\n```\n\n### Quick Verification\n\n```bash\npython -c \"from rdkit import Chem; print('RDKit OK')\"\npython -c \"from Bio.PDB import PDBParser; print('BioPython OK')\"\npython -c \"import numpy; print('NumPy OK')\"\npython -c \"import openmm; print('OpenMM OK')\"  # optional\n```\n\n## Core Workflows\n\n### Workflow 1: Predict Binding Affinity\n\nScore docked poses using the empirical descriptor-based model.\n\n```bash\npython scripts\u002Fpredict.py \\\n    --protein prepared_protein.pdb \\\n    --poses docking_results\u002Fposes.sdf \\\n    --output affinity.json\n```\n\n### Workflow 2: MM\u002FGBSA Rescoring\n\nPhysics-based rescoring for more accurate relative ranking.\n\n```bash\n# Full MM\u002FGBSA (requires OpenMM)\npython scripts\u002Frescore.py \\\n    --protein prepared_protein.pdb \\\n    --poses poses.sdf \\\n    --output mmgbsa.json \\\n    --minimize-steps 100\n\n# RDKit fallback (no OpenMM needed)\npython scripts\u002Frescore.py \\\n    --protein prepared_protein.pdb \\\n    --poses poses.sdf \\\n    --output mmgbsa.json\n```\n\n### Workflow 3: Consensus Scoring\n\nCombine multiple scoring methods for robust ranking.\n\n```bash\npython scripts\u002Fconsensus.py \\\n    --scores affinity.json mmgbsa.json \\\n    --docking-scores docking_results\u002Fscores.csv \\\n    --interactions interactions.json \\\n    --output consensus.json \\\n    --top-n 10\n```\n\n### Workflow 4: Batch Virtual Screening\n\nScreen a compound library against a target.\n\n```bash\npython scripts\u002Fbatch.py \\\n    --protein prepared_protein.pdb \\\n    --library compounds.sdf \\\n    --output screening_hits.csv \\\n    --top-n 50 \\\n    --threshold 6.0\n```\n\n### Workflow 5: Full Pipeline\n\n```bash\n# 1. Detect pockets\npython ..\u002Fpocket-detection\u002Fscripts\u002Fdetect.py \\\n    --input protein.pdb --output pockets.json\n\n# 2. Dock ligand\npython ..\u002Fmolecular-docking\u002Fscripts\u002Fdock.py \\\n    --protein protein.pdb --ligand ligand.sdf \\\n    --output-dir dock_results\u002F --method vina \\\n    --center_x 10 --center_y 20 --center_z 15\n\n# 3. Interaction analysis\npython ..\u002Fmolecular-docking\u002Fscripts\u002Fscore.py \\\n    --protein protein.pdb --poses dock_results\u002Fposes.sdf \\\n    --output interactions.json\n\n# 4. Predict affinity\npython scripts\u002Fpredict.py \\\n    --protein protein.pdb --poses dock_results\u002Fposes.sdf \\\n    --output affinity.json\n\n# 5. MM\u002FGBSA rescore\npython scripts\u002Frescore.py \\\n    --protein protein.pdb --poses dock_results\u002Fposes.sdf \\\n    --output mmgbsa.json\n\n# 6. Consensus\npython scripts\u002Fconsensus.py \\\n    --scores affinity.json mmgbsa.json \\\n    --docking-scores dock_results\u002Fscores.csv \\\n    --interactions interactions.json \\\n    --output final_ranking.json --top-n 5\n```\n\n## Script Reference\n\n| Script | Purpose | Key Inputs | Key Outputs |\n|--------|---------|------------|-------------|\n| `scripts\u002Fpredict.py` | Empirical affinity prediction | Protein PDB + Poses SDF | Affinity JSON |\n| `scripts\u002Frescore.py` | MM\u002FGBSA rescoring | Protein PDB + Poses SDF | Energy JSON |\n| `scripts\u002Fconsensus.py` | Multi-method consensus | Multiple score JSONs | Consensus JSON |\n| `scripts\u002Fbatch.py` | Batch virtual screening | Protein PDB + Library SDF | Hits CSV |\n\n## Output Format\n\n### Affinity JSON (from predict.py)\n\n```json\n{\n  \"protein\": \"protein.pdb\",\n  \"method\": \"descriptor\",\n  \"n_poses\": 5,\n  \"note\": \"Empirical estimate. Typical error: 1-2 log units pKd (~10-100x in Kd). Use for relative ranking only.\",\n  \"predictions\": [\n    {\n      \"pose_id\": 1,\n      \"pose_name\": \"ligand_pose_1\",\n      \"predicted_pKd\": 7.2,\n      \"pKd_uncertainty\": 1.5,\n      \"pKd_range\": [5.7, 8.7],\n      \"predicted_dG_kcal\": -9.8,\n      \"predicted_Kd_nM\": 60,\n      \"confidence\": \"moderate\",\n      \"features\": {\n        \"mw\": 342.4,\n        \"logp\": 2.1,\n        \"n_hbonds\": 4,\n        \"n_hydrophobic\": 12,\n        \"burial_fraction\": 0.65\n      }\n    }\n  ]\n}\n```\n\n### Consensus JSON (from consensus.py)\n\n```json\n{\n  \"n_poses\": 5,\n  \"sources\": [\"predict.py\", \"rescore.py\", \"dock.py\", \"score.py\"],\n  \"agreement_tau\": 0.72,\n  \"agreement_class\": \"high\",\n  \"rankings\": [\n    {\n      \"pose_id\": 1,\n      \"pose_name\": \"ligand_pose_1\",\n      \"consensus_score\": 0.85,\n      \"consensus_rank\": 1,\n      \"individual_ranks\": {\"predict\": 1, \"rescore\": 2, \"docking\": 1, \"interactions\": 3}\n    }\n  ]\n}\n```\n\n## Output Interpretation\n\n### pKd Values\n\n| pKd | Kd (approx) | Interpretation |\n|-----|-------------|----------------|\n| > 9 | \u003C 1 nM | Very potent (clinical candidate range) |\n| 7-9 | 1-100 nM | Potent (lead compound range) |\n| 5-7 | 100 nM - 10 uM | Moderate (hit range) |\n| 3-5 | 10 uM - 10 mM | Weak (fragment range) |\n| \u003C 3 | > 10 mM | Very weak \u002F non-binder |\n\n**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).\n\n### Confidence Levels\n\n| Level | Criteria | Meaning |\n|-------|----------|---------|\n| High | MW 200-600, LogP -1 to 5, >30 contacts | Within training domain, estimate more reliable |\n| Moderate | Partially within domain | Use with caution |\n| Low | MW \u003C200 or >600, extreme LogP, few contacts | Outside training domain, estimate unreliable |\n\n### MM\u002FGBSA Energies\n\n- More negative = stronger predicted binding\n- Useful for relative ranking within a series, not absolute binding energies\n- ΔG_MMGBSA does NOT equal experimental ΔG_binding (missing entropy, sampling)\n\n## Troubleshooting\n\n- **All poses get similar scores**: The ligands may be too similar, or the scoring function may not discriminate well for this target class.\n- **Negative confidence**: Check if molecules are drug-like (MW 200-600, LogP -1 to 5). Non-drug-like molecules get unreliable scores.\n- **OpenMM not available**: rescore.py falls back to RDKit MMFF energies. Install OpenMM for better physics-based scoring.\n- **Very large library (>10K molecules)**: Use batch.py with `--threshold` to filter early.\n\n## References\n\n- Wang, R. et al. \"The PDBbind database.\" J. Med. Chem. 47, 2977-2980 (2004).\n- Ballester, P.J. & Mitchell, J.B.O. \"A machine learning approach to predicting protein-ligand binding affinity.\" Bioinformatics 26, 1169-1175 (2010).\n- Hou, T. et al. \"Assessing the performance of the MM\u002FPBSA and MM\u002FGBSA methods.\" J. Chem. Inf. Model. 51, 69-82 (2011).\n- Li, H. et al. \"Improving AutoDock Vina Using Random Forest.\" J. Chem. Inf. Model. 55, 1291-1299 (2015).\n",{"name":5,"tags":44,"author":49,"license":15,"version":50,"category":51,"metadata":52,"description":7,"dependencies":53},[19,45,46,47,48],"Drug Discovery","Scoring","MM\u002FGBSA","Virtual Screening","Synthetic Sciences","1.0.0","chemistry",{"skill-author":49},[54,55,56,32],"rdkit-pypi","biopython>=1.84","numpy","main","4aa39efd1cdab0b4657ecee16c92a92011a5b10f","openscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fbinding-affinity","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub","https:\u002F\u002Fgithub.com\u002Ffadrienne","2026-10-28 00:43:09",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add fadrienne\u002FMyGitHub --skill binding-affinity",{"tool":69,"command":70},"bunx","bunx skills add fadrienne\u002FMyGitHub --skill binding-affinity",{"tool":72,"command":73},"pnpm","pnpm dlx skills add fadrienne\u002FMyGitHub --skill binding-affinity","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fbinding-affinity\u002FSKILL.md",true,[77,83,89,93,97,101],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fscoring_methods.md","REFERENCE","参考文档",7575,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fbinding-affinity\u002Freferences\u002Fscoring_methods.md",{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"scripts\u002Fbatch.py","SCRIPT","脚本",9249,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fbinding-affinity\u002Fscripts\u002Fbatch.py",{"path":90,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":91,"sourceHtmlUrl":92},"scripts\u002Fconsensus.py",14212,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fbinding-affinity\u002Fscripts\u002Fconsensus.py",{"path":94,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":95,"sourceHtmlUrl":96},"scripts\u002Foutput_guard.py",2145,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fbinding-affinity\u002Fscripts\u002Foutput_guard.py",{"path":98,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":99,"sourceHtmlUrl":100},"scripts\u002Fpredict.py",17520,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fbinding-affinity\u002Fscripts\u002Fpredict.py",{"path":102,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":103,"sourceHtmlUrl":104},"scripts\u002Frescore.py",12079,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fbinding-affinity\u002Fscripts\u002Frescore.py",[106,137,163,197,224,251],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":117,"publishedAt":39},"01M7167B28PK20HP7R7ZED2DY0","statistical-power","Sample size calculation, power analysis, and effect size conversion for scientific studies. Use BEFORE data collection (a priori) to determine required N, or after (post-hoc) to compute achieved power. Covers parametric tests (t-test, ANOVA, chi-square, proportions, correlation, regression), simulation-based power for complex\u002Fclustered\u002Fnested designs, and power curves. Use this skill when someone asks 'how many samples do I need', 'what is my power', 'what effect size can I detect', or any variant. Pairs with \u002Fexperimental-design (choose design first, then compute power) and \u002Fstatistical-analysis (analyze data after collection).","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-power\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[118,119,120,32,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136],"power","statistical power","effect","regression","choose","design","uv","when","Bash","collection","analysis","calculation","ANOVA","conversion","analyze","t-test","chi-square","simulation","sample",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":146,"publishedAt":39},"01M71677EBCM8EPCE9BZCK8505","statistical-analysis","Guided statistical analysis with test selection and reporting. Use when you need help choosing appropriate tests for your data, assumption checking, power analysis, and APA-formatted results. Best for academic research reporting, test selection guidance. For implementing specific models programmatically use statsmodels.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-analysis\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000008","测试与质量",[128,147,118,148,149,150,125,151,152,153,25,154,155,156,157,158,159,160,161,162],"statistical analysis","academic research","implementing","selection","you","reporting","data","tests","use","with","test","research","results","statsmodels","models","help",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":178,"publishedAt":39},"01M71673R93XAHFH81DBNVNG7H","scientific-writing","Core skill for the deep research and writing tool. Write scientific manuscripts in full paragraphs (never bullet points). Use two-stage process with (1) section outlines with key points using research-lookup then (2) convert to flowing prose. IMRAD structure, citations (APA\u002FAMA\u002FVancouver), figures\u002Ftables, reporting guidelines (CONSORT\u002FSTROBE\u002FPRISMA), for research papers and journal submissions.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-writing\u002FSKILL.md",[169,172,173],{"categoryNo":170,"categoryName":171,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},{"categoryNo":174,"categoryName":175,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[179,180,181,182,183,184,185,186,187,188,126,189,190,191,192,193,194,195,152,196],"writing","scientific","scientific writing","Citations","deep","deep research","never","papers","journal","false","api","prisma","structure","openrouter","Outlines","core skill","read","features",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":207,"publishedAt":39},"01M7166ZPKXBF4EBPHVTJPQBB1","scientific-visualization","Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib\u002Fseaborn\u002Fplotly with publication styles. For quick exploration use seaborn or plotly directly.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-visualization\u002FSKILL.md",[203,206],{"categoryNo":204,"categoryName":205,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},[208,180,209,210,211,212,213,214,215,187,125,216,217,218,219,220,221,222,25,223],"visualization","scientific visualization","error","ready","quick","exploration","meta-skill","Meta","safe","plotly","annotations","formatting","Publication","figures","panel","submission",{"skillNo":225,"name":226,"nameZh":6,"description":227,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":228,"categories":229,"keywords":236,"publishedAt":39},"01M7166VXJWQSSC3RQZP60WBGR","research-code","Debug, profile, review, and restructure Python research and analysis code. Use when analysis scripts crash, produce wrong results, run too slowly, or need a correctness review. Covers: reading tracebacks and diagnosing root causes, hypothesis-driven debugging, reviewing code for common statistical\u002Fnumerical errors, profiling data pipelines, improving reproducibility (seeds, environments, determinism), and structuring analysis scripts for sharing. Distinct from \u002Fexploratory-data-analysis (which understands data) and \u002Fstatistical-analysis (which chooses and runs tests) — this skill focuses on the code itself.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fresearch-code\u002FSKILL.md",[230,233],{"categoryNo":231,"categoryName":232,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":234,"categoryName":235,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000030","开发工程师",[237,238,158,239,240,241,242,124,243,125,126,128,244,245,246,247,248,249,195,250],"code","research code","which","memory","data-analysis","errors","debugging","common","review","data pipelines","run","scripts","line","write",{"skillNo":252,"name":253,"nameZh":6,"description":254,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":255,"licenseFileUrl":6,"sourceHtmlUrl":256,"categories":257,"keywords":264,"publishedAt":39},"01M7166CF5HSR7SVZYZFWTDX55","markdown-mermaid-writing","Comprehensive markdown and Mermaid diagram writing skill. Use when creating any scientific document, report, analysis, or visualization. Establishes text-based diagrams as the default documentation standard with full style guides (markdown + mermaid), 24 diagram type references, and 9 document templates.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fmarkdown-mermaid-writing\u002FSKILL.md",[258,261,262,263],{"categoryNo":259,"categoryName":260,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":170,"categoryName":171,"taxonomyType":115,"taxonomyTypeDesc":116},{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},{"categoryNo":174,"categoryName":175,"taxonomyType":176,"taxonomyTypeDesc":177},[179,265,266,267,268,269,208,270,271,125,126,128,272,273,274,275,276,277,180,195],"markdown mermaid writing","mermaid","markdown","community","diagrams","project","default","team","guides","text","documentation","references","diagram"]