[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XFJR9KC0YYSYMQW0WHDDS4":3,"skill-same:01M6XFJR9KC0YYSYMQW0WHDDS4":100},{"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":52,"commitSha":53,"skillDirectory":54,"forksCount":14,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":57,"install":58,"resources":71},"01M6XFJR9KC0YYSYMQW0WHDDS4","pocket-detection",null,"Multi-method binding pocket detection and druggability assessment. Grid-based, fpocket, and P2Rank detection with druggability scoring, visualization, and cross-structure comparison.","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\u002Fpocket-detection\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"detection","Pocket Detection","synthetic","Structure-Based Design","Druggability","grid","with","comparison","multi","binding","drug discovery","design","structure","scoring","scipy","numpy","discovery","biopython","visualization","assessment","2026-11-10 10:12:30",false,"---\nname: pocket-detection\ndescription: Multi-method binding pocket detection and druggability assessment. Grid-based, fpocket, and P2Rank detection with druggability scoring, visualization, and cross-structure comparison.\ncategory: chemistry\nlicense: MIT\nmetadata:\n    skill-author: Synthetic Sciences\nversion: 1.0.0\nauthor: Synthetic Sciences\ntags: [Pocket Detection, Druggability, Drug Discovery, Structure-Based Design]\ndependencies: [\"biopython>=1.84\", \"numpy\", \"scipy\"]\n---\n\n# Pocket Detection & Druggability Assessment\n\n## Overview\n\nThis skill provides multi-method binding pocket detection on protein structures, druggability scoring, pocket visualization, and cross-structure pocket comparison. It is the first dedicated step in any structure-based drug design workflow — identifying **where** on a protein a small molecule can bind before docking or de novo design begins.\n\n**Key capabilities:**\n- **Three detection methods**: grid-based cavity scan, fpocket (alpha spheres), P2Rank (machine learning)\n- **Druggability scoring**: 6-axis weighted assessment (volume, hydrophobicity, enclosure, depth, H-bond capacity, aromaticity)\n- **Visualization**: summary panels, residue composition, druggability radar, method comparison plots\n- **Cross-structure comparison**: match pockets across apo\u002Fholo, wild-type\u002Fmutant, or predicted\u002Fexperimental structures\n\n## When to Use This Skill\n\nUse the `pocket-detection` skill when you need to:\n\n- **Find binding sites** on a protein structure before docking\n- **Assess druggability** of detected pockets (can a drug-like molecule bind here?)\n- **Compare pockets** across multiple structures (e.g., apo vs holo, WT vs mutant)\n- **Visualize pocket properties** for reports or publications\n- **Validate binding sites** using multiple detection methods for consensus\n- **Identify allosteric sites** beyond the obvious orthosteric pocket\n\nTrigger phrases: \"find binding pocket\", \"detect active site\", \"druggability assessment\", \"pocket detection\", \"where does the ligand bind\", \"compare binding sites\"\n\n**Do NOT use this skill for:**\n- Actually docking ligands into pockets (use `molecular-docking`)\n- Predicting how tightly a ligand binds (use `binding-affinity`)\n- Protein structure prediction (use `structure-prediction` first, then this)\n- Protein-protein interaction surfaces (use ClusPro or HDOCK)\n\n### Related Skills\n- **molecular-docking**: Dock ligands into detected pockets. This skill's JSON output feeds directly into `dock.py --center_x\u002Fy\u002Fz`.\n- **binding-affinity**: Score docked poses for binding strength. Run after docking.\n- **structure-prediction**: Predict protein structure from sequence when no experimental PDB is available. Run before this skill.\n\n## Installation\n\n### Required Dependencies\n\n```bash\n# Core (required for all modes)\npip install biopython numpy scipy\n```\n\n### Optional Dependencies\n\n```bash\n# fpocket method (external binary)\n# Ubuntu\u002FDebian: sudo apt-get install fpocket\n# macOS: brew install fpocket\n# Or build from source: https:\u002F\u002Fgithub.com\u002FDiscngine\u002Ffpocket\n\n# P2Rank method (external binary)\n# Download from: https:\u002F\u002Fgithub.com\u002Frdk\u002Fp2rank\u002Freleases\n# Set P2RANK_HOME environment variable to installation directory\n\n# Visualization\npip install matplotlib\n\n# RDKit (optional, for enhanced hydrogen bond analysis)\npip install rdkit-pypi\n```\n\n### Quick Verification\n\n```bash\npython -c \"from Bio.PDB import PDBParser; print('BioPython OK')\"\npython -c \"import numpy; print('NumPy OK')\"\npython -c \"from scipy.spatial import ConvexHull; print('SciPy OK')\"\npython -c \"import shutil; print('fpocket:', 'OK' if shutil.which('fpocket') else 'not found')\"\n```\n\n### Species Validation\n\nBefore running pocket detection, verify the PDB structure species matches the user's target.\nIf the user requests \"human\" but the PDB HEADER shows another organism (e.g., murine), flag\nthis to the user before proceeding. Parse the PDB HEADER\u002FSOURCE records to check organism.\n\n## Core Workflows\n\n### Workflow 1: Detect Pockets (Grid Method)\n\nDetect binding pockets on a prepared protein structure using the built-in grid-based cavity scan.\n\n```bash\n# Basic detection\npython scripts\u002Fdetect.py \\\n    --input prepared_protein.pdb \\\n    --output pockets.json\n\n# With chain selection and custom parameters\npython scripts\u002Fdetect.py \\\n    --input protein.pdb \\\n    --output pockets.json \\\n    --chain A \\\n    --min-volume 200 \\\n    --max-pockets 5\n\n# Also check co-crystallized ligand sites\npython scripts\u002Fdetect.py \\\n    --input protein_with_ligand.pdb \\\n    --output pockets.json \\\n    --include-ligand-sites\n```\n\n### Workflow 2: Multi-Method Detection\n\nRun multiple detection methods for higher confidence.\n\n```bash\n# Grid-based (built-in, no external deps)\npython scripts\u002Fdetect.py --input protein.pdb --output pockets_grid.json --method grid\n\n# fpocket (requires fpocket binary)\npython scripts\u002Fdetect.py --input protein.pdb --output pockets_fpocket.json --method fpocket\n\n# P2Rank (requires P2Rank installation)\npython scripts\u002Fdetect.py --input protein.pdb --output pockets_p2rank.json --method p2rank\n\n# Auto: tries P2Rank → fpocket → grid (first available)\npython scripts\u002Fdetect.py --input protein.pdb --output pockets.json --method auto\n```\n\n### Workflow 3: Druggability Assessment\n\nScore detected pockets for drug-likeness.\n\n```bash\npython scripts\u002Fdruggability.py \\\n    --input protein.pdb \\\n    --pockets pockets.json \\\n    --output druggability.json\n```\n\n### Workflow 4: Visualize Pockets\n\nGenerate publication-quality pocket visualizations.\n\n```bash\n# Summary overview (multi-panel)\npython scripts\u002Fvisualize.py \\\n    --input protein.pdb \\\n    --pockets druggability.json \\\n    --output pocket_summary.png \\\n    --plot-type summary\n\n# Druggability radar for top 3 pockets\npython scripts\u002Fvisualize.py \\\n    --input protein.pdb \\\n    --pockets druggability.json \\\n    --output radar.png \\\n    --plot-type druggability-radar\n\n# Compare methods side-by-side\npython scripts\u002Fvisualize.py \\\n    --input protein.pdb \\\n    --pockets pockets_grid.json pockets_fpocket.json pockets_p2rank.json \\\n    --labels \"Grid\" \"fpocket\" \"P2Rank\" \\\n    --output method_comparison.png \\\n    --plot-type method-comparison\n```\n\n### Workflow 5: Cross-Structure Comparison\n\nCompare pockets across different structures of the same protein.\n\n```bash\npython scripts\u002Fcompare.py \\\n    --structures apo.pdb holo.pdb \\\n    --labels \"Apo\" \"Holo\" \\\n    --output pocket_comparison.json \\\n    --align\n```\n\n### Workflow 6: Full Pipeline (Detection → Druggability → Docking)\n\n```bash\n# 1. Detect pockets\npython scripts\u002Fdetect.py \\\n    --input prepared.pdb \\\n    --output pockets.json\n\n# 2. Score druggability\npython scripts\u002Fdruggability.py \\\n    --input prepared.pdb \\\n    --pockets pockets.json \\\n    --output druggability.json\n\n# 3. Feed into docking (reads center from pockets JSON)\npython ..\u002Fmolecular-docking\u002Fscripts\u002Fdock.py \\\n    --protein prepared.pdb \\\n    --ligand ligand.sdf \\\n    --output-dir docking_results\u002F \\\n    --center_x $(python -c \"import json; d=json.load(open('pockets.json')); print(d['pockets'][0]['center'][0])\") \\\n    --center_y $(python -c \"import json; d=json.load(open('pockets.json')); print(d['pockets'][0]['center'][1])\") \\\n    --center_z $(python -c \"import json; d=json.load(open('pockets.json')); print(d['pockets'][0]['center'][2])\")\n```\n\n## Script Reference\n\n| Script | Purpose | Key Inputs | Key Outputs |\n|--------|---------|------------|-------------|\n| `scripts\u002Fdetect.py` | Multi-method pocket detection | PDB file | Pockets JSON |\n| `scripts\u002Fdruggability.py` | Pocket druggability scoring | PDB + Pockets JSON | Druggability JSON |\n| `scripts\u002Fvisualize.py` | Pocket visualization | PDB + Pockets JSON | PNG\u002FSVG image |\n| `scripts\u002Fcompare.py` | Cross-structure comparison | 2+ PDB files | Comparison JSON |\n\n## Output Format\n\n### Pockets JSON (from detect.py)\n\n```json\n{\n  \"protein\": \"protein.pdb\",\n  \"method\": \"grid\",\n  \"chain\": \"A\",\n  \"n_pockets\": 3,\n  \"pockets\": [\n    {\n      \"rank\": 1,\n      \"source\": \"grid\",\n      \"center\": [10.5, 22.3, 15.0],\n      \"volume_A3\": 542.8,\n      \"residues\": [\"ASP189\", \"SER195\", \"HIS57\"],\n      \"n_residues\": 15,\n      \"bbox_min\": [5.2, 17.1, 10.8],\n      \"bbox_max\": [16.1, 27.9, 19.3]\n    }\n  ]\n}\n```\n\n**Critical:** The `\"center\"` field is a 3-element float list `[x, y, z]` compatible with `dock.py` auto-discovery.\n\n### Druggability JSON (from druggability.py)\n\nAugments the pockets JSON with per-pocket druggability data:\n\n```json\n{\n  \"pockets\": [\n    {\n      \"rank\": 1,\n      \"center\": [10.5, 22.3, 15.0],\n      \"druggability_score\": 0.72,\n      \"druggability_class\": \"druggable\",\n      \"properties\": {\n        \"volume_A3\": 542.8,\n        \"hydrophobicity\": 0.45,\n        \"enclosure\": 0.62,\n        \"depth_A\": 7.3,\n        \"hb_capacity\": 5,\n        \"aromaticity\": 3\n      }\n    }\n  ]\n}\n```\n\n## Output Interpretation\n\n### Druggability Classes\n\n| Class | Score | Meaning |\n|-------|-------|---------|\n| Druggable | > 0.7 | Pocket is well-suited for small molecule inhibitors |\n| Difficult | 0.4 - 0.7 | May require fragment-based or specialized approaches |\n| Undruggable | \u003C 0.4 | Unlikely to bind drug-like molecules; consider PPI inhibitors or peptides |\n\n**Important:** Druggability classification is based on literature-derived heuristic thresholds (Halgren 2009, Volkamer 2012), not a validated predictive model. Treat as guidance for prioritization, not a definitive assessment.\n\n### Volume Interpretation\n\n- **\u003C 150 A^3**: Too small for drug-like molecules. May bind fragments or ions.\n- **150-300 A^3**: Fragment-sized pocket. Suitable for fragment-based drug design.\n- **300-800 A^3**: Ideal drug-like pocket. Most approved drugs bind in this range.\n- **800-1500 A^3**: Large pocket. May require extended molecules or PROTACs.\n- **> 1500 A^3**: Very large or flat. Likely a protein-protein interaction surface.\n\n### Method Comparison\n\n| Method | Strengths | Limitations |\n|--------|-----------|-------------|\n| Grid | No external deps, good for standard cavities | Slow on large proteins, may find non-functional cavities |\n| fpocket | Fast, well-validated, handles flexible pockets | Requires external binary |\n| P2Rank | ML-based, highest accuracy on benchmarks | Requires Java + external binary |\n\nWhen methods agree on a pocket location (centers within 5 A), confidence is high. Disagreements suggest the pocket is borderline or method-dependent.\n\n## Troubleshooting\n\n- **Single giant pocket (volume >5000 A^3) or only 1 pocket returned**: The grid method's clustering merged nearby cavities into one. Fixes, in order:\n  1. Try `--method auto` (uses P2Rank or fpocket if available — both handle this better)\n  2. Try `--method fpocket` (alpha sphere method naturally separates sub-pockets)\n  3. Increase `--min-volume 300` to filter noise and re-run\n  4. Add `--chain A` to analyze only the biologically relevant chain\n  5. **Do NOT rewrite the detection logic in custom code.** Adjust parameters instead.\n- **No pockets detected**: The protein may lack a clear cavity. Try reducing `--min-volume 100`, or provide manual coordinates for docking.\n- **All druggability scores are identical**: This can happen when all detected pockets have similar size\u002Fdepth\u002Fcomposition. Run `druggability.py` — it uses continuous Gaussian scoring that produces differentiated scores even for similar pockets. If scores are still very close (>0.9 for all), the protein genuinely has multiple high-quality binding sites.\n- **fpocket not found**: Install fpocket or use `--method grid` as fallback.\n- **P2Rank not found**: Set `P2RANK_HOME` environment variable or use `--method grid`.\n- **Very large protein (>5000 residues)**: Grid method may be slow. Use fpocket or P2Rank instead, or increase `--grid-spacing` to 1.5.\n- **Pocket at crystal contact**: Check if the pocket is between symmetry mates. Filter by chain with `--chain`.\n\n**IMPORTANT for agents**: When a skill script produces unexpected output (e.g., a single giant pocket, no pockets, or identical scores), adjust the script's parameters or try a different `--method`. Do NOT abandon the skill scripts and rewrite the logic in custom code. The skill scripts handle edge cases, validate I\u002FO contracts, and log to the manifest — custom rewrites skip all of this.\n\n## References\n\n- Le Guilloux, V. et al. \"Fpocket: an open source platform for ligand pocket detection.\" BMC Bioinformatics 10, 168 (2009).\n- Krivak, R. & Hoksza, D. \"P2Rank: machine learning based tool for rapid and accurate prediction of ligand binding sites.\" J. Cheminform. 10, 39 (2018).\n- Halgren, T.A. \"Identifying and characterizing binding sites and assessing druggability.\" J. Chem. Inf. Model. 49, 377-389 (2009).\n- Volkamer, A. et al. \"DoGSiteScorer: a web server for automatic binding site prediction, analysis and druggability assessment.\" Bioinformatics 28, 2074-2075 (2012).\n","# Pocket Detection & Druggability Assessment\n\n## Overview\n\nThis skill provides multi-method binding pocket detection on protein structures, druggability scoring, pocket visualization, and cross-structure pocket comparison. It is the first dedicated step in any structure-based drug design workflow — identifying **where** on a protein a small molecule can bind before docking or de novo design begins.\n\n**Key capabilities:**\n- **Three detection methods**: grid-based cavity scan, fpocket (alpha spheres), P2Rank (machine learning)\n- **Druggability scoring**: 6-axis weighted assessment (volume, hydrophobicity, enclosure, depth, H-bond capacity, aromaticity)\n- **Visualization**: summary panels, residue composition, druggability radar, method comparison plots\n- **Cross-structure comparison**: match pockets across apo\u002Fholo, wild-type\u002Fmutant, or predicted\u002Fexperimental structures\n\n## When to Use This Skill\n\nUse the `pocket-detection` skill when you need to:\n\n- **Find binding sites** on a protein structure before docking\n- **Assess druggability** of detected pockets (can a drug-like molecule bind here?)\n- **Compare pockets** across multiple structures (e.g., apo vs holo, WT vs mutant)\n- **Visualize pocket properties** for reports or publications\n- **Validate binding sites** using multiple detection methods for consensus\n- **Identify allosteric sites** beyond the obvious orthosteric pocket\n\nTrigger phrases: \"find binding pocket\", \"detect active site\", \"druggability assessment\", \"pocket detection\", \"where does the ligand bind\", \"compare binding sites\"\n\n**Do NOT use this skill for:**\n- Actually docking ligands into pockets (use `molecular-docking`)\n- Predicting how tightly a ligand binds (use `binding-affinity`)\n- Protein structure prediction (use `structure-prediction` first, then this)\n- Protein-protein interaction surfaces (use ClusPro or HDOCK)\n\n### Related Skills\n- **molecular-docking**: Dock ligands into detected pockets. This skill's JSON output feeds directly into `dock.py --center_x\u002Fy\u002Fz`.\n- **binding-affinity**: Score docked poses for binding strength. Run after docking.\n- **structure-prediction**: Predict protein structure from sequence when no experimental PDB is available. Run before this skill.\n\n## Installation\n\n### Required Dependencies\n\n```bash\n# Core (required for all modes)\npip install biopython numpy scipy\n```\n\n### Optional Dependencies\n\n```bash\n# fpocket method (external binary)\n# Ubuntu\u002FDebian: sudo apt-get install fpocket\n# macOS: brew install fpocket\n# Or build from source: https:\u002F\u002Fgithub.com\u002FDiscngine\u002Ffpocket\n\n# P2Rank method (external binary)\n# Download from: https:\u002F\u002Fgithub.com\u002Frdk\u002Fp2rank\u002Freleases\n# Set P2RANK_HOME environment variable to installation directory\n\n# Visualization\npip install matplotlib\n\n# RDKit (optional, for enhanced hydrogen bond analysis)\npip install rdkit-pypi\n```\n\n### Quick Verification\n\n```bash\npython -c \"from Bio.PDB import PDBParser; print('BioPython OK')\"\npython -c \"import numpy; print('NumPy OK')\"\npython -c \"from scipy.spatial import ConvexHull; print('SciPy OK')\"\npython -c \"import shutil; print('fpocket:', 'OK' if shutil.which('fpocket') else 'not found')\"\n```\n\n### Species Validation\n\nBefore running pocket detection, verify the PDB structure species matches the user's target.\nIf the user requests \"human\" but the PDB HEADER shows another organism (e.g., murine), flag\nthis to the user before proceeding. Parse the PDB HEADER\u002FSOURCE records to check organism.\n\n## Core Workflows\n\n### Workflow 1: Detect Pockets (Grid Method)\n\nDetect binding pockets on a prepared protein structure using the built-in grid-based cavity scan.\n\n```bash\n# Basic detection\npython scripts\u002Fdetect.py \\\n    --input prepared_protein.pdb \\\n    --output pockets.json\n\n# With chain selection and custom parameters\npython scripts\u002Fdetect.py \\\n    --input protein.pdb \\\n    --output pockets.json \\\n    --chain A \\\n    --min-volume 200 \\\n    --max-pockets 5\n\n# Also check co-crystallized ligand sites\npython scripts\u002Fdetect.py \\\n    --input protein_with_ligand.pdb \\\n    --output pockets.json \\\n    --include-ligand-sites\n```\n\n### Workflow 2: Multi-Method Detection\n\nRun multiple detection methods for higher confidence.\n\n```bash\n# Grid-based (built-in, no external deps)\npython scripts\u002Fdetect.py --input protein.pdb --output pockets_grid.json --method grid\n\n# fpocket (requires fpocket binary)\npython scripts\u002Fdetect.py --input protein.pdb --output pockets_fpocket.json --method fpocket\n\n# P2Rank (requires P2Rank installation)\npython scripts\u002Fdetect.py --input protein.pdb --output pockets_p2rank.json --method p2rank\n\n# Auto: tries P2Rank → fpocket → grid (first available)\npython scripts\u002Fdetect.py --input protein.pdb --output pockets.json --method auto\n```\n\n### Workflow 3: Druggability Assessment\n\nScore detected pockets for drug-likeness.\n\n```bash\npython scripts\u002Fdruggability.py \\\n    --input protein.pdb \\\n    --pockets pockets.json \\\n    --output druggability.json\n```\n\n### Workflow 4: Visualize Pockets\n\nGenerate publication-quality pocket visualizations.\n\n```bash\n# Summary overview (multi-panel)\npython scripts\u002Fvisualize.py \\\n    --input protein.pdb \\\n    --pockets druggability.json \\\n    --output pocket_summary.png \\\n    --plot-type summary\n\n# Druggability radar for top 3 pockets\npython scripts\u002Fvisualize.py \\\n    --input protein.pdb \\\n    --pockets druggability.json \\\n    --output radar.png \\\n    --plot-type druggability-radar\n\n# Compare methods side-by-side\npython scripts\u002Fvisualize.py \\\n    --input protein.pdb \\\n    --pockets pockets_grid.json pockets_fpocket.json pockets_p2rank.json \\\n    --labels \"Grid\" \"fpocket\" \"P2Rank\" \\\n    --output method_comparison.png \\\n    --plot-type method-comparison\n```\n\n### Workflow 5: Cross-Structure Comparison\n\nCompare pockets across different structures of the same protein.\n\n```bash\npython scripts\u002Fcompare.py \\\n    --structures apo.pdb holo.pdb \\\n    --labels \"Apo\" \"Holo\" \\\n    --output pocket_comparison.json \\\n    --align\n```\n\n### Workflow 6: Full Pipeline (Detection → Druggability → Docking)\n\n```bash\n# 1. Detect pockets\npython scripts\u002Fdetect.py \\\n    --input prepared.pdb \\\n    --output pockets.json\n\n# 2. Score druggability\npython scripts\u002Fdruggability.py \\\n    --input prepared.pdb \\\n    --pockets pockets.json \\\n    --output druggability.json\n\n# 3. Feed into docking (reads center from pockets JSON)\npython ..\u002Fmolecular-docking\u002Fscripts\u002Fdock.py \\\n    --protein prepared.pdb \\\n    --ligand ligand.sdf \\\n    --output-dir docking_results\u002F \\\n    --center_x $(python -c \"import json; d=json.load(open('pockets.json')); print(d['pockets'][0]['center'][0])\") \\\n    --center_y $(python -c \"import json; d=json.load(open('pockets.json')); print(d['pockets'][0]['center'][1])\") \\\n    --center_z $(python -c \"import json; d=json.load(open('pockets.json')); print(d['pockets'][0]['center'][2])\")\n```\n\n## Script Reference\n\n| Script | Purpose | Key Inputs | Key Outputs |\n|--------|---------|------------|-------------|\n| `scripts\u002Fdetect.py` | Multi-method pocket detection | PDB file | Pockets JSON |\n| `scripts\u002Fdruggability.py` | Pocket druggability scoring | PDB + Pockets JSON | Druggability JSON |\n| `scripts\u002Fvisualize.py` | Pocket visualization | PDB + Pockets JSON | PNG\u002FSVG image |\n| `scripts\u002Fcompare.py` | Cross-structure comparison | 2+ PDB files | Comparison JSON |\n\n## Output Format\n\n### Pockets JSON (from detect.py)\n\n```json\n{\n  \"protein\": \"protein.pdb\",\n  \"method\": \"grid\",\n  \"chain\": \"A\",\n  \"n_pockets\": 3,\n  \"pockets\": [\n    {\n      \"rank\": 1,\n      \"source\": \"grid\",\n      \"center\": [10.5, 22.3, 15.0],\n      \"volume_A3\": 542.8,\n      \"residues\": [\"ASP189\", \"SER195\", \"HIS57\"],\n      \"n_residues\": 15,\n      \"bbox_min\": [5.2, 17.1, 10.8],\n      \"bbox_max\": [16.1, 27.9, 19.3]\n    }\n  ]\n}\n```\n\n**Critical:** The `\"center\"` field is a 3-element float list `[x, y, z]` compatible with `dock.py` auto-discovery.\n\n### Druggability JSON (from druggability.py)\n\nAugments the pockets JSON with per-pocket druggability data:\n\n```json\n{\n  \"pockets\": [\n    {\n      \"rank\": 1,\n      \"center\": [10.5, 22.3, 15.0],\n      \"druggability_score\": 0.72,\n      \"druggability_class\": \"druggable\",\n      \"properties\": {\n        \"volume_A3\": 542.8,\n        \"hydrophobicity\": 0.45,\n        \"enclosure\": 0.62,\n        \"depth_A\": 7.3,\n        \"hb_capacity\": 5,\n        \"aromaticity\": 3\n      }\n    }\n  ]\n}\n```\n\n## Output Interpretation\n\n### Druggability Classes\n\n| Class | Score | Meaning |\n|-------|-------|---------|\n| Druggable | > 0.7 | Pocket is well-suited for small molecule inhibitors |\n| Difficult | 0.4 - 0.7 | May require fragment-based or specialized approaches |\n| Undruggable | \u003C 0.4 | Unlikely to bind drug-like molecules; consider PPI inhibitors or peptides |\n\n**Important:** Druggability classification is based on literature-derived heuristic thresholds (Halgren 2009, Volkamer 2012), not a validated predictive model. Treat as guidance for prioritization, not a definitive assessment.\n\n### Volume Interpretation\n\n- **\u003C 150 A^3**: Too small for drug-like molecules. May bind fragments or ions.\n- **150-300 A^3**: Fragment-sized pocket. Suitable for fragment-based drug design.\n- **300-800 A^3**: Ideal drug-like pocket. Most approved drugs bind in this range.\n- **800-1500 A^3**: Large pocket. May require extended molecules or PROTACs.\n- **> 1500 A^3**: Very large or flat. Likely a protein-protein interaction surface.\n\n### Method Comparison\n\n| Method | Strengths | Limitations |\n|--------|-----------|-------------|\n| Grid | No external deps, good for standard cavities | Slow on large proteins, may find non-functional cavities |\n| fpocket | Fast, well-validated, handles flexible pockets | Requires external binary |\n| P2Rank | ML-based, highest accuracy on benchmarks | Requires Java + external binary |\n\nWhen methods agree on a pocket location (centers within 5 A), confidence is high. Disagreements suggest the pocket is borderline or method-dependent.\n\n## Troubleshooting\n\n- **Single giant pocket (volume >5000 A^3) or only 1 pocket returned**: The grid method's clustering merged nearby cavities into one. Fixes, in order:\n  1. Try `--method auto` (uses P2Rank or fpocket if available — both handle this better)\n  2. Try `--method fpocket` (alpha sphere method naturally separates sub-pockets)\n  3. Increase `--min-volume 300` to filter noise and re-run\n  4. Add `--chain A` to analyze only the biologically relevant chain\n  5. **Do NOT rewrite the detection logic in custom code.** Adjust parameters instead.\n- **No pockets detected**: The protein may lack a clear cavity. Try reducing `--min-volume 100`, or provide manual coordinates for docking.\n- **All druggability scores are identical**: This can happen when all detected pockets have similar size\u002Fdepth\u002Fcomposition. Run `druggability.py` — it uses continuous Gaussian scoring that produces differentiated scores even for similar pockets. If scores are still very close (>0.9 for all), the protein genuinely has multiple high-quality binding sites.\n- **fpocket not found**: Install fpocket or use `--method grid` as fallback.\n- **P2Rank not found**: Set `P2RANK_HOME` environment variable or use `--method grid`.\n- **Very large protein (>5000 residues)**: Grid method may be slow. Use fpocket or P2Rank instead, or increase `--grid-spacing` to 1.5.\n- **Pocket at crystal contact**: Check if the pocket is between symmetry mates. Filter by chain with `--chain`.\n\n**IMPORTANT for agents**: When a skill script produces unexpected output (e.g., a single giant pocket, no pockets, or identical scores), adjust the script's parameters or try a different `--method`. Do NOT abandon the skill scripts and rewrite the logic in custom code. The skill scripts handle edge cases, validate I\u002FO contracts, and log to the manifest — custom rewrites skip all of this.\n\n## References\n\n- Le Guilloux, V. et al. \"Fpocket: an open source platform for ligand pocket detection.\" BMC Bioinformatics 10, 168 (2009).\n- Krivak, R. & Hoksza, D. \"P2Rank: machine learning based tool for rapid and accurate prediction of ligand binding sites.\" J. Cheminform. 10, 39 (2018).\n- Halgren, T.A. \"Identifying and characterizing binding sites and assessing druggability.\" J. Chem. Inf. Model. 49, 377-389 (2009).\n- Volkamer, A. et al. \"DoGSiteScorer: a web server for automatic binding site prediction, analysis and druggability assessment.\" Bioinformatics 28, 2074-2075 (2012).\n",{"name":5,"tags":44,"author":46,"license":15,"version":47,"category":48,"metadata":49,"description":7,"dependencies":50},[20,23,45,22],"Drug Discovery","Synthetic Sciences","1.0.0","chemistry",{"skill-author":46},[51,34,33],"biopython>=1.84","main","4aa39efd1cdab0b4657ecee16c92a92011a5b10f","openscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fpocket-detection","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub","https:\u002F\u002Fgithub.com\u002Ffadrienne","2026-10-28 00:43:09",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add fadrienne\u002FMyGitHub --skill pocket-detection",{"tool":64,"command":65},"bunx","bunx skills add fadrienne\u002FMyGitHub --skill pocket-detection",{"tool":67,"command":68},"pnpm","pnpm dlx skills add fadrienne\u002FMyGitHub --skill pocket-detection","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fpocket-detection\u002FSKILL.md",true,[72,78,84,88,92,96],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fmethods_guide.md","REFERENCE","参考文档",5861,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fpocket-detection\u002Freferences\u002Fmethods_guide.md",{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"scripts\u002Fcompare.py","SCRIPT","脚本",12178,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fpocket-detection\u002Fscripts\u002Fcompare.py",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Fdetect.py",28517,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fpocket-detection\u002Fscripts\u002Fdetect.py",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"scripts\u002Fdruggability.py",15020,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fpocket-detection\u002Fscripts\u002Fdruggability.py",{"path":93,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002Foutput_guard.py",2145,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fpocket-detection\u002Fscripts\u002Foutput_guard.py",{"path":97,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":98,"sourceHtmlUrl":99},"scripts\u002Fvisualize.py",14063,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fchemistry\u002Fpocket-detection\u002Fscripts\u002Fvisualize.py",[101,131,157,190,216,243],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":112,"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",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[113,114,115,33,116,117,30,118,119,120,121,122,123,124,125,126,127,128,129,130],"power","statistical power","effect","regression","choose","uv","when","Bash","collection","analysis","calculation","ANOVA","conversion","analyze","t-test","chi-square","simulation","sample",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":140,"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",[137],{"categoryNo":138,"categoryName":139,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000008","测试与质量",[122,141,113,142,143,144,119,145,146,147,148,149,150,25,151,152,153,154,155,156],"statistical analysis","academic research","implementing","selection","you","reporting","data","for","tests","use","test","research","results","statsmodels","models","help",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":172,"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",[163,166,167],{"categoryNo":164,"categoryName":165,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},{"categoryNo":168,"categoryName":169,"taxonomyType":170,"taxonomyTypeDesc":171},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[173,174,175,176,177,178,179,180,181,182,120,183,184,31,185,186,187,188,146,189],"writing","scientific","scientific writing","Citations","deep","deep research","never","papers","journal","false","api","prisma","openrouter","Outlines","core skill","read","features",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":200,"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",[196,199],{"categoryNo":197,"categoryName":198,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},[37,174,201,202,203,204,205,206,207,181,119,208,209,210,211,212,213,214,148,215],"scientific visualization","error","ready","quick","exploration","meta-skill","Meta","safe","plotly","annotations","formatting","Publication","figures","panel","submission",{"skillNo":217,"name":218,"nameZh":6,"description":219,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":220,"categories":221,"keywords":228,"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",[222,225],{"categoryNo":223,"categoryName":224,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":226,"categoryName":227,"taxonomyType":170,"taxonomyTypeDesc":171},"01JBSEEDCAT000000000000030","开发工程师",[229,230,152,231,232,233,234,118,235,119,120,122,236,237,238,239,240,241,188,242],"code","research code","which","memory","data-analysis","errors","debugging","common","review","data pipelines","run","scripts","line","write",{"skillNo":244,"name":245,"nameZh":6,"description":246,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":247,"licenseFileUrl":6,"sourceHtmlUrl":248,"categories":249,"keywords":256,"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",[250,253,254,255],{"categoryNo":251,"categoryName":252,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":164,"categoryName":165,"taxonomyType":110,"taxonomyTypeDesc":111},{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},{"categoryNo":168,"categoryName":169,"taxonomyType":170,"taxonomyTypeDesc":171},[173,257,258,259,260,261,37,262,263,119,120,122,264,265,266,267,268,269,174,188],"markdown mermaid writing","mermaid","markdown","community","diagrams","project","default","team","guides","text","documentation","references","diagram"]