【问题标题】:How to submit all R scripts in a directory using with a single .sh file with qsub?如何使用带有 qsub 的单个 .sh 文件提交目录中的所有 R 脚本?
【发布时间】:2019-05-07 15:45:02
【问题描述】:

我有一个目录 diffexp,其中包含 50 个 R 脚本,称为 diffexpRcommands_neurons_nn.R(其中 nn 是从 0050 的数字。

我想在一个集群上尽可能多地并行运行它们。

有没有一种方法可以让我使用qsub 提交所有脚本,但不必为每个.R 脚本创建单独的.sh 脚本?

基本上,我在成对的细胞簇之间进行差异表达测试(使用 Seurat 函数 FindMarkers()

由于有 52 个细胞簇,因此需要进行 1,326 次比较。 我为每个组合生成了一个命令,然后将这些命令拆分为 50 个不同的文件,每个文件有大约 25 个比较。 我们的想法是尝试一次运行每组 25 个命令,或者至少尽可能多地运行。

每个diffexpRcommands_neurons_nn.Rscript 都包含相同的标头:

source("/path/to/code/setupCSE.R")
library(gmodels)
library(Matrix)
library(RANN)
library(igraph)

load(file="/path/to/seuratobjects/alltogether_neurons.RData")

随后进行了 26 对细胞簇之间的比较:

# 1 vs 2
cluster1vs2.markers <- FindMarkers(alltogether_neurons, "1", "2")
write.table (cluster1vs2.markers,
 "/path/to/alltogether_neurons_1vs2_markers.txt",
  sep="\t", quote=F, col.names=NA)

# 1 vs 3
    cluster1vs3.markers <- FindMarkers(alltogether_neurons, "1", "3")
write.table (cluster1vs3.markers,
 "/path/to/alltogether_neurons_1vs3_markers.txt",
  sep="\t", quote=F, col.names=NA)

.
.
.

以此类推,直到最后一个文件结束diffexpRcommands_neurons_50.R

# 51 vs 53
    cluster51vs52.markers <- FindMarkers(alltogether_neurons, "51", "52")
    write.table (cluster1vs3.markers,
      "/path/to/alltogether_neurons_51vs52_markers.txt",
      sep="\t", quote=F, col.names=NA)

我开始认为我可以以某种方式运行作业数组,但我不知道这是否可能,因为每个作业都是一组不同的命令(不同的组合)。

谢谢。

【问题讨论】:

    标签: r batch-processing bioinformatics rscript qsub


    【解决方案1】:

    类似:

    library(parallel)
    cl <- makeCluster() # adjust depending on needs.
    
    files <- list.files('/diffexp', pattern = '.R*')
    parLapply(cl, files, source)
    

    【讨论】:

    • 谢谢@Axeman。我根本没想过将sourceparLapply 结合起来!在qsub 上这样做有什么缺点吗?或者我的qsub 想法显然是不可能的?
    • 我想知道的另一件事是 - 使用 qsub 我可以请求超过 1 个节点,而我相信 makeCluster() 只会让我在 1 个节点上工作,尽管有几个核心。但我不确定情况是否如此。
    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多