全网最好看的单细胞umap图绘制教程

news/2024/6/29 21:08:57

作者按

大家或许都曾被Nature, Science上的单细胞umap图吸引过,不免心生崇拜。在这里,我们将介绍一种简单方便的顶刊级umap图可视化

全文字数|预计阅读时间: 2000|5min

——Starlitnightly(星夜)

环境加载

我们先导入一些必须的依赖包

import omicverse as ov
import scanpy as sc
import matplotlib.pyplot as plt
ov.ov_plot_set()

   ____            _     _    __                  / __ \____ ___  (_)___| |  / /__  _____________ / / / / __ `__ \/ / ___/ | / / _ \/ ___/ ___/ _ \ 
/ /_/ / / / / / / / /__ | |/ /  __/ /  (__  )  __/ 
\____/_/ /_/ /_/_/\___/ |___/\___/_/  /____/\___/                                              Version: 1.6.3, Tutorials: https://omicverse.readthedocs.io/

读取数据

我们选取了一个结直肠癌的数据作为演示。

adata=ov.read('crc_50000.h5ad')
adata

AnnData object with n_obs × n_vars = 50000 × 25121obs: 'n_genes', 'doublet_score', 'predicted_doublet', 'n_genes_by_counts', 'total_counts', 'total_counts_mt', 'pct_counts_mt', 'leiden', 'scsa_celltype', 'major_celltype', 'scsa_true_celltype'var: 'gene_ids', 'n_cells', 'mt', 'n_cells_by_counts', 'mean_counts', 'pct_dropout_by_counts', 'total_counts', 'highly_variable', 'means', 'dispersions', 'dispersions_norm'uns: 'dendrogram_leiden', 'hvg', 'leiden', 'leiden_colors', 'leiden_sizes', 'log1p', 'major_celltype_colors', 'neighbors', 'paga', 'pca', 'rank_genes_groups', 'scrublet', 'scsa_celltype_colors', 'umap'obsm: 'X_pca', 'X_umap'obsp: 'connectivities', 'distances'

首先我们先尝试一下最基础的umap图绘制可视化

fig, ax = plt.subplots(figsize=(4,4))
ov.pl.embedding(adata,basis="X_umap",color=['major_celltype'],title='',show=False,  frameon='small',ax=ax
)

细胞可视化顺序

我们发现效果平平无奇对吧,接下来,我们首先需要修改的是,细胞可视化的顺序,将免疫细胞放到一块,将其他细胞放到另一块

adata.obs['major_celltype'].cat.categories

Index(['B cell', 'Endothelial cell', 'Epithelial cell', 'Fibroblast','Mast cell', 'Myeloid cell', 'Natural killer cell', 'Plasma cell','T cell', 'pDC'],dtype='object')

new_order=['B cell', 'Plasma cell','T cell', 'Natural killer cell','Myeloid cell','pDC','Mast cell', 'Endothelial cell', 'Epithelial cell', 'Fibroblast',      ]

adata.obs['major_celltype']=adata.obs['major_celltype'].cat.reorder_categories(new_order)

此时我们再可视化,会发现细胞的排序变成了我们指定的顺序

fig, ax = plt.subplots(figsize=(4,4))
ov.pl.embedding(adata,basis="X_umap",color=['major_celltype'],title='',show=False,  frameon='small',ax=ax
)

接下来我们再指定细胞类型的颜色,这里有两个方法:

  • 第一个方法是我们使用颜色条顺序来指定
  • 第二个方法是直接指定细胞类型的颜色

我们先尝试第一个方法,我们希望B细胞是蓝色,T细胞是红色,髓系细胞是绿色,其他细胞是黄色,那么我们根据数量指定颜色条。

需要注意的是,我们在omicverse中提供了5种顶刊级别的颜色条调用

  • 红色: ov.pl.red_color
  • 蓝色: ov.pl.blue_color
  • 橙色: ov.pl.orange_color
  • 绿色: ov.pl.green_color
  • 紫色: ov.pl.purple_color

如果你有其他的颜色需求也可以自行指定,颜色条是list格式,例如palette=['#000000','#FFFFFF']

fig, ax = plt.subplots(figsize=(4,4))
ov.pl.embedding(adata,basis="X_umap",color=['major_celltype'],title='',show=False,  frameon='small',palette=ov.pl.blue_color[4:6]+ov.pl.red_color[1:3]+ov.pl.green_color[:3]+ov.pl.orange_color[:],ax=ax
)

我们发现颜色变成了我们指定的颜色类型

细胞标签优化

我们接下来需要优化的是细胞类型的展示,我们上面绘制的细胞的标签在右边,对于读者而言,需要一个一个去颜色对应的。在Nature最新的出版需求中,希望作者们考虑到色弱等人士的需求,因此我们可以直接在细胞umap图上绘制细胞类型。

需要注意的是,scanpy默认的细胞类型在umap图上的可视化可能出现遮挡,我们在omicverse中提供了新的函数ov.pl.embedding_adjust

from matplotlib import patheffects
fig, ax = plt.subplots(figsize=(4,4))
ov.pl.embedding(adata,basis="X_umap",color=['major_celltype'],title='',show=False, legend_loc=None, add_outline=False, frameon='small',legend_fontoutline=2,ax=ax)ov.pl.embedding_adjust(adata,basis="X_umap",groupby='major_celltype',ax=ax,adjust_kwargs=dict(arrowprops=dict(arrowstyle='-', color='black')),text_kwargs=dict(fontsize=12 ,weight='bold',path_effects=[patheffects.withStroke(linewidth=2, foreground='w')] ),
)

同类细胞轮廓

我们在很多顶刊中会发现,同类细胞往往作者喜欢用轮廓线圈起来,因此,我们在omicverse中也提供了类似的实现。

from matplotlib import patheffects
fig, ax = plt.subplots(figsize=(4,4))
ov.pl.embedding(adata,basis="X_umap",color=['major_celltype'],title='',show=False, legend_loc=None, add_outline=False, frameon='small',legend_fontoutline=2,ax=ax)ov.pl.embedding_adjust(adata,basis="X_umap",groupby='major_celltype',ax=ax,adjust_kwargs=dict(arrowprops=dict(arrowstyle='-', color='black')),text_kwargs=dict(fontsize=12 ,weight='bold',path_effects=[patheffects.withStroke(linewidth=2, foreground='w')] ),
)
ov.pl.contour(ax=ax,adata=adata,basis="X_umap",groupby='major_celltype',clusters=['T cell','Natural killer cell'],contour_threshold=0.02,colors=ov.pl.red_color[2],linestyles='dashed')ov.pl.contour(ax=ax,adata=adata,basis="X_umap",groupby='major_celltype',clusters=['Plasma cell','B cell'],contour_threshold=0.01,colors=ov.pl.blue_color[6],linestyles='dashed')ov.pl.contour(ax=ax,adata=adata,basis="X_umap",groupby='major_celltype',clusters=['Endothelial cell', 'Epithelial cell', 'Fibroblast'],contour_threshold=0.002,colors=ov.pl.orange_color[2],linestyles='dashed')fig.savefig('umap-ct_major.png',dpi=300,bbox_inches='tight')
fig.savefig('umap-ct_major.pdf',dpi=300,bbox_inches='tight')


以上就是本期教程的全部内容了,如果觉得OmicVerse对你的论文有帮助,不要忘记应用哦,更多单细胞的可视化方法与教程请参考: https://starlitnightly.github.io/omicverse/Tutorials-plotting/t_visualize_single/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/48380.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

pycharm中运行jupyter notebook

进入anaconda prompt,进入对应的虚拟环境输入jupyter notebook,找到路径和token这两个随便复制一个,注意是包括token也要复制到 然后打开pycharm,并建立一个jupyter notebook文件选择下面这个然后在里面输入刚刚复制的然后运行一个cell,会弹出输入刚刚复制jupyter noteboo…

从JDK8升级到JDK17

一、概述 鉴于JDK8已经是老古董,还有性能问题,兼且各个公司已经不再维护1.8的JDK,所以升级公司的核心产品之一的后端到JDK到17是相对要紧的事情。 通过升级到jdk17,具有以下好处:不要在头疼同时适应两个jdk,放下适应JDK8的负担 在生产环境基本上只需要部署一个jdk即可 具…

填空题回答(Power Query)

问题: 由问题+答案生成结果let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], 结果 = Table.AddColumn(源, "结果", each Text.Combine(List.Combine(List.Zip({Text.Split([问题],"__") , Text.Split([答案],"、")})))) in…

纯html如何识别.vue文件并搭建vue项目

前言 使用原生 html 写 vue 项目。注意:是项目,而不是页面,此方式是不推荐的,毕竟有脚手架,但在一些及其特殊场景下,可能会需要类似的方式,因此作为一个记录。这种方式唯一的优点就是写完可以直接扔服务器上了-_-对 html 写 vue 的认知 很多人对 在 html 中运行 vue 项…

fastjson

fastjson反序列化漏洞原理与复现fastjson一、fastjson简介 fastjson是java的一个库,可以将java对象转化为json格式的字符串,也可以将json格式的字符串转化为java对象 提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可…

批量选取不相邻单元格(同填充色)

问题:批量选取相同填充色的不相邻的单元格 查找法: 开始》查找》查找》选项》格式》背景颜色》点选带背景颜色的单元格》查找全部》Ctrl+A筛选法: 筛选》颜色筛选选取筛选结果》开始》查找》定位》可见单元格》定位

全基因组选择(GS)合集

目前,《生物信息与育种》公众号已经发布了50来篇有关基因组选择(GS)的推文,包括了一些教程、书籍、文献、工具、案例等,基本上阅读了这些文章,对GS有个较为全面的了解应该是没问题的。 《生物信息与育种》GS合集近期,中国农科院团队首席将于6月28~30日举办第三期全基因组…

新高考越这样改,县中出“尖子生”越难 | 转载

如何才能突破目前的教育困境2024/6/21 09:13来自上海观察者网官方账号【文/观察者网专栏作者 邓碧玲】 一、在县中,教学和考试成了两回事 2022年高考全国I卷的数学试卷中出现了二级结论相关的题目,湖南省Y县一中在暑期专门组织教师培训20天关于二级结论的解题技巧,这在之后的…