作者,Evil Genius
就在10X HD的文章不断涌现的同时,R和python版本对于HD数据的读取也做出了及时的更新,主要的变化就是同时读取bin模式和细胞分割模式的数据。
从25年6月推出HD细胞分割模式数据之后,其配套的分析软件也越来越完善,在25培训的阶段我们仍然需要手动进行修改读取,现在可以直接读取。

我们首先来看R版本,Seurat需要升级到5.4+
读取方式比较简单
path_to_data <- "/brahms/shared/vignette-data/visium_hd_human_kidney"
kidney_obj <- Load10X_Spatial(data.dir = path_to_data,
bin.size = c(8, "polygons"),
image.name = "tissue_hires_image.png")
我们来读一下,采用16um和细胞分割两种模式数据
adata = Load10X_Spatial(data.dir = './',bin.size = c(16, "polygons"),image.name = "tissue_hires_image.png")
> adata
An object of class Seurat
77212 features across 373881 samples within 2 assays
Active assay: Spatial.Polygons (38606 features, 0 variable features)
1 layer present: counts
1 other assay present: Spatial.016um
2 spatial fields of view present: slice1.016um slice1.polygons

读进来默认采用细胞分割的数据结果。

看看注释的结果

现在官方的教程还很不完善,HD数据的bin模式和细胞分割模式都有文章发表,且看下来,两种模式的质控指标是不一样的。
接下来是python版本
python版本需要借助spatialdata-io,需要0.5.0以上的版本。
格式需要转化
import spatialdata_io as sdio
spaceranger_path = "/visium_hd/output"
# 使用spatialdata-io读取Visium HD数据
# 这里设置了加载细胞分割的关键参数
sdata = sdio.visium_hd(
path=spaceranger_path,
load_segmentations_only=True, # 只加载细胞分割,跳过binned数据
load_nucleus_segmentations=True # 同时加载细胞核分割
)
# 查看加载的数据结构,确认包含了shapes和tables
print(sdata)
# 将SpatialData对象保存为Zarr格式
# 这会创建一个名为 'visium_hd.zarr' 的文件夹,里面包含了所有数据
sdata.write("./visium_hd.zarr")
然后读取细胞分割后的HD数据结果(包含bin模式的数据)
visium_hd_zarr_path = "./visium_hd.zarr"
import spatialdata as sd
import spatialdata_plot
sdata = sd.read_zarr(visium_hd_zarr_path)
sdata
SpatialData object, with associated Zarr store:./visium_hd.zarr
├── Images
│ ├── 'Visium_HD_3prime_Mouse_Brain_hires_image': DataArray[cyx] (3, 5492, 6000)
│ └── 'Visium_HD_3prime_Mouse_Brain_lowres_image': DataArray[cyx] (3, 549, 600)
├── Shapes
│ ├── 'Visium_HD_3prime_Mouse_Brain_cell_segmentations': GeoDataFrame shape: (84031, 2) (2D shapes)
│ └── 'Visium_HD_3prime_Mouse_Brain_nucleus_segmentations': GeoDataFrame shape: (83153, 2) (2D shapes)
└── Tables
├── 'cell_segmentations': AnnData (84031, 33696)
└── 'nucleus_segmentations': AnnData (83153, 33696)
with coordinate systems:
▸ 'Visium_HD_3prime_Mouse_Brain', with elements:
Visium_HD_3prime_Mouse_Brain_hires_image (Images), Visium_HD_3prime_Mouse_Brain_lowres_image (Images), Visium_HD_3prime_Mouse_Brain_cell_segmentations (Shapes), Visium_HD_3prime_Mouse_Brain_nucleus_segmentations (Shapes)
▸ 'Visium_HD_3prime_Mouse_Brain_downscaled_hires', with elements:
Visium_HD_3prime_Mouse_Brain_hires_image (Images), Visium_HD_3prime_Mouse_Brain_cell_segmentations (Shapes), Visium_HD_3prime_Mouse_Brain_nucleus_segmentations (Shapes)
▸ 'Visium_HD_3prime_Mouse_Brain_downscaled_lowres', with elements:
Visium_HD_3prime_Mouse_Brain_lowres_image (Images), Visium_HD_3prime_Mouse_Brain_cell_segmentations (Shapes), Visium_HD_3prime_Mouse_Brain_nucleus_segmentations (Shapes)
python的处理同样也很不完善,需要更多的处理。




