STAMP空间模式算法用在scRNA数据会怎样

STAMP (Spatial Transcriptomics Analysis with topic Modeling to uncover spatial Patterns) 是一种可解释的空间感知降维方法,专为空间转录组学数据设计。它结合了深度生成模型和主题建模 (topic modeling),能够在保留空间信息的前提下,提取出生物学上有意义的低维“空间主题”和对应的基因模块。

作为空间转录组学的分析工具用在scRNA数据上会怎么样?从理论上来讲可以行得通,因为STAMP利用空间转录组的空间位置信息提取出主题,而scRNA数据可以用PCA的降维信息提取主题。下面用pbm3k的数据来试试实际效果。

import pandas as pd
import scanpy as sc
import sctm
import squidpy as sq

adata = sc.read_h5ad("pbmc3k_scanpy.h5ad")
sc.pp.filter_genes(adata, min_cells=3)
sc.pp.filter_cells(adata, min_genes=200)
adata.layers['counts'] = adata.X.copy()
sc.pp.normalize_total(adata)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata)
sc.tl.pca(adata)
sc.pp.neighbors(adata)
sc.tl.leiden(adata)
sc.tl.umap(adata)

关键的一步是将空间的位置信息替换为转录组的PCA信息,然后再利用空间的图聚类:

adata.obsm['spatial'] = adata.obsm['X_pca']
sq.gr.spatial_neighbors(adata)

然后,利用STAMP建模提取出生物学上有意义的低维“主题”和对应的基因模块:

model = sctm.stamp.STAMP(adata[:, adata.var.highly_variable], n_topics=10, layer='counts')
model.train(batch_size=2048, device='cpu')
topic_prop = model.get_cell_by_topic()
beta = model.get_feature_by_topic()

低维的主题有点类似监督聚类,需要人为指定数量,这里设置为leiden的聚类数量。下面对比一下leidenSTAMP的结果:

adata.obs['topic'] = topic_prop.idxmax(axis=1)
sc.pl.umap(adata, color=["leiden", "topic"])

从上面的结果来看,STAMP在转录组数据上提取的主题跟聚类的结果还算能对应上,有点意思。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容