我不知道这个问题是否特定于dada2。我猜它不是,但我无法以其他方式重现它。
我正在尝试mclapply
从parallel
带有dada2的Jupyter笔记本内部的库中使用。并行作业运行,尽管它完成内核的那一刻就死了,我无法重新启动它。在 R 终端内运行相同的工作流程没有问题。
在小型数据集上运行它没有问题:
library(dada2)
library(parallel)
derepFs <- mclapply('seqs/test_f.fastq', derepFastq)
derepFs
运行相同的工作流程但使用完整的数据集(对不起,我无法在此处提供它,它太大,并且不公开)会导致内核死机,这让我认为这是一个内存问题,正在运行它在 Jupyter 环境之外没有问题。运行这个lapply
没有问题。尝试在具有更多内存的 AWS 实例上运行它也会导致相同的错误。内核死亡时的终端输出是:
Error in poll.socket(list(sockets$hb, sockets$shell, sockets$control), :
Interrupted system call
Calls: <Anonymous> -> <Anonymous> -> poll.socket -> .Call
Execution halted
监控内存显示它永远不会变得非常高~200MB。所以我的问题是,如果它不是记忆,它会是什么?我意识到可能很难回答这个问题,但正如我所说,我无法发布完整的数据集。R 版本 3.2.2、Jupyter 版本 1.0.0、Dada2 版本 0.99.8、OSX 10.11.4