Змейка, проблема с "лямбда-символами, попытками, потоками"

Я использовал 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 аргумента с ключевыми словами.

Другие вопросы по тегам