## 循环找出降维聚类最佳参数
###################
library(tidyverse)
library(foreach)
library(doParallel)
cl <- makeCluster(16) # 根据实际情况选择较小的核心数
registerDoParallel(cl)
kparams = c(10,20,30)
resolutions = c(0.011,0.015,0.02,0.05,0.1,0.2,0.3)
seeds = c(1,100,1000)
results = foreach(Resolution = resolutions,
.packages = c("dplyr", "Seurat"),
.combine = rbind) %dopar% {
res2 = data.frame()
for (m in 1:length(kparams)) {
for (n in 1:length(seeds)) {
library(tidyverse)
Kparm = kparams[m]
Seed = seeds[n]
seob = LBSH_seob
seob <- FindNeighbors(seob,
k.param = Kparm, #找邻居的量
dims = 1:30)
seob <- FindClusters(seob,
resolution = Resolution, # 分辨率值越大,cluster 越多
random.seed = Seed) #随机种子
cluster_number = seob@meta.data$seurat_clusters %>% unique() %>% length()
seob.markers <- FindAllMarkers(seob,
only.pos = T,
min.pct = 0.25,
logfc.threshold = 1,
test.use = "roc" )
res <- data %>%
group_by(cluster) %>%
arrange(desc(myAUC)) %>%
slice_head(n = 5) %>%
summarise(average_myAUC = mean(myAUC)) %>%
mutate(all_average_AUC = mean(average_myAUC)) %>%
mutate(Top_number = 5) %>%
bind_rows(
data %>%
group_by(cluster) %>%
arrange(desc(myAUC)) %>%
slice_head(n = 10) %>%
summarise(average_myAUC = mean(myAUC)) %>%
mutate(all_average_AUC = mean(average_myAUC)) %>%
mutate(Top_number = 10)
) %>%
bind_rows(data %>%
group_by(cluster) %>%
arrange(desc(myAUC)) %>%
slice_head(n = 1000) %>%
summarise(average_myAUC = mean(myAUC)) %>%
mutate(all_average_AUC = mean(average_myAUC)) %>%
mutate(Top_number = 1000)) %>%
mutate(k.param = Kparm) %>%
mutate(resolution = Resolution) %>%
mutate(random.seed = Seed)
res2 = res2 %>% bind_rows(res)
}
}
return(res2)
}
# 停止集群
stopCluster(cl)
results %>% write_csv(file = "~/Program/wanggang/shihuang/result/LBSH/cluster_cycle.csv")
###################
单细胞 循环找出降维聚类最佳参数
最新推荐文章于 2024-09-14 17:22:51 发布