R 包 Rsge 允许将作业提交到 SGE 托管集群。它基本上将所需的环境保存到磁盘,构建作业提交脚本,通过 qsub 执行它们,然后整理结果并将它们返回给您。
因为它基本上包装了对 qsub 的调用,所以它也应该与 PBS 一起工作(尽管由于我不了解 PBS,所以我不能保证)。您可以通过更改 Rsge 关联的全局选项(options()
输出中的前缀 sge.)来更改 qsub 命令和使用的选项
它不再在 CRAN 上,但可以从 github 获得:https ://github.com/bodepd/Rsge ,尽管它看起来不再像维护了。
要使用它,请使用随包提供的应用类型函数之一:sge.apply、sge.parRapply、sge.parCapply、sge.parLapply 和 sge.parSapply,它们是 apply、rapply、rapply(t(x) ,...), lapply 和 sapply 分别。除了传递给非并行函数的标准参数之外,还需要几个其他参数:
njobs: Number of parallel jobs to use
global.savelist: Character vector giving the names of variables
from the global environment that should be imported.
function.savelist: Character vector giving the variables to save from
the local environment.
packages: List of library packages to be loaded by each worker process
before computation is started.
这两个 savelist 参数和 packages 参数基本上指定了在执行代码之前应该将哪些变量、函数和包加载到在集群机器上运行的新 R 实例中。X 的不同组件(列表项或 data.frame 行/列)在 njobs 不同的作业之间划分,并作为作业数组提交给 SGE。每个节点启动一个 R 实例,加载指定的变量、函数和包,执行代码,保存并将结果保存到 tmp 文件。控制 R 实例检查作业何时完成,从 tmp 文件加载数据并将结果重新连接在一起以获得最终结果。
例如计算基因列表的随机样本的统计数据:
library(Rsge)
library(some.bioc.library)
gene.list <- read.delim(“gene.list.tsv”)
compute.sample <- function(gene.list) {
gene.list.sample <- sample(1000, gene.list)
statistic <- some.slow.bioc.function(gene.list.sample)
return (statistic)
}
results <- sge.parSapply(1:10000, function(x) compute.sample,
njobs = 100,
global.savelist = c(“gene.list”),
function.savelist(“compute.sample”),
packages = c(“some.bioc.library”))