Можно ли определить параметры по умолчанию для памяти и ресурсов в файле конфигурации кластера, а затем при необходимости переопределить их в соответствии с конкретным правилом? Привязано ли поле resources
в правилах напрямую к файлу конфигурации кластера? Или это просто модный способ params
поля для удобства чтения?
В приведенном ниже примере, как мне использовать конфигурации кластера по умолчанию для rule a
, но использовать пользовательские изменения (memory=40000
и rusage=15000
) в rule b
?
cluster.json:
{
"__default__":
{
"memory": 20000,
"resources": "\"rusage[mem=8000] span[hosts=1]\"",
"output": "logs/cluster/{rule}.{wildcards}.out",
"error": "logs/cluster/{rule}.{wildcards}.err"
},
}
Snakefile:
rule all:
'a_out.txt', 'b_out.txt'
rule a:
input:
'a.txt'
output:
'a_out.txt'
shell:
'touch {output}'
rule b:
input:
'b.txt'
output:
'b_out.txt'
shell:
'touch {output}'
Команда на выполнение:
snakemake --cluster-config cluster.json
--cluster "bsub -M {cluster.memory} -R {cluster.resources} -o logs.txt"
-j 50
Я понимаю, что можно определить требования к ресурсам для конкретных правил в конфигурационном файле кластера, но я бы предпочел определять их непосредственно в Snakefile, если это возможно.
Или, если есть лучший способ реализовать это, пожалуйста, дайте мне знать.