[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DTHRVBK3BDSS7NPPDKKF0S":3,"skill-same:01M6DTHRVBK3BDSS7NPPDKKF0S":113},{"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":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M6DTHRVBK3BDSS7NPPDKKF0S","sc-grn",null,"Load when inferring TF → target gene regulatory networks on a normalised scRNA AnnData via pySCENIC (GRNBoost2 + cisTarget + AUCell) or correlation-based GRN fallback (when arboreto is unavailable, in --demo, or with --allow-simplified-grn). Skip when computing ligand-receptor cell-cell signalling (use sc-cell-communication); predicting genetic-KO effects (use sc-in-silico-perturbation).","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\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"sc grn","cell-communication","cistarget","aucell","grnboost2","pyscenic","scenic","gene-regulatory-network","grn","ligand-receptor","communication","singlecell","factor","fallback","regulatory","use","networks","correlation","network","demo","2026-11-10 10:12:30",false,"---\nname: sc-grn\ndescription: Load when inferring TF → target gene regulatory networks on a normalised scRNA AnnData via\n  pySCENIC (GRNBoost2 + cisTarget + AUCell) or correlation-based GRN fallback (when arboreto is unavailable,\n  in --demo, or with --allow-simplified-grn). Skip when computing ligand-receptor cell-cell signalling\n  (use sc-cell-communication); predicting genetic-KO effects (use sc-in-silico-perturbation).\ntrigger: grn, gene regulatory, scenic, pyscenic, regulon, transcription factor, grnboost\ntags:\n- singlecell\n- scrna\n- grn\n- gene-regulatory-network\n- scenic\n- pyscenic\n- grnboost2\n- aucell\n- cistarget\n---\n\n# sc-grn\n\n## Use from a step\n\n```python\ngrn = load_skill(\"sc-grn\")\nadata = read_input(\"expression.h5ad\")\nedges = grn.infer_adjacencies(adata, tfs=[\"SPI1\", \"IRF8\", \"STAT1\"],\n                              method=\"correlation\", n_top=50)\nregulons = grn.regulons_from_adjacencies(edges)\nscores = grn.score_regulons(adata, regulons, method=\"mean\")\nwrite_output(edges, \"tables\u002Fadjacencies.csv\")\nwrite_output(scores, \"tables\u002Fmean_target_expression.csv\")\n```\n\nFunctions do not annotate the input automatically. The PBMC example in\n`examples\u002Fexample_step.py` uses caller-supplied TFs and explicitly labeled\nmean-expression scores.\n\n## API\n\n\u003C!-- api:begin generated from _api.py; regenerate with run.py api \u003Cskill dir> --write -->\n\n### `infer_adjacencies(adata, *, tfs, method: str='grnboost2', layer: str | None=None, random_state: int=42, n_top: int=50, n_jobs: int=4) -> pd.DataFrame`\n\nReturn TF, target and importance columns using the caller's TF list.\n\ngrnboost2 retains the CLI's fallback to absolute Spearman correlation\nwhen its backend fails or returns no edges. Correlation excludes supplied\nTFs from candidate targets and keeps n_top targets per TF. No motif\nvalidation occurs here; a warning and run_info report any fallback.\n\n:param tfs: TF names; only names present in the selected matrix are used.\n:param method: grnboost2 (default) or correlation.\n:param layer: Explicit expression layer; None prefers counts, aligned raw, then X.\n:param random_state: GRNBoost2 seed, default 42. Correlation is deterministic.\n:param n_top: Correlation targets per TF, default 50.\n:param n_jobs: GRNBoost2 workers, default 4.\n:returns: A new DataFrame; input AnnData is not modified.\n:raises ValueError: The method or budget is invalid, or no TF overlaps.\n\n### `run_info(adjacencies: pd.DataFrame, *, keep: bool=True) -> dict`\n\nReturn an independent backend\u002Ffallback record; keep=False removes it from attrs.\n\n### `prune_regulons(adjacencies: pd.DataFrame, *, database_glob: str, motif_annotations: str, n_top: int=50, rank_threshold: int=5000, auc_threshold: float=0.05, nes_threshold: float=3.0, n_jobs: int=4) -> list[dict]`\n\nReturn motif-pruned regulon dictionaries using the existing cisTarget bridge.\n\nRequires pySCENIC and caller-provided databases and motif annotations.\nThresholds retain the CLI defaults: rank 5000, AUC 0.05, NES 3 and 50\ntargets. Backend and resource errors propagate; no data are downloaded.\n\n### `regulons_from_adjacencies(adjacencies: pd.DataFrame, *, n_top: int=50) -> list[dict]`\n\nGroup the strongest edges per TF without motif validation; default 50 targets.\n\n### `score_regulons(adata, regulons: list[dict], *, method: str='aucell', random_state: int=42, n_jobs: int=4) -> pd.DataFrame`\n\nReturn per-cell regulon scores without annotating the input.\n\naucell requires pySCENIC and ranks count-layer\u002Faligned-raw\u002FX expression.\nmean averages each regulon's targets in X, matching the old simplified\nCLI. It is not AUCell, an enrichment statistic, or motif validation.\n\n:param method: aucell (default) or mean; no automatic scoring fallback.\n:param random_state: AUCell seed, default 42; mean is deterministic.\n:param n_jobs: AUCell workers, default 4.\n:returns: DataFrame indexed by cell; attrs names the scoring_method and is_aucell.\n:raises ValueError: The scoring method is unknown.\n:raises ImportError: AUCell's optional backend is unavailable.\n\n### `regulon_heatmap_figure(scores: pd.DataFrame, *, groups: pd.Series | None=None)`\n\nReturn a score heatmap, optionally averaged over aligned cell groups.\n\n\u003C!-- api:end -->\n\n## Methods and parameters\n\n`infer_adjacencies` defaults to GRNBoost2, with `random_state=42` and\n`n_jobs=4`. Its legacy fallback is absolute Spearman correlation, retaining\n`n_top=50` targets per TF. `run_info(edges)` records the actual method and\nfallback reason, also emitted as a warning. `method=\"correlation\"` runs directly without arboreto.\n\nThe simplified path now respects the caller's TF list. Correlation gives\nco-expression candidates, not validated regulatory edges.\n`regulons_from_adjacencies` only groups these candidates;\n`prune_regulons` needs pySCENIC, caller-provided cisTarget databases and\nmotif annotations. It retains rank threshold 5000, AUC threshold 0.05 and\nNES threshold 3; it does not download resources.\n\n`score_regulons(method=\"aucell\")` requires pySCENIC and uses seed 42.\n`method=\"mean\"` averages target expression in X, matching the old simplified\nCLI. Mean expression is not AUCell and has no enrichment p-value.\n\n## Gotchas\n\n- Inference selects an explicit layer, else counts, aligned raw, then X.\n  Mean scoring uses X; verify its normalization separately (`_api.py:15`, `_api.py:98`).\n- `run_info` is stored in DataFrame attrs; CSV does not preserve attrs.\n  Save the diagnostics separately when exporting edges (`_api.py:61`).\n- GRNBoost2\u002Fbackend failure can trigger correlation; inspect the record.\n  The full pySCENIC path also needs external resources and was not validated\n  merely by running the correlation example (`_api.py:68`).\n- The CLI preserves legacy `grn_auc_matrix.csv` and `regulon_\u003CTF>` names\n  for compatibility even for mean scores. Check `result.json[\"data\"][\"scoring_method\"]`.\n- Correlation targets exclude the TFs supplied in the same call.\n  No TF overlap raises an error in the API (`_api.py:15`).\n\n## Inputs & Outputs\n\nThe API returns adjacency tables, regulon dictionaries, score tables and\nFigures. The CLI writes `processed.h5ad`, `tables\u002Fgrn_adjacencies.csv`,\n`tables\u002Fgrn_regulons.csv`, `tables\u002Fgrn_regulon_targets.csv`,\n`tables\u002Fgrn_auc_matrix.csv`, `report.md` and `result.json`.\nPlots and their figure-data manifests depend on available scores.\n\n## Key CLI\n\n```bash\npython skills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Fsc_grn.py --demo --output \u002Ftmp\u002Fsc_grn_demo\npython skills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Fsc_grn.py --input expression.h5ad --tf-list tfs.txt --allow-simplified-grn --output results\u002F\npython skills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Fsc_grn.py --input expression.h5ad --tf-list tfs.txt --db '\u002Frefs\u002F*.feather' --motif motifs.tbl --output results\u002F\n```\n\n## Dependencies\n\n`anndata`, `arboreto`, `dask`, `matplotlib`, `networkx`, `numpy`, `pandas`, `pyscenic`, `scanpy`, `scikit-learn`, `scipy`, `seaborn`\n","# sc-grn\n\n## Use from a step\n\n```python\ngrn = load_skill(\"sc-grn\")\nadata = read_input(\"expression.h5ad\")\nedges = grn.infer_adjacencies(adata, tfs=[\"SPI1\", \"IRF8\", \"STAT1\"],\n                              method=\"correlation\", n_top=50)\nregulons = grn.regulons_from_adjacencies(edges)\nscores = grn.score_regulons(adata, regulons, method=\"mean\")\nwrite_output(edges, \"tables\u002Fadjacencies.csv\")\nwrite_output(scores, \"tables\u002Fmean_target_expression.csv\")\n```\n\nFunctions do not annotate the input automatically. The PBMC example in\n`examples\u002Fexample_step.py` uses caller-supplied TFs and explicitly labeled\nmean-expression scores.\n\n## API\n\n\u003C!-- api:begin generated from _api.py; regenerate with run.py api \u003Cskill dir> --write -->\n\n### `infer_adjacencies(adata, *, tfs, method: str='grnboost2', layer: str | None=None, random_state: int=42, n_top: int=50, n_jobs: int=4) -> pd.DataFrame`\n\nReturn TF, target and importance columns using the caller's TF list.\n\ngrnboost2 retains the CLI's fallback to absolute Spearman correlation\nwhen its backend fails or returns no edges. Correlation excludes supplied\nTFs from candidate targets and keeps n_top targets per TF. No motif\nvalidation occurs here; a warning and run_info report any fallback.\n\n:param tfs: TF names; only names present in the selected matrix are used.\n:param method: grnboost2 (default) or correlation.\n:param layer: Explicit expression layer; None prefers counts, aligned raw, then X.\n:param random_state: GRNBoost2 seed, default 42. Correlation is deterministic.\n:param n_top: Correlation targets per TF, default 50.\n:param n_jobs: GRNBoost2 workers, default 4.\n:returns: A new DataFrame; input AnnData is not modified.\n:raises ValueError: The method or budget is invalid, or no TF overlaps.\n\n### `run_info(adjacencies: pd.DataFrame, *, keep: bool=True) -> dict`\n\nReturn an independent backend\u002Ffallback record; keep=False removes it from attrs.\n\n### `prune_regulons(adjacencies: pd.DataFrame, *, database_glob: str, motif_annotations: str, n_top: int=50, rank_threshold: int=5000, auc_threshold: float=0.05, nes_threshold: float=3.0, n_jobs: int=4) -> list[dict]`\n\nReturn motif-pruned regulon dictionaries using the existing cisTarget bridge.\n\nRequires pySCENIC and caller-provided databases and motif annotations.\nThresholds retain the CLI defaults: rank 5000, AUC 0.05, NES 3 and 50\ntargets. Backend and resource errors propagate; no data are downloaded.\n\n### `regulons_from_adjacencies(adjacencies: pd.DataFrame, *, n_top: int=50) -> list[dict]`\n\nGroup the strongest edges per TF without motif validation; default 50 targets.\n\n### `score_regulons(adata, regulons: list[dict], *, method: str='aucell', random_state: int=42, n_jobs: int=4) -> pd.DataFrame`\n\nReturn per-cell regulon scores without annotating the input.\n\naucell requires pySCENIC and ranks count-layer\u002Faligned-raw\u002FX expression.\nmean averages each regulon's targets in X, matching the old simplified\nCLI. It is not AUCell, an enrichment statistic, or motif validation.\n\n:param method: aucell (default) or mean; no automatic scoring fallback.\n:param random_state: AUCell seed, default 42; mean is deterministic.\n:param n_jobs: AUCell workers, default 4.\n:returns: DataFrame indexed by cell; attrs names the scoring_method and is_aucell.\n:raises ValueError: The scoring method is unknown.\n:raises ImportError: AUCell's optional backend is unavailable.\n\n### `regulon_heatmap_figure(scores: pd.DataFrame, *, groups: pd.Series | None=None)`\n\nReturn a score heatmap, optionally averaged over aligned cell groups.\n\n\u003C!-- api:end -->\n\n## Methods and parameters\n\n`infer_adjacencies` defaults to GRNBoost2, with `random_state=42` and\n`n_jobs=4`. Its legacy fallback is absolute Spearman correlation, retaining\n`n_top=50` targets per TF. `run_info(edges)` records the actual method and\nfallback reason, also emitted as a warning. `method=\"correlation\"` runs directly without arboreto.\n\nThe simplified path now respects the caller's TF list. Correlation gives\nco-expression candidates, not validated regulatory edges.\n`regulons_from_adjacencies` only groups these candidates;\n`prune_regulons` needs pySCENIC, caller-provided cisTarget databases and\nmotif annotations. It retains rank threshold 5000, AUC threshold 0.05 and\nNES threshold 3; it does not download resources.\n\n`score_regulons(method=\"aucell\")` requires pySCENIC and uses seed 42.\n`method=\"mean\"` averages target expression in X, matching the old simplified\nCLI. Mean expression is not AUCell and has no enrichment p-value.\n\n## Gotchas\n\n- Inference selects an explicit layer, else counts, aligned raw, then X.\n  Mean scoring uses X; verify its normalization separately (`_api.py:15`, `_api.py:98`).\n- `run_info` is stored in DataFrame attrs; CSV does not preserve attrs.\n  Save the diagnostics separately when exporting edges (`_api.py:61`).\n- GRNBoost2\u002Fbackend failure can trigger correlation; inspect the record.\n  The full pySCENIC path also needs external resources and was not validated\n  merely by running the correlation example (`_api.py:68`).\n- The CLI preserves legacy `grn_auc_matrix.csv` and `regulon_\u003CTF>` names\n  for compatibility even for mean scores. Check `result.json[\"data\"][\"scoring_method\"]`.\n- Correlation targets exclude the TFs supplied in the same call.\n  No TF overlap raises an error in the API (`_api.py:15`).\n\n## Inputs & Outputs\n\nThe API returns adjacency tables, regulon dictionaries, score tables and\nFigures. The CLI writes `processed.h5ad`, `tables\u002Fgrn_adjacencies.csv`,\n`tables\u002Fgrn_regulons.csv`, `tables\u002Fgrn_regulon_targets.csv`,\n`tables\u002Fgrn_auc_matrix.csv`, `report.md` and `result.json`.\nPlots and their figure-data manifests depend on available scores.\n\n## Key CLI\n\n```bash\npython skills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Fsc_grn.py --demo --output \u002Ftmp\u002Fsc_grn_demo\npython skills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Fsc_grn.py --input expression.h5ad --tf-list tfs.txt --allow-simplified-grn --output results\u002F\npython skills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Fsc_grn.py --input expression.h5ad --tf-list tfs.txt --db '\u002Frefs\u002F*.feather' --motif motifs.tbl --output results\u002F\n```\n\n## Dependencies\n\n`anndata`, `arboreto`, `dask`, `matplotlib`, `networkx`, `numpy`, `pandas`, `pyscenic`, `scanpy`, `scikit-learn`, `scipy`, `seaborn`\n",{"name":5,"tags":48,"trigger":50,"description":7},[34,49,31,30,29,28,27,26,25],"scrna","grn, gene regulatory, scenic, pyscenic, regulon, transcription factor, grnboost","main","90a3bec3e6549bc33dddbf67e4b23869736c49d1","skills\u002Fsinglecell\u002Fscrna\u002Fsc-grn",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":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add TianGzlab\u002FOmicsClaw --skill sc-grn",{"tool":65,"command":66},"bunx","bunx skills add TianGzlab\u002FOmicsClaw --skill sc-grn",{"tool":68,"command":69},"pnpm","pnpm dlx skills add TianGzlab\u002FOmicsClaw --skill sc-grn","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002FSKILL.md",true,[73,79,83,89,93,97,101,105,109],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"_api.py","SCRIPT","脚本",7237,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002F_api.py",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"examples\u002Fexample_step.py",1069,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Fexamples\u002Fexample_step.py",{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"index.json","REFERENCE","参考文档",758,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Flinux\u002Fforensics\u002Fmemory\u002Fanalysis\u002Fsiem-integration\u002Fdetect\u002Findex.json",{"path":90,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fmethodology.md",4796,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Freferences\u002Fmethodology.md",{"path":94,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Foutput_contract.md",892,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Freferences\u002Foutput_contract.md",{"path":98,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fparameters.md",891,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Freferences\u002Fparameters.md",{"path":102,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fr_visualization.md",486,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Freferences\u002Fr_visualization.md",{"path":106,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":107,"sourceHtmlUrl":108},"sc_grn.py",36063,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Fsc_grn.py",{"path":110,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":111,"sourceHtmlUrl":112},"tests\u002Ftest_grn_api.py",2569,"https:\u002F\u002Fgithub.com\u002FTianGzlab\u002FOmicsClaw\u002Fblob\u002Fmain\u002Fskills\u002Fsinglecell\u002Fscrna\u002Fsc-grn\u002Ftests\u002Ftest_grn_api.py",[114,129,141,158,184,207],{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":123,"publishedAt":43},"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",[120],{"categoryNo":121,"categoryName":122,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[124,42,125,126,127,38,128],"demo skill","tests","fixture","fixture skill","environment",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":43},"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",[],[136,137,138,125,126,139,140],"domains","fake domains","deployment","never","test",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":43},"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",[147],{"categoryNo":121,"categoryName":122,"taxonomyType":20,"taxonomyTypeDesc":21},[149,150,151,152,153,154,155,156,157],"me","replace me skill","template","directory","skill template","existing skill","new skill","bootstrap","scaffold",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":43},"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",[],[165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,38,182,183],"velocity","spatial velocity","Spatial","scvelo","input","starsolo","time","deep","RNA","kb-python","via","velocyto","rna-velocity","velovi","dynamics","upstream","kb","python","deterministic",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":190,"publishedAt":43},"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",[],[167,191,192,193,194,195,196,197,175,198,199,200,201,202,165,203,38,204,205,206],"trajectory","spatial trajectory","state","terminal","lineage","diffusion","cellrank","palantir","dpt","pseudotime","probability","cell","default","branch","anndata","data",{"skillNo":208,"name":209,"nameZh":6,"description":210,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":211,"categories":212,"keywords":213,"publishedAt":43},"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",[],[214,215,167,175,216,217,218,219,220,221,136,222,223,224,225,38,205,226,227,228],"spatial statistics","statistics","nhood-enrichment","co-occurrence","ripley","geary","moran","neighbourhood","ranking","autocorrelation","local","domain","detection","enrichment","stats"]