Можно ли запустить dmn {DirichletMultinomial} на нескольких ядрах процессора в R?

Я анализирую данные микробиома, используя

library(phyloseq)
library(microbiome)
library(DirichletMultinomial)

и несколько других библиотек. Подгонка полиномиальных моделей Дирихле для подсчета данных dmn {DirichletMultinomial} занимает довольно много времени. Можно ли выполнять вычисления на нескольких ядрах процессора в R. Я пробовал:

dat <- abundances(pseq)
count <- as.matrix(t(dat))
fit <- lapply(1:25, dmn, count = count, verbose=TRUE)

замена на:

library(parallel)
numCores <- detectCores()
...
fit <- mclapply(1:25, dmn, count = count, verbose=TRUE, mc.cores = numCores)

но возвращает сообщение errorWarning: In mclapply(1:25, dmn, count = count, verbose = TRUE, mc.cores = numCores): все запланированные ядра обнаружили ошибки в пользовательском коде

Я использую

R version 4.0.2 (2020-06-22) -- "Taking Off Again"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin17.0 (64-bit)
> detectCores()
[1] 4

Кто-нибудь может помочь?

С уважением, Марчин


person mschmidt    schedule 24.08.2020    source источник


Ответы (1)


Да, как показано на виньетке http://bioconductor.org/packages/release/bioc/vignettes/DirichletMultinomial/inst/doc/DirichletMultinomial.pdf раздел 2, и в вашем коде возможно выполнение на нескольких ядрах.

Вероятно, что происходит то, что есть ошибки для некоторых значений X; в чем ценность подгонки? Кроме того, можно попробовать

library(BiocParallel)
fit <- bplapply(1:25, dmm, count, BPPARAM = MulticoreParam(numCores))

fit будет объектом, который можно запросить (см. виньетку BiocParallel, доступную по адресу https://bioconductor.org/packages/BiocParallel) для получения дополнительной информации об ошибках.

person Martin Morgan    schedule 24.08.2020
comment
Уважаемый Мартин, это должно быть проблема с пакетами. Я обновил их, и теперь они работают. Все ядра сейчас используются. Спасибо! - person mschmidt; 24.08.2020