[ PROMPT_NODE_27268 ]
scanpy
[ SKILL_DOCUMENTATION ]
# Scanpy:单细胞分析
## 概述
Scanpy 是一个基于 AnnData 构建的、用于分析单细胞 RNA-seq 数据的可扩展 Python 工具包。应用此技能可完成完整的单细胞工作流,包括质量控制、归一化、降维、聚类、标记基因识别、可视化和轨迹分析。
## 何时使用此技能
当您需要执行以下操作时使用此技能:
- 分析单细胞 RNA-seq 数据 (.h5ad, 10X, CSV 格式)
- 对 scRNA-seq 数据集执行质量控制
- 创建 UMAP、t-SNE 或 PCA 可视化图表
- 识别细胞簇并查找标记基因
- 基于基因表达进行细胞类型注释
- 进行轨迹推断或伪时间分析
- 生成出版级的单细胞图表
## 快速入门
### 基本导入与设置
python
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/'
### 加载数据
python
# 从 10X Genomics 加载
adata = sc.read_10x_mtx('path/to/data/')
adata = sc.read_10x_h5('path/to/data.h5')
# 从 h5ad (AnnData 格式) 加载
adata = sc.read_h5ad('path/to/data.h5ad')
# 从 CSV 加载
adata = sc.read_csv('path/to/data.csv')
### 理解 AnnData 结构
AnnData 对象是 scanpy 中的核心数据结构:
python
adata.X # 表达矩阵 (细胞 × 基因)
adata.obs # 细胞元数据 (DataFrame)
adata.var # 基因元数据 (DataFrame)
adata.uns # 非结构化注释 (dict)
adata.obsm # 多维细胞数据 (PCA, UMAP)
adata.raw # 原始数据备份
# 访问细胞和基因名称
adata.obs_names # 细胞条形码
adata.var_names # 基因名称
## 标准分析工作流
### 1. 质量控制
识别并过滤低质量的细胞和基因:
python
# 识别线粒体基因
adata.var['mt'] = adata.var_names.str.startswith('MT-')
# 计算质量控制指标
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)
# 可视化质量控制指标
sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'],
jitter=0.4, multi_panel=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, :] # 移除高线粒体比例的细胞
**使用 QC 脚本进行自动化分析:**
bash
python scripts/qc_analysis.py input_file.h5ad --outpu