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

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

引言

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

基于已知标记基因识别细胞簇

通常,细胞簇需要利用众所周知的标记基因来进行标注。使用散点图,我们可以查看某个基因的表达情况,并可能将其与某个细胞簇关联起来。在此,我们将展示其他可视化的方式,用点图、小提琴图、热图以及我们称之为 ‘tracksplot’ 的图形,将标记基因与细胞簇关联起来。所有这些可视化方法汇总了相同的信息——按细胞簇拆分的表达量——而挑选最佳结果则留给研究者自行决定。

首先,我们建立一个包含标记基因的字典,因为这将允许 scanpy 自动对这些基因组进行分组标记:

marker_genes_dict = {
   
    "B-cell": ["CD79A", "MS4A1"],
    "Dendritic": ["FCER1A", "CST3"],
    "Monocytes": ["FCGR3A"],
    "NK": ["GNLY", "NKG7"],
    "Other": ["IGLL1"],
    "Plasma": ["IGJ"],
    "T-cell": ["CD3D"],
}

dotplot

一种快速检查这些基因在每个细胞簇中表达情况的方法是使用 dotplot。这种图总结了两类信息:颜色表示每个类别(在此为每个细胞簇)内的平均表达量,而点的大小则指示该类别中表达该基因的细胞比例。

此外,在图中添加 dendrogram 也很有帮助,它能把相似的细胞簇聚集在一起。层级聚类是利用各细胞簇之间 PCA components 的相关性自动计算的。

sc.pl.dotplot(pbmc, marker_genes_dict, "clusters", dendrogram=True)

使用这张图,我们可以看到 cluster 4 对应于 B-cells,cluster 2 是 T-cells 等等。这些信息可以用来按如下方式手动注释细胞:

# create a dictionary to map cluster to annotation label
cluster2annotation = {
   
    "0": "Monocytes",
    "1": "NK",
    "2": "T-cell",
    "3": "Dendritic",
    "4": "Dendritic",
    "5": "Plasma",
    "6": "B-cell",
    "7": "Dendritic",
    "8": "Other",
}

# add a new `.obs` column called `cell type` by mapping clusters to annotation using pandas `map` function
pbmc.obs["cell type"] = pbmc.obs["clusters"].map(cluster2annotation).astype("category")

sc.pl.dotplot(pbmc, marker_genes_dict, "cell type", dendrogram=True)

sc.pl.umap(
    pbmc,
    color="cell type",
    legend_loc="on data",
    frameon=False,
    legend_fontsize=10,
    legend_fontoutline=2,
)

violin plot

另一种探索标记基因的方法是使用 violin plot。在这里,我们可以看到 CD79A 在 clusters 5 和 8 中的表达,以及 MS4A1 在 cluster 5 中的表达。与 dotplot 相比,violin plot 让我们了解基因表达值在细胞间的分布情况。

with rc_context({
   "figure.figsize": (4.5, 3)}):
    sc.pl.violin(pbmc, ["CD79A", "MS4A1"], groupby="clusters")

注意:Violin plots 也可用于绘制任何保存在 .obs 中的数值型数据。例如,这里用 violin plots 比较不同 clusters 之间的基因数量以及线粒体基因所占百分比。

with rc_context({
   "figure.figsize": (4.5, 3)}):
    sc.pl.violin(
        pbmc,
        ["n_genes", "percent_mito"],
        groupby="clusters",
        stripplot=False,  # remove the internal dots
        inner="box",  # adds a boxplot inside violins
    )

stacked-violin plot

为了同时查看所有标记基因的 violin plots,我们使用 sc.pl.stacked_violin。与前文相同,添加了一条 dendrogram 用以将相似的 clusters 归为一组。

ax = sc.pl.stacked_violin(
    pbmc, marker_genes_dict, groupby="clusters", swap_axes=False, dendrogram=True
)

matrixplot

可视化基因表达的一种简单方法是使用 matrix plot。这是一种以类别为单位,展示每个基因平均表达量的 heatmap。这种类型的图基本上与 dotplot 中的颜色所传达的信息相同。

在此,我们将基因的表达量缩放到 0 到 1 之间,其中 1 表示该基因在所有 clusters 中的最大平均表达量,0 表示最小平均表达量。

sc.pl.matrixplot(
    pbmc,
    marker_genes_dict,
    "clusters",
    dendrogram=True,
    cmap="Blues",
    standard_scale="var",
    colorbar_title="column scaled\nexpression",
)

