Змейка, проблема с "лямбда-символами, попытками, потоками"
Я использовал snakemake для реализации нового инструмента в конвейере, и у меня были некоторые проблемы с этими строками:
resources:
# Samtools sort requires by default 768M per threads
# Here, be set the maximum amount of memory are 1.5Go per threads
mem_mb = (
lambda wildcards, attempt, threads: min(
attempt * 250 + threads * 768,
1536 * threads)
)
ошибка:
TypeError: <lambda>() missing 1 required positional argument: 'threads'
Wildcards:
sample=test_GATK
genome=fakefile
Чтобы сделать эти строки, я использовал документацию на этой странице: документация snakemake
Чтобы исправить эту проблему, я использую этот код вместо:
resources:
# Samtools sort requires by default 768M per threads
# Here, be set the maximum amount of memory are 1.5Go per threads
mem_mb = (
lambda wildcards, attempt: min(
attempt * 250 + config["threads"] * 768,
1536 * config["threads"])
)
Я не знаю, почему предыдущий не работает, вы можете помочь мне разобраться?
Спасибо за помощь:)
1 ответ
Мое чтение документов состоит в том, что для вызова требуется 4 параметра, а вы поставляете 3 не по порядку.
Может сделать лямбду с 4 аргами? Если это не файл инициализации, я бы также сказал - создайте функцию вместо лямбды, и тогда могут подойти 3 аргумента с ключевыми словами.