使用命令行参数并行运行多个R脚本

ki0zmccv  于 2023-05-26  发布在  其他
关注(0)|答案(3)|浏览(167)

我有一个对一条染色体执行分析的R脚本。我想对每条染色体(1-22,X和Y)重复运行此脚本。现在,我已经将脚本设置为接受来自命令行的一个参数,即染色体编号。我想并行地向服务器提交多个作业,因为分析一个染色体需要几个小时。在尝试了一些选项并在谷歌上搜索了所有内容之后,我仍然不确定最好的选择是什么,因为我从来没有将作业并行提交到服务器(Sun Grid Engine服务器)。我研究了GNU parallel,但我不确定如何使用它,或者它是否可以运行R脚本。也许把所有东西都放在一个shell脚本中,然后提交给服务器?这是一个非常基本的问题,但任何方向将不胜感激!

s1ag04yj

s1ag04yj1#

parallel Rscript plot_LRR_BAF_chromosome_parallel ::: {1..22} X Y
ql3eal8s

ql3eal8s2#

使用带有-j选项的GNUmake,将R脚本中的__CHROM__替换为染色体名称。

chroms=1 2 3 4 5 6 7 8 9 10

define method1

$$(addsuffix .out,$(1)) : script.R
    cat $$< | sed 's/__CHROM__/$(1)/g' | R --nosave > $$@

endef

all: $(addsuffix .out,$(chroms))

$(foreach C, $(chroms),$(eval $(call method1, $(C) )))
n3schb8v

n3schb8v3#

Rstudio有一种非常可靠、简单和直观的方式来运行并行脚本,称为后台作业。下面的link解释了如何使用它,但总的来说,每次你运行一个脚本,它都是并行运行的,使用多个内核,而且通常运行得更快(如果CPU和RAM不是超级忙碌的话)。有两种方法可以使用后台作业,手动和脚本:
1.手动方式:你只需打开 * 后台作业 * 并选择脚本和工作目录。然后,您可以选择是否保存全局环境。如果您的脚本已经将对象导出或保存在本地,则不必担心。例如,您可以使用染色体1到7运行脚本,然后将值从8更改为15保存脚本并运行后台作业,第三个脚本从16更改为22。这样你就可以并行运行它,但请检查CPU或RAM不要运行在太接近100%的值。
1.脚本的方式:你可以使用JobRunScript来创建带有代码的后台作业。因此,您可以从脚本中自动执行所需的更改。

相关问题