关于 scanpy
Scanpy 是面向单细胞 RNA 测序研究的 Python 分析工具,适用于研究细胞群体与状态。它以 AnnData 管理表达数据,并提供降维、聚类和轨迹分析流程。
主要功能
- 01AnnData 表达矩阵与元数据管理
- 02质量控制与归一化
- 03PCA、UMAP 和 t-SNE 降维
- 04细胞聚类与标记基因分析
- 05发育轨迹推断
适用场景
- 01分析单细胞 RNA 测序数据
- 02识别异质组织中的细胞类型
- 03比较不同条件下的细胞群体
- 04研究发育轨迹
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tondevrel/ scientific-agent-skills --skill scanpy安装后在 Claude Code 中输入/scanpy确认已加载。
详细介绍
Scanpy - 单细胞分析
Scanpy 处理高维生物数据,通过 PCA/UMAP 降维,以识别组织或微生物组中的稀有细胞群。
适用场景
- 分析单细胞 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. Load dataset (AnnData object)
adata = sc.read_h5ad("cells.h5ad")
# Or: adata = sc.read_10x_mtx("path/to/mtx")
# 2. QC and Normalization
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. Dimensionality Reduction & Visualization
sc.pp.highly_variable_genes(adata)
sc.tl.pca(adata)
sc.tl.umap(adata)
sc.pl.umap(adata, color=['cell_type', 'gene_A'])
# 4. Clustering
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
# Reconstruct developmental trajectories
sc.tl.paga(adata)
sc.pl.paga(adata)
adata.uns['iroot'] = np.flatnonzero(adata.obs['cell_type'] == 'stem')[0]
sc.tl.dpt(adata)
差异表达
# Find marker genes for each cluster
sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon')
sc.pl.rank_genes_groups(adata, n_genes=20)
Scanpy 彻底改变了单细胞生物学,使研究人员能够绘制组织的细胞多样性图谱,并了解细胞如何分化和发挥功能。
评论
支持 Markdown