scanpy单细胞分析官网示例全解析(二)全网最详细及细节

scanpy学习 教程 就像seurat教程一样 Tutorials — Scanpy 1.9.1 documentation 教程汇总 所有关于scanpy的教程 Usage Principles — Scanpy 1.9.1 documentation 总的介绍 API — Scanpy 1.9.1 documentation 常用命令汇总总结 读取数据 Datasets读取数据集 内置数据集 https://scanpy-tutorials.readthedocs.io/en/latest/plotting/core.html sca 阅读详情
AI摘要

本文详细介绍了scanpy库中的核心绘图功能,包括UMAP散点图、颜色编码的聚类分析、dotplot、violinplot、matrixplot等,并展示了如何使用leiden和louvain算法进行聚类,以及rank_genes_groups用于特征基因的可视化和比较。

本文介绍scanpy的一些Core plotting functions,核心画图功能。

使用的数据为软件自带的数据

1.导包及参数设置

import scanpy as sc
import pandas as pd
from matplotlib.pyplot import rc_context

sc.set_figure_params(dpi=100, color_map = 'viridis_r')
sc.settings.verbosity = 1
sc.logging.print_header()

2.读取数据

自带数据,只有700个细胞,765个高变基因,已经有很多数据计算过了,如pca,umap等

最重要的是有细胞类型信息

pbmc = sc.datasets.pbmc68k_reduced()

3.散点图,scatter plot

①

rc_context控制图的大小

umap算法对数据降维之后,上色可以用很多种数据。一个点代表一个细胞,该细胞有什么数据都可以用来上色,比如基因的表达量,count数,细胞类型等等

with rc_context({'figure.figsize': (4, 4)}):
    sc.pl.umap(pbmc, color=['CD79A', 'MS4A1', 'IGJ', 'CD3D', 'FCER1A', 'FCGR3A', 'n_counts', 'bulk_labels'],frameon=True)

②

给每个簇上一个颜色

首先使用leiden或者louvain算法计算cluster,然后保存下来聚类结果分别为clusters1和clusters2

作图时color='clusters'1或2即可

sc.tl.leiden(pbmc, key_added='clusters1', resolution=0.5)
sc.tl.louvain(pbmc, key_added='clusters2', resolution=0.5)
with rc_context({'figure.figsize': (5, 5)}):
    sc.pl.umap(pbmc, color='clusters1', add_outline=True, legend_loc='on data',
               legend_fontsize=12, legend_fontoutline=2,frameon=False,
               title='leiden clustering of cells', palette='Set1')
with rc_context({'figure.figsize': (5, 5)}):
    sc.pl.umap(pbmc, color='clusters2', add_outline=True, legend_loc='on data',
               legend_fontsize=12, legend_fontoutline=2,frameon=False,
               title='louvain clustering of cells', palette='Set1')

这里有一个疑问,umap和leiden及louvain是什么关系?leiden或者louvain聚类之后,也是用sc.pl.umap函数画图,而该函数是画umap结果的;其次leiden和louvain算法对点的位置没有影响,区别仅在于某些点划分到哪个簇,所以是umap算法对数据进行降维,并作图到二维坐标上,然后聚类算法如leiden及louvain决定哪些点划分到一个簇?嗯!粗浅地这么判断,有大佬知道请留言!

4.点图,dotplot

①

Identification of clusters based on known marker genes

基于已知的maker gene识别簇

#不同细胞的maker基因
marker_genes_dict = {
    'B-cell': ['CD79A', 'MS4A1'],
    'Dendritic': ['FCER1A', 'CST3'],
    'Monocytes': ['FCGR3A'],
    'NK': ['GNLY', 'NKG7'],
    'Other': ['IGLL1'],
    'Plasma': ['IGJ'],
    'T-cell': ['CD3D'],
}
#点的大小代表在该cluster中有多少细胞表达了某基因,点的颜色代表在该cluster中某基因的平均表达量
#dendrogram参数表示将图聚类
sc.pl.dotplot(pbmc, marker_genes_dict, groupby='clusters1', dendrogram=True)

点的大小代表某个簇中,有多少的细胞表达了该基因

点的颜色代表某个簇中,该基因的平均表达量

②

由上图可以推断出各个cluster分别是什么细胞,将序号0-8改成相对应的细胞名字、

在obs属性的clusters1变量是由leiden算法计算的聚类结果,用0-8数字表示,将数字表示的细胞类型在obs属性中新生成一个‘cell type’变量,如下图

