← 返回分析流程中心创建时间 2026/6/3 分析难度 中级 推荐场景 空间转录组 预计耗时 1-3 天
Pipeline Detail
Spatial Transcriptomics单细胞与空间组学
空间转录组 Visium 分析
面向 10x Genomics Visium 空间转录组的分析流程,覆盖 Space Ranger、组织切片 QC、空间聚类、空间差异表达、细胞类型解卷积和空间通讯解释。
Metadata
流程元数据
先看应用场景、输入输出和工具依赖,再进入正文命令细节。
Difficulty
中级
Scenario
空间转录组
Estimated Time
1-3 天
Tools
Space RangerSeuratSquidpyCellChat
Inputs
FASTQ
Outputs
UMAP
Workflow DAG
流程图
用步骤节点快速理解这个分析从原始数据到结果报告的流转关系。
STEP 1
→Space Ranger count
STEP 2
→组织图像与 spot QC
STEP 3
→Seurat/Squidpy 读入
STEP 4
→空间降维聚类
STEP 5
→空间 marker
STEP 6
→细胞类型解卷积
STEP 7
→空间区域解释
STEP 8
→空间邻近通讯
STEP 9
空间报告
Protocol
流程文档
正文保留 Markdown 排版、代码语言标识和表格样式,适合边学边复现。
空间转录组 Visium 分析
一、适用场景
Visium 空间转录组在组织切片坐标上测量表达量,适合研究基因表达、细胞组成和组织结构之间的空间关系。它的基本单位是 spot,一个 spot 可能包含多个细胞。
适用于:
- 肿瘤微环境空间区域识别。
- 脑、胚胎、植物组织等结构化组织图谱。
- 某个基因或通路在组织中的空间分布。
- scRNA-seq 细胞类型映射到组织切片。
- 空间邻近的细胞通讯推断。
二、整体流程图
flowchart TD
A[显微图像 + FASTQ] --> B[Space Ranger count]
B --> C[filtered_feature_bc_matrix + tissue image]
C --> D[Seurat/Scanpy/Squidpy 读入]
D --> E[spot QC 和归一化]
E --> F[PCA/UMAP/空间聚类]
F --> G[空间区域 marker genes]
D --> H[参考 scRNA-seq 注释]
H --> I[细胞类型解卷积]
G --> J[空间 domain 解释]
I --> J
J --> K[空间通讯/邻近分析]
K --> L[报告]
三、Space Ranger 预处理
spaceranger count --id=sample_visium --transcriptome=/ref/refdata-gex-GRCh38-2024-A --fastqs=/data/fastq/sample_visium --sample=sample_visium --image=/data/image/tissue_hires_image.tif --slide=V19J01-123 --area=A1 --localcores=24 --localmem=128
重点检查:
| 指标 | 说明 |
|---|---|
| tissue detection | spot 是否正确落在组织区域 |
| sequencing saturation | 是否测序足够 |
| median genes per spot | spot 表达复杂度 |
| fraction reads in spots | reads 是否有效落入组织 spot |
| image alignment | 图像和 spot 坐标是否对齐 |
四、Seurat 读入和基础分析
library(Seurat)
library(ggplot2)
obj <- Load10X_Spatial(
data.dir = "sample_visium/outs",
filename = "filtered_feature_bc_matrix.h5",
assay = "Spatial"
)
obj <- SCTransform(obj, assay = "Spatial", verbose = FALSE)
obj <- RunPCA(obj, assay = "SCT")
obj <- FindNeighbors(obj, reduction = "pca", dims = 1:30)
obj <- FindClusters(obj, resolution = 0.6)
obj <- RunUMAP(obj, reduction = "pca", dims = 1:30)
SpatialDimPlot(obj, label = TRUE, label.size = 3)
SpatialFeaturePlot(obj, features = c("MKI67", "COL1A1", "PTPRC"))
图例解释:
| 图 | 读法 |
|---|---|
| SpatialDimPlot | 不同颜色表示空间聚类或区域 |
| SpatialFeaturePlot | 颜色越深表示该 spot 表达越高 |
| UMAP | 看表达相似性,不保留真实组织空间 |
五、空间差异表达和区域 marker
markers <- FindAllMarkers(
obj,
assay = "SCT",
only.pos = TRUE,
min.pct = 0.25,
logfc.threshold = 0.25
)
write.csv(markers, "spatial_cluster_markers.csv", row.names = FALSE)
空间区域解释示例:
Cluster 1 富集 EPCAM、KRT8,位于组织边缘,可能是上皮区域。
Cluster 3 富集 COL1A1、DCN,位于间质区域,可能是 fibroblast-rich domain。
Cluster 5 富集 PTPRC、LST1,呈灶状分布,可能是免疫浸润区域。
六、细胞类型解卷积
如果有 scRNA-seq 参考数据,可将细胞类型映射到 Visium spot。
anchors <- FindTransferAnchors(
reference = sc_obj,
query = obj,
normalization.method = "SCT"
)
predictions <- TransferData(
anchorset = anchors,
refdata = sc_obj$celltype,
prediction.assay = TRUE,
weight.reduction = obj[["pca"]]
)
obj[["predictions"]] <- predictions
SpatialFeaturePlot(obj, features = c("prediction.score.T_cell", "prediction.score.Fibroblast"))
也可以使用 RCTD、cell2location、Tangram、SPOTlight 等方法做比例解卷积。
七、Squidpy 空间邻域分析
import scanpy as sc
import squidpy as sq
adata = sc.read_visium("sample_visium/outs")
adata.var_names_make_unique()
sc.pp.normalize_total(adata)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata)
sc.pp.pca(adata)
sc.pp.neighbors(adata)
sc.tl.leiden(adata, resolution=0.6)
sc.tl.umap(adata)
sq.gr.spatial_neighbors(adata)
sq.gr.nhood_enrichment(adata, cluster_key="leiden")
sq.pl.nhood_enrichment(adata, cluster_key="leiden")
八、空间通讯解释
空间通讯比普通 scRNA-seq 通讯更关注邻近关系。
如果免疫区域与肿瘤区域相邻,并且 ligand 在免疫 spot 高表达、receptor 在肿瘤 spot 高表达,
则该 ligand-receptor pair 具有更强的空间解释价值。
常用组合:
CellChat+ spatial coordinatesSquidpy ligand-receptorNicheNetLIANA
九、主要交付物
- Space Ranger
web_summary.html - tissue image + spot overlay
- spot QC 表
- SpatialDimPlot 空间聚类图
- SpatialFeaturePlot marker 空间图
- 空间区域 marker 表
- 细胞类型解卷积比例图
- 空间邻域富集图
- 候选 ligand-receptor 空间通讯图
- 空间生物学解释报告