利用 dbscan 检测UMAP图中的Outliers
2024-06-17 本文已影响0人
Norahd
# 使用DBSCAN算法检测离群点,,离群点通常位于低密度区域。
umap_data <- FetchData(signac_obj_integ_flt,vars = c('umap_1','umap_2','cytpe'))
lapply(unique(umap_data $cytpe), function(x){
data <- umap_data %>% filter(cytpe== x)
### 关键参数: eps[检测范围];minPts[当前范围内最少应包含的细胞数量]
dbscanResult <- dbscan::dbscan(as.matrix(data[,1:2]), eps= 0.3, minPts= 60)$cluster
return({
rownames(data)[dbscanResult > 0]
})
}) %>% unlist -> inlier_Cells
options(repr.plot.width = 12, repr.plot.height = 9)
umap_data[inlier_Cells,] %>% ggplot(aes(x = umap_1, y = umap_2, color = cytpe)) + geom_point(size = 0.1)