cluster2annotation = {
     '0': 'Monocytes',
     '1': 'Dendritic',
     '2': 'T-cell',
     '3': 'NK',
     '4': 'B-cell',
     '5': 'Dendritic',
     '6': 'Plasma',
     '7': 'Other',
     '8': 'Dendritic',
}
# add a new `.obs` column called `cell type` by mapping clusters to annotation using pandas `map` function
pbmc.obs['cell type'] = pbmc.obs['clusters1'].map(cluster2annotation).astype('category')
#将数字换做对应的细胞类型
sc.pl.dotplot(pbmc, marker_genes_dict, groupby='cell type', dendrogram=True)

同样在聚类散点图中,也可以将数字换做对应的细胞类型

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

5.violin plot,小提琴图

①

小提琴图展示不同cluster中基因表达量

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

小提琴图可以画obs属性中任何数值类型的数据,如画出各个cluster表达的基因数量,线粒体基因百分比

②

堆叠小提琴图stacked-violin plot

sc.pl.stacked_violin(pbmc, marker_genes_dict, groupby='clusters1', swap_axes=False, dendrogram=True)

③

matrixplot,矩阵图

#表达量标准化为0-1
sc.pl.matrixplot(pbmc, marker_genes_dict, 'clusters1', dendrogram=True, cmap='Blues', standard_scale='var', colorbar_title='column scaled\nexpression')

还可以标准化gene的表达量,自定义设置范围,这里设置的是-2到2,并且新生成一个数据层layer,包含了标准化后的的数据

利用标准化后的数据作图,cmap是表示颜色的字符串,这里使用use a diverging(发散的) color map (in this case RdBu_r where _r means reversed).

pbmc.layers['scaled'] = sc.pp.scale(pbmc, copy=True).X
sc.pl.matrixplot(pbmc, marker_genes_dict, 'clusters1', dendrogram=True,
                 colorbar_title='mean z-score', layer='scaled', vmin=-2, vmax=2, cmap='RdBu_r')

6.Combining plots in subplots,合并若干图

import matplotlib.pyplot as plt
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(20,4), gridspec_kw={'wspace':0.9})
ax1_dict = sc.pl.dotplot(pbmc, marker_genes_dict, groupby='bulk_labels', ax=ax1, show=False)
ax2_dict = sc.pl.stacked_violin(pbmc, marker_genes_dict, groupby='bulk_labels', ax=ax2, show=False)
ax3_dict = sc.pl.matrixplot(pbmc, marker_genes_dict, groupby='bulk_labels', ax=ax3, show=False, cmap='viridis')

7.heatmap热图,tracksmap轨迹图

sc.pl.heatmap(pbmc, marker_genes_dict, groupby='clusters1', cmap='viridis', dendrogram=True)
sc.pl.tracksplot(pbmc, marker_genes_dict, groupby='clusters1', dendrogram=True)

8.针对maker gene可视化

①

画出每个簇前四个高变基因

sc.pl.rank_genes_groups_dotplot(pbmc, n_genes=4)

②

还可以将表达量换成foldchange

但是按照官网的代码会报错,报错信息#报错信息Please run `sc.tl.rank_genes_groups` with 'n_genes=adata.shape[1]' to save all gene scores. Currently, only 100 are found

应该是还没有按照groups计算rank gene,就是说在每个簇中基因的顺序还能没有计算,要先计算

sc.tl.rank_genes_groups默认调用method='t-test',计算后跑出来的图与官网不一致,将其改成wilcoxon后,与官网一致

#默认调用method='t-test',计算后跑出来的图与官网不一致,将其改成wilcoxon后,与官网一致
sc.tl.rank_genes_groups(pbmc,groupby='clusters1',method='wilcoxon')
##上图是表达量,下图是foldchange,数据是与剩下(rest)相比较计算得到的foldchange,fc能更好显示数据间的差异
#报错信息Please run `sc.tl.rank_genes_groups` with 'n_genes=adata.shape[1]' to save all gene scores. Currently, only 100 are found
sc.pl.rank_genes_groups_dotplot(pbmc, n_genes=4, values_to_plot='logfoldchanges', min_logfoldchange=3, vmax=7, vmin=-7, cmap='bwr')

③

也可以指定某些groups画出来,画出1,5两个簇前30个基因,并且最小fc为4

sc.pl.rank_genes_groups_dotplot(pbmc, n_genes=30, groups=['1', '5'], values_to_plot='logfoldchanges', min_logfoldchange=4, vmax=7, vmin=-7, cmap='bwr')

发现没有那么多基因超过4

这里fold change是跟剩余的簇相比计算的,如1簇跟剩余的簇的合集相比计算fc值

④

