Как правильно сделать параллельный скрипт на R для моего компьютера windows? - PullRequest
0 голосов
/ 05 марта 2020

Я очень новичок в распараллеливании задач в 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 (утверждение в утверждениях) {: закрытие неиспользуемого соединения [ любое число ]" ...). Не могли бы вы сообщить мне ваши мысли по поводу этого сценария? Видите ли вы какие-либо улучшения, которые можно было бы сделать, чтобы я мог быть уверен, что анализ правильно работает в параллельном режиме на моем компьютере?

Большое спасибо заранее,

С наилучшими пожеланиями

...