空间转录组全流程复现

SKILL效率

原名 空间转录组pipeline-PDAC顶刊复现 · 标识 pdac-spatial-pipeline

效率 未标注权限 许可证不明确
安装这个技能

面向 Visium 多切片数据,串联质控、整合、聚类、反卷积与 niche 分析,按顶刊流程输出可用于下游通讯分析的结果。

一句话选型结论

按资料字段整理

空间转录组全流程复现是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_30836134/pdac-spatial-pipeline
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_30836134仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量7.1 KBSKILL.md 原文大小,越大说明说明书写得越细

能做什么

0 项能力
上游给出的能力概览与适用场景
多切片空间数据整合空间反卷积分析niche 层次聚类重构

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
空间转录组全流程复现当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

7.1 KB
模型实际读到的说明书原文,来自技能仓库

> 作者 (author): LKP <kunpeng.liao@abiosciences.com>
> Skill 及脚本参数来源: Chen et al., 2025, Cancer Cell 43, 1656–1676, <https://doi.org/10.1016/j.ccell.2025.06.020>

PDAC 空间转录组全景复现 Pipeline

适用于:多切片 Visium(CytAssist/fresh/FFPE 混合,本例 21 切片 81,714 spots)从 h5+tissue_positions 到 niche/邻域注释的全流程。

0. 全局约定

Sys.setenv(PDAC_PROJECT_ROOT = &quot;D:/项目根目录&quot;)
result_root &lt;- file.path(Sys.getenv(&quot;PDAC_PROJECT_ROOT&quot;), &quot;复现分析结果&quot;)
set.seed(2023)
options(future.globals.maxSize = 100 * 1024^3)
future::plan(&quot;sequential&quot;)

对象演进链:spatial_01_sct_&lt;slide&gt; → 02_merged_sct → 03_pca → 04_harmony → 05_clustered → 06_rctd → 07_niches → 08_nerve_vicinity_proxy,全部 saveRDS(compress = FALSE)。

1. 输入预检

# 文件名解析:^(GSM[0-9]+)_(PA[0-9]+)(?:-([0-9]+))?_  → gsm/patient/replicate
# 平台推断:tar 包含 cytassist_image.tiff → &quot;CytAssist&quot;;
#           否则 feature_count &gt; 25000 → &quot;Visium_fresh&quot;,否则 &quot;Visium_FFPE&quot;
# 坐标文件:优先 spatial/tissue_positions.csv,回退无表头 tissue_positions_list.csv(手动命名6列)
# 输出:tables/spatial_input_manifest.csv + SHA256 清单

2. 逐切片预处理(SCT)

# 单切片读入
counts &lt;- Read10X_h5(h5_path, use.names = TRUE, unique.features = TRUE)[[&quot;Gene Expression&quot;]]
img &lt;- Read10X_Image(image.dir, assay = &quot;Spatial&quot;,
                     slice = paste0(&quot;slice_&quot;, gsub(&quot;-&quot;, &quot;_&quot;, sample_id)),
                     image.name = &quot;tissue_lowres_image.png&quot;, filter.matrix = TRUE)
sobj &lt;- CreateSeuratObject(counts, assay = &quot;Spatial&quot;, project = sample_id)
sobj &lt;- RenameCells(sobj, add.cell.id = sample_id)  # 跨切片条码加前缀
# SCT(逐切片,关键:回归 nCount_Spatial)
sobj &lt;- SCTransform(sobj, assay = &quot;Spatial&quot;, new.assay.name = &quot;SCT&quot;,
                    vars.to.regress = &quot;nCount_Spatial&quot;, seed.use = 2023)

3. 合并与整合(Harmony)

merged &lt;- merge(x = slides[[1]], y = slides[-1], merge.data = TRUE)
DefaultAssay(merged) &lt;- &quot;SCT&quot;
VariableFeatures(merged) &lt;- Reduce(union, lapply(slides, VariableFeatures))  # 各片HVG并集
merged &lt;- RunPCA(merged, assay = &quot;SCT&quot;, npcs = 50, seed.use = 2023)
merged &lt;- RunHarmony(merged, group.by.vars = c(&quot;orig.ident&quot;, &quot;technique_type&quot;),
                     reduction.use = &quot;pca&quot;, dims.use = 1:30, reduction.save = &quot;harmony&quot;)
merged &lt;- FindNeighbors(merged, reduction = &quot;harmony&quot;, dims = 1:30)
merged &lt;- FindClusters(merged, resolution = 2, algorithm = 1, random.seed = 2023)
merged &lt;- RunUMAP(merged, reduction = &quot;harmony&quot;, dims = 1:30, seed.use = 2023)

4. RCTD 参考构建(监督标签 + spacexr)

