seurat单细胞测序单细胞

scRNAseq双细胞去除-1: DoubletFinder

2021-05-01  本文已影响0人  Hayley笔记

10x平台的双细胞率(符合泊松分布1):

根据Poisson分布,单个液滴包含超过一个细胞(doublets或multiplets)的频率随着上机细胞的浓度而改变。通常如果上样细胞浓度较高,doublets/multiplets的频率也会增加。因此,单细胞实验中的doublets事件限制了实验时的细胞通量。

1. DoubletFinder概述

官网:https://github.com/ddiez/DoubletFinder

Cell Systems原文2

1.1 原理

DoubletFinder的原理是从现有的矩阵的细胞中根据我们预先定义好的细胞类型模拟一些双细胞出来(比如单核和T细胞的双细胞、B细胞和中性粒细胞的双细胞等等),将模拟出的双细胞和原有矩阵的细胞混合在一起,进行降维聚类,原则上人工模拟的doublets会与真实的doublets距离较近,因此计算每个细胞K最近邻细胞中人工模拟doublets的比例 (pANN),就可以根据pANN值对每个barcode的doublets概率进行排序。另外依据泊松分布的统计原理可以计算每个样本中doublets的数量,结合之前的细胞pANN值排序,就可以过滤doublets了。

1.2 步骤

DoubletFinder可以分为以下几个步骤:

pN增大,人造双细胞比例(红色点)会上升。pK增大,用于计算pANN的最近邻细胞(黑色带黄边点)数目增加

(6)根据期望doublet rate,估计总doublets数的期望值;
(7)(可选)根据Poisson doublet形成率估计异型来源的(heterotypic)doublets期望值。这里涉及一个同型来源(homotypic)doublets的校正步骤,同型doublets的比例(pHomo)等于每个细胞类型频率的平方和。将1-pHomo作为异型doublets的频率pHeter,计算异型doublets的期望数量;
(8)根据doublets的期望数设置pANN的阈值,鉴定并去除doublets。

在数据分布中,BC(bimodality coefficient,双峰性系数)用来衡量与单峰分布的偏离程度。在DoubletFinder里,作者假设最优的pK-pN组合应该使得pANN呈非单峰分布,也就是说doublet(pANN偏大)和singlet(pANN偏小)能够截然分成两个峰。对于每个pK-pN组合都可以根据pANN的分布计算BC值。对给定pK值下的所有pN(例如从5%到25%),计算BC值的均值μBC,以及方差σ2BC,二者相除得到 BCmvn 值,选取最大值所代表的pK作为最优pK。

研究结果显示单纯改变pN参数几乎不影响分类效果,因此一般默认将pN设置为25%,以生成足够多的artificial doublets。但pK过小或过大都会使分类准确性下降。可以理解为如果doublets本身的表达谱差异较大,pK过小时,相当于只能找到和人工doublets相似度较高的doublets,假阴性率会增加。而pK过大时,每个细胞的pANN就会被稀释。因此pK值需要根据不同数据集进行优化 当数据中细胞类型较少时,pK值对结果的影响不大,而随着细胞类型的增多,过大的pK反而降低分类的准确性,因此更加强调了参数优化的重要性。而当数据的异质性不大(例如pDE为0.5%)时,无论pK如何改变,其分类效果都不是很好,这也再次强调了DoubletFinder不适用于异质性较低的数据集,例如经过分选纯化的单一细胞类型样本。
1.3 缺点

DoubletFinder对同种类型细胞间的doublets(即从转录相似的细胞状态衍生的doublets)不敏感。

2. 使用:

双细胞去除与Seurat的交互:在seurat标准流程进行到TSNE和UMAP降维之后,FindAllMarkers之前进行DoubletFinder操作。

devtools::install_github('chris-mcginnis-ucsf/DoubletFinder')
library(DoubletFinder)
#这是一个测试最佳参数的过程,运行速度慢
sweep.res.list <- paramSweep_v3(scRNA, PCs = 1:pcSelect, sct = F)
#使用log标准化,sct参数设置为 sct = F(默认 ),如使用SCT标准化方法,设置为T
sweep.stats <- summarizeSweep(sweep.res.list, GT = FALSE)  
bcmvn <- find.pK(sweep.stats) #可以看到最佳参数的点
pK_bcmvn <- bcmvn$pK[which.max(bcmvn$BCmetric)] %>% as.character() %>% as.numeric() #提取最佳pk值

双细胞有两种,同源双细胞和异源双细胞。DoubletFinder只能检测异源双细胞。所以需要把同源双细胞可能的比率去除掉,以优化期望的doublets数量。

# DoubletRate = ncol(pbmc)*8*1e-6 #按每增加1000个细胞,双细胞比率增加千分之8来计算
DoubletRate = 0.075    # 直接查表,10000细胞对应的doublets rate是~7.6%
DoubletRate = ncol(pbmc)*8*1e-6 #更通用
#估计同源双细胞比例,根据modelHomotypic()中的参数人为混合双细胞。这里是从seurat_clusters中来混双细胞 
homotypic.prop <- modelHomotypic(scRNA$seurat_clusters) #最好提供celltype,而不是seurat_clusters。
# 计算双细胞比例
nExp_poi <- round(DoubletRate*ncol(scRNA)) 
# 使用同源双细胞比例对计算的双细胞比例进行校正 
nExp_poi.adj <- round(nExp_poi*(1-homotypic.prop))

## 使用确定好的参数鉴定doublets
scRNA <- doubletFinder_v3(scRNA, PCs = 1:pcSelect, pN = 0.25, pK = pK_bcmvn, 
                          nExp = nExp_poi.adj, reuse.pANN = F, sct = F)

## 结果展示,分类结果在pbmc@meta.data中
DimPlot(pbmc2, reduction = "umap", group.by = "DF.classifications_0.25_0.3_171")

主要参数:

参数 意义
seu 这是一个经过充分处理的Seurat对象(即,在NormalizeData,FindVariableGenes,ScaleData,RunPCA和RunTSNE全部运行之后)。
pN 定义生成的人工双峰的数量 (variable numbers of artificial doublets),表示为合并的真实人工数据的一部分。基于DoubletFinder在很大程度上是pN不变,默认设置为25%
pK 定义用于计算pANN (proportion of artificial nearest neighbors) 的PC邻域大小,表示为合并的真实人工数据的一部分。没有设置默认值,应该根据每个scRNA-seq数据集调整pK。
nExp 定义用于进行最终双峰/单峰预测的pANN阈值。可以从10X / Drop-Seq中的细胞密度估计该值,并根据同型双峰的估计比例进行调整。

⚠️注意:预测的双细胞不一定全部都是双细胞,不同软件的预测结果也有差异。因此,在去除双细胞的时候要谨慎。

确定是否剔除预测双细胞的一般步骤:
1. 查看降维图上预测出来的双细胞位置。在降维图上,真实的双细胞更倾向于处于主群边缘或游离出来。
2. 如果预测的双细胞单独聚成群,查看其marker基因是否具有明显的多种细胞marker。
3. 不是我们主要研究对象的细胞群中的双细胞可以不去除。


参考文献:

  1. Estimating the frequency of multiplets in single-cell RNA sequencing from cell-mixing experiments
  2. DoubletFinder: Doublet Detection
    in Single-Cell RNA Sequencing Data Using Artificial Nearest Neighbors

参考:
https://www.jianshu.com/p/0cb401b1ebe6

上一篇下一篇

猜你喜欢

热点阅读