Конфигурация кластера Snakemake в сочетании с DRMMA
У меня есть вопрос, связанный с drmma и файлом конфигурации кластера в snakemake.
В настоящее время у меня есть конвейер, и я отправляю задания в кластер с помощью drmma с помощью следующей команды:
snakemake --drmaa " -q short.q -pe smp 8 -l membycore=4G" --jobs 100 -p file1/out file2/out file3/out
Проблема в том, что некоторые правила / задания требуют меньше или больше ресурсов. Я подумал, что, если бы я использовал файл кластера json, я мог бы отправлять задания с разными ресурсами. Мой файл JSON выглядит так:
{
"__default__":
{
"-q":"short.q",
"-pe":"smp 1",
"-l":"membycore=4G"
},
"job1":
{
"-q":"short.q",
"-pe":"smp 8",
"-l":"membycore=4G"
},
"job2":
{
"-q":"short.q",
"-pe":"smp 8",
"-l":"membycore=4G"
}
}
Когда я запускаю следующую команду, мои задания (job1 и job2) отправляются с параметрами по умолчанию, а не с пользовательскими:
snakemake --jobs 100 --cluster-config cluster.json --drmaa -p file1/out file2/out file3/out
Что я делаю неправильно? Неужели я не могу объединить опцию drmaa с файлом cluster-config?
1 ответ
Файл конфигурации кластера просто позволяет вам определять переменные, которые позже используются в --cluster/--cluster-sync/--drmaa
в зависимости от определенных заполнителей. Здесь нет никакой специфической магии DRMAA. Взгляните на соответствующий раздел документации снова.
Может быть, пример проясняет ситуацию:
Конфигурация кластера:
{
"__default__":
{
"time" : "02:00:00",
"mem" : 1G,
},
# more rule specific definitions here...
}
Пример аргументов snakemake для использования вышеперечисленного:
--drmaa " -pe OpenMP {threads} -l mem_free={cluster.mem} -l h_rt={cluster.time}"
или же
--cluster-sync "qsub -sync y -pe OpenMP {threads} -l mem_free={cluster.mem} -l h_rt={cluster.time}"
cluster.time
а также cluster.mem
будут заменены соответственно в соответствии с правилом.
Andreas