
上一节介绍了python版visium数据的分析,问题这不随之而来了嘛!在scRNA分析的时候,就有这个需求,现在scRNA的seurat和scanpy两大主要工具的互转已经没有任何阻碍了,而且还有多种方式。参考:https://mp.weixin.qq.com/s/x4HOHNwikvuTCRK4kQRjRA,https://mp.weixin.qq.com/s/mjyYgSSwNejWYciRuQX5MA。空转数据依然有这样的需求,有些分析需要用到R,有些需要用到python,掌握两者的互转那么分析和可视化也就没有太多阻碍了,空转数据与scRNA的不同之处在于有图像信息。这里测试几个工具,方便大家选择,相信后面还会有更多的工具。测试的方法无排名!
这个数据是已经读取且完成降维聚类的空转visium data,数据形式是anndata!
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import anndata as ad
import scanpy as sc
import squidpy as sqadata = sc.read_h5ad('./adata_spatial_endometrium.h5ad')
adataAnnData object with n_obs × n_vars = 2016 × 15696
obs: 'in_tissue', 'array_row', 'array_col', 'pxl_row_in_fullres', 'pxl_col_in_fullres', 'n_genes_by_counts', 'log1p_n_genes_by_counts', 'total_counts', 'log1p_total_counts', 'pct_counts_in_top_50_genes', 'pct_counts_in_top_100_genes', 'pct_counts_in_top_200_genes', 'pct_counts_in_top_500_genes', 'total_counts_mt', 'log1p_total_counts_mt', 'pct_counts_mt', 'n_counts', 'clusters'
var: 'gene_ids', 'feature_types', 'mt', 'n_cells_by_counts', 'mean_counts', 'log1p_mean_counts', 'pct_dropout_by_counts', 'total_counts', 'log1p_total_counts', 'n_cells', 'highly_variable', 'means', 'dispersions', 'dispersions_norm'
uns: 'clusters', 'clusters_colors', 'dendrogram_clusters', 'hvg', 'log1p', 'neighbors', 'pca', 'rank_genes_groups', 'spatial', 'umap'
obsm: 'X_pca', 'X_umap', 'spatial'
varm: 'PCs'
obsp: 'connectivities', 'distances'schard是一款R包,在scRNA数据转化时演示过(h5ad2seurat函数),使用简单,一句话的事,太贴心了,也支持visium数据的转化(h5ad2seurat_spatial函数)!测试完它,说实话其他的都不想再看了!一如既往的好! Github:https://github.com/cellgeni/schard
#安装包
devtools::install_github("cellgeni/schard")
library(schard)
library(Seurat)#转化一句话的事
endometrium_r = schard::h5ad2seurat_spatial('./adata_spatial_endometrium.h5ad')endometrium_rAn object of class Seurat
15696 features across 2016 samples within 1 assay
Active assay: Spatial (15696 features, 0 variable features)
1 layer present: counts
2 dimensional reductions calculated: Xpca_, Xumap_
1 image present: CTR4head([email protected])[1:5,1:5] orig.ident nCount_Spatial nFeature_Spatial
AAACAAGTATCTCCCA-1 SeuratProject 3759.627 3664
AAACACCAATAACTGC-1 SeuratProject 3386.548 2501
AAACAGAGCGACTCCT-1 SeuratProject 3382.449 2650
AAACAGGGTCTATATT-1 SeuratProject 3500.898 2852
AAACCGGGTAGGTACC-1 SeuratProject 3705.356 3556
_index in_tissue
AAACAAGTATCTCCCA-1 AAACAAGTATCTCCCA-1 1
AAACACCAATAACTGC-1 AAACACCAATAACTGC-1 1
AAACAGAGCGACTCCT-1 AAACAGAGCGACTCCT-1 1
AAACAGGGTCTATATT-1 AAACAGGGTCTATATT-1 1
AAACCGGGTAGGTACC-1 AAACCGGGTAGGTACC-1 1Seurat::SpatialPlot(endometrium_r,features = 'total_counts')
Seurat::SpatialDimPlot(endometrium_r,group.by = 'clusters')
目前(2025年底)我尚未发现其他可媲美schard的工具了,无论是简洁度还是转化度很多工作在scRNA的转化上没有问题,但是没有涉及到空转数据。所以不再介绍其他工作,即使转化也需要自行添加image,或者额外的操作,没必要这么麻烦。
anndataR是之前介绍过的h5ad转seurat的包之一,目前更新了。直接一步到位。但是对于空转的h5ad数据,只能转表达矩阵及降维信息,无法转化image信息。在转化seurat没问题的前提下,可以转一下思路,转化之后添加image即可,其他的包也可以进行类似操作。
#安装包
#devtools::install_github("scverse/anndataR")#先转
adata <- anndataR::read_h5ad("./adata_spatial_endometrium.h5ad", as = "Seurat")#后添加image
CTR4_img <- Read10X_Image(image.dir = file.path("./CTR4_processed_data/spatial/"), filter.matrix = TRUE)#Load a 10X Genomics Visium Image
CTR4_img <- CTR4_img[Cells(x = adata)]#保留图像中与表达矩阵一致的spot
adata[["CTR4"]] <- CTR4_img#测试:
Seurat::SpatialPlot(adata,features = 'total_counts')
#测试
Seurat::SpatialDimPlot(adata,group.by = 'clusters')