2014-11-06 2 views
0

У меня есть сценарий R, который выполняет анализ на одной хромосоме. Я хочу запустить этот скрипт несколько раз для каждой хромосомы (1-22, X и Y). Прямо сейчас у меня есть сценарий, настроенный для принятия одного аргумента из командной строки, номера хромосомы. Я хочу отправить несколько заданий на мой сервер параллельно, поскольку анализ для одной хромосомы занимает несколько часов. После того, как я начал играть с некоторыми опциями и все погулять, я все еще не уверен, что лучший вариант, поскольку я никогда не отправлял задания параллельно серверу (сервер Sun Grid Engine). Я посмотрел на GNU parallel, но я не уверен, как его использовать или даже работает для R-скриптов. Может быть, бросить все в сценарий оболочки и отправить его на сервер? Это довольно простой вопрос, но любое направление будет принята с благодарностью!Выполнять несколько сценариев R параллельно с аргументами командной строки

+0

Читали https://www.biostars.org/p/63816/ pi.dk/1 pi.dk/4 –

+0

Показать пример кода, как вы делаете сейчас. –

+0

Да, сейчас я открываю это окно прямо сейчас. Итак, такой подход будет работать с R-скриптами? Прямо сейчас у меня нет ничего, что я просто знаю. Я могу запустить свой скрипт с аргументом типа Rscript plot_LRR_BAF_chromosome_parallel. ' – kinsigne

ответ

0
parallel Rscript plot_LRR_BAF_chromosome_parallel ::: {1..22} X Y 
+0

Эта команда работает нормально при вызове из командной строки. Я пытаюсь отправить его на сервер, но когда я вызываю его из сценария .sh или непосредственно из qsub parallel Rscript plot_LRR_BAF_chromosome_parallel ::: {1..22} XY' Он говорит 'Невозможно прочитать файл сценария из-за ошибки: открытие ошибки параллельно: нет такого файла или каталога'. Есть идеи? – kinsigne

+0

Показать пример того, как обычно вы работаете qsub. –

0

с помощью GNU сделать с опцией -j, замените __CHROM__ в вашем R сценария с именем хромосомы.

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 > [email protected] 

endef 

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

$(foreach C, $(chroms),$(eval $(call method1, $(C)))) 
Смежные вопросы