如何使用 Scanpy 进行单细胞 RNA-seq 数据分析
解决单细胞转录组分析的复杂流水线问题:通过 AI 指导使用 Scanpy 库,快速实现从原始数据加载、细胞质控、UMAP 可视化到细胞类型注释的端到端分析流程。
为什么需要这个技能
单细胞 RNA-seq(scRNA-seq)产生的数据量极大且具有高噪声特性。传统分析依赖复杂的生物信息学命令行工具,门槛较高。
Scanpy 提供了基于 Python 的可扩展工具集,核心在于 AnnData 数据结构,能够将表达矩阵、细胞元数据和基因注释统一管理。掌握该技能后,研究员可以通过编写脚本实现分析过程的可重复性,并高效生成符合学术出版标准的 UMAP 或热图。
适用场景
- 处理
.h5ad、10X或CSV格式的单细胞测序数据。 - 执行质量控制(QC),剔除低质量细胞或高线粒体含量细胞。
- 进行 PCA 降维、UMAP/t-SNE 可视化以及 Leiden 聚类。
- 鉴定各细胞群的 Marker Genes(标记基因)并进行细胞类型注释。
- 分析细胞发育轨迹(Trajectory Inference)或计算伪时间(Pseudotime)。
核心工作流
1. 环境初始化与数据加载
配置绘图参数并加载数据到 AnnData 对象中。
import scanpy as sc
sc.settings.set_figure_params(dpi=80, facecolor='white')
# 从 10X 格式加载
adata = sc.read_10x_mtx('path/to/data/')
# 或从 h5ad 加载
adata = sc.read_h5ad('path/to/data.h5ad')
2. 质量控制与预处理
过滤低质量细胞,并进行标准化和对数转换。
# 标记线粒体基因并计算指标
adata.var['mt'] = adata.var_names.str.startswith('MT-')
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)
# 过滤细胞与基因
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)
adata = adata[adata.obs.pct_counts_mt < 5, :]
# 标准化与 Log 转换
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
3. 降维、聚类与可视化
识别高变基因,通过 PCA 和 UMAP 观察细胞分布,并使用 Leiden 算法分组。
# 选取高变基因并缩放
sc.pp.highly_variable_genes(adata, n_top_genes=2000)
adata = adata[:, adata.var.highly_variable]
sc.pp.scale(adata, max_value=10)
# 降维与聚类
sc.tl.pca(adata)
sc.pp.neighbors(adata, n_neighbors=10, n_pcs=40)
sc.tl.umap(adata)
sc.tl.leiden(adata, resolution=0.5)
# 可视化
sc.pl.umap(adata, color='leiden')
4. 标记基因鉴定与注释
通过差异表达分析寻找各簇的特征基因,从而定义细胞类型。
# 计算标记基因
sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon')
sc.pl.rank_genes_groups(adata, n_genes=25)
# 映射细胞类型
cluster_to_celltype = {'0': 'B cells', '1': 'T cells'}
adata.obs['cell_type'] = adata.obs['leiden'].map(cluster_to_celltype)
下载和安装
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md。
你可能还需要
暂无推荐