首页 > 其他分享 >全网最好看的单细胞umap图绘制教程

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

时间:2024-06-22 17:54:35浏览次数:21  
标签:教程 color 全网 cell umap ov ax pl

作者按

大家或许都曾被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 × 25121
    obs: '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/

标签:教程,color,全网,cell,umap,ov,ax,pl
From: https://www.cnblogs.com/starlitnightly/p/18262565

相关文章

  • Stable Diffusion部署教程,开启你的AI绘图之路
    本文环境系统:Ubuntu20.0464位内存:32G环境安装2.1安装GPU驱动在英伟达官网根据显卡型号、操作系统、CUDA等查询驱动版本。官网查询链接https://www.nvidia.com/Download/index.aspx?lang=en-us注意这里的CUDA版本,如未安装CUDA可以先选择一个版本,稍后再安装CUDA.点击S......
  • MyBatis-Plus入门教程(一)
    MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上为其提供了许多便捷功能,使开发者能够更快速、高效地进行数据库操作。MyBatis-Plus简介1.什么是MyBatis-Plus?MyBatis-Plus(简称MP)是一个MyBatis的增强工具,它旨在简化开发过程,减少重复代码,提高开发效率。MP通......
  • Mybatis-plus入门教程(二)
    第一步:环境准备1.添加依赖确保在项目的构建文件中添加MyBatis-Plus依赖。Maven:<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.4</version></dependency>Gradle:im......
  • Docker部署Nginx1.21.5(保姆级图文教程)
    系列文章目录Docker部署Nginx1.21.5(保姆级图文教程)Docker部署MySQL8.3.0(保姆级图文教程)文章目录一、环境二、拉取镜像2.1查找DockerHub上的nginx镜像2.2拉取Nginx镜像2.3查看Nginx镜像三、在宿主机创建目录四、启动临时容器,拷贝nginx容器内配置文件4.1启动......
  • Docker部署MySQL8.3.0(保姆级图文教程)
    系列文章目录Docker部署Nginx1.21.5(保姆级图文教程)Docker部署MySQL8.3.0(保姆级图文教程)文章目录一、环境二、拉取镜像2.1查找DockerHub上的MySQL镜像2.2拉取MySQL镜像2.3查看MySQL镜像三、在宿主机创建目录3.1创建挂载目录3.2创建配置文件四、启动MySQL......
  • 《植物大战僵尸杂交版》:时隔15年,再次火爆全网
    2009年的经典休闲益智小游戏《植物大战僵尸》,在时隔15年后,以全新的“杂交版”再次吸引了全网玩家的目光。游戏特色创新的杂交机制:保留了原版游戏机制,对植物和僵尸进行了现代化的“赛博改造”。元素反应系统:引入了类似“元素反应”的机制,增加了游戏的策略性和互动性。多......
  • Python连接Etcd集群基础教程
    1、背景介绍最近接手了一个项目,项目是使用Python开发的,其中使用到了Etcd,但是项目之前开发的方式,只能够支持单节点连接Etcd,不能够在Etcd节点发生故障时,自动转移。因此需要实现基于现有etcdsdk开发一个能够实现故障转移的功能,或者更换etcdsdk来实现故障转移等功能。先来看看项......
  • Primer Premier 6安装使用教程
    PrimerPremier是一款专业级PCR引物设计工具软件,专为科研及分子生物学实验定制PCR扩增、测序探针及杂交引物。该程序运用尖端演算法评估引物的特异性、二聚体可能性和熔解温度等核心属性,确保产出的引物在性能上精准高效。其用户友好界面不仅简化了引物设计流程,并整合了序列比对与......
  • NSIS 入门教程 (一)
     介绍大多数应用程序都附带一个安装程序,它将所需的文件复制到正确的文件夹中,创建注册表项,并提供卸载例程以(希望)从计算机中彻底删除应用程序有多种解决方案可以为自主开发的应用程序配备安装程序。除了InstallShield或Wise等商业产品外,还有开源安装工具NullsoftScriptableIns......
  • frp实现内网穿透让你的家里云秒变服务器手把手教程
    一、基本环境1可以有公网IP的实体机(比如vps等)(操作之前放行防火墙或者关闭  阿里云  腾讯带安全组的,请安全组先放行端口)2目标设备(就是你内网中的机器)3.公网云服务器需要安装宝塔、家里云或者家里电脑也需要装宝塔【linux】且双方都需要安装docker服务......