Я очень новичок в распараллеливании задач в R. На самом деле, я сейчас не могу правильно запустить любой скрипт. Поскольку у меня огромный недостаток знаний по этой теме c, мне было интересно, сможет ли кто-нибудь из вас помочь мне разобраться с этим.
Я стремлюсь выполнить анализ с использованием пакета R BAYOU (https://github.com/uyedaj/bayou) с общим количеством 10 различных прогонов, которые будут позже объединены. Сценарий примерно такой. Обратите внимание, что я записал некоторые комментарии:
library(bayou)
library(ape)
#Loading tree and data
tree <- read.tree("tree.tree")
data_tot <- read.table("data.csv", sep=";", dec=".", header=T)
mydata <- data.frame(data_tot[,"name"],data_tot[,"mean"])
mydata2 <- data.frame(data_tot[,"name"], data_tot[,"SE"])
dat.2n <- mydata[,2]
names(dat.2n) <- as.character(mydata[,1])
se.2n <- mydata2[,2]
names(se.2n) <- as.character(mydata2[,1])
#Prior
priorOU.2n <- make.prior(tree, ...)
#I think the parallel lines should start here, right?
library(foreach)
library(doParallel)
number_of_cores = detectCores() #8
print(paste("Number of cores = ", number_of_cores, sep = ''))
cluster = makeCluster(number_of_cores)
registerDoParallel(cluster)
#Now I will do 10 runs, that are the same lines, just changing the object name
#Run 1
startpars.2n <- priorSim(priorOU.2n, tree, plot=T, cex=0.1)$pars[[1]]
priorOU.2n(startpars.2n)
mcmcOU.2n_1 <- bayou.makeMCMC(tree, dat.2n, SE=se.2n, prior=priorOU.2n, startpar=startpars.2n,
new.dir=TRUE, outname="./modelOU_r001", plot.freq=NULL) # Set up the MCMC
mcmcOU.2n_1$run(2500000) # Run the MCMC
chainOU.2n_1 <- mcmcOU.2n_1$load()
summary.2n_1 <- summary(chainOU.2n_1)
saveRDS(chainOU.2n_1, file = "mcmcOU_1.Rdata")
#Run 2
... #Remaining runs
stopCluster(cluster); print("Cluster stopped.")
registerDoSEQ()
list_chains <- list(chainOU.2n_1, chainOU.2n_2, [...])
combine <- combine.chains(list_chains, burnin.prop = 0.3 )
summary.2n <- summary(combine )
plotSimmap.mcmc(combine, burnin = 0, pp.cutoff = 0.3, cex = 0.1)
save.image(file = "mcmcOU.Rdata")
Я не могу запустить скрипт. Я сделал несколько изменений, но всегда есть где-то ошибка (например, "In for (утверждение в утверждениях) {: закрытие неиспользуемого соединения [ любое число ]" ...). Не могли бы вы сообщить мне ваши мысли по поводу этого сценария? Видите ли вы какие-либо улучшения, которые можно было бы сделать, чтобы я мог быть уверен, что анализ правильно работает в параллельном режиме на моем компьютере?
Большое спасибо заранее,
С наилучшими пожеланиями