[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-google-deepmind-alphagenome-single-variant-analysis":3,"mdc--lk5ypz-key":36,"related-repo-google-deepmind-alphagenome-single-variant-analysis":1898,"related-org-google-deepmind-alphagenome-single-variant-analysis":1997},{"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},"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},"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},"Bioinformatics","bioinformatics",{"name":20,"slug":21,"type":15},"RNA-seq","rna-seq",{"name":23,"slug":24,"type":15},"Genetics","genetics",2333,"https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fscience-skills","2026-07-12T07:51:39.494803",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\u002Falphagenome_single_variant_analysis","---\nname: alphagenome-single-variant-analysis\ndescription: >\n  Analyzes genetic variant effects on gene expression (RNA-seq), chromatin\n  accessibility (DNASE), histone marks (ChIP), and transcription factors\n  using the AlphaGenome API. Use when the user asks about non-coding variant effects,\n  pathogenicity, clinical significance, disease associations, functional\n  effects, gene expression changes, splicing disruption, or regulatory effects\n  in promoters and enhancers. Also use for resolving biological terms to\n  tissue\u002Fcell-type ontologies (UBERON\u002FCL) or analyzing variants in\n  chr:pos:ref>alt format.\n---\n\n# Variant Analysis using AlphaGenome\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\n    .licenses\u002Falphagenome_single_variant_analysis_LICENSE.txt does not already\n    exist in the workspace root directory then (1) prominently notify the user\n    to check the terms at https:\u002F\u002Fdeepmind.google.com\u002Fscience\u002Falphagenome\u002F, then\n    (2) create the file recording the notification text and timestamp.\n3.  **`.env` file**: Make sure the `.env` file exists in your home directory.\n    Create one if it does not exist.\n4.  **`ALPHAGENOME_API_KEY`**: This skill requires an API key to function.\n    You can register for a key at https:\u002F\u002Fdeepmind.google.com\u002Fscience\u002Falphagenome\u002F.\n    You **MUST** use the safe credentials protocol in the `credentials` skill to\n    check for and request this key if this skill looks relevant to the user's request.\n\n## Core Rules\n\n-   **NEVER run `python3` or `python3 -c` directly.** The system Python does not\n    necessarily have pandas, numpy, and other key dependencies. ALWAYS use `uv\n    run` to run ALL Python code — including scripts, ad-hoc analysis files, and\n    one-liners. Do not attempt to `pip install` or create new venvs — `uv`\n    manages an isolated environment automatically.\n-   **Offline Only**: NEVER use external APIs (e.g., MyGene.info, Ensembl REST)\n    for gene\u002Ftranscript lookup. Use `lookup_gene_info.py` with the local GTF. If\n    it fails, fix the environment\u002Fpaths, do not switch to external APIs.\n-   **API Key is required**: `ALPHAGENOME_API_KEY` must be set before running\n    any script.\n-   **Notification**: If this skill is used, ensure this is mentioned in the\n    output.\n-   **Report Format**: Always use the templates in `docs\u002Freport-templates.md`\n    for generating analysis reports, and ensure to include the table of top hits\n    from the discovery scan.\n\n## Environment Setup & Troubleshooting\n\n### Python Environment\n\nAll scripts must be executed using `uv run`, which manages an isolated virtual\nenvironment with the correct dependencies via `uv`.\n\n```bash\nuv run \u003Cscript_name> [args...]\n```\n\nFor ad-hoc scripts (e.g., inline analysis code saved to a temp file), pass the\nfull path instead of a short name:\n\n```bash\nuv run --project $SKILL_DIR \u002Ftmp\u002Fmy_analysis.py --arg1 val1\n```\n\n> [!NOTE] The first invocation resolves and installs dependencies (~10s).\n> Subsequent runs use the cached environment and start instantly. The cache\n> lives in `~\u002F.cache\u002Fuv\u002F`.\n\n### Common Issues\n\n-   **Column Names**: `tidy_scores` and metadata often use `gene_name` (not\n    `gene_symbol`) and `output_type` (not `modality`). Always inspect\n    `df.columns` before filtering.\n-   **Large Genes**: Genes > 500kb (e.g., `USH2A`) break the `whole_gene` view.\n    Use `--view detail` or manual regional windows instead.\n-   **Sashimi Strand Error**: `plot_components.Sashimi` does NOT accept a\n    `strand` argument directly. Filter input tracks instead.\n-   **KeyError: 'ontology_curie'**: Not all tracks have `ontology_curie`. Check\n    `track.metadata.columns` before filtering.\n-   **Python Path**: If `exec: \"python\": executable file not found` occurs,\n    ensure you are using `uv run` instead of bare `python`\u002F`python3`.\n-   **NotImplementedError (pandas)**: \"iLocation based boolean indexing on an\n    integer type is not available\". This occurs when using boolean masks with\n    `.iloc` on integer-indexed DataFrames in newer pandas versions. **Fix**:\n    Convert boolean masks to integer indices using `np.flatnonzero(mask)`.\n-   **GTF Feather Case Sensitivity**: The AlphaGenome GTF Feather file uses\n    **Capitalized** column names (`Feature`, `Start`, `End`, `Strand`) unlike\n    standard GTF files. Always check `df.columns` if getting KeyErrors.\n-   **`score_variant` ontology filtering**: `score_variant` does NOT accept\n    `ontology_terms` as an argument. You must filter the returned AnnData\n    objects manually by inspecting `adata.var` columns. In contrast,\n    `predict_variant` DOES accept `ontology_terms` directly.\n-   **Sashimi Zoom Logic**: To ensure \"skipping\" arcs are visible, expand the\n    zoom to include the **flanking exons** rather than relying on junction\n    overlap alone.\n-   **Junction Scores**: Raw `Junction` objects from `prediction` may be simple\n    Intervals. Use `junction_data.get_junctions_to_plot(predictions=...,\n    name=...)` to retrieve objects with the `.k` (abundance\u002Fscore) attribute.\n-   **`uv` Not Found**: If `exec: uv: not found`, follow the installation\n    instructions in [Prerequisites](#prerequisites).\n-   **Registry Authentication Error (401)**: If `uv` fails with 401 Unauthorized\n    for a private registry, set `UV_INDEX_URL=https:\u002F\u002Fpypi.org\u002Fsimple` before\n    running the script.\n\n## References\n\n-   [alphagenome-api.md](docs\u002Falphagenome-api.md) — API reference and code\n    patterns\n-   [interpretation-guide.md](docs\u002Finterpretation-guide.md) — Interpretation\n    guide, score magnitude rules, ISM, and checklist.\n-   [report-templates.md](docs\u002Freport-templates.md) — Full report templates\n-   [`scripts\u002Fvisualize_variant_effects.py`](scripts\u002Fvisualize_variant_effects.py)\n    — Single-variant visualization template (Ref\u002FAlt comparisons, Splicing).\n    -   **Splicing Zoom Strategy**: Uses a **Hybrid Approach** for optimal\n        visibility:\n        1.  **Base Interval**: Variant +\u002F- 1 downstream and upstream exon\n            (Structural Context).\n        2.  **Junction Expansion**: Expands to include the full span of any\n            **significant splicing junction** (e.g., exon skipping events that\n            span multiple exons).\n        3.  **Anchor Enforcement**: Ensures the exons *anchoring* these long\n            junctions are fully visible. *Lesson*: Simple fixed windows (e.g.,\n            2kb) or nearest-exon logic often fail for skipping events. Always\n            use the *observed junction data* to drive zoom levels.\n-   [`examples\u002Fsplicing\u002F`](docs\u002Fexamples\u002Fsplicing\u002F) — Splicing analysis examples\n-   [`examples\u002Fmodel_limitation_RNU4ATAC\u002F`](docs\u002Fexamples\u002Fmodel_limitation_RNU4ATAC\u002F)\n    — ncRNA structure limitation case study\n-   [`examples\u002Fpolyadenylation_HBA2\u002F`](docs\u002Fexamples\u002Fpolyadenylation_HBA2\u002F) — 3'\n    UTR \u002F Polyadenylation case study\n-   [`examples\u002Fregulatory\u002F`](docs\u002Fexamples\u002Fregulatory\u002F) — Regulatory variant\n    examples\n-   [`examples\u002Fnegative_result_GATA4\u002F`](docs\u002Fexamples\u002Fnegative_result_GATA4\u002F) —\n    Negative results (mathematical artefact)\n-   [`examples\u002Fnegative_result_TGFB3\u002F`](docs\u002Fexamples\u002Fnegative_result_TGFB3\u002F) —\n    Negative results (proxies)\n-   [`scripts\u002Flookup_gene_info.py`](scripts\u002Flookup_gene_info.py) — Gene &\n    transcript lookup\n-   [`scripts\u002Fresolve_ontology_terms.py`](scripts\u002Fresolve_ontology_terms.py) —\n    Ontology term resolution (UBERON\u002FCL IDs)\n\n--------------------------------------------------------------------------------\n\n## Code Patterns\n\n### Broad Discovery Scan\n\nUse `score_variant` across **differential scorers only** to discover unexpected\ntissue effects.\n\n```python\nfrom alphagenome.models import dna_client\nfrom alphagenome.models import variant_scorers\nfrom alphagenome.data import genome\nimport os\nimport pandas as pd\nimport dotenv\n\n# Load environment variables from ~\u002F.env\ndotenv.load_dotenv(os.path.expanduser('~\u002F.env'))\n\n# Setup API Key and Client\ndna_model = dna_client.create(api_key=os.environ.get('ALPHAGENOME_API_KEY'),\n                              address='dns:\u002F\u002F\u002Fgdmscience.googleapis.com:443')\n\n# Define Variant (example)\nvariant_str = \"chr2:1234:A>C\"\nchrom, pos_str, ref_alt = variant_str.split(':')\nref, alt = ref_alt.split('>')\npos = int(pos_str)\n\n# Use supported sequence length (e.g., 2**20 for optimal performance)\nSEQ_LENGTH = 2**20\ninterval = genome.Interval(chrom, pos - SEQ_LENGTH \u002F\u002F 2, pos + SEQ_LENGTH \u002F\u002F 2)\nvariant = genome.Variant(chrom, pos, ref, alt)\n\nscorers = [\n    variant_scorers.RECOMMENDED_VARIANT_SCORERS[m]\n    for m in variant_scorers.RECOMMENDED_VARIANT_SCORERS\n    if \"ACTIVE\" not in m and \"CAGE\" not in m and \"PROCAP\" not in m\n]\n\nprint(f\"Scoring variant {variant_str}...\")\nscores_list = dna_model.score_variant(interval=interval, variant=variant, variant_scorers=scorers)\n\n# Process and Display Results\nall_dfs = []\nfor score_adata in scores_list:\n    df = variant_scorers.tidy_scores([score_adata], match_gene_strand=True)\n    if df is not None:\n        all_dfs.append(df)\n\nif all_dfs:\n    df = pd.concat(all_dfs)\n    significant = df[df['quantile_score'].abs() > 0.995]\n    ranked = significant.sort_values('raw_score', key=abs, ascending=False)\n    print(\"Top Significant Hits:\")\n    print(ranked[['biosample_name', 'gene_name', 'output_type', 'quantile_score', 'raw_score']])\n```\n\n### Extended Search for Disease-Relevant Tissues\n\n```python\n# Define keywords based on disease context\ndisease_keywords = [\"liver\", \"hepatocyte\"]\n\n# Filter for any match\nmask = df['biosample_name'].str.contains('|'.join(disease_keywords), case=False, na=False)\n\nrelevant_hits = df[mask].sort_values('raw_score', key=abs, ascending=False)\nprint(f\"\\n--- Extended Analysis (Keywords: {disease_keywords}) ---\")\nprint(relevant_hits.head(20)[['biosample_name', 'output_type', 'raw_score', 'quantile_score']])\n```\n\n## Workflow Checklist\n\n```\nVariant Analysis Progress:\n- [ ] Step 0: Review Golden Examples (MANDATORY)\n- [ ] Step 1: Create Output Folder and Setup\n- [ ] Step 2: Parse User Query & Research\n- [ ] Step 3: Resolve Tissues & Modalities\n- [ ] Step 4: Visualize & Save Plots\n- [ ] Step 5: Analyze Predictions (view plots, no code). MANDATORY: Read [interpretation-guide.md](docs\u002Finterpretation-guide.md) before interpreting results.\n- [ ] Step 6: Write Report, save it as `report.md` (MANDATORY)\n- [ ] Step 7: Self-Critique (view `report.md` to verify links & claims)\n- [ ] Step 8: Make artifact out of `report.md`\n```\n\n--------------------------------------------------------------------------------\n\n## Multi-Variant Workflow\n\nIf multiple variants are specified, spawn sub-agents to run each variant\nanalysis and then synthesize each `report.md` into a single report.\n\n### Script Reference\n\n| Script                      | Purpose                                        |\n| --------------------------- | ---------------------------------------------- |\n| `lookup_gene_info`          | Comprehensive gene and transcript lookup using |\n:                             : GTF data                                       :\n| `resolve_ontology_terms`    | Biological terms → UBERON\u002FCL\u002FEFO IDs           |\n| `visualize_variant_effects` | REF\u002FALT visualization (expression, regulatory, |\n:                             : splicing)                                      :\n| `analyze_ism`               | In-Silico Mutagenesis SeqLogo generation       |\n| `interpret_splicing`        | Quantitative splicing analysis (delta scores,  |\n:                             : junctions)                                     :\n| `visualize_genome_tracks`   | Genomic track visualization for a region       |\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,57,171,177,293,299,306,326,381,386,429,450,456,888,894,1143,1147,1153,1159,1178,1602,1608,1685,1691,1701,1704,1710,1723,1729,1892],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"variant-analysis-using-alphagenome",[47],{"type":48,"value":49},"text","Variant Analysis using AlphaGenome",{"type":42,"tag":51,"props":52,"children":54},"h2",{"id":53},"prerequisites",[55],{"type":48,"value":56},"Prerequisites",{"type":42,"tag":58,"props":59,"children":60},"ol",{},[61,92,112,135],{"type":42,"tag":62,"props":63,"children":64},"li",{},[65,76,78,83,85,90],{"type":42,"tag":66,"props":67,"children":68},"strong",{},[69],{"type":42,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":48,"value":75},"uv",{"type":48,"value":77},": Read the ",{"type":42,"tag":70,"props":79,"children":81},{"className":80},[],[82],{"type":48,"value":75},{"type":48,"value":84}," skill and follow its Setup instructions to ensure\n",{"type":42,"tag":70,"props":86,"children":88},{"className":87},[],[89],{"type":48,"value":75},{"type":48,"value":91}," is installed and on PATH.",{"type":42,"tag":62,"props":93,"children":94},{},[95,100,102,110],{"type":42,"tag":66,"props":96,"children":97},{},[98],{"type":48,"value":99},"User Notification",{"type":48,"value":101},": If\n.licenses\u002Falphagenome_single_variant_analysis_LICENSE.txt does not already\nexist in the workspace root directory then (1) prominently notify the user\nto check the terms at ",{"type":42,"tag":103,"props":104,"children":108},"a",{"href":105,"rel":106},"https:\u002F\u002Fdeepmind.google.com\u002Fscience\u002Falphagenome\u002F",[107],"nofollow",[109],{"type":48,"value":105},{"type":48,"value":111},", then\n(2) create the file recording the notification text and timestamp.",{"type":42,"tag":62,"props":113,"children":114},{},[115,126,128,133],{"type":42,"tag":66,"props":116,"children":117},{},[118,124],{"type":42,"tag":70,"props":119,"children":121},{"className":120},[],[122],{"type":48,"value":123},".env",{"type":48,"value":125}," file",{"type":48,"value":127},": Make sure the ",{"type":42,"tag":70,"props":129,"children":131},{"className":130},[],[132],{"type":48,"value":123},{"type":48,"value":134}," file exists in your home directory.\nCreate one if it does not exist.",{"type":42,"tag":62,"props":136,"children":137},{},[138,147,149,154,156,161,163,169],{"type":42,"tag":66,"props":139,"children":140},{},[141],{"type":42,"tag":70,"props":142,"children":144},{"className":143},[],[145],{"type":48,"value":146},"ALPHAGENOME_API_KEY",{"type":48,"value":148},": This skill requires an API key to function.\nYou can register for a key at ",{"type":42,"tag":103,"props":150,"children":152},{"href":105,"rel":151},[107],[153],{"type":48,"value":105},{"type":48,"value":155},".\nYou ",{"type":42,"tag":66,"props":157,"children":158},{},[159],{"type":48,"value":160},"MUST",{"type":48,"value":162}," use the safe credentials protocol in the ",{"type":42,"tag":70,"props":164,"children":166},{"className":165},[],[167],{"type":48,"value":168},"credentials",{"type":48,"value":170}," skill to\ncheck for and request this key if this skill looks relevant to the user's request.",{"type":42,"tag":51,"props":172,"children":174},{"id":173},"core-rules",[175],{"type":48,"value":176},"Core Rules",{"type":42,"tag":178,"props":179,"children":180},"ul",{},[181,230,248,265,275],{"type":42,"tag":62,"props":182,"children":183},{},[184,205,207,213,215,221,223,228],{"type":42,"tag":66,"props":185,"children":186},{},[187,189,195,197,203],{"type":48,"value":188},"NEVER run ",{"type":42,"tag":70,"props":190,"children":192},{"className":191},[],[193],{"type":48,"value":194},"python3",{"type":48,"value":196}," or ",{"type":42,"tag":70,"props":198,"children":200},{"className":199},[],[201],{"type":48,"value":202},"python3 -c",{"type":48,"value":204}," directly.",{"type":48,"value":206}," The system Python does not\nnecessarily have pandas, numpy, and other key dependencies. ALWAYS use ",{"type":42,"tag":70,"props":208,"children":210},{"className":209},[],[211],{"type":48,"value":212},"uv run",{"type":48,"value":214}," to run ALL Python code — including scripts, ad-hoc analysis files, and\none-liners. Do not attempt to ",{"type":42,"tag":70,"props":216,"children":218},{"className":217},[],[219],{"type":48,"value":220},"pip install",{"type":48,"value":222}," or create new venvs — ",{"type":42,"tag":70,"props":224,"children":226},{"className":225},[],[227],{"type":48,"value":75},{"type":48,"value":229},"\nmanages an isolated environment automatically.",{"type":42,"tag":62,"props":231,"children":232},{},[233,238,240,246],{"type":42,"tag":66,"props":234,"children":235},{},[236],{"type":48,"value":237},"Offline Only",{"type":48,"value":239},": NEVER use external APIs (e.g., MyGene.info, Ensembl REST)\nfor gene\u002Ftranscript lookup. Use ",{"type":42,"tag":70,"props":241,"children":243},{"className":242},[],[244],{"type":48,"value":245},"lookup_gene_info.py",{"type":48,"value":247}," with the local GTF. If\nit fails, fix the environment\u002Fpaths, do not switch to external APIs.",{"type":42,"tag":62,"props":249,"children":250},{},[251,256,258,263],{"type":42,"tag":66,"props":252,"children":253},{},[254],{"type":48,"value":255},"API Key is required",{"type":48,"value":257},": ",{"type":42,"tag":70,"props":259,"children":261},{"className":260},[],[262],{"type":48,"value":146},{"type":48,"value":264}," must be set before running\nany script.",{"type":42,"tag":62,"props":266,"children":267},{},[268,273],{"type":42,"tag":66,"props":269,"children":270},{},[271],{"type":48,"value":272},"Notification",{"type":48,"value":274},": If this skill is used, ensure this is mentioned in the\noutput.",{"type":42,"tag":62,"props":276,"children":277},{},[278,283,285,291],{"type":42,"tag":66,"props":279,"children":280},{},[281],{"type":48,"value":282},"Report Format",{"type":48,"value":284},": Always use the templates in ",{"type":42,"tag":70,"props":286,"children":288},{"className":287},[],[289],{"type":48,"value":290},"docs\u002Freport-templates.md",{"type":48,"value":292},"\nfor generating analysis reports, and ensure to include the table of top hits\nfrom the discovery scan.",{"type":42,"tag":51,"props":294,"children":296},{"id":295},"environment-setup-troubleshooting",[297],{"type":48,"value":298},"Environment Setup & Troubleshooting",{"type":42,"tag":300,"props":301,"children":303},"h3",{"id":302},"python-environment",[304],{"type":48,"value":305},"Python Environment",{"type":42,"tag":307,"props":308,"children":309},"p",{},[310,312,317,319,324],{"type":48,"value":311},"All scripts must be executed using ",{"type":42,"tag":70,"props":313,"children":315},{"className":314},[],[316],{"type":48,"value":212},{"type":48,"value":318},", which manages an isolated virtual\nenvironment with the correct dependencies via ",{"type":42,"tag":70,"props":320,"children":322},{"className":321},[],[323],{"type":48,"value":75},{"type":48,"value":325},".",{"type":42,"tag":327,"props":328,"children":333},"pre",{"className":329,"code":330,"language":331,"meta":332,"style":332},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","uv run \u003Cscript_name> [args...]\n","bash","",[334],{"type":42,"tag":70,"props":335,"children":336},{"__ignoreMap":332},[337],{"type":42,"tag":338,"props":339,"children":342},"span",{"class":340,"line":341},"line",1,[343,348,354,360,365,371,376],{"type":42,"tag":338,"props":344,"children":346},{"style":345},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[347],{"type":48,"value":75},{"type":42,"tag":338,"props":349,"children":351},{"style":350},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[352],{"type":48,"value":353}," run",{"type":42,"tag":338,"props":355,"children":357},{"style":356},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[358],{"type":48,"value":359}," \u003C",{"type":42,"tag":338,"props":361,"children":362},{"style":350},[363],{"type":48,"value":364},"script_nam",{"type":42,"tag":338,"props":366,"children":368},{"style":367},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[369],{"type":48,"value":370},"e",{"type":42,"tag":338,"props":372,"children":373},{"style":356},[374],{"type":48,"value":375},">",{"type":42,"tag":338,"props":377,"children":378},{"style":367},[379],{"type":48,"value":380}," [args...]\n",{"type":42,"tag":307,"props":382,"children":383},{},[384],{"type":48,"value":385},"For ad-hoc scripts (e.g., inline analysis code saved to a temp file), pass the\nfull path instead of a short name:",{"type":42,"tag":327,"props":387,"children":389},{"className":329,"code":388,"language":331,"meta":332,"style":332},"uv run --project $SKILL_DIR \u002Ftmp\u002Fmy_analysis.py --arg1 val1\n",[390],{"type":42,"tag":70,"props":391,"children":392},{"__ignoreMap":332},[393],{"type":42,"tag":338,"props":394,"children":395},{"class":340,"line":341},[396,400,404,409,414,419,424],{"type":42,"tag":338,"props":397,"children":398},{"style":345},[399],{"type":48,"value":75},{"type":42,"tag":338,"props":401,"children":402},{"style":350},[403],{"type":48,"value":353},{"type":42,"tag":338,"props":405,"children":406},{"style":350},[407],{"type":48,"value":408}," --project",{"type":42,"tag":338,"props":410,"children":411},{"style":367},[412],{"type":48,"value":413}," $SKILL_DIR ",{"type":42,"tag":338,"props":415,"children":416},{"style":350},[417],{"type":48,"value":418},"\u002Ftmp\u002Fmy_analysis.py",{"type":42,"tag":338,"props":420,"children":421},{"style":350},[422],{"type":48,"value":423}," --arg1",{"type":42,"tag":338,"props":425,"children":426},{"style":350},[427],{"type":48,"value":428}," val1\n",{"type":42,"tag":430,"props":431,"children":432},"blockquote",{},[433],{"type":42,"tag":307,"props":434,"children":435},{},[436,441,443,449],{"type":42,"tag":338,"props":437,"children":438},{},[439],{"type":48,"value":440},"!NOTE",{"type":48,"value":442}," The first invocation resolves and installs dependencies (~10s).\nSubsequent runs use the cached environment and start instantly. The cache\nlives in ",{"type":42,"tag":70,"props":444,"children":446},{"className":445},[],[447],{"type":48,"value":448},"~\u002F.cache\u002Fuv\u002F",{"type":48,"value":325},{"type":42,"tag":300,"props":451,"children":453},{"id":452},"common-issues",[454],{"type":48,"value":455},"Common Issues",{"type":42,"tag":178,"props":457,"children":458},{},[459,516,550,575,600,639,671,725,777,794,836,864],{"type":42,"tag":62,"props":460,"children":461},{},[462,467,468,474,476,482,484,490,492,498,500,506,508,514],{"type":42,"tag":66,"props":463,"children":464},{},[465],{"type":48,"value":466},"Column Names",{"type":48,"value":257},{"type":42,"tag":70,"props":469,"children":471},{"className":470},[],[472],{"type":48,"value":473},"tidy_scores",{"type":48,"value":475}," and metadata often use ",{"type":42,"tag":70,"props":477,"children":479},{"className":478},[],[480],{"type":48,"value":481},"gene_name",{"type":48,"value":483}," (not\n",{"type":42,"tag":70,"props":485,"children":487},{"className":486},[],[488],{"type":48,"value":489},"gene_symbol",{"type":48,"value":491},") and ",{"type":42,"tag":70,"props":493,"children":495},{"className":494},[],[496],{"type":48,"value":497},"output_type",{"type":48,"value":499}," (not ",{"type":42,"tag":70,"props":501,"children":503},{"className":502},[],[504],{"type":48,"value":505},"modality",{"type":48,"value":507},"). Always inspect\n",{"type":42,"tag":70,"props":509,"children":511},{"className":510},[],[512],{"type":48,"value":513},"df.columns",{"type":48,"value":515}," before filtering.",{"type":42,"tag":62,"props":517,"children":518},{},[519,524,526,532,534,540,542,548],{"type":42,"tag":66,"props":520,"children":521},{},[522],{"type":48,"value":523},"Large Genes",{"type":48,"value":525},": Genes > 500kb (e.g., ",{"type":42,"tag":70,"props":527,"children":529},{"className":528},[],[530],{"type":48,"value":531},"USH2A",{"type":48,"value":533},") break the ",{"type":42,"tag":70,"props":535,"children":537},{"className":536},[],[538],{"type":48,"value":539},"whole_gene",{"type":48,"value":541}," view.\nUse ",{"type":42,"tag":70,"props":543,"children":545},{"className":544},[],[546],{"type":48,"value":547},"--view detail",{"type":48,"value":549}," or manual regional windows instead.",{"type":42,"tag":62,"props":551,"children":552},{},[553,558,559,565,567,573],{"type":42,"tag":66,"props":554,"children":555},{},[556],{"type":48,"value":557},"Sashimi Strand Error",{"type":48,"value":257},{"type":42,"tag":70,"props":560,"children":562},{"className":561},[],[563],{"type":48,"value":564},"plot_components.Sashimi",{"type":48,"value":566}," does NOT accept a\n",{"type":42,"tag":70,"props":568,"children":570},{"className":569},[],[571],{"type":48,"value":572},"strand",{"type":48,"value":574}," argument directly. Filter input tracks instead.",{"type":42,"tag":62,"props":576,"children":577},{},[578,583,585,591,593,599],{"type":42,"tag":66,"props":579,"children":580},{},[581],{"type":48,"value":582},"KeyError: 'ontology_curie'",{"type":48,"value":584},": Not all tracks have ",{"type":42,"tag":70,"props":586,"children":588},{"className":587},[],[589],{"type":48,"value":590},"ontology_curie",{"type":48,"value":592},". Check\n",{"type":42,"tag":70,"props":594,"children":596},{"className":595},[],[597],{"type":48,"value":598},"track.metadata.columns",{"type":48,"value":515},{"type":42,"tag":62,"props":601,"children":602},{},[603,608,610,616,618,623,625,631,633,638],{"type":42,"tag":66,"props":604,"children":605},{},[606],{"type":48,"value":607},"Python Path",{"type":48,"value":609},": If ",{"type":42,"tag":70,"props":611,"children":613},{"className":612},[],[614],{"type":48,"value":615},"exec: \"python\": executable file not found",{"type":48,"value":617}," occurs,\nensure you are using ",{"type":42,"tag":70,"props":619,"children":621},{"className":620},[],[622],{"type":48,"value":212},{"type":48,"value":624}," instead of bare ",{"type":42,"tag":70,"props":626,"children":628},{"className":627},[],[629],{"type":48,"value":630},"python",{"type":48,"value":632},"\u002F",{"type":42,"tag":70,"props":634,"children":636},{"className":635},[],[637],{"type":48,"value":194},{"type":48,"value":325},{"type":42,"tag":62,"props":640,"children":641},{},[642,647,649,655,657,662,664,670],{"type":42,"tag":66,"props":643,"children":644},{},[645],{"type":48,"value":646},"NotImplementedError (pandas)",{"type":48,"value":648},": \"iLocation based boolean indexing on an\ninteger type is not available\". This occurs when using boolean masks with\n",{"type":42,"tag":70,"props":650,"children":652},{"className":651},[],[653],{"type":48,"value":654},".iloc",{"type":48,"value":656}," on integer-indexed DataFrames in newer pandas versions. ",{"type":42,"tag":66,"props":658,"children":659},{},[660],{"type":48,"value":661},"Fix",{"type":48,"value":663},":\nConvert boolean masks to integer indices using ",{"type":42,"tag":70,"props":665,"children":667},{"className":666},[],[668],{"type":48,"value":669},"np.flatnonzero(mask)",{"type":48,"value":325},{"type":42,"tag":62,"props":672,"children":673},{},[674,679,681,686,688,694,696,702,703,709,710,716,718,723],{"type":42,"tag":66,"props":675,"children":676},{},[677],{"type":48,"value":678},"GTF Feather Case Sensitivity",{"type":48,"value":680},": The AlphaGenome GTF Feather file uses\n",{"type":42,"tag":66,"props":682,"children":683},{},[684],{"type":48,"value":685},"Capitalized",{"type":48,"value":687}," column names (",{"type":42,"tag":70,"props":689,"children":691},{"className":690},[],[692],{"type":48,"value":693},"Feature",{"type":48,"value":695},", ",{"type":42,"tag":70,"props":697,"children":699},{"className":698},[],[700],{"type":48,"value":701},"Start",{"type":48,"value":695},{"type":42,"tag":70,"props":704,"children":706},{"className":705},[],[707],{"type":48,"value":708},"End",{"type":48,"value":695},{"type":42,"tag":70,"props":711,"children":713},{"className":712},[],[714],{"type":48,"value":715},"Strand",{"type":48,"value":717},") unlike\nstandard GTF files. Always check ",{"type":42,"tag":70,"props":719,"children":721},{"className":720},[],[722],{"type":48,"value":513},{"type":48,"value":724}," if getting KeyErrors.",{"type":42,"tag":62,"props":726,"children":727},{},[728,739,740,745,747,753,755,761,763,769,771,776],{"type":42,"tag":66,"props":729,"children":730},{},[731,737],{"type":42,"tag":70,"props":732,"children":734},{"className":733},[],[735],{"type":48,"value":736},"score_variant",{"type":48,"value":738}," ontology filtering",{"type":48,"value":257},{"type":42,"tag":70,"props":741,"children":743},{"className":742},[],[744],{"type":48,"value":736},{"type":48,"value":746}," does NOT accept\n",{"type":42,"tag":70,"props":748,"children":750},{"className":749},[],[751],{"type":48,"value":752},"ontology_terms",{"type":48,"value":754}," as an argument. You must filter the returned AnnData\nobjects manually by inspecting ",{"type":42,"tag":70,"props":756,"children":758},{"className":757},[],[759],{"type":48,"value":760},"adata.var",{"type":48,"value":762}," columns. In contrast,\n",{"type":42,"tag":70,"props":764,"children":766},{"className":765},[],[767],{"type":48,"value":768},"predict_variant",{"type":48,"value":770}," DOES accept ",{"type":42,"tag":70,"props":772,"children":774},{"className":773},[],[775],{"type":48,"value":752},{"type":48,"value":204},{"type":42,"tag":62,"props":778,"children":779},{},[780,785,787,792],{"type":42,"tag":66,"props":781,"children":782},{},[783],{"type":48,"value":784},"Sashimi Zoom Logic",{"type":48,"value":786},": To ensure \"skipping\" arcs are visible, expand the\nzoom to include the ",{"type":42,"tag":66,"props":788,"children":789},{},[790],{"type":48,"value":791},"flanking exons",{"type":48,"value":793}," rather than relying on junction\noverlap alone.",{"type":42,"tag":62,"props":795,"children":796},{},[797,802,804,810,812,818,820,826,828,834],{"type":42,"tag":66,"props":798,"children":799},{},[800],{"type":48,"value":801},"Junction Scores",{"type":48,"value":803},": Raw ",{"type":42,"tag":70,"props":805,"children":807},{"className":806},[],[808],{"type":48,"value":809},"Junction",{"type":48,"value":811}," objects from ",{"type":42,"tag":70,"props":813,"children":815},{"className":814},[],[816],{"type":48,"value":817},"prediction",{"type":48,"value":819}," may be simple\nIntervals. Use ",{"type":42,"tag":70,"props":821,"children":823},{"className":822},[],[824],{"type":48,"value":825},"junction_data.get_junctions_to_plot(predictions=..., name=...)",{"type":48,"value":827}," to retrieve objects with the ",{"type":42,"tag":70,"props":829,"children":831},{"className":830},[],[832],{"type":48,"value":833},".k",{"type":48,"value":835}," (abundance\u002Fscore) attribute.",{"type":42,"tag":62,"props":837,"children":838},{},[839,849,850,856,858,863],{"type":42,"tag":66,"props":840,"children":841},{},[842,847],{"type":42,"tag":70,"props":843,"children":845},{"className":844},[],[846],{"type":48,"value":75},{"type":48,"value":848}," Not Found",{"type":48,"value":609},{"type":42,"tag":70,"props":851,"children":853},{"className":852},[],[854],{"type":48,"value":855},"exec: uv: not found",{"type":48,"value":857},", follow the installation\ninstructions in ",{"type":42,"tag":103,"props":859,"children":861},{"href":860},"#prerequisites",[862],{"type":48,"value":56},{"type":48,"value":325},{"type":42,"tag":62,"props":865,"children":866},{},[867,872,873,878,880,886],{"type":42,"tag":66,"props":868,"children":869},{},[870],{"type":48,"value":871},"Registry Authentication Error (401)",{"type":48,"value":609},{"type":42,"tag":70,"props":874,"children":876},{"className":875},[],[877],{"type":48,"value":75},{"type":48,"value":879}," fails with 401 Unauthorized\nfor a private registry, set ",{"type":42,"tag":70,"props":881,"children":883},{"className":882},[],[884],{"type":48,"value":885},"UV_INDEX_URL=https:\u002F\u002Fpypi.org\u002Fsimple",{"type":48,"value":887}," before\nrunning the script.",{"type":42,"tag":51,"props":889,"children":891},{"id":890},"references",[892],{"type":48,"value":893},"References",{"type":42,"tag":178,"props":895,"children":896},{},[897,908,919,929,1025,1040,1055,1070,1085,1100,1115,1129],{"type":42,"tag":62,"props":898,"children":899},{},[900,906],{"type":42,"tag":103,"props":901,"children":903},{"href":902},"docs\u002Falphagenome-api.md",[904],{"type":48,"value":905},"alphagenome-api.md",{"type":48,"value":907}," — API reference and code\npatterns",{"type":42,"tag":62,"props":909,"children":910},{},[911,917],{"type":42,"tag":103,"props":912,"children":914},{"href":913},"docs\u002Finterpretation-guide.md",[915],{"type":48,"value":916},"interpretation-guide.md",{"type":48,"value":918}," — Interpretation\nguide, score magnitude rules, ISM, and checklist.",{"type":42,"tag":62,"props":920,"children":921},{},[922,927],{"type":42,"tag":103,"props":923,"children":924},{"href":290},[925],{"type":48,"value":926},"report-templates.md",{"type":48,"value":928}," — Full report templates",{"type":42,"tag":62,"props":930,"children":931},{},[932,941,943],{"type":42,"tag":103,"props":933,"children":935},{"href":934},"scripts\u002Fvisualize_variant_effects.py",[936],{"type":42,"tag":70,"props":937,"children":939},{"className":938},[],[940],{"type":48,"value":934},{"type":48,"value":942},"\n— Single-variant visualization template (Ref\u002FAlt comparisons, Splicing).\n",{"type":42,"tag":178,"props":944,"children":945},{},[946],{"type":42,"tag":62,"props":947,"children":948},{},[949,954,956,961,963],{"type":42,"tag":66,"props":950,"children":951},{},[952],{"type":48,"value":953},"Splicing Zoom Strategy",{"type":48,"value":955},": Uses a ",{"type":42,"tag":66,"props":957,"children":958},{},[959],{"type":48,"value":960},"Hybrid Approach",{"type":48,"value":962}," for optimal\nvisibility:\n",{"type":42,"tag":58,"props":964,"children":965},{},[966,976,993],{"type":42,"tag":62,"props":967,"children":968},{},[969,974],{"type":42,"tag":66,"props":970,"children":971},{},[972],{"type":48,"value":973},"Base Interval",{"type":48,"value":975},": Variant +\u002F- 1 downstream and upstream exon\n(Structural Context).",{"type":42,"tag":62,"props":977,"children":978},{},[979,984,986,991],{"type":42,"tag":66,"props":980,"children":981},{},[982],{"type":48,"value":983},"Junction Expansion",{"type":48,"value":985},": Expands to include the full span of any\n",{"type":42,"tag":66,"props":987,"children":988},{},[989],{"type":48,"value":990},"significant splicing junction",{"type":48,"value":992}," (e.g., exon skipping events that\nspan multiple exons).",{"type":42,"tag":62,"props":994,"children":995},{},[996,1001,1003,1009,1011,1016,1018,1023],{"type":42,"tag":66,"props":997,"children":998},{},[999],{"type":48,"value":1000},"Anchor Enforcement",{"type":48,"value":1002},": Ensures the exons ",{"type":42,"tag":1004,"props":1005,"children":1006},"em",{},[1007],{"type":48,"value":1008},"anchoring",{"type":48,"value":1010}," these long\njunctions are fully visible. ",{"type":42,"tag":1004,"props":1012,"children":1013},{},[1014],{"type":48,"value":1015},"Lesson",{"type":48,"value":1017},": Simple fixed windows (e.g.,\n2kb) or nearest-exon logic often fail for skipping events. Always\nuse the ",{"type":42,"tag":1004,"props":1019,"children":1020},{},[1021],{"type":48,"value":1022},"observed junction data",{"type":48,"value":1024}," to drive zoom levels.",{"type":42,"tag":62,"props":1026,"children":1027},{},[1028,1038],{"type":42,"tag":103,"props":1029,"children":1031},{"href":1030},"docs\u002Fexamples\u002Fsplicing\u002F",[1032],{"type":42,"tag":70,"props":1033,"children":1035},{"className":1034},[],[1036],{"type":48,"value":1037},"examples\u002Fsplicing\u002F",{"type":48,"value":1039}," — Splicing analysis examples",{"type":42,"tag":62,"props":1041,"children":1042},{},[1043,1053],{"type":42,"tag":103,"props":1044,"children":1046},{"href":1045},"docs\u002Fexamples\u002Fmodel_limitation_RNU4ATAC\u002F",[1047],{"type":42,"tag":70,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":48,"value":1052},"examples\u002Fmodel_limitation_RNU4ATAC\u002F",{"type":48,"value":1054},"\n— ncRNA structure limitation case study",{"type":42,"tag":62,"props":1056,"children":1057},{},[1058,1068],{"type":42,"tag":103,"props":1059,"children":1061},{"href":1060},"docs\u002Fexamples\u002Fpolyadenylation_HBA2\u002F",[1062],{"type":42,"tag":70,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":48,"value":1067},"examples\u002Fpolyadenylation_HBA2\u002F",{"type":48,"value":1069}," — 3'\nUTR \u002F Polyadenylation case study",{"type":42,"tag":62,"props":1071,"children":1072},{},[1073,1083],{"type":42,"tag":103,"props":1074,"children":1076},{"href":1075},"docs\u002Fexamples\u002Fregulatory\u002F",[1077],{"type":42,"tag":70,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":48,"value":1082},"examples\u002Fregulatory\u002F",{"type":48,"value":1084}," — Regulatory variant\nexamples",{"type":42,"tag":62,"props":1086,"children":1087},{},[1088,1098],{"type":42,"tag":103,"props":1089,"children":1091},{"href":1090},"docs\u002Fexamples\u002Fnegative_result_GATA4\u002F",[1092],{"type":42,"tag":70,"props":1093,"children":1095},{"className":1094},[],[1096],{"type":48,"value":1097},"examples\u002Fnegative_result_GATA4\u002F",{"type":48,"value":1099}," —\nNegative results (mathematical artefact)",{"type":42,"tag":62,"props":1101,"children":1102},{},[1103,1113],{"type":42,"tag":103,"props":1104,"children":1106},{"href":1105},"docs\u002Fexamples\u002Fnegative_result_TGFB3\u002F",[1107],{"type":42,"tag":70,"props":1108,"children":1110},{"className":1109},[],[1111],{"type":48,"value":1112},"examples\u002Fnegative_result_TGFB3\u002F",{"type":48,"value":1114}," —\nNegative results (proxies)",{"type":42,"tag":62,"props":1116,"children":1117},{},[1118,1127],{"type":42,"tag":103,"props":1119,"children":1121},{"href":1120},"scripts\u002Flookup_gene_info.py",[1122],{"type":42,"tag":70,"props":1123,"children":1125},{"className":1124},[],[1126],{"type":48,"value":1120},{"type":48,"value":1128}," — Gene &\ntranscript lookup",{"type":42,"tag":62,"props":1130,"children":1131},{},[1132,1141],{"type":42,"tag":103,"props":1133,"children":1135},{"href":1134},"scripts\u002Fresolve_ontology_terms.py",[1136],{"type":42,"tag":70,"props":1137,"children":1139},{"className":1138},[],[1140],{"type":48,"value":1134},{"type":48,"value":1142}," —\nOntology term resolution (UBERON\u002FCL IDs)",{"type":42,"tag":1144,"props":1145,"children":1146},"hr",{},[],{"type":42,"tag":51,"props":1148,"children":1150},{"id":1149},"code-patterns",[1151],{"type":48,"value":1152},"Code Patterns",{"type":42,"tag":300,"props":1154,"children":1156},{"id":1155},"broad-discovery-scan",[1157],{"type":48,"value":1158},"Broad Discovery Scan",{"type":42,"tag":307,"props":1160,"children":1161},{},[1162,1164,1169,1171,1176],{"type":48,"value":1163},"Use ",{"type":42,"tag":70,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":48,"value":736},{"type":48,"value":1170}," across ",{"type":42,"tag":66,"props":1172,"children":1173},{},[1174],{"type":48,"value":1175},"differential scorers only",{"type":48,"value":1177}," to discover unexpected\ntissue effects.",{"type":42,"tag":327,"props":1179,"children":1182},{"className":1180,"code":1181,"language":630,"meta":332,"style":332},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from alphagenome.models import dna_client\nfrom alphagenome.models import variant_scorers\nfrom alphagenome.data import genome\nimport os\nimport pandas as pd\nimport dotenv\n\n# Load environment variables from ~\u002F.env\ndotenv.load_dotenv(os.path.expanduser('~\u002F.env'))\n\n# Setup API Key and Client\ndna_model = dna_client.create(api_key=os.environ.get('ALPHAGENOME_API_KEY'),\n                              address='dns:\u002F\u002F\u002Fgdmscience.googleapis.com:443')\n\n# Define Variant (example)\nvariant_str = \"chr2:1234:A>C\"\nchrom, pos_str, ref_alt = variant_str.split(':')\nref, alt = ref_alt.split('>')\npos = int(pos_str)\n\n# Use supported sequence length (e.g., 2**20 for optimal performance)\nSEQ_LENGTH = 2**20\ninterval = genome.Interval(chrom, pos - SEQ_LENGTH \u002F\u002F 2, pos + SEQ_LENGTH \u002F\u002F 2)\nvariant = genome.Variant(chrom, pos, ref, alt)\n\nscorers = [\n    variant_scorers.RECOMMENDED_VARIANT_SCORERS[m]\n    for m in variant_scorers.RECOMMENDED_VARIANT_SCORERS\n    if \"ACTIVE\" not in m and \"CAGE\" not in m and \"PROCAP\" not in m\n]\n\nprint(f\"Scoring variant {variant_str}...\")\nscores_list = dna_model.score_variant(interval=interval, variant=variant, variant_scorers=scorers)\n\n# Process and Display Results\nall_dfs = []\nfor score_adata in scores_list:\n    df = variant_scorers.tidy_scores([score_adata], match_gene_strand=True)\n    if df is not None:\n        all_dfs.append(df)\n\nif all_dfs:\n    df = pd.concat(all_dfs)\n    significant = df[df['quantile_score'].abs() > 0.995]\n    ranked = significant.sort_values('raw_score', key=abs, ascending=False)\n    print(\"Top Significant Hits:\")\n    print(ranked[['biosample_name', 'gene_name', 'output_type', 'quantile_score', 'raw_score']])\n",[1183],{"type":42,"tag":70,"props":1184,"children":1185},{"__ignoreMap":332},[1186,1194,1203,1212,1221,1230,1239,1249,1258,1267,1275,1284,1293,1302,1310,1319,1328,1337,1346,1355,1363,1372,1381,1390,1399,1407,1416,1425,1434,1443,1452,1460,1469,1478,1486,1495,1504,1513,1522,1531,1540,1548,1557,1566,1575,1584,1593],{"type":42,"tag":338,"props":1187,"children":1188},{"class":340,"line":341},[1189],{"type":42,"tag":338,"props":1190,"children":1191},{},[1192],{"type":48,"value":1193},"from alphagenome.models import dna_client\n",{"type":42,"tag":338,"props":1195,"children":1197},{"class":340,"line":1196},2,[1198],{"type":42,"tag":338,"props":1199,"children":1200},{},[1201],{"type":48,"value":1202},"from alphagenome.models import variant_scorers\n",{"type":42,"tag":338,"props":1204,"children":1206},{"class":340,"line":1205},3,[1207],{"type":42,"tag":338,"props":1208,"children":1209},{},[1210],{"type":48,"value":1211},"from alphagenome.data import genome\n",{"type":42,"tag":338,"props":1213,"children":1215},{"class":340,"line":1214},4,[1216],{"type":42,"tag":338,"props":1217,"children":1218},{},[1219],{"type":48,"value":1220},"import os\n",{"type":42,"tag":338,"props":1222,"children":1224},{"class":340,"line":1223},5,[1225],{"type":42,"tag":338,"props":1226,"children":1227},{},[1228],{"type":48,"value":1229},"import pandas as pd\n",{"type":42,"tag":338,"props":1231,"children":1233},{"class":340,"line":1232},6,[1234],{"type":42,"tag":338,"props":1235,"children":1236},{},[1237],{"type":48,"value":1238},"import dotenv\n",{"type":42,"tag":338,"props":1240,"children":1242},{"class":340,"line":1241},7,[1243],{"type":42,"tag":338,"props":1244,"children":1246},{"emptyLinePlaceholder":1245},true,[1247],{"type":48,"value":1248},"\n",{"type":42,"tag":338,"props":1250,"children":1252},{"class":340,"line":1251},8,[1253],{"type":42,"tag":338,"props":1254,"children":1255},{},[1256],{"type":48,"value":1257},"# Load environment variables from ~\u002F.env\n",{"type":42,"tag":338,"props":1259,"children":1261},{"class":340,"line":1260},9,[1262],{"type":42,"tag":338,"props":1263,"children":1264},{},[1265],{"type":48,"value":1266},"dotenv.load_dotenv(os.path.expanduser('~\u002F.env'))\n",{"type":42,"tag":338,"props":1268,"children":1270},{"class":340,"line":1269},10,[1271],{"type":42,"tag":338,"props":1272,"children":1273},{"emptyLinePlaceholder":1245},[1274],{"type":48,"value":1248},{"type":42,"tag":338,"props":1276,"children":1278},{"class":340,"line":1277},11,[1279],{"type":42,"tag":338,"props":1280,"children":1281},{},[1282],{"type":48,"value":1283},"# Setup API Key and Client\n",{"type":42,"tag":338,"props":1285,"children":1287},{"class":340,"line":1286},12,[1288],{"type":42,"tag":338,"props":1289,"children":1290},{},[1291],{"type":48,"value":1292},"dna_model = dna_client.create(api_key=os.environ.get('ALPHAGENOME_API_KEY'),\n",{"type":42,"tag":338,"props":1294,"children":1296},{"class":340,"line":1295},13,[1297],{"type":42,"tag":338,"props":1298,"children":1299},{},[1300],{"type":48,"value":1301},"                              address='dns:\u002F\u002F\u002Fgdmscience.googleapis.com:443')\n",{"type":42,"tag":338,"props":1303,"children":1305},{"class":340,"line":1304},14,[1306],{"type":42,"tag":338,"props":1307,"children":1308},{"emptyLinePlaceholder":1245},[1309],{"type":48,"value":1248},{"type":42,"tag":338,"props":1311,"children":1313},{"class":340,"line":1312},15,[1314],{"type":42,"tag":338,"props":1315,"children":1316},{},[1317],{"type":48,"value":1318},"# Define Variant (example)\n",{"type":42,"tag":338,"props":1320,"children":1322},{"class":340,"line":1321},16,[1323],{"type":42,"tag":338,"props":1324,"children":1325},{},[1326],{"type":48,"value":1327},"variant_str = \"chr2:1234:A>C\"\n",{"type":42,"tag":338,"props":1329,"children":1331},{"class":340,"line":1330},17,[1332],{"type":42,"tag":338,"props":1333,"children":1334},{},[1335],{"type":48,"value":1336},"chrom, pos_str, ref_alt = variant_str.split(':')\n",{"type":42,"tag":338,"props":1338,"children":1340},{"class":340,"line":1339},18,[1341],{"type":42,"tag":338,"props":1342,"children":1343},{},[1344],{"type":48,"value":1345},"ref, alt = ref_alt.split('>')\n",{"type":42,"tag":338,"props":1347,"children":1349},{"class":340,"line":1348},19,[1350],{"type":42,"tag":338,"props":1351,"children":1352},{},[1353],{"type":48,"value":1354},"pos = int(pos_str)\n",{"type":42,"tag":338,"props":1356,"children":1358},{"class":340,"line":1357},20,[1359],{"type":42,"tag":338,"props":1360,"children":1361},{"emptyLinePlaceholder":1245},[1362],{"type":48,"value":1248},{"type":42,"tag":338,"props":1364,"children":1366},{"class":340,"line":1365},21,[1367],{"type":42,"tag":338,"props":1368,"children":1369},{},[1370],{"type":48,"value":1371},"# Use supported sequence length (e.g., 2**20 for optimal performance)\n",{"type":42,"tag":338,"props":1373,"children":1375},{"class":340,"line":1374},22,[1376],{"type":42,"tag":338,"props":1377,"children":1378},{},[1379],{"type":48,"value":1380},"SEQ_LENGTH = 2**20\n",{"type":42,"tag":338,"props":1382,"children":1384},{"class":340,"line":1383},23,[1385],{"type":42,"tag":338,"props":1386,"children":1387},{},[1388],{"type":48,"value":1389},"interval = genome.Interval(chrom, pos - SEQ_LENGTH \u002F\u002F 2, pos + SEQ_LENGTH \u002F\u002F 2)\n",{"type":42,"tag":338,"props":1391,"children":1393},{"class":340,"line":1392},24,[1394],{"type":42,"tag":338,"props":1395,"children":1396},{},[1397],{"type":48,"value":1398},"variant = genome.Variant(chrom, pos, ref, alt)\n",{"type":42,"tag":338,"props":1400,"children":1402},{"class":340,"line":1401},25,[1403],{"type":42,"tag":338,"props":1404,"children":1405},{"emptyLinePlaceholder":1245},[1406],{"type":48,"value":1248},{"type":42,"tag":338,"props":1408,"children":1410},{"class":340,"line":1409},26,[1411],{"type":42,"tag":338,"props":1412,"children":1413},{},[1414],{"type":48,"value":1415},"scorers = [\n",{"type":42,"tag":338,"props":1417,"children":1419},{"class":340,"line":1418},27,[1420],{"type":42,"tag":338,"props":1421,"children":1422},{},[1423],{"type":48,"value":1424},"    variant_scorers.RECOMMENDED_VARIANT_SCORERS[m]\n",{"type":42,"tag":338,"props":1426,"children":1428},{"class":340,"line":1427},28,[1429],{"type":42,"tag":338,"props":1430,"children":1431},{},[1432],{"type":48,"value":1433},"    for m in variant_scorers.RECOMMENDED_VARIANT_SCORERS\n",{"type":42,"tag":338,"props":1435,"children":1437},{"class":340,"line":1436},29,[1438],{"type":42,"tag":338,"props":1439,"children":1440},{},[1441],{"type":48,"value":1442},"    if \"ACTIVE\" not in m and \"CAGE\" not in m and \"PROCAP\" not in m\n",{"type":42,"tag":338,"props":1444,"children":1446},{"class":340,"line":1445},30,[1447],{"type":42,"tag":338,"props":1448,"children":1449},{},[1450],{"type":48,"value":1451},"]\n",{"type":42,"tag":338,"props":1453,"children":1455},{"class":340,"line":1454},31,[1456],{"type":42,"tag":338,"props":1457,"children":1458},{"emptyLinePlaceholder":1245},[1459],{"type":48,"value":1248},{"type":42,"tag":338,"props":1461,"children":1463},{"class":340,"line":1462},32,[1464],{"type":42,"tag":338,"props":1465,"children":1466},{},[1467],{"type":48,"value":1468},"print(f\"Scoring variant {variant_str}...\")\n",{"type":42,"tag":338,"props":1470,"children":1472},{"class":340,"line":1471},33,[1473],{"type":42,"tag":338,"props":1474,"children":1475},{},[1476],{"type":48,"value":1477},"scores_list = dna_model.score_variant(interval=interval, variant=variant, variant_scorers=scorers)\n",{"type":42,"tag":338,"props":1479,"children":1481},{"class":340,"line":1480},34,[1482],{"type":42,"tag":338,"props":1483,"children":1484},{"emptyLinePlaceholder":1245},[1485],{"type":48,"value":1248},{"type":42,"tag":338,"props":1487,"children":1489},{"class":340,"line":1488},35,[1490],{"type":42,"tag":338,"props":1491,"children":1492},{},[1493],{"type":48,"value":1494},"# Process and Display Results\n",{"type":42,"tag":338,"props":1496,"children":1498},{"class":340,"line":1497},36,[1499],{"type":42,"tag":338,"props":1500,"children":1501},{},[1502],{"type":48,"value":1503},"all_dfs = []\n",{"type":42,"tag":338,"props":1505,"children":1507},{"class":340,"line":1506},37,[1508],{"type":42,"tag":338,"props":1509,"children":1510},{},[1511],{"type":48,"value":1512},"for score_adata in scores_list:\n",{"type":42,"tag":338,"props":1514,"children":1516},{"class":340,"line":1515},38,[1517],{"type":42,"tag":338,"props":1518,"children":1519},{},[1520],{"type":48,"value":1521},"    df = variant_scorers.tidy_scores([score_adata], match_gene_strand=True)\n",{"type":42,"tag":338,"props":1523,"children":1525},{"class":340,"line":1524},39,[1526],{"type":42,"tag":338,"props":1527,"children":1528},{},[1529],{"type":48,"value":1530},"    if df is not None:\n",{"type":42,"tag":338,"props":1532,"children":1534},{"class":340,"line":1533},40,[1535],{"type":42,"tag":338,"props":1536,"children":1537},{},[1538],{"type":48,"value":1539},"        all_dfs.append(df)\n",{"type":42,"tag":338,"props":1541,"children":1543},{"class":340,"line":1542},41,[1544],{"type":42,"tag":338,"props":1545,"children":1546},{"emptyLinePlaceholder":1245},[1547],{"type":48,"value":1248},{"type":42,"tag":338,"props":1549,"children":1551},{"class":340,"line":1550},42,[1552],{"type":42,"tag":338,"props":1553,"children":1554},{},[1555],{"type":48,"value":1556},"if all_dfs:\n",{"type":42,"tag":338,"props":1558,"children":1560},{"class":340,"line":1559},43,[1561],{"type":42,"tag":338,"props":1562,"children":1563},{},[1564],{"type":48,"value":1565},"    df = pd.concat(all_dfs)\n",{"type":42,"tag":338,"props":1567,"children":1569},{"class":340,"line":1568},44,[1570],{"type":42,"tag":338,"props":1571,"children":1572},{},[1573],{"type":48,"value":1574},"    significant = df[df['quantile_score'].abs() > 0.995]\n",{"type":42,"tag":338,"props":1576,"children":1578},{"class":340,"line":1577},45,[1579],{"type":42,"tag":338,"props":1580,"children":1581},{},[1582],{"type":48,"value":1583},"    ranked = significant.sort_values('raw_score', key=abs, ascending=False)\n",{"type":42,"tag":338,"props":1585,"children":1587},{"class":340,"line":1586},46,[1588],{"type":42,"tag":338,"props":1589,"children":1590},{},[1591],{"type":48,"value":1592},"    print(\"Top Significant Hits:\")\n",{"type":42,"tag":338,"props":1594,"children":1596},{"class":340,"line":1595},47,[1597],{"type":42,"tag":338,"props":1598,"children":1599},{},[1600],{"type":48,"value":1601},"    print(ranked[['biosample_name', 'gene_name', 'output_type', 'quantile_score', 'raw_score']])\n",{"type":42,"tag":300,"props":1603,"children":1605},{"id":1604},"extended-search-for-disease-relevant-tissues",[1606],{"type":48,"value":1607},"Extended Search for Disease-Relevant Tissues",{"type":42,"tag":327,"props":1609,"children":1611},{"className":1180,"code":1610,"language":630,"meta":332,"style":332},"# Define keywords based on disease context\ndisease_keywords = [\"liver\", \"hepatocyte\"]\n\n# Filter for any match\nmask = df['biosample_name'].str.contains('|'.join(disease_keywords), case=False, na=False)\n\nrelevant_hits = df[mask].sort_values('raw_score', key=abs, ascending=False)\nprint(f\"\\n--- Extended Analysis (Keywords: {disease_keywords}) ---\")\nprint(relevant_hits.head(20)[['biosample_name', 'output_type', 'raw_score', 'quantile_score']])\n",[1612],{"type":42,"tag":70,"props":1613,"children":1614},{"__ignoreMap":332},[1615,1623,1631,1638,1646,1654,1661,1669,1677],{"type":42,"tag":338,"props":1616,"children":1617},{"class":340,"line":341},[1618],{"type":42,"tag":338,"props":1619,"children":1620},{},[1621],{"type":48,"value":1622},"# Define keywords based on disease context\n",{"type":42,"tag":338,"props":1624,"children":1625},{"class":340,"line":1196},[1626],{"type":42,"tag":338,"props":1627,"children":1628},{},[1629],{"type":48,"value":1630},"disease_keywords = [\"liver\", \"hepatocyte\"]\n",{"type":42,"tag":338,"props":1632,"children":1633},{"class":340,"line":1205},[1634],{"type":42,"tag":338,"props":1635,"children":1636},{"emptyLinePlaceholder":1245},[1637],{"type":48,"value":1248},{"type":42,"tag":338,"props":1639,"children":1640},{"class":340,"line":1214},[1641],{"type":42,"tag":338,"props":1642,"children":1643},{},[1644],{"type":48,"value":1645},"# Filter for any match\n",{"type":42,"tag":338,"props":1647,"children":1648},{"class":340,"line":1223},[1649],{"type":42,"tag":338,"props":1650,"children":1651},{},[1652],{"type":48,"value":1653},"mask = df['biosample_name'].str.contains('|'.join(disease_keywords), case=False, na=False)\n",{"type":42,"tag":338,"props":1655,"children":1656},{"class":340,"line":1232},[1657],{"type":42,"tag":338,"props":1658,"children":1659},{"emptyLinePlaceholder":1245},[1660],{"type":48,"value":1248},{"type":42,"tag":338,"props":1662,"children":1663},{"class":340,"line":1241},[1664],{"type":42,"tag":338,"props":1665,"children":1666},{},[1667],{"type":48,"value":1668},"relevant_hits = df[mask].sort_values('raw_score', key=abs, ascending=False)\n",{"type":42,"tag":338,"props":1670,"children":1671},{"class":340,"line":1251},[1672],{"type":42,"tag":338,"props":1673,"children":1674},{},[1675],{"type":48,"value":1676},"print(f\"\\n--- Extended Analysis (Keywords: {disease_keywords}) ---\")\n",{"type":42,"tag":338,"props":1678,"children":1679},{"class":340,"line":1260},[1680],{"type":42,"tag":338,"props":1681,"children":1682},{},[1683],{"type":48,"value":1684},"print(relevant_hits.head(20)[['biosample_name', 'output_type', 'raw_score', 'quantile_score']])\n",{"type":42,"tag":51,"props":1686,"children":1688},{"id":1687},"workflow-checklist",[1689],{"type":48,"value":1690},"Workflow Checklist",{"type":42,"tag":327,"props":1692,"children":1696},{"className":1693,"code":1695,"language":48},[1694],"language-text","Variant Analysis Progress:\n- [ ] Step 0: Review Golden Examples (MANDATORY)\n- [ ] Step 1: Create Output Folder and Setup\n- [ ] Step 2: Parse User Query & Research\n- [ ] Step 3: Resolve Tissues & Modalities\n- [ ] Step 4: Visualize & Save Plots\n- [ ] Step 5: Analyze Predictions (view plots, no code). MANDATORY: Read [interpretation-guide.md](docs\u002Finterpretation-guide.md) before interpreting results.\n- [ ] Step 6: Write Report, save it as `report.md` (MANDATORY)\n- [ ] Step 7: Self-Critique (view `report.md` to verify links & claims)\n- [ ] Step 8: Make artifact out of `report.md`\n",[1697],{"type":42,"tag":70,"props":1698,"children":1699},{"__ignoreMap":332},[1700],{"type":48,"value":1695},{"type":42,"tag":1144,"props":1702,"children":1703},{},[],{"type":42,"tag":51,"props":1705,"children":1707},{"id":1706},"multi-variant-workflow",[1708],{"type":48,"value":1709},"Multi-Variant Workflow",{"type":42,"tag":307,"props":1711,"children":1712},{},[1713,1715,1721],{"type":48,"value":1714},"If multiple variants are specified, spawn sub-agents to run each variant\nanalysis and then synthesize each ",{"type":42,"tag":70,"props":1716,"children":1718},{"className":1717},[],[1719],{"type":48,"value":1720},"report.md",{"type":48,"value":1722}," into a single report.",{"type":42,"tag":300,"props":1724,"children":1726},{"id":1725},"script-reference",[1727],{"type":48,"value":1728},"Script Reference",{"type":42,"tag":1730,"props":1731,"children":1732},"table",{},[1733,1752],{"type":42,"tag":1734,"props":1735,"children":1736},"thead",{},[1737],{"type":42,"tag":1738,"props":1739,"children":1740},"tr",{},[1741,1747],{"type":42,"tag":1742,"props":1743,"children":1744},"th",{},[1745],{"type":48,"value":1746},"Script",{"type":42,"tag":1742,"props":1748,"children":1749},{},[1750],{"type":48,"value":1751},"Purpose",{"type":42,"tag":1753,"props":1754,"children":1755},"tbody",{},[1756,1774,1785,1802,1819,1830,1847,1864,1875],{"type":42,"tag":1738,"props":1757,"children":1758},{},[1759,1769],{"type":42,"tag":1760,"props":1761,"children":1762},"td",{},[1763],{"type":42,"tag":70,"props":1764,"children":1766},{"className":1765},[],[1767],{"type":48,"value":1768},"lookup_gene_info",{"type":42,"tag":1760,"props":1770,"children":1771},{},[1772],{"type":48,"value":1773},"Comprehensive gene and transcript lookup using",{"type":42,"tag":1738,"props":1775,"children":1776},{},[1777,1782],{"type":42,"tag":1760,"props":1778,"children":1779},{},[1780],{"type":48,"value":1781},":                             : GTF data                                       :",{"type":42,"tag":1760,"props":1783,"children":1784},{},[],{"type":42,"tag":1738,"props":1786,"children":1787},{},[1788,1797],{"type":42,"tag":1760,"props":1789,"children":1790},{},[1791],{"type":42,"tag":70,"props":1792,"children":1794},{"className":1793},[],[1795],{"type":48,"value":1796},"resolve_ontology_terms",{"type":42,"tag":1760,"props":1798,"children":1799},{},[1800],{"type":48,"value":1801},"Biological terms → UBERON\u002FCL\u002FEFO IDs",{"type":42,"tag":1738,"props":1803,"children":1804},{},[1805,1814],{"type":42,"tag":1760,"props":1806,"children":1807},{},[1808],{"type":42,"tag":70,"props":1809,"children":1811},{"className":1810},[],[1812],{"type":48,"value":1813},"visualize_variant_effects",{"type":42,"tag":1760,"props":1815,"children":1816},{},[1817],{"type":48,"value":1818},"REF\u002FALT visualization (expression, regulatory,",{"type":42,"tag":1738,"props":1820,"children":1821},{},[1822,1827],{"type":42,"tag":1760,"props":1823,"children":1824},{},[1825],{"type":48,"value":1826},":                             : splicing)                                      :",{"type":42,"tag":1760,"props":1828,"children":1829},{},[],{"type":42,"tag":1738,"props":1831,"children":1832},{},[1833,1842],{"type":42,"tag":1760,"props":1834,"children":1835},{},[1836],{"type":42,"tag":70,"props":1837,"children":1839},{"className":1838},[],[1840],{"type":48,"value":1841},"analyze_ism",{"type":42,"tag":1760,"props":1843,"children":1844},{},[1845],{"type":48,"value":1846},"In-Silico Mutagenesis SeqLogo generation",{"type":42,"tag":1738,"props":1848,"children":1849},{},[1850,1859],{"type":42,"tag":1760,"props":1851,"children":1852},{},[1853],{"type":42,"tag":70,"props":1854,"children":1856},{"className":1855},[],[1857],{"type":48,"value":1858},"interpret_splicing",{"type":42,"tag":1760,"props":1860,"children":1861},{},[1862],{"type":48,"value":1863},"Quantitative splicing analysis (delta scores,",{"type":42,"tag":1738,"props":1865,"children":1866},{},[1867,1872],{"type":42,"tag":1760,"props":1868,"children":1869},{},[1870],{"type":48,"value":1871},":                             : junctions)                                     :",{"type":42,"tag":1760,"props":1873,"children":1874},{},[],{"type":42,"tag":1738,"props":1876,"children":1877},{},[1878,1887],{"type":42,"tag":1760,"props":1879,"children":1880},{},[1881],{"type":42,"tag":70,"props":1882,"children":1884},{"className":1883},[],[1885],{"type":48,"value":1886},"visualize_genome_tracks",{"type":42,"tag":1760,"props":1888,"children":1889},{},[1890],{"type":48,"value":1891},"Genomic track visualization for a region",{"type":42,"tag":1893,"props":1894,"children":1895},"style",{},[1896],{"type":48,"value":1897},"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":1899,"total":1515},[1900,1915,1922,1942,1954,1969,1984],{"slug":1901,"name":1901,"fn":1902,"description":1903,"org":1904,"tags":1905,"stars":25,"repoUrl":26,"updatedAt":1914},"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},[1906,1907,1910,1913],{"name":17,"slug":18,"type":15},{"name":1908,"slug":1909,"type":15},"Genomics","genomics",{"name":1911,"slug":1912,"type":15},"Life Sciences","life-sciences",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:51.827211",{"slug":4,"name":4,"fn":5,"description":6,"org":1916,"tags":1917,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1918,1919,1920,1921],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"slug":1923,"name":1923,"fn":1924,"description":1925,"org":1926,"tags":1927,"stars":25,"repoUrl":26,"updatedAt":1941},"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},[1928,1931,1934,1937,1940],{"name":1929,"slug":1930,"type":15},"ChEMBL","chembl",{"name":1932,"slug":1933,"type":15},"Chemistry","chemistry",{"name":1935,"slug":1936,"type":15},"Database","database",{"name":1938,"slug":1939,"type":15},"Pharmacology","pharmacology",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:35.544306",{"slug":1943,"name":1943,"fn":1944,"description":1945,"org":1946,"tags":1947,"stars":25,"repoUrl":26,"updatedAt":1953},"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},[1948,1951,1952],{"name":1949,"slug":1950,"type":15},"Clinical Trials","clinical-trials",{"name":1911,"slug":1912,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:52:06.846705",{"slug":1955,"name":1955,"fn":1956,"description":1957,"org":1958,"tags":1959,"stars":25,"repoUrl":26,"updatedAt":1968},"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},[1960,1963,1964,1967],{"name":1961,"slug":1962,"type":15},"ClinVar","clinvar",{"name":23,"slug":24,"type":15},{"name":1965,"slug":1966,"type":15},"Healthcare","healthcare",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:36.86094",{"slug":168,"name":168,"fn":1970,"description":1971,"org":1972,"tags":1973,"stars":25,"repoUrl":26,"updatedAt":1983},"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},[1974,1977,1980],{"name":1975,"slug":1976,"type":15},"Compliance","compliance",{"name":1978,"slug":1979,"type":15},"Operations","operations",{"name":1981,"slug":1982,"type":15},"Security","security","2026-07-12T07:52:17.355491",{"slug":1985,"name":1985,"fn":1986,"description":1987,"org":1988,"tags":1989,"stars":25,"repoUrl":26,"updatedAt":1996},"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},[1990,1991,1992,1995],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":1993,"slug":1994,"type":15},"NCBI","ncbi",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:33.054229",{"items":1998,"total":1515},[1999,2006,2013,2021,2027,2034,2040,2047,2059,2074,2085,2095],{"slug":1901,"name":1901,"fn":1902,"description":1903,"org":2000,"tags":2001,"stars":25,"repoUrl":26,"updatedAt":1914},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2002,2003,2004,2005],{"name":17,"slug":18,"type":15},{"name":1908,"slug":1909,"type":15},{"name":1911,"slug":1912,"type":15},{"name":13,"slug":14,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":2007,"tags":2008,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2009,2010,2011,2012],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"slug":1923,"name":1923,"fn":1924,"description":1925,"org":2014,"tags":2015,"stars":25,"repoUrl":26,"updatedAt":1941},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2016,2017,2018,2019,2020],{"name":1929,"slug":1930,"type":15},{"name":1932,"slug":1933,"type":15},{"name":1935,"slug":1936,"type":15},{"name":1938,"slug":1939,"type":15},{"name":13,"slug":14,"type":15},{"slug":1943,"name":1943,"fn":1944,"description":1945,"org":2022,"tags":2023,"stars":25,"repoUrl":26,"updatedAt":1953},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2024,2025,2026],{"name":1949,"slug":1950,"type":15},{"name":1911,"slug":1912,"type":15},{"name":13,"slug":14,"type":15},{"slug":1955,"name":1955,"fn":1956,"description":1957,"org":2028,"tags":2029,"stars":25,"repoUrl":26,"updatedAt":1968},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2030,2031,2032,2033],{"name":1961,"slug":1962,"type":15},{"name":23,"slug":24,"type":15},{"name":1965,"slug":1966,"type":15},{"name":13,"slug":14,"type":15},{"slug":168,"name":168,"fn":1970,"description":1971,"org":2035,"tags":2036,"stars":25,"repoUrl":26,"updatedAt":1983},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2037,2038,2039],{"name":1975,"slug":1976,"type":15},{"name":1978,"slug":1979,"type":15},{"name":1981,"slug":1982,"type":15},{"slug":1985,"name":1985,"fn":1986,"description":1987,"org":2041,"tags":2042,"stars":25,"repoUrl":26,"updatedAt":1996},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2043,2044,2045,2046],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":1993,"slug":1994,"type":15},{"name":13,"slug":14,"type":15},{"slug":2048,"name":2048,"fn":2049,"description":2050,"org":2051,"tags":2052,"stars":25,"repoUrl":26,"updatedAt":2058},"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},[2053,2054,2057],{"name":17,"slug":18,"type":15},{"name":2055,"slug":2056,"type":15},"Ontology","ontology",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:59.368324",{"slug":2060,"name":2060,"fn":2061,"description":2062,"org":2063,"tags":2064,"stars":25,"repoUrl":26,"updatedAt":2073},"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},[2065,2066,2069,2070],{"name":17,"slug":18,"type":15},{"name":2067,"slug":2068,"type":15},"GraphQL","graphql",{"name":13,"slug":14,"type":15},{"name":2071,"slug":2072,"type":15},"REST API","rest-api","2026-07-12T07:52:10.597139",{"slug":2075,"name":2075,"fn":2076,"description":2077,"org":2078,"tags":2079,"stars":25,"repoUrl":26,"updatedAt":2084},"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},[2080,2081,2082,2083],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":1911,"slug":1912,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:51:41.645835",{"slug":2086,"name":2086,"fn":2087,"description":2088,"org":2089,"tags":2090,"stars":25,"repoUrl":26,"updatedAt":2094},"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},[2091,2092,2093],{"name":17,"slug":18,"type":15},{"name":1911,"slug":1912,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:52:09.354992",{"slug":2096,"name":2096,"fn":2097,"description":2098,"org":2099,"tags":2100,"stars":25,"repoUrl":26,"updatedAt":2105},"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},[2101,2102,2103,2104],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":1911,"slug":1912,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:51:38.213009"]