其它图可视化maker gene

#Visualize marker genes using matrixplot
sc.pl.rank_genes_groups_matrixplot(pbmc, n_genes=3, use_raw=False, vmin=-3, vmax=3, cmap='bwr', layer='scaled')
#Visualize marker genes using stacked violin plots
sc.pl.rank_genes_groups_stacked_violin(pbmc, n_genes=3, cmap='viridis_r')
#Visualize marker genes using heatmap
sc.pl.rank_genes_groups_heatmap(pbmc, n_genes=3, use_raw=False, swap_axes=True, vmin=-3, vmax=3, cmap='bwr', layer='scaled', figsize=(10,7), show=False);
#Visualize marker genes using tracksplot
sc.pl.rank_genes_groups_tracksplot(pbmc, n_genes=3)

⑤

Comparison of marker genes using split violin plots,分隔小提琴图比较maker gene

这婀娜的图让我想起篮球中的小提琴变向

每个簇与剩余簇比较,这里只展示0簇

with rc_context({'figure.figsize': (9, 1.5)}):
    sc.pl.rank_genes_groups_violin(pbmc, n_genes=20, jitter=False)

9.dendrogram功能

上面很多图都有一个参数dendrogram=True,这代表将图聚类生成一个树状的分支

# compute hierarchical clustering using PCs (several distance metrics and linkage methods are available).
sc.tl.dendrogram(pbmc, 'bulk_labels')
ax = sc.pl.dendrogram(pbmc, 'bulk_labels')

10.相关性correlation

不同细胞之间的相关性

sc.pl.correlation_matrix(pbmc, 'bulk_labels', figsize=(5,3.5))

obs属性里‘cell type’相关性

sc.pl.correlation_matrix(pbmc, 'cell type', figsize=(5,3.5))

obs属性里‘clusters1’相关性

sc.pl.correlation_matrix(pbmc, 'clusters1', figsize=(5,3.5))

Seurat 单细胞转录组测序数据分析教程(三)——python(scanpy) 文章参考至,做了一个更详细的解读。本教程探讨了 scanpy 的可视化可能性,分为三个部分:嵌入的散点图(例如 UMAP、t-SNE)使用已知标记基因鉴定簇差异表达基因的可视化在本教程中,我们将使用来自 10x 的数据集,其中包含来自PBMC的 68k 个细胞。Scanpy 在其分布中包括该数据集的简化样本,该数据集仅包含 700 个细胞和 765 个高度可变的基因。该数据集已经过预处理和 UMAP 计算。在本教程中,我们还将使用以下文献标记:B细胞:CD79A、MS4A1。 阅读详情

相关推荐

单细胞分析(15)—— Seurat → Scanpy:Seurat 数据转换为 Scanpy

在单细胞 RNA-seq (scRNA-seq) 数据分析中,Seurat(R 语言)和 Scanpy(Python)是最常用的两个工具。尽管 Seurat 在 R 端提供了强大的数据处理和可视化功能,但 Scanpy 结合了。这样,你的 Seurat 数据成功转换到 Scanpy,同时支持多种降维坐标,并在转换过程中避免了。因此,将 Seurat 处理的单细胞数据转换为 Scanpy 兼容的。

阅读文献,记录学习笔记 1218

单细胞分析的 Python 包 Scanpy(图文详解)

文章目录一、安装二、使用1、准备工作2、预处理过滤低质量细胞样本3、检测特异性基因4、主成分分析(Principal component analysis)5、领域图,聚类图(Neighborhood graph)6、检索标记基因7、保存数据8、番外 一、安装 如果没有conda 基础,参考: Conda 安装使用图文详解(2021版) pip install scanpy conda install -y -c conda-forge leidenalg 二、使用 1、准备工作 # 载入包 import

Baimoc 4万+

GPT-5.5不是新模型,而是需重构的AI操作系统

AI大模型已从‘静态推理工具’演进为‘可编程智能体’,其核心不再仅是参数规模,而在于推理过程的可观测性、可控性与可调度性。GPT-5.5标志着这一范式跃迁:它将每次token生成附带结构化reasoning_trace元数据,使推理成为可中断、可监控、可校验的运行时对象;Codex则作为原生AI操作系统,提供Fast/Deep/Cyber三重执行引擎与上下文分层管理能力。这种架构升级带来显著技术价值——提升复杂任务成功率、强化安全策略执行、支持长会话状态保持,广泛应用于生物信息分析、代码生成、科研计算等高阶

congsikuai0611的博客 387

python小白入门单细胞分析scanpy

