一、写在前面 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),进一步探索细胞型分布、细胞间相互作用等信息。