另一个有用的选项是使用 sc.pp.scale 对基因表达进行标准化。在此,我们将这一结果存储在 scale 层中。随后我们调整图的最小值和最大值,并采用一条发散型色带(本例为 RdBu_r,其中 _r 表示反转)。

# scale and store results in layer
pbmc.layers["scaled"] = sc.pp.scale(pbmc, copy=True).X

sc.pl.matrixplot(
    pbmc,
    marker_genes_dict,
    "clusters",
    dendrogram=True,
    colorbar_title="mean z-score",
    layer="scaled",
    vmin=-2,
    vmax=2,
    cmap="RdBu_r",
)

相关文章
|
存储 编解码 数据可视化
单细胞分析|Seurat中的跨模态整合
在单细胞基因组学中,新方法“桥接整合”允许将scATAC-seq、scDNAme等技术的数据映射到基于scRNA-seq的参考数据集,借助多组学数据作为桥梁。研究展示了如何将scATAC-seq数据集映射到人类PBMC的scRNA-seq参考,使用10x Genomics的多组学数据集。Azimuth ATAC工具提供了自动化的工作流程,支持在R和网页平台上执行桥接整合。通过加载和预处理不同数据集,映射scATAC-seq数据并进行评估,证明了映射的准确性和细胞类型预测的可靠性。此方法扩展了参考映射框架,促进了不同技术间的互操作性。
单细胞分析|映射和注释查询数据集
单细胞分析|映射和注释查询数据集
|
存储 固态存储 程序员
考研计算机组成原理总结(5)
考研计算机组成原理总结(5)
1093 0
|
算法 Java 调度
mybatis-plus中的雪花算法
主要介绍mybatis-plus中用到的雪花算法,如有错误或未考虑完全的地方,望不吝赐教。这里默认大家对雪花算法有一定的了解哈
6459 1
mybatis-plus中的雪花算法
|
3月前
|
机器学习/深度学习 人工智能 机器人
面向人机协作任务的具身智能系统感知-决策-执行链条建模
本文探讨了面向人机协作任务的具身智能系统建模,涵盖感知、决策与执行链条。具身智能强调智能体通过“身体”与环境互动,实现学习与适应,推动机器人技术升级。文章分析了其关键组成(感知、控制与决策系统)、挑战(高维状态空间、模拟鸿沟等)及机遇(仿真训练加速、多模态感知融合等)。通过代码示例展示了基于PyBullet的强化学习训练框架,并展望了通用具身智能的未来,包括多任务泛化、跨模态理解及Sim2Real迁移技术,为智能制造、家庭服务等领域提供新可能。
面向人机协作任务的具身智能系统感知-决策-执行链条建模
|
2月前
|
人工智能 搜索推荐 程序员
从产品经理视角深度解析五款热门AI产品:洞察创新与用户价值
本文从产品经理视角深度解析五款热门AI产品,包括ChatGPT、Midjourney、Notion AI、Perplexity与GitHub Copilot,剖析其成功要素与不足,总结AI产品设计的核心方法论,如用户体验优先、场景化落地、信任机制构建等,为AI时代的产品创新提供实践启示。
212 0
|
7月前
|
前端开发 JavaScript 开发工具
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
415 5
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
存储 编解码 数据可视化
Visium HD空间数据分析、可视化以及整合 (1)
【8月更文挑战第1天】Visium HD空间数据分析、可视化以及整合 (1)
Visium HD空间数据分析、可视化以及整合 (1)
|
数据可视化 数据挖掘 Python
"揭秘Visium HD黑科技:空间数据分析大揭秘,可视化与整合的艺术之旅!"
【8月更文挑战第20天】近年来,空间转录组技术,特别是Visium HD技术,因其高分辨率与高通量特性,在单细胞生物学领域受到广泛关注。本文通过Python演示了Visium HD数据的全流程分析:从数据准备(读取表达矩阵和空间坐标)、空间数据分析(计算基因表达统计量)、数据可视化(绘制基因表达热图和空间点分布图),到多样本数据整合,为读者提供了实用的分析指南,助力深入探索空间转录组学的奥秘。
279 4
|
搜索推荐 Java 数据库
Java中的ElasticSearch集成与实践
Java中的ElasticSearch集成与实践

热门文章

最新文章