在Python中,单细胞RNA测序(scRNA-seq)数据分析可以使用多种专门的工具和库,如ScanpySeurat (for R, interoperable with Python)Scvi-tools。其中,Scanpy是专门为Python设计的单细胞数据分析包,功能强大,特别适合处理大型scRNA-seq数据。下面将详细介绍如何在Python中使用这些工具进行单细胞RNA测序的标准分析流程。

1. 环境设置与数据导入

1.1 安装依赖库

可以通过以下命令安装主要的分析工具包:

pip install scanpy anndata matplotlib seaborn scikit-learn

1.2 导入数据

scRNA-seq数据通常存储在AnnData格式中,适合存储基因表达矩阵及其关联的元数据。如果使用10X Genomics数据,可以直接读取h5文件。

import scanpy as sc

# 从10X数据中读取
adata = sc.read_10x_h5("filtered_feature_bc_matrix.h5")
# 或者从CSV/TSV文件读取
adata = sc.read_csv("scRNA_data.csv")

2. 数据预处理

预处理步骤包括筛选细胞和基因、标准化、对数变换以及高变基因选择等。

2.1 筛选低质量的细胞和基因

通常过滤低表达基因和低质量细胞以提高数据质量。

# 保留表达超过200个基因的细胞,保留在3个以上细胞中表达的基因
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)

2.2 计算线粒体基因含量并过滤

高线粒体基因比例可能指示低质量细胞或凋亡细胞。

adata.var["mt"] = adata.var_names.str.startswith("MT-")
sc.pp.calculate_qc_metrics(adata, qc_vars=["mt"], percent_top=None, log1p=False, inplace=True)

# 过滤线粒体基因含量高的细胞
adata = adata[adata.obs.pct_counts_mt < 5, :]

2.3 标准化和对数变换

将每个细胞的基因表达值归一化为总表达量的1万分之一,并进行对数变换。

sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)

2.4 识别高变基因