mcpField
S
single2spatial-spatial-mapping

single2spatial-spatial-mapping

github.com/omicverse数据与数据库1.4k44 次安装2 天前更新
代码仓库

关于 single2spatial-spatial-mapping

此技能指导使用 omicverse 的 Single2Spatial,将单细胞参考数据映射到空间转录组,并评估、可视化和导出结果,适用于空间表达分析工作流。

主要功能

  1. 01训练深度森林空间映射模型
  2. 02载入预训练模型权重
  3. 03评估 spot 级结果
  4. 04绘制表达与细胞比例图
  5. 05导出 AnnData 和汇总数据

适用场景

  1. 01从 scRNA-seq 和 Visium 重建空间细胞比例
  2. 02载入检查点以重新生成 spot 级结果
  3. 03绘制标记基因的空间表达图

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/omicverse/omicverse --skill single2spatial-spatial-mapping

安装后在 Claude Code 中输入/single2spatial-spatial-mapping确认已加载。

附带文件reference.md

详细介绍

Single2Spatial 空间映射

概述

将单细胞参考数据转换为空间分辨率表达谱时,可使用此技能。该技能遵循 t_single2spatial.ipynb,展示如何使用 PDAC scRNA-seq 和 Visium 数据训练 Single2Spatial、重建 spot 级比例并可视化标记基因表达。

操作说明

  1. 导入依赖项并设置样式
    • 加载 omicverse as ov、scanpy as sc、anndata、pandas as pd、numpy as np 和 matplotlib.pyplot as plt。
    • 调用 ov.utils.ov_plot_set()(或旧版本中的 ov.plot_set()),使图表符合 omicverse 样式。
  2. 加载单细胞和空间数据集
    • 使用 pd.read_csv(...) 读取处理后的矩阵,然后创建 AnnData 对象(anndata.AnnData(raw_df.T))。
    • 附加元数据:single_data.obs = pd.read_csv(...)[['Cell_type']],并设置 spatial_data.obs = pd.read_csv(... ),其中包含坐标和切片元数据。
  3. 初始化 Single2Spatial
    • 实例化 ov.bulk2single.Single2Spatial(single_data=single_data, spatial_data=spatial_data, celltype_key='Cell_type', spot_key=['xcoord','ycoord'], gpu=0)。
    • 注意,输入应为已归一化并经过对数缩放的 scRNA-seq 矩阵;确保 spot_key 与空间坐标列匹配。
  4. 训练深度森林模型
    • 执行 st_model.train(spot_num=500, cell_num=10, df_save_dir='...', df_save_name='pdac_df', k=10, num_epochs=1000, batch_size=1000, predicted_size=32),以拟合映射器并生成重建后的空间 AnnData(sp_adata)。
    • 说明 spot_num 定义每次迭代抽取的伪 spot 数量,cell_num 控制每个 spot 抽取的细胞数。
  5. 加载预训练权重
    • 检查点已存在时,使用 st_model.load(modelsize=14478, df_load_dir='.../pdac_df.pth', k=10, predicted_size=32) 跳过训练。
  6. 评估 spot 级输出
    • 调用 st_model.spot_assess(),计算聚合后的 spot AnnData(sp_adata_spot)以进行质控。
    • 使用 sc.pl.embedding(sp_adata, basis='X_spatial', color=['REG1A', 'CLDN1', ...], frameon=False, ncols=4) 绘制标记基因。
  7. 可视化比例和细胞类型图
    • 使用 sc.pl.embedding(sp_adata_spot, basis='X_spatial', color=['Acinar cells', ...], frameon=False) 突出显示每个 spot 的细胞比例。
    • 使用 palette=ov.utils.ov_palette()[11:] 按 Cell_type 为 sp_adata 着色,以展示重建的细胞类型分配。
  8. 导出结果
    • 建议保存生成的 AnnData 对象(sp_adata.write_h5ad(...)、sp_adata_spot.write_h5ad(...))以及衍生的 CSV 汇总文件,以供后续报告使用。
  9. 防御性验证
    # Before Single2Spatial: verify spatial coordinates exist
    for col in spot_key:
        assert col in spatial_data.obs.columns, f"Spatial coordinate column '{col}' not found in spatial_data.obs"
    # Verify scRNA-seq is log-normalized (max should be <~15, not hundreds/thousands)
    if single_data.X.max() > 50:
        print("WARNING: scRNA-seq data may not be log-normalized. Raw counts cause scale mismatches.")
    # Verify cell type column exists
    assert celltype_key in single_data.obs.columns, f"Cell type column '{celltype_key}' not found"
    
  10. 故障排除提示
  • 如果训练发散,可通过关键字参数降低 learning_rate,或减小 predicted_size,以稳定森林模型。
  • 确保 scRNA-seq 输入经过对数归一化;原始计数可能导致尺度不匹配和空间预测效果不佳。
  • 如果 gpu 不为零,请确认 GPU 可用;也可省略该参数或设置 gpu=-1,回退到 CPU。

示例

  • “在 PDAC scRNA-seq 和 Visium 切片上训练 Single2Spatial,然后可视化 REG1A 和 CLDN1 的空间表达。”
  • “加载已保存的 Single2Spatial 检查点,重新生成 spot 级细胞类型比例以用于报告。”
  • “使用 omicverse 调色板绘制重建的细胞类型图,并与组织学结果进行比较。”

参考资料

评论

支持 Markdown