Scanpy 和 Seurat 基本上完全一样,Scanpy 构建的对象叫做 AnnData 对象,他的数据存储是以4 个模块存储

生信小博士的博客 6677

飞控芯片的隐形战场:传感器冗余与实时OS的可靠性革命

本文深入探讨飞控芯片在工业级无人机中的可靠性设计,聚焦传感器冗余架构与实时操作系统(RTOS)的容错机制。通过多IMU备份、自适应加权融合算法及NuttX、ChibiOS等RTOS的故障隔离技术,确保系统在极端环境下毫秒级自愈。文章还涵盖开源生态如PX4的跨平台移植及RISC-V架构的应用,为高可靠性飞控系统提供关键技术参考。

z5a6b的博客 877

致远OA系统表单相关操作记录(一)

致远OA系统表单相关操作

weixin_59666050的博客 6103

scanpy单细胞分析官网示例全解析(一)全网最详细及细节

scanpy使用分享

cuixueyi的博客 5789

国土变更调查中六类拓扑错误的成因分析与高效修复实践

本文深入分析了国土变更调查中六类拓扑错误的成因,包括边界不一致和不规则图形等常见问题,并提出了高效的自动化修复实践。通过智能咬合算法、引力-斥力平衡模型等核心技术,显著提升了修复效率,节省人工质检时间70%。文章还分享了实战中的避坑指南和黄金法则,为相关从业人员提供了宝贵经验。

weixin_29202213的博客 359

scanpy单细胞分析官网示例全解析(三)全网最详细及细节

本文介绍scanpy的空间转录组分析功能

cuixueyi的博客 2612

遥感大模型核心技术之自监督预训练技术研究(2025年9月版)

本文系统探讨了自监督预训练技术在遥感大模型构建中的核心作用。随着遥感数据进入"大数据"时代,传统监督学习面临"数据丰富、标签贫乏"的瓶颈,而自监督预训练通过设计代理任务从无标签数据中学习特征表示,成为驱动大模型发展的关键引擎。文章分析了遥感领域对自监督预训练的三大独特挑战:多源异构性、地理空间约束和时空动态性,并提出了针对性解决方案:掩码自编码(MAE)技术及其演进、地理对比学习与多模态融合、位置感知预训练与多任务学习。

panshengwu的博客 842

利用autojs制作抢购支付宝消费劵的手机脚本