# 标签层级:作者marker表监督打分(每cluster取log2FC降序top30,过滤log2FC&gt;=0.25且pct.1&gt;=0.1,
#           权重=max(avg_log2FC, 0.25)),权重归一化后与RNA data层做crossprod,取最高分cluster
# 手工signature补充:Endothelial 3型(E01_Art-PECAM1等各5基因)
# 直接映射5型:Acinar→Acinar_PRSS1、Endocrine→Endocrine_CHGB、NK→NK_KLRF1、Platelet→Platelet_PPBP、Stellate→Stellate_RGS5
# 参考对象(eligible: n_umi &gt;= 100 且标签非NA)
ref &lt;- spacexr::Reference(counts, clusters = cell_types, nUMI = nUMI,
                          require_int = TRUE, n_max_cells = 10000, min_UMI = 100)

基因名修复:marker 不在矩阵行名时逐个剥离尾部数字直到命中(解决 10x 基因名重复后缀)。

5. 逐片 RCTD 反卷积

# 稀有型过滤:spacexr create.RCTD 要求每型 &gt;= 25 细胞,不足的型剔除后重建 Reference
counts_slice &lt;- LayerData(spatial, assay = &quot;Spatial&quot;,
                          layer = paste0(&quot;counts.&quot;, sample_id))  # Seurat5 分层关键!
coords &lt;- GetTissueCoordinates(sobj, image = slice_name)[, 1:2]  # 取前2数值列为 x/y
puck &lt;- spacexr::SpatialRNA(coords, counts, nUMI = colSums(counts), require_int = TRUE)
rctd &lt;- spacexr::create.RCTD(puck, ref, max_cores = 8, keep_reference = FALSE)
rctd &lt;- spacexr::run.RCTD(rctd, doublet_mode = &quot;full&quot;)  # 论文式全模式
# 权重行归一化(强制行和&gt;0)

6. 权重合并注入 Seurat

# 各片权重列并集对齐、缺失补0、rbind 后整体行归一化
# major 层 = 亚型按 (cell_type→major) 映射列求和
# 注入 assay:手工 new(Class=&quot;Assay&quot;, counts=权重转置, key=&quot;rctd_&quot;) 保留下划线feature名
spatial[[&quot;RCTD&quot;]]  &lt;- 手工Assay(亚型权重)   # 之后 ScaleData(assay=&quot;RCTD&quot;)
spatial[[&quot;RCTD2&quot;]] &lt;- 手工Assay(major权重)

7. Niche 重构(层次聚类 + 一一指派)

# 组成矩阵:RCTD counts 转置按行归一化(每spot亚型比例和=1),按 Louvain 簇求 colMeans
comp_scaled &lt;- scale(composition)
hc &lt;- hclust(dist(comp_scaled), method = &quot;ward.D2&quot;)
groups &lt;- cutree(hc, k = 12)  # 12组固定
# Archetype打分:config/spatial_niche_archetypes.csv(niche, feature_regex, weight),
#   分数 = 组内匹配regex的亚型比例之和 × weight 累加
# 一一指派:分数矩阵整体减全局最小值后 clue::solve_LSAP(shifted, maximum=TRUE) 匈牙利算法
spatial$niche3 &lt;- assigned_niche  # factor 按名称排序

8. 神经邻近(vicinity)分层

# Visium 图:FNN::get.knn(coords, k=12) 候选边;
#   边保留阈值 = median(第1近邻距离) × 1.25;igraph 无向图 simplify
# 种子:niche3 == &quot;N12_Nerve&quot; 的 spots
# 恶性分数:恶性ductal亚型(D02/D04/D07/D08/D09)比例之和
# 侵袭二分类:kmeans(malignant_fraction, centers=2, nstart=50),中心高者=invaded_proxy
# 图距离:BFS 距离(虚拟超节点连全部种子后 distances()-1),max_layer=5
# 区域:layer 0=nerve;1:2=juxta-neural_1-2;3:5=peri-neural_3-5

9. 下游输入导出

# COMMOT 元数据:spot_id/orig.ident/patient/NI/niche3(+nerve_proxy_class/nerve_layer/nerve_region)
# barcode 还原:substring(spot_id, nchar(orig.ident)+2)  # 去掉 sample_id_ 前缀

10. 下游子分析

分析 Skill
COMMOT 空间通讯 tool-commot
MISTy 多视图 tool-misty
niche/vicinity 详参 tool-spatial-niche
CellChat / NicheNet tool-cellchat / tool-nichenet

常见坑

  1. Seurat 5 分层取数:merged 对象 Spatial counts 按 counts.&lt;sample_id&gt; 分层,必须 LayerData(layer=...) 指定
  2. RCTD 稀有型:每型 <25 细胞导致 create.RCTD 崩溃,先剔除并记录审计表
  3. 下划线 assay:CreateAssayObject 会把 _ 换成 -,RCTD 亚型名含下划线必须手工 new(&quot;Assay&quot;)
  4. niche 是层次聚类不是 KMeans(ward.D2 + cutree k=12);KMeans 仅用于侵袭二分类
  5. vicinity 半径是图跳数(BFS 层)而非欧氏微米

常见问题

5 问
答案由本站依据条目字段整理
空间转录组全流程复现怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_30836134/pdac-spatial-pipeline。安装方式为未标注。装完刷新技能列表或重开客户端。

空间转录组全流程复现支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

空间转录组全流程复现权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

空间转录组全流程复现收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

空间转录组全流程复现用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。