用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进行单细胞数据分析的基本流程。当然,实际应用中可能需要根据具体数据和研究目的进行调整。希望这篇文章能帮助你开启单细胞数据分析之旅!
热门推荐
婚姻风险是什么?从法律角度解析五大风险及应对方法
如何坚决抵制刷单行为?抵制刷单有哪些有效措施?
新生儿冬天24小时开空调:健康隐患与湿度调节
故宫回应“灵异事件”传闻:西部区域开放后将不攻自破
阴天下雨关节痛怎么办?专家给出五大应对方法
揭开高品质毛巾的秘密!一窥今治认证的来源、检验项目
脑萎缩:病因、治疗与预防全解析
申诉书的正确格式图片及制作指南
这个浑身是宝的初夏限定款,每天最多吃五颗
爱德华兹25分狼队迎5连胜!福克斯22+3,轰20+7马刺找到2号位答案
电池测试流程和检测方法
揭秘原神抽卡机制:73发后概率递增,你真的了解吗?
民营企业投身聚变 以开放生态加速商业化进程
急性泪囊炎如何治疗
车辆维修开票指南:增值税专用发票与普通发票使用详解
张献忠是什么人?他的一生是什么样的?
火星也存在温室效应?揭秘火星气候的关键因素
唐朝时期,皇宫内外、官员之间相互是如何称呼的?
胸口中间按压疼是怎么回事
项目经理被举报如何处理:保持冷静、调查真相、保护举报人
物业公司有义务协助业主成立业主委员会吗
阿米卡星用盐水还是糖水?医生告诉你
一念逍遥功法属性技能解析
哪个自媒体平台值得推荐?
巴曙松:疫情冲击下的经济转型与融资创新
蒸鸡蛋时,记住不要用生水,“行家”教你这4点,吃起来入口即化
如何正确执行服务器重启操作?
一直开着 LED 灯带安全吗?
下象棋如何变得高手?从入门到进阶的完整指南
高中数学成绩太差怎么办?怎么提高成绩