当前位置: 首页>移动开发>正文

单细胞空间组利用scanpy实现Seurat的splitby分页绘图

在使用Seurat时,经常需要对不同分类的样本在同一画布上进行可视化,可以非常方便地通过其DimPlot()函数的goupyby和spliby等参数实现,例如对照组和实验组,如下:

单细胞空间组利用scanpy实现Seurat的splitby分页绘图,第1张
以正常和肿瘤组织作为区别

但是在python的环境中,scanpy的sc.pl.umap()并没有这么灵活的参数。所以需要通过循环解决问题,sc.pl.umap()中的color参数类似于Seurat的groupby,但其groups参数完全没有Seurat的splitby强大。所以我们可以通过python的Matplotlib包的plt.subplots()函数,结合循环将分组内容一一绘制,再多个分组图合并在一起,就实现相同目的。

下面提供一个参考:

#data.obsm['umap']=data.obsm['spatial']
#data.obs.refined_pred=data.obs.refined_pred.astype('str') # 数字转为字符串
celltype=data.obs['refined_pred'].unique().tolist() # refined_pred是细胞注释
fig, axes = plt.subplots(4, 5, figsize=(18, 12), tight_layout=True,dpi=600) # nrows和ncols取决于想要的画图个数
x=0;y=0
for i in celltype: #celltype为任何需要并列绘制的list
    fig = sc.pl.umap(data, color='refined_pred', groups=i, ax=axes[y][x],show=False)
    x = x +1 if x <4 else 0
    y = y +1 if y <3 and x ==0 else y
plt.show()
#plt.savefig('./split.png')
单细胞空间组利用scanpy实现Seurat的splitby分页绘图,第2张
按细胞类型分页绘图

以上这个例子是用于空间组分图绘制不同细胞类型分布的图谱,对应普通的单细胞数据,例如实验组 vs 对照组、scRNA数据 vs scATAC数据也是一样的(循环+共同绘制)。而且值得注意的是,空间组之所以不采用官方推荐的scanpy.pl.spatial()函数,是因为这个函数对于纯粹的scanpy数据可以很好的适配,但是对于其他空间组工具包,例如spateo、spGCN等等,就不适配,还是原始的sc.pl.umap()更香,具有更加广的应用面和适配性,不过注意调整adata.obsm['umap']=adata.obsm['spatial']就可。


https://www.xamrdz.com/mobile/4xh1880202.html

相关文章: