问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

用Scanpy轻松上手单细胞数据处理!

创作时间:
作者:
@小白创作中心

用Scanpy轻松上手单细胞数据处理!

引用
CSDN
12
来源
1.
https://blog.csdn.net/cuixueyi/article/details/135938451
2.
https://m.blog.csdn.net/cuixueyi/article/details/135716328
3.
https://blog.csdn.net/qq_40966210/article/details/114015479
4.
https://blog.csdn.net/qq_52813185/article/details/129899666
5.
https://blog.csdn.net/u011262253/article/details/118733569
6.
https://www.jianshu.com/p/8627435e9414
7.
https://m.blog.csdn.net/weixin_43314378/article/details/129819365
8.
https://blog.csdn.net/qq_40943760/article/details/125201948
9.
https://blog.csdn.net/zfyyzhys/article/details/142575789
10.
https://cloud.tencent.com/developer/article/1771783
11.
https://www.zhuangqingyuan.site/2024/02/17/%E5%8D%95%E7%BB%86%E8%83%9E%E8%BD%AC%E5%BD%95%E7%BB%84%E5%88%86%E6%9E%90%E5%AE%9E%E6%88%98%EF%BC%88%E4%B8%80%EF%BC%89%EF%BC%9A%E6%95%B0%E6%8D%AE%E9%87%87%E9%9B%86/
12.
https://cloud.tencent.com/developer/article/2453660

单细胞测序技术的出现,让科学家们能够以前所未有的精度研究细胞间的差异。而Scanpy,作为单细胞数据分析领域最常用的Python库之一,为研究人员提供了一套完整的数据处理和分析工具。本文将带你从零开始,逐步掌握Scanpy的核心功能和使用方法。

01

环境准备

在开始之前,你需要确保已经安装了Python环境。推荐使用Anaconda,它包含了大多数科学计算所需的包。接下来,我们需要安装Scanpy及其依赖包:

conda create -n sc python=3.8
conda activate sc
conda install -c conda-forge scanpy
conda install -c conda-forge matplotlib seaborn
02

数据读取与预处理

Scanpy支持多种数据格式,其中最常见的是10X Genomics的输出格式。以下是一个基本的数据读取示例:

import scanpy as sc

# 读取10X格式数据
adata = sc.read_10x_mtx(
    './filtered_gene_bc_matrices/hg19/',  # 数据目录
    var_names='gene_symbols',  # 使用基因符号作为变量名
    cache=True  # 使用缓存加快后续读取速度
)

# 确保基因名唯一
adata.var_names_make_unique()

数据读取完成后,我们需要对数据进行预处理,包括过滤低质量细胞和基因:

# 过滤细胞:每个细胞至少表达200个基因
sc.pp.filter_cells(adata, min_genes=200)

# 过滤基因:每个基因至少在3个细胞中表达
sc.pp.filter_genes(adata, min_cells=3)

接下来,我们需要计算一些质量控制指标,特别是线粒体基因的占比:

# 标记线粒体基因
adata.var['mt'] = adata.var_names.str.startswith('MT-')

# 计算QC指标
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)

# 可视化QC指标
sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'])
sc.pl.scatter(adata, x='total_counts', y='pct_counts_mt')
sc.pl.scatter(adata, x='total_counts', y='n_genes_by_counts')

基于这些指标,我们可以进一步过滤数据:

# 过滤线粒体DNA占比超过5%的细胞
adata = adata[adata.obs.pct_counts_mt < 5, :]

# 过滤基因数超过2500的细胞
adata = adata[adata.obs.n_genes_by_counts < 2500, :]
03

数据标准化与降维

预处理完成后,我们需要对数据进行标准化和归一化:

# 总计数归一化
sc.pp.normalize_total(adata, target_sum=1e4)

# 对数转换
sc.pp.log1p(adata)

# 找到高变基因
sc.pp.highly_variable_genes(adata, min_mean=0.0125, max_mean=3, min_disp=0.5)

接下来,我们使用PCA进行降维:

sc.pp.scale(adata, max_value=10)
sc.tl.pca(adata, svd_solver='arpack')
04

聚类分析与可视化

基于PCA结果,我们可以构建细胞间的相似性网络,并进行聚类分析:

sc.pp.neighbors(adata, n_neighbors=10, n_pcs=40)
sc.tl.umap(adata)
sc.tl.leiden(adata)

最后,我们可以通过UMAP可视化聚类结果:

sc.pl.umap(adata, color=['leiden'])
05

差异基因分析

为了理解不同细胞群的特征,我们可以进行差异基因分析:

sc.tl.rank_genes_groups(adata, 'leiden', method='t-test')
sc.pl.rank_genes_groups_heatmap(adata, n_genes=10, groupby='leiden')

这将帮助我们识别每个细胞群的标志基因,为进一步的生物学解释提供线索。

通过以上步骤,你已经掌握了Scanpy进行单细胞数据分析的基本流程。当然,实际应用中可能需要根据具体数据和研究目的进行调整。希望这篇文章能帮助你开启单细胞数据分析之旅!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号