← 返回 Skill 列表
extension
分类: 数据与分析无需 API Key

mistyR空间分析-PDAC顶刊复现

mistyR多视图空间建模工具方法:RCTD细胞比例作表达输入、intra+paraview(l=5中位spot间距)两视图、run_misty逐切片collect_results、importance cutoff=0.5、cluster_leiden(CPM,res=0.7)社群检测与1.8.1/1.10输出兼容。Invoke when空间多视图建模、细胞类型间互作重要性或MISTy结果聚合。

person作者: user_30836134hubcommunity

作者 (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

MISTy 多视图空间建模(mistyR)

解释每 spot 特征(如细胞类型比例)由本 spot(intra)与邻域(para)共同决定的程度,输出 importance 矩阵。

版本与兼容

# 论文基线 mistyR 1.8.1;1.10+ 输出结构变化,聚合代码需双结构兼容:
# 1.8.x collect_results 返回长表;>=1.10 返回命名 list 宽表

1. 输入:细胞类型比例矩阵(非基因表达)

# RCTD counts 转置按行归一化 → 细胞类型比例作"表达"
expr <- t(LayerData(spatial, assay = "RCTD", layer = "counts"))
expr <- expr / rowSums(expr)
# 细胞类型名含连字符会被 ranger formula 拒绝:make.names(make.unique()) 后映射回原名
# 坐标归一化:以中位最近邻 spot 间距为单位(FNN::get.knn(k=1) 取中位距离除之)

2. 两视图管道(逐切片)

library(mistyR); library(future)
future::plan(future::sequential)
set.seed(2023L + slice_index)   # 每片独立种子
views <- create_initial_view(expression, unique.id = sample_id) |>
  mistyR::add_paraview(positions_normalized, l = 5)  # 邻域半径 = 5 个中位 spot 间距
run_misty(views, results.folder = file.path(misty_dir, sample_id))

3. 聚合与重要性提取

results <- collect_results(all_sample_folders)   # 21 切片
# paraview 识别:view 名 grepl("para.*5") 且唯一
# importance 矩阵:Target(行) × Predictor(列) 的预测贡献
importance <- misty_importance_matrix(results, view = para_view)

4. 社群检测(Fig S6C 口径)

library(igraph)
# 邻接:graph_from_adjacency_matrix(mode="plus", weighted=TRUE, diag=FALSE)
# 阈值:Importance < 0.5 置 0;删 0 度节点
communities <- cluster_leiden(graph, objective_function = "CPM",
                              resolution = 0.7)   # 兼容 resolution/resolution_parameter 参数名
# 仅保留 >1 成员的社群;可视化 layout_with_fr(niter=1000)

5. 验证(作者数据对照)

# 复现 importance vs 作者表:cutoff=0.5 二值化后比对边集合,
# 散点 + lm 拟合(复现值×作者值),输出相关性与共享边统计

常见坑

  1. 特征名连字符:ranger formula 拒绝,先 make.names,出结果后映射回原名
  2. l=5 的单位是中位 spot 间距:必须先归一化坐标,不是像素/µm
  3. 1.8/1.10 输出结构不同:collect_results 后需 reshape 兼容,别硬编码列名
  4. 每片独立运行再聚合:不要合并 21 切片一起跑(边界伪影)
  5. importance 是相对贡献:跨样本比较用 cutoff 二值化边集,不用原始值