#双联体细胞检测,使用spc-double环境
library(DoubletFinder)
library(Seurat)
#读入
liver.merge_CCA=readRDS(file = "/work/home/kywgroup01/user/spc/work/livermergev4.RData")
#预处理------------------------
liver.merge_CCA <- NormalizeData(liver.merge_CCA)
liver.merge_CCA <- FindVariableFeatures(liver.merge_CCA)
liver.merge_CCA <- ScaleData(liver.merge_CCA)
liver.merge_CCA <- RunPCA(liver.merge_CCA)
liver.merge_CCA <- RunUMAP(liver.merge_CCA, dims = 1:10)
#设置参数优化pk值----------------------
sweep.res <- paramSweep(liver.merge_CCA, PCs = 1:10, sct = FALSE)
sweep.stats <- summarizeSweep(sweep.res, GT = FALSE)
bcmvn <- find.pK(sweep.stats) # 选择最高BCmetric对应的pK值
optimal_pK <- as.numeric(as.character(bcmvn$pK[which.max(bcmvn$BCmetric)]))
#估计双联体比例(nExp)-----------------
nExp <- round(0.008 * ncol(liver.merge_CCA)) # 按需调整比例
#运行DoubletFinder-----------------
class(liver.merge_CCA)
print(liver.merge_CCA[["pca"]])
print(optimal_pK)
print(nExp)
liver.merge_CCA <- doubletFinder(
liver.merge_CCA,
PCs = 1:10, # 与PCA使用的dims一致
pN = 0.25, # 默认参数
pK = optimal_pK, # 优化后的pK值
nExp = nExp, # 估计的双联体数
reuse.pANN = FALSE, # 是否复用中间结果(这句会导致报错)
sct = FALSE # 若使用SCT标准化则设为TRUE
)
#结果与可视化-------------------------------
head(liver.merge_CCA@meta.data) # 列名类似"DF.classifications_0.25_0.3_30",表示参数组合
DimPlot(liver.merge_CCA, group.by = "DF.classifications_0.25_0.3_30") #可视化双联体
seurat_clean <- subset(liver.merge_CCA, DF.classifications_0.25_0.3_30 == "Singlet") #过滤双联体
使用这段代码时doubletFinder会报错,上网查没有看到中文教程,找到如下英文教程:Error in xtfrm.data.frame(x) : cannot xtfrm data frames · Issue #228 · chris-mcginnis-ucsf/DoubletFinder尝试按照其指导删除: reuse.pANN = FALSE参数,成功解决问题