1. 参考资料
2. DoubletFinder 概述
- 首先这个包的输入是经过预处理(包括归一化、降维,但不一定要聚类)的 Seurat 对象
-
doubletFinder_v3
的部分参数
-
seu
,一个经过充分处理的 Seurat 对象(具体如前所述
-
PCs
,根据自己数据的实际情况选择有统计学意义的 PC,具体如何选择见:https://www.jianshu.com/p/ddf520db5d6f 的 4.1 节
-
pN
,定义生成的人工双峰的数量,表示为合并的真实人工数据的一部分,默认设置为 25%
-
pK
,定义用于计算 pANN 的 PC 邻域大小,表示为合并的真实 real-artificial 数据的一部分,对于每个 scRNA-seq 数据集都需要调整 pK,止于 pK 怎么挑,我摊牌了,不想学,具体见文首的链接
-
nExp
,定义了用于进行最终 doublet/singlet 预测的 pANN 阈值,可以从 10X / Drop-Seq 装置中的细胞装载密度来最好地估计该值,并根据 homotypic doublets 对估计比例进行调整。
-
sct
取决于你走的 Seurat 流程是用 NormalizeData()
+ FindVariableFeatures()
+ ScaleData()
还是 SCTransform()
- 注意:不能用于整合了多个样本(在不同 lane 测序)的 Seurat 对象
3. 代码
## 因为几乎全都是中间变量,就没好好命名
# 找最佳 PK
sweep.res.list_kidney <- paramSweep_v3(seurat, PCs = 1:40, sct = T)
sweep.stats_kidney <- summarizeSweep(sweep.res.list_kidney, GT = FALSE)
bcmvn_kidney <- find.pK(sweep.stats_kidney)
mpK<-as.numeric(as.vector(bcmvn_kidney$pK[which.max(bcmvn_kidney$BCmetric)]))
# 找最佳 nExp
annotations <- seurat@meta.data$seurat_clusters
homotypic.prop <- modelHomotypic(annotations)
nExp_poi <- round(0.075*ncol(seurat@assays$integrated@data))
nExp_poi.adj <- round(nExp_poi*(1-homotypic.prop))
# 找 Doublet
seurat_filterDouble <- doubletFinder_v3(seurat, PCs = 1:40, pN = 0.25, pK = mpK, nExp = nExp_poi, reuse.pANN = FALSE, sct = T)
4. 结果
> table(seurat_integrated_filterDouble$DF.classifications_0.25_0.28_1042)
Doublet Singlet
1042 12849
友情宣传