[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DTMPHQEX6AYZ34YPX3C6B5":3,"skill-same:01M6DTMPHQEX6AYZ34YPX3C6B5":114},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6DTMPHQEX6AYZ34YPX3C6B5","spatial-enrichment",null,"Load when running pathway or gene-set enrichment per cluster on spatial AnnData with over-representation, preranked GSEA, or ssGSEA group-mean scores. Skip when ranking spatially variable genes (use spatial-genes) or comparing conditions (use spatial-condition).","TianGzlab\u002FOmicsClaw","TianGzlab","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F150978281?v=4","01M6DT9WNJJ470ADHPSMFAA02Y","01M6DT9WSN09C5K65GB6RK18R9",161,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32],"enrichment","Spatial","spatial enrichment","go","SET","anndata","use","ranking","GSEA","Reactome","pathway","condition","ssgsea","enrichr","gene-set","2026-11-10 10:12:30",false,"---\nname: spatial-enrichment\ndescription: Load when running pathway or gene-set enrichment per cluster on spatial AnnData with over-representation, preranked GSEA, or ssGSEA group-mean scores. Skip when ranking spatially variable genes (use spatial-genes) or comparing conditions (use spatial-condition).\ntrigger: pathway enrichment, gene set enrichment, enrichr, GSEA, ssGSEA, GO, Reactome, MSigDB\ntags:\n- spatial\n- enrichment\n- pathway\n- gsea\n- ssgsea\n- enrichr\n- gene-set\n---\n\n# spatial-enrichment\n\n## When to use\n\nInterpret group markers with gene sets, or score group-mean expression.\nThe default is a small local OmicsClaw signature library. Hosted libraries\nrequire network access; explicit gene-set mappings and local GMT\u002FJSON files\nwork offline. Synthetic demo signatures are not curated biological pathways.\n\n## Use from a step\n\n```python\nfrom skills._sdk.notebook import load_skill, read_input, write_output\nlibrary = load_skill(\"spatial-enrichment\")\nadata = read_input(\"processed.h5ad\")\nlibrary.enrich(adata, groupby=\"leiden\", source=\"omicsclaw_core\")\nwrite_output(library.results(adata), \"tables\u002Fenrichment_results.csv\")\n```\n\nThe executable example uses explicit synthetic marker sets and checks their\nknown group enrichment.\n\nFor local libraries use `sets = read_input(\"data\u002Fsets.gmt\", reader=library.read_gene_sets)`,\nthen `library.enrich(adata, gene_sets=sets)`. `read_input` records the file hash.\n`library.fetch_gene_sets(\"KEGG_2021_Human\")` explicitly accesses the network.\nCache that mapping as JSON before a repeatable analysis, then load the cached\nfile with `read_input` and this reader. Computation accepts built-in sources or mappings.\n\n## API\n\n\u003C!-- api:begin generated from _api.py; regenerate with run.py api \u003Cskill dir> --write -->\n\n### `read_gene_sets(path)`\n\nRead a local GMT or JSON gene-set library without writing files.\n\nIn a step call read_input(path, reader=library.read_gene_sets) to record\nthe input file hash and resolve the path relative to the project root.\n\n:param path: Local GMT or JSON path supplied by read_input or the CLI.\n:returns: Term-to-gene mapping retaining its local source metadata.\n:raises FileNotFoundError: The local file is absent.\n:raises ValueError: The format or JSON structure is invalid.\n\n### `fetch_gene_sets(source, *, species='human')`\n\nFetch a remote Enrichr library; this call requires network access.\n\nCache the mapping as JSON, then use read_input(path, reader=library.read_gene_sets)\nfor repeatable analysis steps. Fetching alone does not record a file hash.\n\n:param source: Enrichr library name or an alias in references\u002Fparameters.md.\n:param species: Default human; mouse is also supported.\n:returns: Term-to-gene mapping retaining requested and resolved library names.\n:raises ValueError: Species or remote source is invalid or unavailable.\n:raises ImportError: gseapy is unavailable; use install_skill_deps.\n\n### `enrich(adata, *, method='enrichr', groupby='leiden', source='omicsclaw_core', species='human', gene_sets=None, gene_set=None, fdr_threshold=0.05, n_top_terms=20, random_state=123, **parameters)`\n\nEnrich group markers or score group means and return the same AnnData.\n\nMarker ranking reads raw when present, otherwise X; ssGSEA reads X and\nscores group means, then copies each group's score to its observations.\n\n:param adata: Log-normalized expression and group labels; modified in place.\n:param method: CLI default enrichr; gsea or ssgsea also supported.\n:param groupby: CLI default leiden; obs column defining groups.\n:param source: CLI default omicsclaw_core; only built-in libraries are resolved here.\n:param species: CLI default human; mouse changes the built-in symbols.\n:param gene_sets: Already-read term-to-gene mapping; None selects the built-in source.\n:param gene_set: Optional built-in library alias overriding source.\n:param fdr_threshold: CLI default 0.05 adjusted significance cutoff.\n:param n_top_terms: CLI default 20 reported terms or attached score columns.\n:param random_state: CLI default 123 for GSEA and ssGSEA backend randomness.\n:param parameters: Method-specific CLI options in references\u002Fparameters.md.\n:returns: The same AnnData, with canonical enrichment_results in uns.\n:raises ValueError: Groups, gene sets or numeric thresholds are invalid.\n:raises TypeError: A file path is passed; use read_gene_sets first.\n\n### `results(adata, *, significant_only=False)`\n\nReturn enrichment results, retaining missing p values for score-only methods.\n\n:param adata: AnnData returned by enrich.\n:param significant_only: Default False; True selects adjusted p values below FDR.\n:returns: A new DataFrame; ssGSEA scores do not imply significance.\n:raises ValueError: No enrichment run is recorded.\n\n### `run_info(adata, *, keep=True)`\n\nRead enrichment diagnostics, including any executed fallback method.\n\n:param adata: AnnData returned by enrich.\n:param keep: Default True; False removes transient diagnostics for CLI output.\n:returns: Diagnostic dictionary, including enrich_df and marker_df.\n:raises ValueError: No enrichment run is recorded.\n\n### `terms_figure(adata, *, n_top=20)`\n\nPlot available term scores without treating scores as calibrated p values.\n\n:param adata: AnnData returned by enrich.\n:param n_top: Default 20 rows, matching the CLI report size.\n:returns: A matplotlib Figure; an empty result is labelled explicitly.\n:raises ValueError: No run is recorded or n_top is not positive.\n\n\u003C!-- api:end -->\n\n## Methods and parameters\n\nEnrichr performs local over-representation on positive markers; GSEA uses\nper-group rankings. ssGSEA scores group means and copies each score to its\nspots. These are not independent per-spot estimates.\nDefaults include 100 GSEA permutations and seed 123. See\n[parameters](references\u002Fparameters.md) for keyword arguments and\n[methodology](references\u002Fmethodology.md) for scoring details.\n\n## Gotchas\n\n- `run_info()` records warnings and the executed method if GSEApy falls back\n  to hypergeometric, mean-rank permutation or descriptive mean scoring.\n- `fetch_gene_sets` raises when a requested remote library cannot be resolved.\n- `uns['enrichment_score_columns']` lists attached ssGSEA columns.\n- `results(significant_only=True)` excludes rows without p values.\n- `enrich` requires group labels; automatic Leiden clustering belongs to the CLI.\n\n## Inputs and outputs\n\nThe library reads log-normalized expression; Scanpy marker ranking prefers\nraw if present. Functions modify AnnData and return tables\u002FFigures. The CLI\nwrites `processed.h5ad`, `tables\u002Fenrichment_results.csv`, diagnostics, report\nand result JSON. See [output contract](references\u002Foutput_contract.md) for\nconditional outputs.\n\n## CLI\n\n```bash\npython skills\u002Fspatial\u002Fspatial-enrichment\u002Fspatial_enrichment.py --input processed.h5ad --output results\u002Fenrichment\npython skills\u002Fspatial\u002Fspatial-enrichment\u002Fspatial_enrichment.py --demo --output \u002Ftmp\u002Fenrichment_demo\n```\n\n## See also\n\nUse spatial-de for markers, spatial-genes for autocorrelation, or sc-enrichment\nfor non-spatial data.\n\n## Dependencies\n\n`anndata`, `gseapy`, `matplotlib`, `numpy`, `pandas`, `scanpy`, `scipy`, `seaborn`\n","# spatial-enrichment\n\n## When to use\n\nInterpret group markers with gene sets, or score group-mean expression.\nThe default is a small local OmicsClaw signature library. Hosted libraries\nrequire network access; explicit gene-set mappings and local GMT\u002FJSON files\nwork offline. Synthetic demo signatures are not curated biological pathways.\n\n## Use from a step\n\n```python\nfrom skills._sdk.notebook import load_skill, read_input, write_output\nlibrary = load_skill(\"spatial-enrichment\")\nadata = read_input(\"processed.h5ad\")\nlibrary.enrich(adata, groupby=\"leiden\", source=\"omicsclaw_core\")\nwrite_output(library.results(adata), \"tables\u002Fenrichment_results.csv\")\n```\n\nThe executable example uses explicit synthetic marker sets and checks their\nknown group enrichment.\n\nFor local libraries use `sets = read_input(\"data\u002Fsets.gmt\", reader=library.read_gene_sets)`,\nthen `library.enrich(adata, gene_sets=sets)`. `read_input` records the file hash.\n`library.fetch_gene_sets(\"KEGG_2021_Human\")` explicitly accesses the network.\nCache that mapping as JSON before a repeatable analysis, then load the cached\nfile with `read_input` and this reader. Computation accepts built-in sources or mappings.\n\n## API\n\n\u003C!-- api:begin generated from _api.py; regenerate with run.py api \u003Cskill dir> --write -->\n\n### `read_gene_sets(path)`\n\nRead a local GMT or JSON gene-set library without writing files.\n\nIn a step call read_input(path, reader=library.read_gene_sets) to record\nthe input file hash and resolve the path relative to the project root.\n\n:param path: Local GMT or JSON path supplied by read_input or the CLI.\n:returns: Term-to-gene mapping retaining its local source metadata.\n:raises FileNotFoundError: The local file is absent.\n:raises ValueError: The format or JSON structure is invalid.\n\n### `fetch_gene_sets(source, *, species='human')`\n\nFetch a remote Enrichr library; this call requires network access.\n\nCache the mapping as JSON, then use read_input(path, reader=library.read_gene_sets)\nfor repeatable analysis steps. Fetching alone does not record a file hash.\n\n:param source: Enrichr library name or an alias in references\u002Fparameters.md.\n:param species: Default human; mouse is also supported.\n:returns: Term-to-gene mapping retaining requested and resolved library names.\n:raises ValueError: Species or remote source is invalid or unavailable.\n:raises ImportError: gseapy is unavailable; use install_skill_deps.\n\n### `enrich(adata, *, method='enrichr', groupby='leiden', source='omicsclaw_core', species='human', gene_sets=None, gene_set=None, fdr_threshold=0.05, n_top_terms=20, random_state=123, **parameters)`\n\nEnrich group markers or score group means and return the same AnnData.\n\nMarker ranking reads raw when present, otherwise X; ssGSEA reads X and\nscores group means, then copies each group's score to its observations.\n\n:param adata: Log-normalized expression and group labels; modified in place.\n:param method: CLI default enrichr; gsea or ssgsea also supported.\n:param groupby: CLI default leiden; obs column defining groups.\n:param source: CLI default omicsclaw_core; only built-in libraries are resolved here.\n:param species: CLI default human; mouse changes the built-in symbols.\n:param gene_sets: Already-read term-to-gene mapping; None selects the built-in source.\n:param gene_set: Optional built-in library alias overriding source.\n:param fdr_threshold: CLI default 0.05 adjusted significance cutoff.\n:param n_top_terms: CLI default 20 reported terms or attached score columns.\n:param random_state: CLI default 123 for GSEA and ssGSEA backend randomness.\n:param parameters: Method-specific CLI options in references\u002Fparameters.md.\n:returns: The same AnnData, with canonical enrichment_results in uns.\n:raises ValueError: Groups, gene sets or numeric thresholds are invalid.\n:raises TypeError: A file path is passed; use read_gene_sets first.\n\n### `results(adata, *, significant_only=False)`\n\nReturn enrichment results, retaining missing p values for score-only methods.\n\n:param adata: AnnData returned by enrich.\n:param significant_only: Default False; True selects adjusted p values below FDR.\n:returns: A new DataFrame; ssGSEA scores do not imply significance.\n:raises ValueError: No enrichment run is recorded.\n\n### `run_info(adata, *, keep=True)`\n\nRead enrichment diagnostics, including any executed fallback method.\n\n:param adata: AnnData returned by enrich.\n:param keep: Default True; False removes transient diagnostics for CLI output.\n:returns: Diagnostic dictionary, including enrich_df and marker_df.\n:raises ValueError: No enrichment run is recorded.\n\n### `terms_figure(adata, *, n_top=20)`\n\nPlot available term scores without treating scores as calibrated p values.\n\n:param adata: AnnData returned by enrich.\n:param n_top: Default 20 rows, matching the CLI report size.\n:returns: A matplotlib Figure; an empty result is labelled explicitly.\n:raises ValueError: No run is recorded or n_top is not positive.\n\n\u003C!-- api:end -->\n\n## Methods and parameters\n\nEnrichr performs local over-representation on positive markers; GSEA uses\nper-group rankings. ssGSEA scores group means and copies each score to its\nspots. These are not independent per-spot estimates.\nDefaults include 100 GSEA permutations and seed 123. See\n[parameters](references\u002Fparameters.md) for keyword arguments and\n[methodology](references\u002Fmethodology.md) for scoring details.\n\n## Gotchas\n\n- `run_info()` records warnings and the executed method if GSEApy falls back\n  to hypergeometric, mean-rank permutation or descriptive mean scoring.\n- `fetch_gene_sets` raises when a requested remote library cannot be resolved.\n- `uns['enrichment_score_columns']` lists attached ssGSEA columns.\n- `results(significant_only=True)` excludes rows without p values.\n- `enrich` requires group labels; automatic Leiden clustering belongs to the CLI.\n\n## Inputs and outputs\n\nThe library reads log-normalized expression; Scanpy marker ranking prefers\nraw if present. Functions modify AnnData and return tables\u002FFigures. The CLI\nwrites `processed.h5ad`, `tables\u002Fenrichment_results.csv`, diagnostics, report\nand result JSON. See [output contract](references\u002Foutput_contract.md) for\nconditional outputs.\n\n## CLI\n\n```bash\npython skills\u002Fspatial\u002Fspatial-enrichment\u002Fspatial_enrichment.py --input processed.h5ad --output results\u002Fenrichment\npython skills\u002Fspatial\u002Fspatial-enrichment\u002Fspatial_enrichment.py --demo --output \u002Ftmp\u002Fenrichment_demo\n```\n\n## See also\n\nUse spatial-de for markers, spatial-genes for autocorrelation, or sc-enrichment\nfor non-spatial data.\n\n## Dependencies\n\n`anndata`, `gseapy`, `matplotlib`, `numpy`, `pandas`, `scanpy`, `scipy`, `seaborn`\n",{"name":5,"tags":38,"trigger":41,"description":7},[39,18,28,40,30,31,32],"spatial","gsea","pathway enrichment, gene set enrichment, enrichr, GSEA, ssGSEA, GO, Reactome, MSigDB","main","90a3bec3e6549bc33dddbf67e4b23869736c49d1","skills\u002Fspatial\u002Fspatial-enrichment",27,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw","https:\u002F\u002FTianGzlab.github.io\u002FOmicsClaw\u002F","https:\u002F\u002Fgithub.com\u002FTianGzlab","2026-10-08 01:36:11",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add TianGzlab\u002FOmicsClaw --skill spatial-enrichment",{"tool":56,"command":57},"bunx","bunx skills add TianGzlab\u002FOmicsClaw --skill spatial-enrichment",{"tool":59,"command":60},"pnpm","pnpm dlx skills add TianGzlab\u002FOmicsClaw --skill spatial-enrichment","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002FSKILL.md",true,[64,70,74,80,86,90,94,98,102,106,110],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"_api.py","SCRIPT","脚本",7565,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002F_api.py",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"examples\u002Fexample_step.py",1106,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Fexamples\u002Fexample_step.py",{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"r_visualization\u002Fenrichment_publication_template.R","OTHER","其他",3358,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Fr_visualization\u002Fenrichment_publication_template.R",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"r_visualization\u002FREADME.md","REFERENCE","参考文档",1748,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Fr_visualization\u002FREADME.md",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fmethodology.md",6961,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Freferences\u002Fmethodology.md",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Foutput_contract.md",2093,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Freferences\u002Foutput_contract.md",{"path":95,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fparameters.md",5269,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Freferences\u002Fparameters.md",{"path":99,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":100,"sourceHtmlUrl":101},"spatial_enrichment.py",63799,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Fspatial_enrichment.py",{"path":103,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":104,"sourceHtmlUrl":105},"tests\u002Ftest_api.py",6203,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Ftests\u002Ftest_api.py",{"path":107,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":108,"sourceHtmlUrl":109},"tests\u002Ftest_reader_step.py",1775,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Ftests\u002Ftest_reader_step.py",{"path":111,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":112,"sourceHtmlUrl":113},"tests\u002Ftest_spatial_enrichment.py",7616,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-enrichment\u002Ftests\u002Ftest_spatial_enrichment.py",[115,133,145,162,187,209],{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":126,"publishedAt":33},"01M6DTP4X225Q92RMY8XXHPCTT","demo-skill","A fixture skill for the skill environment tests. Use it for nothing else.","https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Ftests\u002Fskillenv\u002Ffixtures\u002Fskills\u002Fdemo\u002Fdemo-skill\u002FSKILL.md",[121],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[127,128,129,130,131,24,132],"demo skill","demo","tests","fixture","fixture skill","environment",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":33},"01M6DTP28JTWQK3HHXDNQV8BBV","fake-domains","Test fixture for the golden deployment in tests\u002Fentry. Load never; it has no script.","https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Ftests\u002Fentry\u002Ffake_skills\u002Fspatial\u002Ffake-domains\u002FSKILL.md",[],[140,141,142,129,130,143,144],"domains","fake domains","deployment","never","test",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":152,"publishedAt":33},"01M6DTNZ4AMWKTME1T18K5C643","replace-me-skill","Load when copying this directory to bootstrap a new OmicsClaw skill. Skip when an existing skill already covers the request.","https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Ftemplates\u002Fskill\u002FSKILL.md",[151],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},[153,154,155,156,157,158,159,160,161],"me","replace me skill","template","directory","skill template","existing skill","new skill","bootstrap","scaffold",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":33},"01M6DTNV63MTD0Q6YRC52F0B1Y","spatial-velocity","Load when estimating RNA velocity on a spatial AnnData with `layers[\"spliced\"]` + `layers[\"unspliced\"]` via scVelo (stochastic \u002F deterministic \u002F dynamical) or veloVI (deep generative). Skip when input lacks the spliced\u002Funspliced layers (must be quantified upstream by velocyto \u002F kb-python \u002F STARsolo); non-spatial scRNA velocity (use sc-velocity).","https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-velocity\u002FSKILL.md",[],[169,170,19,171,172,173,174,175,176,177,178,179,180,181,182,183,184,24,185,186],"velocity","spatial velocity","scvelo","input","starsolo","time","deep","RNA","kb-python","via","velocyto","rna-velocity","velovi","dynamics","upstream","kb","python","deterministic",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":193,"publishedAt":33},"01M6DTNPMR227NAT8QFY620YDW","spatial-trajectory","Load when inferring pseudotime \u002F lineage trajectories on a preprocessed spatial AnnData via DPT (default — diffusion pseudotime), CellRank (terminal-state + fate-probability), or Palantir (waypoint branch probabilities). Skip when the data has spliced\u002Funspliced layers and you want velocity-driven dynamics (use spatial-velocity); non-spatial scRNA pseudotime (use sc-pseudotime).","https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-trajectory\u002FSKILL.md",[],[19,194,195,196,197,198,199,200,178,201,202,203,204,205,169,206,24,207,23,208],"trajectory","spatial trajectory","state","terminal","lineage","diffusion","cellrank","palantir","dpt","pseudotime","probability","cell","default","branch","data",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":215,"publishedAt":33},"01M6DTNJEYFT33P84DGHDNXW95","spatial-statistics","Load when running spatial autocorrelation \u002F hotspot \u002F co-occurrence \u002F neighbourhood-enrichment \u002F Ripley K stats on a clustered spatial AnnData via squidpy. Skip when ranking spatially variable genes (use spatial-genes); tissue domain detection (use spatial-domains).","https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fspatial\u002Fspatial-statistics\u002FSKILL.md",[],[216,217,19,178,218,219,220,221,222,223,140,25,224,225,226,24,23,227,18,228],"spatial statistics","statistics","nhood-enrichment","co-occurrence","ripley","geary","moran","neighbourhood","autocorrelation","local","domain","detection","stats"]