前期准备工作 1.打开支付宝,点击中间的抢消费券的广告 2.点击左上角,将抢购页面添加到首页 3.查看支付宝首页是否出现消费劵 . autojs代码 "auto"; functiontaskstart(){ sleep(1000); launchApp('支付宝'); toast("正在打开支付宝应用"); sleep(1000); varxf=textContains("消费").findOne().bounds(); ...

洛阳泰山的博客 1万+

Scanpy(1)数据结构和样本过滤

Scanpy 是一个可扩展的工具包,用于分析与 AnnData(一种数据结构)联合构建的单细胞分析数据。通过conda,使用命令cd。

xiaoyaozizai017的博客 2397

R语言中5种正态性检验的方法

统计学中的t检验和方差分析等方法的应用条件是样本都来自正态总体或近似正态总体,只有符合这个条件,才能用这些方法来检验各样本所属的总体参数的差异显著性。文本向大家介绍在R语言中检验正态性的几种方法: 1、Kolmogorov-Smirnov检验 K-S检验检验单一样本是否来自某一特定分布。比如检验一组数据是否为正态分布。它的检验方法是以样本数据的累积频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。K-S检验的原假设和备择假设为: H0:样本所来自的总体分布服从

Mrrunsen的博客 2万+

最全的Scanpy教程笔记 Preprocessing and clustering 3k PBMCs

代码来源scanpy的官方教程代码的解释来源web本人也在学习scanpy分析单细胞数据,但是网络上对于scanpy的流程并没有太多详细的解释。这些是我上网搜索的相关解释,仅供参考,不喜勿视。

weixin_43314378的博客 3654

基于MATLAB的语音声强度和响度分析及处理

综上所述,本文介绍了如何使用MATLAB进行语音信号的声强度和响度分析,并提供了相应的源代码。通过这些工具和方法,可以更好地理解和处理语音信号的声强度和响度特性,为语音信号处理和音频应用提供支持。声强度(Intensity)和响度(Loudness)是语音信号中常用的两个重要参数,用于描述声音的强度和感知响度。响度均衡化:可以通过对语音信号施加不同的加权滤波器,调整信号的频谱分布,从而改变声音的响度。除了分析语音信号的声强度和响度,MATLAB还提供了丰富的工具和函数,用于处理语音信号的声强度和响度。

COWizard的博客 617

3步!Spring Boot+OCR引擎秒提身份证/营业执照?手把手教你从零实现!

OCR技术革新文档识别效率 本文演示了如何利用Spring Boot+Tesseract OCR+OpenCV构建自动化文档识别系统。相比传统人工录入,OCR技术可实现: 5秒极速提取身份证/营业执照关键信息 精准识别中文文本(准确率90%+) 正则过滤自动匹配结构化数据 技术要点: OpenCV图像预处理(灰度化+二值化) Tesseract多语言OCR识别 正则表达式精准提取证件号码 效率提升达100倍,错误率降低90%,适用于金融、政务等需要批量处理证件的场景。

java专栏 905

Scanpy(一)AnnData数据结构与一些API用法介绍

目录Scanpy简介与安装 Scanpy简介与安装 Scanpy 是一个可扩展的工具包,用于分析与 AnnData 联合构建的单细胞分析数据。

白景屹的博客 2万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

scanpy 单细胞分析包图文详解 01 | 深入理解 AnnData 数据结构

一、环境准备: 搭建 Python 高效开发环境: Pycharm + Anaconda 二、安装 scanpy pip install scanpy 三、AnnData 1、AnnData 介绍与结构 AnnData 是用于存储数据的对象,一般作为 scanpy 的数据存储格式。 主要由以下几部分构成: 功能 数据类型 adata.X 矩阵数据 numpy,scipy sparse,matrix adata.obs 观察值数据 pandas dataframe adata.v

Baimoc 9286

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

如何用Scanpy轻松搞定单细胞数据分析?科研人员必备的Python工具包

单细胞RNA测序技术的飞速发展,让我们得以窥探细胞的"个性化"基因表达模式。但面对海量的单细胞数据,你是否常常感到无从下手?Scanpy作为一款专为单细胞数据分析设计的Python工具包,就像一位高效的科研助手,能帮你轻松处理百万级细胞数据,从预处理到可视化一站式完成! ## ???? 什么是Scanpy? Scanpy是一个**开源免费**的单细胞基因表达数据分析工具,它与anndata数据结构...

gitblog_00659的博客 750

Truffle接口适配器终极指南:统一区块链交互的10个核心功能解析

Truffle接口适配器是区块链开发中的关键技术组件,它提供了统一的区块链交互接口,让开发者能够无缝连接不同的网络和账本系统。作为一个专业的以太坊开发工具,Truffle通过接口适配器简化了与各种区块链网络的交互过程,无论是Ethereum主网、测试网还是私有链,都能通过统一的API进行访问。本文将深入解析Truffle接口适配器的10个核心功能,帮助开发者快速掌握这一强大工具的使用方法。 ##

gitblog_00588的博客 1014

scanpy保存图片注意点

scanpy保存图片注意点

qq_45759229的博客 6465

scanpy: 空间转录组基因数据分析与可视化

本教程基于Scanpy展示10X空间转录组数据分析流程,包括数据读取、预处理、质控、可视化、聚类及差异分析。

weixin_45700352的博客 2525

单细胞学习(13)—— Seurat → Scanpy 分析流程

seurat 分析流程转到Scanpy 分析流程的简要笔记,涵盖了从数据读入到细胞注释的主要环节,并附上常用函数的Seurat vs. Scanpy 对照表。该笔记既可作为工作流程指南,也能在两个分析平台之间快速切换和比较。

阅读文献,记录学习笔记 1771

scanpy单细胞分析流程

梳理一下scanpy单细胞分析流程(处理的是scRNA-seq)。

sinat_28916141的博客 2294

python单细胞分析scanp,小白入门必看!

基本概念介绍。

weixin_68789096的博客 2279

Scanpy单细胞分析终极指南:从入门到精通的完整教程

Scanpy是Python生态中功能最强大的单细胞数据分析工具包,专为处理大规模单细胞RNA测序数据而生。作为生物信息学领域的多功能工具,Scanpy让复杂的单细胞分析变得简单直观,即使是初学者也能快速上手。本文将带你全面了解Scanpy的核心功能、分析流程和最佳实践,助你成为单细胞数据分析的高手!😊 ## 什么是Scanpy及其核心优势 Scanpy基于AnnData数据结构构建,提供了一

gitblog_01142的博客 430
上一篇: scanpy单细胞分析官网示例全解析(一)全网最详细及细节
下一篇: scanpy单细胞分析官网示例全解析(三)全网最详细及细节
cuixueyi
博客等级 码龄5年 85粉丝 5原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuixueyi

干了兄弟们!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值