封面
❝
熟悉师兄公众号的都应该清楚,师兄之前的推文主要集中在各种类型的科研绘图上!但是不少粉丝小伙伴们还是反应,只知道绘图,数据不会分析,还是不行的呀!没错,拿不到可靠的分析结果,只知道绘图,这当然是远远不够的!因此,
学习各种常用的生信数据分析则必然成为了每一个生信人必须要经历的事情。
因此,后续的推文中,师兄会尽可能地多更新一些有关数据分析的内容,可能包含的系列包括《R语言数据处理基本技巧》、《从零开始学单细胞转录组》、《从零开始学空间转录组》等;
本系列,师兄将
从单细胞转录组学开始
,带领大家一起
从零开始学单细胞
!系列内容可以详见下方大纲!
说明:
由于本系列教程还是强调
面对完全零基础小白
,所以很多内容师兄会介绍的非常细,对于部分已经入门的老手来说可能比较多余,所以
大家选择性阅读即可!
本系列主要内容目录及单细胞学习交流群,请看Part 1;
本期主要内容,请看Part 2;
合作服务器推荐及生信师兄粉丝专属优惠详情,请看Part 3;
如果您觉得本系列文章对你有帮助的话,欢迎
点赞、收藏、在看+转发
!您的支持是师兄持续更新的最大动力!
Part 1 系列介绍
1.1 内容大纲
单细胞转录组系列教程目录
1.2 生信师兄单细胞学习交流群
❝
当然了,好的学习过程离不开详尽地交流讨论和重难点答疑!因此,在发布教程的同时,师兄也成立了
《生信师兄单细胞学习交流群》
用于本系列内容的学习交流。需要的小伙伴可以扫描下方二维码,添加师兄微信后备注
“单细胞学习交流群”
后付费加群!
1.2.1
群内资源:
-
本系列所有免费及付费内容的配套学习资源、代码资源及示例数据;
群内资源(以上图课程目录为准)
-
师兄会在群内提供不定时答疑,满足答疑要求的问题师兄会尽可能抽时间回答;
-
1.2.2 入群费用
-
入群费用:
¥299元(每集赞1个抵扣1元,至多抵扣100元!此优惠永久有效!)
1.2.3 本系列不含视频教程
-
目前,师兄还没有足够的时间进行视频课程的录制,所以
本系列教程不包含视频课程
!但是如果大家需要,师兄也一定会尽可能抽时间录制课程!
-
如果后续推出视频课程
,还是和《R语言科研绘图进阶版视频教程》一样,
加群的小伙伴届时可凭借入群截图,抵扣购课差价。
所以,早入群早享受吧!
1.2.4 声明
❝
-
是否加群,纯属自愿!
本系列的大部分内容会是免费阅读,
所以完全支持白嫖!
但是看完还请动动你的手指,
点个赞!点个在看!如果能转发那就太感谢了!
-
加群可以
获取本系列所有付费部分内容,代码,示例数据,以及定期答疑的交流群
!
-
如果考虑好加群,就
早加早享受,随着群内资源的增加,入群的费用也可能会随之增加
!
-
优惠方式
:
点赞 + 在看,并转发这个系列任意一篇文章至朋友圈,每集赞1个抵扣1元,至多抵扣100元!此优惠永久有效哦!
Part2 质控(Quality Control)
质控(QC)
是对单细胞数据进行筛选和评估的过程,
旨在去除低质量的细胞和可能的技术噪声,以保证数据的准确性和可靠性。
常见的质控指标包括:
2.1 单细胞中检测到的基因种类数(Number of Features)
2.1.1 定义
-
每个细胞中检测到的基因种类数是评估细胞质量的重要指标。基因种类数过少可能表示该细胞是低质量的,含有较少的生物信息。
-
对应的Seurat术语:nFeatures_RNA
❝
Tips:
初学者可能对于
Features
这个词一头雾水,怎么突然冒出个特征?
其实可以非常形象的理解一下,如果
细胞是一个工厂
,那么如果你想了解这个工厂是怎么运作的,就得看这个工厂不同的部门分别在干啥?做了哪些产出?
不同部门的分工合作就是这个工厂的一个个特征!
对应于转录组数据中,
每个基因的表达水平就反映了当下这个细胞在干啥?所以基因就是反应细胞状态的一个特征!
2.1.2 质控意义
-
当你了解了基因就是一个反应不同细胞状态的特征的时候,你就清楚了,
如果特征数量太少了,你就很难评估一个细胞到底是啥状态了
!因为A工厂某个部门生产出了一颗螺丝钉有点问题,你并不能一棍子就给这个工厂打死!所以,要想全面评估一个工厂,
要从多方面、多角度同时出发!对于细胞也是这个道理!
-
在测序过程中:
基因数过低的细胞可能是捕获率低或细胞破碎或空beads。
2.1.3 实操
-
在实际分析过程中,当你读取数据时就已经在质控了!通过设置合适的
min.features
参数来确保保留有价值的生物信息和剔除低质量细胞之间取得平衡。常见的参数范围为200-500 个特征(基因)。
# 创建Seurat对象时进行细胞和基因的初步过滤:
seurat_object 200, min.cells = 3)
# 查看特征数量分布
VlnPlot(seurat_object, features = "nFeature_RNA")
❝
注意:
除了对细胞进行过滤以外,通常还需要
对基因也进行过滤
,即仅在过少的细胞中表达的基因需要被去除!这种基因可能只是
背景噪音或技术误差
,因此其可能并不具备生物学意义。此外,去除这些稀有表达的基因可以减少数据集的稀疏性,
降低数据分析的复杂性和计算成本
。
min.cells
参数的设置通常取决于具体的实验设计和数据集的特性。一般情况下,
min.cells
的值可以设置在 3 到 10 之间,对于细胞数量较少的数据集,可以选择较小的 min.cells 值,比如 3。这样可以保留更多的基因,避免过度过滤。对于细胞数量较多的数据集,可以选择较大的 min.cells 值,比如 5 或 10。这样可以更严格地过滤掉低表达的基因,减少噪音。当然,如果某些基因在特定细胞类型中非常重要,但在其他细胞类型中表达较少,可以适当降低
min.cells
值,以确保这些关键基因被保留。
2.2 UMI计数(Unique Molecular Identifiers, UMI):
2.2.1 定义
-
UMI是单细胞RNA测序技术中用于
唯一标识每个转录本的小分子标签
。在样本制备过程中,UMI被添加到每个cDNA分子上,以消除PCR扩增过程中产生的偏差和重复。UMI计数可以精确地反映每个细胞中转录本的实际数量,避免了由于技术性重复导致的定量偏差。
-
❝
如果这里还不清楚UMI到底是干啥的?可以看师兄的这篇推文:单细胞测序技术的原理及必须熟悉的术语!
2.2.2 意义
-
UMI计数(nCounts_RNA)与基因数(nFeatures_RNA)一般存在非常强的正相关关系
,这很好理解,当一个细胞中检测到的UMI数量增加时(总Counts数增加了),意味着捕获到的转录本数量一般也会更多。
-
对于拥有很少的UMI分子数的细胞,很可能是细胞破损或捕获失败,因此应该移除。如果过高可能是doublets或multiplets,及双细胞或多细胞。
这两种情况都需要考虑到,并且在后续分析之前进行合理质控!
2.2.3 实操
-
可视化UMI计数分布
:通过可视化UMI计数的分布,可以初步了解数据的质量情况。
# 可视化UMI计数分布
VlnPlot(seurat_object, features = "nCount_RNA")
-
筛选高质量细胞
:根据UMI计数的分布情况,设置合理的阈值筛选高质量细胞。例如,可以剔除UMI计数过低或过高的细胞。
# 筛选UMI计数在合理范围内的细胞
seurat_object 500 & nCount_RNA 25000)
# 再次可视化筛选后的UMI计数分布
VlnPlot(seurat_object, features = "nCount_RNA")
-
计算UMI计数的其他质控指标(可选)
:为了进一步评估数据质量,可以计算UMI计数与其他质控指标的关系,如基因种类数(Number of Features)和线粒体基因比例(Percentage of Mitochondrial Genes)。
# 可视化UMI计数与其他质控指标的关系
FeatureScatter(seurat_object, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
# 计算线粒体基因比例(可选)
seurat_object[["percent.mt"]] "^MT-")
FeatureScatter(seurat_object, feature1 = "nCount_RNA", feature2 = "percent.mt")
2.3
线粒体基因比例
2.3.1 定义
-
线粒体基因比例(Percentage of Mitochondrial Genes)
是指单个细胞中线粒体基因表达量占总基因表达量的比例。在单细胞RNA测序数据中,线粒体基因比例通常用来评估细胞的健康状态。
-
计算方式
:线粒体基因比例是通过
计算线粒体基因的UMI计数占总UMI计数的百分比来得到的
。例如,如果一个细胞中有1000个UMI,其中50个是线粒体基因的UMI,那么线粒体基因比例就是5%。
2.3.2 意义
线粒体基因比例是单细胞转录组数据质控的重要指标,主要体现在以下几个方面:
-
评估细胞健康状态
:线粒体基因的表达量与细胞的代谢活动和应激反应密切相关。高比例的线粒体基因通常表示该细胞可能处于应激状态或已经死亡。
-
减少技术噪音
:技术性问题如细胞破裂或RNA降解等也会导致线粒体基因比例增加。通过质控可以有效减少这些技术噪音的影响。
2.3.3 实操
# 计算线粒体基因比例
seurat_object[["percent.mt"]] "^MT-")
-
可视化线粒体基因比例分布
:通过可视化线粒体基因比例的分布,可以初步了解数据的质量情况。
# 可视化线粒体基因比例分布
VlnPlot(seurat_object, features = "percent.mt")
-
筛选高质量细胞
:根据线粒体基因比例的分布情况,设置合理的阈值筛选高质量细胞。例如,可以剔除线粒体基因比例过高的细胞,一般将阈值设置为为5%。
# 筛选线粒体基因比例低于5%的细胞
seurat_object 5)
# 再次可视化筛选后的线粒体基因比例分布
VlnPlot(seurat_object, features = "percent.mt")
-
计算线粒体基因比例与其他质控指标的关系(可选)
:为了进一步评估数据质量,可以计算线粒体基因比例与其他质控指标(如UMI计数和检测到的基因种类数)的关系。
# 可视化线粒体基因比例与UMI计数之间的关系
FeatureScatter(seurat_object, feature1 = "percent.mt", feature2 = "nCount_RNA")
# 可视化线粒体基因比例与检测到的基因种类数之间的关系
FeatureScatter(seurat_object, feature1 = "percent.mt", feature2 = "nFeature_RNA")
2.4 双细胞(Doublets)
双细胞(doublets)
是指在单细胞RNA测序中,两个细胞的RNA样本被错误地合并在一起的现象。这些双细胞会影响数据的质量和下游分析的准确性,因此在数据质控过程中,需要识别和去除这些双细胞。
2.4.1 常用的双细胞识别方法
-
Scrublet
:一个基于机器学习的方法,通过分析细胞间基因表达模式来预测双细胞。
-
DoubletFinder
:一个流行的R包,结合统计学方法和机器学习,能够识别潜在的双细胞。
❝
注意:由于双细胞的去除需要用到标准化和降维后的结果,因此,这部分内容师兄会在后面的分享完标准化和降维之后,单独出一期进行详细讲解!
2.5 完整代码
# 安装并加载Seurat和SeuratData包
if (!requireNamespace("Seurat", quietly = TRUE)) install.packages("Seurat")
if (!requireNamespace("SeuratData", quietly = TRUE)) install.packages("SeuratData")
library(Seurat)
library(SeuratData)
library(ggplot2)
# 安装并加载pbmc3k数据集
# InstallData("pbmc3k") # 数据下载不下来就多下载几遍;
data("pbmc3k")
############# 质控01: 创建Seurat对象的同时,对细胞和基因进行初步过滤 -----------
seurat_object min.cells = 3, min.features = 200)
# 查看特征数量分布
VlnPlot(seurat_object, features = "nFeature_RNA"