首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >空转python版【2】:visium空转h5ad数据转化为seurat测试

空转python版【2】:visium空转h5ad数据转化为seurat测试

作者头像
KS科研分享与服务-TS的美梦
发布2025-12-31 18:31:25
发布2025-12-31 18:31:25
1390
举报

上一节介绍了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!

代码语言:javascript
复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import anndata as ad
import scanpy as sc
import squidpy as sq
代码语言:javascript
复制
adata = sc.read_h5ad('./adata_spatial_endometrium.h5ad')
adata
代码语言:javascript
复制
AnnData 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'

1-schard

schard是一款R包,在scRNA数据转化时演示过(h5ad2seurat函数),使用简单,一句话的事,太贴心了,也支持visium数据的转化(h5ad2seurat_spatial函数)!测试完它,说实话其他的都不想再看了!一如既往的好! Github:https://github.com/cellgeni/schard

代码语言:javascript
复制
#安装包
devtools::install_github("cellgeni/schard")
library(schard)
library(Seurat)
代码语言:javascript
复制
#转化一句话的事
endometrium_r = schard::h5ad2seurat_spatial('./adata_spatial_endometrium.h5ad')
代码语言:javascript
复制
endometrium_r
代码语言:javascript
复制
An 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: CTR4
代码语言:javascript
复制
head([email protected])[1:5,1:5]
代码语言:javascript
复制
                      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         1
代码语言:javascript
复制
Seurat::SpatialPlot(endometrium_r,features = 'total_counts')
image.png
image.png
代码语言:javascript
复制
Seurat::SpatialDimPlot(endometrium_r,group.by = 'clusters')
image.png
image.png

总之,它还是一如既往的又稳又简洁,推荐指数🌟🌟🌟🌟🌟

目前(2025年底)我尚未发现其他可媲美schard的工具了,无论是简洁度还是转化度很多工作在scRNA的转化上没有问题,但是没有涉及到空转数据。所以不再介绍其他工作,即使转化也需要自行添加image,或者额外的操作,没必要这么麻烦。

2-anndataR

anndataR是之前介绍过的h5ad转seurat的包之一,目前更新了。直接一步到位。但是对于空转的h5ad数据,只能转表达矩阵及降维信息,无法转化image信息。在转化seurat没问题的前提下,可以转一下思路,转化之后添加image即可,其他的包也可以进行类似操作。

代码语言:javascript
复制
#安装包
#devtools::install_github("scverse/anndataR")
代码语言:javascript
复制
#先转
adata <- anndataR::read_h5ad("./adata_spatial_endometrium.h5ad", as = "Seurat")
代码语言:javascript
复制
#后添加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
代码语言:javascript
复制
#测试:
Seurat::SpatialPlot(adata,features = 'total_counts')
image.png
image.png
代码语言:javascript
复制
#测试
Seurat::SpatialDimPlot(adata,group.by = 'clusters')
image.png
image.png
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-26,如有侵权请联系 [email protected] 删除

本文分享自 KS科研分享与服务 微信公众号,前往查看

如有侵权,请联系 [email protected] 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 加载数据
  • 1-schard
  • 总之,它还是一如既往的又稳又简洁,推荐指数🌟🌟🌟🌟🌟
    • 2-anndataR
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档