在用scanpy进行单细胞分析时往往要对聚类(leiden)后的簇进行细胞类型的标注并生成细胞图谱,但是在通常使用的更改注释的方法中
new_cluster_names = []
adatas.rename_categories('leiden', new_cluster_names)
new_cluster_names
的字符不允许重复,而我无法确保每一个簇的细胞类型都不相同(一般都需要手动调整),于是我只能在相同的细胞类型后添加_num进行注释,如Bcell_1, Bcell_2,用此方法生成的细胞图谱如下所示
真的是相当难看,观察起来也很费劲。
所以我一直在想怎么才能把相同的cell type进行合并。后来我想到了一个替代方案。我在anndata中找到了这样一组注释
adata.uns['leiden_colors']
我猜测每次生成umap,图中的颜色都是从这个数组中取得的,于是我尝试把相同cell type的颜色改为一致。修改后生成的图如下所示
现在相同cell type的颜色总算是一致了,总体美观多了,就是右侧的类型注释还是没有做到合并。
于是我又猜测,我在第一次调用画图函数
sc.pl.umap(adatas, color='leiden', legend_fontsize='xx-small')时,关于分类信息只传入了leiden,我猜测函数可能是根据这一分类依据自动创建了leiden_color并进行分类和上色。那我创建一个允许重复的列表传入分类数据不就可以实现cell type合并了吗?
于是我进行了以下操作
adatas.obs['leiden_poly'] = adatas.obs['leiden'].str[:-2]
sc.pl.umap(adatas, color='leiden_poly', legend_fontsize='xx-small')