[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-google-deepmind-pymol":3,"mdc-s8fadm-key":36,"related-org-google-deepmind-pymol":993,"related-repo-google-deepmind-pymol":1159},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"pymol","visualize and analyze molecular structures","Visualize, analyze, and render protein and molecular structures using PyMOL. Use when the user wants to create images of protein structures, perform structural alignments or superposition, measure distances or contacts, highlight binding sites or active site residues, color by B-factor\u002FpLDDT, or analyze protein-ligand interactions. Do not use for docking, molecular dynamics, or sequence-only analysis.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"google-deepmind","Google DeepMind","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fgoogle-deepmind.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Research","research","tag",{"name":17,"slug":18,"type":15},"Data Visualization","data-visualization",{"name":20,"slug":21,"type":15},"Life Sciences","life-sciences",{"name":23,"slug":24,"type":15},"Bioinformatics","bioinformatics",2333,"https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fscience-skills","2026-07-12T07:51:30.481948",null,234,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"GDM Science Skills to speed up agentic scientific workflows with better grounding and higher token efficiency. Integrate insights from AlphaGenome, AFDB, UniProt and 30+ other databases and tools.","https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fscience-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fpymol","---\nname: pymol\ndescription: >\n  Visualize, analyze, and render protein and molecular structures using PyMOL.\n  Use when the user wants to create images of protein structures, perform\n  structural alignments or superposition, measure distances or contacts,\n  highlight binding sites or active site residues, color by B-factor\u002FpLDDT,\n  or analyze protein-ligand interactions. Do not use for docking,\n  molecular dynamics, or sequence-only analysis.\n---\n\n# PyMOL\n\n## Prerequisites\n\n1.  **`uv`**: Read the `uv` skill and follow its Setup instructions to ensure\n    `uv` is installed and on PATH.\n2.  **User Notification**: If .licenses\u002Fpymol_LICENSE.txt does not already exist\n    in the workspace root directory then (1) prominently notify the user to\n    check the license at https:\u002F\u002Fwww.pymol.org\u002F, then (2) create the file\n    recording the notification text and timestamp.\n\n## Overview\n\nAll PyMOL commands run on the host via `uv` with OSMesa software rendering — no\nGPU, display, or X server is needed. Structure files must be downloaded to the\nhost before running PyMOL.\n\n**Do NOT use when:**\n\n-   The user wants to run AlphaFold predictions.\n-   The user wants docking or molecular dynamics simulations.\n-   The user only has a sequence and no structure file — fetch the structure\n    first. Check if any other installed skills can retrieve structures from the\n    PDB or AlphaFold Database before proceeding.\n\n## Setup (Agent Instructions)\n\nEnsure that `uv` is installed on the host system. The PyMOL scripts use PEP 0723\nheaders to declare their dependencies, and `uv run` will automatically handle\ninstalling them (including `pymol-open-source-whl`) when the script is executed.\n\n## Core Rules\n\n-   **Output paths must be absolute or relative to the user's project root.**\n    Always run PyMOL scripts from the user's project directory.\n-   **Software rendering only.** Use `cmd.png()` for output. Never use\n    `cmd.draw()` or `cmd.ray()` with hardware acceleration — OSMesa does not\n    support it. Set environment variable `PYOPENGL_PLATFORM=osmesa` for headless\n    rendering.\n-   **Always save a `.pse` session file** alongside any PNG output. This lets\n    the user open the session in their local PyMOL for further inspection.\n-   **Always call `cmd.quit()`** at the end of every PyMOL script. Omitting it\n    causes the process to stop responding.\n-   **Init boilerplate is mandatory.** Every PyMOL script must begin with the\n    initialization sequence. `from pymol import cmd` must come after\n    `finish_launching()`, not before.\n-   See [references\u002FPYMOL_REFERENCE.md](references\u002FPYMOL_REFERENCE.md) for\n    selection syntax, common commands, and gotchas.\n-   **Pre-Flight File Check**: Before writing the PyMOL script or running it,\n    you MUST verify that the requested structure file actually exists on the\n    host machine.\n-   **Verify Structure Load**: After loading a structure with `cmd.load()`,\n    always verify it succeeded by checking `cmd.count_atoms(\"all\")`. If the\n    result is 0, print an error to stdout and call `cmd.quit()` immediately.\n-   **Notification**: If this skill is used, ensure this is mentioned in the\n    output.\n\n## Quick Start\n\n*   Ensure structure files are downloaded to a directory in the user's project.\n*   Write a PyMOL Python script (e.g., `render.py`) with the required init\n    boilerplate and PEP 0723 header.\n*   Run it via `uv run`: `bash uv run render.py`\n\n### Minimal example script (`render.py`)\n\n```python\n# \u002F\u002F\u002F script\n# requires-python = \">=3.10, \u003C3.13\"\n# dependencies = [\n#     \"pymol-open-source-whl\",\n# ]\n# \u002F\u002F\u002F\n\nimport os\nimport sys\n\n# Set environment variable for headless rendering\nos.environ[\"PYOPENGL_PLATFORM\"] = \"osmesa\"\n\nimport pymol # pytype: disable=import-error\npymol.pymol_argv = [\"pymol\", \"-cq\"]\npymol.finish_launching()\n\nfrom pymol import cmd # pytype: disable=import-error\n\ncmd.load(\"AF-P00520-F1-model_v4.cif\", \"structure\")\ncmd.show(\"cartoon\")\ncmd.color(\"green\", \"ss h\")\ncmd.color(\"yellow\", \"ss s\")\ncmd.color(\"gray\", \"ss l+''\")\ncmd.orient()\ncmd.set(\"ray_opaque_background\", 1)\ncmd.png(\"output\u002Frender.png\", width=1200, height=900, dpi=150)\ncmd.save(\"output\u002Fsession.pse\")\ncmd.quit()\n```\n\n## Common Recipes\n\nSee [references\u002FRECIPES.md](references\u002FRECIPES.md) for complete, copy-paste\nready recipes. Available recipes:\n\n-   **Cartoon with secondary structure coloring** — basic helix\u002Fsheet\u002Floop\n    coloring\n-   **B-factor (pLDDT) coloring** — continuous spectrum coloring by B-factor\n-   **AlphaFold pLDDT coloring** — canonical threshold-based confidence colors\n-   **Highlight specific residues** — show active site or key residues as sticks\n-   **Surface rendering** — transparent surface over cartoon\n-   **Electrostatic surface rendering** — vacuum electrostatics (qualitative)\n-   **Multi-chain complex colors** — automatic per-chain coloring\n-   **B-factor putty analysis** — tube width proportional to flexibility\n-   **Cavity and pocket visualization** — surface cavity detection with ligand\n    focus\n-   **Multi-structure batch rendering** — render a directory of structures\n-   **Measure distance between residues** — CA–CA distance with labels\n-   **Zoom into binding pocket** — simple pocket focus\n-   **Protein-ligand interaction** — ligand isolation, styled rendering, polar\n    contacts\n-   **Two-structure superposition with RMSD** — align\u002Fcealign with auto-fallback\n-   **In silico mutagenesis** — mutate residues with the mutagenesis wizard\n-   **Load and modify an existing session** — re-open a `.pse` file\n\n## Interpreting Output\n\n-   The `output\u002F` directory contains PNG images and a `.pse` session file.\n-   Any measurements or metrics (distances, RMSD, atom counts) are printed to\n    stdout by the PyMOL script. Report these values to the user.\n-   Present PNG images to the user and describe the visualization.\n-   Tell the user they can open the `.pse` file in their local PyMOL to further\n    explore, rotate, or modify the visualization.\n-   If the user wants modifications, load the saved `.pse` in a new script and\n    re-run.\n-   Large sessions with surfaces can exceed the `--max_output_mb` limit (default\n    500 MB). Increase it with `--max_output_mb=1000` if needed.\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,49,56,111,117,130,138,157,163,191,197,377,383,422,436,716,722,733,903,909,987],{"type":42,"tag":43,"props":44,"children":45},"element","h1",{"id":4},[46],{"type":47,"value":48},"text","PyMOL",{"type":42,"tag":50,"props":51,"children":53},"h2",{"id":52},"prerequisites",[54],{"type":47,"value":55},"Prerequisites",{"type":42,"tag":57,"props":58,"children":59},"ol",{},[60,91],{"type":42,"tag":61,"props":62,"children":63},"li",{},[64,75,77,82,84,89],{"type":42,"tag":65,"props":66,"children":67},"strong",{},[68],{"type":42,"tag":69,"props":70,"children":72},"code",{"className":71},[],[73],{"type":47,"value":74},"uv",{"type":47,"value":76},": Read the ",{"type":42,"tag":69,"props":78,"children":80},{"className":79},[],[81],{"type":47,"value":74},{"type":47,"value":83}," skill and follow its Setup instructions to ensure\n",{"type":42,"tag":69,"props":85,"children":87},{"className":86},[],[88],{"type":47,"value":74},{"type":47,"value":90}," is installed and on PATH.",{"type":42,"tag":61,"props":92,"children":93},{},[94,99,101,109],{"type":42,"tag":65,"props":95,"children":96},{},[97],{"type":47,"value":98},"User Notification",{"type":47,"value":100},": If .licenses\u002Fpymol_LICENSE.txt does not already exist\nin the workspace root directory then (1) prominently notify the user to\ncheck the license at ",{"type":42,"tag":102,"props":103,"children":107},"a",{"href":104,"rel":105},"https:\u002F\u002Fwww.pymol.org\u002F",[106],"nofollow",[108],{"type":47,"value":104},{"type":47,"value":110},", then (2) create the file\nrecording the notification text and timestamp.",{"type":42,"tag":50,"props":112,"children":114},{"id":113},"overview",[115],{"type":47,"value":116},"Overview",{"type":42,"tag":118,"props":119,"children":120},"p",{},[121,123,128],{"type":47,"value":122},"All PyMOL commands run on the host via ",{"type":42,"tag":69,"props":124,"children":126},{"className":125},[],[127],{"type":47,"value":74},{"type":47,"value":129}," with OSMesa software rendering — no\nGPU, display, or X server is needed. Structure files must be downloaded to the\nhost before running PyMOL.",{"type":42,"tag":118,"props":131,"children":132},{},[133],{"type":42,"tag":65,"props":134,"children":135},{},[136],{"type":47,"value":137},"Do NOT use when:",{"type":42,"tag":139,"props":140,"children":141},"ul",{},[142,147,152],{"type":42,"tag":61,"props":143,"children":144},{},[145],{"type":47,"value":146},"The user wants to run AlphaFold predictions.",{"type":42,"tag":61,"props":148,"children":149},{},[150],{"type":47,"value":151},"The user wants docking or molecular dynamics simulations.",{"type":42,"tag":61,"props":153,"children":154},{},[155],{"type":47,"value":156},"The user only has a sequence and no structure file — fetch the structure\nfirst. Check if any other installed skills can retrieve structures from the\nPDB or AlphaFold Database before proceeding.",{"type":42,"tag":50,"props":158,"children":160},{"id":159},"setup-agent-instructions",[161],{"type":47,"value":162},"Setup (Agent Instructions)",{"type":42,"tag":118,"props":164,"children":165},{},[166,168,173,175,181,183,189],{"type":47,"value":167},"Ensure that ",{"type":42,"tag":69,"props":169,"children":171},{"className":170},[],[172],{"type":47,"value":74},{"type":47,"value":174}," is installed on the host system. The PyMOL scripts use PEP 0723\nheaders to declare their dependencies, and ",{"type":42,"tag":69,"props":176,"children":178},{"className":177},[],[179],{"type":47,"value":180},"uv run",{"type":47,"value":182}," will automatically handle\ninstalling them (including ",{"type":42,"tag":69,"props":184,"children":186},{"className":185},[],[187],{"type":47,"value":188},"pymol-open-source-whl",{"type":47,"value":190},") when the script is executed.",{"type":42,"tag":50,"props":192,"children":194},{"id":193},"core-rules",[195],{"type":47,"value":196},"Core Rules",{"type":42,"tag":139,"props":198,"children":199},{},[200,210,252,270,286,312,324,334,367],{"type":42,"tag":61,"props":201,"children":202},{},[203,208],{"type":42,"tag":65,"props":204,"children":205},{},[206],{"type":47,"value":207},"Output paths must be absolute or relative to the user's project root.",{"type":47,"value":209},"\nAlways run PyMOL scripts from the user's project directory.",{"type":42,"tag":61,"props":211,"children":212},{},[213,218,220,226,228,234,236,242,244,250],{"type":42,"tag":65,"props":214,"children":215},{},[216],{"type":47,"value":217},"Software rendering only.",{"type":47,"value":219}," Use ",{"type":42,"tag":69,"props":221,"children":223},{"className":222},[],[224],{"type":47,"value":225},"cmd.png()",{"type":47,"value":227}," for output. Never use\n",{"type":42,"tag":69,"props":229,"children":231},{"className":230},[],[232],{"type":47,"value":233},"cmd.draw()",{"type":47,"value":235}," or ",{"type":42,"tag":69,"props":237,"children":239},{"className":238},[],[240],{"type":47,"value":241},"cmd.ray()",{"type":47,"value":243}," with hardware acceleration — OSMesa does not\nsupport it. Set environment variable ",{"type":42,"tag":69,"props":245,"children":247},{"className":246},[],[248],{"type":47,"value":249},"PYOPENGL_PLATFORM=osmesa",{"type":47,"value":251}," for headless\nrendering.",{"type":42,"tag":61,"props":253,"children":254},{},[255,268],{"type":42,"tag":65,"props":256,"children":257},{},[258,260,266],{"type":47,"value":259},"Always save a ",{"type":42,"tag":69,"props":261,"children":263},{"className":262},[],[264],{"type":47,"value":265},".pse",{"type":47,"value":267}," session file",{"type":47,"value":269}," alongside any PNG output. This lets\nthe user open the session in their local PyMOL for further inspection.",{"type":42,"tag":61,"props":271,"children":272},{},[273,284],{"type":42,"tag":65,"props":274,"children":275},{},[276,278],{"type":47,"value":277},"Always call ",{"type":42,"tag":69,"props":279,"children":281},{"className":280},[],[282],{"type":47,"value":283},"cmd.quit()",{"type":47,"value":285}," at the end of every PyMOL script. Omitting it\ncauses the process to stop responding.",{"type":42,"tag":61,"props":287,"children":288},{},[289,294,296,302,304,310],{"type":42,"tag":65,"props":290,"children":291},{},[292],{"type":47,"value":293},"Init boilerplate is mandatory.",{"type":47,"value":295}," Every PyMOL script must begin with the\ninitialization sequence. ",{"type":42,"tag":69,"props":297,"children":299},{"className":298},[],[300],{"type":47,"value":301},"from pymol import cmd",{"type":47,"value":303}," must come after\n",{"type":42,"tag":69,"props":305,"children":307},{"className":306},[],[308],{"type":47,"value":309},"finish_launching()",{"type":47,"value":311},", not before.",{"type":42,"tag":61,"props":313,"children":314},{},[315,317,322],{"type":47,"value":316},"See ",{"type":42,"tag":102,"props":318,"children":320},{"href":319},"references\u002FPYMOL_REFERENCE.md",[321],{"type":47,"value":319},{"type":47,"value":323}," for\nselection syntax, common commands, and gotchas.",{"type":42,"tag":61,"props":325,"children":326},{},[327,332],{"type":42,"tag":65,"props":328,"children":329},{},[330],{"type":47,"value":331},"Pre-Flight File Check",{"type":47,"value":333},": Before writing the PyMOL script or running it,\nyou MUST verify that the requested structure file actually exists on the\nhost machine.",{"type":42,"tag":61,"props":335,"children":336},{},[337,342,344,350,352,358,360,365],{"type":42,"tag":65,"props":338,"children":339},{},[340],{"type":47,"value":341},"Verify Structure Load",{"type":47,"value":343},": After loading a structure with ",{"type":42,"tag":69,"props":345,"children":347},{"className":346},[],[348],{"type":47,"value":349},"cmd.load()",{"type":47,"value":351},",\nalways verify it succeeded by checking ",{"type":42,"tag":69,"props":353,"children":355},{"className":354},[],[356],{"type":47,"value":357},"cmd.count_atoms(\"all\")",{"type":47,"value":359},". If the\nresult is 0, print an error to stdout and call ",{"type":42,"tag":69,"props":361,"children":363},{"className":362},[],[364],{"type":47,"value":283},{"type":47,"value":366}," immediately.",{"type":42,"tag":61,"props":368,"children":369},{},[370,375],{"type":42,"tag":65,"props":371,"children":372},{},[373],{"type":47,"value":374},"Notification",{"type":47,"value":376},": If this skill is used, ensure this is mentioned in the\noutput.",{"type":42,"tag":50,"props":378,"children":380},{"id":379},"quick-start",[381],{"type":47,"value":382},"Quick Start",{"type":42,"tag":139,"props":384,"children":385},{},[386,391,404],{"type":42,"tag":61,"props":387,"children":388},{},[389],{"type":47,"value":390},"Ensure structure files are downloaded to a directory in the user's project.",{"type":42,"tag":61,"props":392,"children":393},{},[394,396,402],{"type":47,"value":395},"Write a PyMOL Python script (e.g., ",{"type":42,"tag":69,"props":397,"children":399},{"className":398},[],[400],{"type":47,"value":401},"render.py",{"type":47,"value":403},") with the required init\nboilerplate and PEP 0723 header.",{"type":42,"tag":61,"props":405,"children":406},{},[407,409,414,416],{"type":47,"value":408},"Run it via ",{"type":42,"tag":69,"props":410,"children":412},{"className":411},[],[413],{"type":47,"value":180},{"type":47,"value":415},": ",{"type":42,"tag":69,"props":417,"children":419},{"className":418},[],[420],{"type":47,"value":421},"bash uv run render.py",{"type":42,"tag":423,"props":424,"children":426},"h3",{"id":425},"minimal-example-script-renderpy",[427,429,434],{"type":47,"value":428},"Minimal example script (",{"type":42,"tag":69,"props":430,"children":432},{"className":431},[],[433],{"type":47,"value":401},{"type":47,"value":435},")",{"type":42,"tag":437,"props":438,"children":443},"pre",{"className":439,"code":440,"language":441,"meta":442,"style":442},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# \u002F\u002F\u002F script\n# requires-python = \">=3.10, \u003C3.13\"\n# dependencies = [\n#     \"pymol-open-source-whl\",\n# ]\n# \u002F\u002F\u002F\n\nimport os\nimport sys\n\n# Set environment variable for headless rendering\nos.environ[\"PYOPENGL_PLATFORM\"] = \"osmesa\"\n\nimport pymol # pytype: disable=import-error\npymol.pymol_argv = [\"pymol\", \"-cq\"]\npymol.finish_launching()\n\nfrom pymol import cmd # pytype: disable=import-error\n\ncmd.load(\"AF-P00520-F1-model_v4.cif\", \"structure\")\ncmd.show(\"cartoon\")\ncmd.color(\"green\", \"ss h\")\ncmd.color(\"yellow\", \"ss s\")\ncmd.color(\"gray\", \"ss l+''\")\ncmd.orient()\ncmd.set(\"ray_opaque_background\", 1)\ncmd.png(\"output\u002Frender.png\", width=1200, height=900, dpi=150)\ncmd.save(\"output\u002Fsession.pse\")\ncmd.quit()\n","python","",[444],{"type":42,"tag":69,"props":445,"children":446},{"__ignoreMap":442},[447,463,472,481,490,499,512,522,531,540,548,557,566,574,583,592,601,609,618,626,635,644,653,662,671,680,689,698,707],{"type":42,"tag":448,"props":449,"children":452},"span",{"class":450,"line":451},"line",1,[453,458],{"type":42,"tag":448,"props":454,"children":455},{},[456],{"type":47,"value":457},"#",{"type":42,"tag":448,"props":459,"children":460},{},[461],{"type":47,"value":462}," \u002F\u002F\u002F script\n",{"type":42,"tag":448,"props":464,"children":466},{"class":450,"line":465},2,[467],{"type":42,"tag":448,"props":468,"children":469},{},[470],{"type":47,"value":471},"# requires-python = \">=3.10, \u003C3.13\"\n",{"type":42,"tag":448,"props":473,"children":475},{"class":450,"line":474},3,[476],{"type":42,"tag":448,"props":477,"children":478},{},[479],{"type":47,"value":480},"# dependencies = [\n",{"type":42,"tag":448,"props":482,"children":484},{"class":450,"line":483},4,[485],{"type":42,"tag":448,"props":486,"children":487},{},[488],{"type":47,"value":489},"#     \"pymol-open-source-whl\",\n",{"type":42,"tag":448,"props":491,"children":493},{"class":450,"line":492},5,[494],{"type":42,"tag":448,"props":495,"children":496},{},[497],{"type":47,"value":498},"# ]\n",{"type":42,"tag":448,"props":500,"children":502},{"class":450,"line":501},6,[503,507],{"type":42,"tag":448,"props":504,"children":505},{},[506],{"type":47,"value":457},{"type":42,"tag":448,"props":508,"children":509},{},[510],{"type":47,"value":511}," \u002F\u002F\u002F\n",{"type":42,"tag":448,"props":513,"children":515},{"class":450,"line":514},7,[516],{"type":42,"tag":448,"props":517,"children":519},{"emptyLinePlaceholder":518},true,[520],{"type":47,"value":521},"\n",{"type":42,"tag":448,"props":523,"children":525},{"class":450,"line":524},8,[526],{"type":42,"tag":448,"props":527,"children":528},{},[529],{"type":47,"value":530},"import os\n",{"type":42,"tag":448,"props":532,"children":534},{"class":450,"line":533},9,[535],{"type":42,"tag":448,"props":536,"children":537},{},[538],{"type":47,"value":539},"import sys\n",{"type":42,"tag":448,"props":541,"children":543},{"class":450,"line":542},10,[544],{"type":42,"tag":448,"props":545,"children":546},{"emptyLinePlaceholder":518},[547],{"type":47,"value":521},{"type":42,"tag":448,"props":549,"children":551},{"class":450,"line":550},11,[552],{"type":42,"tag":448,"props":553,"children":554},{},[555],{"type":47,"value":556},"# Set environment variable for headless rendering\n",{"type":42,"tag":448,"props":558,"children":560},{"class":450,"line":559},12,[561],{"type":42,"tag":448,"props":562,"children":563},{},[564],{"type":47,"value":565},"os.environ[\"PYOPENGL_PLATFORM\"] = \"osmesa\"\n",{"type":42,"tag":448,"props":567,"children":569},{"class":450,"line":568},13,[570],{"type":42,"tag":448,"props":571,"children":572},{"emptyLinePlaceholder":518},[573],{"type":47,"value":521},{"type":42,"tag":448,"props":575,"children":577},{"class":450,"line":576},14,[578],{"type":42,"tag":448,"props":579,"children":580},{},[581],{"type":47,"value":582},"import pymol # pytype: disable=import-error\n",{"type":42,"tag":448,"props":584,"children":586},{"class":450,"line":585},15,[587],{"type":42,"tag":448,"props":588,"children":589},{},[590],{"type":47,"value":591},"pymol.pymol_argv = [\"pymol\", \"-cq\"]\n",{"type":42,"tag":448,"props":593,"children":595},{"class":450,"line":594},16,[596],{"type":42,"tag":448,"props":597,"children":598},{},[599],{"type":47,"value":600},"pymol.finish_launching()\n",{"type":42,"tag":448,"props":602,"children":604},{"class":450,"line":603},17,[605],{"type":42,"tag":448,"props":606,"children":607},{"emptyLinePlaceholder":518},[608],{"type":47,"value":521},{"type":42,"tag":448,"props":610,"children":612},{"class":450,"line":611},18,[613],{"type":42,"tag":448,"props":614,"children":615},{},[616],{"type":47,"value":617},"from pymol import cmd # pytype: disable=import-error\n",{"type":42,"tag":448,"props":619,"children":621},{"class":450,"line":620},19,[622],{"type":42,"tag":448,"props":623,"children":624},{"emptyLinePlaceholder":518},[625],{"type":47,"value":521},{"type":42,"tag":448,"props":627,"children":629},{"class":450,"line":628},20,[630],{"type":42,"tag":448,"props":631,"children":632},{},[633],{"type":47,"value":634},"cmd.load(\"AF-P00520-F1-model_v4.cif\", \"structure\")\n",{"type":42,"tag":448,"props":636,"children":638},{"class":450,"line":637},21,[639],{"type":42,"tag":448,"props":640,"children":641},{},[642],{"type":47,"value":643},"cmd.show(\"cartoon\")\n",{"type":42,"tag":448,"props":645,"children":647},{"class":450,"line":646},22,[648],{"type":42,"tag":448,"props":649,"children":650},{},[651],{"type":47,"value":652},"cmd.color(\"green\", \"ss h\")\n",{"type":42,"tag":448,"props":654,"children":656},{"class":450,"line":655},23,[657],{"type":42,"tag":448,"props":658,"children":659},{},[660],{"type":47,"value":661},"cmd.color(\"yellow\", \"ss s\")\n",{"type":42,"tag":448,"props":663,"children":665},{"class":450,"line":664},24,[666],{"type":42,"tag":448,"props":667,"children":668},{},[669],{"type":47,"value":670},"cmd.color(\"gray\", \"ss l+''\")\n",{"type":42,"tag":448,"props":672,"children":674},{"class":450,"line":673},25,[675],{"type":42,"tag":448,"props":676,"children":677},{},[678],{"type":47,"value":679},"cmd.orient()\n",{"type":42,"tag":448,"props":681,"children":683},{"class":450,"line":682},26,[684],{"type":42,"tag":448,"props":685,"children":686},{},[687],{"type":47,"value":688},"cmd.set(\"ray_opaque_background\", 1)\n",{"type":42,"tag":448,"props":690,"children":692},{"class":450,"line":691},27,[693],{"type":42,"tag":448,"props":694,"children":695},{},[696],{"type":47,"value":697},"cmd.png(\"output\u002Frender.png\", width=1200, height=900, dpi=150)\n",{"type":42,"tag":448,"props":699,"children":701},{"class":450,"line":700},28,[702],{"type":42,"tag":448,"props":703,"children":704},{},[705],{"type":47,"value":706},"cmd.save(\"output\u002Fsession.pse\")\n",{"type":42,"tag":448,"props":708,"children":710},{"class":450,"line":709},29,[711],{"type":42,"tag":448,"props":712,"children":713},{},[714],{"type":47,"value":715},"cmd.quit()\n",{"type":42,"tag":50,"props":717,"children":719},{"id":718},"common-recipes",[720],{"type":47,"value":721},"Common Recipes",{"type":42,"tag":118,"props":723,"children":724},{},[725,726,731],{"type":47,"value":316},{"type":42,"tag":102,"props":727,"children":729},{"href":728},"references\u002FRECIPES.md",[730],{"type":47,"value":728},{"type":47,"value":732}," for complete, copy-paste\nready recipes. Available recipes:",{"type":42,"tag":139,"props":734,"children":735},{},[736,746,756,766,776,786,796,806,816,826,836,846,856,866,876,886],{"type":42,"tag":61,"props":737,"children":738},{},[739,744],{"type":42,"tag":65,"props":740,"children":741},{},[742],{"type":47,"value":743},"Cartoon with secondary structure coloring",{"type":47,"value":745}," — basic helix\u002Fsheet\u002Floop\ncoloring",{"type":42,"tag":61,"props":747,"children":748},{},[749,754],{"type":42,"tag":65,"props":750,"children":751},{},[752],{"type":47,"value":753},"B-factor (pLDDT) coloring",{"type":47,"value":755}," — continuous spectrum coloring by B-factor",{"type":42,"tag":61,"props":757,"children":758},{},[759,764],{"type":42,"tag":65,"props":760,"children":761},{},[762],{"type":47,"value":763},"AlphaFold pLDDT coloring",{"type":47,"value":765}," — canonical threshold-based confidence colors",{"type":42,"tag":61,"props":767,"children":768},{},[769,774],{"type":42,"tag":65,"props":770,"children":771},{},[772],{"type":47,"value":773},"Highlight specific residues",{"type":47,"value":775}," — show active site or key residues as sticks",{"type":42,"tag":61,"props":777,"children":778},{},[779,784],{"type":42,"tag":65,"props":780,"children":781},{},[782],{"type":47,"value":783},"Surface rendering",{"type":47,"value":785}," — transparent surface over cartoon",{"type":42,"tag":61,"props":787,"children":788},{},[789,794],{"type":42,"tag":65,"props":790,"children":791},{},[792],{"type":47,"value":793},"Electrostatic surface rendering",{"type":47,"value":795}," — vacuum electrostatics (qualitative)",{"type":42,"tag":61,"props":797,"children":798},{},[799,804],{"type":42,"tag":65,"props":800,"children":801},{},[802],{"type":47,"value":803},"Multi-chain complex colors",{"type":47,"value":805}," — automatic per-chain coloring",{"type":42,"tag":61,"props":807,"children":808},{},[809,814],{"type":42,"tag":65,"props":810,"children":811},{},[812],{"type":47,"value":813},"B-factor putty analysis",{"type":47,"value":815}," — tube width proportional to flexibility",{"type":42,"tag":61,"props":817,"children":818},{},[819,824],{"type":42,"tag":65,"props":820,"children":821},{},[822],{"type":47,"value":823},"Cavity and pocket visualization",{"type":47,"value":825}," — surface cavity detection with ligand\nfocus",{"type":42,"tag":61,"props":827,"children":828},{},[829,834],{"type":42,"tag":65,"props":830,"children":831},{},[832],{"type":47,"value":833},"Multi-structure batch rendering",{"type":47,"value":835}," — render a directory of structures",{"type":42,"tag":61,"props":837,"children":838},{},[839,844],{"type":42,"tag":65,"props":840,"children":841},{},[842],{"type":47,"value":843},"Measure distance between residues",{"type":47,"value":845}," — CA–CA distance with labels",{"type":42,"tag":61,"props":847,"children":848},{},[849,854],{"type":42,"tag":65,"props":850,"children":851},{},[852],{"type":47,"value":853},"Zoom into binding pocket",{"type":47,"value":855}," — simple pocket focus",{"type":42,"tag":61,"props":857,"children":858},{},[859,864],{"type":42,"tag":65,"props":860,"children":861},{},[862],{"type":47,"value":863},"Protein-ligand interaction",{"type":47,"value":865}," — ligand isolation, styled rendering, polar\ncontacts",{"type":42,"tag":61,"props":867,"children":868},{},[869,874],{"type":42,"tag":65,"props":870,"children":871},{},[872],{"type":47,"value":873},"Two-structure superposition with RMSD",{"type":47,"value":875}," — align\u002Fcealign with auto-fallback",{"type":42,"tag":61,"props":877,"children":878},{},[879,884],{"type":42,"tag":65,"props":880,"children":881},{},[882],{"type":47,"value":883},"In silico mutagenesis",{"type":47,"value":885}," — mutate residues with the mutagenesis wizard",{"type":42,"tag":61,"props":887,"children":888},{},[889,894,896,901],{"type":42,"tag":65,"props":890,"children":891},{},[892],{"type":47,"value":893},"Load and modify an existing session",{"type":47,"value":895}," — re-open a ",{"type":42,"tag":69,"props":897,"children":899},{"className":898},[],[900],{"type":47,"value":265},{"type":47,"value":902}," file",{"type":42,"tag":50,"props":904,"children":906},{"id":905},"interpreting-output",[907],{"type":47,"value":908},"Interpreting Output",{"type":42,"tag":139,"props":910,"children":911},{},[912,932,937,942,954,966],{"type":42,"tag":61,"props":913,"children":914},{},[915,917,923,925,930],{"type":47,"value":916},"The ",{"type":42,"tag":69,"props":918,"children":920},{"className":919},[],[921],{"type":47,"value":922},"output\u002F",{"type":47,"value":924}," directory contains PNG images and a ",{"type":42,"tag":69,"props":926,"children":928},{"className":927},[],[929],{"type":47,"value":265},{"type":47,"value":931}," session file.",{"type":42,"tag":61,"props":933,"children":934},{},[935],{"type":47,"value":936},"Any measurements or metrics (distances, RMSD, atom counts) are printed to\nstdout by the PyMOL script. Report these values to the user.",{"type":42,"tag":61,"props":938,"children":939},{},[940],{"type":47,"value":941},"Present PNG images to the user and describe the visualization.",{"type":42,"tag":61,"props":943,"children":944},{},[945,947,952],{"type":47,"value":946},"Tell the user they can open the ",{"type":42,"tag":69,"props":948,"children":950},{"className":949},[],[951],{"type":47,"value":265},{"type":47,"value":953}," file in their local PyMOL to further\nexplore, rotate, or modify the visualization.",{"type":42,"tag":61,"props":955,"children":956},{},[957,959,964],{"type":47,"value":958},"If the user wants modifications, load the saved ",{"type":42,"tag":69,"props":960,"children":962},{"className":961},[],[963],{"type":47,"value":265},{"type":47,"value":965}," in a new script and\nre-run.",{"type":42,"tag":61,"props":967,"children":968},{},[969,971,977,979,985],{"type":47,"value":970},"Large sessions with surfaces can exceed the ",{"type":42,"tag":69,"props":972,"children":974},{"className":973},[],[975],{"type":47,"value":976},"--max_output_mb",{"type":47,"value":978}," limit (default\n500 MB). Increase it with ",{"type":42,"tag":69,"props":980,"children":982},{"className":981},[],[983],{"type":47,"value":984},"--max_output_mb=1000",{"type":47,"value":986}," if needed.",{"type":42,"tag":988,"props":989,"children":990},"style",{},[991],{"type":47,"value":992},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":994,"total":1158},[995,1008,1023,1043,1055,1070,1086,1099,1111,1126,1137,1147],{"slug":996,"name":996,"fn":997,"description":998,"org":999,"tags":1000,"stars":25,"repoUrl":26,"updatedAt":1007},"alphafold-database-fetch-and-analyze","retrieve and analyze AlphaFold protein structures","Retrieve and analyze AlphaFold predicted structures for a protein. Use when the user provides a specific UniProt Accession ID and wants structural confidence metrics (pLDDT), domain boundary analysis, or disorder assessment. Do not use if the user only has a protein name, gene name, or amino acid sequence — ask for a UniProt ID first.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1001,1002,1005,1006],{"name":23,"slug":24,"type":15},{"name":1003,"slug":1004,"type":15},"Genomics","genomics",{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:51:51.827211",{"slug":1009,"name":1009,"fn":1010,"description":1011,"org":1012,"tags":1013,"stars":25,"repoUrl":26,"updatedAt":1022},"alphagenome-single-variant-analysis","analyze genetic variant effects with AlphaGenome","Analyzes genetic variant effects on gene expression (RNA-seq), chromatin accessibility (DNASE), histone marks (ChIP), and transcription factors using the AlphaGenome API. Use when the user asks about non-coding variant effects, pathogenicity, clinical significance, disease associations, functional effects, gene expression changes, splicing disruption, or regulatory effects in promoters and enhancers. Also use for resolving biological terms to tissue\u002Fcell-type ontologies (UBERON\u002FCL) or analyzing variants in chr:pos:ref>alt format.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1014,1015,1018,1019],{"name":23,"slug":24,"type":15},{"name":1016,"slug":1017,"type":15},"Genetics","genetics",{"name":13,"slug":14,"type":15},{"name":1020,"slug":1021,"type":15},"RNA-seq","rna-seq","2026-07-12T07:51:39.494803",{"slug":1024,"name":1024,"fn":1025,"description":1026,"org":1027,"tags":1028,"stars":25,"repoUrl":26,"updatedAt":1042},"chembl-database","query ChEMBL database for bioactive molecules","Query the ChEMBL database for bioactive molecules, drug targets, bioactivity data, approved drugs, and chemical structures. Use when the user asks about compounds, targets, IC50\u002FKi values, drug mechanisms, or structure searches.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1029,1032,1035,1038,1041],{"name":1030,"slug":1031,"type":15},"ChEMBL","chembl",{"name":1033,"slug":1034,"type":15},"Chemistry","chemistry",{"name":1036,"slug":1037,"type":15},"Database","database",{"name":1039,"slug":1040,"type":15},"Pharmacology","pharmacology",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:35.544306",{"slug":1044,"name":1044,"fn":1045,"description":1046,"org":1047,"tags":1048,"stars":25,"repoUrl":26,"updatedAt":1054},"clinical-trials-database","query clinical trial data","Query ClinicalTrials.gov via APIv2. Use when you want to search for trials by condition, drug, location, status, or phase; retrieve trial details by NCT ID; check eligibility\u002Finclusion criteria; count trials across conditions or time periods; identify a sponsor's trial portfolio; find recruiting trials for patient matching.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1049,1052,1053],{"name":1050,"slug":1051,"type":15},"Clinical Trials","clinical-trials",{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:52:06.846705",{"slug":1056,"name":1056,"fn":1057,"description":1058,"org":1059,"tags":1060,"stars":25,"repoUrl":26,"updatedAt":1069},"clinvar-database","retrieve clinical significance from ClinVar database","Use when needing clinical significance, pathogenicity classifications (e.g., Pathogenic, Benign, VUS), clinical evidence rationales, or finding \"hard positive\" benchmark controls for human genomic variants.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1061,1064,1065,1068],{"name":1062,"slug":1063,"type":15},"ClinVar","clinvar",{"name":1016,"slug":1017,"type":15},{"name":1066,"slug":1067,"type":15},"Healthcare","healthcare",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:36.86094",{"slug":1071,"name":1071,"fn":1072,"description":1073,"org":1074,"tags":1075,"stars":25,"repoUrl":26,"updatedAt":1085},"credentials","manage and verify API credentials safely","Instructions for handling API keys and credentials safely, verifying their presence, and prompting the user to add them if missing using a safe protocol.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1076,1079,1082],{"name":1077,"slug":1078,"type":15},"Compliance","compliance",{"name":1080,"slug":1081,"type":15},"Operations","operations",{"name":1083,"slug":1084,"type":15},"Security","security","2026-07-12T07:52:17.355491",{"slug":1087,"name":1087,"fn":1088,"description":1089,"org":1090,"tags":1091,"stars":25,"repoUrl":26,"updatedAt":1098},"dbsnp-database","search genetic variants in dbSNP database","Use when you want to look up, map, and search for short genetic variants (SNPs, indels) in NCBI's dbSNP database. Resolves between rsIDs, genomic coordinates in VCF format, and HGVS strings. For an rsID, returns variant type, gene associations, clinical significance, allele frequencies, and genomic coordinates (GRCh38).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1092,1093,1094,1097],{"name":23,"slug":24,"type":15},{"name":1016,"slug":1017,"type":15},{"name":1095,"slug":1096,"type":15},"NCBI","ncbi",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:33.054229",{"slug":1100,"name":1100,"fn":1101,"description":1102,"org":1103,"tags":1104,"stars":25,"repoUrl":26,"updatedAt":1110},"embl-ebi-ols","search biomedical ontologies in EMBL-EBI OLS","Query and search the EMBL-EBI Ontology Lookup Service (OLS) for biomedical ontology terms, definitions, and hierarchies across 250+ ontologies (e.g., GO, DOID, HP). Use when the user asks to search for terms, retrieve details, navigate hierarchies (parents, children, ancestors), look up properties and individuals, get autocomplete suggestions, or access ontology metadata and statistics.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1105,1106,1109],{"name":23,"slug":24,"type":15},{"name":1107,"slug":1108,"type":15},"Ontology","ontology",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:59.368324",{"slug":1112,"name":1112,"fn":1113,"description":1114,"org":1115,"tags":1116,"stars":25,"repoUrl":26,"updatedAt":1125},"encode-ccres-database","query ENCODE regulatory and experimental data","Query the ENCODE Registry of cis-Regulatory Elements (cCREs) via the SCREEN GraphQL API, or make custom queries to the ENCODE Portal REST API for experiments and files (ChIP-seq peaks, etc.). Use when you want to query regulatory annotations or raw experimental data across human cell types.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1117,1118,1121,1122],{"name":23,"slug":24,"type":15},{"name":1119,"slug":1120,"type":15},"GraphQL","graphql",{"name":13,"slug":14,"type":15},{"name":1123,"slug":1124,"type":15},"REST API","rest-api","2026-07-12T07:52:10.597139",{"slug":1127,"name":1127,"fn":1128,"description":1129,"org":1130,"tags":1131,"stars":25,"repoUrl":26,"updatedAt":1136},"ensembl-database","query genomic and protein data from Ensembl","Query the Ensembl database to resolve gene, transcript, and protein IDs, fetch genomic or protein sequences, retrieve gene structures (exons), and get variant consequence and effect predictions (VEP). Use this skill as a primary ID translator, genomic sequence database and variant effect prediction tool.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1132,1133,1134,1135],{"name":23,"slug":24,"type":15},{"name":1016,"slug":1017,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:51:41.645835",{"slug":1138,"name":1138,"fn":1139,"description":1140,"org":1141,"tags":1142,"stars":25,"repoUrl":26,"updatedAt":1146},"foldseek-structural-search","perform 3D protein structural searches","Performs 3D structural searches of proteins against various databases (PDB, AlphaFold, CATH, MGnify, etc.) using the Foldseek API. Use ONLY when the user provides a physical 3D coordinate file (.cif, .mmcif, or .pdb) and wants to find structurally similar proteins. Do NOT use if the user only provides a protein sequence, gene name, or UniProt ID.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1143,1144,1145],{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:52:09.354992",{"slug":1148,"name":1148,"fn":1149,"description":1150,"org":1151,"tags":1152,"stars":25,"repoUrl":26,"updatedAt":1157},"gnomad-database","query genetic variant data from gnomAD","Query the Genome Aggregation Database (gnomAD). Use when determining the rarity or allele frequency of specific genetic variants, retrieving gene constraint metrics (pLI, LOEUF) to assess loss-of-function intolerance, finding variants in a genomic region or gene, or querying structural variants. Don't use for analyzing individual patient genomes, tracking somatic mutations in cancer (use COSMIC), or requesting raw sequencing reads (use ENA).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1153,1154,1155,1156],{"name":23,"slug":24,"type":15},{"name":1016,"slug":1017,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:51:38.213009",38,{"items":1160,"total":1158},[1161,1168,1175,1183,1189,1196,1202],{"slug":996,"name":996,"fn":997,"description":998,"org":1162,"tags":1163,"stars":25,"repoUrl":26,"updatedAt":1007},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1164,1165,1166,1167],{"name":23,"slug":24,"type":15},{"name":1003,"slug":1004,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"slug":1009,"name":1009,"fn":1010,"description":1011,"org":1169,"tags":1170,"stars":25,"repoUrl":26,"updatedAt":1022},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1171,1172,1173,1174],{"name":23,"slug":24,"type":15},{"name":1016,"slug":1017,"type":15},{"name":13,"slug":14,"type":15},{"name":1020,"slug":1021,"type":15},{"slug":1024,"name":1024,"fn":1025,"description":1026,"org":1176,"tags":1177,"stars":25,"repoUrl":26,"updatedAt":1042},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1178,1179,1180,1181,1182],{"name":1030,"slug":1031,"type":15},{"name":1033,"slug":1034,"type":15},{"name":1036,"slug":1037,"type":15},{"name":1039,"slug":1040,"type":15},{"name":13,"slug":14,"type":15},{"slug":1044,"name":1044,"fn":1045,"description":1046,"org":1184,"tags":1185,"stars":25,"repoUrl":26,"updatedAt":1054},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1186,1187,1188],{"name":1050,"slug":1051,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"slug":1056,"name":1056,"fn":1057,"description":1058,"org":1190,"tags":1191,"stars":25,"repoUrl":26,"updatedAt":1069},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1192,1193,1194,1195],{"name":1062,"slug":1063,"type":15},{"name":1016,"slug":1017,"type":15},{"name":1066,"slug":1067,"type":15},{"name":13,"slug":14,"type":15},{"slug":1071,"name":1071,"fn":1072,"description":1073,"org":1197,"tags":1198,"stars":25,"repoUrl":26,"updatedAt":1085},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1199,1200,1201],{"name":1077,"slug":1078,"type":15},{"name":1080,"slug":1081,"type":15},{"name":1083,"slug":1084,"type":15},{"slug":1087,"name":1087,"fn":1088,"description":1089,"org":1203,"tags":1204,"stars":25,"repoUrl":26,"updatedAt":1098},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1205,1206,1207,1208],{"name":23,"slug":24,"type":15},{"name":1016,"slug":1017,"type":15},{"name":1095,"slug":1096,"type":15},{"name":13,"slug":14,"type":15}]