单细胞分析: Scanpy 核心绘图 (1)

简介: 单细胞分析: Scanpy 核心绘图 (1)

引言

本系列讲解 使用 Scanpy 分析单细胞(scRNA-seq)数据 教程,持续更新,欢迎关注,转发!

简介

本文旨在探索 Scanpy 在数据可视化方面的功能,并分为三个部分:

  • 一是嵌入数据的散点图绘制,例如 UMAP 和 t-SNE;

  • 二是利用已知标记基因识别细胞簇;

  • 三是差异表达基因的可视化。

在本文中,我们将使用一个来自 10x 的数据集,该数据集包含 68,000 个来自外周血单个核细胞(PBMC)的细胞。Scanpy 提供了该数据集的一个简化样本,仅包含 700 个细胞和 765 个高变基因。这个简化样本已经完成了预处理,并且已经计算了 UMAP

此外,在本文中,我们还将使用以下文献中提到的标记基因:

B 细胞 (B-cell):CD79A、MS4A1

浆细胞 (Plasma):IGJ(JCHAIN)

T 细胞 (T-cell):CD3D

自然杀伤细胞 (NK):GNLY、NKG7

髓系细胞 (Myeloid):CST3、LYZ

单核细胞 (Monocytes):FCGR3A

树突状细胞 (Dendritic):FCER1A

散点图

通过 Scanpy,我们可以轻松地利用 sc.pl.tsnesc.pl.umap 等函数生成 tSNE、UMAP 以及其他几种嵌入的散点图。

这些函数会调用存储在 adata.obsm 中的数据。例如,sc.pl.umap 函数会读取 adata.obsm['X_umap'] 中的信息。为了提供更高的灵活性,还可以使用通用函数 scanpy.pl.embedding(),它可以处理 adata.obsm 中存储的任意键值。

import scanpy as sc
from matplotlib.pyplot import rc_context

sc.set_figure_params(dpi=100, color_map="viridis_r")
sc.settings.verbosity = 0
sc.logging.print_header()

加载 pbmc 数据集

pbmc = sc.datasets.pbmc68k_reduced()

# inspect pbmc contents
pbmc

基因表达和其他变量的可视化

在绘制散点图时,要展示的值是通过颜色参数来指定的。这个参数可以是任意一个基因,也可以是 .obs 数据框中的任意一列。

# rc_context is used for the figure size, in this case 4x4
with rc_context({
   "figure.figsize": (4, 4)}):
    sc.pl.umap(pbmc, color="CD79A")

可以同时绘制多个值。在下面的例子中,我们将绘制 6 个基因:“CD79A”、“MS4A1”、“IGJ”、“CD3D”、“FCER1A”和“FCGR3A”,以了解这些标记基因在哪些细胞中表达。

我们还会绘制两个其他变量:n_counts,即每个细胞的 UMI 计数(存储在 .obs 中),以及 bulk_labels,这是一个分类变量,包含来自 10X 的细胞原始分类标签。

每行显示的绘图数量可以通过 ncols 参数来控制。绘制的最大值可以通过 vmax 参数进行调整(类似地,vmin 可以用于调整最小值)。在这个例子中,我们使用 p99,即以 99 百分位数作为最大值。最大值可以是一个固定数值,也可以是一个数值列表,如果需要为多个绘图分别设置 vmax。

此外,我们使用 frameon=False 来移除绘图周围的边框,并通过 s=50 设置点的大小。

color_vars = [
    "CD79A",
    "MS4A1",
    "IGJ",
    "CD3D",
    "FCER1A",
    "FCGR3A",
    "n_counts",
    "bulk_labels",
]
with rc_context({
   "figure.figsize": (3, 3)}):
    sc.pl.umap(pbmc, color=color_vars, s=50, frameon=False, ncols=4, vmax="p99")

通过这个图,我们可以观察到表达标记基因的细胞群体,并且可以看到这些群体与原始细胞标签的匹配情况。

散点图的绘制函数提供了许多选项,用于对图像进行精细调整。例如,我们可以按照以下方式查看细胞聚类结果:

# compute clusters using the leiden method and store the results with the name `clusters`
sc.tl.leiden(
    pbmc,
    key_added="clusters",
    resolution=0.5,
    n_iterations=2,
    flavor="igraph",
    directed=False,
)

with rc_context({
   "figure.figsize": (5, 5)}):
    sc.pl.umap(
        pbmc,
        color="clusters",
        add_outline=True,
        legend_loc="on data",
        legend_fontsize=12,
        legend_fontoutline=2,
        frameon=False,
        title="clustering of cells",
        palette="Set1",
    )

相关文章
|
4月前
|
存储 数据可视化
单细胞分析: Scanpy 核心绘图 (3)
单细胞分析: Scanpy 核心绘图 (3)
单细胞分析: Scanpy 核心绘图 (3)
|
7月前
|
数据可视化 数据挖掘
Scanpy 分析 scRNA-seq:降维与聚类
Scanpy 分析 scRNA-seq:降维与聚类
Scanpy 分析 scRNA-seq:降维与聚类
|
5月前
|
存储 SQL Cloud Native
热烈祝贺 Flink 2.0 存算分离入选 VLDB 2025
Apache Flink 2.0架构实现重大突破,论文《Disaggregated State Management in Apache Flink® 2.0》被VLDB 2025收录。该研究提出解耦式状态管理架构,通过异步执行框架与全新存储引擎ForSt,实现状态与计算分离,显著提升扩展性、容错能力与资源效率,推动Flink向云原生演进,开启流计算新时代。
778 1
热烈祝贺 Flink 2.0 存算分离入选 VLDB 2025
|
5月前
|
机器人 数据安全/隐私保护 Python
企业微信自动回复软件,企业微信自动回复机器人,python框架分享
企业微信机器人包含完整的消息处理流程,支持文本消息自动回复、事件处理、消息加密解密等功能
|
5月前
|
JavaScript API C++
TypeScript 核心概念:`type` vs `interface`,如何明智选择?
TypeScript 核心概念:`type` vs `interface`,如何明智选择?
|
5月前
|
存储 数据可视化 数据挖掘
单细胞分析: Scanpy 核心绘图 (2)
单细胞分析: Scanpy 核心绘图 (2)
单细胞分析: Scanpy 核心绘图 (2)
|
7月前
|
存储 数据可视化 Python
单细胞RNA速率分析: scVelo入门教程
单细胞RNA速率分析: scVelo入门教程
单细胞RNA速率分析: scVelo入门教程
|
4月前
|
算法 数据可视化 数据挖掘
空间转录组: 降维聚类+差异分析
空间转录组: 降维聚类+差异分析
空间转录组: 降维聚类+差异分析
|
5月前
|
人工智能 程序员 API
Anthropic Cookbook:开发者可以参考的Claude AI高效开发指南
作为配套资源的Anthropic Cookbook开源项目,更是凭借其丰富的代码示例和实用指南,在GitHub上获得了18k+颗星的高度认可。
189 7
Anthropic Cookbook:开发者可以参考的Claude AI高效开发指南
|
5月前
|
缓存 索引
基于Reactor模式的高性能网络库之缓冲区Buffer组件
Buffer 类用于处理 Socket I/O 缓存,负责数据读取、写入及内存管理。通过预分配空间和索引优化,减少内存拷贝与系统调用,提高网络通信效率,适用于 Reactor 模型中的异步非阻塞 IO 处理。
204 3