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

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

以正常和肿瘤组织作为区别

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

下面提供一个参考:

celltype=adata.obs['refined_pred'].unique().tolist()
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
    sc.pl.umap(adata, color='refined_pred', groups=[i], ax=axes[y][x])
    x = x +1 if x <4 else 0
    y = y +1 if y <3 and x ==0 else y
plt.savefig('./split.png')
按细胞类型分页绘图

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

版权声明:
作者:Zad
链接:https://www.techfm.club/p/47460.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>