高级篇 CNS级分析

空间转录组学完整教程

不做实验也能发10+SCI?CNS级别空间转录组套路全解析

⚠️
免责声明: 本内容仅供医学学习参考,不作为临床诊断依据。 实际临床决策请结合患者具体情况和多学科意见。

🗺️ 空间转录组学 是近年来最火的技术之一,Nature Methods年度技术,能够在保留空间位置信息的同时进行转录组分析。本教程详解空间转录组的完整分析流程,从数据格式到高级可视化,让你也能发表CNS级别的空间转录组文章!

1. 空间转录组技术概述 Visium (10x Genomics) 55μm直径spot,每个spot包含1-10个细胞,目前应用最广泛 Slide-seq 10μm分辨率,接近单细胞水平,技术难度较高 Stereo-seq 华大技术,500nm分辨率,真正的亚细胞级空间组学 ⚠️ 关键区别:传统单细胞测序丢失了空间位置信息,而空间转录组能够在组织切片上同时获得基因表达和空间坐标,是连接组织学和基因组学的桥梁。

2. 安装与数据加载 # 安装Seurat和空间分析包 install.packages ( "Seurat" ) if ( requireNamespace ( "BiocManager" , quietly = TRUE )) { BiocManager :: install ( "SeuratDisk" ) } # 加载必要的包 library (Seurat) library (SeuratDisk) library (ggplot2) library (patchwork) # 加载Visium示例数据 InstallData ( "stxBrain" ) # 人类脑组织数据 LoadData ( "stxBrain" , type = "anterior1" ) # 或者加载自己的Visium数据 # 需要以下文件:# - spatial/tissue_positions_list.csv # - spatial/scalefactors_json.json # - spatial/tissue_lowres_image.png # - filtered_feature_bc_matrix/ (表达矩阵) brain <- Load10X_Spatial (data.dir = "path/to/visium/folder" ) 3. 数据预处理与质控 # 查看Seurat对象中的空间信息 brain @ images # 标准Seurat预处理流程 brain <- SCTransform (brain, assay = "Spatial" , verbose = FALSE ) # 降维和聚类 brain <- RunPCA (brain, verbose = FALSE ) brain <- FindNeighbors (brain, dims = 1 : 30 ) brain <- FindClusters (brain, resolution = 0.8 ) # 运行UMAP brain <- RunUMAP (brain, dims = 1 : 30 ) 💡 SCTransform vs NormalizeData:对于空间转录组数据,推荐使用SCTransform进行标准化,因为它能够更好地处理技术噪音。

4. 空间可视化 # 基础空间可视化 - 组织切片图 SpatialDimPlot (brain, pt.size.factor = 1.5 , # 点的大小 stroke = 0 , # 描边宽度 alpha = 0.8 # 透明度 ) # 按聚类着色 SpatialDimPlot (brain, group.by = "seurat_clusters" , pt.size.factor = 1.5 , label = TRUE , # 显示聚类标签 label.size = 3 ) # 按特定基因表达着色 SpatialFeaturePlot (brain, features = c ( "PCNA" , "CXCL12" ), # 基因名 ncol = 2 ) 📌 SpatialDimPlot 参数说明:• pt.size.factor:控制点的显示大小 • stroke:点的边框宽度,0表示无边框 • alpha:透明度,适合密集区域 • crop:TRUE则只显示组织区域 5. 与单细胞数据整合分析 # 假设有一个匹配的单细胞数据集 # 可以用于细胞类型注释和整合分析 # 1. 使用单细胞作为参考进行注释 library (SingleR) # 提取空间数据表达矩阵 spatial.data <- GetAssayData (brain, slot = "data" ) # 使用SingleR注释 (假设有sc.ref参考集) pred.sc <- SingleR ( test = spatial.data, ref = sc.ref, labels = sc.ref$cell_type ) brain$cell_type <- pred.sc$labels # 2. 空间可视化细胞类型 SpatialDimPlot (brain, group.by = "cell_type" , label = TRUE ) 💡 整合分析优势:将空间转录组与单细胞数据结合,可以:(1) 精确注释每个spot的细胞类型 (2) 识别空间特异性表达的基因 (3) 发现细胞间的空间相互作用关系 6. 识别空间变量基因 # 使用SpatialDecon或SPARKX识别空间模式基因 # 这里展示Seurat内置方法 # 计算空间变异基因 brain <- FindSpatiallyVariableFeatures ( brain, features = VariableFeatures (brain), selection.method = "moransi" # Moran's I统计量 ) # 查看空间变量基因 spatial_vf <- SpatiallyVariableFeatures (brain, selection.method = "moransi" ) head (spatial_vf) # 可视化前几个空间变量基因 SpatialFeaturePlot (brain, features = head (spatial_vf, 4 ), ncol = 2 ) 📌 Moran's I:是衡量空间自相关的统计量,值接近+1表示基因表达呈现空间聚集模式,值接近0表示随机分布,负值表示离散分布。

7. 空间细胞通讯分析 # 使用CellChat分析空间细胞通讯 # 需要先将每个spot注释为细胞类型 library (CellChat) # 创建CellChat对象 cellchat <- createCellChat ( object = brain, group.by = "cell_type" ) # 添加空间信息作为约束 cellchat <- identifyOverExpressedInteractions (cellchat) cellchat <- identifyCommunicationPatterns (cellchat) # 可视化通讯网络 netVisual_aggregate (cellchat, layout = "circle" ) ⚠️ 空间约束通讯:空间转录组的优势在于可以考虑物理距离约束通讯,只有相邻的细胞/spot之间才可能发生直接的配体-受体相互作用。

8. 三维空间重建 # 如果有连续切片数据,可以进行3D重建 # 1. 对齐切片 # 2. 合并Seurat对象 # 示例:合并两个相邻切片 brain.list <- list (slice1, slice2) brain.combined <- merge ( x = brain.list[[ 1 ]], y = brain.list[[ 2 ]], add.cell.ids = c ( "slice1_" , "slice2_" ), project = "brain_3d" ) # 3D可视化 (使用rgl包) library (rgl) plot3d ( x = brain.combined$spatial.row, y = brain.combined$spatial.col, z = brain.combined$slice, col = rainbow ( 10 )[brain.combined$seurat_clusters] ) 📝 空间转录组分析流程总结 1 数据加载 Load10X_Spatial 加载Visium数据 2 预处理 SCTransform → PCA → 聚类 3 空间可视化 SpatialDimPlot/FeturePlot 4 高级分析 变量基因、细胞通讯、3D重建