单细胞 循环找出降维聚类最佳参数

##  循环找出降维聚类最佳参数
###################
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")

###################

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘融晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值