用途
Scanpy 是一个可扩展的 Python 工具包,用于分析单细胞 RNA 测序(scRNA-seq)数据,构建在 AnnData 数据结构之上。该技能适用于完整的单细胞工作流,包括质量控制、归一化、降维、聚类、标记基因识别、可视化以及轨迹分析。
何时使用
- 分析单细胞 RNA 测序数据(.h5ad、10X、CSV 格式)
- 对 scRNA-seq 数据集执行质量控制
- 创建 UMAP、t-SNE 或 PCA 可视化
- 识别细胞簇并寻找标记基因
- 基于基因表达注释细胞类型
- 进行轨迹推断或拟时序分析
- 生成发表级单细胞图表
主要能力
数据读取与 AnnData 结构
支持从 10X Genomics(sc.read_10x_mtx、sc.read_10x_h5)、h5ad(sc.read_h5ad)和 CSV(sc.read_csv)读取数据。AnnData 对象是核心数据结构,包含表达矩阵 adata.X、细胞元数据 adata.obs、基因元数据 adata.var、非结构化注释 adata.uns、多维细胞数据 adata.obsm 以及原始数据备份 adata.raw。
标准分析工作流
- 质量控制:识别线粒体基因,计算 QC 指标(
sc.pp.calculate_qc_metrics),可视化并过滤低质量细胞和基因。 - 归一化与预处理:
sc.pp.normalize_total、sc.pp.log1p、保存原始计数、sc.pp.highly_variable_genes选择高变基因、sc.pp.regress_out回归去除不需要的变异、sc.pp.scale缩放。 - 降维:PCA(
sc.tl.pca)、邻域图(sc.pp.neighbors)、UMAP(sc.tl.umap)、t-SNE(sc.tl.tsne)。 - 聚类:推荐 Leiden 聚类(
sc.tl.leiden),可尝试多个分辨率。 - 标记基因识别:
sc.tl.rank_genes_groups,支持 wilcoxon 等方法,可生成热图、点图。 - 细胞类型注释:基于标记基因可视化与手动映射。
- 结果保存:写出 h5ad 及元数据 CSV。
常见任务
- 发表级图表:设置高 DPI、PDF 格式、自定义配色与图例。
- 轨迹推断:PAGA(
sc.tl.paga)、扩散拟时序(sc.tl.dpt)。 - 条件间差异表达:
sc.tl.rank_genes_groups指定分组与参考。 - 基因集评分:
sc.tl.score_genes。 - 批次校正:ComBat(
sc.pp.combat),或使用 Harmony、scVI 等独立包。
使用方式
快速开始
import scanpy as sc
import pandas as pd
import numpy as np
sc.settings.verbosity = 3
sc.settings.set_figure_params(dpi=80, facecolor='white')
sc.settings.figdir = './figures/'
adata = sc.read_10x_mtx('path/to/data/')
配套资源
scripts/qc_analysis.py:自动化质量控制脚本,计算指标、生成图表并过滤数据。python scripts/qc_analysis.py input.h5ad --output filtered.h5ad \ --mt-threshold 5 --min-genes 200 --min-cells 3references/standard_workflow.md:完整分步工作流,含详细说明与代码示例。references/api_reference.md:按模块组织的 scanpy 函数速查。references/plotting_guide.md:综合可视化指南。assets/analysis_template.py:从数据加载到细胞类型注释的完整分析模板。
关键参数
- 质量控制:
min_genes(通常 200-500)、min_cells(通常 3-10)、pct_counts_mt(通常 5-20%)。 - 归一化:
target_sum(默认 1e4)。 - 特征选择:
n_top_genes(通常 2000-3000)。 - 降维:
n_pcs、n_neighbors(通常 10-30)。 - 聚类:
resolution(0.4-1.2,越高簇越多)。
适用场景
适用于单细胞 RNA 测序数据的完整分析流程,从原始数据读取、质量控制、归一化、降维聚类,到标记基因识别、细胞类型注释、轨迹推断和发表级图表生成。适合生物信息学研究人员、计算生物学开发者以及需要处理 scRNA-seq 数据的科研工作流。
限制
- 仅在任务明确匹配上述范围时使用。
- 输出不应替代特定环境的验证、测试或专家审查。
- 若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。
- 官方文档:https://scanpy.readthedocs.io/ ;教程:https://scanpy-tutorials.readthedocs.io/ ;scverse 生态:https://scverse.org/ 。