SuperAPI AI 工具集

scanpy

数据与分析

查看项目

更新于 10-16 02:14

技能介绍

Scanpy 是一个用于分析单细胞基因表达数据的可扩展工具包,构建在 AnnData 之上,重点支持聚类、轨迹推断和可视化。它用于处理高维生物数据,通过 PCA/UMAP 等降维方法识别组织或微生物组中的稀有细胞群体。

用途

Scanpy 适用于以下场景:分析单细胞 RNA 测序(scRNA-seq)数据;识别异质组织中的细胞类型和状态;重建发育轨迹;比较不同条件下的细胞群体;发现稀有细胞类型。

核心原则

AnnData 格式:Scanpy 使用 AnnData 对象,将表达矩阵、细胞元数据和基因注释存储在一起。

降维:将高维基因表达(20,000+ 基因)降至 2D/3D 以便可视化(PCA → UMAP/t-SNE)。

聚类:根据基因表达空间中的相似性对细胞进行分组,以识别细胞类型。

使用方式

标准导入:

import scanpy as sc import pandas as pd import numpy as np

基本模式:

1. 加载数据集(AnnData 对象)

adata = sc.read_h5ad("cells.h5ad")

或:adata = sc.read_10x_mtx("path/to/mtx")

2. 质控与归一化

sc.pp.filter_cells(adata, min_genes=200) sc.pp.filter_genes(adata, min_cells=3) sc.pp.normalize_total(adata, target_sum=1e4) sc.pp.log1p(adata)

3. 降维与可视化

sc.pp.highly_variable_genes(adata) sc.tl.pca(adata) sc.tl.umap(adata) sc.pl.umap(adata, color=['cell_type', 'gene_A'])

4. 聚类

sc.tl.leiden(adata, resolution=0.5) sc.pl.umap(adata, color='leiden')

关键规则

建议做法:设置 scanpy 配置,例如使用 sc.settings.verbosity = 3 获取进度信息;过滤低质量细胞,移除基因数过少或线粒体含量过高的细胞;分析前进行归一化,以消除测序深度差异;使用高变基因,将分析聚焦于有信息量的基因。

不建议做法:不要跳过质控,低质量细胞可能主导聚类结果;不要对原始计数使用 PCA,务必先归一化并进行对数变换;不要忽略批次效应,合并数据集时应使用批次校正(例如 sc.pp.harmony_integrate)。

高级模式

轨迹推断:

import cellrank as cr

重建发育轨迹

sc.tl.paga(adata) sc.pl.paga(adata) adata.uns['iroot'] = np.flatnonzero(adata.obs['cell_type'] == 'stem')[0] sc.tl.dpt(adata)

差异表达:

查找每个聚类的标记基因

sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon') sc.pl.rank_genes_groups(adata, n_genes=20)

Scanpy 已经革新了单细胞生物学,使研究人员能够绘制组织的细胞多样性图谱,并理解细胞如何分化与发挥功能。