[ PROMPT_NODE_27274 ]
standard_workflow
[ SKILL_DOCUMENTATION ]
# Scanpy 单细胞分析标准工作流
本文档概述了使用 scanpy 分析单细胞 RNA-seq 数据的标准工作流。
## 完整分析流水线
### 1. 数据加载与初始设置
python
import scanpy as sc
import pandas as pd
import numpy as np
# 配置 scanpy 设置
sc.settings.verbosity = 3 # 详细程度:错误 (0), 警告 (1), 信息 (2), 提示 (3)
sc.settings.set_figure_params(dpi=80, facecolor='white')
# 加载数据 (多种格式)
adata = sc.read_10x_mtx('path/to/data/') # 针对 10X 数据
# adata = sc.read_h5ad('path/to/data.h5ad') # 针对 h5ad 格式
# adata = sc.read_csv('path/to/data.csv') # 针对 CSV 格式
### 2. 质量控制 (QC)
python
# 计算 QC 指标
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], percent_top=None, log1p=False, 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, :]
# 可视化 QC 指标
sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'],
jitter=0.4, multi_panel=True)
sc.pl.scatter(adata, x='total_counts', y='pct_counts_mt')
sc.pl.scatter(adata, x='total_counts', y='n_genes_by_counts')
### 3. 标准化
python
# 标准化至每个细胞 10,000 个计数
sc.pp.normalize_total(adata, target_sum=1e4)
# 对数据进行对数转换
sc.pp.log1p(adata)
# 将标准化数据存储在 raw 中以备后用
adata.raw = adata
### 4. 特征选择
python
# 识别高变基因
sc.pp.highly_variable_genes(adata, min_mean=0.0125, max_mean=3, min_disp=0.5)
# 可视化高变基因
sc.pl.highly_variable_genes(adata)
# 筛选高变基因
adata = adata[:, adata.var.highly_variable]
### 5. 缩放与回归
python
# 回归掉每个细胞总计数和线粒体基因百分比的影响
sc.pp.regress_out(adata, ['total_counts', 'pct_counts_mt'])
# 将数据缩放至单位方差和零均值
sc.pp.scale(adata, max_value=10)
### 6. 降维
python
# 主成分分析 (PCA)
sc.tl.pca(adata, svd_solver='arpack')
# 可视化 PCA 结果
sc.pl.pca(adata, color='CST3')
sc.pl.pca_variance_ratio(adata, log=True)
# 计算邻域图
sc.pp.neighbors(adata, n_neighbors=10, n_pcs=40)
# UMAP 可视化
sc.tl.umap(adata)
# t-SNE (UMAP 的替代方案)