单细胞分析

单细胞预测doublets软件

2020-02-12  本文已影响0人  生信编程日常

在做单细胞测序时,常常出现一定比例的doublets,可以通过DoubletFinder去除。


image.png

DoubletFinder 的4个步骤:

(1) 从现有单细胞数据中人为产生doublets
(2) 将人工产生的doublets与真实细胞混合在一起
(3) 用PCA降维或者用PCA距离矩阵寻找每个单元的artificial k
最近邻居(pANN)的比例;
(4) 根据预期的doublets数量进行排序和计算pANN阈值;

devtools::install_github('chris-mcginnis-ucsf/DoubletFinder')

doublets 与Seurat无缝衔接:V3 版本的Seurat用下面的函数
'paramSweep_v3' and 'doubletFinder_v3'

Seurat V2版本:

## Pre-process Seurat object -------------------------------------------------------------------------------------------------
seu_kidney <- CreateSeuratObject(kidney.data)
seu_kidney <- NormalizeData(seu_kidney)
seu_kidney <- ScaleData(seu_kidney, vars.to.regress = "nUMI")
seu_kidney <- FindVariableGenes(seu_kidney, x.low.cutoff = 0.0125, y.cutoff = 0.25, do.plot=FALSE)
seu_kidney <- RunPCA(seu_kidney, pc.genes = seu_kidney@var.genes, pcs.print = 0)
seu_kidney <- RunTSNE(seu_kidney, dims.use = 1:10, verbose=TRUE)

## pK Identification ---------------------------------------------------------------------------------------------------------
sweep.res.list_kidney <- paramSweep(seu_kidney, PCs = 1:10)
sweep.stats_kidney <- summarizeSweep(sweep.res.list_kidney, GT = FALSE)
bcmvn_kidney <- find.pK(sweep.stats_kidney)

## Homotypic Doublet Proportion Estimate -------------------------------------------------------------------------------------
homotypic.prop <- modelHomotypic(annotations)           ## ex: annotations <- seu_kidney@meta.data$ClusteringResults
nExp_poi <- round(0.075*length(seu_kidney@cell.names))  ## Assuming 7.5% doublet formation rate - tailor for your dataset
nExp_poi.adj <- round(nExp_poi*(1-homotypic.prop))

## Run DoubletFinder with varying classification stringencies ----------------------------------------------------------------
seu_kidney <- doubletFinder(seu_kidney, PCs = 1:10, pN = 0.25, pK = 0.09, nExp = nExp_poi, reuse.pANN = FALSE)
seu_kidney <- doubletFinder(seu_kidney, PCs = 1:10, pN = 0.25, pK = 0.09, nExp = nExp_poi.adj, reuse.pANN = "pANN_0.25_0.09_913")

## Plot results --------------------------------------------------------------------------------------------------------------
seu_kidney@meta.data[,"DF_hi.lo"] <- seu_kidney@meta.data$DF.classifications_0.25_0.09_913
seu_kidney@meta.data$DF_hi.lo[which(seu_kidney@meta.data$DF_hi.lo == "Doublet" & seu_kidney@meta.data$DF.classifications_0.25_0.09_473 == "Singlet")] <- "Doublet_lo"
seu_kidney@meta.data$DF_hi.lo[which(seu_kidney@meta.data$DF_hi.lo == "Doublet")] <- "Doublet_hi"
TSNEPlot(seu_kidney, group.by="DF_hi.lo", plot.order=c("Doublet_hi","Doublet_lo","Singlet"), colors.use=c("black","gold","red"))
image.png

DoubletFinder采用以下参数:

seu〜这是一个经过充分处理的Seurat对象(即,在NormalizeData,FindVariableGenes,ScaleData,RunPCA和RunTSNE全部运行之后)。

PC〜具有统计意义的主成分数,以范围为单位指定(例如,PC = 1:10)

pN〜定义生成的人工双峰的数量,表示为合并的真实人工数据的一部分。基于DoubletFinder在很大程度上是pN不变,默认设置为25%

pK〜定义用于计算pANN的PC邻域大小,表示为合并的真实人工数据的一部分。没有设置默认值,应该根据每个scRNA-seq数据集调整pK。

nExp〜定义用于进行最终双峰/单峰预测的pANN阈值。可以从10X / Drop-Seq中的细胞密度估计该值,并根据同型双峰的估计比例进行​​调整。

参考:
https://github.com/ddiez/DoubletFinder
https://zhuanlan.zhihu.com/p/82656494

欢迎关注~


上一篇下一篇

猜你喜欢

热点阅读