
一、写在前面 10x Genomics 于 2025 年 6 月发布了 Space Ranger v4.0,这是 Visium 空间转录组分析管线的重要升级。在该版本中,新增了基于 H&E 图像的细胞分割功能(cell segmentation),可直接对 Visium HD(含 Visium HD 3’)数据进行分割。但尴尬也随之而来,现在为止,scanpy/seurat还没有现成的函数可以直接读取细胞分割后的结果:
tissue_positions.csv;squidpy.read.visium() 也还没适配新的cell_segmentations.geojson于是,我们写了一个读取函数,能把Spaceranger v4 的细胞分割矩阵 + 细胞/细胞核边界 + 面积全部装进 SpatialData 对象,后续可以直接Scanpy、Seurat、Squidpy等下游分析。
Space Ranger v4 在细胞分割运行完以后,会自动在输出目录下生成一个名为 segmented_outputs 的文件夹。该目录通常包含以下主要内容(详见下图):
.cloupe)、聚类注释的 GeoJSON 等文件。Space Ranger v4 segmented_outputs 目录结构示例(红色箭头所示分别为细胞边界信息 (.geojson)、细胞表达矩阵 (.h5)、细胞核边界信息。通过分析这些文件,可以获得单细胞级别的空间表达和形态信息。

我们自定义一个读取函数,结合 spatialdata库来解析这些输出。以下是一个示例函数(假设已安装 spatialdata、scanpy、geopandas 等库):


visium_hd()(来自 SpatialData 库)加载原始 Visium HD 数据(包括原图像和默认的 binning 表格)。scanpy.read_10x_h5 读取 segmented_outputs/filtered_feature_cell_matrix.h5,得到分割细胞的表达矩阵。VisiumHDKeys.INSTANCE_KEY 和 REGION_KEY,将每个细胞作为独立区域(region)导入到 SpatialData 对象中。geopandas.read_file 读取 cell_segmentations.geojson(或 nucleus_segmentations.geojson),提取细胞(或细胞核)边界多边形信息,并用 ShapesModel.parse 将其解析为空间形状数据。adata.obsm['spatial'],同时根据 scalefactors_json.json 计算细胞面积,并将其并入 adata.obs。Space Ranger v4.0 对 HD 数据集成细胞分割,赋予用户在近单细胞分辨率下分析空间转录组的能力。虽然目前 Seurat/Scanpy 等软件尚未官方支持该输出格式,但我们可以通过自定义加载函数,如上所示,将 Space Ranger 的分割结果导入分析流程中。感兴趣的读者可以结合更多空间分析工具(如 SpatialData),进一步探索细胞型分布、细胞间相互作用等信息。